diff options
author | Internet Software Consortium, Inc <@isc.org> | 2014-02-11 09:01:28 -0700 |
---|---|---|
committer | Internet Software Consortium, Inc <@isc.org> | 2014-02-11 09:01:28 -0700 |
commit | 8b0dafdc16eff31ee5f4acc8544b45b2ae287a7d (patch) | |
tree | 1802897ca34cc0d67741aed71af55cf5ef36b145 | |
parent | 8af21b710f34092dcd08abdc13e7971553b616d2 (diff) | |
download | bind9-8b0dafdc16eff31ee5f4acc8544b45b2ae287a7d.tar.gz |
9.9.5rc2
39 files changed, 1292 insertions, 882 deletions
@@ -1,3 +1,45 @@ + --- 9.9.5rc2 released --- + +3710. [bug] Address double dns_zone_detach when switching to + using automatic empty zones from regular zones. + [RT #35177] + +3709. [port] Use built-in versions of strptime() and timegm() + on all platforms to avoid portability issues. + [RT #35183] + +3708. [bug] Address a portentry locking issue in dispatch.c. + [RT #35128] + +3707. [bug] irs_resconf_load now returns ISC_R_FILENOTFOUND + on a missing resolv.conf file and initializes the + structure as if it had been configured with: + + nameserver ::1 + nameserver 127.0.0.1 + + Note: Callers will need to be updated to treat + ISC_R_FILENOTFOUND as a qualified success or else + they will leak memory. The following code fragment + will work with both old and new versions without + changing the behaviour of the existing code. + + resconf = NULL; + result = irs_resconf_load(mctx, "/etc/resolv.conf", + &resconf); + if (result != ISC_SUCCESS) { + if (resconf != NULL) + irs_resconf_destroy(&resconf); + .... + } + + [RT #35194] + +3706. [contrib] queryperf: Fixed a possible integer overflow when + printing results. [RT #35182] + +3704. [protocol] Accept integer timestamps in RRSIG records. [RT #35185] + --- 9.9.5rc1 released --- 3701. [func] named-checkconf can now obscure shared secrets @@ -28,7 +70,8 @@ 3693. [security] memcpy was incorrectly called with overlapping ranges resulting in malformed names being generated on some platforms. This could cause INSIST failures - when serving NSEC3 signed zones. [RT #35120] + when serving NSEC3 signed zones (CVE-2014-0591). + [RT #35120] 3692. [bug] Two calls to dns_db_getoriginnode were fatal if there was no data at the node. [RT #35080] @@ -128,8 +171,10 @@ 3657. [port] Some readline clones don't accept NULL pointers when calling add_history. [RT #34842] -3656. [bug] Treat an all zero netmask as invalid when generating - the localnets acl. [RT #34687] +3656. [security] Treat an all zero netmask as invalid when generating + the localnets acl. (The prior behavior could + allow unexpected matches when using some versions + of Winsock: CVE-2013-6320.) [RT #34687] 3655. [cleanup] Simplify TCP message processing when requesting a zone transfer. [RT #34825] @@ -53,8 +53,9 @@ BIND 9 BIND 9.9.5 - BIND 9.9.5 is a maintenance release, and includes the following - functional enhancements: + BIND 9.9.5 is a maintenance release, and patches the security + flaws described in CVE-2013-6320 and CVE-2014-0591. It also + includes the following functional enhancements: - "named" now preserves the capitalization of names when responding to queries. @@ -63,10 +64,10 @@ BIND 9.9.5 - When re-signing a zone, the new "dnssec-signzone -Q" option drops signatures from keys that are still published but are no longer active. - - "named-checkconf -px" will print the contents of configuration - files with the shared secrets obscured, making it easier to - share configuration (e.g. when submitting a bug report) - without revealing private information. + - "named-checkconf -px" will print the contents of configuration + files with the shared secrets obscured, making it easier to + share configuration (e.g. when submitting a bug report) + without revealing private information. BIND 9.9.4 diff --git a/bin/named/server.c b/bin/named/server.c index 057dac1b..77a4e440 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -1324,26 +1324,22 @@ on_disable_list(const cfg_obj_t *disablelist, dns_name_t *zonename) { return (ISC_FALSE); } -static void -check_dbtype(dns_zone_t **zonep, unsigned int dbtypec, const char **dbargv, +static isc_result_t +check_dbtype(dns_zone_t *zone, unsigned int dbtypec, const char **dbargv, isc_mem_t *mctx) { char **argv = NULL; unsigned int i; - isc_result_t result; + isc_result_t result = ISC_R_SUCCESS; - result = dns_zone_getdbtype(*zonep, &argv, mctx); - if (result != ISC_R_SUCCESS) { - dns_zone_detach(zonep); - return; - } + CHECK(dns_zone_getdbtype(zone, &argv, mctx)); /* * Check that all the arguments match. */ for (i = 0; i < dbtypec; i++) if (argv[i] == NULL || strcmp(argv[i], dbargv[i]) != 0) { - dns_zone_detach(zonep); + CHECK(ISC_R_FAILURE); break; } @@ -1351,8 +1347,11 @@ check_dbtype(dns_zone_t **zonep, unsigned int dbtypec, const char **dbargv, * Check that there are not extra arguments. */ if (i == dbtypec && argv[i] != NULL) - dns_zone_detach(zonep); + result = ISC_R_FAILURE; + + cleanup: isc_mem_free(mctx, argv); + return (result); } static isc_result_t @@ -1964,12 +1963,21 @@ create_empty_zone(dns_zone_t *zone, dns_name_t *name, dns_view_t *view, * Is the existing zone the ok to use? */ if (zone != NULL) { - if (db != NULL) - check_dbtype(&zone, rbt_dbtypec, rbt_dbtype, - view->mctx); - else - check_dbtype(&zone, empty_dbtypec, empty_dbtype, - view->mctx); + unsigned int typec; + const char **dbargv; + + if (db != NULL) { + typec = rbt_dbtypec; + dbargv = rbt_dbtype; + } else { + typec = empty_dbtypec; + dbargv = empty_dbtype; + } + + result = check_dbtype(zone, typec, dbargv, view->mctx); + if (result != ISC_R_SUCCESS) + zone = NULL; + if (zone != NULL && dns_zone_gettype(zone) != dns_zone_master) zone = NULL; if (zone != NULL && dns_zone_getfile(zone) != NULL) diff --git a/bin/nsupdate/Makefile.in b/bin/nsupdate/Makefile.in index 09e6c140..fbfac3fb 100644 --- a/bin/nsupdate/Makefile.in +++ b/bin/nsupdate/Makefile.in @@ -25,8 +25,10 @@ top_srcdir = @top_srcdir@ READLINE_LIB = @READLINE_LIB@ +DST_GSSAPI_INC = @DST_GSSAPI_INC@ + CINCLUDES = ${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \ - ${ISC_INCLUDES} ${ISCCFG_INCLUDES} @DST_GSSAPI_INC@ + ${ISC_INCLUDES} ${ISCCFG_INCLUDES} ${DST_GSSAPI_INC} CDEFINES = @USE_GSSAPI@ CWARNINGS = diff --git a/bin/tests/system/conf.sh.in b/bin/tests/system/conf.sh.in index 26a79716..cec9b950 100644 --- a/bin/tests/system/conf.sh.in +++ b/bin/tests/system/conf.sh.in @@ -61,6 +61,7 @@ SAMPLE=$TOP/lib/export/samples/sample SUBDIRS="acl additional allow_query addzone autosign builtin cacheclean case checkconf @CHECKDS@ checknames checkzone @COVERAGE@ database dlv dlvauto dlz dlzexternal dname dns64 dnssec ecdsa + emptyzones formerr forward glue gost ixfr inline limits logfileconfig lwresd masterfile masterformat metadata notify nsupdate pending pkcs11 redirect resolver rndc rpz rrl rrsetorder rsabigexponent diff --git a/bin/tests/system/emptyzones/clean.sh b/bin/tests/system/emptyzones/clean.sh new file mode 100644 index 00000000..66b3a17f --- /dev/null +++ b/bin/tests/system/emptyzones/clean.sh @@ -0,0 +1 @@ +rm -f ns1/named.conf diff --git a/bin/tests/system/emptyzones/ns1/empty.db b/bin/tests/system/emptyzones/ns1/empty.db new file mode 100644 index 00000000..d807099a --- /dev/null +++ b/bin/tests/system/emptyzones/ns1/empty.db @@ -0,0 +1,16 @@ +; Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +@ 0 SOA . . 0 0 0 0 0 +@ 0 NS . diff --git a/bin/tests/system/emptyzones/ns1/named1.conf b/bin/tests/system/emptyzones/ns1/named1.conf new file mode 100644 index 00000000..565ec294 --- /dev/null +++ b/bin/tests/system/emptyzones/ns1/named1.conf @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2004, 2007, 2009, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2000, 2001 Internet Software Consortium. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named.conf,v 1.15 2009/05/29 23:47:49 tbox Exp $ */ + +key rndc_key { + algorithm hmac-sha256; + secret "1234abcd8765"; +}; + +controls { + inet 10.53.0.1 port 9953 allow { any; } keys { rndc_key; }; +}; + +options { + query-source address 10.53.0.1; + notify-source 10.53.0.1; + transfer-source 10.53.0.1; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.1; }; + listen-on-v6 { none; }; + recursion yes; + acache-enable yes; + deny-answer-addresses { 192.0.2.0/24; 2001:db8:beef::/48; } + except-from { "example.org"; }; + deny-answer-aliases { "example.org"; } + except-from { "goodcname.example.net"; + "gooddname.example.net"; }; + allow-query {!10.53.0.8; any; }; +}; + +zone "." { + type hint; + file "root.hint"; +}; + +include "rfc1918.zones"; diff --git a/bin/tests/system/emptyzones/ns1/named2.conf b/bin/tests/system/emptyzones/ns1/named2.conf new file mode 100644 index 00000000..fbc5becd --- /dev/null +++ b/bin/tests/system/emptyzones/ns1/named2.conf @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2004, 2007, 2009, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2000, 2001 Internet Software Consortium. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named.conf,v 1.15 2009/05/29 23:47:49 tbox Exp $ */ + +key rndc_key { + algorithm hmac-sha256; + secret "1234abcd8765"; +}; + +controls { + inet 10.53.0.1 port 9953 allow { any; } keys { rndc_key; }; +}; + +options { + query-source address 10.53.0.1; + notify-source 10.53.0.1; + transfer-source 10.53.0.1; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.1; }; + listen-on-v6 { none; }; + recursion yes; + acache-enable yes; + deny-answer-addresses { 192.0.2.0/24; 2001:db8:beef::/48; } + except-from { "example.org"; }; + deny-answer-aliases { "example.org"; } + except-from { "goodcname.example.net"; + "gooddname.example.net"; }; + allow-query {!10.53.0.8; any; }; +}; + +zone "." { + type hint; + file "root.hint"; +}; diff --git a/bin/tests/system/emptyzones/ns1/rfc1918.zones b/bin/tests/system/emptyzones/ns1/rfc1918.zones new file mode 100644 index 00000000..e2f4ac4c --- /dev/null +++ b/bin/tests/system/emptyzones/ns1/rfc1918.zones @@ -0,0 +1,19 @@ +zone "10.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "16.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "17.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "18.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "19.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "20.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "21.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "22.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "23.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "24.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "25.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "26.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "27.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "28.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "29.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "30.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "31.172.IN-ADDR.ARPA" { type master; file "empty.db"; }; +zone "168.192.IN-ADDR.ARPA" { type master; file "empty.db"; }; + diff --git a/bin/tests/system/emptyzones/ns1/root.hint b/bin/tests/system/emptyzones/ns1/root.hint new file mode 100644 index 00000000..2fd180e3 --- /dev/null +++ b/bin/tests/system/emptyzones/ns1/root.hint @@ -0,0 +1,20 @@ +; Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC") +; Copyright (C) 2000, 2001 Internet Software Consortium. +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: root.hint,v 1.7 2007/06/19 23:47:05 tbox Exp $ + +$TTL 999999 +. IN NS a.root-servers.nil. +a.root-servers.nil. IN A 10.53.0.2 diff --git a/bin/tests/system/emptyzones/setup.sh b/bin/tests/system/emptyzones/setup.sh new file mode 100644 index 00000000..1faa70e3 --- /dev/null +++ b/bin/tests/system/emptyzones/setup.sh @@ -0,0 +1 @@ +cp -f ns1/named1.conf ns1/named.conf diff --git a/bin/tests/system/emptyzones/tests.sh b/bin/tests/system/emptyzones/tests.sh new file mode 100644 index 00000000..755d89d5 --- /dev/null +++ b/bin/tests/system/emptyzones/tests.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# +# Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +SYSTEMTESTTOP=.. +. $SYSTEMTESTTOP/conf.sh + +status=0 +n=0 + +n=`expr $n + 1` +echo "I:check that switching to automatic empty zones works ($n)" +ret=0 +$RNDC -c ../common/rndc.conf -s 10.53.0.1 -p 9953 reload > /dev/null || ret=1 +sleep 5 +cp ns1/named2.conf ns1/named.conf +$RNDC -c ../common/rndc.conf -s 10.53.0.1 -p 9953 reload > /dev/null || ret=1 +sleep 5 +$DIG +vc version.bind txt ch @10.53.0.1 -p 5300 > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +exit $status diff --git a/bin/tests/system/xfer/prereq.sh b/bin/tests/system/xfer/prereq.sh index c8a1f808..4949de9e 100644 --- a/bin/tests/system/xfer/prereq.sh +++ b/bin/tests/system/xfer/prereq.sh @@ -14,11 +14,17 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: prereq.sh,v 1.2 2011/03/12 23:47:42 tbox Exp $ +# $Id$ if $PERL -e 'use Net::DNS;' 2>/dev/null then - : + if $PERL -e 'use Net::DNS; die if $Net::DNS::VERSION == 0.73;' 2>/dev/null + then + : + else + echo "I:Net::DNS version 0.73 has a bug that causes this test to fail: please update." >&2 + exit 1 + fi else echo "I:This test requires the Net::DNS library." >&2 exit 1 diff --git a/contrib/queryperf/queryperf.c b/contrib/queryperf/queryperf.c index 6b153271..0738cc29 100644 --- a/contrib/queryperf/queryperf.c +++ b/contrib/queryperf/queryperf.c @@ -2170,12 +2170,21 @@ main(int argc, char **argv) { printf("[Status] Processing input data\n"); while ((sending = keep_sending(&got_eof)) == TRUE || - queries_outstanding() > 0) { - print_interval_statistics(); + queries_outstanding() > 0) + { + if (num_queries_sent_interval > 0){ + /* + * After statistics are printed, send_query() + * needs to be called at least once so that + * time_of_first_query_interval is reset + */ + print_interval_statistics(); + } adjust_rate = FALSE; while ((sending = keep_sending(&got_eof)) == TRUE && - queries_outstanding() < max_queries_outstanding) { + queries_outstanding() < max_queries_outstanding) + { int len = next_input_line(input_line, input_length); if (len == 0) { got_eof = TRUE; diff --git a/doc/arm/Bv9ARM.pdf b/doc/arm/Bv9ARM.pdf index e8b38986..ef343561 100644 --- a/doc/arm/Bv9ARM.pdf +++ b/doc/arm/Bv9ARM.pdf @@ -13634,7 +13634,7 @@ endobj stream xte\6 tݡ000 R"t ȋ>??w^Z75 rprtP(W琅CfL9g0] -{fXE +{fXE 0a֏Oo?x= a.Ab9Y
/z{x*2#Dj,8Ey;on
Aߋ(X>.3vmsW`gϨ" rn蚗ߡRw9_ҹ_8=e4%v>oFk(?`Lٽ`4&9[~;26cL|r)Sjl( b7Vh9,IRe߷R%=
t(%LǏ)>1٥^2O %>pjÕr{2w<g-j!3cakI,A$LƋJnUmމD3 @@ -13657,7 +13657,7 @@ $OŀD t=bw6"µ?JOP2RoQo+1)wdIZV͝(e "[vQFs(F$'qL /!
Hvk։hȉ؉o?a:qcg!_Q~W1aUGmYmn%Rr90q5/E(ړ,W$Lx|奕wZ|V,Od yG
3l4\T2ZAg.7#PveŦQLO\ ĵJ(3].*,M>Bx(S|Duޡ{:ґ2G9C{ɕ<|?K@F),w? ah%ٱo^{6@-%~jwXjz1i%u3^g`d+K[De]Y?>Hj,kѸh8v_
[J֮9m=?\k>ଇ*ѳ,Y
<uZ/ZV$S#mNO5M@r0H7&7[AOƧ5pE6~d^.xT1$74jG1po3QZ:N,0Zg)QX""0BvFA)Y9(YÖS|qbN.LX_¿%%|D>W7}C#ZR$`bGοa9gS%\/hC|?sg)m}vk.b&O +uqf`a,I㯽/ݛ'P6ߢH?ٹ9mHr7:pMRY# 'WKC|-mW躖nᲶ03=j-,nebi;Hl<)L.Yڷ)wL=(L|)='-@<Nr6Eʃ3dk%(kD~(_y;fO{&*yү9ۏBTd>.<SX3p7~"럽l˴DQf -*s"}Y
;҉{Y]pݯXo} +*s"}Y
;҉{Y]pݯXo} endobj 2131 0 obj << /Type /Font @@ -13666,14 +13666,14 @@ endobj /FirstChar 67 /LastChar 85 /Widths 2825 0 R -/BaseFont /BILQGW+URWPalladioL-Bold-Slant_167 +/BaseFont /ZKJAMS+URWPalladioL-Bold-Slant_167 /FontDescriptor 2129 0 R >> endobj 2129 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 -/FontName /BILQGW+URWPalladioL-Bold-Slant_167 +/FontName /ZKJAMS+URWPalladioL-Bold-Slant_167 /ItalicAngle -9 /StemV 123 /XHeight 471 @@ -13697,7 +13697,7 @@ xVuTVA!nn.If(N)n$FJ ![:%$.|g}u;kͬ yaha
pJH @B0Y$DB@ CXnxX9rYzD"0̓;!o(ׁZi@! u
%5Hf@ 0dw9q -rt%n-~tݐiH+ ɪ!+NWnmn<VnJܠH(BB<rYB@PM2gWon(/ W#՝SΎ^´D@m +rt%n-~tݐiH+ ɪ!+NWnmn<VnJܠH(BB<rYB@PM2gWon(/ W#՝SΎ^´D@m {!O`zn%l"5\\:߿(Rf~QU;(z5|̶Aܞˣg}O4N}-lZU/{LeP[wm_i=;>WSVz|Rg_"*ʔyzUJW8bL.ٔOuJߪݎ;Bbubï<_^˿`iKyyc@'\;$Q;S-s/,
9D#,9ƦKvS꿻%-]3ݓ][ClL5ؽr3ܰDSj)W8*ܟ螓3@'}~+ϝ6\p<zu>AbPبLbZa3YEV= {^2<}5aq_5>$C}XjiG/d-!j;6#܊.Oc$zI(/Wj"K{LHhԻ:iFRF<g]39}F8|0 bayKܣ%tTca֍F˨?B: 3ZPƊ}
fφTUJj:ϋN)/ E^g^/k&67%"-ήQ͓Ƒr'# HvoVy糳j՟,_h^p/#ӄH焻[ʻB8Ҭ%P #&}7uo(u95?c8,:f.41h3):;c,Y:N5uQEr!&.Y;$`yme~b@{3* @@ -13715,7 +13715,7 @@ d :w B\h~8$7!g;ɥ\cf>}7Zس֖^-U&( ӻIFSOV_hn- X{$@rlZɞˊ1o(mI]_-'zTn76Gت&IĆ7ԉf<B&מ)c+?(_0NZ/_c24ˢ'{.dz̓K{u`:s<'0 HMqLRnC@xs̈W6>u3;)EO4,Źk&l#ٶ hiF] x'fb\{?=3XTW*\Eex@Dz:!XKG>c{BC0Uռݕ5xfUNhZ$8훎Б;߾2~%~Q*|6ο.H&l][%κƬ!rOx!.BzuW,r9TCH֑_e:5r3.4vW][)݈HS+fS4Hzy*/%͠8m'7\K)8@b\ʂ[g5֡'̥g<8Tq_U=#f*6*\oi`lj[W*2(tp{6]}>{?'C5zE&v
dYcL8uGݚtVe&KჃoS*.m8WQ3Dj OpHYf>_Ƥ|E=PzXD%+C1_=AY:&Aa;U*XJ=1<,|#
O'CM]fS4AMjҷkxG,92¬
߸gp0o9)M&ChVF=VvŞTv(ʴ7jz䭠6]EڟeIGOI&+Z Sl -`cGLs:Jθ OX9B,\p'W'yendstream +`cGLs:Jθ OX9B,\p'Wyendstream endobj 2117 0 obj << /Type /Font @@ -13724,14 +13724,14 @@ endobj /FirstChar 66 /LastChar 78 /Widths 2826 0 R -/BaseFont /DTDQDT+URWPalladioL-BoldItal +/BaseFont /FLXFFM+URWPalladioL-BoldItal /FontDescriptor 2115 0 R >> endobj 2115 0 obj << /Ascent 728 /CapHeight 669 /Descent -256 -/FontName /DTDQDT+URWPalladioL-BoldItal +/FontName /FLXFFM+URWPalladioL-BoldItal /ItalicAngle -9.9 /StemV 114 /XHeight 469 @@ -13747,20 +13747,14 @@ endobj /Length1 771 /Length2 1151 /Length3 532 -/Length 1711 +/Length 1712 /Filter /FlateDecode >> stream -xRiTS2j=,y50
$1ܒK/7AāJ,bKFQQ**u@%Vp""<YjUzJz9;4Ca`%&GR
3MqXN $'`!^ LVy| -
bzIU#>IR95d
\
d =jnFXgx&1)6JaMjJ6m*3HQcJ&"!U+)5
&֪kSN%/ jL%`H18)!ZMUÀYd|#"BJ:aoJKN%#JDa=sIpDL6C4U`.q\CDF< -: --(15>Aoc%Bz -:XA1>[>{j[m-=cs[O}}>N"~u1r̡t$+SOrL2^GrlpbKmilk^lIo|;lW#E3kox8/mcgK}T~z8wL1sͥ:2Snݲ7 -RFstrٟ[& g/]aVcZåH -rKCc$QV:)j}CjpC[|PhiX[-7KIuɎO?{@m}vr=>#{0M-N.![eh eL -b]n̥kVKuiwXg%~8P狭37=/5r+dj^<g( T;ztUgsx㋎ 44rkQi;#g{bs..E]we{ڽijkis4<T}"jNYzOi/="#W083m(Zggr|瓘5ٻ6>xts)BA5]ii-!Z;GqsG{x~D0AGoWKZ3j-먌f<&hPK΅X.S=̮&'%ݰ-zy4g]uˍX=V%DeK%˭fܞ9tj(b'2"~rN6HQOWH =)Yz]@ǖe┡i<|$Zձh{
gs@}v$ܢ0*~L>dŬMw<]ĥ:qNMU%FEasrJZcӏ.e*;/Ȍ>b%*H+
y{;AKǜ1>N{WH/wnuk -wK:'PeU]%OǩˈN.wZR 1<i][ 5}MN|QY@#k?QFD{9|_,|fֽ}MJ
p켸5jkw_XbXÛg$+PA5n7' -('0O*ʌendstream +xRiTS2j=,y5H b,0 1ܒK/7AāJ,bKFQQ**u@%Vp""<`,R*N`]]?_oslG!
C `LafSh`V( X8X2y˄<>T#$kL HJ:JrL DZ-X;q#
`<@ +gBkL`\8sϵ23y.ef']a~K]-wEU=OZEZ5uk\R:EԆ=Ic/i.1I=^T6ǧE{LW?x*5_%Da=+Le5@zۍ#yZ{1yh/6b/U<bi?7QדtFqRMך FrQL?hG|N^2לrፏ-8&9oHKa9dW,\xM÷9KB,ƚ)Ǫë錏=ؕe}"jN]ZO[i/<" +#W$13-(Lh=/>UW2wm|S}j[FCƶ8+zكzO4SkgtYdkcliPSƍ
\ +R&{Y-2oOQKSizy83н⤏jBKOiL=}qS|ӁaPu#w::LI0:d4vs*33(sL
l7m\E98#1yvfR?AMkG
jJz츘~W{mlT`mi!ХAPg}(m0^SJܼrHV[|vAMVQwlђtyңJx\X!waY{z>dd3ӾeEҡ-i5ƪݲ. u:vYxW[Q1ūKݾ6&rBLCWe@f,quOKk 37WTy}&ZiOh:Zo'2:_(q+~T=/nNȚ=$VtX7<Ɉ8WIcE*- LS(یendstream endobj 1459 0 obj << /Type /Font @@ -13769,14 +13763,14 @@ endobj /FirstChar 60 /LastChar 62 /Widths 2828 0 R -/BaseFont /EBCJZJ+CMMI10 +/BaseFont /FFXBTY+CMMI10 /FontDescriptor 1457 0 R >> endobj 1457 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 -/FontName /EBCJZJ+CMMI10 +/FontName /FFXBTY+CMMI10 /ItalicAngle -14.04 /StemV 72 /XHeight 431 @@ -13796,15 +13790,24 @@ endobj /Length1 1199 /Length2 2269 /Length3 544 -/Length 3058 +/Length 3057 /Filter /FlateDecode >> stream -xWi<k2e$rYFn*:a;1XQlei,9"TD)EFEh,ѩSo>χ羯uP@Ўah,L
D6=7u -(WWW7_ښ aLL=}SC -lB0?aA4RdCY@LcPQ"ݰ,IAT"F$8Iڴ7~o+Hg=fpUt1`|Haьin#ȼoJ,Et36jIdIATWȳk߭AMVjG$!)~prUIˋ!m3م7.xW,Nܗ/bZ[}E^IմI]5JbԿT0TBY8+1j=nY/Dvk#g_'yR,,}Qf晦Ŏ}!@M|X-ؕ2o3l`'>JBXejA]wf:g9y~˺OzwZ1#|ч =``S掘AjR_ZD{'q}TQڍ#GwM˷,"5:郮ML~}o3bWkf&[oT:@HĔ˝*xkgŞwn뢎nQX~w$7?яN#-PЙ)MOy3 :KgjbW<H~gDAskJ,lކ/-Z>E_}a7uU
v7%L,Q'FΟD}(5m,У1YqPvc9N~_5.֙G~!Z]e(9IG+Wm3]HMab -ƾ豜5}yjq9ޣwx1>&gaui;4گ1*Ƅ[#]D|C#»*ܶ&KeBKPBh^{Sf Ih{s>W1F-}Ǵcm%q{<?%Σ+`eeHPAe禩DP
ˁ;Ap{+K8Y7/JАMyrD2_ߞc(2+dNUmfŽ<1 O'>nh<!f0&iᲛ,.- .Y%O*uX\oҀ}uk\rr(aNtʵ.`=3VX,+6e:uK]Zl3}q^C1a1+U"ãT:"Z-ZP%'2-iGBɮ~Sw[N, -y|Fx>#;VmHq^!o˄]ʱj2MMŢk5ʅׇU3z?Yf(alr/~@endstream +xWi<k2e$rYF3v*:a4v*c1foV6ɒc/BeK("ҢT,YSN^o}}__ã$i>@#QF=%i{4d-O @WRr.h + '_6`g +U3F$< FQH G0 b +LhVVoOgQ 9F^(]4Ax_s~aŦR*& +5l_]oo_of424Zߌ%$b),.7t&eC!_0'_ +2С|@4HQ<ð +דbID :a!CMKͤC4^ns^ӁPƐm:Ylqz\Җ)!ȍ" 6IRovmބAKe{cv|]a\"],fǫA0iJ^qS6hG#Nw8oUv{տ]laί Ϊv/7j{Mkٷ|X[{_z%WDsٯJƻ,Wh+*+j-yNU RYJV~V1@
|TZ&i۞dil\8u^쇜<X|nUGZ"KeqeJ
3&ݶmVP +pJxs9C"ٿxAu:8A<lEAuz%gOĚ !؛,;"vI29E^;^) +6W26ubt>|tqdKW1_;fϵhEz<XiWb}1Cp}Ђ#n'nBr;>ut5Rsi/sR1f~RXJ`lurw}q +
4sA3NkhM?!݁zbUtqLL]jܹ/^E|SΧa{1;E +M>p#S7 |1#CMA;}Wb^:oBoٸT$p@__1+C'ۉ0{qB"ߟ^i"H&8lQ +VAnwKJ-=iVŵecM !|z/R/d|*jvZZWub?v)(fvs*f5/A;(ѯbty|Al"jy9XI8MUn|Ӓ1^DtPSaITAgNqKRv's驢G4Sڡ%_HBVc_y|6Nؗi2R1{:QoN{sCML$82;xw +RɿO˳hngeiSσk
ZO;᧽'y\qUFdUvf)*u%~c +b4rMMhҙ:$N|gdjE|х*]N*B72&L)Y& GEܞI3.s:U~F\TzyI_(ߖٳ8ή y7؛aʧwI 3X endobj 1448 0 obj << /Type /Font @@ -13813,14 +13816,14 @@ endobj /FirstChar 97 /LastChar 110 /Widths 2829 0 R -/BaseFont /QYCQQR+NimbusSanL-ReguItal +/BaseFont /JQQLHD+NimbusSanL-ReguItal /FontDescriptor 1446 0 R >> endobj 1446 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /QYCQQR+NimbusSanL-ReguItal +/FontName /JQQLHD+NimbusSanL-ReguItal /ItalicAngle -12 /StemV 88 /XHeight 523 @@ -13836,53 +13839,58 @@ endobj /Length1 1624 /Length2 11252 /Length3 532 -/Length 12119 +/Length 12120 /Filter /FlateDecode >> stream -xxeP& ڸ;[p485 Npwwww AϜ{n_SUYYȔTDLl@`3+@Q,$jkmhdmx>!QQ9[8hL - fk`afЪh100K -ț@!o׆ -_ -0"(B\h?4{%tV -/k`T\@]QZ~wmWroSU -\UVn]_"ԔcpuXm.VQe'x_)sq(<jp0ꡰ~
w^u2dF!R}vE$V/sD֍EM̩}9YBb]^C"mǐ
P{XP1egBpDj]y&W>**gLV醤oӟz 4Lm`o.W9|ʍv. Լ~kLMWrki~KKwϟ}^沗Bԫ<_g-w CRkTu)unG%E=")%K_&%*9, ֶvkE8ha4-㊚*F+̈I\˘ess!2c7a"!Ѕtgc|LD\YXswexSb+:3iCIA(Om9_- 㮰sɻxJ9$cQRak5rk(qO^X# -%oR*یةTZ"r~FO,B=+hӔ2$JEɘz<X?wn@2,g7wN3mäSyNK>G -D<.2)=Z%W\tõ߮ -y+8pf$J ?&NT%<
0&u [?Jܮ' -BD?7O4CEsqa
yٵ+S&3Dl:snwOYe/RB#cјc\ .MJ)6 -_G4 _N9@4@d^qŁ*ʍ(_-ǥʃbĻ@e 6]a{#e%p}M'Q]ց @YlY ՆvBF^+1m$"0?L
+I)ղs} - -peIj8YnUΨk=<rc:3~e|@{ %k,ٗbmI
H -bXܮ[krYګA(ړ4U>,3M|x
T7tu`71'31}A/+]%]w>Dg9ͧxF3<!F\: {,m2y,gɉmURONvyCѥG+`vV)4s#1 r/INho!u~ 17k95 Sái֞W<!Iq)|͇|+B)[8YѴVoװ n²p%oXŕUrʪFF,
+xMy
<$rʨ\ zC+ǻpcc46OsWYdTl;e'd8WY34W/MУXCݜ1GlXo`+"YX{08r6-M"(`:A -g(zZM>$甃*/_ks>sr.$r~@4rtÑfbNzEl7) Nl:Kbɋī_A%3*ȇH0oO혙}Nv;367#BŮh H)@rsz]$Wy{?KSb+R$\eWgo)ړY㚴7q#IU:'.r@
hGRWy@2AT -Ψ+b7k8B4E7$Ji *AQ@kRQ=D=who7U{>e'o߹,tկr!Ǘ҇ޝ4C~H}NY?H$_!YzVJDlnˋ1P~ƞ|);Rg1FS8;Yܾdp پ<r,2xBؤ z;k~>]"Ņj=p- -9݈[lgas6w
ظYAbܴڇF,ǧfvXԂIXc?Aeɗ -ƛ#M r|gZ}u(ASJ؇1NRM9VyL×]O5@vx|gt
^މA6(T#EqITŢ2{H* -hH) # -۬xw-g\<%~`/\?b+xJ2NLSsc>nmT2?d]>t;!J~)|hWΖISt:5Nom9lo|:oJhY=#.O(*/dĒci
ͷlM[C_0T=ϼP/O+b-bCFgS7ru]~Lj:ĔII{B(E&Td@X#qK|-[n_0MH`ӆZ.J܅[ǧBsB>w=$*kƸ+mIprY;5t>5:OjQ
{ -?v;~Jr^"}0HZ2=&seD|qxL\XWL'[x!? -Hؙ|,zlVz7dx7Cvߠ1YniI y%"=bԜ">'=yeUDIZ\pcLicL -lʩ4@TavX-ctDS414:6_!ì.ս"}n0feTe"|:?wV>c¬^ۭPDsSda"VIyl-иȱ:s0ʝu\M%$Xi!?S=LIHԎ.2;]U P_a.ʅdp7 -k-.9L&G6?^SMbc7 % -+=>sΡԋBgW~{井TgKWs]gƦ;&Ys\~ڎ&yDoC˒,JKAŵrQF4t5aFD5^}Te!MەK}֤_P{~197"^.dlMqzs\%}jv,Db");cgj=pK0˯3
}4&bNfjQMs!;WwԄFAfnjX-Ӥk}zgmons_a#}AЖWWWWׂo(u
uK˩KiT28"Ʌ酹nHb#~}M*3з?R0LAuHAe*d\Y~4OL6^"Ξä#Dl6]_7̮D -__O0ePTNT]wX%7-2ݛ|%8P
ߔPL{=;H4O5)
ఔߧQn"Z -&`lWw{oF=C{z'ք+!=Ro֘˛2w>ӱcŪdqLCy
$=B+Z[GkZJ]faOLc?nLږ. -.דJ8*)v9k!^hգcmୁ~(8vf=2c4>huK1,EB|ji-)ħ|1!Ml&ONԧH[:eVTACgɩLynCBKm.=k l@ܥ6I']㭲ӕ' OtBHpn -zĀC|j>*fϟd$
" s T}(Xn~}B-m|b`1XVϞB{
;7\L`o -8jL_y|9gf#ϪO
C+cIBY~,{TN*ewB|m>B,1eQn]毶ƶ- -*<57ޫ_P^wq?ˎa_uwFA*eh}SF -xu4C+ݥ?hz2AzoUx.3O,]*]4OHʢն.ynr%#cumfYM,f6t29ЩTg1Q)Eq*(#Un?OCka\FXޝ -5.]>,-\ybvۮ-.ڌ?2< -)<-ňFV^V%Q+`@=?&ܒ?XT~_EGmx9[PzPdR\Oʁcwh@Ҭ-DkO=p4)OC
XUd-A&ӅݞJ-Ɲ5uv䅋FRIũZ7/k7!Tꃵ=K;]d+gOW;}; -eѦ4kޱHH +fc
<}^iRRz.AeJotW1aψ9K]m(ލ,唘?Qwb.HZ[NN*W+, -fMLh
9lgi>
"G"~D&]4nB ɻs^.t6>MkZzH~w`VU:wG
Dӯ@#{?&zݥ-"kFQv[vYf&v%Gȷ#H~:_$U<d]7hɾ#;E:mv -}zzArq{I*_9nOd|jz--eIm|krjnLRF*8oA%$RC:ߘy~ꅍJ'B#^}W)吼n>ĘjBv91b -K7g"֪0=">*"(
}3jc7{r15YIG`|=Gâj(
e eD5ΧG{lD)5Ue2F>aW!Mdj((ɱ(ԉXcZ̮gAn$Jen^%HXtH-'إMkdrMv^vٻްTŰ@d e{9w24*!aD|5R4a!L>]CG\&V?~U19V?E@·U;'e/r3=&7Z֓:A+sݟ`w"Knl'
ۥV&/:N(wXB6Y{#V;l]\OZ8>@%΅Nj,[2ZJeNn0[7ױWJ -7LHmt.`_Dg3ިܮ,=P:>tsuL*$siyi6#93}3$<>Utf'HF#Kw$bBe([85= -Y9`4k;`ȃ#v5*r>chwNkC3.SÍ|0dAE\H,vYs_>˹fPw&B;lf6{č g\7-ji~>u6r-ihp4u{ˏXnEYl<ޫ`[MMg]_KοywAJT놰ND;fP2
yXm#6j;`V_Ai@g>G͐SK̶U-ReM\)L-I:l^>kg<\F-U:DqEQUBw18ɌyJ ->눎ExW<X1'{#xјtLU3ϴ6wrxwk͔:NOKbFmH\&1n^M<JiC+WD- 'X,rTek)}sKI"羛Ozկ -c|z{نB A?̓9&ޯgQl6t1 [Dٰ|$,㞸. yj;O<<u"V!C7+c̝.HHF'l)IՎ"ۨw͊(ɥKhaP{jQ.OH<쎥>ޤ0m܄uTyí"ƣ]C;kXO5 +xxeP& ڸ;i!Hp. %>su{MMWugg黪"SVc13Iځ!Ll̬| +f/<Mh +eefeeHML5l6f!6qvt|7-xd8gg9*9-R50*n оN=?קҮ;9d*K,PDY']w.*u+7îAjʱwuX.VQU'x_|(\r}p(ѼLjp0ꡰ~
w^u2dF!R}vEq$(DEM̩}9YBbS^Cmǐ4
PgXpȴ1egBpDj]y&w**gLv醤_ӟz 4Lm`o.W|ʍ?Fv. AkLMrWki~KKwϟ_䲗B4^gvĝRkT)uoG%E=")%K_|&%*9 ֶvkGะjc4-㊚E+Έ\Țgss!2c7a"!tgc|LD\&YxK7x +:!vV 㮰s)J9$cSRa~oj.6XGG^3:4^US_D{N 2G-?X9~Cn#RFhx+Vr7.q&cr&zHc=Hm௳\ܕGt|dn
5~a;JbkdUeݙRl1Dn%$c־\[<gCn
݇z]}Xkhh:]+6Y%oRj OzLG?/)+ +]3EtA
^> +x
*%LYI߱wrMk3SW"\ +~܅2&θ.GrjCB+!#ɋcmUtϤ j>_4 ї+k\ +'.}Is]|WO$`]\<55HZ"?-D1gfdp:)#&VqIﵗyna +7[4$U ar&0ɞK쨿5"Kg)gW#A2#~B5D$> +_<Ng/C^57!&/8ksdܻAX)V;ں\ezjF +/
w%$9.LxU%]Uٜhd[탅J築xqם$Y(^!k+e!mۥ"&gb[ k]10tiQ1v:`ňDsnLGKw:Hݹv +R5Fq-#{d8s4ݚ'q?W|ȼ2,t.̐SMaA|
f,,lKTjRNY;Ł:2ǂD^+Asxrle!j1Ѓ*1_tm=}&!ݞJ`J%5όav_?4z =-{:eFV ܨb.˞Xg#Oac[q4R ]wpXOBrzxmW@c\.|߅d[.82\ɟ3ծ^b1U6ҩ\fĨҁyX~ڙxd<\W0 33v.rgF&AuDRTڍ6BtBdg87a7E1ZSn<i.4-J+HR}-Tg{U:q𖢽:I{s$>T\q"Pϋy&x֙-D-('rQnѮ#v#{S]ts"@Ev,
۪*9NMsvsQA\vQVoQBWj+r|})h~LiJ#:g甕EgEnD9~v_+Fm+*#eY|bdI]8ѱ%.;OIF9 +Gb#g"s['NM +Gcs%R\n6+6Ԅ(z16hd#¹O?$l< KݿB1b +x"bא7q1*f<
3$yƠ|X!b^KeJsN^+eaD87^2mNG^V;==?`sѳ;Oy`Zܪ̂cU +-G5b%
7DCe&/FsxT Eb#>㜳{o͚W94dA>>
1ǂLº/Y~Z(K\Ue0q8nJ>諛mEmn"T>q6hrgR~*M ǵ0૦8.gk I
@!}.O&CJVUNE"#FNWHP4DPdf#KTmIG<)Y6C BA/XK tmB|qkJYw!1_VQRҲK +ERy ſKb
=/y8X=&ThlKa"v
E\.4y +r!7rYݐU>ݐ}&d)'ͦQsJtM^ + #S]iq!1Lx0_Kvl,3.NY'uS~Ş)#d^UćEZ$ +o>B",(&/\'!*]4Y +ݜ<?E6soi}TjxfBP"ȩqR\$gPO1/`Ĩ#</
R~Zr0~9ľ%)qp>cPZg,-bdQ0$cӣ_lL_N]2Bރ"T߆ӧq#I 5U5!|Y$ {nBMn9JG<O5 +,8®Z%aK米B6#J#|(wrz\u2bO|2572!&C#Z;x|wzWpwBI +uQ~[LwS, Yj2=O5TVl{ wޤ/;p{A<ꣽm/ۻ*<Y~Ď&nvSz*EJ4lCb ؆+%9>Yɮl71ԏ 2רZ94~sܻ +9)ϣ2M=CX* +;QKԄޣir&$_$!> +X +,wQ*w [֍'4ڔBw,s*b9I[#aJ_7'EjnsRhJJ"{s;5Jr!=R(Hf?-C8y=a8ъ(fQfNt]YUs?zM#]RWm՝6 +}:er""_:kϕNI*iε&Rj{<Oe]Py`o8j$wIHrUE`pg9ys\B~*ow\Rb&vTy' +T$a+O$zpYEiI7V4=ڈ&̉k,eirϚTj/&Z`5*!%
-a]}aAU*kH͎4@TL<}X{gi[gLC_22餟yzhT}=wލ65N0ٸ?'d!a4rmWxHeWՕᵐJ>=#DrRnGHraza.8GH+G_e#bSʭ2"k?Ï7WTFRb(7$2WV!3f$hͦ_x:s4>݆Jٕ\Y)\=,)*ܻːN&[&{zjҟjxU:bo~G5>)= 8vэQTk(,H<Q|^F_2{p⟣Qxbd}%.Φ@Wj*9R8@$,+ +P'LR&Ώ&˟XeNWn6ÖC67@*gGQUT^%1-4.LY"<cЭw8JN R1R7<p%aQ@e},Ο諦<+k@8U(D`ͩ`b$CV!NJ<it]b.{.s@v7pv,xkh +Ye&-D!
,Z}JrqKZj~J-_kzyH v:e-Q8NasYnrPt,PRۿhkbBF=wiŸ!{2w?xl?Ct-z':8Fb.t4_rmN$;[&R̷RwfNjMЌEp'4O<+%C|LB^*1c~k>FEi/Oʠg-Q=xH\Bd$<c +)ۿ߀P[,'j&35֑U^æ~N
WSX9gNWRu +Yui2qR;A9V$ {ձbG5ي~'T*tl&#BS6E/Uhjoli t~J^SVBB +of1%a`$dkSl@h*冷6! bYD8Y*^$pi +;&1-i{'B{̤7Jޟ=^:N|kZ]DH]6L0)?CV%;4_mq*༒>ԮQ72:]dHR>#"݅9Eb{xĪ,JI@\m7(]12f<OXw6o~b]>z`o=vߙAW ,^m1`"&@D 1$XA4u»`D.I*Z/Gd*Cp,Gt(pArgLX +(q~Hѝ}oqYlL+Lp{pRg5nfFa +cחCX~ke\WbLkR ++5!ҵB7h:(s5Ƕ:Dceձ">~$KH16s/1~S>T-JH<@Xi"ha]HȌ-COi=Ebi`U~17,j2(~aJeuS:r)ڶ 4mom6yMoV#VKD-mre׀Ұ>V[M:x,!^5|g.F QVAwn<UBmזH
m&=bDqc#W*{xJۨȕZ K^W>ːNymI`*?~_EGmx9[PzPb\OʁcwhHڬ#D@3p4@C
XUd-AӅ^z-&5Zu䅋Iũ7/kf7T=K_;]*gOW;:ѦkޱHH +fc
>}Yi~)AeJoP1aψ=O]m(ލ,唘?pb)HZ_NI3*W +/, + +[PIb77a^pFzaMpĽ7UN9$o&s +Jr, +a"u"(瘖+Ykl*Ӡfٻn(@K v)lSRiyS]7|O1:wwg̲=;OhZk
Z "/{0Rz7P&5C.#|.s|Gx?*ak"g C@êՇrqVMWR}-I| +gQO;_w7ۆS倅SdBw';,Ias,=PBvH.nPpnI-.Ksy'E5Jx{
R`%^~#7K㭛_+D3VЃObe=.\3KcF|0-WOQNS@ X`X٫(|7}v2q$L?6iA}bKm0/Kfn7( ]e˹:&U9?t>W@ϙzEfny:zV$;gHQYz=U~iR +GQyrshV@s9Hfv<"d<>KYX6j +<1R̭3 [{ 9ȉ^M=lli xKfJ2axrl+A#04$E@FΝ\kwXPlVrěK}<OĠrgd.Z`ɵ{;Hws| ;91QJY4tWtFTzaybf9t2òn} +6NExW<X1'{#xӘvNU҄3ϴ5ytrzwkU;NOKcFmId\M12M<iC+WD- 'X,Tj)rKI"YLzׯ +c|z{نB A?̓9&ޯgQl6r5 [Dٲ|
",㞸. }f7O<<}*V!C
7+c̝.1HHFg/lZ)IN"ۨw͋(ɥKhaP{jQOH<N>0q,߹ګ~lvxao~?&6 #h endobj 1385 0 obj << /Type /Font @@ -13891,14 +13899,14 @@ endobj /FirstChar 35 /LastChar 122 /Widths 2830 0 R -/BaseFont /YIUPMF+NimbusMonL-BoldObli +/BaseFont /SGSPAZ+NimbusMonL-BoldObli /FontDescriptor 1383 0 R >> endobj 1383 0 obj << /Ascent 624 /CapHeight 552 /Descent -126 -/FontName /YIUPMF+NimbusMonL-BoldObli +/FontName /SGSPAZ+NimbusMonL-BoldObli /ItalicAngle -12 /StemV 103 /XHeight 439 @@ -13914,49 +13922,50 @@ endobj /Length1 1608 /Length2 7939 /Length3 532 -/Length 8789 +/Length 8790 /Filter /FlateDecode >> stream -xvgPTݶ-HPPə&ə&K(HQHs 9#$sn}zvծkιsVmVF-]^Yp@4`(]EXYP0pP -G8Cз㍺P( -Bр۬Z -JDۂѿs`n -6BNVz9S,nq2BY_+s`n'.@b%iZwJs{^CHWZv,!ie1O[oFyۢAx@SeMIZ| -J<.%sJ?ANy2}o[+Bz1ហ`tftwώx){qsn!L|ŖjٵXPN:i#V -.&.:%%+rdx ~j}v -E
*\5ʵnݥvհ@<|USCZЁni0q~ -5լg-=`8Z4~iN6@}!k)CO,PE}/:o4QhBlg˔O1
Qϗ=G2$"ĂB5Gmޜ!kʀF9+TdG"6ld&Ze{4BQۣx -,g!Op,镨/+UN\_H;2@rzPƜ5,Ov^=Ўr`ҝdU'/,&z_'z8^!OU:Ve|BVv0+0Ӷ,V J,^S+kNs8 f[wOR.FFMl-?f$i*Zg-@$G3V;eWwk0B9lZ3x?j߷E=_a^u(v --g蟖IkZK -,U@Xr};w`D.3\lbUM̜JWkh jqDKz瑳B|G\Ca+*ʁ~G٧}ΪJ WH>a4 N$YY_W+vqS: 0Za[%s{d?z7~s3M{i17ւ\"Ge3m7 -Kygm/Ś\qbO;z-4'+k=~(6hL<6yj^"xNLݐ%3jz˾e2fĺE>_(uy{!4l"QtIEunGˈ -?ywG$<2tϢ}@yIGbcKꝷH|
xx2_M+=~d/tvLFd*ľb&}/2?"B,|B1楛kf}gIy8.ͲmhF`Nƺʨj=wuu?Tӈ~.%2_()5e-hxlS+\dޢd=bfFO!3"6'jCX]*BwKihn"dg쎓`p'UJfaf[]͏z&$ZifGLzb\d격|X\sɕ+fܟ|>%H`=6"P9#\#3z-R|%$Gc^M]{'_D1*,θGgLMa2B ƻ*+M[Tϕlm2!7VԈn摒pj7>"$X:{^u^9̒DW9%%^,W0߲ݙZ/{>/"Dkm0_>WTxƹ -z-%OL5V,z>&wrY6ǗJwG*A5 -SSi*z~{OrzMl|P"iWO'gbbQb 3.kBdilw_c,
-&tGϾ2(v'. -0t -sobrvE /WRu/wxh<L֑pa
Y -Kqh|>6ʳ(. - aoWkrgֺИw6N
i X~ŴV6>E -^±nl#65%,_O+N%z>W7]fz}A}HS~QrN)sr]Lf -<
A)kvuSGlVs#NuOE?.j?wGݺ23okvS>= z^"8-o*N3Xlek%_> -ݑo~~Hj=߂4fA|N瓞@D2J fv_Q`TU`@Yi"=Mgմ1:Uпfh l`NsklbhL:g6(皊KQ}]j+7,IL$<
y1Ӭ^Ubs=-_"/X)"<Xx*%ŕ,Kߋ?#8,Gi -D44Oh*)ɛ%b~-GsIN9-SqӺD
{ڽS\pzuyjDk!š4yQemXFiomjČ*mÔ8FcךAZ5篫adF~)!F7gjB}X/'"ZtCEq˒R7@.)Ftu%QEpdk#F0AKE*3ƀF0BLq`n%P爉䅟ڝ*XŷjibR"6vTZR̰T3Sv\%IޯZַmpQn?&ŗ#ߟ}^""t{RH:wohFOoCB~ - s!q?OGW̳)HnoFA{Ǒ8jUu;W+A;X;{w}x"
ƚ=×Nnc}&y[~ h©"̋Em`; -Lj - -̠Q=w¾?6~dxW/aۋC\Uf~ -HN2HB8G+zq(6|}h`wXn֭\d0֟9yEQl84Gh(1#Tl8\^/J\H՞r2Σ}RջY|C|i
xCݪZ-0JLD9dkΞu!!}U?9ܫeiҍF̦wNRi~qzeh)M#M.?%a5L]tًCMSꣲl^ځf'7bqG2Kj? v:ۤ~^~}>[6ԑUi!~{?Gywuj>S8CD?{L"X?P̭|/*_6ffw -=R>jv)y[G5)wArqsV -Ц^o{<pp(#% -o.%*4Z&xs=G<ṼǕoR7|lg(l(ّ(8|)w/QLuGϜ~N*{ct(6HB=vi%/>^PŧrȈ=2ldD4kw3\Wd@$B}vmwK&#?e6*I*iQɿAFd@+yjR魬V{)yK*%36qOVz -PdՎKc" ק߸|:
aAff~G+Mk{g1ۻtO)0ʜ<vj5Uq"}h[
^wXcsX YVWZxg/&YԊ6ĈUu&S+0)LI4Rv[_(OJ¼XbHپ[!+љdc
ɊaLb_RnMY6F<x*&?iJ̤ α%+p=02=o !-Nؠ2_ۚ,l|%vWvq$M1]Omge/ݻ1x]'<a'0x{&xw.olA+ο>ڲʐ.Zlvpkg[FMI0깳vhPK x!vyڳe?ufK+>X'[&&Sm"~ʏ\m$G-Jo%dyJ-ۼ`~D]FBAxx`}fZ%r6_f -&2PuI[^|ul0xp(%m/sqo -QfNúCzgg_D6qIF2v֦PgUu䂱~#Uz$ -Hĕv$x-ߙ#{e`hDⰺ^9B0뫽mܢ -+!BPv ?E^$*O*n.w2w5NxN,G#ՀUOr3~\Ł[kҸ!90 -C_{Y["g2e$y;; -_
iv==%!d2KVB' +xvgPTݶ-HPPIhrMirNlZ,Q@ 9G%#A2H9d C{ιUj9s9ZYtyd K"Ѐ[:tj<8pk&`aCBhA>B! +: +u
+ sDnj+mFݺHwI|0^4n߹, +a%21% ]F5 I}GDObhы@ʡg7u;?U87zZlЃ,Z/&G
"\|yIជjK&O
6Vus>jD~er%e>w$J$k|XA\9[GowWg1N:
Wz$>6!kS:~ge.0clKP>1yՒ dSլn9|e>'CfЛqY8$fSRo@*ʹAguG*|eB;}v]6y}sx/GjT$JH
QB~RlE1w.*br|}$nևGs]> ?V1x+w\9eІإv7N/.&)0PkR +^8&sݱ|cկE=.}(pc8hXeMpefI| +8xώo
L +R!1r<;$g2įCǥsϹE#29[eb BÇ;q4y,'X.^m}l3S@+'YW[ZTayR#Wew<!Hݰa2Y'xVc[Ѓ̺P|mL3X|FSp 6!wqi)/)y4^d'+O+WÏ/H8:̨%0nRNSX)ĩwoV"nUu.e5v0=̭еtwtKy /hnfY35|\)b^s$Q<.'D +(^p߬h7~ݢ킅.^,zD3Z|JRA.K&[/02OyCBet:CA2VP'zŌ~,ђAkQ +7=s`[zޕMMEuGh+KI9Z3h#`+]J淚4G5ɦ
/~
2I%R*ȹ壟CS[m&,^l03F!2gȺYz^X@͛#dQ ?'ty,bx_DC}F0j|{\s}8$QinA$o<Re#"UerމK=`GS"Hbʘ#6W?+ -I{QeY:Bb>:_/!@Ȭu3+Lnqq`Um'aeG- +WC +i.h
6'6 +V͊271sz8o+VP^MJe/G> +qE*+nƗ;OeY:*g'\7"klq'9TgeixqVV^nOil&h1n o-R!~x葷yo4{\4Xϴ/坵N%{;4u)!="3М`<x +1#-@<)[ؓ9QuC̨-Fɀ?Y|96jUNnXӰķGk'uFd>0f6-#vl|g՚:qyN3-yŖU${L6Rə?"Z\Q>Ȕ {7l] +mtW?eRXݟ
qNb%2t)( -֧9Aɚ2;Njf:9NʜT)=l'v!V7?њ\k=^-2~Us.o˪aMfs%W2b+ +(̰?6|K86<6zlD)VsFGfZJ
P!Hl<H8eg/D- UYqձ +*p¤Aw'v7V4+jN9dB<oLo#%pnAH41ס
t. Zm0r$XrJJ&
`eM3_}d)(A=_DbN}5,Ӎc9A7!{K*J^~j'%UY{݇]"Lxi2/bUj)4" +?U +䲝5v!.[7$\)%-D9\7FOϞ8if&\
+-6X,DŽk}YA<?qoYLoȯ"Vw$5-M&{Q}2ѻ5xuB;\rhx?^i& CQb\THe%QՏEO}:yJ AH P-[kN/<ͩEzH('8/><NZN,±$\|.ʳ4 +u&IFlPȋ<>O}>ݧgF;YuQT tDfP{sc+J .>xiȦ{3Ś~d@aķk887KpRXCѰTEQ^w~@GK3rNKj +}~Lct> N$c=nƩngIE^֊ +!dF/pI^ݩ([|Fv/fH/>_!ocG%s5n5ZݟJ\U
[22QxsثPU XxnO +Iǐ v 4
CihTޏ f%2 +Oy|g܇;h#1|6gU rk_wj!:/*¼_ԦS+(#>pKs%hjN +\Ou.h8˵[%-n&o{,OJk $4sz!b7ڇvem5HcWuTO7 ;BȆ"dUt[0!<ڗ(U>9;ր7ޭ:ղy7T}ICQ\W3ýZ&hlK\o`~~t!('tq Yb4r3DZa[_>(E7 bO;8<084;ժ>*Vu?+hH~qx/}$+V8|!ّ`ǩMQ'e^JY7:?ksqWfa4>Z'y];_GdR ȕbnf\Q17 +3<Ȉh=`C-Z*3J`+>p;w c\坵df؆:VQ +Lڱ{iCD87.4=N~AYQ +;dY.3m +'OܧZMkEAøVF+\7Hًs +A7?151"yUFIfw*Q;1WGWG9 +dϡ6h| R/?jVttf=]mXCh-E`?|(躃w]R跸[O^'^m[4]ađ95QĔbcőn"]GF&<
3dR% .ӵWQmw)GDaelNA|ZҽLE}b\L&pgr[ߞzd-Zpn|˨) 2xqS=wÆ
jI6a6.OSy]Soaԫ̱⣊51r%ob2pȈE&IpVNiXԲA$e$D{D';,gk\ Gi3qQL +X"b3]ub7夨-sK><!!=j
b](it9 +K.Ha+-Ε[xCiif|-is\|6m=1`K^!y9IjXXHO~L쫜F7v")@W[zb4*L0z$/{>UiOE5t=; +4?tsTe!4J%hQ:yӴ(kYM>X
sqir8!SS$ŭ$RѕamP$?g˟Vd[1iO<_%yZ.eX*I{()_Wx}kVԳI͵'EGiV;Ͽ6+$ɝ {T"1М5v-V$lޯbݦ)oS6hLG,v%uI~]%)}2oJ]^RӠHm; +8> + +3+ʕalnזOBw:D^Rnd;StdA~zMRVt}+' 4~}}ښ[T:%|ŒQ"X9"0TwȋdP@@ExO IXUb_4Q
:^\47U&c
A`0̑߷%y.SzMhg
#$SOB[y5 q(OL#'/ث*5X1)ols[2L&d/ +#{0Ҏ endobj 1369 0 obj << /Type /Font @@ -13965,14 +13974,14 @@ endobj /FirstChar 36 /LastChar 121 /Widths 2831 0 R -/BaseFont /IFSUVN+NimbusSanL-Bold +/BaseFont /HBAJHG+NimbusSanL-Bold /FontDescriptor 1367 0 R >> endobj 1367 0 obj << /Ascent 722 /CapHeight 722 /Descent -217 -/FontName /IFSUVN+NimbusSanL-Bold +/FontName /HBAJHG+NimbusSanL-Bold /ItalicAngle 0 /StemV 141 /XHeight 532 @@ -13996,7 +14005,7 @@ xzU\\k%nA;PH!x 8<$ýӷ{m~Spo}{}z) U
1K9Pve`e 8 l)qC$A@צ -%K7G6-0
('?0k+ +%K7G6-0
('?0k+ q$X8x8iڀ,@׳-R lSilO՞?V@O"B0Զ6ZeW97r=7V^ebw$Ul+
``㉥b<;Xð`d#NY넔P/駯 RKx
^PKL`iCpHT+TUdG:%m#RPgQO+:Lxe]k/͉J:'8lJ۬Gy乌טQK6
+Lv16(kXߚ+pQĴ^)R[W,,ޑɻp%n)iuGYǚπZՈv4:uGZ:<=@yݗl:GBOAs:rUuiw,wʽVwZ6]We縤hِ8YWtԸc}5?5&JtOHZpr_\Oű4߲~Ib퇝y"4Z;dzRсt[^c=ϕ
=X}^:;}%[,Л>ܱ^4AX%#w۱W:eNSSHfϦKuP}.F!"k/gФ 2հ" kJ @@ -14026,7 +14035,7 @@ g~nM"up^蔁 ,{!58Un 9PjK!z!HaO,?VzgTW-XNP94X}chAc~^I8Y-Ji.<Io,N#͍klnh2u<A$FD!:j%FDQP#מbG\e%mfg'C䦨)$x`A%*H#';p9/iԤN#yEz8pXeN r%7&`Fo}tW',4ӑʙ8`Z*\-[܂Jծ{i!UxT
m85)ۼeK;{ȡ{e~!lR^n`TG?CM[s ;ZW`3iSw-iUCW V>xjEwIo}H rknTeS<x
K-154a-@UsL/}8Ѷl9+ߩOȨqDRK7h,l[x#4 -ڮZJS~p+S!yWC6jy.LX5^g£9B̜}.? +ڮZJS~p+S!yWC6jy.LX5^g£9B̜}.? endobj 1366 0 obj << /Type /Font @@ -14035,14 +14044,14 @@ endobj /FirstChar 2 /LastChar 151 /Widths 2832 0 R -/BaseFont /GREUDF+NimbusSanL-Regu +/BaseFont /ANFAQR+NimbusSanL-Regu /FontDescriptor 1364 0 R >> endobj 1364 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /GREUDF+NimbusSanL-Regu +/FontName /ANFAQR+NimbusSanL-Regu /ItalicAngle 0 /StemV 85 /XHeight 523 @@ -14062,59 +14071,58 @@ endobj /Filter /FlateDecode >> stream -xueT-NN ݡƝ[ $Cp{pw|ߙ353VzU]o5
' ,ѕ]`rTbQvS1$)+(mj)ж -Tf`bb/#.@kG -`KkS;;_>{S''{A{G
@WK{+V$Hl
ӿc/ax/hBbr}O '+?_5O/}WjY7{%x2 =co -k,0Sږ(w5} GwaX88Ya=--T6 -]xti$~T|LAlFG1>g3J0zZjF%p\`;@*@['4x6?Gwt}C;/`wriaPis4D2mCu'bY>}Θ)SsԸo]ڮPbtmۚE qUݷECbsÞI|wLYA/Mek &%źܵu;0`[,9 XQmo/bf~@/@Hmuϟ>=(ޚW0Br}i3DHS~@k -fy_e[˲X6, -!`Ssw]<iCaacK &*hRϻGvzq1dJfdkS2Xu'9cH(;,#}┸ZBf"0uw诩y\8)ZMX܇۾*h>BEĞ=A#]}7
oξ{Ib+j@)0\si{ʸM9Z^4(ޥs>wWgqg/7KyyZL~alâTJ$Ta bewKˠDp6>;b'kO/AҰػƕ{8PK8OJͨS
s&8faOߕğaEԄ -~{c]JQw
eE^@XQ^ZKt$)?s]?HmPah)؍gB|"Wub:O -2)Pf*.>[-~➒hܙ6TQ:V]x/duս狪KSW'!d='\N.ug/I:?~%nwr'MS}ޮ0a6Mhh5&^!9u;6,z%?>bTφcLqGSi,5{G!_MxޫLULH,FɣȽ[i. l/QM5~+cq(m+n ]"99;z9W96Te(.jq,M8ߗauJR=zM/mɳb>g a(Gx˵ŵD]~ ISd1aI:<;Y?dW
Hh2Ua(eE3)'
]3%#/'%@;ۗ`TҹNHc
*"ʦ^8D$J|N넻)-9jMZSH$T?%՞Y.Fz0;g}¬m(L4i4g8'q繲59~;?M B?/ޡÄe]czR~@܍: 0/cGy ~Dؓ -,PRid^+^2m}PGGFcqaXD`*튆T),ڶP9]ŏ!?*:m_h96K= @O=P`&6XഺhCϿ/RٻʦA`}PLMD5qg.sD>Ȳ!XsNW<,tYDȹGXXS8MzR
Iز&"Qb?_=I37c@yڈX -͔CVBM$qO<i\lK#Q 1F(3튨SJ0J<Yϥ"zK7ũCӧdQ]:x=sh2IW~/8 E&wVs2{zlg|녂SQ&EF|z;ȭøs>?pۉ'բ5p S2%QGw_ӊRAs]CPlyh/%w`~׆# H"/}o9AN<rrVaٗ,7{w+LyQJCoNޱ?Zg?6fæZEh_&I+ .U?]l>ʉk9nRfD_>E^ 5cxORn.?eҤqm8¡Sع!># д&>PqQ^"bUwS?"ޥ"8ml-ױ3T;ߢLGua
I(ǃ -֞CJGM"&4<#`DYW -iKU=\k\dhYo;gh+RM^ aHi61P'&ij:UK;ueR)`kGnw\c>
2]/{EΊR wm}RNJ$Ҳ8D<
6gC4Y܅$m]2]XT ƅ
p|3o49y*(~E]:|YU"+JRU7. -VSfgw-4 -EܞQaYnk\=:,)BL
b3(&2kvwr/F -aNjg!rէ(YB5l+^IQJԛx#XXIhɩaBA*qk3/i5#npOiOґsA-\.v!rݨɧW(+hRzM }q3QH-T:ic\8I.g=u@a}4Ѱ.y -g*=\ -+,B4f{5#Re_S1هi>|6=p9DuT}bT-kgA76pިl<7y>GQƣ&sK4D9sumU&t,b\HH%2Jƹ=O2~ H,+'ϑT^΄l~_E)wл2;1̪,G͉#jfӺ*9pm}wtS(`Z_r}dm fW e=]iӀxxkNr3Ud:~E
UP@d(,a -_&(x(;YKm gl[z*Vi\l%{#w%W^#ӄsȾP7բ>#E9i1Wiޥlj斒mؘuֶ^msMrylƲ0:&~
s'AeꞲ-dv59KPk'N.tWWBE-=Ј|cb}+~w7@ - - )mݐ';p4OugEbgW<xY9$Ab=ýVy,"T5vpgA*IG0D%eec"*j1v5%?-& iAZt5]rkv(= 'JKDT&@ ʸ(ԓ{Pbdb^ckOrj@F[}@=ZqlQǩ: -<-Kw-/DFj\N=@U!ÇȢ]3 -a@TƓ7&EBYXLH^# p25X -^/O2-U@iw#9-b·R7M(6^=6i`,y ]8FfhJi -؈5nٱCd/aOE_ǖq@XEwyP3hv\e?4*m_Vl`dd -7YEæOO?q
#rϭA[]Pݦ;?JIq',
{ -hVw^7ߐ8p+`r`G.f9IkPOMw]
Xw
2Ωfv^=$M:%LļKOx,Q&:.`٧#ރEzdf9K09UDJ?FzÖ?LIF/u&}S;^S@M~䋧I
elpD"Ā}ri&~nª*8G|cf @t:olu0w:\E-;OAw-)$"F?I8%-f?)[5@M1CL8
E\J*,/y?ɺd%+4c'uwXK9!Nsfxv^ꏹxu="T6j`?h9#͟ZNFm:@c=\7s$4[BKKi~mz5c mufq0FH@
WnSĺUNzkRPd_٫LhO}3", -V˹BFIܵ<\]M=톮 -wOW:GӱI!vk%[d{fԦ1#VyYtk"aZ<k:q -e,4x9
aLîz͏qqpy(B+T.>q\V89 -<d
]0\OH#(Sa;ԙDfrN>2d된Mz?51IUCBbמp'Ӈ*]),"B'1XY7[zꬡ:%y-t#䐾pl -Lcd^g)Q=8$3D[59Y'$]h.,3m١o6IL[;j{ojd;3!towhڰ\#9Ecl넾E8sѭqyn&NrBIlEfNfPFl&}"w{,]nWvGܐ0>qDay9}&:`%dƯdY?5˥@+U4}H\OTJT)skז əmZςb|z9ر0SVJJVٛP>xtֈ7`ۙ:;>fQ8/Z"_:i[8&b@,/W2'uc]ę&g̝NŖC"P -\\(kE(3!S)HWʰz3!5J|_ _1&Dw&_э;QЃO^VύiNpނIp]]{OrRHAddv6ˠZV.2p%a'ʮp.=9̦5M")Y<a"lhy?݆cβFCfg9=&3([eu=SLuj|F_:4/z+t\cXFc&StKgt^5xelQ{Sо(;)%S_ -OEwD(HX( -ҹ}kKl*[ -e=~%s4#c -X2\:`'g)"ӔJ֫(k|*?W-$ -mgnDR͗!Q [Ьv"^5ҎՃF\&]݊ÓljM;o.*YYmI9|#+<T҆fC! ƥ[+l^QiEI
2-#vuڃ_KCt=sQZ4L9sOMx8`QUM`A\ݤ5lUs"U^Gh<v+; -cg
/ "d?R#BX[L N݉qkEERw-Qwؔs=Yn5p^%}+%꾪-k:Oӑ<0f8Owd,1t(Q}9}|18$:u'fQtj_N%٫8uv}ц|oMU*KMHvmo߰3TQK#qvKqc 31ixe1
#4o_PU7(WJ ͌&7c7p9nW ܍i) -|}LDN%VBO[ʈcD+8n}fjxM*{bw$nnh5Jz7vMM&Nq8=fN|p.(yuxA_Xoxt_b"L6b5ai*xlgvܸ$+\x-$s;#[й/-mr{(Ëك5q(?NtJ#=GLǷCm5>lvO,[8VM?ǁEd#OxG+`u]qWZl쁯ugAUCc5'^_BJD~,Y#ػqd#NzCXAmjח2Uja6cao:|zdOLǂLvY+#6XOeo
W"WqyxM{ӹG]>&9 -RQytO@/6XI 4pr W"
#%`T
Y{]^}k2# -X<9^{ex2¾q
W]gjY -*g)Hp2^e/ƼS}FGQi4Sz\7{B1ÃViPS@iQL0zwmNSL#YOmHkSf}S'CȣmުDlĵU_;#ֈ#ڍJ!QN.alN[,?.d"Q]ϷxJJl݃K;.1uqRIJpz=mJܝ|."!#(rQ~&,nDG;Rw~|GqƲuۄ(Q٣s)k=K}A`4YܾfvfS /^bE-hh@#
"PiԷ1_
~[fj6 XYTh3X)gxhCwmtʷ*5B*n&7gSzE"EZ -1;X.<ML"DH=R -=eۤ4;צ#\@Dn'emu85CI%|1ĦdZWoidCɼ̬"4(-ٝx4rsI. jM~MT2*'pgGB 1G^mM[M&Iif3'cf3Z:"6dO?z\+uwAkƢ=m]b%Og`kMћdK%)|=D}x0`E]`&$bC"U_CtU-#hܐ 2~Q; -8jHd` ʽvsu?lY%!R*<,Aܐ="-DNXI)nw''NT[k͡DA1;m8W:?rBPd9XxjR͘_/ -fgҗ -;+DN7SJYnj)=m"H]64i7p:Y>
T%VŖfЌ5W?Ul1<*:uh&8}g5<{GL
j.#N>|)HmT!*G5g_pnjîbhgmd@!i쿌tl"'%>{|1}iS[ښ3I6L֒RW叐".qs$#Z$8D8wD#70kyU-|Y
_Bs -^h{hzg(n^] -0Έ#Q8ۧϫTM
I!wC|7#,38.sM8?D$ȳ+%MH(B(֯)dC;yD>R8El,Gw6kea$!iEd`Wg̑GjMnh* ɧ!G6#p
uUTk~*-Yx6mPΧ]#2
Gp*PIrkh+kV@>j$t?~n
9U:A0%$r]c陶3)ro$Yu:ҫS m
iClwi̪6lU!}5r% Ǒ<%R kEX#5SHo{|zzpo% *B}lKCQuFr(oH\ၸvEgmiX(0>-(HVm`>B~K[5Qrq9#EWQA!j8ߧJ콤'J]tsqSdxmN'7e&x*:%1f'fy\Q9Bf -MON \]ܘ>L:slCyhs1^n)j!pq!V̀Drʇ,U1
Ԑp|VZՋu;P$./g\ϞYmX ->`FTdw潚ZpX -spy~kdsS6"V3CZ ]X'EB
/~>gq"էt~U̶5IwSD£a8#wy@<y=>ylF|U1_AVo{ -DD#fjK+aHC; o^SMYp0Cc~?`W) +xueT-N%hpwƝ[ $Cp{pw|ߙ353VzU]o5
:R. +:a\kˎ<`=]gi>Cw*m+/nQ)jvٌ:vQU5g8V.0C {A yz]<nFVM#䃻[_;L940с9Ģz}"jw㺓r?bY<}Θ)SuԸߖU$]m&5@*ڻo&χ=xt(_Mv#Kukva"TYr>8#v37o,]?Ё^/h5?}d{P5m!Hfd +"`Ssw]<iBaac#&hRϻGvzq2dJddkS2Xu'9cH(9,#s_-!a3C;T<b.K_Cm_4hO!^"bO|8A#]}7 oξ{Ib+b@?\siqRXXiPKN}x"#0P^oǗ4?ř؆Ep~@( +Gf1A9Zm|vjeN֞^X-a7w+}qvqȕ ) +QkL`8;+/ 'eXX墢,TRaEh Rz=Jk.ARE*;̹v& A.`7Bkn + +_Չ<)<Ϥ@*\:X3lB+
yJ qghRGXvٿAׅV./,M]p9u\c`<$݉1z7M9ynÄ4G6zwoSj>녧Q?2`'co@ujNIl|5Q>\uf28gB`1pL-DJI{p`c~_jr1[ @i[LvMmȑ)˹ʱ(DqQSxHfInBEl珬WmϤkviKv|9#7А X}(%[NH K9)d%䅘|mGBEAx,+1dKZ7`t̸XvLtO%?2l_YPmK:="50 *zu +aBdT:xvuI1s7pco$gr=%YbO82VNdcP]]0U~V(az. +R7'<+BK=ky*\z̶A&1:z.Flj/bF+_xR埲`kB w>L~}Ң,avxv +5ULsf$i+g y7<fT5#S4@b\Ϊ?M +ʳC))=QUj@Z$umdq,^Foz>@܈ +_jI$<4HĠG +cNf#L]/3[kF1IZP|Ujn:/$\+A^l%L
?14n%8D$+l</àOƽΥfq<8c2Ӯ>/c
A\*tS84}|Lvřūc_+Ga=cً=wI&=~Erkș`dr)m1'(C۱Kgh}7^(h1@qU~B,^$o7=11cpx\5Zs+l_y4~>~((4759
Ǧ+69RBzV}m9i
vXdgs +ɼ`I݃#<\a"4ȋP*f~s~sucso6lJ\veϙBQEeWVLq2[%?^)B8Û@4}rs -?& +dC;@"h/]ؒ^/y +=P @{M ݁|_],{;WIVRJCƧ` eفo(ʏлSƛI
+ʹxGr)Mܖ~Svfཿ>R/l6 m
|pĥoRwGbo
UHc\ +d_z$GR8~9C[zl~0b98 +ub2͠挡#x1]ŪSSX)%vNvG<3р*'j:=Y;>(Mq')7M2,y*.1@`S<hz8D]O%҅D +g+=\/B4fy5#Re_S1هi>|2=p9Du}bT-kgA;6p֨l<7y>C߅ƣ&sK4D>sumU:t,b\HH%<Jƹ=O2~ H,+'ϑTZ΄lz_E)wл;r1*,G͉R#fӺ+9pm}wtS(`ZU_r}l fV e<]iӀxxkON沟~3Ud:~E
UP@d(,a +_&(x(;YKm gl[z*Vi\0l%{#w%SZ#ӄuȾP3բ>#E9i1Wiޥlj斒mؘuֶ^msMrzlƲ0:&~
s'AeꞲ-dv59KPk'N.tWWBE-=eb}+~s7@{>rԹf%:>Ygv=v' V +B>&>@57욑N ?
6SXso21!-gܧzƂ`~F +aFr\eUsA+)3tv!Ct>dK6na3y2d}&OWl-%v4 w?&3Pt4 +`{VK r_),R*!)ys'e걹LSYx":j6hNŷK]endua6LN(|:v&Z%$ga"v?[+<Dƻ+|T*ul,W
+fZT`XN42|i^e_IDFZ`KֆK2Bpq\.l'>]||LF#Ij0)eQNӯYQD[,zTLWW +,B3YnR4 :LW6F,H,P(W'G &QX*Zښ0r1ޮudsi*{ӟUD<l*s+0 /uبmkSJ}bkҰ@5kE{.[Mc*Q&ju7E|
Sb!p`cϻm|A1doy:J܀%zנ*`f0CdC_DԻdǂn}4 X1=߫PG&a`SAwt+7lYQDQhD<u^#5y4'x$P&
H~gyM.x.B('fz^ &1s0f +osUҿ.~}W:kIM!1~6/dyO.iY%4qL0 , +t2p#4upYNB!Tq4*ن7NX36KQoʜϟV[q)S`
0}%Q&Vk9E[鎏 +,EUښJ<C ̢E%-)8;rSks[(.rϽҷ.(MRRwg(cVoVZ6J*ji7tMpmd|U9MᎰ[."0˦6zˢgXqӚ-}P'\5S,&gQG'iGgvծk~CJ]jua-2GoYuQP(5 k*X}|(GgAq׆(vߝTۡ$2Oou![|hlj< LJ\MUt>>|xe
Pa 蔐_<$ϺRUf
\)n0 ]fcж0PX>e"&;%=-?eOAb]a1'A
+ު$aݏ_R>Y$Bs!/ei}IfTiTx_#ܙA+vfDӆj]<)rc_f{^'-n(+ģxu3q; WH"f(2s2c=݀2f3Ac־'#g +Dv;d憄)_CT)v椟uZ\*eKľ~&a,W `L q>QFF(W̭][Z$&g~*2k]#?U"v`L[)!QeocY>Y#@Eogj`Dֿ/w&2j=̊Ko4fV|(hf~QZ5>9G"T2i<eu"(lG\{-G)JDR՛ɫ*(TZ1!"31nyΎTZꝶjnLsLM*& +އ;@&pZK6n|D""$Y +ty+5?Wvpa6haOb i{7FkY6,kM, +yo{ +%g2ųdK s0 EA:/vmX̓:WcKATdfd]+BS'l=]01l<?DtRIzv>o\[*%DMb͟Hy5īx>Q aA٫DX_qz0TSW乫[Q~x8i%@]8+ɑt: <bbqQ|<]C0{lh9c<$ntls%-Ћ!4^>?T0"; A?Qeٮ[{6~itcГg.JfА0'ݲn!/',**@l7Kx|BƱޢb3́uYps혧n%ҰvXזqOZ'b
P~
&2eJ$yc#;c̉'}19E99E'AWb1Cq/G_࿈5T-FyfnCAqc?6rC-__UKH ;¢P8vPz`|dW5g6C*~<cDӾca|.I;<{-(Q,}uA%:r!4+Ad_JbK}c5t8 +vCY& CS"J^X,-{M]SSNϼi38, +xf/c-3g/lU5um }MX,gh&7. +:;?/}g(ɬ5ȖG;tB| 9eb?G`
F8Jn܉\{zDgss"xwf/]f
iqEʷq|+BAȸȓ&J#iƱAi\ꕖ-9{)uYP~P.X+XO<BiaZHЏe23k6{6}IOSUw+ +$$-?Q㓪"+Pt>#˩|AbMfvDk"Cb<b6bOFY0+YZ-UF,c1 n|]+^Ylߘr((7*_f*Yc;fO(jx*j +(-xaC" F/vPɰ6ci$-
im߬odyMs[k}sDqY <$"6L
iS7=L9_q\{ca=;n;N*A N'Bϥ]!`%Q.obל!"BٍbG|Ώ(XnR|P1j?{u.{_>Ggo>?=M'7HˤXQK& 3HHab7¨y6O˳L&!ҋmK8XwL +s0#'
E+*%ڌzXp
]:b
>}ߒIV\e e m`'P:mR`@L6Ft<]ĮqG +6H~6KV{V议ۏwcSC-~pa6$UN
/h_SQ$yd$=u%- +#4UW]m̐)IJH_Tgx2=Jo8DGz"$uˮ'XgmO1='۔܅V7)GMG{n~LSW"&?/}-1ثX'+'Ql[˿"P+;k(av*쬔Z{Jw_p:L)e\%#IwIfڰKG dFXp6PX[B3\'<dVT +Y@𔖪)飙X壟^Ppp85'I05=fZ֏8Ed*^<Qp3Xp";ܞ}qù
ҊMq}ݲ2ұ`J@Y6qNmikJ2jzp<Ϡf&2YKJ]?BϑPkk +3ʽ|گlC7N@NcOP&X5(: ),[dƪUQ4%=`'.
OiWDR-Ocd\$/F1|0(o?[^RyTb˛ΌӴ&"Eϟ
sfs5G499~5Ή.PCa]iu)ot dēg?e(w+b$/!xl%aq$e
)%{ۄd k4bn{IS3.H8¹P}ZIŔ +S6O[C[YRXrV&QskȩR )%vKϴݟav-Hі{# +^JhhXLb۽{HcVu?e/&oK+9$)26pTYX +QQ$w>Ub%>QGEMq9?ߔpop.E~QqE) { +َ7=;%puqc0=C̱E620{m?զɅT8[2YJ$+.82WE5PCZզ"~ Zk>T/BeQFBFA_s={fma~+RWfC{5<ED#b
缧m.E-/k: +n/wB:x%&z[Cc+(=7Ctm֓OHb0j],G6!ik|G~ff>Hni:vC9nͺNDS9ZLAE?zAvX +9*].Z%H%WjOdcyA9c!U3koMwǩÅc~5*xw;(&eKeSÇY 3(k>~*Lej..SR+q2-|G6G8(̗WNkY0 +w8!w0an? '-M SB endstream endobj 1333 0 obj << /Type /Font @@ -14123,14 +14131,14 @@ endobj /FirstChar 34 /LastChar 122 /Widths 2833 0 R -/BaseFont /QCLRFJ+NimbusMonL-ReguObli +/BaseFont /LXSHKS+NimbusMonL-ReguObli /FontDescriptor 1331 0 R >> endobj 1331 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /QCLRFJ+NimbusMonL-ReguObli +/FontName /LXSHKS+NimbusMonL-ReguObli /ItalicAngle -12 /StemV 43 /XHeight 426 @@ -14150,74 +14158,76 @@ endobj /Filter /FlateDecode >> stream -xڬcx]%vضٱm_m۶I:culgf9o~ͼ?8wUUjޛDIA(`P3qswcu55rQP9]ō] -`eQ -t' `fhk7_0Ggps/ -ĬsX%Nf{S*P3]l04dŁOH ( h%g)'OTC#}t |1NB:>QGSX}#X,|[#~Ww'#$n6)xC]A=$w?>1$Sd PN<3WGݣ -@]~?VJM_G)|j:Sb~,(ֺxdԤ3Wsb.ǓXf-TnhR/2z}wK{?|(I{ħj{b4R{2ݷ5ꮋoW -s,燨qZoS-|74\uh2t -CCmkj"?L_LM>JM&BnvEREZ*VXpq$~W\zTX4T#x0E ĂN՜jE7<t[|ytl"|6g"jeeU~!8q7rD~Y*36"E/ 3A~uE9X9yL45>Z~Vr!^Q#S{;B9NG -Y'B -MWVMSsQ;#tWdFY[G5ӻt_;!K3m]:c -FF&/0R=5;|yo1-kG#wV6
Q[Hd/w#BG8M=Vcn)ː4jc ?3fG/Am
eDz!*YRQYuͻ O:}ui߾h;/²kv⿓QԼܳE g2vP&{|VŽ@YaJXe>(*ay!^Rq5iSݯW]VӱmZWf.
%hBN@B(KkoZb3 ʐOcwF9j,d* d:goZi`Gg|eȯ ˠeX:?~#3<;35&EAmJ6;A;'#oD],}w<?&HA%VGқ7jE -~Ѡ$Aԭ;\F$<kN5~O|mFR@E_w4"X!iNq[' -}D"`,ۘAfUo෨T['ML;e UU=OZ4@Z3u7yӪsR017/R:w@b>0߁˼n89K$>NΌyJE/oG4#oi7u~á0\@x:t^cZ=`o"BY7Lf2HQZdmha.wf F0 l8c -Muɾ"BC߬qq/سn%& -Fl?XJf^."+^yvK x/|0mٹ_f[5ή?UظCՍ*a.5I^Yko(mOq!<]Fd@SuҸ7$PZ<R7vzC3,ob\o,f75_7'hP{@sn@e}أ<WOX7bUdFqnEX*IT%NY~hY*by\/hc֟ǔ#MI+gs[19ׄ[8|%JUᙨ=di8L5]+< +Ö CfiM<!}>HJr|*L]KȮw'7/ -Ob$#_^BYUbzM)Er)QiJ×>F;.@. -J?0,fPa&/N"o,Sٞک ~2FNr#moCfTPI~#)o\s=Q
/=4{ P`YuJNJ/ -%j yc땘,3c3c$a{sσ6@c2ٽ"d$N%ЗK"#w>Rd<4Ooު'>{C=?>WF{ydl0U})lp)αI<kG!
t ?mP8zuwa߳)ebQvĂVU2Ԡk)|j6te.
"QMWP[\Hd<C !Iu
܃}cr$`PX藖X-X5V~VF;#GDKM
y`c6Ϯ4fl?i!e5bg>{9A r -*'5ƺizf -+H!
' -Ċh{=ݶU^US걼gEoDs?XW ^
BXY(6CqZn-1x[Vdm1i0PNvHs at= -g<LCRЁn,Xc;W`S"SOE -e5v'a(#r)6-E55+f].bA7_ =E_k-%AQIH.%D\n4[*37]r4*
V7mnF#,y*o#$9fR\́L0ܦ>6 1/6]vZ -_1RmEƄPsKP=.#`@>Q¯_ƶdN3'M.FrQ?I$_1O;"?w:Fœ|/{;E*V$P'Eu!$H+B: 25h֦21O٧hmFj[sF\.c>cۗ+v"ThLQH+V -
jgz=dql1Yk^P1\U1$:$a^טNyLl9\UE=̫}c(rEj/&;RS#4eQ\G'.*8@g`WQ>拗q6K{0BMcжfQر!kᣇ-9\: RMC QRdԏ$9WzC&=LzWuؖ`IL
! NCZsJ^" Y @A(>S9|]|u
+~LPW -%/"
)T^%.R/2{߿)͌
uQǤ/W~DG+,Y9#yX9Md4u_y#jrmiŦ劐*!=C˯C>*78<$`V!Įx8"cBYHu(
z
-`r⺰4r_fc&Boդ7Y;XsbWL9:=\ލj2͡Tn1VtӾLC=tTz$YZ<*4<i&A&.nD,gH|E:O6HVW̨VSLĺH9%Įqdiݸfaxqvwd%u0ݜ|UvK6@!wJEt!mjV[Brj'YNY -s/[0x/"(Nc&uyEB:\>賀v/zw>ٟ35U@<!%^>*8˕N#^.Fj$eoq`^r8OoLeh `LEW* -uB۪K|^$:YdZ[nIZ&ýMp5@qٷdsmSY#OiŞ'u0vFP(1}G&&rXtcBZsԌh
Mvi1!cI#ZOv5^0)T8
L/Ӫ"c\U廰8Z8c -(O?1D r8!Dh M~ϟ~qE 7)ẹC'C_{/[ߪ>O - -NvYb#ƍuiÃDJ
J)Q'E+lx.U!o4Pe>g/h
VO~^Hj!_!7:L[xsJu-{mR >1]dKFq7}@,-ǢCGAYJ(ͥX2{ڬ=A$bPI4xVcUںH! -.@o.Al -ZCx>P%<`TT<è~ROIH?}7lym%-|~@l -DAL[EfZTV=ޞWOtG6df_JR*i_Yx}|!.9l~4)S4X1X.!O 8m^ޣql1. B&xd !<H?KA3Xo°2f.IFq.J;ؔueVXuLJ{Bִ&-M bᗓUdf[{⅍LC"'xcE]Gis*d&sk6QsN˰k_oQ.a/sSyWc.hC>t>!
|x 4oʰ,o-LaA7Ͱ7)3̆Vf$0T9 -ڟ\@!#^dcq-$RGтOL!kVR6rM'_dj'@z,Nua|ah~"^$6^|R4 0Vb" #AL6G0
36D9\D:R(?}=$7zO ?!<تy<
Q?ab{F -Mp.\B$Aԇ}ջX B?)@ 4pҝS -5Z& -<H)]{}꺽0<a.mW#,)=ܘ)n =@<jIdQГr+7rXbDjƜaGY/kl"%:7uc˩izZ'WQn&Zg!<ݯ/ڀuX0f_6aZv`M1bvIJn.K5bϐΔ<lS+1Q7Wv[!MEXZ3t`~fZp.fc2p&7^#)x]necJۊ|gv$B!WUVi -v%H.3X.lH͍gūFri4(}H!DCO|Iu%%%r)X!=tS*biV6.?Q7}jRm֕pyNL0@ξᵒ2רcgE*ɍR\'bwv08<'B'gқ=Bw^`<9M\55W=XVyi 6-DA8qN!͟$ʓ1 V(hMw=>zoM`w%ՁRbO飅>ZtuF&ONAJȼWJ6jE~AxH:0֦̽A{5?]-|{ɷ"|QDX<ke 8=f[<w$YeWwN
}4+Zdh٢!Wtׅ\|3[ʴy -6en&`jzMD.TbaY!Ɖo36nFkpiĊitǮ:50/ISyrJyU4B,Z} -Y4=B<7mJi/Ov8-liEh3kɹ[x)ckCy3j5͈W݁9X,2n<K{ (P2^i;VVJ)'<O_'ѫFX7 -4v웞U:]zrt?+ڟr\2V,mg@bB*Ngb~_<o,BX``Na)`Ѧt8hO=
ClC4Nce)A1uanDWj!/vyI݉h[so|.VG|Vښ\䑮X+J`sEsߧ0{8}~
;MA?Ȉ -M)Jy+AX<UuEϩS0 -PRZڗF*/\<>c430Bu!uA8NycP/䄆fIvi}
1df9~% "kR<Q9&NJ -;Cc6gF 6ZO4nF@(j9Ri|ī 8-J_W䛉nLJ:l
j])Tʸid8rKTAh,Bu}SmWvh
+GI.&<Xh -i_ z`?Rf|~^گxm)hz%ںHAlݔ68c`GwX[=Ƹ(/ת}+!\ -TˣA}f$*Azi'k8[!w@fsjdXH+NY}aK:P - ՃEnhJTДB!pl{^. LK9GxCUVXƐk*}TF[|aUIV7&$Npǐ}Er{UchX'M̗$,e1KaF{,-*g6`FLs$tdyǢ%1W˝L
,ulW' npӺfsKn?]jӿgGhf{Ծ ԉMPEodxQty Q
VML95h!e8{uQbBMsٲ ] v&̋ϑ'8*I5«6iiw@!e$}s{!!cPGD<-s_|bAQ-"&53~zh!i!"s;on˼
8$'U -v.Z[veަ`G^RǺO^ be.2AϻbzYbR8ohrZG2 -k~k ,x-宬HF N_ 3y=ΑYĝC筲(/?IR[_r'T'7X*|xrlIUFovBW5+[㷼&+g/<R4:&CG"iTM3_wiExZtˎ<7@zi|mb3]?4M)X~j8'sWstg9ѨV s<|!!6ոʅX|_=L\RSw";Og0N/Tl0u[Hλ}f-a{GyQʂqG*{bޤ~+6Cʐ:j]9wب46^
@+l;ddRCN'DUzF9 ʳ>XJs.noac;cZ:ckJcS -ҧS&á`2oܓ۲z6ڱ]9̲M#S@s]`t:qtwnj -ҨtWjq,OA*MtQ)V1́ѽyL$~ݯv\TJ̹`ş -,kc493~`"Qp
6yL3|hk$XM=38WH#9L>tħ٧=Gߙn[kc>ci0$d47I=&ߒ(La˭<;!
O$caf%vefck?2HD"V#M韤بŨAJJmu`UKjޣ/?H_]x3sV -v%;[(v~݆&=/{MJ#CSO:IWX{5%{p2D{j)˩8tTFU56פ 6]6s2kX?"WT&UU&iKwzK^:ra_҇mJHd&q̪z7Q' |wX>uC/oYtpqSlq9"MqﳀxEKxO&S:!bP|iSGhl0l/?g꧐4FO -5]Bd?!a) UwW@Lo|pތ˰O؞f\9]˚JȪZPP&_vǢb;-aJ
7ZZ'Stj[3?2li|ܩWg9D̎ٶ&B&a!ky`4[(TP[_K"bq>L/ozͰ~Fp@8uJ;EFn$ -^A%CLrjYn\4ZT2'c6 -?iy-Ź(Tvl4T>\Jf>jϘa1<maf'N8kR;|(b.@nz#g[nٸLzZa+|)\Kΰb0ժc,5Q5Fg:$n<OsDO0yw2=
{h%RsUc"g>Z3M^ҍ˫gQk5CytԨ`X$$85i7dWꙩ/ABI燷\bEPE ~x;p65|~`\3'qsZw.4v/'xj%Y3
#6y|^AjÛ4Ո -VtJڙ\z?K*6!H٥L|_MMI$֛Z uKœ -'Dؓx};Ӗ4D'P{ejq~<ZxM>ʀVVOwK,-Jq͍ -so -#cr!W= *g+#es_,2P+puMYP/Ș;>[ZD"oq -EHU1umLzhp;AOw2}ޖ!F)fm M{<R[u
c_Tt֓ީUPZ~nX Cg -R79`y85bX%2Z}<.39ogJ᷇GُIg[)d T1v<wWL3:W}ѪpHܭ|@lS8z,;xMJH#x8ެΝQyK|8a*AsabvL)"B,qe>>$h(O=:ia(c1}SB=9LY%9Zc%ו<7opn=+t@wFQ-Z吧;VImY)[HZe4;]I1 -¶e֏W[vM6W(Js:L9fzoq7X;#=)GMjӧ>7W7WB[ÿzw&"L>bq\Ѫ~yQkͫ.W?>@#r-Ea]eJř|3RɽJDhw[*rk4\`f^
?d:EfMCӄosC>K4O62|3y=1^5x!'On,oybq{mOkxE+7!xF0H{M^^IsC/`uQwOzDFg43{ɝ`lAoĚCc #s6>jv*AjNeMx@ţ4h7Pg3L0 -izղm7ZU4(6žPMpýה(YkW!`ʝmbĥqgF2X3o_dd:T˹E-{.1 -dpV_1{?:W~"LQjֱ:KY5bx6blx
~,YʽI|Ȩ!V3zG#n4Ǧou~ -7+V(a=>\M!rm% -^&JԲ?\9hY!Eʷ<#Q9Qn's,y_ϳ5N%v<<{OS*%lU\"etߩstvܘt(vkql9^k%}+orRJQ3l^{v;rg3ƆӢ\[#Z̉f|(5Ldh.5T䦆zprMΩqr.ܴ4j%h +xڬcx]%fm۶mc;ضmw;ͯy箪jU{+\x +ZR + u[T9P渑WЯxqDdw^sM]Sx
.9I1X0-HG[UؗDgV08\Zafma5j(!8 +^{[<ev99I"6 +9ܗo(Jԫ>F.@m{ *Ya^>#^]M!O>6:߿i:.Cwt~RxܳA^3w=M9qx+䚧(%2UقqH.M[Vx"kګn:C
-c7) Pd<2OK4D]&A +K0ɡR6u ]ޠIof^ؑ?rhNMzK38?51"AAiL2=F=&-uuY#R)` H1KwJ,b#D*S=2qvDQnB0$fUMptD619xY\,5q' +!UϚ(6N{=GZbIP<O-rĪAhC1Hlt6T,XFnF6 +ݬ;h_j%ۺ@s YK
[v`v7+}H|v۬,!J<Sq9f]>h#SlLq6q3H;ɢUTt=kxRMTI4#|*_ ̤QkJ܉??D< fKh߭wl12O}zzq&~zr,R
pq<%@\
co?/ljšs7X
G:Ze\9`k$4D3Hb2HQ\`mhf*sb'J&?(d0mM̯L.KgZjQcy\344ƉO8Sʛm4"6y +vJ߿p鯛l:d_gB ~t +F^4s5%Bw/k~w;\'a͇ .N~T1t?9lxff AX-^a|S;(JNm;~@a-{+e2m3yK<` +涍 1<h^*d~X+VoeқÔ% +IN-cu5>ۈ[0t%RE[#{R"+Q
QJzAgXW-cJy(KD9B<䤒.kEE]@wO.4~ZFEibK<kM;(0Pגh#;śuN9)9t*YPgb@:Yp?}3QR'9!|NU[20{ #<4a?AKƱi}l}M(vrP"f*^}YޣK˙p&n.5FUF4k]aDb]6D#0ڍ+b{^Rj>7 @=YZ[TmWZ2JQ2Qer+~"i)L3j/:ЧDx:sIm?W\0<ai-hT. gA~Юo7keEEӗ!LU.|19?ZM2_n4660H0oa[c˨ˮJX2wd}܌ +{{;۱a"_/KUKhkjw7ʤ^JjVJM$(DЄZy>|GZ5tp4.\P,5 +.R#.c+glkѴE-PO&fsY5p¯"A?qf+ +2ߘkCT:8 +{1OdyhTJ^:c6B +P~=Az3vtG4pE9#.PUܻzC}⠝LP +La.
Bn]q~y)'D#s&>1`/kY'cƍE 1K{<}*i#R}b1$sX?U+2|Ų[*}5Ԯz`oA'|P +7Gj}> >i@6kڭLN<YghiK[JAsl1ΣaWsWT˶)BT[(HKru*':=d1lQ+PQmQDZ$!9lY]dqL+|q7(2dGR"5t )]J)t[ c2.#`d+(sEKr% ?g'ױjtiҗ +imY5CLW )'BOLi3* s3OzU۔`J#x! +LCZLZ$m=OPt|:j?Wfm?n8!C"5<SJOfY +Rp>9,4%oJLNyoSj 남xMqCoK=xmPE vWILEub[*9xwwᑔ}MV2C"ħʉ]B>ekBz +X0MUȜ8&SnrKx3{+n +0ʬpt)Nˤz@̳k^=]nueÿ́j8Hi]LKjOԔ*Ӆkk[[@Z\;'ta[)a8cmtPp+MDLb|b1y#4&wqi+!hxQ";eO8zѢCq5ͥ+F~A1bN)I;R@xL,(S=}ΧÁ1}q|85!5Y +J5t*D9)AV)K\d@0[00IeI
a&ox\%.{! 54\!ƍ?`wҬES(uѺ?^|êvkiGZ66*y h\O`&;\(:ǩnv(D<i_b!d*7bcGNJlicөKV/Jw +,JzYRW<oo+L]r3ҰC\bcdpR;7Is=*/2v8V|WzIqciq-XtZEW xA[pI썼8OfJ4?!ޚT7D,XG\ asY~Ԩ^bOH݃7)Zs;RM,ۅġQIK?L.!+7ص]E>dagےF148ߌ%13#rM48Tbbiй$ꢙoRkl&ƫzKB{k&;"diGDS5}ؒ*NFo@'}/矓Rf}bhBds@h1 +7`Q'YB]kZ{çg!㒠NnTǁ6!x~x]$nR +QX%ZxNtUm_aHR3"Ddq$!
[A;]3Ž=cR|_ݙ6-{22Ru6VX~V +o=k倥 +q\`,1lw:)* F _+"8cF5L{rsHD"('ReLƨsFZg[>bwW,@tNl{=|S/?!7vwQ@lA&N +oJ<S iʧ~Ĭu;bg8Lw},'2iizkۺ~NuʫNķ,/YOے19C00eEcv\MEk%'d6$kHLبf"QqwިHU-^?P1r;0,9 +#qWg"=H;n&2YB)?}4]=F5˗n܌ôw,tkΉUksVKZs/d?;:zp""Bý`v℉e">~6'YRVfYTtګ, +RGS[E:LO-;It DR\$;&^jn?}8=dɅ +sɫtJ&K"ݙ3bm)pgި@7ZbZ3$}R?V]shH'HhaV| +fiblKͅ`?9;Kg' [3!<n7˛̆C<|1&N|qKnlo, +n
n9羘c*V,Cp͛H hí&.}EMĢ]ز:/5C7 75:ԇkjsf&1KZLsvqUŔZ5|C8&d盚 2/>)kYs塩L(^Yv1,tIp̞8?~!OӤ[gUbw
T:hʭ˲sMZb= ;[$Z_WHA:Lڢ9GYb +
zeRhPzj#N yjtAeɰٺ;gDS,Q]>T.X
UB]8k Hak^'}E%[R,VQ:W 1xɄ:Î]%{<vþA19lc{0;,ı[sSt pb&A-!_/BPf¯jcͺu߰7%DF +ڽ#4ikTFy AIJ7)Lk脷~BKs3֤̾B{6=]yʵ Q +@_8m?Ǧ]ะ ^¥WsN y0-\`foޢ&S +pׁXx3S¸Wv_"dSeYI B}`.E +HB+~Y"Y^ȋ]a{P!>hW,@a&##)E+6R]LqG8BsJйSj +%߮5[/tyV2f&,b0Cqb*ՁWҩ=n7]7m2$7/5^?SNv͏OCC:Rj1Kpո*ӊl:4ѿ0L53[j]GpJpz t(23/L@cEIy{I64D95agaWi^J<&ugP:<}vSsj8 +$f~`AN0y=(UHyJ|(oXۧE:bӔuTz4}q +_>kDGc81| +XXҧztCog$>Q'/.#S[asaMWlk5>=)wJ9Wvgkˎ2|{='9/[TDʳyϤF]ed^" J:ĝz9âMh#P7k7(PPaҕ},$&V@b)]ng?.
XVzb3у[B!0|1%YRhLb͔lsRK'PJ5:^l/-"H:%`#Kvcd¦daYTa lK.V" F0Q7ÑjR:? +{Z0'^^TK)&aj%czɀa^n:&/_!ƽ:0~ɄG
su4Vn:-}5}Rmskd(U\zMĩ
EnDo,zJH0\kmqWE)oc[IQW$JJj)'%)A3uFж۵ +*"8~~!zךbg}oaiCn/?,ʭmI~Zyx)RtpUz+$OLheKIGhҘS $5(D[ Vx/kTzJ._NwK:4bujtg+Hbh%ԙ,ĵAjrS۠zFDNأ1VGќD}FV#sRI)pw/Pcט<jtVmȿRTCpj]` @ۃΚ"v#ڬF +,_gi%} ++"-Z.K؍pW +%>U{~`8~}B-Z=XB^Q@et|לPC +,Ғj;l{KpNk) Y2ݜz9%ޥ7L {_~9L>aO*xԨLWiU3l%"pM|CFvAeѬ!^h^( +/aI]?="Ѿ
_ikS?sQ/ 2>Tᒬs.; v)ۢqoh +JO0#IҮl܊7QxۘZe&?;T44Vyjqi1EYݻ&6B内1!c41ֺ
Ў锉WAkxg}Q0w}+/O)O
❊t$mVgC\?/iwi5_W.$guaF&;Y r"̍˖#<,N1ī2nnG&a ys +C@6_6<K6v +vw8i1=[cw<Iz7ef.ݓ;jǍB#
L2^w%hUuJ5=6A5{]OŬ]c2>4i;ŏsUweQTqÖɱ?~&!骮2QʁJ_x[9%XTUs$H7 ++P7uW@9֫mz5qG{EOJ4걨N3{&GOoG +MP()$/Fj*LDJ,@!,Zf92X>~Њz'0ESL<pC}]ߤ`J߮JĚT(T& +TbgJ\[!;N`hH:˞$)JBXѸqepc +lF˴Yi Rt= :tIBdͼz54fsj-0Dٛpե$2ͅuSu.э6oj&r#() +34>˗l)8C7҃kUǸ//`rHRH5KMOڝ9{/*,Hgxv璆" +!<]HYF^KshQb=G-=&zwZW$,m4(.Vg #ƱnNuBpDɫ[5+H5?.T411%ء*#?Da00wkǭN9C +I}d@OBr",#$Oo +w |Tr/88m-,Z{[K%[M" +"As#X}̗~61*5-:XrU\Ef +S=P9; R>E4DL"Z .5/"MKeag(E :#7 +k 3TIRx~2KY7FtP*Z}`ER߶@"^3H*͍cZG~?cw7α_zkBvռ["e'
&Չ/~CWnj~ E v?&*ϓslH,כCâܗWJm3^Lrt4?bن`i(%|H%"Jm,6#9w{=س̝B$4+m%:wL9HeVzcVN +7 +V`.WӲ{9?/B/@9RW~Jo10zhI$@>Z3W\pn|#~PW&ޏU<s,h>-Wjkom=8_ + +6<dv7x.#r]P},z*&-MX='Us5rb#&;~X;sɭ'zY#ftRW'u%7O.21ZlTB3Kz_zc{H&eó{EܚFڱAGB-mmzNQŢ63po0b[>N&=^&). +4)
1/ޟwuZFpdKÛIʎ<0]{OpCץHv7~JbIzY;7@V-p~*xPdl?`8n^;+SSdJz8(=XXh\.+xC֞JSm[ h}*;bjI#\[.?3,IީПkH,>02]IO̠v]HyJ$"z19̓Wˤy@\Z+M44X$?G;MdEߑR5Rһtw~+yVQBIz؎'4tgOIbJ͠~KÐ<;cΎnnam1~``?-~-" o6vtQCV>jkntAplUԠPRtZkkDV9lpiUMإjY Bur#P98T΅v3p#;@"
GFG#C@|endstream endobj 1258 0 obj << /Type /Font @@ -14226,14 +14236,14 @@ endobj /FirstChar 34 /LastChar 125 /Widths 2834 0 R -/BaseFont /NSVSXZ+NimbusMonL-Bold +/BaseFont /PKANOS+NimbusMonL-Bold /FontDescriptor 1256 0 R >> endobj 1256 0 obj << /Ascent 624 /CapHeight 552 /Descent -126 -/FontName /NSVSXZ+NimbusMonL-Bold +/FontName /PKANOS+NimbusMonL-Bold /ItalicAngle 0 /StemV 101 /XHeight 439 @@ -14257,7 +14267,7 @@ xڬeT%Cpw),www wNpww kduČ]< `epssSD<@. -tEp +tEp ֿq2"jFy_mBp0ko)M}s|'w+Ǥxp@5MՎ^Wxr5@5t]NJ^7(9:40M$yr/J+vroI魂|NR-{UZW3|ӹ8|MA7SA?!{ülkh_zsg'K7Q23V!88Sz-Zʲb<iuO[מʙ;e*1 =:n(4njQ"/>Ult%/{`ENcj,UooU{L,ے`>8[;1"d6k$T0c=8l2B-NE>VQ?S_ZjcxSHk_G'c~5ر3=͒9C[X? Cz!YGgzD7 8(GDH%.fjM #: YNoFp=)I%&.ٙJk<6K#Rcx @@ -14332,7 +14342,7 @@ MB&vIA{}ɨ?XcR&Y܄*3c,;SfKnLXӌȊeLKS,.)X"pn _7Kbͤ\?MαI9Sf͢qcUDR&P8qpS쭧@K2y4,nz~Bw8X7ՅVƶ
/Hۇ84[;[ ]άT HoRUqX }S`Yd2yԾ\1?a#uT!ZG=Q]c9/dҜi Z64Lv+/{Vs;5ދɁٓKq@-UJ;ѐnU/"%<{Fq+
xQga+q%[Fe$M%r@]C"pI:%?0FX_fN1ήH\Y2{!"ʭ6fBO00H^4WagUv;֗FIzY`5CPW2ssFHzS汕˳ͤ }<.iD{\̣9!zד!0V;&K(MV}QcL3AT×&'gVƴFytc-yfgAzTz-:y@\"?PVWE3 lDK\$Uw>rߩD%<Wv\ӌJ -A}[L#G_aͿKHh
,_&oypB7vKNhO1_rD91)sTAc5?͂.y;4/"psxe煤nqsendstream +A}[L#G_aͿKHh
,_&oypB7vKNhO1_rD91)sTAc5?͂.y;4/"psxe煤@qMendstream endobj 1238 0 obj << /Type /Font @@ -14341,14 +14351,14 @@ endobj /FirstChar 33 /LastChar 125 /Widths 2835 0 R -/BaseFont /ZJYZZL+NimbusMonL-Regu +/BaseFont /SGHPXM+NimbusMonL-Regu /FontDescriptor 1236 0 R >> endobj 1236 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /ZJYZZL+NimbusMonL-Regu +/FontName /SGHPXM+NimbusMonL-Regu /ItalicAngle 0 /StemV 41 /XHeight 426 @@ -14368,7 +14378,7 @@ endobj /Filter /FlateDecode >> stream -xڬct].v*Icul'[bb۶m۶cw>cjk^s^Z5FQ)0%lA,< +xڬct].v*Icul'[bb۶m۶cw>cjk^s^Z5FQ)0%lA,< tGLzQ7K;P?8ՏJ>`g:Yni(\ <٣6bw5a_|M<}~?$ˉuBC(CBi{JuglC(bZjfpC@ /鍄aF)T_ ADF@_
zI>^"pjmHNZ;o{O}qM g@ @@ -14442,7 +14452,7 @@ KYt^evQ&57фt9Ʃ;QLV2I2U^%~zW p Sb7+֘ߠnw'#EnxPL~|4KQ!jnժVBGE} {VV0.Tv|`SU[U!&7>hIY0*껪ݳj`?8sGx9g3èt:n:SluHxPoJAh߾W'B qJ`ka殴bg>MOB8uk7)ܿ5GVQ(Pm-FG*TAWK2z) ?3̏QOl s -%j
endstream +%j7-endstream endobj 1178 0 obj << /Type /Font @@ -14451,14 +14461,14 @@ endobj /FirstChar 2 /LastChar 151 /Widths 2836 0 R -/BaseFont /DATUIL+URWPalladioL-Ital +/BaseFont /QQCYVR+URWPalladioL-Ital /FontDescriptor 1176 0 R >> endobj 1176 0 obj << /Ascent 722 /CapHeight 693 /Descent -261 -/FontName /DATUIL+URWPalladioL-Ital +/FontName /QQCYVR+URWPalladioL-Ital /ItalicAngle -9.5 /StemV 78 /XHeight 482 @@ -14478,80 +14488,73 @@ endobj /Filter /FlateDecode >> stream -xڬeTm-k{pwƥqwwwBpwwwwn/9kuUjW]^TIQ\PWT256:189()Ŝ͍A@{qc9@ nn -`c"P=V -R -ۻ,> -faj -hjcO9
ۛꙕ*{Q|rq;B$<+u -9XڨVTP[iV4|~hǖ7;/9m!ONn fRs%(.)e7NvgG -(f^Ouy=5uv0;)$5beA|DR]'lcq
q#ζ`zn*pzGHzlXì#!q:g'EZ -:̕#8|0x6>XRoX0Ejq^^vJubK.X) LS&sɁ,A0B_ҍF`+sUd1v\7lIoEs+3B-C^q%ժ\8c:l4rml?fGO'Lֺ5հ+2 -lOkuҥߡPoR&??H_xdVetFxb˔؛'KNh
s+#>ZŗrJJC5@}~йP.?%|8V+.eit"}g_~I;>aHb/ό(o=!!rM>T_$ f~1t IQԻJTdc8Cc q^W -!ң<y[-^ب8g~^:~Kph3
]ίF;j.F`1U2q tV!c>I_F h[yC%M/9}ͦCFBm)ZkCeq<FtG}7DtKpSsV!+%'}n- -Y_V0jwݳ -DmX-fgsȞGh5CPa}f'a -W*os)VaKVk$FhJ-=(FReΗ 6Α38w.X0m;hV\#ߥK!Wƈ -@CPdUa"d+BCͥףj$uA2IЦBE3p=.NU_iۢ&^e=:raCmd-٣MOR\1MGMeN1uOuZYR|pl
V}uXK5S -:SRK"hy{ -U\7U<rIqoې s.o2XOzG6vDiA6vM2feY_y/W)vBܔ/<#3Y3eX!7p"sU1b晜$B'LxKEҫ<&kn7˧MS݂wI> -JLYYyjj:脯 V*|I1@@i|錽~J8_j"Z28bs+
]{ 9C[GߟRџ0^S~A,ŪN1c,$0,Y9i"цE|+1d&&ec6h!*'=TylY&I=pC$F}1rP{Ip::LRuaΒ" 9S"Wg#qQ]l|!c{27:s -3,_~\4PK8nm']\x-pEm:.LA炳Ѝ595`uYOijNBu:]s#F=Ӊ7/F:OBJW1aE%z<}u#iژ,NA:<uo=C:"7ڏn߲tg<]DCrW˨*c_oVŒin`x
OmO*RR-B"TQsI,3o3V9O4&aNYzwG^^Z0
ڧ#Vz.JUvhP|eNj6.)wsq<o&waQUc%[WZE2[³qdz&6{t_}Ҿ,6#jMhk6|EJ -6lbL4_#n+vq}] -"A_&Q+#?vP+ -S2$R}Xg<4z7!(!\pim.E*^aM]b*ZIelm~]"nIa/#Yˬ\$rE18St~PR_G:}ZP>yY*f-xu E"BW4 ƙzXmM<%0%AR/ex4T),tUH:YZťC(_T,pckD= -cG<%lyAPj<TwLHyJRci8>Embi{U8X'SnGP˜76Ƙ]ͥ8ԡQ[e_16Xs)\W}yCG5s}}XNgnҴ-%1rd0|x sۼ_>UECAxbPg -|xQ"^*[t9z%r1K6S;Ws -J۾YV~&P䭹մxtEQլ/ -Z -zy٦gz;w|[,f|muEjn.>PO*bec/ϔcqm/99U i=]H_)vq.5ˉ+f˦(s $6.K0"5Ӯ}gc(^q*K78Y_\^'kZ haX(ƑSmC+% w~97([s;] uWo9UorhCbis8mHx#[ÿaz -om拁/
rJ1Nh4LжK]ɏ{b_phjR>ͪg>s7S/IsJP.=v
!
;ݽr?9RE`a QfT'1Y'v?%i.xok2#*V㝖O\ݭjLc%^r9lsr1m?_qo8, -fP<n|~|b'hI;L -}Fl
z-F>^JmD&kL]gFO"fY?~;ZK1n XED -#DgLۉST[DZȍeN~/u?an#2Dl> L|H_*ЩdL#z8\
xwl{-cےŅYyba;?S_D')mKy̽x|V XG8aש6v/vEjBl*lBsic9 -bGf#bƩ4+.(**0iLB*%OE}uT|`UK=X+o$~ -e=jgL`A#L.6 -V܀Dto㨋iiKCf;nnUViQ'r"pţ<Sj4XX}\B=1'4>SR/m@,P֓`^T*m8FYtQO=Ǯm;E@_WpmlU@Yʌ?S>+iޔX=bz!qK b^AqbAjb0?8{
v -[Hz;ּ\W0Qeq9I5?0x?Dveav -.{Ot'ȨW)Z0mnX}5:cu sjJ ->61"cP1nKs~⧵X}ͮQ&ѕlŐt!\Mo ^w}DcݾuGn\7cUYejx_gujO+#rtPdC֖%DT,f鋸I؞ɾ2
(@y<Kэ;eT -&݉CqH·DŒRsfV+֩q>K@B@4\3揯D$xVn -wύ^~r -(MO篱цOiw:&E3=B7<ދж/,CN
NJ8_;hC1't - P%Eȗуӂy5uJ+dY,IF<榵℣Z^`[0d?GYWM,kSսvν!&_)>~A
=i1~ od蒮b5T-Z_;ުq+yʹ0bH&M.Th&A{{a2NJh*;"G@+nQ8f4+}Mm1EKڱ]'>*[)Z4b:c@cK}
_aEƢ]=zpFݮ~Lb'#.}
?ՍG*Nny.Gq=UnIv$()LikJ
`ܝ)9<`D.^U26PZigS6%/QZndVE^%?7ojŷ$p_prD Ntn7.PX8B-ྲྀӡX~Mjp_~V^40r[AWr!l%mE_0?[j0&gvU[ai\1|zٚ"EtKĂEq:cďW֘o%vfvK:G
Rj
沑Πws/~Nˮk:-VM㖴#L7@~w;Tinn#Sxhd[q%lX6» -3 5\'m9<k<ڳ90%3"T#
g?NC?8Tsp1d\h)-/T5c9e_CpK]?剛c9o4JTw%+nșK%*84U,>IY3³GΰeokSX@97Dm
w٧DXN -~Җi~Nu.MLP1TWÀ9ȟ`77`O Q5`.\L-,S5iWQF-XE"#+b+E9:}>? -Q;G?
ħذG\ӗoċ,I6eC" .BB]ɞRH`VbohM}t5VҘK![Zc\~SejOՈ47;$WWp{ -\&_@zB)aZJ."IKK]]R`ƢeBT}>p靏KNNkWRwH)$_z{cCU{)w9ɕE9KYtVNp%- +ԧ㬌_ [1q@Yexq{LUF2$ -疌J Lg0b2q3O)1|g! -KVmU[ryaCBXo2"B!ؒ9VY7':OCUK?IX2lǜn>ZN~O5+@5ڷ_&q( -zg:$ռBQ0땶Q$hrb^%֤ROce\<,+@]! L>V.4$TQ~9QHLtN%[ ?#Zh~Y -Nx"5Aǹjꀸ?i -j-~aEnξ4Inp1v1̩zp53c=2f2bJ"A5/;D(#?iu -/2;F̀pmޑLAV\dˑb@:]:Q,e1f"4T9>+0B#GźـeƉF+_\H-{3UѳyݫhVqm|][rgECm饑M<ճ2z!Fi\NB'q+ϯ|یdtZj}}rYHXK]yƠZGBC+ɉM\Z*\k -"V-2.'|j?ZR]6Icu$FYK=p}dD R>
XS[Hx;S] 9ZT|݅u{cRܸٓG,F#ʣj&*
W̘SJHJ]eU|_$_ͮQ$!$g5~D(Iuz.)!_+to6Y +z힃l'hTA<5(R*֫.SGJSt/RAZ
9g&l<]wL(!JDw[khZ tYyMNf6<Yfܩlt/ -ea6Im==42{~~g`839IJ$̊k*]XD,̘L0VmU|<ʉC'wyap>QTڄ"ond_ G,j{)Mph Mڪk[c31nGy #jO=4x -",y ,M -iKAD
"(OZpL3j2R[g\FB@+嚘y$N4|?p->#}--\uo@|d 0GAnpgPZ'M 'iF\[ʑ IGS`'qh$!';IU$NmT斳Ht>I&'7YU|*N>bf;uX/3jy/
-gӺP-mOB5*TO|hp7 I'Îʋػ:j! MˏjclQoJշ}ui/j-{h;+`ykLlXUE. -O~daV
~)75 ]-seoEk>^ *<M2u - -6ph*ht@!|"[xUY41盂bĤaVD 4PƫʂPg q,{t?)/N%َo -oBiڗ8uRY -K[[CKV
{h{f'TqAqColU5bJf -)f.ƚ͵,T6>BkHob)f&5C
XF'~A
BY?keYR[$m1,yk%mQ\f>-NEY~ZKQ}Fh>7X`*Sw``=UyL@dA*Wui'<t
pV؝lKSzaX.~fΡ;\7&)R%J}!p <5İl]mމ5
qC7):i<N1[NѸ?FY#6LoI -t,SyR0̙En*?s -A,A0_&9O Ze3RnI.oE)
CqpGƾ9Sc+R'RygVi.M ~'gS SN)JJ6W MICpD
UcE|DuzzcPy)a{ɵDT*QDt&-M7WtCY2Ă:˘x%κC";hWȈ]y,9)oat_Y)\v]Cb1m;5ͫsQ.r[ 2-A3[-3D0ıffӷv1RMZYgtxtFRWdKdl&&.`N{a.z>&E'ӽnh >vq%ԟ@ L(O9 -
pkr}?x+Ʊ`W|)ӓxR?8;WN<Pr@!5EůUAei? ЖiK4:{lߏo}UO-B|;|֚son5H&(da08aQSz
Ab5b8y(gA22wmw{6Ta -YB%C#ZTeN~U֫&κf2;/Doܤ&tb -2^gت(!."Z٧v%{%<7%rA4Yül3F5쏢n2ӭ&D}vKu<@/ç"|f'nLz{"ꌤa@XcpEҢI]=Eg*{:R$ҥh;b;=,_0Ȥ:֚GaLN5=XW?ba~O_{bϓc.,_GYT+ rvs'#z`Ljp83^ OliJ4lvZۦuXe/x4rĹ[ź/vMvGd|&@J0[#O/&2[qC?6\B"GR:ިt%<` -Dic\2>!-O0LuF];2:<O_`1hgGHEVr-@,1,qn D>c7n<_p<m@BlƥRBGDúܥnEGM>t:gqɤ(0#ߔXTbN>R*0dI]2Hdh/pӸQ -i_-ܭ\mYޟ⅞{=Ȱ!ؖ eĭA:
.6g ,^>~ou<nb7EEfB}dQ=>7 䍮>WEKI<lԟCsHH{laJܦX"PM%".qHd%m~?"nFր~\lDyhzfzx-)aCπE X -J0Ly_q+rE' - -3RȇCj?} .rnKʼCZ(3R)Y"Y|َ&`NnSAewJB<F'
sE'k?hA/FnIKbCJ -QDp{Fgl3T!-j+&8`$&D]jۿ@ -D8mpQo\ۺv|8?sY}Id3qͿL5fW*Iou\(Tb -8hO\Y=Jj>={u}k
y94-"TK{ݴ+.+Z>ά~2X_AN
Od"maųs'dMݝCcSd&z)r3>15Ł*w_n훰2trIdsmyT;&u)-v>"W>IfҪG*qdo^;sͫɑS9]rR6xZ{߉RskQ4T~rwRi6J<_}K(\sRJs +xڬeTm-k447.CpgfΚs~o~}ծUWW QTa676102Ԕ5llLFf +NfF Ȍaf +53Xxxx( +a;r00s3 +>W(d(\Amrֽ.c_wi~HVʈHy7}᭺>IoXaW͖S8տ_$>bܷ<=jpYKk +V]%3r<5!z#lTfxH"fPUeWc%Mg@rW%v__7J ޡx6%x\5h=f'ˡrAoJӀВ=49qNH\gFK/2'QAt嵆,ߴs+Z%V0D]Z( +ƩlNvi^9q^UaD\pY-FEReQ^*B $g{E&Ψۺ
H6vyR[}EHSi+M%gb xA ϏѺ3;V@/ FAV8P^X/Û+:>-F~Ի:Xm* 3_jk͇"Aܓ:2+&ܣ$&k,_itwQ^\BU]| ot+da@lMv<T3ptl]qc_? +sh1ɜTUKچO1=-SGHi*9/c
Ao5goG]%2!>18lS0~ 4p}5FuU7tDg|/NJc
?K9J(6w|CB'u;02{ ioQSs+; +y-)K/?8|L#YGuClțjBdp{kziaJDEpFŰ$~M25Ò-S!-|[;EȨ2ȍFbzKקz*)]IyaKi5} 04qXwdŮSͥԮ?CR0&T˪(6!X~xH3e}f3 _(HR*kaΒ&ڎ%zGY>}C +"eD}W:ft""M.<oFň@۳]Zhs%D=*q>Wbz:/0)7wo2Dj=y<"njT'8kL擠Hi<wT},vfuC_Le+k3_ѱ&JC#CTT2h@[aKŊ[=o.Zc;HâKgQ]2=y0[w%{'vr _ks(;6:YסquQnDs{9-vcOڸS퍙9D48_*U4ދu ?T#섹,8djQ\e]FbO<qkxhၙ>Z5 ThLV
r9<3Ec"g2Y8)̔R
缐z)U^|@ʰ#xjx$Fjτa+2}N_a/)lg71h#Яwzj:YtC&G!{hBJ[ r +!!XGUjaj1B9EA +)%3tIسsfLvj5ֶ0+T8}J~ +,ڌE@hٴ:λVH<Zy{X2h.\E]?5J`QdB+,߆ϭ?sP7oXW$yE%{qѴєqPc~(^3~pZ +K.UiTci]&;]1;&33#5' 9
KB/:nW#9E?oy9Iĭ0 ÕO"7x +<)-:\LqM毞s Lz,Gi_'}y9y
77%Hmt
iz3,@.}QL
mx闛D62.E9h.~x38:~X[ +Rn~ixTEmmMh{&<c]5}/hzD`w ~8fZlU(Scx|oHwHTp\dYUKrE;R90HKGՃ7GJ;^g⩅as&siWE<v- Φ=7%"TJ`v<?&}KTޣF
+Jc/X3ݲEdڗSS傠բ2 +9VyGIhď{KFЂ㔥}Ux&eM'ZՎ`n|9lW2^M&<M$P#d?Kg ^IhXY@p/M͠%\x +c%Ng++w'6 ?VGw v+۲棋揌QJM'y <l% h
wexx}k[[kr䔷t?0E?ۥe%`;v|e:|9]ÌQ_@qb;$jyZ1DiY>wmݎ0#ɲq]붒ECL'I t$ҟ&Rytnd@0EjSTh@)DD\QcFϨ6obë7^ꗅ5Iٙ}-o#H :Cc
+aDmߎ1.~_rIE9h8c]h&B@_-1Wԥn
.d?ɞuw`8 +u2V"jUD+Cl2,0(<ܫX\ꃐI~7=I˴Lkr_5BP,܀R)5`6h9|ҒDL[j-J"4yB>gͱ1Zh*Muޅ(/<S4U"Y~J"iN$\s~Xb|"H^f0ھtc'q +QeV<J2Z~1CEUFqƐ.Q /4GJN5X&U1DH/H|^|ۧЬuq0eΐF4#b +b䢳sel
{a[N
踵 +"iQ +*߄Ơl-5RsI! ^d}M#jSn|\glm!Du93EMsvT]'*.vm1eC&Z'K"O=^7 مZo~>ЊH̤w/U4۠y/E$7p
4%?ef1:@k^5S#J.k.ZKa
}גj7(8FHJt*TT/}q䐕&{P|g{VS!'`Q %k2#}M,я;̍b*,l ªΔoݼڈJ(YԚ^ƣ%rwt[_m*kCUuoNžoW +|+@Yv֒߭+bNEb/-~}" +YL+{ +ԽqدG: +E-
uK|Fb<N(]Ɛ/6O0=juicjswl +۞ .
y:a*bs5!DdUrt}nz8cr{C羬Ʋ=Vxl)o͢Nj>FUpjBә+p'-I :p^PZt+S&IaY^luo㸘ux +0S/M$ɹOv8/sFZA{ʱ,z^g8|:zWC+J;!C[skB"9 |-&AhFǓ}~;EchD7Q +J<ZnaҲ.O%ت2eer`{-eb +1"eE 99N
^㒷oJ6h"x*4LLPU!HUޙD(ws6oyJ.aِƆZz`b9=SGv%nI$Ͼx +P9ZX`uoEUB,N8,U)~50ܲ0XPT[8Vy&=dg!w݃]Y.zӺ:G֬ Ig Βe2C%n|֎:oΜ_X|Z?J +"3hHZbI4l'4FCu -=eX2$zVW-X%'JM?o2ux*Bl]lV(BnWLnP5>#2`#]i@"h<hl.Cw$k3Xo"ݽe3|ҥ,tCP"IX`<PLc2Hx5T
O;VXvfa"U$pX'vInstQ0VֿH(ma&`"P'CDֱ{#V o$U(*ۯ=:Փ8,abR\<MцӧeUa9@0T%X% R1C{OxLO3K_= H@YШ(uU #kկ?J
\(\}!he_5@r"=d_tʯgEbGLO$81DKY`UA
̴b'ρvԙ!sq1ZˏhYLvRGY)ݦfzLv@6) ӏH$=T75cJ@0sn<-c+&',.\<t
iIN_z,~hcքO<'>Enw( +)Y٨L W +BUt7:c&nnvKtbD3r+ap8m<q.a1ڹBiZQ2c'`O&zK#S"e®3c.D,S +Y.t9Zb{
嬔QY?YYYWEԙqk +yB 5
+=a#+U}M:p>fJۯymͼ},˂ +( EKAl liJ}{^{QPcS'!1u^dL +pFrdUD +q4`w6r0.иJ&mb ( +Dܩ|Ȍ2'ᑡ6ؓ;;Zt==HC@Oo-Ў; m@ JWߔd(}`Esz`[Gy{-ޭ7Or;ɐSzt{e߁CKNuQTos<uEKJÿ
Jh¤J0b=WMr7
rU?J0túx */!CS@urj1Xguu/sepm-~#yfJcfj` K/>Z vZK/eUNB)4|C/;~Y"Y."vo6̡c\hZvO)mY6,Z +穇1X_FH,@QM6Jvi))gVlkj}C3)X6)4NԾC?YձmC;E*q\h=u]w+̬ +lp/Lzӑ P}5"wxs]듛PLa7m.8q5lɝŢHu.A4^xsxxGOv^9-g ol)Ml9k*K!5[/QA}@~uR +pq6-t/bEk}n+[ +ʩ>us.:Rgj@ٸU`s<; +fNRtCalbɚRfQtFr5+sҔ4GU̜ɣw VoF>$afH't jإݥD(-%~U::ct.pS-d+MSfenOBo?FMu$Â"G}}mpMؔ1UXj<0'KyY)nmS&0 䵋P4y Fu\w#U|"߂йBT
ך4|:'.jD2=WhhTuxQn)S)oȪpާ6 4erZdYԮocr +Sr$Ƥ$<%
Ϻ0k5G` +X#vdM65JF<IPZqT84SspsN[:zW3Xє>5bfGdpOFR ++S XCڤA<PoF'ot[60N;g~-
&i[zO4k^.=y6NTʤ܉E$Ƭ2adYrZNR)RǍ0(t|nGXIEH&j$JpԼ4d4@ϸj%z+vdr[@)ܲ^SȳaMxd;MDJӔejB5/ekLy>lm56A,q$<e2ҬSR.#(对ND&|~{YA NE7%* 3Idg9xvP]ʨ}7dhug8m +]*t [/?!vl]n,>2@.\[pYƾQ?ʦ 1oݬY2_d(BUElR
ur:c-sH'1j4Oo_!5E#5Uaq!hUA_ͶDly27$pE.PhP%RXW.%2T~
jKEl<~$$[ntNDʋ>ڈp"@XcduzE勲Sq(Pxurǂp塢1?_qq(n#iDVjnfrM,D9Ζ#?!_E&Jn@jZJ$hd8.DsZhoH +vr{Sԇ'qVy7[she /u.EVd]y.$$7]쉯EGu{ɉ r-Q\VygGv?MKi)S:P$4ur(o'p6Ng[p'@x6*ǪNQHrՅ?iS't$4h-yXEZh2 +aB-Av6Uh\ᗢaմindud֦BNϲInaVT6pG}Rz{_Z>9bRjx[uO#BCn"6.DɷW
#^d֢/&˿ȊPZ,Z8hwqk5G.It8@ h\[25-")}d6{]ꕰ[جs[3Z_N~ue_whe=/pf+u^N־'?H½TjAf[9E1Om.kX;Hn-2p}Rù,A
qǜY2m"883b
bgDI57u-LW<u"("!UcP+NsBFؗ09+}~zb
h?Pd +.?| gc}QMߪf +,bGA{G֟-+S1;vιfoمǍgeI3S@jH+^W|m=Jr(g;@s wd1Fɔlsyl#[axyV<9O6dY籄dB_|IYmB#&MUd\!tXQ!,+Ʉ2>|X;KsF?/dpx\Qwv-N@ 93Ϊ(E}jN_*.=F~[7^IL6x2TDI_\Ф́R{BHdicRjq,<%D
URoF$ٞqnTY{Y$hzu_ +8Ϥ$IIuG|1 5]Iu'6#PB6J*%3ٹhWݑ<Lz5#6So8x}AT,=p4ByV=B^1.q2pEQY8Vl +0W"Px[`bOjg +UsU1}rnT߂T?C55ʨխw6cbZbӭiZm{qm!/j)C8/[pnP,Hm0G@J@{ +$J2A=f;[ϬSWV^}m/e<+ET">^Xo/^Zanݭ=Zn,}=C|_Vub5P̟Y#TfChz[!6 %DD+Ԋ`@c4V
+@ɤ8>WZ,*64Ւd|v#MWQzA:5)y?xPqb]Qc Z]+(N$,%-gM]>UWڱ
Ӓ#,~Bc ^$~M]T#rin +<0~)`WRo'Ode +[؞yOKG)$1.9R?A #@վ +$& 3=kRJ[R!|6b%OOD?%`p`iCэVۄ]-sArC ixzg(P2+C'"1t1ld>hy)i"Aϥ+-b*Gleεڂ_CЯ@p +R*8b |nq)5OƎde)Y!ԸO|@pWkyp)x(s~L{YƼϝ楽Iڞt-0A::p=ϓ +3d8$3:m~ N4dؚ:BdJ_ ҤE~̃č\^;Z(WЏmMόXv%8EW0s>d߀F;y?(/s/=)bY|{cV~Ihot>\Ih<¾*lG:)^2y~oކzRvߴ2Pw-8.P7A@reꚝl-"2htZ,4}r\2 K4
rhsc{JͬN,&.W?b^5`"ש/$v_&n_,Q(91KBƔf6N̪-g1\y,}}~5#=b-J^>F1vŎl +i +ϙws@MMXvEu9~ۤk?yg{;O۫Y$3i#n8ov7}?sȩp.`fOaK<N=|uD^(DM?TCx;)gEN/۾}%JQ9E%E\ endobj 1042 0 obj << /Type /Font @@ -14560,14 +14563,14 @@ endobj /FirstChar 35 /LastChar 90 /Widths 2837 0 R -/BaseFont /QJSNCC+URWPalladioL-Roma-Slant_167 +/BaseFont /KJJXFG+URWPalladioL-Roma-Slant_167 /FontDescriptor 1040 0 R >> endobj 1040 0 obj << /Ascent 715 /CapHeight 680 /Descent -282 -/FontName /QJSNCC+URWPalladioL-Roma-Slant_167 +/FontName /KJJXFG+URWPalladioL-Roma-Slant_167 /ItalicAngle -9 /StemV 84 /XHeight 469 @@ -14583,20 +14586,17 @@ endobj /Length1 862 /Length2 1251 /Length3 532 -/Length 1860 +/Length 1861 /Filter /FlateDecode >> stream xUkTgnJ+ŀ -2@ &X4-wDP2$H20I0@,PAEJi -& X -Kڳ3}{g;33&H -Cb"a -WJ}es0'dbcх| 6D5uyR -`>3l^;!ePq` h b?5߄, B[sx`X -p!)$:"sRݫWcxSzKGW -Y'un_N^VTOm"x#dk^Y2N|45|m{6lйƹn퍖^',M7x>rqڸ;Y0="4sQ;h}D(V#*Q}z&TgҙXoi癩e|宅k2f\-O$em4v1j{h}MQ0yzőZG>?W)UbC5{DWsCrz=Pw^ZniWɕYY- ?<n}{ox{:~Pp_idF2uy%suZQ&QDZQFgx_5q8'9L
-)[5V:lny`wllD7UJ*ƶbu$p}(5iQBCG\$!7!M~9)k)D_uojn=h;wB٘jUfNQօZ[!CZ ~OCM o^͆D$'=``l$4L}0sv|*Fo:(G3#?ꎜJu1kVNmM8+DsrI쎐z4'&KW-X؛[yO>7h]*FZendstream +2@ ,K +!l`6O"X2ra +XgB +Pa'@4lX +R1(D +VҚЇgٶwz[\Ywqn[{ Kv5߄xܹu6.Nĭ{&^f8jMCpsĩJyT=#_84Ywt&-0a;c3_yhᚌn˓+I{]Zs_nnr}L^uq֠=с*eˡЂ\=O¿9w endobj 980 0 obj << /Type /Font @@ -14605,14 +14605,14 @@ endobj /FirstChar 13 /LastChar 110 /Widths 2839 0 R -/BaseFont /LSCUAM+CMSY10 +/BaseFont /ZNLINP+CMSY10 /FontDescriptor 978 0 R >> endobj 978 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 -/FontName /LSCUAM+CMSY10 +/FontName /ZNLINP+CMSY10 /ItalicAngle -14.035 /StemV 85 /XHeight 431 @@ -14636,7 +14636,7 @@ endobj /Filter /FlateDecode >> stream -xڬc]%\],۶mvuٶm۶lWm}ܹ̯G8;v>'z2@^FD։&o`mm`la'Mhgc +xڬc]%\],۶mvuٶm۶lWm}ܹ̯G8;v>'z2@^FD։&o`mm`la'Mhgc UZRR_&ޟfx%3EsCB0TU?ܡhVmT8Z䂁۰ :I?z"6b^% yh}Zypӂu=j 3\xa(74nR&cxaYKܿ~ػբIXiS2 Glk՛$I<*;:̽PT1]ow0~,AO%/dcck{GK̑j(+BUD#6:M%sI;v#wRUB&% (cZB/7'|8}Z6*DLik'/rnX60!~aގا*\Dxc(u?^NWCV Q[5vȈ0K^v*Vc
(p3Mi|#Ӄ}5ByEyޢ<^<;>3 ;V<g5jIHCaT @@ -14739,7 +14739,7 @@ P3)lm;5|+Tv_F^bQLT?yǥbewA !dY]m[ )1p}l٤1nQ:96(+<47Q|F1#\l1,?7e7n<Ʉ3ӛrhNBRC ^[!ĊxMcOݗPFt>lJF1xDv h rfYUzifUz*JfUޠ|:(Pk<Wo*]gP,Fj%;ɘ9L9.DǦ@sOhڳBts~)-A -ГVMͲ:mWB/ 5 +ГVMͲ:mWB/ 5 endobj 977 0 obj << /Type /Font @@ -14748,14 +14748,14 @@ endobj /FirstChar 2 /LastChar 216 /Widths 2840 0 R -/BaseFont /JTEWKS+URWPalladioL-Roma +/BaseFont /ARQOPU+URWPalladioL-Roma /FontDescriptor 975 0 R >> endobj 975 0 obj << /Ascent 715 /CapHeight 680 /Descent -282 -/FontName /JTEWKS+URWPalladioL-Roma +/FontName /ARQOPU+URWPalladioL-Roma /ItalicAngle 0 /StemV 84 /XHeight 469 @@ -14778,7 +14778,7 @@ stream xڬzce߳eU]e۶m[lvm۶mrMOop"̽re;8dD ʴ& CF&hjl 1t6"T75!15&db"d!#{8Z[8RŠ/?!F
/FeSSBgSB3KSBayMI9qB -q9UBqS;SGCB#KcBKcS;'SJB3#Ϳ-v&DKЉА6SwcS\4NN -
@higlbv3;FS +q9UBqS;SGCB#KcBKcS;'SJB3#Ϳ-v&DKЉА6SwcS\4NN -
@higlbv3;FS fH{1Ycgl i0W}4tE&tZ\&E#/(/25C{-o8J<qԧ
- 㼑a1@x"ՃHQzHH<t{,ȸʷK3/YtyW"Soh}oSOwMOY%9 @@ -14878,7 +14878,7 @@ _fZYX/JPUб;þ5~M~;-5$`30npEb89qZ| !mYgKB}Z
= UW䉊tC^W Qݛl6;E& .*Kc):+u=tb'": EPjA E@
o`iqKQ`_`+|,33yGa#^Bݮ8OU3&]J$h
YH<(| Hhtc YjCorpagnj/#;C7]c|I4ak3|M&h}LfݤTR8g¤=&A >dC{z-67Tܧ
p"(`h/w7Ȕ
U6S
+T~T&֪I z{Nʀ6qZ(X(Zy~ťِʛH# -5O3U.)
@XK`0A2?1*\& Ese`-_}t`C;]t:#?=*reZN -a:-;""ȶ'(bP$&&ydG<#{BTd/Y`(JsmjdѦ#]CdH
A/6N# +5O3U.)
@XK`0A2?1*\& Ese`-_}t`C;]t:#?=*reZN -a:-;""ȶ'(bP$&&ydG<#{BTd/Y`(JsmjdѦ#]CdH
A/6N# endobj 954 0 obj << /Type /Font @@ -14887,14 +14887,14 @@ endobj /FirstChar 2 /LastChar 151 /Widths 2841 0 R -/BaseFont /WIWHEG+URWPalladioL-Bold +/BaseFont /SMOMGB+URWPalladioL-Bold /FontDescriptor 952 0 R >> endobj 952 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 -/FontName /WIWHEG+URWPalladioL-Bold +/FontName /SMOMGB+URWPalladioL-Bold /ItalicAngle 0 /StemV 123 /XHeight 471 @@ -16860,7 +16860,7 @@ endobj >> endobj 2854 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() -/CreationDate (D:20140110170939Z) +/CreationDate (D:20140117011504Z) /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) >> endobj xref @@ -16872,943 +16872,943 @@ xref 0000000000 00000 f 0000000009 00000 n 0000349948 00000 n -0001233137 00000 n +0001233140 00000 n 0000000054 00000 n 0000000086 00000 n 0000350075 00000 n -0001233065 00000 n +0001233068 00000 n 0000000133 00000 n 0000000173 00000 n 0000350203 00000 n -0001232979 00000 n +0001232982 00000 n 0000000221 00000 n 0000000273 00000 n 0000350331 00000 n -0001232893 00000 n +0001232896 00000 n 0000000321 00000 n 0000000377 00000 n 0000354617 00000 n -0001232783 00000 n +0001232786 00000 n 0000000425 00000 n 0000000478 00000 n 0000354744 00000 n -0001232709 00000 n +0001232712 00000 n 0000000531 00000 n 0000000572 00000 n 0000354872 00000 n -0001232622 00000 n +0001232625 00000 n 0000000625 00000 n 0000000674 00000 n 0000354999 00000 n -0001232535 00000 n +0001232538 00000 n 0000000727 00000 n 0000000757 00000 n 0000359296 00000 n -0001232411 00000 n +0001232414 00000 n 0000000810 00000 n 0000000861 00000 n 0000359424 00000 n -0001232337 00000 n +0001232340 00000 n 0000000919 00000 n 0000000964 00000 n 0000359552 00000 n -0001232250 00000 n +0001232253 00000 n 0000001022 00000 n 0000001062 00000 n 0000359680 00000 n -0001232176 00000 n +0001232179 00000 n 0000001120 00000 n 0000001162 00000 n 0000362665 00000 n -0001232052 00000 n +0001232055 00000 n 0000001215 00000 n 0000001260 00000 n 0000362793 00000 n -0001231991 00000 n +0001231994 00000 n 0000001318 00000 n 0000001355 00000 n 0000362921 00000 n -0001231917 00000 n +0001231920 00000 n 0000001408 00000 n 0000001463 00000 n 0000365868 00000 n -0001231792 00000 n +0001231795 00000 n 0000001509 00000 n 0000001556 00000 n 0000365996 00000 n -0001231718 00000 n +0001231721 00000 n 0000001604 00000 n 0000001648 00000 n 0000366124 00000 n -0001231631 00000 n +0001231634 00000 n 0000001696 00000 n 0000001735 00000 n 0000366252 00000 n -0001231544 00000 n +0001231547 00000 n 0000001783 00000 n 0000001825 00000 n 0000366379 00000 n -0001231457 00000 n +0001231460 00000 n 0000001873 00000 n 0000001936 00000 n 0000367456 00000 n -0001231383 00000 n +0001231386 00000 n 0000001984 00000 n 0000002034 00000 n 0000369115 00000 n -0001231255 00000 n +0001231258 00000 n 0000002080 00000 n 0000002126 00000 n 0000369242 00000 n -0001231142 00000 n +0001231145 00000 n 0000002174 00000 n 0000002218 00000 n 0000369370 00000 n -0001231066 00000 n +0001231069 00000 n 0000002271 00000 n 0000002323 00000 n 0000369498 00000 n -0001230989 00000 n +0001230992 00000 n 0000002377 00000 n 0000002436 00000 n 0000371947 00000 n -0001230898 00000 n +0001230901 00000 n 0000002485 00000 n 0000002523 00000 n 0000375285 00000 n -0001230781 00000 n +0001230784 00000 n 0000002572 00000 n 0000002618 00000 n 0000375413 00000 n -0001230663 00000 n +0001230666 00000 n 0000002672 00000 n 0000002739 00000 n 0000375541 00000 n -0001230584 00000 n +0001230587 00000 n 0000002798 00000 n 0000002842 00000 n 0000375670 00000 n -0001230505 00000 n +0001230508 00000 n 0000002901 00000 n 0000002949 00000 n 0000382656 00000 n -0001230426 00000 n +0001230429 00000 n 0000003003 00000 n 0000003036 00000 n 0000388281 00000 n -0001230293 00000 n +0001230296 00000 n 0000003083 00000 n 0000003126 00000 n 0000388410 00000 n -0001230214 00000 n +0001230217 00000 n 0000003175 00000 n 0000003205 00000 n 0000388539 00000 n -0001230082 00000 n +0001230085 00000 n 0000003254 00000 n 0000003292 00000 n 0000393048 00000 n -0001230017 00000 n +0001230020 00000 n 0000003346 00000 n 0000003388 00000 n 0000393177 00000 n -0001229924 00000 n +0001229927 00000 n 0000003437 00000 n 0000003496 00000 n 0000393306 00000 n -0001229792 00000 n +0001229795 00000 n 0000003545 00000 n 0000003578 00000 n 0000397225 00000 n -0001229727 00000 n +0001229730 00000 n 0000003632 00000 n 0000003681 00000 n 0000400239 00000 n -0001229595 00000 n +0001229598 00000 n 0000003730 00000 n 0000003758 00000 n 0000403019 00000 n -0001229477 00000 n +0001229480 00000 n 0000003812 00000 n 0000003881 00000 n 0000403148 00000 n -0001229398 00000 n +0001229401 00000 n 0000003940 00000 n 0000003988 00000 n 0000403276 00000 n -0001229319 00000 n +0001229322 00000 n 0000004047 00000 n 0000004092 00000 n 0000403405 00000 n -0001229226 00000 n +0001229229 00000 n 0000004146 00000 n 0000004214 00000 n 0000403534 00000 n -0001229133 00000 n +0001229136 00000 n 0000004268 00000 n 0000004338 00000 n 0000407203 00000 n -0001229040 00000 n +0001229043 00000 n 0000004392 00000 n 0000004455 00000 n 0000407332 00000 n -0001228947 00000 n +0001228950 00000 n 0000004509 00000 n 0000004564 00000 n 0000407460 00000 n -0001228868 00000 n +0001228871 00000 n 0000004618 00000 n 0000004650 00000 n 0000407588 00000 n -0001228775 00000 n +0001228778 00000 n 0000004699 00000 n 0000004727 00000 n 0000411357 00000 n -0001228682 00000 n +0001228685 00000 n 0000004776 00000 n 0000004808 00000 n 0000411486 00000 n -0001228550 00000 n +0001228553 00000 n 0000004857 00000 n 0000004887 00000 n 0000411615 00000 n -0001228471 00000 n +0001228474 00000 n 0000004941 00000 n 0000004982 00000 n 0000415413 00000 n -0001228378 00000 n +0001228381 00000 n 0000005036 00000 n 0000005078 00000 n 0000415542 00000 n -0001228299 00000 n +0001228302 00000 n 0000005132 00000 n 0000005177 00000 n 0000420866 00000 n -0001228166 00000 n +0001228169 00000 n 0000005226 00000 n 0000005294 00000 n 0000420995 00000 n -0001228087 00000 n +0001228090 00000 n 0000005348 00000 n 0000005408 00000 n 0000421124 00000 n -0001227994 00000 n +0001227997 00000 n 0000005462 00000 n 0000005513 00000 n 0000425392 00000 n -0001227901 00000 n +0001227904 00000 n 0000005567 00000 n 0000005621 00000 n 0000428374 00000 n -0001227808 00000 n +0001227811 00000 n 0000005675 00000 n 0000005721 00000 n 0000428503 00000 n -0001227715 00000 n +0001227718 00000 n 0000005775 00000 n 0000005817 00000 n 0000428632 00000 n -0001227622 00000 n +0001227625 00000 n 0000005871 00000 n 0000005922 00000 n 0000428761 00000 n -0001227529 00000 n +0001227532 00000 n 0000005976 00000 n 0000006025 00000 n 0000431520 00000 n -0001227436 00000 n +0001227439 00000 n 0000006079 00000 n 0000006136 00000 n 0000431649 00000 n -0001227343 00000 n +0001227346 00000 n 0000006190 00000 n 0000006245 00000 n 0000431778 00000 n -0001227250 00000 n +0001227253 00000 n 0000006300 00000 n 0000006356 00000 n 0000431906 00000 n -0001227157 00000 n +0001227160 00000 n 0000006411 00000 n 0000006472 00000 n 0000432034 00000 n -0001227064 00000 n +0001227067 00000 n 0000006527 00000 n 0000006573 00000 n 0000432163 00000 n -0001226985 00000 n +0001226988 00000 n 0000006628 00000 n 0000006671 00000 n 0000436027 00000 n -0001226853 00000 n +0001226856 00000 n 0000006721 00000 n 0000006777 00000 n 0000436156 00000 n -0001226774 00000 n +0001226777 00000 n 0000006832 00000 n 0000006878 00000 n 0000436285 00000 n -0001226695 00000 n +0001226698 00000 n 0000006933 00000 n 0000006980 00000 n 0000439687 00000 n -0001226563 00000 n +0001226566 00000 n 0000007030 00000 n 0000007087 00000 n 0000439816 00000 n -0001226445 00000 n +0001226448 00000 n 0000007142 00000 n 0000007182 00000 n 0000442484 00000 n -0001226366 00000 n +0001226369 00000 n 0000007242 00000 n 0000007315 00000 n 0000442613 00000 n -0001226273 00000 n +0001226276 00000 n 0000007375 00000 n 0000007448 00000 n 0000445330 00000 n -0001226194 00000 n +0001226197 00000 n 0000007508 00000 n 0000007565 00000 n 0000447722 00000 n -0001226062 00000 n +0001226065 00000 n 0000007620 00000 n 0000007678 00000 n 0000447851 00000 n -0001225983 00000 n +0001225986 00000 n 0000007738 00000 n 0000007815 00000 n 0000447980 00000 n -0001225890 00000 n +0001225893 00000 n 0000007875 00000 n 0000007952 00000 n 0000448109 00000 n -0001225811 00000 n +0001225814 00000 n 0000008012 00000 n 0000008071 00000 n 0000448238 00000 n -0001225718 00000 n +0001225721 00000 n 0000008126 00000 n 0000008170 00000 n 0000450869 00000 n -0001225625 00000 n +0001225628 00000 n 0000008225 00000 n 0000008265 00000 n 0000453677 00000 n -0001225532 00000 n +0001225535 00000 n 0000008320 00000 n 0000008388 00000 n 0000453806 00000 n -0001225453 00000 n +0001225456 00000 n 0000008443 00000 n 0000008514 00000 n 0000457867 00000 n -0001225335 00000 n +0001225338 00000 n 0000008564 00000 n 0000008611 00000 n 0000457996 00000 n -0001225256 00000 n +0001225259 00000 n 0000008666 00000 n 0000008727 00000 n 0000458125 00000 n -0001225177 00000 n +0001225180 00000 n 0000008782 00000 n 0000008852 00000 n 0000460610 00000 n -0001225044 00000 n +0001225047 00000 n 0000008899 00000 n 0000008952 00000 n 0000460739 00000 n -0001224965 00000 n +0001224968 00000 n 0000009001 00000 n 0000009057 00000 n 0000460868 00000 n -0001224886 00000 n +0001224889 00000 n 0000009106 00000 n 0000009155 00000 n 0000465138 00000 n -0001224753 00000 n +0001224756 00000 n 0000009202 00000 n 0000009254 00000 n 0000465267 00000 n -0001224635 00000 n +0001224638 00000 n 0000009303 00000 n 0000009354 00000 n 0000473691 00000 n -0001224517 00000 n +0001224520 00000 n 0000009408 00000 n 0000009453 00000 n 0000473820 00000 n -0001224438 00000 n +0001224441 00000 n 0000009512 00000 n 0000009546 00000 n 0000473949 00000 n -0001224359 00000 n +0001224362 00000 n 0000009605 00000 n 0000009653 00000 n 0000474078 00000 n -0001224241 00000 n +0001224244 00000 n 0000009707 00000 n 0000009747 00000 n 0000476611 00000 n -0001224162 00000 n +0001224165 00000 n 0000009806 00000 n 0000009840 00000 n 0000476740 00000 n -0001224083 00000 n +0001224086 00000 n 0000009899 00000 n 0000009947 00000 n 0000476869 00000 n -0001223950 00000 n +0001223953 00000 n 0000009996 00000 n 0000010046 00000 n 0000480110 00000 n -0001223871 00000 n +0001223874 00000 n 0000010100 00000 n 0000010147 00000 n 0000480238 00000 n -0001223778 00000 n +0001223781 00000 n 0000010201 00000 n 0000010261 00000 n 0000485595 00000 n -0001223685 00000 n +0001223688 00000 n 0000010315 00000 n 0000010367 00000 n 0000485724 00000 n -0001223592 00000 n +0001223595 00000 n 0000010421 00000 n 0000010486 00000 n 0000489194 00000 n -0001223499 00000 n +0001223502 00000 n 0000010540 00000 n 0000010591 00000 n 0000489323 00000 n -0001223406 00000 n +0001223409 00000 n 0000010645 00000 n 0000010709 00000 n 0000489452 00000 n -0001223313 00000 n +0001223316 00000 n 0000010763 00000 n 0000010810 00000 n 0000489581 00000 n -0001223220 00000 n +0001223223 00000 n 0000010864 00000 n 0000010924 00000 n 0000489709 00000 n -0001223127 00000 n +0001223130 00000 n 0000010978 00000 n 0000011029 00000 n 0000493408 00000 n -0001222995 00000 n +0001222998 00000 n 0000011084 00000 n 0000011149 00000 n 0000493537 00000 n -0001222916 00000 n +0001222919 00000 n 0000011209 00000 n 0000011256 00000 n 0000500377 00000 n -0001222823 00000 n +0001222826 00000 n 0000011316 00000 n 0000011364 00000 n 0000507238 00000 n -0001222744 00000 n +0001222747 00000 n 0000011424 00000 n 0000011478 00000 n 0000513667 00000 n -0001222651 00000 n +0001222654 00000 n 0000011533 00000 n 0000011583 00000 n 0000513796 00000 n -0001222558 00000 n +0001222561 00000 n 0000011638 00000 n 0000011701 00000 n 0000513925 00000 n -0001222465 00000 n +0001222468 00000 n 0000011756 00000 n 0000011808 00000 n 0000514054 00000 n -0001222372 00000 n +0001222375 00000 n 0000011863 00000 n 0000011928 00000 n 0000514183 00000 n -0001222279 00000 n +0001222282 00000 n 0000011983 00000 n 0000012035 00000 n 0000520931 00000 n -0001222146 00000 n +0001222149 00000 n 0000012090 00000 n 0000012155 00000 n 0000541866 00000 n -0001222067 00000 n +0001222070 00000 n 0000012215 00000 n 0000012259 00000 n 0000567381 00000 n -0001221974 00000 n +0001221977 00000 n 0000012319 00000 n 0000012358 00000 n 0000567509 00000 n -0001221881 00000 n +0001221884 00000 n 0000012418 00000 n 0000012465 00000 n 0000570958 00000 n -0001221788 00000 n +0001221791 00000 n 0000012525 00000 n 0000012568 00000 n 0000575288 00000 n -0001221695 00000 n +0001221698 00000 n 0000012628 00000 n 0000012667 00000 n 0000579035 00000 n -0001221602 00000 n +0001221605 00000 n 0000012727 00000 n 0000012769 00000 n 0000581953 00000 n -0001221509 00000 n +0001221512 00000 n 0000012829 00000 n 0000012872 00000 n 0000589425 00000 n -0001221416 00000 n +0001221419 00000 n 0000012932 00000 n 0000012975 00000 n 0000593613 00000 n -0001221323 00000 n +0001221326 00000 n 0000013035 00000 n 0000013096 00000 n 0000593741 00000 n -0001221230 00000 n +0001221233 00000 n 0000013157 00000 n 0000013209 00000 n 0000597768 00000 n -0001221137 00000 n +0001221140 00000 n 0000013270 00000 n 0000013323 00000 n 0000601352 00000 n -0001221044 00000 n +0001221047 00000 n 0000013384 00000 n 0000013422 00000 n 0000601480 00000 n -0001220951 00000 n +0001220954 00000 n 0000013483 00000 n 0000013535 00000 n 0000604708 00000 n -0001220858 00000 n +0001220861 00000 n 0000013596 00000 n 0000013640 00000 n 0000608315 00000 n -0001220765 00000 n +0001220768 00000 n 0000013701 00000 n 0000013737 00000 n 0000616760 00000 n -0001220672 00000 n +0001220675 00000 n 0000013798 00000 n 0000013861 00000 n 0000620505 00000 n -0001220579 00000 n +0001220582 00000 n 0000013922 00000 n 0000013972 00000 n 0000627454 00000 n -0001220486 00000 n +0001220489 00000 n 0000014033 00000 n 0000014089 00000 n 0000632152 00000 n -0001220393 00000 n +0001220396 00000 n 0000014150 00000 n 0000014197 00000 n 0000636382 00000 n -0001220300 00000 n +0001220303 00000 n 0000014258 00000 n 0000014326 00000 n 0000643421 00000 n -0001220221 00000 n +0001220224 00000 n 0000014387 00000 n 0000014439 00000 n 0000652184 00000 n -0001220128 00000 n +0001220131 00000 n 0000014494 00000 n 0000014545 00000 n 0000656910 00000 n -0001220035 00000 n +0001220038 00000 n 0000014600 00000 n 0000014664 00000 n 0000662275 00000 n -0001219942 00000 n +0001219945 00000 n 0000014719 00000 n 0000014783 00000 n 0000662404 00000 n -0001219849 00000 n +0001219852 00000 n 0000014838 00000 n 0000014915 00000 n 0000666004 00000 n -0001219756 00000 n +0001219759 00000 n 0000014970 00000 n 0000015027 00000 n 0000666133 00000 n -0001219663 00000 n +0001219666 00000 n 0000015082 00000 n 0000015152 00000 n 0000666262 00000 n -0001219570 00000 n +0001219573 00000 n 0000015207 00000 n 0000015264 00000 n 0000666391 00000 n -0001219477 00000 n +0001219480 00000 n 0000015319 00000 n 0000015389 00000 n 0000670697 00000 n -0001219384 00000 n +0001219387 00000 n 0000015444 00000 n 0000015493 00000 n 0000670826 00000 n -0001219291 00000 n +0001219294 00000 n 0000015548 00000 n 0000015610 00000 n 0000673452 00000 n -0001219198 00000 n +0001219201 00000 n 0000015665 00000 n 0000015714 00000 n 0000681437 00000 n -0001219080 00000 n +0001219083 00000 n 0000015769 00000 n 0000015831 00000 n 0000681566 00000 n -0001219001 00000 n +0001219004 00000 n 0000015891 00000 n 0000015930 00000 n 0000688820 00000 n -0001218908 00000 n +0001218911 00000 n 0000015990 00000 n 0000016024 00000 n 0000688948 00000 n -0001218815 00000 n +0001218818 00000 n 0000016084 00000 n 0000016125 00000 n 0000710733 00000 n -0001218736 00000 n +0001218739 00000 n 0000016185 00000 n 0000016237 00000 n 0000721255 00000 n -0001218604 00000 n +0001218607 00000 n 0000016286 00000 n 0000016319 00000 n 0000721384 00000 n -0001218486 00000 n +0001218489 00000 n 0000016373 00000 n 0000016445 00000 n 0000721513 00000 n -0001218407 00000 n +0001218410 00000 n 0000016504 00000 n 0000016548 00000 n 0000732115 00000 n -0001218328 00000 n +0001218331 00000 n 0000016607 00000 n 0000016660 00000 n 0000732504 00000 n -0001218235 00000 n +0001218238 00000 n 0000016714 00000 n 0000016764 00000 n 0000736346 00000 n -0001218142 00000 n +0001218145 00000 n 0000016818 00000 n 0000016856 00000 n 0000736605 00000 n -0001218049 00000 n +0001218052 00000 n 0000016910 00000 n 0000016959 00000 n 0000739380 00000 n -0001217917 00000 n +0001217920 00000 n 0000017013 00000 n 0000017065 00000 n 0000739505 00000 n -0001217838 00000 n +0001217841 00000 n 0000017124 00000 n 0000017169 00000 n 0000739634 00000 n -0001217745 00000 n +0001217748 00000 n 0000017228 00000 n 0000017280 00000 n 0000739763 00000 n -0001217652 00000 n +0001217655 00000 n 0000017339 00000 n 0000017392 00000 n 0000742206 00000 n -0001217573 00000 n +0001217576 00000 n 0000017451 00000 n 0000017500 00000 n 0000742335 00000 n -0001217480 00000 n +0001217483 00000 n 0000017554 00000 n 0000017634 00000 n 0000746657 00000 n -0001217401 00000 n +0001217404 00000 n 0000017688 00000 n 0000017737 00000 n 0000750163 00000 n -0001217283 00000 n +0001217286 00000 n 0000017786 00000 n 0000017826 00000 n 0000750422 00000 n -0001217204 00000 n +0001217207 00000 n 0000017885 00000 n 0000017932 00000 n 0000753851 00000 n -0001217086 00000 n +0001217089 00000 n 0000017986 00000 n 0000018031 00000 n 0000753980 00000 n -0001217007 00000 n +0001217010 00000 n 0000018090 00000 n 0000018149 00000 n 0000757319 00000 n -0001216914 00000 n +0001216917 00000 n 0000018208 00000 n 0000018272 00000 n 0000757578 00000 n -0001216821 00000 n +0001216824 00000 n 0000018331 00000 n 0000018387 00000 n 0000761762 00000 n -0001216728 00000 n +0001216731 00000 n 0000018446 00000 n 0000018504 00000 n 0000763934 00000 n -0001216649 00000 n +0001216652 00000 n 0000018563 00000 n 0000018625 00000 n 0000765719 00000 n -0001216516 00000 n +0001216519 00000 n 0000018672 00000 n 0000018724 00000 n 0000765847 00000 n -0001216437 00000 n +0001216440 00000 n 0000018773 00000 n 0000018817 00000 n 0000769646 00000 n -0001216305 00000 n +0001216308 00000 n 0000018866 00000 n 0000018907 00000 n 0000769775 00000 n -0001216226 00000 n +0001216229 00000 n 0000018961 00000 n 0000019009 00000 n 0000769904 00000 n -0001216147 00000 n +0001216150 00000 n 0000019063 00000 n 0000019114 00000 n 0000770032 00000 n -0001216068 00000 n +0001216071 00000 n 0000019163 00000 n 0000019210 00000 n 0000774292 00000 n -0001215935 00000 n +0001215938 00000 n 0000019257 00000 n 0000019294 00000 n 0000774421 00000 n -0001215817 00000 n +0001215820 00000 n 0000019343 00000 n 0000019382 00000 n 0000774550 00000 n -0001215752 00000 n +0001215755 00000 n 0000019436 00000 n 0000019514 00000 n 0000774679 00000 n -0001215659 00000 n +0001215662 00000 n 0000019563 00000 n 0000019630 00000 n 0000774808 00000 n -0001215580 00000 n +0001215583 00000 n 0000019679 00000 n 0000019724 00000 n 0000778249 00000 n -0001215447 00000 n +0001215450 00000 n 0000019772 00000 n 0000019804 00000 n 0000778378 00000 n -0001215329 00000 n +0001215332 00000 n 0000019853 00000 n 0000019892 00000 n 0000778507 00000 n -0001215264 00000 n +0001215267 00000 n 0000019946 00000 n 0000020007 00000 n 0000782189 00000 n -0001215132 00000 n +0001215135 00000 n 0000020056 00000 n 0000020113 00000 n 0000782318 00000 n -0001215067 00000 n +0001215070 00000 n 0000020167 00000 n 0000020216 00000 n 0000782447 00000 n -0001214935 00000 n +0001214938 00000 n 0000020265 00000 n 0000020327 00000 n 0000782576 00000 n -0001214856 00000 n +0001214859 00000 n 0000020381 00000 n 0000020436 00000 n 0000807418 00000 n -0001214763 00000 n +0001214766 00000 n 0000020490 00000 n 0000020531 00000 n 0000807547 00000 n -0001214684 00000 n +0001214687 00000 n 0000020585 00000 n 0000020637 00000 n 0000807936 00000 n -0001214566 00000 n +0001214569 00000 n 0000020686 00000 n 0000020736 00000 n 0000810757 00000 n -0001214487 00000 n +0001214490 00000 n 0000020790 00000 n 0000020828 00000 n 0000810886 00000 n -0001214394 00000 n +0001214397 00000 n 0000020882 00000 n 0000020919 00000 n 0000811015 00000 n -0001214301 00000 n +0001214304 00000 n 0000020973 00000 n 0000021011 00000 n 0000811144 00000 n -0001214208 00000 n +0001214211 00000 n 0000021065 00000 n 0000021117 00000 n 0000814380 00000 n -0001214115 00000 n +0001214118 00000 n 0000021171 00000 n 0000021214 00000 n 0000814508 00000 n -0001213983 00000 n +0001213986 00000 n 0000021268 00000 n 0000021313 00000 n 0000814636 00000 n -0001213904 00000 n +0001213907 00000 n 0000021372 00000 n 0000021438 00000 n 0000817622 00000 n -0001213811 00000 n +0001213814 00000 n 0000021497 00000 n 0000021585 00000 n 0000817751 00000 n -0001213718 00000 n +0001213721 00000 n 0000021644 00000 n 0000021719 00000 n 0000817880 00000 n -0001213625 00000 n +0001213628 00000 n 0000021778 00000 n 0000021863 00000 n 0000820788 00000 n -0001213532 00000 n +0001213535 00000 n 0000021922 00000 n 0000022003 00000 n 0000823249 00000 n -0001213453 00000 n +0001213456 00000 n 0000022062 00000 n 0000022146 00000 n 0000823378 00000 n -0001213374 00000 n +0001213377 00000 n 0000022200 00000 n 0000022244 00000 n 0000826274 00000 n -0001213254 00000 n +0001213257 00000 n 0000022292 00000 n 0000022326 00000 n 0000826403 00000 n -0001213175 00000 n +0001213178 00000 n 0000022375 00000 n 0000022402 00000 n 0000848974 00000 n -0001213082 00000 n +0001213085 00000 n 0000022451 00000 n 0000022479 00000 n 0000852607 00000 n -0001212989 00000 n +0001212992 00000 n 0000022528 00000 n 0000022566 00000 n 0000855811 00000 n -0001212896 00000 n +0001212899 00000 n 0000022615 00000 n 0000022654 00000 n 0000862214 00000 n -0001212803 00000 n +0001212806 00000 n 0000022703 00000 n 0000022743 00000 n 0000864940 00000 n -0001212710 00000 n +0001212713 00000 n 0000022792 00000 n 0000022835 00000 n 0000875077 00000 n -0001212617 00000 n +0001212620 00000 n 0000022884 00000 n 0000022921 00000 n 0000888727 00000 n -0001212524 00000 n +0001212527 00000 n 0000022970 00000 n 0000023007 00000 n 0000892108 00000 n -0001212431 00000 n +0001212434 00000 n 0000023056 00000 n 0000023094 00000 n 0000898633 00000 n -0001212338 00000 n +0001212341 00000 n 0000023144 00000 n 0000023184 00000 n 0000916435 00000 n -0001212245 00000 n +0001212248 00000 n 0000023234 00000 n 0000023272 00000 n 0000919577 00000 n -0001212152 00000 n +0001212155 00000 n 0000023322 00000 n 0000023362 00000 n 0000922492 00000 n -0001212059 00000 n +0001212062 00000 n 0000023412 00000 n 0000023452 00000 n 0000932500 00000 n -0001211966 00000 n +0001211969 00000 n 0000023502 00000 n 0000023532 00000 n 0000940973 00000 n -0001211873 00000 n +0001211876 00000 n 0000023582 00000 n 0000023625 00000 n 0000941427 00000 n -0001211780 00000 n +0001211783 00000 n 0000023675 00000 n 0000023708 00000 n 0000955679 00000 n -0001211687 00000 n +0001211690 00000 n 0000023758 00000 n 0000023787 00000 n 0000974104 00000 n -0001211594 00000 n +0001211597 00000 n 0000023837 00000 n 0000023871 00000 n 0000979694 00000 n -0001211501 00000 n +0001211504 00000 n 0000023921 00000 n 0000023958 00000 n 0000982902 00000 n -0001211408 00000 n +0001211411 00000 n 0000024008 00000 n 0000024045 00000 n 0000988586 00000 n -0001211315 00000 n +0001211318 00000 n 0000024095 00000 n 0000024128 00000 n 0000989040 00000 n -0001211222 00000 n +0001211225 00000 n 0000024178 00000 n 0000024212 00000 n 0000991752 00000 n -0001211129 00000 n +0001211132 00000 n 0000024262 00000 n 0000024301 00000 n 0000993865 00000 n -0001211050 00000 n +0001211053 00000 n 0000024351 00000 n 0000024385 00000 n 0000024758 00000 n @@ -17817,10 +17817,10 @@ xref 0000024438 00000 n 0000289555 00000 n 0000289618 00000 n -0001205004 00000 n -0001178862 00000 n -0001204830 00000 n -0001206050 00000 n +0001205007 00000 n +0001178865 00000 n +0001204833 00000 n +0001206053 00000 n 0000026189 00000 n 0000026382 00000 n 0000026462 00000 n @@ -17840,12 +17840,12 @@ xref 0000290936 00000 n 0000289781 00000 n 0000291058 00000 n -0001177626 00000 n -0001151007 00000 n -0001177452 00000 n -0001150322 00000 n -0001148178 00000 n -0001150158 00000 n +0001177629 00000 n +0001151010 00000 n +0001177455 00000 n +0001150325 00000 n +0001148180 00000 n +0001150161 00000 n 0000302898 00000 n 0000294171 00000 n 0000291206 00000 n @@ -17905,9 +17905,9 @@ xref 0000306338 00000 n 0000302983 00000 n 0000316340 00000 n -0001147590 00000 n -0001130169 00000 n -0001147404 00000 n +0001147592 00000 n +0001130171 00000 n +0001147406 00000 n 0000306988 00000 n 0000307152 00000 n 0000307316 00000 n @@ -18041,9 +18041,9 @@ xref 0000335807 00000 n 0000335975 00000 n 0000336142 00000 n -0001129278 00000 n -0001107944 00000 n -0001129102 00000 n +0001129280 00000 n +0001107946 00000 n +0001129104 00000 n 0000336309 00000 n 0000336477 00000 n 0000336633 00000 n @@ -18101,9 +18101,9 @@ xref 0000345813 00000 n 0000345972 00000 n 0000346131 00000 n -0001106965 00000 n -0001086838 00000 n -0001106790 00000 n +0001106967 00000 n +0001086840 00000 n +0001106792 00000 n 0000346290 00000 n 0000346449 00000 n 0000346607 00000 n @@ -18111,7 +18111,7 @@ xref 0000346924 00000 n 0000347083 00000 n 0000347242 00000 n -0001206171 00000 n +0001206174 00000 n 0000350589 00000 n 0000349822 00000 n 0000347567 00000 n @@ -18121,9 +18121,9 @@ xref 0000350394 00000 n 0000350459 00000 n 0000350524 00000 n -0001085996 00000 n -0001067296 00000 n -0001085821 00000 n +0001085998 00000 n +0001067298 00000 n +0001085823 00000 n 0000355126 00000 n 0000353985 00000 n 0000350717 00000 n @@ -18172,7 +18172,7 @@ xref 0000366593 00000 n 0000367391 00000 n 0000367519 00000 n -0001206296 00000 n +0001206299 00000 n 0000369627 00000 n 0000368924 00000 n 0000367684 00000 n @@ -18196,9 +18196,9 @@ xref 0000375220 00000 n 0000375349 00000 n 0000375476 00000 n -0001066574 00000 n -0001053197 00000 n -0001066395 00000 n +0001066576 00000 n +0001053199 00000 n +0001066397 00000 n 0000375734 00000 n 0000380671 00000 n 0000380110 00000 n @@ -18219,7 +18219,7 @@ xref 0000383191 00000 n 0000383041 00000 n 0000383317 00000 n -0001206421 00000 n +0001206424 00000 n 0000386078 00000 n 0000388668 00000 n 0000385913 00000 n @@ -18229,12 +18229,12 @@ xref 0000388474 00000 n 0000387721 00000 n 0000387883 00000 n -0001052291 00000 n -0001042271 00000 n -0001052117 00000 n -0001041707 00000 n -0001032621 00000 n -0001041532 00000 n +0001052293 00000 n +0001042273 00000 n +0001052119 00000 n +0001041709 00000 n +0001032622 00000 n +0001041534 00000 n 0000388603 00000 n 0000388045 00000 n 0000387550 00000 n @@ -18248,9 +18248,9 @@ xref 0000388839 00000 n 0000392983 00000 n 0000393112 00000 n -0001032020 00000 n +0001032021 00000 n 0001019599 00000 n -0001031841 00000 n +0001031842 00000 n 0000393241 00000 n 0000392655 00000 n 0000392821 00000 n @@ -18280,7 +18280,7 @@ xref 0000403340 00000 n 0000403469 00000 n 0000403598 00000 n -0001206546 00000 n +0001206549 00000 n 0000407717 00000 n 0000406821 00000 n 0000403805 00000 n @@ -18312,7 +18312,7 @@ xref 0000418128 00000 n 0000420801 00000 n 0001019324 00000 n -0001015965 00000 n +0001015966 00000 n 0001019145 00000 n 0000420930 00000 n 0000421059 00000 n @@ -18322,12 +18322,12 @@ xref 0000421424 00000 n 0000425327 00000 n 0000425456 00000 n -0001015610 00000 n +0001015611 00000 n 0001013613 00000 n -0001015445 00000 n +0001015446 00000 n 0000424998 00000 n 0000425162 00000 n -0001206671 00000 n +0001206674 00000 n 0000875141 00000 n 0000892172 00000 n 0000428887 00000 n @@ -18374,7 +18374,7 @@ xref 0000442898 00000 n 0000445265 00000 n 0000445394 00000 n -0001206796 00000 n +0001206799 00000 n 0000448367 00000 n 0000447531 00000 n 0000445573 00000 n @@ -18416,7 +18416,7 @@ xref 0000461247 00000 n 0000461097 00000 n 0000461373 00000 n -0001206921 00000 n +0001206924 00000 n 0000465525 00000 n 0000464759 00000 n 0000461480 00000 n @@ -18462,7 +18462,7 @@ xref 0000485659 00000 n 0000485220 00000 n 0000485371 00000 n -0001207046 00000 n +0001207049 00000 n 0000994592 00000 n 0000489838 00000 n 0000488438 00000 n @@ -18503,7 +18503,7 @@ xref 0000504051 00000 n 0000507173 00000 n 0000507302 00000 n -0001207171 00000 n +0001207174 00000 n 0000510891 00000 n 0000510570 00000 n 0000507495 00000 n @@ -18538,7 +18538,7 @@ xref 0000518962 00000 n 0000520866 00000 n 0000520995 00000 n -0001207296 00000 n +0001207299 00000 n 0000524632 00000 n 0000524441 00000 n 0000521174 00000 n @@ -18571,7 +18571,7 @@ xref 0000545624 00000 n 0000545689 00000 n 0000545753 00000 n -0001207421 00000 n +0001207424 00000 n 0000550885 00000 n 0000549757 00000 n 0000545946 00000 n @@ -18610,7 +18610,7 @@ xref 0000570893 00000 n 0000571022 00000 n 0000570726 00000 n -0001207546 00000 n +0001207549 00000 n 0000575417 00000 n 0000574726 00000 n 0000571244 00000 n @@ -18646,7 +18646,7 @@ xref 0000593220 00000 n 0000593805 00000 n 0000593394 00000 n -0001207671 00000 n +0001207674 00000 n 0000597895 00000 n 0000597577 00000 n 0000593984 00000 n @@ -18683,7 +18683,7 @@ xref 0000616695 00000 n 0000616532 00000 n 0000616824 00000 n -0001207796 00000 n +0001207799 00000 n 0000746721 00000 n 0000620634 00000 n 0000620124 00000 n @@ -18715,7 +18715,7 @@ xref 0000632409 00000 n 0000636317 00000 n 0000636446 00000 n -0001207921 00000 n +0001207924 00000 n 0000640643 00000 n 0000640452 00000 n 0000636652 00000 n @@ -18751,7 +18751,7 @@ xref 0000661676 00000 n 0000661856 00000 n 0000662032 00000 n -0001208046 00000 n +0001208049 00000 n 0000666519 00000 n 0000665638 00000 n 0000662661 00000 n @@ -18781,7 +18781,7 @@ xref 0000677982 00000 n 0000676894 00000 n 0000678108 00000 n -0001208171 00000 n +0001208174 00000 n 0000681825 00000 n 0000681246 00000 n 0000678274 00000 n @@ -18853,7 +18853,7 @@ xref 0000704990 00000 n 0000705152 00000 n 0000705313 00000 n -0001208296 00000 n +0001208299 00000 n 0000710861 00000 n 0000709343 00000 n 0000705644 00000 n @@ -18897,7 +18897,7 @@ xref 0000728514 00000 n 0000728579 00000 n 0000728644 00000 n -0001208421 00000 n +0001208424 00000 n 0000732633 00000 n 0000731924 00000 n 0000728824 00000 n @@ -18948,7 +18948,7 @@ xref 0000750292 00000 n 0000750357 00000 n 0000749938 00000 n -0001208546 00000 n +0001208549 00000 n 0000754239 00000 n 0000753660 00000 n 0000750665 00000 n @@ -19000,7 +19000,7 @@ xref 0000769710 00000 n 0000769839 00000 n 0000769967 00000 n -0001208671 00000 n +0001208674 00000 n 0000771194 00000 n 0000771003 00000 n 0000770388 00000 n @@ -19041,7 +19041,7 @@ xref 0000781949 00000 n 0000782705 00000 n 0000782769 00000 n -0001208796 00000 n +0001208799 00000 n 0000789723 00000 n 0000785895 00000 n 0000782989 00000 n @@ -19262,7 +19262,7 @@ xref 0000814155 00000 n 0000814572 00000 n 0000814700 00000 n -0001208921 00000 n +0001208924 00000 n 0000818009 00000 n 0000817431 00000 n 0000814892 00000 n @@ -19300,7 +19300,7 @@ xref 0000830866 00000 n 0000830931 00000 n 0000830996 00000 n -0001209046 00000 n +0001209049 00000 n 0000834824 00000 n 0000834568 00000 n 0000831217 00000 n @@ -19342,7 +19342,7 @@ xref 0000852736 00000 n 0000852801 00000 n 0000852866 00000 n -0001209171 00000 n +0001209174 00000 n 0000856135 00000 n 0000855427 00000 n 0000853072 00000 n @@ -19394,7 +19394,7 @@ xref 0000872057 00000 n 0000872122 00000 n 0000872187 00000 n -0001209296 00000 n +0001209299 00000 n 0000875466 00000 n 0000874756 00000 n 0000872378 00000 n @@ -19441,7 +19441,7 @@ xref 0000892302 00000 n 0000892367 00000 n 0000892432 00000 n -0001209421 00000 n +0001209424 00000 n 0000895878 00000 n 0000895557 00000 n 0000892653 00000 n @@ -19477,7 +19477,7 @@ xref 0000913445 00000 n 0000913510 00000 n 0000913575 00000 n -0001209546 00000 n +0001209549 00000 n 0000916823 00000 n 0000916179 00000 n 0000913809 00000 n @@ -19531,7 +19531,7 @@ xref 0000932694 00000 n 0000932759 00000 n 0000932824 00000 n -0001209671 00000 n +0001209674 00000 n 0000935845 00000 n 0000935654 00000 n 0000933031 00000 n @@ -19573,7 +19573,7 @@ xref 0000950004 00000 n 0000953163 00000 n 0000953228 00000 n -0001209796 00000 n +0001209799 00000 n 0000955872 00000 n 0000955294 00000 n 0000953421 00000 n @@ -19613,7 +19613,7 @@ xref 0000974233 00000 n 0000974298 00000 n 0000974363 00000 n -0001209921 00000 n +0001209924 00000 n 0000976675 00000 n 0000976354 00000 n 0000974570 00000 n @@ -19677,7 +19677,7 @@ xref 0000992076 00000 n 0000992141 00000 n 0000992206 00000 n -0001210046 00000 n +0001210049 00000 n 0000994384 00000 n 0000993674 00000 n 0000992412 00000 n @@ -19692,41 +19692,41 @@ xref 0000994625 00000 n 0001005969 00000 n 0001013558 00000 n -0001015857 00000 n -0001015826 00000 n +0001015858 00000 n +0001015827 00000 n 0001019544 00000 n -0001032340 00000 n -0001042006 00000 n -0001052741 00000 n -0001066985 00000 n -0001086491 00000 n -0001107557 00000 n -0001129707 00000 n -0001147963 00000 n -0001150809 00000 n -0001150579 00000 n -0001178227 00000 n -0001205556 00000 n -0001210135 00000 n -0001210260 00000 n -0001210386 00000 n -0001210512 00000 n -0001210638 00000 n -0001210764 00000 n -0001210863 00000 n -0001210973 00000 n -0001233247 00000 n -0001258330 00000 n -0001258371 00000 n -0001258411 00000 n -0001258545 00000 n +0001032341 00000 n +0001042008 00000 n +0001052743 00000 n +0001066987 00000 n +0001086493 00000 n +0001107559 00000 n +0001129709 00000 n +0001147965 00000 n +0001150812 00000 n +0001150582 00000 n +0001178230 00000 n +0001205559 00000 n +0001210138 00000 n +0001210263 00000 n +0001210389 00000 n +0001210515 00000 n +0001210641 00000 n +0001210767 00000 n +0001210866 00000 n +0001210976 00000 n +0001233250 00000 n +0001258333 00000 n +0001258374 00000 n +0001258414 00000 n +0001258548 00000 n trailer << /Size 2855 /Root 2853 0 R /Info 2854 0 R -/ID [<DB6819CF1D7B70E7D9B9B8FCBDCACBFF> <DB6819CF1D7B70E7D9B9B8FCBDCACBFF>] +/ID [<D92076DFF62B13FFD21C721A377CFD07> <D92076DFF62B13FFD21C721A377CFD07>] >> startxref -1258803 +1258806 %%EOF diff --git a/lib/dns/api b/lib/dns/api index 1bf8d3fa..cc5437d0 100644 --- a/lib/dns/api +++ b/lib/dns/api @@ -5,5 +5,5 @@ # 9.9: 90-109 # 9.9-sub: 130-139 LIBINTERFACE = 102 -LIBREVISION = 1 +LIBREVISION = 2 LIBAGE = 2 diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c index 77010414..7af8e644 100644 --- a/lib/dns/dispatch.c +++ b/lib/dns/dispatch.c @@ -778,6 +778,7 @@ port_search(dns_dispatch_t *disp, in_port_t port) { static dispportentry_t * new_portentry(dns_dispatch_t *disp, in_port_t port) { dispportentry_t *portentry; + dns_qid_t *qid; REQUIRE(disp->port_table != NULL); @@ -786,10 +787,13 @@ new_portentry(dns_dispatch_t *disp, in_port_t port) { return (portentry); portentry->port = port; - portentry->refs = 0; + portentry->refs = 1; ISC_LINK_INIT(portentry, link); + qid = DNS_QID(disp); + LOCK(&qid->lock); ISC_LIST_APPEND(disp->port_table[port % DNS_DISPATCH_PORTTABLESIZE], portentry, link); + UNLOCK(&qid->lock); return (portentry); } @@ -800,7 +804,6 @@ new_portentry(dns_dispatch_t *disp, in_port_t port) { static void deref_portentry(dns_dispatch_t *disp, dispportentry_t **portentryp) { dispportentry_t *portentry = *portentryp; - isc_boolean_t unlink = ISC_FALSE; dns_qid_t *qid; REQUIRE(disp->port_table != NULL); @@ -809,15 +812,14 @@ deref_portentry(dns_dispatch_t *disp, dispportentry_t **portentryp) { qid = DNS_QID(disp); LOCK(&qid->lock); portentry->refs--; - unlink = ISC_TF(portentry->refs == 0); - UNLOCK(&qid->lock); - if (unlink) { + if (portentry->refs == 0) { ISC_LIST_UNLINK(disp->port_table[portentry->port % DNS_DISPATCH_PORTTABLESIZE], portentry, link); isc_mempool_put(disp->portpool, portentry); } + UNLOCK(&qid->lock); *portentryp = NULL; } @@ -939,8 +941,11 @@ get_dispsocket(dns_dispatch_t *disp, isc_sockaddr_t *dest, result = ISC_R_NOMEMORY; break; } + } else { + LOCK(&qid->lock); + portentry->refs++; + UNLOCK(&qid->lock); } - portentry->refs++; break; } else if (result == ISC_R_NOPERM) { char buf[ISC_SOCKADDR_FORMATSIZE]; diff --git a/lib/dns/include/dns/Makefile.in b/lib/dns/include/dns/Makefile.in index 1a69f2c8..6ff682f7 100644 --- a/lib/dns/include/dns/Makefile.in +++ b/lib/dns/include/dns/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004, 2007-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007-2009, 2011, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -22,7 +22,8 @@ top_srcdir = @top_srcdir@ @BIND9_VERSION@ HEADERS = acl.h adb.h byaddr.h cache.h callbacks.h cert.h compress.h \ - clientinfo.h db.h dbiterator.h dbtable.h diff.h dispatch.h \ + client.h clientinfo.h compress.h \ + db.h dbiterator.h dbtable.h diff.h dispatch.h \ dlz.h dnssec.h ds.h events.h fixedname.h iptable.h journal.h \ keyflags.h keytable.h keyvalues.h lib.h log.h \ master.h masterdump.h message.h name.h ncache.h nsec.h \ @@ -30,7 +31,7 @@ HEADERS = acl.h adb.h byaddr.h cache.h callbacks.h cert.h compress.h \ rdata.h rdataclass.h rdatalist.h rdataset.h rdatasetiter.h \ rdataslab.h rdatatype.h request.h resolver.h result.h \ rootns.h rpz.h sdb.h sdlz.h secalg.h secproto.h soa.h ssu.h \ - tcpmsg.h time.h tkey.h tsig.h ttl.h types.h \ + tcpmsg.h time.h tkey.h tsec.h tsig.h ttl.h types.h \ validator.h version.h view.h xfrin.h zone.h zonekey.h zt.h GENHEADERS = enumclass.h enumtype.h rdatastruct.h diff --git a/lib/dns/rdata/generic/rrsig_46.c b/lib/dns/rdata/generic/rrsig_46.c index 58a327c0..5dd5a31a 100644 --- a/lib/dns/rdata/generic/rrsig_46.c +++ b/lib/dns/rdata/generic/rrsig_46.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2011, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -90,7 +90,20 @@ fromtext_rrsig(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, ISC_FALSE)); - RETTOK(dns_time32_fromtext(DNS_AS_STR(token), &time_expire)); + if (strlen(DNS_AS_STR(token)) <= 10U && + *DNS_AS_STR(token) != '-' && *DNS_AS_STR(token) != '+') { + char *end; + unsigned long u; + isc_uint64_t u64; + + u64 = u = strtoul(DNS_AS_STR(token), &end, 10); + if (u == ULONG_MAX || *end != 0) + RETTOK(DNS_R_SYNTAX); + if (u64 > 0xffffffffUL) + RETTOK(ISC_R_RANGE); + time_expire = u; + } else + RETTOK(dns_time32_fromtext(DNS_AS_STR(token), &time_expire)); RETERR(uint32_tobuffer(time_expire, target)); /* @@ -98,7 +111,20 @@ fromtext_rrsig(ARGS_FROMTEXT) { */ RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, ISC_FALSE)); - RETTOK(dns_time32_fromtext(DNS_AS_STR(token), &time_signed)); + if (strlen(DNS_AS_STR(token)) <= 10U && + *DNS_AS_STR(token) != '-' && *DNS_AS_STR(token) != '+') { + char *end; + unsigned long u; + isc_uint64_t u64; + + u64 = u = strtoul(DNS_AS_STR(token), &end, 10); + if (u == ULONG_MAX || *end != 0) + RETTOK(DNS_R_SYNTAX); + if (u64 > 0xffffffffUL) + RETTOK(ISC_R_RANGE); + time_signed = u; + } else + RETTOK(dns_time32_fromtext(DNS_AS_STR(token), &time_signed)); RETERR(uint32_tobuffer(time_signed, target)); /* diff --git a/lib/export/isc/Makefile.in b/lib/export/isc/Makefile.in index 46df39df..a92f66f3 100644 --- a/lib/export/isc/Makefile.in +++ b/lib/export/isc/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2009, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009, 2010, 2012-2014 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -73,6 +73,7 @@ OBJS = @ISC_EXTRA_OBJS@ \ rwlock.@O@ safe.@O@ serial.@O@ sha1.@O@ sha2.@O@ \ sockaddr.@O@ stats.@O@ string.@O@ \ symtab.@O@ \ + tm.@O@ \ version.@O@ \ ${APIOBJS} ${ISCDRIVEROBJS} \ ${UNIXOBJS} ${NLSOBJS} ${THREADOBJS} @@ -96,6 +97,7 @@ SRCS = @ISC_EXTRA_SRCS@ \ random.c refcount.c region.c regex.c result.c rwlock.c \ safe.c serial.c sha1.c sha2.c sockaddr.c \ stats.c string.c symtab.c \ + tm.c \ version.c \ ${APISRCS} ${ISCDRIVERSRCS} diff --git a/lib/irs/api b/lib/irs/api index 343e4aaf..3f5a2a3b 100644 --- a/lib/irs/api +++ b/lib/irs/api @@ -4,6 +4,6 @@ # 9.8: 80-89, 120-129 # 9.9: 90-109 # 9.9-sub: 130-139 -LIBINTERFACE = 90 -LIBREVISION = 2 +LIBINTERFACE = 91 +LIBREVISION = 0 LIBAGE = 0 diff --git a/lib/irs/include/irs/Makefile.in b/lib/irs/include/irs/Makefile.in index 63e7fd6b..eca98eb1 100644 --- a/lib/irs/include/irs/Makefile.in +++ b/lib/irs/include/irs/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2009, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -39,6 +39,8 @@ install:: installdirs done ${INSTALL_DATA} netdb.h ${DESTDIR}${includedir}/irs ${INSTALL_DATA} platform.h ${DESTDIR}${includedir}/irs + ${INSTALL_DATA} resconf.h ${DESTDIR}${includedir}/irs + ${INSTALL_DATA} types.h ${DESTDIR}${includedir}/irs distclean:: rm -f netdb.h platform.h diff --git a/lib/irs/include/irs/resconf.h b/lib/irs/include/irs/resconf.h index 78c87d51..dec110ad 100644 --- a/lib/irs/include/irs/resconf.h +++ b/lib/irs/include/irs/resconf.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2014 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -46,7 +46,12 @@ isc_result_t irs_resconf_load(isc_mem_t *mctx, const char *filename, irs_resconf_t **confp); /*%< * Load the resolver configuration file 'filename' in the "resolv.conf" format, - * and create a new irs_resconf_t object from the configuration. + * and create a new irs_resconf_t object from the configuration. If the file + * is not found ISC_R_FILENOTFOUND is returned with the structure initialized + * as if file contained only: + * + * nameserver ::1 + * nameserver 127.0.0.1 * * Notes: * @@ -55,6 +60,11 @@ irs_resconf_load(isc_mem_t *mctx, const char *filename, irs_resconf_t **confp); * In addition, 'sortlist' is not actually effective; it's parsed, but * the application cannot use the configuration. * + * Returns: + * \li ISC_R_SUCCESS on success + * \li ISC_R_FILENOTFOUND if the file was not found. *confp will be valid. + * \li other on error. + * * Requires: * *\li 'mctx' is a valid memory context. diff --git a/lib/irs/resconf.c b/lib/irs/resconf.c index 15a46baf..cb240079 100644 --- a/lib/irs/resconf.c +++ b/lib/irs/resconf.c @@ -483,7 +483,7 @@ irs_resconf_load(isc_mem_t *mctx, const char *filename, irs_resconf_t **confp) { FILE *fp = NULL; char word[256]; - isc_result_t rval, ret; + isc_result_t rval, ret = ISC_R_SUCCESS; irs_resconf_t *conf; int i, stopchar; @@ -507,45 +507,49 @@ irs_resconf_load(isc_mem_t *mctx, const char *filename, irs_resconf_t **confp) conf->search[i] = NULL; errno = 0; - if ((fp = fopen(filename, "r")) == NULL) { - isc_mem_put(mctx, conf, sizeof(*conf)); - return (ISC_R_INVALIDFILE); - } - - ret = ISC_R_SUCCESS; - do { - stopchar = getword(fp, word, sizeof(word)); - if (stopchar == EOF) { - rval = ISC_R_SUCCESS; - POST(rval); - break; - } - - if (strlen(word) == 0U) - rval = ISC_R_SUCCESS; - else if (strcmp(word, "nameserver") == 0) - rval = resconf_parsenameserver(conf, fp); - else if (strcmp(word, "domain") == 0) - rval = resconf_parsedomain(conf, fp); - else if (strcmp(word, "search") == 0) - rval = resconf_parsesearch(conf, fp); - else if (strcmp(word, "sortlist") == 0) - rval = resconf_parsesortlist(conf, fp); - else if (strcmp(word, "options") == 0) - rval = resconf_parseoption(conf, fp); - else { - /* unrecognised word. Ignore entire line */ - rval = ISC_R_SUCCESS; - stopchar = eatline(fp); + if ((fp = fopen(filename, "r")) != NULL) { + do { + stopchar = getword(fp, word, sizeof(word)); if (stopchar == EOF) { + rval = ISC_R_SUCCESS; + POST(rval); break; } - } - if (ret == ISC_R_SUCCESS && rval != ISC_R_SUCCESS) - ret = rval; - } while (1); - fclose(fp); + if (strlen(word) == 0U) + rval = ISC_R_SUCCESS; + else if (strcmp(word, "nameserver") == 0) + rval = resconf_parsenameserver(conf, fp); + else if (strcmp(word, "domain") == 0) + rval = resconf_parsedomain(conf, fp); + else if (strcmp(word, "search") == 0) + rval = resconf_parsesearch(conf, fp); + else if (strcmp(word, "sortlist") == 0) + rval = resconf_parsesortlist(conf, fp); + else if (strcmp(word, "options") == 0) + rval = resconf_parseoption(conf, fp); + else { + /* unrecognised word. Ignore entire line */ + rval = ISC_R_SUCCESS; + stopchar = eatline(fp); + if (stopchar == EOF) { + break; + } + } + if (ret == ISC_R_SUCCESS && rval != ISC_R_SUCCESS) + ret = rval; + } while (1); + + fclose(fp); + } else { + switch (errno) { + case ENOENT: + break; + default: + isc_mem_put(mctx, conf, sizeof(*conf)); + return (ISC_R_INVALIDFILE); + } + } /* If we don't find a nameserver fall back to localhost */ if (conf->numns == 0) { @@ -575,8 +579,11 @@ irs_resconf_load(isc_mem_t *mctx, const char *filename, irs_resconf_t **confp) if (ret != ISC_R_SUCCESS) irs_resconf_destroy(&conf); - else + else { + if (fp == NULL) + ret = ISC_R_FILENOTFOUND; *confp = conf; + } return (ret); } diff --git a/lib/isc/Makefile.in b/lib/isc/Makefile.in index e8c28214..709771f7 100644 --- a/lib/isc/Makefile.in +++ b/lib/isc/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -64,7 +64,8 @@ OBJS = @ISC_EXTRA_OBJS@ \ rwlock.@O@ \ safe.@O@ serial.@O@ sha1.@O@ sha2.@O@ sockaddr.@O@ stats.@O@ \ string.@O@ strtoul.@O@ symtab.@O@ task.@O@ taskpool.@O@ \ - timer.@O@ version.@O@ ${UNIXOBJS} ${NLSOBJS} ${THREADOBJS} + tm.@O@ timer.@O@ version.@O@ \ + ${UNIXOBJS} ${NLSOBJS} ${THREADOBJS} SYMTBLOBJS = backtrace-emptytbl.@O@ # Alphabetically @@ -80,7 +81,7 @@ SRCS = @ISC_EXTRA_SRCS@ \ ratelimiter.c refcount.c region.c regex.c result.c rwlock.c \ safe.c serial.c sha1.c sha2.c sockaddr.c stats.c string.c \ strtoul.c symtab.c symtbl-empty.c task.c taskpool.c timer.c \ - version.c + tm.c version.c LIBS = @LIBS@ diff --git a/lib/isc/api b/lib/isc/api index 07c646d6..a1fe77ff 100644 --- a/lib/isc/api +++ b/lib/isc/api @@ -4,6 +4,6 @@ # 9.8: 80-89, 120-129 # 9.9: 90-109 # 9.9-sub: 130-139 -LIBINTERFACE = 99 +LIBINTERFACE = 100 LIBREVISION = 0 -LIBAGE = 4 +LIBAGE = 5 diff --git a/lib/isc/include/isc/Makefile.in b/lib/isc/include/isc/Makefile.in index 3b2b0369..54524bed 100644 --- a/lib/isc/include/isc/Makefile.in +++ b/lib/isc/include/isc/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2009, 2012-2014 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2001, 2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -29,18 +29,16 @@ top_srcdir = @top_srcdir@ HEADERS = app.h assertions.h base64.h bind9.h bitstring.h boolean.h \ buffer.h bufferlist.h commandline.h entropy.h error.h event.h \ eventclass.h file.h formatcheck.h fsaccess.h \ - hash.h heap.h hex.h hmacmd5.h hmacsha.h \ - httpd.h \ - interfaceiter.h @ISC_IPV6_H@ iterated_hash.h lang.h lex.h \ - lfsr.h lib.h list.h log.h \ + hash.h heap.h hex.h hmacmd5.h hmacsha.h httpd.h \ + interfaceiter.h @ISC_IPV6_H@ iterated_hash.h \ + lang.h lex.h lfsr.h lib.h list.h log.h \ magic.h md5.h mem.h msgcat.h msgs.h mutexblock.h \ namespace.h netaddr.h ondestroy.h os.h parseint.h \ print.h quota.h radix.h random.h ratelimiter.h \ refcount.h regex.h region.h resource.h \ result.h resultclass.h rwlock.h safe.h serial.h sha1.h sha2.h \ - sockaddr.h socket.h stdio.h stdlib.h string.h \ - symtab.h \ - task.h taskpool.h timer.h types.h util.h version.h \ + sockaddr.h socket.h stdio.h stdlib.h string.h symtab.h \ + task.h taskpool.h timer.h tm.h types.h util.h version.h \ xml.h SUBDIRS = diff --git a/lib/isc/include/isc/tm.h b/lib/isc/include/isc/tm.h new file mode 100644 index 00000000..44b81480 --- /dev/null +++ b/lib/isc/include/isc/tm.h @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef ISC_TM_H +#define ISC_TM_H 1 + +/*! \file isc/tm.h + * Provides portable conversion routines for struct tm. + */ +#include <time.h> + +#include <isc/lang.h> +#include <isc/types.h> + + +ISC_LANG_BEGINDECLS + +time_t +isc_tm_timegm(struct tm *tm); +/* + * Convert a tm structure to time_t, using UTC rather than the local + * time zone. + */ + +char * +isc_tm_strptime(const char *buf, const char *fmt, struct tm *tm); +/* + * Parse a formatted date string into struct tm. + */ + +ISC_LANG_ENDDECLS + +#endif /* ISC_TIMER_H */ diff --git a/lib/isc/win32/strptime.c b/lib/isc/tm.c index 10dcec1e..713ce0e5 100644 --- a/lib/isc/win32/strptime.c +++ b/lib/isc/tm.c @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. * All rights reserved. @@ -33,10 +49,23 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include <config.h> + #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> +#include <ctype.h> + +#include <isc/tm.h> +#include <isc/util.h> + +/* + * Portable conversion routines for struct tm, replacing + * timegm() and strptime(), which are not available on all + * platforms and don't always behave the same way when they + * are. + */ /* * We do not implement alternate representations. However, we always @@ -50,8 +79,6 @@ #define TM_YEAR_BASE 1900 #endif -static int conv_num(const char **, int *, int, int); - static const char *day[7] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" @@ -71,9 +98,58 @@ static const char *am_pm[2] = { "AM", "PM" }; -static char * -strptime(const char *buf, const char *fmt, struct tm *tm) { - char c; +static int +conv_num(const char **buf, int *dest, int llim, int ulim) { + int result = 0; + + /* The limit also determines the number of valid digits. */ + int rulim = ulim; + + if (**buf < '0' || **buf > '9') + return (0); + + do { + result *= 10; + result += *(*buf)++ - '0'; + rulim /= 10; + } while ((result * 10 <= ulim) && + rulim && **buf >= '0' && **buf <= '9'); + + if (result < llim || result > ulim) + return (0); + + *dest = result; + return (1); +} + +time_t +isc_tm_timegm(struct tm *tm) { + time_t ret; + int i, yday = 0, leapday; + int mdays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 }; + + leapday = ((((tm->tm_year + 1900 ) % 4) == 0 && + ((tm->tm_year + 1900 ) % 100) != 0) || + ((tm->tm_year + 1900 ) % 400) == 0) ? 1 : 0; + mdays[1] += leapday; + + yday = tm->tm_mday - 1; + for (i = 1; i <= tm->tm_mon; i++) + yday += mdays[i - 1]; + ret = tm->tm_sec + + (60 * tm->tm_min) + + (3600 * tm->tm_hour) + + (86400 * (yday + + ((tm->tm_year - 70) * 365) + + ((tm->tm_year - 69) / 4) - + ((tm->tm_year - 1) / 100) + + ((tm->tm_year + 299) / 400))); + return (ret); +} + +char * +isc_tm_strptime(const char *buf, const char *fmt, struct tm *tm) { + char c, *ret; const char *bp; size_t len = 0; int alt_format, i, split_year = 0; @@ -85,8 +161,8 @@ strptime(const char *buf, const char *fmt, struct tm *tm) { alt_format = 0; /* Eat up white-space. */ - if (isspace(c)) { - while (isspace(*bp)) + if (isspace((unsigned char) c)) { + while (isspace((unsigned char) *bp)) bp++; fmt++; @@ -123,43 +199,43 @@ literal: */ case 'c': /* Date and time, using the locale's format. */ LEGAL_ALT(ALT_E); - if (!(bp = strptime(bp, "%x %X", tm))) + if (!(bp = isc_tm_strptime(bp, "%x %X", tm))) return (0); break; case 'D': /* The date as "%m/%d/%y". */ LEGAL_ALT(0); - if (!(bp = strptime(bp, "%m/%d/%y", tm))) + if (!(bp = isc_tm_strptime(bp, "%m/%d/%y", tm))) return (0); break; case 'R': /* The time as "%H:%M". */ LEGAL_ALT(0); - if (!(bp = strptime(bp, "%H:%M", tm))) + if (!(bp = isc_tm_strptime(bp, "%H:%M", tm))) return (0); break; case 'r': /* The time in 12-hour clock representation. */ LEGAL_ALT(0); - if (!(bp = strptime(bp, "%I:%M:%S %p", tm))) + if (!(bp = isc_tm_strptime(bp, "%I:%M:%S %p", tm))) return (0); break; case 'T': /* The time as "%H:%M:%S". */ LEGAL_ALT(0); - if (!(bp = strptime(bp, "%H:%M:%S", tm))) + if (!(bp = isc_tm_strptime(bp, "%H:%M:%S", tm))) return (0); break; case 'X': /* The time, using the locale's format. */ LEGAL_ALT(ALT_E); - if (!(bp = strptime(bp, "%H:%M:%S", tm))) + if (!(bp = isc_tm_strptime(bp, "%H:%M:%S", tm))) return (0); break; case 'x': /* The date, using the locale's format. */ LEGAL_ALT(ALT_E); - if (!(bp = strptime(bp, "%m/%d/%y", tm))) + if (!(bp = isc_tm_strptime(bp, "%m/%d/%y", tm))) return (0); break; @@ -351,7 +427,7 @@ literal: case 'n': /* Any kind of white-space. */ case 't': LEGAL_ALT(0); - while (isspace(*bp)) + while (isspace((unsigned char) *bp)) bp++; break; @@ -364,29 +440,6 @@ literal: } /* LINTED functional specification */ - return ((char *)bp); -} - -static int -conv_num(const char **buf, int *dest, int llim, int ulim) { - int result = 0; - - /* The limit also determines the number of valid digits. */ - int rulim = ulim; - - if (**buf < '0' || **buf > '9') - return (0); - - do { - result *= 10; - result += *(*buf)++ - '0'; - rulim /= 10; - } while ((result * 10 <= ulim) && - rulim && **buf >= '0' && **buf <= '9'); - - if (result < llim || result > ulim) - return (0); - - *dest = result; - return (1); + DE_CONST(bp, ret); + return (ret); } diff --git a/lib/isc/unix/time.c b/lib/isc/unix/time.c index 9039b06a..890b9192 100644 --- a/lib/isc/unix/time.c +++ b/lib/isc/unix/time.c @@ -34,6 +34,7 @@ #include <isc/strerror.h> #include <isc/string.h> #include <isc/time.h> +#include <isc/tm.h> #include <isc/util.h> #define NS_PER_S 1000000000 /*%< Nanoseconds per second. */ @@ -408,31 +409,6 @@ isc_time_formathttptimestamp(const isc_time_t *t, char *buf, unsigned int len) { INSIST(flen < len); } -static time_t -timetfromtm(struct tm *tm) { - time_t ret; - int i, yday = 0, leapday; - int mdays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 }; - - leapday = ((((tm->tm_year + 1900 ) % 4) == 0 && - ((tm->tm_year + 1900 ) % 100) != 0) || - ((tm->tm_year + 1900 ) % 400) == 0) ? 1 : 0; - mdays[1] += leapday; - - yday = tm->tm_mday - 1; - for (i = 1; i <= tm->tm_mon; i++) - yday += mdays[i - 1]; - ret = tm->tm_sec + - (60 * tm->tm_min) + - (3600 * tm->tm_hour) + - (86400 * (yday + - ((tm->tm_year - 70) * 365) + - ((tm->tm_year - 69) / 4) - - ((tm->tm_year - 1) / 100) + - ((tm->tm_year + 299) / 400))); - return (ret); -} - isc_result_t isc_time_parsehttptimestamp(char *buf, isc_time_t *t) { struct tm t_tm; @@ -441,10 +417,10 @@ isc_time_parsehttptimestamp(char *buf, isc_time_t *t) { REQUIRE(buf != NULL); REQUIRE(t != NULL); - p = strptime(buf, "%a, %d %b %Y %H:%M:%S", &t_tm); + p = isc_tm_strptime(buf, "%a, %d %b %Y %H:%M:%S", &t_tm); if (p == NULL) return (ISC_R_UNEXPECTED); - when = timetfromtm(&t_tm); + when = isc_tm_timegm(&t_tm); if (when == -1) return (ISC_R_UNEXPECTED); isc_time_set(t, when, 0); diff --git a/lib/isc/win32/libisc.def.in b/lib/isc/win32/libisc.def.in index f03fd879..94363250 100644 --- a/lib/isc/win32/libisc.def.in +++ b/lib/isc/win32/libisc.def.in @@ -588,6 +588,8 @@ isc_time_seconds isc_time_set isc_time_settoepoch isc_time_subtract +isc_tm_timegm +isc_tm_strptime isc_win32os_majorversion isc_win32os_minorversion isc_win32os_servicepackmajor diff --git a/lib/isc/win32/libisc.dsp.in b/lib/isc/win32/libisc.dsp.in index a68dd9e3..2c06974a 100644 --- a/lib/isc/win32/libisc.dsp.in +++ b/lib/isc/win32/libisc.dsp.in @@ -561,6 +561,10 @@ SOURCE=..\include\isc\timer.h # End Source File # Begin Source File +SOURCE=..\include\isc\tm.h +# End Source File +# Begin Source File + SOURCE=.\include\isc\win32os.h # End Source File # Begin Source File @@ -805,6 +809,10 @@ SOURCE=..\timer.c # End Source File # Begin Source File +SOURCE=..\tm.c +# End Source File +# Begin Source File + SOURCE=.\win32os.c # End Source File # End Group diff --git a/lib/isc/win32/libisc.mak.in b/lib/isc/win32/libisc.mak.in index f1c754a0..5cca6d96 100644 --- a/lib/isc/win32/libisc.mak.in +++ b/lib/isc/win32/libisc.mak.in @@ -192,6 +192,7 @@ CLEAN : -@erase "$(INTDIR)\thread.obj" -@erase "$(INTDIR)\time.obj" -@erase "$(INTDIR)\timer.obj" + -@erase "$(INTDIR)\tm.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\version.obj" -@erase "$(INTDIR)\win32os.obj" @@ -289,6 +290,7 @@ LINK32_OBJS= \ "$(INTDIR)\task.obj" \ "$(INTDIR)\taskpool.obj" \ "$(INTDIR)\timer.obj" \ + "$(INTDIR)\tm.obj" \ "$(INTDIR)\parseint.obj" \ "$(INTDIR)\pool.obj" \ "$(INTDIR)\portset.obj" \ @@ -469,6 +471,8 @@ CLEAN : -@erase "$(INTDIR)\time.sbr" -@erase "$(INTDIR)\timer.obj" -@erase "$(INTDIR)\timer.sbr" + -@erase "$(INTDIR)\tm.obj" + -@erase "$(INTDIR)\tm.sbr" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(INTDIR)\version.obj" @@ -567,6 +571,7 @@ BSC32_SBRS= \ "$(INTDIR)\task.sbr" \ "$(INTDIR)\taskpool.sbr" \ "$(INTDIR)\timer.sbr" \ + "$(INTDIR)\tm.sbr" \ "$(INTDIR)\parseint.sbr" \ "$(INTDIR)\pool.sbr" \ "$(INTDIR)\portset.sbr" \ @@ -658,6 +663,7 @@ LINK32_OBJS= \ "$(INTDIR)\task.obj" \ "$(INTDIR)\taskpool.obj" \ "$(INTDIR)\timer.obj" \ + "$(INTDIR)\tm.obj" \ "$(INTDIR)\parseint.obj" \ "$(INTDIR)\pool.obj" \ "$(INTDIR)\portset.obj" \ @@ -2105,6 +2111,24 @@ SOURCE=..\timer.c !ENDIF +SOURCE=..\tm.c + +!IF "$(CFG)" == "libisc - @PLATFORM@ Release" + + +"$(INTDIR)\tm.obj" : $(SOURCE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "libisc - @PLATFORM@ Debug" + + +"$(INTDIR)\tm.obj" "$(INTDIR)\tm.sbr" : $(SOURCE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + !ENDIF diff --git a/lib/isc/win32/libisc.vcxproj.filters.in b/lib/isc/win32/libisc.vcxproj.filters.in index ea3c2e30..e7b3c793 100644 --- a/lib/isc/win32/libisc.vcxproj.filters.in +++ b/lib/isc/win32/libisc.vcxproj.filters.in @@ -248,6 +248,9 @@ <ClInclude Include="..\include\isc\timer.h">
<Filter>Library Header Files</Filter>
</ClInclude>
+ <ClInclude Include="..\include\isc\tm.h">
+ <Filter>Library Header Files</Filter>
+ </ClInclude>
<ClInclude Include="..\include\isc\types.h">
<Filter>Library Header Files</Filter>
</ClInclude>
@@ -593,5 +596,8 @@ <ClCompile Include="..\timer.c">
<Filter>Library Source Files</Filter>
</ClCompile>
+ <ClCompile Include="..\tm.c">
+ <Filter>Library Source Files</Filter>
+ </ClCompile>
</ItemGroup>
-</Project>
\ No newline at end of file +</Project>
diff --git a/lib/isc/win32/libisc.vcxproj.in b/lib/isc/win32/libisc.vcxproj.in index 4e459cec..7a915240 100644 --- a/lib/isc/win32/libisc.vcxproj.in +++ b/lib/isc/win32/libisc.vcxproj.in @@ -312,6 +312,7 @@ copy /Y @VCREDIST_PATH@ ..\Build\Release\ <ClInclude Include="..\include\isc\task.h" />
<ClInclude Include="..\include\isc\taskpool.h" />
<ClInclude Include="..\include\isc\timer.h" />
+ <ClInclude Include="..\include\isc\tm.h" />
<ClInclude Include="..\include\isc\types.h" />
<ClInclude Include="..\include\isc\util.h" />
<ClInclude Include="..\include\isc\version.h" />
@@ -405,6 +406,7 @@ copy /Y @VCREDIST_PATH@ ..\Build\Release\ <ClCompile Include="..\task.c" />
<ClCompile Include="..\taskpool.c" />
<ClCompile Include="..\timer.c" />
+ <ClCompile Include="..\tm.c" />
<ClCompile Include="app.c" />
<ClCompile Include="condition.c" />
<ClCompile Include="dir.c" />
@@ -434,4 +436,4 @@ copy /Y @VCREDIST_PATH@ ..\Build\Release\ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
-</Project>
\ No newline at end of file +</Project>
diff --git a/lib/isc/win32/time.c b/lib/isc/win32/time.c index 6c38e25a..d6993f93 100644 --- a/lib/isc/win32/time.c +++ b/lib/isc/win32/time.c @@ -30,6 +30,7 @@ #include <isc/assertions.h> #include <isc/time.h> +#include <isc/tm.h> #include <isc/util.h> /* @@ -318,32 +319,6 @@ isc_time_formathttptimestamp(const isc_time_t *t, char *buf, unsigned int len) { } } -static time_t -timetfromtm(struct tm *tm) { - time_t ret; - int i, yday = 0, leapday; - int mdays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 }; - - leapday = ((((tm->tm_year + 1900 ) % 4) == 0 && - ((tm->tm_year + 1900 ) % 100) != 0) || - ((tm->tm_year + 1900 ) % 400) == 0) ? 1 : 0; - mdays[1] += leapday; - - yday = tm->tm_mday - 1; - for (i = 1; i <= tm->tm_mon; i++) - yday += mdays[i - 1]; - ret = tm->tm_sec + - (60 * tm->tm_min) + - (3600 * tm->tm_hour) + - (86400 * (yday + - ((tm->tm_year - 70) * 365) + - ((tm->tm_year - 69) / 4) - - ((tm->tm_year - 1) / 100) + - ((tm->tm_year + 299) / 400))); - return (ret); -} - -#include "strptime.c" isc_result_t isc_time_parsehttptimestamp(char *buf, isc_time_t *t) { struct tm t_tm; @@ -352,10 +327,10 @@ isc_time_parsehttptimestamp(char *buf, isc_time_t *t) { REQUIRE(buf != NULL); REQUIRE(t != NULL); - p = strptime(buf, "%a, %d %b %Y %H:%M:%S", &t_tm); + p = isc_tm_strptime(buf, "%a, %d %b %Y %H:%M:%S", &t_tm); if (p == NULL) return (ISC_R_UNEXPECTED); - when = timetfromtm(&t_tm); + when = isc_tm_timegm(&t_tm); if (when == -1) return (ISC_R_UNEXPECTED); isc_time_set(t, when, 0); @@ -1 +1 @@ -SRCID=f7a59390 +SRCID=ea195f0b @@ -9,5 +9,5 @@ MAJORVER=9 MINORVER=9 PATCHVER=5 RELEASETYPE=rc -RELEASEVER=1 +RELEASEVER=2 EXTENSIONS= |