�ɲɾ�����ӯ�����һ��ˣ��������С���˴��ͣ�������P���ҹ��ñ˽��ά�Բ��������˸߸ԣ�������ơ��ҹ��ñ�����ά�Բ���ˡ���˳^�ӣ������ӡ� ���ͯj�ӣ��ƺ���ӣ� ? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!man.nslookup.html000064400000035054152530214170010065 0ustar00 nslookup

Name

nslookup — query Internet name servers interactively

Synopsis

nslookup [-option] [name | -] [server]

DESCRIPTION

Nslookup is a program to query Internet domain name servers. Nslookup has two modes: interactive and non-interactive. Interactive mode allows the user to query name servers for information about various hosts and domains or to print a list of hosts in a domain. Non-interactive mode is used to print just the name and requested information for a host or domain.

ARGUMENTS

Interactive mode is entered in the following cases:

  1. when no arguments are given (the default name server will be used)

  2. when the first argument is a hyphen (-) and the second argument is the host name or Internet address of a name server.

Non-interactive mode is used when the name or Internet address of the host to be looked up is given as the first argument. The optional second argument specifies the host name or address of a name server.

Options can also be specified on the command line if they precede the arguments and are prefixed with a hyphen. For example, to change the default query type to host information, and the initial timeout to 10 seconds, type:

nslookup -query=hinfo  -timeout=10

The -version option causes nslookup to print the version number and immediately exits.

INTERACTIVE COMMANDS

host [server]

Look up information for host using the current default server or using server, if specified. If host is an Internet address and the query type is A or PTR, the name of the host is returned. If host is a name and does not have a trailing period, the search list is used to qualify the name.

To look up a host not in the current domain, append a period to the name.

server domain

lserver domain

Change the default server to domain; lserver uses the initial server to look up information about domain, while server uses the current default server. If an authoritative answer can't be found, the names of servers that might have the answer are returned.

root

not implemented

finger

not implemented

ls

not implemented

view

not implemented

help

not implemented

?

not implemented

exit

Exits the program.

set keyword[=value]

This command is used to change state information that affects the lookups. Valid keywords are:

all

Prints the current values of the frequently used options to set. Information about the current default server and host is also printed.

class=value

Change the query class to one of:

IN

the Internet class

CH

the Chaos class

HS

the Hesiod class

ANY

wildcard

The class specifies the protocol group of the information.

(Default = IN; abbreviation = cl)

[no]debug

Turn on or off the display of the full response packet and any intermediate response packets when searching.

(Default = nodebug; abbreviation = [no]deb)

[no]d2

Turn debugging mode on or off. This displays more about what nslookup is doing.

(Default = nod2)

domain=name

Sets the search list to name.

[no]search

If the lookup request contains at least one period but doesn't end with a trailing period, append the domain names in the domain search list to the request until an answer is received.

(Default = search)

port=value

Change the default TCP/UDP name server port to value.

(Default = 53; abbreviation = po)

querytype=value

type=value

Change the type of the information query.

(Default = A and then AAAA; abbreviations = q, ty)

Note: It is only possible to specify one query type, only the default behavior looks up both when an alternative is not specified.

[no]recurse

Tell the name server to query other servers if it does not have the information.

(Default = recurse; abbreviation = [no]rec)

ndots=number

Set the number of dots (label separators) in a domain that will disable searching. Absolute names always stop searching.

retry=number

Set the number of retries to number.

timeout=number

Change the initial timeout interval for waiting for a reply to number seconds.

[no]vc

Always use a virtual circuit when sending requests to the server.

(Default = novc)

[no]fail

Try the next nameserver if a nameserver responds with SERVFAIL or a referral (nofail) or terminate query (fail) on such a response.

(Default = nofail)

RETURN VALUES

nslookup returns with an exit status of 1 if any query failed, and 0 otherwise.

IDN SUPPORT

If nslookup has been built with IDN (internationalized domain name) support, it can accept and display non-ASCII domain names. nslookup appropriately converts character encoding of domain name before sending a request to DNS server or displaying a reply from the server. If you'd like to turn off the IDN support for some reason, define the IDN_DISABLE environment variable. The IDN support is disabled if the variable is set when nslookup runs or when the standard output is not a tty.

FILES

/etc/resolv.conf

SEE ALSO

dig(1), host(1), named(8).

BIND 9.11.36 (Extended Support Version)

man.named.conf.html000064400000222062152530214170010220 0ustar00 named.conf

Name

named.conf — configuration file for named

Synopsis

named.conf

DESCRIPTION

named.conf is the configuration file for named. Statements are enclosed in braces and terminated with a semi-colon. Clauses in the statements are also semi-colon terminated. The usual comment styles are supported:

C style: /* */

C++ style: // to end of line

Unix style: # to end of line

ACL


aclstring{address_match_element;...};

CONTROLS


controls{
inet(ipv4_address|ipv6_address|
*)[port(integer|*)]allow
{address_match_element;...}[
keys{string;...}][read-only
boolean];
unixquoted_stringperminteger
ownerintegergroupinteger[
keys{string;...}][read-only
boolean];
};

DLZ


dlzstring{
databasestring;
searchboolean;
};

DYNDB


dyndbstringquoted_string{
unspecified-text};

KEY


keystring{
algorithmstring;
secretstring;
};

LOGGING


logging{
categorystring{string;...};
channelstring{
bufferedboolean;
filequoted_string[versions("unlimited"|integer)
][sizesize];
null;
print-categoryboolean;
print-severityboolean;
print-timeboolean;
severitylog_severity;
stderr;
syslog[syslog_facility];
};
};

LWRES


lwres{
listen-on[portinteger][dscpinteger]{(ipv4_address
|ipv6_address)[portinteger][dscpinteger];...};
lwres-clientsinteger;
lwres-tasksinteger;
ndotsinteger;
search{string;...};
viewstring[class];
};

MANAGED-KEYS


managed-keys{stringstringinteger
integerintegerquoted_string;...};

MASTERS


mastersstring[portinteger][dscp
integer]{(masters|ipv4_address[
portinteger]|ipv6_address[port
integer])[keystring];...};

OPTIONS


options{
acache-cleaning-intervalinteger;
acache-enableboolean;
additional-from-authboolean;
additional-from-cacheboolean;
allow-new-zonesboolean;
allow-notify{address_match_element;...};
allow-query{address_match_element;...};
allow-query-cache{address_match_element;...};
allow-query-cache-on{address_match_element;...};
allow-query-on{address_match_element;...};
allow-recursion{address_match_element;...};
allow-recursion-on{address_match_element;...};
allow-transfer{address_match_element;...};
allow-update{address_match_element;...};
allow-update-forwarding{address_match_element;...};
also-notify[portinteger][dscpinteger]{(masters|
ipv4_address[portinteger]|ipv6_address[port
integer])[keystring];...};
alt-transfer-source(ipv4_address|*)[port(integer|*)
][dscpinteger];
alt-transfer-source-v6(ipv6_address|*)[port(integer|
*)][dscpinteger];
answer-cookieboolean;
attach-cachestring;
auth-nxdomainboolean;//defaultchanged
auto-dnssec(allow|maintain|off);
automatic-interface-scanboolean;
avoid-v4-udp-ports{portrange;...};
avoid-v6-udp-ports{portrange;...};
bindkeys-filequoted_string;
blackhole{address_match_element;...};
cache-filequoted_string;
catalog-zones{zonestring[default-masters[portinteger]
[dscpinteger]{(masters|ipv4_address[port
integer]|ipv6_address[portinteger])[key
string];...}][zone-directoryquoted_string][
in-memoryboolean][min-update-intervalinteger];...};
check-dup-records(fail|warn|ignore);
check-integrityboolean;
check-mx(fail|warn|ignore);
check-mx-cname(fail|warn|ignore);
check-names(master|slave|response
)(fail|warn|ignore);
check-siblingboolean;
check-spf(warn|ignore);
check-srv-cname(fail|warn|ignore);
check-wildcardboolean;
cleaning-intervalinteger;
clients-per-queryinteger;
cookie-algorithm(aes|sha1|sha256|siphash24);
cookie-secretstring;
coresize(default|unlimited|sizeval);
datasize(default|unlimited|sizeval);
deny-answer-addresses{address_match_element;...}[
except-from{quoted_string;...}];
deny-answer-aliases{quoted_string;...}[except-from{
quoted_string;...}];
dialup(notify|notify-passive|passive|refresh|boolean);
directoryquoted_string;
disable-algorithmsstring{string;
...};
disable-ds-digestsstring{string;
...};
disable-empty-zonestring;
dns64netprefix{
break-dnssecboolean;
clients{address_match_element;...};
exclude{address_match_element;...};
mapped{address_match_element;...};
recursive-onlyboolean;
suffixipv6_address;
};
dns64-contactstring;
dns64-serverstring;
dnssec-accept-expiredboolean;
dnssec-dnskey-kskonlyboolean;
dnssec-enableboolean;
dnssec-loadkeys-intervalinteger;
dnssec-lookaside(stringtrust-anchor
string|auto|no);
dnssec-must-be-securestringboolean;
dnssec-secure-to-insecureboolean;
dnssec-update-mode(maintain|no-resign);
dnssec-validation(yes|no|auto);
dnstap{(all|auth|client|forwarder|
resolver)[(query|response)];...};
dnstap-identity(quoted_string|none|
hostname);
dnstap-output(file|unix)quoted_string;
dnstap-version(quoted_string|none);
dscpinteger;
dual-stack-servers[portinteger]{(quoted_string[port
integer][dscpinteger]|ipv4_address[port
integer][dscpinteger]|ipv6_address[port
integer][dscpinteger]);...};
dump-filequoted_string;
edns-udp-sizeinteger;
empty-contactstring;
empty-serverstring;
empty-zones-enableboolean;
fetch-quota-paramsintegerfixedpointfixedpointfixedpoint;
fetches-per-serverinteger[(drop|fail)];
fetches-per-zoneinteger[(drop|fail)];
files(default|unlimited|sizeval);
filter-aaaa{address_match_element;...};
filter-aaaa-on-v4(break-dnssec|boolean);
filter-aaaa-on-v6(break-dnssec|boolean);
flush-zones-on-shutdownboolean;
forward(first|only);
forwarders[portinteger][dscpinteger]{(ipv4_address
|ipv6_address)[portinteger][dscpinteger];...};
fstrm-set-buffer-hintinteger;
fstrm-set-flush-timeoutinteger;
fstrm-set-input-queue-sizeinteger;
fstrm-set-output-notify-thresholdinteger;
fstrm-set-output-queue-model(mpsc|spsc);
fstrm-set-output-queue-sizeinteger;
fstrm-set-reopen-intervalinteger;
geoip-directory(quoted_string|none);
geoip-use-ecsboolean;
heartbeat-intervalinteger;
hostname(quoted_string|none);
inline-signingboolean;
interface-intervalinteger;
ixfr-from-differences(master|slave|boolean);
keep-response-order{address_match_element;...};
key-directoryquoted_string;
lame-ttlttlval;
listen-on[portinteger][dscp
integer]{
address_match_element;...};
listen-on-v6[portinteger][dscp
integer]{
address_match_element;...};
lmdb-mapsizesizeval;
lock-file(quoted_string|none);
managed-keys-directoryquoted_string;
masterfile-format(map|raw|text);
masterfile-style(full|relative);
match-mapped-addressesboolean;
max-acache-size(unlimited|sizeval);
max-cache-size(default|unlimited|sizeval|percentage);
max-cache-ttlinteger;
max-clients-per-queryinteger;
max-journal-size(unlimited|sizeval);
max-ncache-ttlinteger;
max-recordsinteger;
max-recursion-depthinteger;
max-recursion-queriesinteger;
max-refresh-timeinteger;
max-retry-timeinteger;
max-rsa-exponent-sizeinteger;
max-transfer-idle-ininteger;
max-transfer-idle-outinteger;
max-transfer-time-ininteger;
max-transfer-time-outinteger;
max-udp-sizeinteger;
max-zone-ttl(unlimited|ttlval);
memstatisticsboolean;
memstatistics-filequoted_string;
message-compressionboolean;
min-refresh-timeinteger;
min-retry-timeinteger;
minimal-anyboolean;
minimal-responses(no-auth|no-auth-recursive|boolean);
multi-masterboolean;
no-case-compress{address_match_element;...};
nocookie-udp-sizeinteger;
notify(explicit|master-only|boolean);
notify-delayinteger;
notify-rateinteger;
notify-source(ipv4_address|*)[port(integer|*)][
dscpinteger];
notify-source-v6(ipv6_address|*)[port(integer|*)]
[dscpinteger];
notify-to-soaboolean;
nta-lifetimettlval;
nta-recheckttlval;
nxdomain-redirectstring;
pid-file(quoted_string|none);
portinteger;
preferred-gluestring;
prefetchinteger[integer];
provide-ixfrboolean;
query-source(([address](ipv4_address|*)[port(
integer|*)])|([[address](ipv4_address|*)]
port(integer|*)))[dscpinteger];
query-source-v6(([address](ipv6_address|*)[port(
integer|*)])|([[address](ipv6_address|*)]
port(integer|*)))[dscpinteger];
querylogboolean;
random-devicequoted_string;
rate-limit{
all-per-secondinteger;
errors-per-secondinteger;
exempt-clients{address_match_element;...};
ipv4-prefix-lengthinteger;
ipv6-prefix-lengthinteger;
log-onlyboolean;
max-table-sizeinteger;
min-table-sizeinteger;
nodata-per-secondinteger;
nxdomains-per-secondinteger;
qps-scaleinteger;
referrals-per-secondinteger;
responses-per-secondinteger;
slipinteger;
windowinteger;
};
recursing-filequoted_string;
recursionboolean;
recursive-clientsinteger;
request-expireboolean;
request-ixfrboolean;
request-nsidboolean;
require-server-cookieboolean;
reserved-socketsinteger;
resolver-query-timeoutinteger;
response-policy{zonestring[logboolean][max-policy-ttl
integer][policy(cname|disabled|drop|given|no-op
|nodata|nxdomain|passthru|tcp-onlyquoted_string)][
recursive-onlyboolean];...}[break-dnssecboolean][
max-policy-ttlinteger][min-ns-dotsinteger][
nsip-wait-recurseboolean][qname-wait-recurseboolean]
[recursive-onlyboolean];
root-delegation-only[exclude{quoted_string;...}];
root-key-sentinelboolean;
rrset-order{[classstring][typestring][name
quoted_string]stringstring;...};
secroots-filequoted_string;
send-cookieboolean;
serial-query-rateinteger;
serial-update-method(date|increment|unixtime);
server-id(quoted_string|none|hostname);
servfail-ttlttlval;
session-keyalgstring;
session-keyfile(quoted_string|none);
session-keynamestring;
sig-signing-nodesinteger;
sig-signing-signaturesinteger;
sig-signing-typeinteger;
sig-validity-intervalinteger[integer];
sortlist{address_match_element;...};
stacksize(default|unlimited|sizeval);
startup-notify-rateinteger;
statistics-filequoted_string;
tcp-clientsinteger;
tcp-listen-queueinteger;
tkey-dhkeyquoted_stringinteger;
tkey-domainquoted_string;
tkey-gssapi-credentialquoted_string;
tkey-gssapi-keytabquoted_string;
transfer-format(many-answers|one-answer);
transfer-message-sizeinteger;
transfer-source(ipv4_address|*)[port(integer|*)][
dscpinteger];
transfer-source-v6(ipv6_address|*)[port(integer|*)
][dscpinteger];
transfers-ininteger;
transfers-outinteger;
transfers-per-nsinteger;
trust-anchor-telemetryboolean;//experimental
try-tcp-refreshboolean;
update-check-kskboolean;
use-alt-transfer-sourceboolean;
use-v4-udp-ports{portrange;...};
use-v6-udp-ports{portrange;...};
v6-biasinteger;
version(quoted_string|none);
zero-no-soa-ttlboolean;
zero-no-soa-ttl-cacheboolean;
zone-statistics(full|terse|none|boolean);
};

SERVER


servernetprefix{
bogusboolean;
ednsboolean;
edns-udp-sizeinteger;
edns-versioninteger;
keysserver_key;
max-udp-sizeinteger;
notify-source(ipv4_address|*)[port(integer|*)][
dscpinteger];
notify-source-v6(ipv6_address|*)[port(integer|*)]
[dscpinteger];
provide-ixfrboolean;
query-source(([address](ipv4_address|*)[port(
integer|*)])|([[address](ipv4_address|*)]
port(integer|*)))[dscpinteger];
query-source-v6(([address](ipv6_address|*)[port(
integer|*)])|([[address](ipv6_address|*)]
port(integer|*)))[dscpinteger];
request-expireboolean;
request-ixfrboolean;
request-nsidboolean;
send-cookieboolean;
tcp-onlyboolean;
transfer-format(many-answers|one-answer);
transfer-source(ipv4_address|*)[port(integer|*)][
dscpinteger];
transfer-source-v6(ipv6_address|*)[port(integer|*)
][dscpinteger];
transfersinteger;
};

STATISTICS-CHANNELS


statistics-channels{
inet(ipv4_address|ipv6_address|
*)[port(integer|*)][
allow{address_match_element;...
}];
};

TRUSTED-KEYS


trusted-keys{stringintegerinteger
integerquoted_string;...};

VIEW


viewstring[class]{
acache-cleaning-intervalinteger;
acache-enableboolean;
additional-from-authboolean;
additional-from-cacheboolean;
allow-new-zonesboolean;
allow-notify{address_match_element;...};
allow-query{address_match_element;...};
allow-query-cache{address_match_element;...};
allow-query-cache-on{address_match_element;...};
allow-query-on{address_match_element;...};
allow-recursion{address_match_element;...};
allow-recursion-on{address_match_element;...};
allow-transfer{address_match_element;...};
allow-update{address_match_element;...};
allow-update-forwarding{address_match_element;...};
also-notify[portinteger][dscpinteger]{(masters|
ipv4_address[portinteger]|ipv6_address[port
integer])[keystring];...};
alt-transfer-source(ipv4_address|*)[port(integer|*)
][dscpinteger];
alt-transfer-source-v6(ipv6_address|*)[port(integer|
*)][dscpinteger];
attach-cachestring;
auth-nxdomainboolean;//defaultchanged
auto-dnssec(allow|maintain|off);
cache-filequoted_string;
catalog-zones{zonestring[default-masters[portinteger]
[dscpinteger]{(masters|ipv4_address[port
integer]|ipv6_address[portinteger])[key
string];...}][zone-directoryquoted_string][
in-memoryboolean][min-update-intervalinteger];...};
check-dup-records(fail|warn|ignore);
check-integrityboolean;
check-mx(fail|warn|ignore);
check-mx-cname(fail|warn|ignore);
check-names(master|slave|response
)(fail|warn|ignore);
check-siblingboolean;
check-spf(warn|ignore);
check-srv-cname(fail|warn|ignore);
check-wildcardboolean;
cleaning-intervalinteger;
clients-per-queryinteger;
deny-answer-addresses{address_match_element;...}[
except-from{quoted_string;...}];
deny-answer-aliases{quoted_string;...}[except-from{
quoted_string;...}];
dialup(notify|notify-passive|passive|refresh|boolean);
disable-algorithmsstring{string;
...};
disable-ds-digestsstring{string;
...};
disable-empty-zonestring;
dlzstring{
databasestring;
searchboolean;
};
dns64netprefix{
break-dnssecboolean;
clients{address_match_element;...};
exclude{address_match_element;...};
mapped{address_match_element;...};
recursive-onlyboolean;
suffixipv6_address;
};
dns64-contactstring;
dns64-serverstring;
dnssec-accept-expiredboolean;
dnssec-dnskey-kskonlyboolean;
dnssec-enableboolean;
dnssec-loadkeys-intervalinteger;
dnssec-lookaside(stringtrust-anchor
string|auto|no);
dnssec-must-be-securestringboolean;
dnssec-secure-to-insecureboolean;
dnssec-update-mode(maintain|no-resign);
dnssec-validation(yes|no|auto);
dnstap{(all|auth|client|forwarder|
resolver)[(query|response)];...};
dual-stack-servers[portinteger]{(quoted_string[port
integer][dscpinteger]|ipv4_address[port
integer][dscpinteger]|ipv6_address[port
integer][dscpinteger]);...};
dyndbstringquoted_string{
unspecified-text};
edns-udp-sizeinteger;
empty-contactstring;
empty-serverstring;
empty-zones-enableboolean;
fetch-quota-paramsintegerfixedpointfixedpointfixedpoint;
fetches-per-serverinteger[(drop|fail)];
fetches-per-zoneinteger[(drop|fail)];
filter-aaaa{address_match_element;...};
filter-aaaa-on-v4(break-dnssec|boolean);
filter-aaaa-on-v6(break-dnssec|boolean);
forward(first|only);
forwarders[portinteger][dscpinteger]{(ipv4_address
|ipv6_address)[portinteger][dscpinteger];...};
inline-signingboolean;
ixfr-from-differences(master|slave|boolean);
keystring{
algorithmstring;
secretstring;
};
key-directoryquoted_string;
lame-ttlttlval;
lmdb-mapsizesizeval;
managed-keys{stringstring
integerintegerinteger
quoted_string;...};
masterfile-format(map|raw|text);
masterfile-style(full|relative);
match-clients{address_match_element;...};
match-destinations{address_match_element;...};
match-recursive-onlyboolean;
max-acache-size(unlimited|sizeval);
max-cache-size(default|unlimited|sizeval|percentage);
max-cache-ttlinteger;
max-clients-per-queryinteger;
max-journal-size(unlimited|sizeval);
max-ncache-ttlinteger;
max-recordsinteger;
max-recursion-depthinteger;
max-recursion-queriesinteger;
max-refresh-timeinteger;
max-retry-timeinteger;
max-transfer-idle-ininteger;
max-transfer-idle-outinteger;
max-transfer-time-ininteger;
max-transfer-time-outinteger;
max-udp-sizeinteger;
max-zone-ttl(unlimited|ttlval);
message-compressionboolean;
min-refresh-timeinteger;
min-retry-timeinteger;
minimal-anyboolean;
minimal-responses(no-auth|no-auth-recursive|boolean);
multi-masterboolean;
no-case-compress{address_match_element;...};
nocookie-udp-sizeinteger;
notify(explicit|master-only|boolean);
notify-delayinteger;
notify-source(ipv4_address|*)[port(integer|*)][
dscpinteger];
notify-source-v6(ipv6_address|*)[port(integer|*)]
[dscpinteger];
notify-to-soaboolean;
nta-lifetimettlval;
nta-recheckttlval;
nxdomain-redirectstring;
preferred-gluestring;
prefetchinteger[integer];
provide-ixfrboolean;
query-source(([address](ipv4_address|*)[port(
integer|*)])|([[address](ipv4_address|*)]
port(integer|*)))[dscpinteger];
query-source-v6(([address](ipv6_address|*)[port(
integer|*)])|([[address](ipv6_address|*)]
port(integer|*)))[dscpinteger];
rate-limit{
all-per-secondinteger;
errors-per-secondinteger;
exempt-clients{address_match_element;...};
ipv4-prefix-lengthinteger;
ipv6-prefix-lengthinteger;
log-onlyboolean;
max-table-sizeinteger;
min-table-sizeinteger;
nodata-per-secondinteger;
nxdomains-per-secondinteger;
qps-scaleinteger;
referrals-per-secondinteger;
responses-per-secondinteger;
slipinteger;
windowinteger;
};
recursionboolean;
request-expireboolean;
request-ixfrboolean;
request-nsidboolean;
require-server-cookieboolean;
resolver-query-timeoutinteger;
response-policy{zonestring[logboolean][max-policy-ttl
integer][policy(cname|disabled|drop|given|no-op
|nodata|nxdomain|passthru|tcp-onlyquoted_string)][
recursive-onlyboolean];...}[break-dnssecboolean][
max-policy-ttlinteger][min-ns-dotsinteger][
nsip-wait-recurseboolean][qname-wait-recurseboolean]
[recursive-onlyboolean];
root-delegation-only[exclude{quoted_string;...}];
root-key-sentinelboolean;
rrset-order{[classstring][typestring][name
quoted_string]stringstring;...};
send-cookieboolean;
serial-update-method(date|increment|unixtime);
servernetprefix{
bogusboolean;
ednsboolean;
edns-udp-sizeinteger;
edns-versioninteger;
keysserver_key;
max-udp-sizeinteger;
notify-source(ipv4_address|*)[port(integer|*
)][dscpinteger];
notify-source-v6(ipv6_address|*)[port(integer
|*)][dscpinteger];
provide-ixfrboolean;
query-source(([address](ipv4_address|*)[port
(integer|*)])|([[address](
ipv4_address|*)]port(integer|*)))[
dscpinteger];
query-source-v6(([address](ipv6_address|*)[
port(integer|*)])|([[address](
ipv6_address|*)]port(integer|*)))[
dscpinteger];
request-expireboolean;
request-ixfrboolean;
request-nsidboolean;
send-cookieboolean;
tcp-onlyboolean;
transfer-format(many-answers|one-answer);
transfer-source(ipv4_address|*)[port(integer|
*)][dscpinteger];
transfer-source-v6(ipv6_address|*)[port(
integer|*)][dscpinteger];
transfersinteger;
};
servfail-ttlttlval;
sig-signing-nodesinteger;
sig-signing-signaturesinteger;
sig-signing-typeinteger;
sig-validity-intervalinteger[integer];
sortlist{address_match_element;...};
transfer-format(many-answers|one-answer);
transfer-source(ipv4_address|*)[port(integer|*)][
dscpinteger];
transfer-source-v6(ipv6_address|*)[port(integer|*)
][dscpinteger];
trust-anchor-telemetryboolean;//experimental
trusted-keys{stringinteger
integerintegerquoted_string;
...};
try-tcp-refreshboolean;
update-check-kskboolean;
use-alt-transfer-sourceboolean;
v6-biasinteger;
zero-no-soa-ttlboolean;
zero-no-soa-ttl-cacheboolean;
zonestring[class]{
allow-notify{address_match_element;...};
allow-query{address_match_element;...};
allow-query-on{address_match_element;...};
allow-transfer{address_match_element;...};
allow-update{address_match_element;...};
allow-update-forwarding{address_match_element;...};
also-notify[portinteger][dscpinteger]{(
masters|ipv4_address[portinteger]|
ipv6_address[portinteger])[keystring];
...};
alt-transfer-source(ipv4_address|*)[port(
integer|*)][dscpinteger];
alt-transfer-source-v6(ipv6_address|*)[port(
integer|*)][dscpinteger];
auto-dnssec(allow|maintain|off);
check-dup-records(fail|warn|ignore);
check-integrityboolean;
check-mx(fail|warn|ignore);
check-mx-cname(fail|warn|ignore);
check-names(fail|warn|ignore);
check-siblingboolean;
check-spf(warn|ignore);
check-srv-cname(fail|warn|ignore);
check-wildcardboolean;
databasestring;
delegation-onlyboolean;
dialup(notify|notify-passive|passive|refresh|
boolean);
dlzstring;
dnssec-dnskey-kskonlyboolean;
dnssec-loadkeys-intervalinteger;
dnssec-secure-to-insecureboolean;
dnssec-update-mode(maintain|no-resign);
filequoted_string;
forward(first|only);
forwarders[portinteger][dscpinteger]{(
ipv4_address|ipv6_address)[portinteger][
dscpinteger];...};
in-viewstring;
inline-signingboolean;
ixfr-from-differencesboolean;
journalquoted_string;
key-directoryquoted_string;
masterfile-format(map|raw|text);
masterfile-style(full|relative);
masters[portinteger][dscpinteger]{(masters
|ipv4_address[portinteger]|ipv6_address[
portinteger])[keystring];...};
max-ixfr-log-size(default|unlimited|
max-journal-size(unlimited|sizeval);
max-recordsinteger;
max-refresh-timeinteger;
max-retry-timeinteger;
max-transfer-idle-ininteger;
max-transfer-idle-outinteger;
max-transfer-time-ininteger;
max-transfer-time-outinteger;
max-zone-ttl(unlimited|ttlval);
min-refresh-timeinteger;
min-retry-timeinteger;
multi-masterboolean;
notify(explicit|master-only|boolean);
notify-delayinteger;
notify-source(ipv4_address|*)[port(integer|*
)][dscpinteger];
notify-source-v6(ipv6_address|*)[port(integer
|*)][dscpinteger];
notify-to-soaboolean;
pubkeyinteger
integer
integer
request-expireboolean;
request-ixfrboolean;
serial-update-method(date|increment|unixtime);
server-addresses{(ipv4_address|ipv6_address);...};
server-names{quoted_string;...};
sig-signing-nodesinteger;
sig-signing-signaturesinteger;
sig-signing-typeinteger;
sig-validity-intervalinteger[integer];
transfer-source(ipv4_address|*)[port(integer|
*)][dscpinteger];
transfer-source-v6(ipv6_address|*)[port(
integer|*)][dscpinteger];
try-tcp-refreshboolean;
type(delegation-only|forward|hint|master|redirect
|slave|static-stub|stub);
update-check-kskboolean;
update-policy(local|{(deny|grant)string(
6to4-self|external|krb5-self|krb5-selfsub|
krb5-subdomain|ms-self|ms-selfsub|ms-subdomain|
name|self|selfsub|selfwild|subdomain|tcp-self
|wildcard|zonesub)[string]rrtypelist;...};
use-alt-transfer-sourceboolean;
zero-no-soa-ttlboolean;
zone-statistics(full|terse|none|boolean);
};
zone-statistics(full|terse|none|boolean);
};

ZONE


zonestring[class]{
allow-notify{address_match_element;...};
allow-query{address_match_element;...};
allow-query-on{address_match_element;...};
allow-transfer{address_match_element;...};
allow-update{address_match_element;...};
allow-update-forwarding{address_match_element;...};
also-notify[portinteger][dscpinteger]{(masters|
ipv4_address[portinteger]|ipv6_address[port
integer])[keystring];...};
alt-transfer-source(ipv4_address|*)[port(integer|*)
][dscpinteger];
alt-transfer-source-v6(ipv6_address|*)[port(integer|
*)][dscpinteger];
auto-dnssec(allow|maintain|off);
check-dup-records(fail|warn|ignore);
check-integrityboolean;
check-mx(fail|warn|ignore);
check-mx-cname(fail|warn|ignore);
check-names(fail|warn|ignore);
check-siblingboolean;
check-spf(warn|ignore);
check-srv-cname(fail|warn|ignore);
check-wildcardboolean;
databasestring;
delegation-onlyboolean;
dialup(notify|notify-passive|passive|refresh|boolean);
dlzstring;
dnssec-dnskey-kskonlyboolean;
dnssec-loadkeys-intervalinteger;
dnssec-secure-to-insecureboolean;
dnssec-update-mode(maintain|no-resign);
filequoted_string;
forward(first|only);
forwarders[portinteger][dscpinteger]{(ipv4_address
|ipv6_address)[portinteger][dscpinteger];...};
in-viewstring;
inline-signingboolean;
ixfr-from-differencesboolean;
journalquoted_string;
key-directoryquoted_string;
masterfile-format(map|raw|text);
masterfile-style(full|relative);
masters[portinteger][dscpinteger]{(masters|
ipv4_address[portinteger]|ipv6_address[port
integer])[keystring];...};
max-journal-size(unlimited|sizeval);
max-recordsinteger;
max-refresh-timeinteger;
max-retry-timeinteger;
max-transfer-idle-ininteger;
max-transfer-idle-outinteger;
max-transfer-time-ininteger;
max-transfer-time-outinteger;
max-zone-ttl(unlimited|ttlval);
min-refresh-timeinteger;
min-retry-timeinteger;
multi-masterboolean;
notify(explicit|master-only|boolean);
notify-delayinteger;
notify-source(ipv4_address|*)[port(integer|*)][
dscpinteger];
notify-source-v6(ipv6_address|*)[port(integer|*)]
[dscpinteger];
notify-to-soaboolean;
pubkeyintegerinteger
request-expireboolean;
request-ixfrboolean;
serial-update-method(date|increment|unixtime);
server-addresses{(ipv4_address|ipv6_address);...};
server-names{quoted_string;...};
sig-signing-nodesinteger;
sig-signing-signaturesinteger;
sig-signing-typeinteger;
sig-validity-intervalinteger[integer];
transfer-source(ipv4_address|*)[port(integer|*)][
dscpinteger];
transfer-source-v6(ipv6_address|*)[port(integer|*)
][dscpinteger];
try-tcp-refreshboolean;
type(delegation-only|forward|hint|master|redirect|slave
|static-stub|stub);
update-check-kskboolean;
update-policy(local|{(deny|grant)string(6to4-self|
external|krb5-self|krb5-selfsub|krb5-subdomain|ms-self
|ms-selfsub|ms-subdomain|name|self|selfsub|selfwild
|subdomain|tcp-self|wildcard|zonesub)[string]
rrtypelist;...};
use-alt-transfer-sourceboolean;
zero-no-soa-ttlboolean;
zone-statistics(full|terse|none|boolean);
};

FILES

/etc/named.conf

SEE ALSO

ddns-confgen(8), named(8), named-checkconf(8), rndc(8), rndc-confgen(8), BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

man.nsupdate.html000064400000066632152530214170010044 0ustar00 nsupdate

Name

nsupdate — Dynamic DNS update utility

Synopsis

nsupdate [-d] [-D] [-i] [-L level] [[-g] | [-o] | [-l] | [-y [hmac:]keyname:secret] | [-k keyfile]] [-t timeout] [-u udptimeout] [-r udpretries] [-R randomdev] [-v] [-T] [-P] [-V] [filename]

DESCRIPTION

nsupdate is used to submit Dynamic DNS Update requests as defined in RFC 2136 to a name server. This allows resource records to be added or removed from a zone without manually editing the zone file. A single update request can contain requests to add or remove more than one resource record.

Zones that are under dynamic control via nsupdate or a DHCP server should not be edited by hand. Manual edits could conflict with dynamic updates and cause data to be lost.

The resource records that are dynamically added or removed with nsupdate have to be in the same zone. Requests are sent to the zone's master server. This is identified by the MNAME field of the zone's SOA record.

Transaction signatures can be used to authenticate the Dynamic DNS updates. These use the TSIG resource record type described in RFC 2845 or the SIG(0) record described in RFC 2535 and RFC 2931 or GSS-TSIG as described in RFC 3645.

TSIG relies on a shared secret that should only be known to nsupdate and the name server. For instance, suitable key and server statements would be added to /etc/named.conf so that the name server can associate the appropriate secret key and algorithm with the IP address of the client application that will be using TSIG authentication. You can use ddns-confgen to generate suitable configuration fragments. nsupdate uses the -y or -k options to provide the TSIG shared secret. These options are mutually exclusive.

SIG(0) uses public key cryptography. To use a SIG(0) key, the public key must be stored in a KEY record in a zone served by the name server.

GSS-TSIG uses Kerberos credentials. Standard GSS-TSIG mode is switched on with the -g flag. A non-standards-compliant variant of GSS-TSIG used by Windows 2000 can be switched on with the -o flag.

OPTIONS

-d

Debug mode. This provides tracing information about the update requests that are made and the replies received from the name server.

-D

Extra debug mode.

-i

Force interactive mode, even when standard input is not a terminal.

-k keyfile

The file containing the TSIG authentication key. Keyfiles may be in two formats: a single file containing a named.conf-format key statement, which may be generated automatically by ddns-confgen, or a pair of files whose names are of the format K{name}.+157.+{random}.key and K{name}.+157.+{random}.private, which can be generated by dnssec-keygen. The -k may also be used to specify a SIG(0) key used to authenticate Dynamic DNS update requests. In this case, the key specified is not an HMAC-MD5 key.

-l

Local-host only mode. This sets the server address to localhost (disabling the server so that the server address cannot be overridden). Connections to the local server will use a TSIG key found in /var/run/named/session.key, which is automatically generated by named if any local master zone has set update-policy to local. The location of this key file can be overridden with the -k option.

-L level

Set the logging debug level. If zero, logging is disabled.

-p port

Set the port to use for connections to a name server. The default is 53.

-P

Print the list of private BIND-specific resource record types whose format is understood by nsupdate. See also the -T option.

-r udpretries

The number of UDP retries. The default is 3. If zero, only one update request will be made.

-R randomdev

Where to obtain randomness. If the operating system does not provide a /dev/random or equivalent device, the default source of randomness is keyboard input. randomdev specifies the name of a character device or file containing random data to be used instead of the default. The special value keyboard indicates that keyboard input should be used. This option may be specified multiple times.

-t timeout

The maximum time an update request can take before it is aborted. The default is 300 seconds. Zero can be used to disable the timeout.

-T

Print the list of IANA standard resource record types whose format is understood by nsupdate. nsupdate will exit after the lists are printed. The -T option can be combined with the -P option.

Other types can be entered using "TYPEXXXXX" where "XXXXX" is the decimal value of the type with no leading zeros. The rdata, if present, will be parsed using the UNKNOWN rdata format, (<backslash> <hash> <space> <length> <space> <hexstring>).

-u udptimeout

The UDP retry interval. The default is 3 seconds. If zero, the interval will be computed from the timeout interval and number of UDP retries.

-v

Use TCP even for small update requests. By default, nsupdate uses UDP to send update requests to the name server unless they are too large to fit in a UDP request in which case TCP will be used. TCP may be preferable when a batch of update requests is made.

-V

Print the version number and exit.

-y [hmac:]keyname:secret

Literal TSIG authentication key. keyname is the name of the key, and secret is the base64 encoded shared secret. hmac is the name of the key algorithm; valid choices are hmac-md5, hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384, or hmac-sha512. If hmac is not specified, the default is hmac-md5 or if MD5 was disabled hmac-sha256.

NOTE: Use of the -y option is discouraged because the shared secret is supplied as a command line argument in clear text. This may be visible in the output from ps(1) or in a history file maintained by the user's shell.

INPUT FORMAT

nsupdate reads input from filename or standard input. Each command is supplied on exactly one line of input. Some commands are for administrative purposes. The others are either update instructions or prerequisite checks on the contents of the zone. These checks set conditions that some name or set of resource records (RRset) either exists or is absent from the zone. These conditions must be met if the entire update request is to succeed. Updates will be rejected if the tests for the prerequisite conditions fail.

Every update request consists of zero or more prerequisites and zero or more updates. This allows a suitably authenticated update request to proceed if some specified resource records are present or missing from the zone. A blank input line (or the send command) causes the accumulated commands to be sent as one Dynamic DNS update request to the name server.

The command formats and their meaning are as follows:

server {servername} [port]

Sends all dynamic update requests to the name server servername. When no server statement is provided, nsupdate will send updates to the master server of the correct zone. The MNAME field of that zone's SOA record will identify the master server for that zone. port is the port number on servername where the dynamic update requests get sent. If no port number is specified, the default DNS port number of 53 is used.

local {address} [port]

Sends all dynamic update requests using the local address. When no local statement is provided, nsupdate will send updates using an address and port chosen by the system. port can additionally be used to make requests come from a specific port. If no port number is specified, the system will assign one.

zone {zonename}

Specifies that all updates are to be made to the zone zonename. If no zone statement is provided, nsupdate will attempt determine the correct zone to update based on the rest of the input.

class {classname}

Specify the default class. If no class is specified, the default class is IN.

ttl {seconds}

Specify the default time to live for records to be added. The value none will clear the default ttl.

key [hmac:] {keyname} {secret}

Specifies that all updates are to be TSIG-signed using the keyname secret pair. If hmac is specified, then it sets the signing algorithm in use; the default is hmac-md5 or if MD5 was disabled hmac-sha256. The key command overrides any key specified on the command line via -y or -k.

gsstsig

Use GSS-TSIG to sign the updated. This is equivalent to specifying -g on the command line.

oldgsstsig

Use the Windows 2000 version of GSS-TSIG to sign the updated. This is equivalent to specifying -o on the command line.

realm {[realm_name]}

When using GSS-TSIG use realm_name rather than the default realm in krb5.conf. If no realm is specified the saved realm is cleared.

check-names {[yes_or_no]}

Turn on or off check-names processing on records to be added. Check-names has no effect on prerequisites or records to be deleted. By default check-names processing is on. If check-names processing fails the record will not be added to the UPDATE message.

[prereq] nxdomain {domain-name}

Requires that no resource record of any type exists with name domain-name.

[prereq] yxdomain {domain-name}

Requires that domain-name exists (has as at least one resource record, of any type).

[prereq] nxrrset {domain-name} [class] {type}

Requires that no resource record exists of the specified type, class and domain-name. If class is omitted, IN (internet) is assumed.

[prereq] yxrrset {domain-name} [class] {type}

This requires that a resource record of the specified type, class and domain-name must exist. If class is omitted, IN (internet) is assumed.

[prereq] yxrrset {domain-name} [class] {type} {data...}

The data from each set of prerequisites of this form sharing a common type, class, and domain-name are combined to form a set of RRs. This set of RRs must exactly match the set of RRs existing in the zone at the given type, class, and domain-name. The data are written in the standard text representation of the resource record's RDATA.

[update] del[ete] {domain-name} [ttl] [class] [type [data...]]

Deletes any resource records named domain-name. If type and data is provided, only matching resource records will be removed. The internet class is assumed if class is not supplied. The ttl is ignored, and is only allowed for compatibility.

[update] add {domain-name} {ttl} [class] {type} {data...}

Adds a new resource record with the specified ttl, class and data.

show

Displays the current message, containing all of the prerequisites and updates specified since the last send.

send

Sends the current message. This is equivalent to entering a blank line.

answer

Displays the answer.

debug

Turn on debugging.

version

Print version number.

help

Print a list of commands.

Lines beginning with a semicolon are comments and are ignored.

EXAMPLES

The examples below show how nsupdate could be used to insert and delete resource records from the example.com zone. Notice that the input in each example contains a trailing blank line so that a group of commands are sent as one dynamic update request to the master name server for example.com.

# nsupdate
> update delete oldhost.example.com A
> update add newhost.example.com 86400 A 172.16.1.1
> send

Any A records for oldhost.example.com are deleted. And an A record for newhost.example.com with IP address 172.16.1.1 is added. The newly-added record has a 1 day TTL (86400 seconds).

# nsupdate
> prereq nxdomain nickname.example.com
> update add nickname.example.com 86400 CNAME somehost.example.com
> send

The prerequisite condition gets the name server to check that there are no resource records of any type for nickname.example.com. If there are, the update request fails. If this name does not exist, a CNAME for it is added. This ensures that when the CNAME is added, it cannot conflict with the long-standing rule in RFC 1034 that a name must not exist as any other record type if it exists as a CNAME. (The rule has been updated for DNSSEC in RFC 2535 to allow CNAMEs to have RRSIG, DNSKEY and NSEC records.)

FILES

/etc/resolv.conf

used to identify default name server

/var/run/named/session.key

sets the default TSIG key for use in local-only mode

K{name}.+157.+{random}.key

base-64 encoding of HMAC-MD5 key created by dnssec-keygen(8).

K{name}.+157.+{random}.private

base-64 encoding of HMAC-MD5 key created by dnssec-keygen(8).

SEE ALSO

RFC 2136, RFC 3007, RFC 2104, RFC 2845, RFC 1034, RFC 2535, RFC 2931, named(8), ddns-confgen(8), dnssec-keygen(8).

BUGS

The TSIG key is redundantly stored in two separate files. This is a consequence of nsupdate using the DST library for its cryptographic operations, and may change in future releases.

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch06.html000064400002427774152530214170007220 0ustar00 Chapter6.BIND 9 Configuration Reference

Chapter6.BIND 9 Configuration Reference

Table of Contents

Configuration File Elements
Address Match Lists
Comment Syntax
Configuration File Grammar
acl Statement Grammar
acl Statement Definition and Usage
controls Statement Grammar
controls Statement Definition and Usage
include Statement Grammar
include Statement Definition and Usage
key Statement Grammar
key Statement Definition and Usage
logging Statement Grammar
logging Statement Definition and Usage
lwres Statement Grammar
lwres Statement Definition and Usage
masters Statement Grammar
masters Statement Definition and Usage
options Statement Grammar
options Statement Definition and Usage
server Statement Grammar
server Statement Definition and Usage
statistics-channels Statement Grammar
statistics-channels Statement Definition and Usage
trusted-keys Statement Grammar
trusted-keys Statement Definition and Usage
managed-keys Statement Grammar
managed-keys Statement Definition and Usage
view Statement Grammar
view Statement Definition and Usage
zone Statement Grammar
zone Statement Definition and Usage
Zone File
Types of Resource Records and When to Use Them
Discussion of MX Records
Setting TTLs
Inverse Mapping in IPv4
Other Zone File Directives
BIND Primary File Extension: the $GENERATE Directive
Additional File Formats
BIND 9 Statistics
The Statistics File
Statistics Counters

Configuration File Elements

Following is a list of elements used throughout the BIND configuration file documentation:

acl_name

The name of an address_match_list as defined by the acl statement.

address_match_list

A list of one or more ip_addr, ip_prefix, key_id, or acl_name elements; see the section called “Address Match Lists”.

masters_list

A named list of one or more ip_addr with optional key_id and/or ip_port. A masters_list may include other masters_lists.

domain_name

A quoted string which is used as a DNS name; for example, my.test.domain.

namelist

A list of one or more domain_name elements.

dotted_decimal

One to four integers valued 0 through 255 separated by dots ("."), such as 123.45.67 or 89.123.45.67.

ip4_addr

An IPv4 address with exactly four elements in dotted_decimal notation.

ip6_addr

An IPv6 address, such as 2001:db8::1234. IPv6-scoped addresses that have ambiguity on their scope zones must be disambiguated by an appropriate zone ID with the percent character ("%") as a delimiter. It is strongly recommended to use string zone names rather than numeric identifiers, to be robust against system configuration changes. However, since there is no standard mapping for such names and identifier values, only interface names as link identifiers are supported, assuming one-to-one mapping between interfaces and links. For example, a link-local address fe80::1 on the link attached to the interface ne0 can be specified as fe80::1%ne0. Note that on most systems link-local addresses always have ambiguity and need to be disambiguated.

ip_addr

An ip4_addr or ip6_addr.

ip_dscp

A number between 0 and 63, used to select a differentiated services code point (DSCP) value for use with outgoing traffic on operating systems that support DSCP.

ip_port

An IP port number. The number is limited to 0 through 65535, with values below 1024 typically restricted to use by processes running as root. In some cases, an asterisk ("*") character can be used as a placeholder to select a random high-numbered port.

ip_prefix

An IP network specified as an ip_addr, followed by a slash ("/") and then the number of bits in the netmask. Trailing zeros in an ip_addr may be omitted. For example, 127/8 is the network 127.0.0.0 with netmask 255.0.0.0 and 1.2.3.0/28 is network 1.2.3.0 with netmask 255.255.255.240.

When specifying a prefix involving a IPv6-scoped address, the scope may be omitted. In that case, the prefix matches packets from any scope.

key_id

A domain_name representing the name of a shared key, to be used for transaction security.

key_list

A list of one or more key_ids, separated by semicolons and ending with a semicolon.

number

A non-negative 32-bit integer (i.e., a number between 0 and 4294967295, inclusive). Its acceptable value might be further limited by the context in which it is used.

fixedpoint

A non-negative real number that can be specified to the nearest one-hundredth. Up to five digits can be specified before a decimal point, and up to two digits after, so the maximum value is 99999.99. Acceptable values might be further limited by the contexts in which they are used.

path_name

A quoted string which is used as a pathname, such as zones/master/my.test.domain.

port_list

A list of an ip_port or a port range. A port range is specified in the form of range followed by two ip_ports, port_low and port_high, which represents port numbers from port_low through port_high, inclusive. port_low must not be larger than port_high. For example, range 1024 65535 represents ports from 1024 through 65535. In either case an asterisk ("*") character is not allowed as a valid ip_port.

size_spec

A 64-bit unsigned integer, or the keywords unlimited or default.

Integers may take values 0 <= value <= 18446744073709551615, though certain parameters (such as max-journal-size) may use a more limited range within these extremes. In most cases, setting a value to 0 does not literally mean zero; it means "undefined" or "as big as possible," depending on the context. See the explanations of particular parameters that use size_spec for details on how they interpret its use.

Numeric values can optionally be followed by a scaling factor: K or k for kilobytes, M or m for megabytes, and G or g for gigabytes, which scale by 1024, 1024*1024, and 1024*1024*1024 respectively.

unlimited generally means "as big as possible," and is usually the best way to safely set a very large number.

default uses the limit that was in force when the server was started.

size_or_percent

A size_spec or integer value followed by "%" to represent percent.

The behavior is exactly the same as size_spec, but size_or_percent also allows specifying a positive integer value followed by the "%"" sign to represent percent.

yes_or_no

Either yes or no. The words true and false are also accepted, as are the numbers 1 and 0.

dialup_option

One of yes, no, notify, notify-passive, refresh, or passive. When used in a zone, notify-passive, refresh, and passive are restricted to secondary and stub zones.

Address Match Lists

Syntax

address_match_list = address_match_list_element ; ...

address_match_list_element = [ ! ] ( ip_address | ip_prefix |
     key key_id | acl_name | { address_match_list } )

Definition and Usage

Address match lists are primarily used to determine access control for various server operations. They are also used in the listen-on and sortlist statements. The elements which constitute an address match list can be any of the following:

  • an IP address (IPv4 or IPv6)
  • an IP prefix (in "/" notation)
  • a key ID, as defined by the key statement
  • the name of an address match list defined with the acl statement
  • a nested address match list enclosed in braces

Elements can be negated with a leading exclamation mark ("!"), and the match list names "any", "none", "localhost", and "localnets" are predefined. More information on those names can be found in the description of the acl statement.

The addition of the key clause made the name of this syntactic element something of a misnomer, since security keys can be used to validate access without regard to a host or network address. Nonetheless, the term "address match list" is still used throughout the documentation.

When a given IP address or prefix is compared to an address match list, the comparison takes place in approximately O(1) time. However, key comparisons require that the list of keys be traversed until a matching key is found, and therefore may be somewhat slower.

The interpretation of a match depends on whether the list is being used for access control, defining listen-on ports, or in a sortlist, and whether the element was negated.

When used as an access control list, a non-negated match allows access and a negated match denies access. If there is no match, access is denied. The clauses allow-notify, allow-recursion, allow-recursion-on, allow-query, allow-query-on, allow-query-cache, allow-query-cache-on, allow-transfer, allow-update, allow-update-forwarding, blackhole, and keep-response-order all use address match lists. Similarly, the listen-on option causes the server to refuse queries on any of the machine's addresses which do not match the list.

Order of insertion is significant. If more than one element in an ACL is found to match a given IP address or prefix, preference is given to the one that came first in the ACL definition. Because of this first-match behavior, an element that defines a subset of another element in the list should come before the broader element, regardless of whether either is negated. For example, in 1.2.3/24; ! 1.2.3.13; the 1.2.3.13 element is completely useless because the algorithm matches any lookup for 1.2.3.13 to the 1.2.3/24 element. Using ! 1.2.3.13; 1.2.3/24 fixes that problem by blocking 1.2.3.13 via the negation, but all other 1.2.3.* hosts pass through.

Comment Syntax

The BIND 9 comment syntax allows comments to appear anywhere that whitespace may appear in a BIND configuration file. To appeal to programmers of all kinds, they can be written in the C, C++, or shell/perl style.

Syntax

/* This is a BIND comment as in C */

// This is a BIND comment as in C++

# This is a BIND comment as in common Unix shells
# and perl

Definition and Usage

Comments may appear anywhere that whitespace may appear in a BIND configuration file.

C-style comments start with the two characters /* (slash, star) and end with */ (star, slash). Because they are completely delimited with these characters, they can be used to comment only a portion of a line or to span multiple lines.

C-style comments cannot be nested. For example, the following is not valid because the entire comment ends with the first */:

/* This is the start of a comment.
   This is still part of the comment.
/* This is an incorrect attempt at nesting a comment. */
   This is no longer in any comment. */

C++-style comments start with the two characters // (slash, slash) and continue to the end of the physical line. They cannot be continued across multiple physical lines; to have one logical comment span multiple lines, each line must use the // pair. For example:

// This is the start of a comment.  The next line
// is a new comment, even though it is logically
// part of the previous comment.

Shell-style (or perl-style) comments start with the character # (number sign) and continue to the end of the physical line, as in C++ comments. For example:

# This is the start of a comment.  The next line
# is a new comment, even though it is logically
# part of the previous comment.

Warning

The semicolon (";") character cannot start a comment, unlike in a zone file. The semicolon indicates the end of a configuration statement.

Configuration File Grammar

A BIND 9 configuration consists of statements and comments. Statements end with a semicolon; statements and comments are the only elements that can appear without enclosing braces. Many statements contain a block of sub-statements, which are also terminated with a semicolon.

The following statements are supported:

acl

Defines a named IP address matching list, for access control and other uses.

controls

Declares control channels to be used by the rndc utility.

include

Includes a file.

key

Specifies key information for use in authentication and authorization using TSIG.

logging

Specifies what information the server logs and where the log messages are sent.

lwres

Configures named to also act as a lightweight resolver daemon (lwresd).

masters

Defines a named list of primary servers for inclusion in stub and secondary zones' masters or also-notify lists.

options

Controls global server configuration options and sets defaults for other statements.

server

Sets certain configuration options on a per-server basis.

statistics-channels

Declares communication channels to get access to named statistics.

trusted-keys

Defines trusted DNSSEC keys.

managed-keys

Lists DNSSEC keys to be kept up-to-date using RFC 5011 trust anchor maintenance.

view

Defines a view.

zone

Defines a zone.

The logging and options statements may only occur once per configuration.

acl Statement Grammar

acl string { address_match_element; ... };

acl Statement Definition and Usage

The acl statement assigns a symbolic name to an address match list. It gets its name from one of the primary uses of address match lists: Access Control Lists (ACLs).

The following ACLs are built-in:

any

Matches all hosts.

none

Matches no hosts.

localhost

Matches the IPv4 and IPv6 addresses of all network interfaces on the system. When addresses are added or removed, the localhost ACL element is updated to reflect the changes.

localnets

Matches any host on an IPv4 or IPv6 network for which the system has an interface. When addresses are added or removed, the localnets ACL element is updated to reflect the changes. Some systems do not provide a way to determine the prefix lengths of local IPv6 addresses; in such cases, localnets only matches the local IPv6 addresses, just like localhost.

controls Statement Grammar

controls {
	inet ( ipv4_address | ipv6_address |
	    * ) [ port ( integer | * ) ] allow
	    { address_match_element; ... } [
	    keys { string; ... } ] [ read-only
	    boolean ];
	unix quoted_string perm integer
	    owner integer group integer [
	    keys { string; ... } ] [ read-only
	    boolean ];
};

controls Statement Definition and Usage

The controls statement declares control channels to be used by system administrators to manage the operation of the name server. These control channels are used by the rndc utility to send commands to and retrieve non-DNS results from a name server.

An inet control channel is a TCP socket listening at the specified ip_port on the specified ip_addr, which can be an IPv4 or IPv6 address. An ip_addr of * (asterisk) is interpreted as the IPv4 wildcard address; connections are accepted on any of the system's IPv4 addresses. To listen on the IPv6 wildcard address, use an ip_addr of ::. If rndc is only used on the local host, using the loopback address (127.0.0.1 or ::1) is recommended for maximum security.

If no port is specified, port 953 is used. The asterisk "*" cannot be used for ip_port.

The ability to issue commands over the control channel is restricted by the allow and keys clauses. Connections to the control channel are permitted based on the address_match_list. This is for simple IP address-based filtering only; any key_id elements of the address_match_list are ignored.

A unix control channel is a Unix domain socket listening at the specified path in the file system. Access to the socket is specified by the perm, owner, and group clauses. Note on some platforms (SunOS and Solaris), the permissions (perm) are applied to the parent directory as the permissions on the socket itself are ignored.

The primary authorization mechanism of the command channel is the key_list, which contains a list of key_ids. Each key_id in the key_list is authorized to execute commands over the control channel. See Remote Name Daemon Control application in the section called “Administrative Tools”) for information about configuring keys in rndc.

If the read-only clause is enabled, the control channel is limited to the following set of read-only commands: nta -dump, null, status, showzone, testgen, and zonestatus. By default, read-only is not enabled and the control channel allows read-write access.

If no controls statement is present, named sets up a default control channel listening on the loopback address 127.0.0.1 and its IPv6 counterpart ::1. In this case, and also when the controls statement is present but does not have a keys clause, named attempts to load the command channel key from the file rndc.key in /etc (or whatever sysconfdir was specified when BIND was built). To create an rndc.key file, run rndc-confgen -a.

The key name and the size of the secret cannot be easily changed; if it is desirable to change those things, make a rndc.conf with a custom key. The rndc.key file also has its permissions set such that only the owner of the file (the user that named is running as) can access it. For greater flexibility in allowing other users to access rndc commands, create a rndc.conf file and make it group-readable by a group that contains the users who should have access.

To disable the command channel, use an empty controls statement: controls { };.

include Statement Grammar

include filename;

include Statement Definition and Usage

The include statement inserts the specified file at the point where the include statement is encountered. The include statement facilitates the administration of configuration files by permitting the reading or writing of some things but not others. For example, the statement could include private keys that are readable only by the name server.

key Statement Grammar

key string {
	algorithm string;
	secret string;
};

key Statement Definition and Usage

The key statement defines a shared secret key for use with TSIG (see the section called “TSIG”) or the command channel (see the section called “controls Statement Definition and Usage”).

The key statement can occur at the top level of the configuration file or inside a view statement. Keys defined in top-level key statements can be used in all views. Keys intended for use in a controls statement (see the section called “controls Statement Definition and Usage”) must be defined at the top level.

The key_id, also known as the key name, is a domain name that uniquely identifies the key. It can be used in a server statement to cause requests sent to that server to be signed with this key, or in address match lists to verify that incoming requests have been signed with a key matching this name, algorithm, and secret.

The algorithm_id is a string that specifies a security/authentication algorithm. The named server supports hmac-md5, hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384, and hmac-sha512 TSIG authentication. Truncated hashes are supported by appending the minimum number of required bits preceded by a dash, e.g., hmac-sha1-80. The secret_string is the secret to be used by the algorithm, and is treated as a Base64-encoded string.

logging Statement Grammar

logging {
	category string { string; ... };
	channel string {
		buffered boolean;
		file quoted_string [ versions ( "unlimited" | integer )
		    ] [ size size ];
		null;
		print-category boolean;
		print-severity boolean;
		print-time boolean;
		severity log_severity;
		stderr;
		syslog [ syslog_facility ];
	};
};

logging Statement Definition and Usage

The logging statement configures a wide variety of logging options for the name server. Its channel phrase associates output methods, format options, and severity levels with a name that can then be used with the category phrase to select how various classes of messages are logged.

Only one logging statement is used to define as many channels and categories as desired. If there is no logging statement, the logging configuration is:

logging {
     category default { default_syslog; default_debug; };
     category unmatched { null; };
};

If named is started with the -L option, it logs to the specified file at startup, instead of using syslog. In this case the logging configuration is:

logging {
     category default { default_logfile; default_debug; };
     category unmatched { null; };
};

The logging configuration is only established when the entire configuration file has been parsed. When the server starts up, all logging messages regarding syntax errors in the configuration file go to the default channels, or to standard error if the -g option was specified.

The channel Phrase

All log output goes to one or more channels; there is no limit to the number of channels that can be created.

Every channel definition must include a destination clause that says whether messages selected for the channel go to a file, go to a particular syslog facility, go to the standard error stream, or are discarded. The definition can optionally also limit the message severity level that is accepted by the channel (the default is info), and whether to include a named-generated time stamp, the category name, and/or the severity level (the default is not to include any).

The null destination clause causes all messages sent to the channel to be discarded; in that case, other options for the channel are meaningless.

The file destination clause directs the channel to a disk file. It can include limitations both on how large the file is allowed to become, and on how many versions of the file are saved each time the file is opened.

If the versions log file option is used, then named retains that many backup versions of the file by renaming them when opening. For example, to keep three old versions of the file lamers.log, just before it is opened lamers.log.1 is renamed to lamers.log.2, lamers.log.0 is renamed to lamers.log.1, and lamers.log is renamed to lamers.log.0. The versions unlimited option can be set to not limit the number of versions. If a size option is associated with the log file, then renaming is only done when the file being opened exceeds the indicated size. No backup versions are kept by default; any existing log file is simply appended.

The size option for files is used to limit log growth. If the file ever exceeds the size, then named stops writing to the file unless it also has a versions option associated with it. If backup versions are kept, the files are rolled as described above and a new one begun. If there is no versions option, no more data is written to the log until some out-of-band mechanism removes or truncates the log to less than the maximum size. The default behavior is not to limit the size of the file.

Here is an example using the size and versions options:

channel an_example_channel {
    file "example.log" versions 3 size 20m;
    print-time yes;
    print-category yes;
};

The syslog destination clause directs the channel to the system log. Its argument is a syslog facility as described in the syslog man page. Known facilities are kern, user, mail, daemon, auth, syslog, lpr, news, uucp, cron, authpriv, ftp, local0, local1, local2, local3, local4, local5, local6, and local7; however, not all facilities are supported on all operating systems. How syslog handles messages sent to this facility is described in the syslog.conf man page. On a system which uses a very old version of syslog, which only uses two arguments to the openlog() function, then this clause is silently ignored.

On Windows machines, syslog messages are directed to the EventViewer.

The severity clause works like syslog's "priorities," except that they can also be used when writing straight to a file rather than using syslog. Messages which are not at least of the severity level given are not selected for the channel; messages of higher severity levels are accepted.

When using syslog, the syslog.conf priorities also determine what eventually passes through. For example, defining a channel facility and severity as daemon and debug, but only logging daemon.warning via syslog.conf, causes messages of severity info and notice to be dropped. If the situation were reversed, with named writing messages of only warning or higher, then syslogd would print all messages it received from the channel.

The stderr destination clause directs the channel to the server's standard error stream. This is intended for use when the server is running as a foreground process, as when debugging a configuration, for example.

The server can supply extensive debugging information when it is in debugging mode. If the server's global debug level is greater than zero, debugging mode is active. The global debug level is set either by starting the named server with the -d flag followed by a positive integer, or by running rndc trace. The global debug level can be set to zero, and debugging mode turned off, by running rndc notrace. All debugging messages in the server have a debug level; higher debug levels give more detailed output. Channels that specify a specific debug severity, for example:

channel specific_debug_level {
    file "foo";
    severity debug 3;
};

get debugging output of level 3 or less any time the server is in debugging mode, regardless of the global debugging level. Channels with dynamic severity use the server's global debug level to determine what messages to print.

If print-time is set to yes, then the date and time are logged. print-time may be specified for a syslog channel, but is usually unnecessary since syslog also logs the date and time. If print-category is set to yes, then the category of the message is logged as well. Finally, if print-severity is set, then the severity level of the message is logged. The print- options may be used in any combination, and are always printed in the following order: time, category, severity. Here is an example where all three print- options are on:

28-Feb-2000 15:05:32.863 general: notice: running

If buffered has been turned on, the output to files is not flushed after each log entry. By default all log messages are flushed.

There are four predefined channels that are used for named's default logging, as follows. If named is started with the -L, then a fifth channel, default_logfile, is added. How they are used is described in the section called “The category Phrase”.

channel default_syslog {
    // send to syslog's daemon facility
    syslog daemon;
    // only send priority info and higher
    severity info;
};

channel default_debug {
    // write to named.run in the working directory
    // Note: stderr is used instead of "named.run" if
    // the server is started with the '-g' option.
    file "named.run";
    // log at the server's current debug level
    severity dynamic;
};

channel default_stderr {
    // writes to stderr
    stderr;
    // only send priority info and higher
    severity info;
};

channel null {
   // toss anything sent to this channel
   null;
};

channel default_logfile {
    // this channel is only present if named is
    // started with the -L option, whose argument
    // provides the file name
    file "...";
    // log at the server's current debug level
    severity dynamic;
};

The default_debug channel has the special property that it only produces output when the server's debug level is non-zero. It normally writes to a file called named.run in the server's working directory.

For security reasons, when the -u command-line option is used, the named.run file is created only after named has changed to the new UID, and any debug output generated while named is starting - and still running as root - is discarded. To capture this output, run the server with the -L option to specify a default logfile, or the -g option to log to standard error which can be redirected to a file.

Once a channel is defined, it cannot be redefined. The built-in channels cannot be altered directly, but the default logging can be modified by pointing categories at defined channels.

The category Phrase

There are many categories, so desired logs can be sent anywhere while unwanted logs are ignored. If a list of channels is not specified for a category, log messages in that category are sent to the default category instead. If no default category is specified, the following "default default" is used:

category default { default_syslog; default_debug; };

If named is started with the -L option, the default category is:

category default { default_logfile; default_debug; };

As an example, let's say a user wants to log security events to a file, but also wants to keep the default logging behavior. They would specify the following:

channel my_security_channel {
    file "my_security_file";
    severity info;
};
category security {
    my_security_channel;
    default_syslog;
    default_debug;
};

To discard all messages in a category, specify the null channel:

category xfer-out { null; };
category notify { null; };

The following are the available categories and brief descriptions of the types of log information they contain. More categories may be added in future BIND releases.

client

Processing of client requests.

cname

Name servers that are skipped for being a CNAME rather than A/AAAA records.

config

Configuration file parsing and processing.

database

Messages relating to the databases used internally by the name server to store zone and cache data.

default

Logging options for those categories where no specific configuration has been defined.

delegation-only

Queries that have been forced to NXDOMAIN as the result of a delegation-only zone or a delegation-only in a forward, hint, or stub zone declaration.

dispatch

Dispatching of incoming packets to the server modules where they are to be processed.

dnssec

DNSSEC and TSIG protocol processing.

dnstap

The "dnstap" DNS traffic capture system.

edns-disabled

Log queries that have been forced to use plain DNS due to timeouts. This is often due to the remote servers not being RFC 1034-compliant (not always returning FORMERR or similar to EDNS queries and other extensions to the DNS when they are not understood). In other words, this is targeted at servers that fail to respond to DNS queries that they don't understand.

Note: the log message can also be due to packet loss. Before reporting servers for non-RFC 1034 compliance they should be re-tested to determine the nature of the non-compliance. This testing should prevent or reduce the number of false-positive reports.

Note: eventually named will have to stop treating such timeouts as due to RFC 1034 non-compliance and start treating it as plain packet loss. Falsely classifying packet loss as due to RFC 1034 non-compliance impacts DNSSEC validation, which requires EDNS for the DNSSEC records to be returned.

general

Catch-all for many things that still are not classified into categories.

lame-servers

Misconfigurations in remote servers, discovered by BIND 9 when trying to query those servers during resolution.

network

Network operations.

notify

The NOTIFY protocol.

queries

Location where queries should be logged.

At startup, specifying the category queries also enables query logging unless querylog option has been specified.

The query log entry first reports a client object identifier in @0x<hexadecimal-number> format. Next, it reports the client's IP address and port number, and the query name, class, and type. Next, it reports whether the Recursion Desired flag was set (+ if set, - if not set), whether the query was signed (S), whether EDNS was in use along with the EDNS version number (E(#)), whether TCP was used (T), whether DO (DNSSEC Ok) was set (D), whether CD (Checking Disabled) was set (C), whether a valid DNS Server COOKIE was received (V), and whether a DNS COOKIE option without a valid Server COOKIE was present (K). After this, the destination address the query was sent to is reported.

client 127.0.0.1#62536 (www.example.com): query: www.example.com IN AAAA +SE

client ::1#62537 (www.example.net): query: www.example.net IN AAAA -SE

The first part of this log message, showing the client address/port number and query name, is repeated in all subsequent log messages related to the same query.

query-errors

Information about queries that resulted in some failure.

rate-limit

The start, periodic, and final notices of the rate limiting of a stream of responses are logged at info severity in this category. These messages include a hash value of the domain name of the response and the name itself, except when there is insufficient memory to record the name for the final notice. The final notice is normally delayed until about one minute after rate limiting stops. A lack of memory can hurry the final notice, which is indicated by an initial asterisk (*). Various internal events are logged at debug level 1 and higher.

Rate limiting of individual requests is logged in the query-errors category.

resolver

DNS resolution, such as the recursive lookups performed on behalf of clients by a caching name server.

rpz

Information about errors in response policy zone files, rewritten responses, and, at the highest debug levels, mere rewriting attempts.

security

Approval and denial of requests.

spill

Queries that have been terminated, either by dropping or responding with SERVFAIL, as a result of a fetchlimit quota being exceeded.

trust-anchor-telemetry

Trust-anchor-telemetry requests received by named.

unmatched

Messages that named was unable to determine the class of, or for which there was no matching view. A one-line summary is also logged to the client category. This category is best sent to a file or stderr; by default it is sent to the null channel.

update

Dynamic updates.

update-security

Approval and denial of update requests.

xfer-in

Zone transfers the server is receiving.

xfer-out

Zone transfers the server is sending.

The query-errors Category

The query-errors category is used to indicate why and how specific queries resulted in responses which indicate an error. Normally, these messages will be logged at debug logging levels; note, however, that if query logging is active, some are logged at info. The logging levels are described below:

At debug level 1 or higher - or at info, when query logging is active - each response with response code SERVFAIL is logged as follows:

client 127.0.0.1#61502: query failed (SERVFAIL) for www.example.com/IN/AAAA at query.c:3880

This means an error resulting in SERVFAIL was detected at line 3880 of source file query.c. Log messages of this level are particularly helpful in identifying the cause of SERVFAIL for an authoritative server.

At debug level 2 or higher, detailed context information about recursive resolutions that resulted in SERVFAIL is logged. The log message looks like this:

fetch completed at resolver.c:2970 for www.example.com/A
in 10.000183: timed out/success [domain:example.com,
referral:2,restart:7,qrysent:8,timeout:5,lame:0,quota:0,neterr:0,
badresp:1,adberr:0,findfail:0,valfail:0]
            

The first part before the colon shows that a recursive resolution for AAAA records of www.example.com completed in 10.000183 seconds, and the final result that led to the SERVFAIL was determined at line 2970 of source file resolver.c.

The next part shows the detected final result and the latest result of DNSSEC validation. The latter is always "success" when no validation attempt was made. In this example, this query probably resulted in SERVFAIL because all name servers are down or unreachable, leading to a timeout in 10 seconds. DNSSEC validation was probably not attempted.

The last part, enclosed in square brackets, shows statistics collected for this particular resolution attempt. The domain field shows the deepest zone that the resolver reached; it is the zone where the error was finally detected. The meaning of the other fields is summarized in the following table.

referral

The number of referrals the resolver received throughout the resolution process. In the above example there are two, which are most likely com and example.com.

restart

The number of cycles that the resolver tried remote servers at the domain zone. In each cycle, the resolver sends one query (possibly resending it, depending on the response) to each known name server of the domain zone.

qrysent

The number of queries the resolver sent at the domain zone.

timeout

The number of timeouts since the resolver received the last response.

lame

The number of lame servers the resolver detected at the domain zone. A server is detected to be lame either by an invalid response or as a result of lookup in BIND 9's address database (ADB), where lame servers are cached.

quota

The number of times the resolver was unable to send a query because it had exceeded the permissible fetch quota for a server.

neterr

The number of erroneous results that the resolver encountered in sending queries at the domain zone. One common case is when the remote server is unreachable and the resolver receives an "ICMP unreachable" error message.

badresp

The number of unexpected responses (other than lame) to queries sent by the resolver at the domain zone.

adberr

Failures in finding remote server addresses of the domain zone in the ADB. One common case of this is that the remote server's name does not have any address records.

findfail

Failures to resolve remote server addresses. This is a total number of failures throughout the resolution process.

valfail

Failures of DNSSEC validation. Validation failures are counted throughout the resolution process (not limited to the domain zone), but should only happen in domain.

At debug level 3 or higher, the same messages as those at debug level 1 are logged for errors other than SERVFAIL. Note that negative responses such as NXDOMAIN are not errors, and are not logged at this debug level.

At debug level 4 or higher, the detailed context information logged at debug level 2 is logged for errors other than SERVFAIL and for negative responses such as NXDOMAIN.

lwres Statement Grammar

This is the grammar of the lwres statement in the named.conf file:

lwres {
  [ listen-on {
    ( ip_addr [ port ip_port ] [ dscp ip_dscp ] ; )
      ...
    }; ]
  [ view view_name; ]
  [ search { domain_name ; ... }; ]
  [ ndots number; ]
  [ lwres-tasks number; ]
  [ lwres-clients number; ]
};

lwres Statement Definition and Usage

The lwres statement configures the name server to also act as a lightweight resolver server. (See the section called “Running a Resolver Daemon”.) There may be multiple lwres statements configuring lightweight resolver servers with different properties.

The listen-on statement specifies a list of IPv4 addresses (and ports) that this instance of a lightweight resolver daemon should accept requests on. If no port is specified, port 921 is used. If this statement is omitted, requests are accepted on 127.0.0.1, port 921.

The view statement binds this instance of a lightweight resolver daemon to a view in the DNS namespace, so that the response is constructed in the same manner as a normal DNS query matching this view. If this statement is omitted, the default view is used; if there is no default view, an error is triggered.

The search statement is equivalent to the search statement in /etc/resolv.conf. It provides a list of domains which are appended to relative names in queries.

The ndots statement is equivalent to the ndots statement in /etc/resolv.conf. It indicates the minimum number of dots in a relative domain name that should result in an exact-match lookup before search path elements are appended.

The lwres-tasks statement specifies the number of worker threads the lightweight resolver dedicates to serving clients. By default, the number is the same as the number of CPUs on the system; this can be overridden using the -n command-line option when starting the server.

The lwres-clients statement specifies the number of client objects per thread the lightweight resolver should create to serve client queries. By default, if the lightweight resolver runs as a part of named, 256 client objects are created for each task; if it runs as lwresd, 1024 client objects are created for each thread. The maximum value is 32768; higher values are silently ignored and the maximum is used instead. Note that setting too high a value may overconsume system resources.

The maximum number of client queries that the lightweight resolver can handle at any one time equals lwres-tasks times lwres-clients.

masters Statement Grammar

masters string [ port integer ] [ dscp
    integer ] { ( masters | ipv4_address [
    port integer ] | ipv6_address [ port
    integer ] ) [ key string ]; ... };

masters Statement Definition and Usage

masters lists allow for a common set of primaries to be easily used by multiple stub and secondary zones in their masters or also-notify lists.

options Statement Grammar

This is the grammar of the options statement in the named.conf file:

options {
	acache-cleaning-interval integer;
	acache-enable boolean;
	additional-from-auth boolean;
	additional-from-cache boolean;
	allow-new-zones boolean;
	allow-notify { address_match_element; ... };
	allow-query { address_match_element; ... };
	allow-query-cache { address_match_element; ... };
	allow-query-cache-on { address_match_element; ... };
	allow-query-on { address_match_element; ... };
	allow-recursion { address_match_element; ... };
	allow-recursion-on { address_match_element; ... };
	allow-transfer { address_match_element; ... };
	allow-update { address_match_element; ... };
	allow-update-forwarding { address_match_element; ... };
	also-notify [ port integer ] [ dscp integer ] { ( masters |
	    ipv4_address [ port integer ] | ipv6_address [ port
	    integer ] ) [ key string ]; ... };
	alt-transfer-source ( ipv4_address | * ) [ port ( integer | * )
	    ] [ dscp integer ];
	alt-transfer-source-v6 ( ipv6_address | * ) [ port ( integer |
	    * ) ] [ dscp integer ];
	answer-cookie boolean;
	attach-cache string;
	auth-nxdomain boolean; // default changed
	auto-dnssec ( allow | maintain | off );
	automatic-interface-scan boolean;
	avoid-v4-udp-ports { portrange; ... };
	avoid-v6-udp-ports { portrange; ... };
	bindkeys-file quoted_string;
	blackhole { address_match_element; ... };
	cache-file quoted_string;
	catalog-zones { zone string [ default-masters [ port integer ]
	    [ dscp integer ] { ( masters | ipv4_address [ port
	    integer ] | ipv6_address [ port integer ] ) [ key
	    string ]; ... } ] [ zone-directory quoted_string ] [
	    in-memory boolean ] [ min-update-interval integer ]; ... };
	check-dup-records ( fail | warn | ignore );
	check-integrity boolean;
	check-mx ( fail | warn | ignore );
	check-mx-cname ( fail | warn | ignore );
	check-names ( master | slave | response
	    ) ( fail | warn | ignore );
	check-sibling boolean;
	check-spf ( warn | ignore );
	check-srv-cname ( fail | warn | ignore );
	check-wildcard boolean;
	cleaning-interval integer;
	clients-per-query integer;
	cookie-algorithm ( aes | sha1 | sha256 | siphash24 );
	cookie-secret string;
	coresize ( default | unlimited | sizeval );
	datasize ( default | unlimited | sizeval );
	deny-answer-addresses { address_match_element; ... } [
	    except-from { quoted_string; ... } ];
	deny-answer-aliases { quoted_string; ... } [ except-from {
	    quoted_string; ... } ];
	dialup ( notify | notify-passive | passive | refresh | boolean );
	directory quoted_string;
	disable-algorithms string { string;
	    ... };
	disable-ds-digests string { string;
	    ... };
	disable-empty-zone string;
	dns64 netprefix {
		break-dnssec boolean;
		clients { address_match_element; ... };
		exclude { address_match_element; ... };
		mapped { address_match_element; ... };
		recursive-only boolean;
		suffix ipv6_address;
	};
	dns64-contact string;
	dns64-server string;
	dnssec-accept-expired boolean;
	dnssec-dnskey-kskonly boolean;
	dnssec-enable boolean;
	dnssec-loadkeys-interval integer;
	dnssec-lookaside ( string trust-anchor
	    string | auto | no );
	dnssec-must-be-secure string boolean;
	dnssec-secure-to-insecure boolean;
	dnssec-update-mode ( maintain | no-resign );
	dnssec-validation ( yes | no | auto );
	dnstap { ( all | auth | client | forwarder |
	    resolver ) [ ( query | response ) ]; ... };
	dnstap-identity ( quoted_string | none |
	    hostname );
	dnstap-output ( file | unix ) quoted_string;
	dnstap-version ( quoted_string | none );
	dscp integer;
	dual-stack-servers [ port integer ] { ( quoted_string [ port
	    integer ] [ dscp integer ] | ipv4_address [ port
	    integer ] [ dscp integer ] | ipv6_address [ port
	    integer ] [ dscp integer ] ); ... };
	dump-file quoted_string;
	edns-udp-size integer;
	empty-contact string;
	empty-server string;
	empty-zones-enable boolean;
	fetch-quota-params integer fixedpoint fixedpoint fixedpoint;
	fetches-per-server integer [ ( drop | fail ) ];
	fetches-per-zone integer [ ( drop | fail ) ];
	files ( default | unlimited | sizeval );
	filter-aaaa { address_match_element; ... };
	filter-aaaa-on-v4 ( break-dnssec | boolean );
	filter-aaaa-on-v6 ( break-dnssec | boolean );
	flush-zones-on-shutdown boolean;
	forward ( first | only );
	forwarders [ port integer ] [ dscp integer ] { ( ipv4_address
	    | ipv6_address ) [ port integer ] [ dscp integer ]; ... };
	fstrm-set-buffer-hint integer;
	fstrm-set-flush-timeout integer;
	fstrm-set-input-queue-size integer;
	fstrm-set-output-notify-threshold integer;
	fstrm-set-output-queue-model ( mpsc | spsc );
	fstrm-set-output-queue-size integer;
	fstrm-set-reopen-interval integer;
	geoip-directory ( quoted_string | none );
	geoip-use-ecs boolean;
	heartbeat-interval integer;
	hostname ( quoted_string | none );
	inline-signing boolean;
	interface-interval integer;
	ixfr-from-differences ( master | slave | boolean );
	keep-response-order { address_match_element; ... };
	key-directory quoted_string;
	lame-ttl ttlval;
	listen-on [ port integer ] [ dscp
	    integer ] {
	    address_match_element; ... };
	listen-on-v6 [ port integer ] [ dscp
	    integer ] {
	    address_match_element; ... };
	lmdb-mapsize sizeval;
	lock-file ( quoted_string | none );
	managed-keys-directory quoted_string;
	masterfile-format ( map | raw | text );
	masterfile-style ( full | relative );
	match-mapped-addresses boolean;
	max-acache-size ( unlimited | sizeval );
	max-cache-size ( default | unlimited | sizeval | percentage );
	max-cache-ttl integer;
	max-clients-per-query integer;
	max-journal-size ( unlimited | sizeval );
	max-ncache-ttl integer;
	max-records integer;
	max-recursion-depth integer;
	max-recursion-queries integer;
	max-refresh-time integer;
	max-retry-time integer;
	max-rsa-exponent-size integer;
	max-transfer-idle-in integer;
	max-transfer-idle-out integer;
	max-transfer-time-in integer;
	max-transfer-time-out integer;
	max-udp-size integer;
	max-zone-ttl ( unlimited | ttlval );
	memstatistics boolean;
	memstatistics-file quoted_string;
	message-compression boolean;
	min-refresh-time integer;
	min-retry-time integer;
	minimal-any boolean;
	minimal-responses ( no-auth | no-auth-recursive | boolean );
	multi-master boolean;
	no-case-compress { address_match_element; ... };
	nocookie-udp-size integer;
	notify ( explicit | master-only | boolean );
	notify-delay integer;
	notify-rate integer;
	notify-source ( ipv4_address | * ) [ port ( integer | * ) ] [
	    dscp integer ];
	notify-source-v6 ( ipv6_address | * ) [ port ( integer | * ) ]
	    [ dscp integer ];
	notify-to-soa boolean;
	nta-lifetime ttlval;
	nta-recheck ttlval;
	nxdomain-redirect string;
	pid-file ( quoted_string | none );
	port integer;
	preferred-glue string;
	prefetch integer [ integer ];
	provide-ixfr boolean;
	query-source ( ( [ address ] ( ipv4_address | * ) [ port (
	    integer | * ) ] ) | ( [ [ address ] ( ipv4_address | * ) ]
	    port ( integer | * ) ) ) [ dscp integer ];
	query-source-v6 ( ( [ address ] ( ipv6_address | * ) [ port (
	    integer | * ) ] ) | ( [ [ address ] ( ipv6_address | * ) ]
	    port ( integer | * ) ) ) [ dscp integer ];
	querylog boolean;
	random-device quoted_string;
	rate-limit {
		all-per-second integer;
		errors-per-second integer;
		exempt-clients { address_match_element; ... };
		ipv4-prefix-length integer;
		ipv6-prefix-length integer;
		log-only boolean;
		max-table-size integer;
		min-table-size integer;
		nodata-per-second integer;
		nxdomains-per-second integer;
		qps-scale integer;
		referrals-per-second integer;
		responses-per-second integer;
		slip integer;
		window integer;
	};
	recursing-file quoted_string;
	recursion boolean;
	recursive-clients integer;
	request-expire boolean;
	request-ixfr boolean;
	request-nsid boolean;
	require-server-cookie boolean;
	reserved-sockets integer;
	resolver-query-timeout integer;
	response-policy { zone string [ log boolean ] [ max-policy-ttl
	    integer ] [ policy ( cname | disabled | drop | given | no-op
	    | nodata | nxdomain | passthru | tcp-only quoted_string ) ] [
	    recursive-only boolean ]; ... } [ break-dnssec boolean ] [
	    max-policy-ttl integer ] [ min-ns-dots integer ] [
	    nsip-wait-recurse boolean ] [ qname-wait-recurse boolean ]
	    [ recursive-only boolean ];
	root-delegation-only [ exclude { quoted_string; ... } ];
	root-key-sentinel boolean;
	rrset-order { [ class string ] [ type string ] [ name
	    quoted_string ] string string; ... };
	secroots-file quoted_string;
	send-cookie boolean;
	serial-query-rate integer;
	serial-update-method ( date | increment | unixtime );
	server-id ( quoted_string | none | hostname );
	servfail-ttl ttlval;
	session-keyalg string;
	session-keyfile ( quoted_string | none );
	session-keyname string;
	sig-signing-nodes integer;
	sig-signing-signatures integer;
	sig-signing-type integer;
	sig-validity-interval integer [ integer ];
	sortlist { address_match_element; ... };
	stacksize ( default | unlimited | sizeval );
	startup-notify-rate integer;
	statistics-file quoted_string;
	tcp-clients integer;
	tcp-listen-queue integer;
	tkey-dhkey quoted_string integer;
	tkey-domain quoted_string;
	tkey-gssapi-credential quoted_string;
	tkey-gssapi-keytab quoted_string;
	transfer-format ( many-answers | one-answer );
	transfer-message-size integer;
	transfer-source ( ipv4_address | * ) [ port ( integer | * ) ] [
	    dscp integer ];
	transfer-source-v6 ( ipv6_address | * ) [ port ( integer | * )
	    ] [ dscp integer ];
	transfers-in integer;
	transfers-out integer;
	transfers-per-ns integer;
	trust-anchor-telemetry boolean; // experimental
	try-tcp-refresh boolean;
	update-check-ksk boolean;
	use-alt-transfer-source boolean;
	use-v4-udp-ports { portrange; ... };
	use-v6-udp-ports { portrange; ... };
	v6-bias integer;
	version ( quoted_string | none );
	zero-no-soa-ttl boolean;
	zero-no-soa-ttl-cache boolean;
	zone-statistics ( full | terse | none | boolean );
};

options Statement Definition and Usage

The options statement sets up global options to be used by BIND. This statement may appear only once in a configuration file. If there is no options statement, an options block with each option set to its default is used.

attach-cache

This option allows multiple views to share a single cache database. Each view has its own cache database by default, but if multiple views have the same operational policy for name resolution and caching, those views can share a single cache to save memory, and possibly improve resolution efficiency, by using this option.

The attach-cache option may also be specified in view statements, in which case it overrides the global attach-cache option.

The cache_name specifies the cache to be shared. When the named server configures views which are supposed to share a cache, it creates a cache with the specified name for the first view of these sharing views. The rest of the views simply refer to the already-created cache.

One common configuration to share a cache is to allow all views to share a single cache. This can be done by specifying attach-cache as a global option with an arbitrary name.

Another possible operation is to allow a subset of all views to share a cache while the others retain their own caches. For example, if there are three views A, B, and C, and only A and B should share a cache, specify the attach-cache option as a view of A (or B)'s option, referring to the other view name:

  view "A" {
    // this view has its own cache
    ...
  };
  view "B" {
    // this view refers to A's cache
    attach-cache "A";
  };
  view "C" {
    // this view has its own cache
    ...
  };

Views that share a cache must have the same policy on configurable parameters that may affect caching. The current implementation requires the following configurable options be consistent among these views: check-names, cleaning-interval, dnssec-accept-expired, dnssec-validation, max-cache-ttl, max-ncache-ttl, max-cache-size, and zero-no-soa-ttl.

Note that there may be other parameters that may cause confusion if they are inconsistent for different views that share a single cache. For example, if these views define different sets of forwarders that can return different answers for the same question, sharing the answer does not make sense or could even be harmful. It is administrator's responsibility to ensure that configuration differences in different views do not cause disruption with a shared cache.

directory

This sets the working directory of the server. Any non-absolute pathnames in the configuration file are taken as relative to this directory. The default location for most server output files (e.g., named.run) is this directory. If a directory is not specified, the working directory defaults to ".", the directory from which the server was started. The directory specified should be an absolute path. It is strongly recommended that the directory be writable by the effective user ID of the named process.

dnstap

dnstap is a fast, flexible method for capturing and logging DNS traffic. Developed by Robert Edmonds at Farsight Security, Inc., and supported by multiple DNS implementations, dnstap uses libfstrm (a lightweight high-speed framing library, see https://github.com/farsightsec/fstrm) to send event payloads which are encoded using Protocol Buffers (libprotobuf-c, a mechanism for serializing structured data developed by Google, Inc.; see https://developers.google.com/protocol-buffers).

To enable dnstap at compile time, the fstrm and protobuf-c libraries must be available, and BIND must be configured with --enable-dnstap.

The dnstap option is a bracketed list of message types to be logged. These may be set differently for each view. Supported types are client, auth, resolver, and forwarder. Specifying type all causes all dnstap messages to be logged, regardless of type.

Each type may take an additional argument to indicate whether to log query messages or response messages; if not specified, both queries and responses are logged.

Example: To log all authoritative queries and responses, recursive client responses, and upstream queries sent by the resolver, use:

dnstap {
  auth;
  client response;
  resolver query;
};

Logged dnstap messages can be parsed using the dnstap-read utility (see dnstap-read(1) for details).

For more information on dnstap, see http://dnstap.info.

The fstrm library has a number of tunables that are exposed in named.conf, and can be modified if necessary to improve performance or prevent loss of data. These are:

  • fstrm-set-buffer-hint: The threshold number of bytes to accumulate in the output buffer before forcing a buffer flush. The minimum is 1024, the maximum is 65536, and the default is 8192.
  • fstrm-set-flush-timeout: The number of seconds to allow unflushed data to remain in the output buffer. The minimum is 1 second, the maximum is 600 seconds (10 minutes), and the default is 1 second.
  • fstrm-set-output-notify-threshold: The number of outstanding queue entries to allow on an input queue before waking the I/O thread. The minimum is 1 and the default is 32.
  • fstrm-set-output-queue-model: The queuing semantics to use for queue objects. The default is mpsc (multiple producer, single consumer); the other option is spsc (single producer, single consumer).
  • fstrm-set-input-queue-size: The number of queue entries to allocate for each input queue. This value must be a power of 2. The minimum is 2, the maximum is 16384, and the default is 512.
  • fstrm-set-output-queue-size: The number of queue entries to allocate for each output queue. The minimum is 2, the maximum is system-dependent and based on IOV_MAX, and the default is 64.
  • fstrm-set-reopen-interval: The number of seconds to wait between attempts to reopen a closed output stream. The minimum is 1 second, the maximum is 600 seconds (10 minutes), and the default is 5 seconds.

Note that all of the above minimum, maximum, and default values are set by the libfstrm library, and may be subject to change in future versions of the library. See the libfstrm documentation for more information.

dnstap-output

This configures the path to which the dnstap frame stream is sent if dnstap is enabled at compile time and active.

The first argument is either file or unix, indicating whether the destination is a file or a Unix domain socket. The second argument is the path of the file or socket. (Note: when using a socket, dnstap messages are only sent if another process such as fstrm_capture (provided with libfstrm) is listening on the socket.)

dnstap-output can only be set globally in options. Currently, it can only be set once while named is running; once set, it cannot be changed by rndc reload or rndc reconfig.

dnstap-identity

This specifies an identity string to send in dnstap messages. If set to hostname, which is the default, the server's hostname is sent. If set to none, no identity string is sent.

dnstap-version

This specifies a version string to send in dnstap messages. The default is the version number of the BIND release. If set to none, no version string is sent.

geoip-directory

When named is compiled using the MaxMind GeoIP2 geolocation API, or the legacy GeoIP API, this specifies the directory containing GeoIP database files. By default, the option is set based on the prefix used to build the libmaxminddb module; for example, if the library is installed in /usr/local/lib, then the default geoip-directory is /usr/local/share/GeoIP. On Windows, the default is the named working directory. See the section called “acl Statement Definition and Usage” for details about geoip ACLs.

key-directory

This is the directory where the public and private DNSSEC key files should be found when performing a dynamic update of secure zones, if different than the current working directory. (Note that this option has no effect on the paths for files containing non-DNSSEC keys such as bind.keys, rndc.key, or session.key.)

lmdb-mapsize

When named is built with liblmdb, this option sets a maximum size for the memory map of the new-zone database (NZD) in LMDB database format. This database is used to store configuration information for zones added using rndc addzone. Note that this is not the NZD database file size, but the largest size that the database may grow to.

Because the database file is memory mapped, its size is limited by the address space of the named process. The default of 32 megabytes was chosen to be usable with 32-bit named builds. The largest permitted value is 1 terabyte. Given typical zone configurations without elaborate ACLs, a 32 MB NZD file ought to be able to hold configurations of about 100,000 zones.

managed-keys-directory

This specifies the directory in which to store the files that track managed DNSSEC keys. By default, this is the working directory. The directory must be writable by the effective user ID of the named process.

If named is not configured to use views, managed keys for the server are tracked in a single file called managed-keys.bind. Otherwise, managed keys are tracked in separate files, one file per view; each file name is the view name (or, if it contains characters that are incompatible with use as a file name, the SHA256 hash of the view name), followed by the extension .mkeys.

(Note: in earlier releases, file names for views always used the SHA256 hash of the view name. To ensure compatibility after upgrading, if a file using the old name format is found to exist, it is used instead of the new format.)

named-xfer

This option is obsolete. In BIND 9, no separate named-xfer program is needed; its functionality is built into the name server.

tkey-gssapi-keytab

This is the KRB5 keytab file to use for GSS-TSIG updates. If this option is set and tkey-gssapi-credential is not set, updates are allowed with any key matching a principal in the specified keytab.

tkey-gssapi-credential

This is the security credential with which the server should authenticate keys requested by the GSS-TSIG protocol. Currently only Kerberos 5 authentication is available; the credential is a Kerberos principal which the server can acquire through the default system key file, normally /etc/krb5.keytab. The location of the keytab file can be overridden using the tkey-gssapi-keytab option. Normally this principal is of the form "DNS/server.domain". To use GSS-TSIG, tkey-domain must also be set if a specific keytab is not set with tkey-gssapi-keytab.

tkey-domain

This domain is appended to the names of all shared keys generated with TKEY. When a client requests a TKEY exchange, it may or may not specify the desired name for the key. If present, the name of the shared key is client-specified part + tkey-domain. Otherwise, the name of the shared key is random hex digits + tkey-domain. In most cases, the domainname should be the server's domain name, or an otherwise nonexistent subdomain like "_tkey.domainname". If using GSS-TSIG, this variable must be defined, unless a specific keytab is specified using tkey-gssapi-keytab.

tkey-dhkey

This is the Diffie-Hellman key used by the server to generate shared keys with clients using the Diffie-Hellman mode of TKEY. The server must be able to load the public and private keys from files in the working directory. In most cases, the key_name should be the server's host name.

cache-file

This is for testing only. Do not use.

dump-file

This is the pathname of the file the server dumps the database to, when instructed to do so with rndc dumpdb. If not specified, the default is named_dump.db.

memstatistics-file

This is the pathname of the file the server writes memory usage statistics to on exit. If not specified, the default is named.memstats.

lock-file

This is the pathname of a file on which named attempts to acquire a file lock when starting for the first time; if unsuccessful, the server terminates, under the assumption that another server is already running. If not specified, the default is none.

Specifying lock-file none disables the use of a lock file. lock-file is ignored if named was run using the -X option, which overrides it. Changes to lock-file are ignored if named is being reloaded or reconfigured; it is only effective when the server is first started.

pid-file

This is the pathname of the file the server writes its process ID in. If not specified, the default is /var/run/named/named.pid. The PID file is used by programs that send signals to the running name server. Specifying pid-file none disables the use of a PID file; no file is written and any existing one is removed. Note that none is a keyword, not a filename, and therefore is not enclosed in double quotes.

recursing-file

This is the pathname of the file where the server dumps the queries that are currently recursing, when instructed to do so with rndc recursing. If not specified, the default is named.recursing.

statistics-file

This is the pathname of the file the server appends statistics to, when instructed to do so using rndc stats. If not specified, the default is named.stats in the server's current directory. The format of the file is described in the section called “The Statistics File”.

bindkeys-file

This is the pathname of a file to override the built-in trusted keys provided by named. See the discussion of dnssec-validation for details. If not specified, the default is /etc/bind.keys.

secroots-file

This is the pathname of the file the server dumps security roots to, when instructed to do so with rndc secroots. If not specified, the default is named.secroots.

session-keyfile

This is the pathname of the file into which to write a TSIG session key generated by named for use by nsupdate -l. If not specified, the default is /var/run/named/session.key. (See the section called “Dynamic Update Policies”, and in particular the discussion of the update-policy statement's local option for more information about this feature.)

session-keyname

This is the key name to use for the TSIG session key. If not specified, the default is local-ddns.

session-keyalg

This is the algorithm to use for the TSIG session key. Valid values are hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384, hmac-sha512, and hmac-md5. If not specified, the default is hmac-sha256.

port

This is the UDP/TCP port number the server uses to receive and send DNS protocol traffic. The default is 53. This option is mainly intended for server testing; a server using a port other than 53 is not able to communicate with the global DNS.

dscp

This is the global Differentiated Services Code Point (DSCP) value to classify outgoing DNS traffic, on operating systems that support DSCP. Valid values are 0 through 63. It is not configured by default.

random-device

This specifies a source of entropy to be used by the server. Entropy is primarily needed for DNSSEC operations, such as TKEY transactions and dynamic update of signed zones. This option specifies the device (or file) from which to read entropy. If it is a file, operations requiring entropy will fail when the file has been exhausted. If random-device is not specified, the default value is /dev/random (or equivalent) when present, and none otherwise. The random-device option takes effect during the initial configuration load at server startup time and is ignored on subsequent reloads.

preferred-glue

If specified, the listed type (A or AAAA) is emitted before other glue in the additional section of a query response. The default is to prefer A records when responding to queries that arrived via IPv4 and AAAA when responding to queries that arrived via IPv6.

root-delegation-only

This turns on enforcement of delegation-only in TLDs (top-level domains) and root zones with an optional exclude list.

DS queries are expected to be made to and be answered by delegation-only zones. Such queries and responses are treated as an exception to delegation-only processing and are not converted to NXDOMAIN responses, provided a CNAME is not discovered at the query name.

If a delegation-only zone server also serves a child zone, it is not always possible to determine whether an answer comes from the delegation-only zone or the child zone. SOA NS and DNSKEY records are apex-only records and a matching response that contains these records or DS is treated as coming from a child zone. RRSIG records are also examined to see if they are signed by a child zone, and the authority section is examined to see if there is evidence that the answer is from the child zone. Answers that are determined to be from a child zone are not converted to NXDOMAIN responses. Despite all these checks, there is still a possibility of false negatives when a child zone is being served.

Similarly, false positives can arise from empty nodes (no records at the name) in the delegation-only zone when the query type is not ANY.

Note that some TLDs are not delegation-only; e.g., "DE", "LV", "US", and "MUSEUM". This list is not exhaustive.

options {
        root-delegation-only exclude { "de"; "lv"; "us"; "museum"; };
};
disable-algorithms

This disables the specified DNSSEC algorithms at and below the specified name. Multiple disable-algorithms statements are allowed. Only the best-match disable-algorithms clause is used to determine the algorithms.

If all supported algorithms are disabled, the zones covered by the disable-algorithms setting are treated as insecure.

Configured trust anchors in trusted-keys or managed-keys that match a disabled algorithm are ignored and treated as if they were not configured.

disable-ds-digests

This disables the specified DS digest types at and below the specified name. Multiple disable-ds-digests statements are allowed. Only the best-match disable-ds-digests clause is used to determine the digest types.

If all supported digest types are disabled, the zones covered by disable-ds-digests are treated as insecure.

dnssec-lookaside

When set, dnssec-lookaside provides the validator with an alternate method to validate DNSKEY records at the top of a zone. When a DNSKEY is at or below a domain specified by the deepest dnssec-lookaside, and the normal DNSSEC validation has left the key untrusted, the trust-anchor is appended to the key name and a DLV record is looked up to see if it can validate the key. If the DLV record validates a DNSKEY (similarly to the way a DS record does), the DNSKEY RRset is deemed to be trusted.

If dnssec-lookaside is set to no, then dnssec-lookaside is not used.

Note: the ISC-provided DLV service at dlv.isc.org has been shut down. The dnssec-lookaside auto; configuration option, which set named to use ISC DLV with minimal configuration, has accordingly been removed.

dnssec-must-be-secure

This specifies hierarchies which must be or may not be secure (signed and validated). If yes, then named only accepts answers if they are secure. If no, then normal DNSSEC validation applies, allowing insecure answers to be accepted. The specified domain must be under a trusted-keys or managed-keys statement, or dnssec-validation auto must be active.

dns64

This directive instructs named to return mapped IPv4 addresses to AAAA queries when there are no AAAA records. It is intended to be used in conjunction with a NAT64. Each dns64 defines one DNS64 prefix. Multiple DNS64 prefixes can be defined.

Compatible IPv6 prefixes have lengths of 32, 40, 48, 56, 64, and 96, per RFC 6052. Bits 64..71 inclusive must be zero, with the most significant bit of the prefix in position 0.

In addition, a reverse IP6.ARPA zone is created for the prefix to provide a mapping from the IP6.ARPA names to the corresponding IN-ADDR.ARPA names using synthesized CNAMEs. dns64-server and dns64-contact can be used to specify the name of the server and contact for the zones. These can be set at the view/options level but not on a per-prefix basis.

Each dns64 supports an optional clients ACL that determines which clients are affected by this directive. If not defined, it defaults to any;.

Each dns64 supports an optional mapped ACL that selects which IPv4 addresses are to be mapped in the corresponding A RRset. If not defined, it defaults to any;.

Normally, DNS64 does not apply to a domain name that owns one or more AAAA records; these records are simply returned. The optional exclude ACL allows specification of a list of IPv6 addresses that are ignored if they appear in a domain name's AAAA records; DNS64 is applied to any A records the domain name owns. If not defined, exclude defaults to ::ffff:0.0.0.0/96.

A optional suffix can also be defined to set the bits trailing the mapped IPv4 address bits. By default these bits are set to ::. The bits matching the prefix and mapped IPv4 address must be zero.

If recursive-only is set to yes, the DNS64 synthesis only happens for recursive queries. The default is no.

If break-dnssec is set to yes, the DNS64 synthesis happens even if the result, if validated, would cause a DNSSEC validation failure. If this option is set to no (the default), the DO is set on the incoming query, and there are RRSIGs on the applicable records, then synthesis does not happen.

        acl rfc1918 { 10/8; 192.168/16; 172.16/12; };

        dns64 64:FF9B::/96 {
                clients { any; };
                mapped { !rfc1918; any; };
                exclude { 64:FF9B::/96; ::ffff:0000:0000/96; };
                suffix ::;
        };
dnssec-loadkeys-interval

When a zone is configured with auto-dnssec maintain;, its key repository must be checked periodically to see if any new keys have been added or any existing keys' timing metadata has been updated (see dnssec-keygen(8) and dnssec-settime(8)). The dnssec-loadkeys-interval option sets the frequency of automatic repository checks, in minutes. The default is 60 (1 hour), the minimum is 1 (1 minute), and the maximum is 1440 (24 hours); any higher value is silently reduced.

dnssec-update-mode

If this option is set to its default value of maintain in a zone of type master which is DNSSEC-signed and configured to allow dynamic updates (see the section called “Dynamic Update Policies”), and if named has access to the private signing key(s) for the zone, then named automatically signs all new or changed records and maintains signatures for the zone by regenerating RRSIG records whenever they approach their expiration date.

If the option is changed to no-resign, then named signs all new or changed records, but scheduled maintenance of signatures is disabled.

With either of these settings, named rejects updates to a DNSSEC-signed zone when the signing keys are inactive or unavailable to named. (A planned third option, external, will disable all automatic signing and allow DNSSEC data to be submitted into a zone via dynamic update; this is not yet implemented.)

nta-lifetime

This specifies the default lifetime, in seconds, for negative trust anchors added via rndc nta.

A negative trust anchor selectively disables DNSSEC validation for zones that are known to be failing because of misconfiguration, rather than an attack. When data to be validated is at or below an active NTA (and above any other configured trust anchors), named aborts the DNSSEC validation process and treats the data as insecure rather than bogus. This continues until the NTA's lifetime is elapsed. NTAs persist across named restarts.

For convenience, TTL-style time-unit suffixes can be used to specify the NTA lifetime in seconds, minutes, or hours. nta-lifetime defaults to one hour; it cannot exceed one week.

nta-recheck

This specifies how often to check whether negative trust anchors added via rndc nta are still necessary.

A negative trust anchor is normally used when a domain has stopped validating due to operator error; it temporarily disables DNSSEC validation for that domain. In the interest of ensuring that DNSSEC validation is turned back on as soon as possible, named periodically sends a query to the domain, ignoring negative trust anchors, to find out whether it can now be validated. If so, the negative trust anchor is allowed to expire early.

Validity checks can be disabled for an individual NTA by using rndc nta -f, or for all NTAs by setting nta-recheck to zero.

For convenience, TTL-style time-unit suffixes can be used to specify the NTA recheck interval in seconds, minutes, or hours. The default is five minutes. It cannot be longer than nta-lifetime, which cannot be longer than a week.

max-zone-ttl

This specifies a maximum permissible TTL value in seconds. For convenience, TTL-style time-unit suffixes may be used to specify the maximum value. When loading a zone file using a masterfile-format of text or raw, any record encountered with a TTL higher than max-zone-ttl causes the zone to be rejected.

This is useful in DNSSEC-signed zones because when rolling to a new DNSKEY, the old key needs to remain available until RRSIG records have expired from caches. The max-zone-ttl option guarantees that the largest TTL in the zone is no higher than the set value.

(Note: because map-format files load directly into memory, this option cannot be used with them.)

The default value is unlimited. A max-zone-ttl of zero is treated as unlimited.

serial-update-method

Zones configured for dynamic DNS may use this option to set the update method to be used for the zone serial number in the SOA record.

With the default setting of serial-update-method increment;, the SOA serial number is incremented by one each time the zone is updated.

When set to serial-update-method unixtime;, the SOA serial number is set to the number of seconds since the Unix epoch, unless the serial number is already greater than or equal to that value, in which case it is simply incremented by one.

When set to serial-update-method date;, the new SOA serial number is the current date in the form "YYYYMMDD", followed by two zeroes, unless the existing serial number is already greater than or equal to that value, in which case it is incremented by one.

zone-statistics

If full, the server collects statistical data on all zones, unless specifically turned off on a per-zone basis by specifying zone-statistics terse or zone-statistics none in the zone statement. The default is terse, providing minimal statistics on zones (including name and current serial number, but not query type counters).

These statistics may be accessed via the statistics-channel or using rndc stats, which dumps them to the file listed in the statistics-file. See also the section called “The Statistics File”.

For backward compatibility with earlier versions of BIND 9, the zone-statistics option can also accept yes or no; yes has the same meaning as full. As of BIND 9.10, no has the same meaning as none; previously, it was the same as terse.

Boolean Options

automatic-interface-scan

If yes and supported by the operating system, this automatically rescans network interfaces when the interface addresses are added or removed. The default is yes. This configuration option does not affect the time-based interface-interval option; it is recommended to set the time-based interface-interval to 0 when the operator confirms that automatic interface scanning is supported by the operating system.

The automatic-interface-scan implementation uses routing sockets for the network interface discovery; therefore, the operating system must support the routing sockets for this feature to work.

allow-new-zones

If yes, then zones can be added at runtime via rndc addzone. The default is no.

Newly added zones' configuration parameters are stored so that they can persist after the server is restarted. The configuration information is saved in a file called viewname.nzf (or, if named is compiled with liblmdb, in an LMDB database file called viewname.nzd). viewname is the name of the view, unless the view name contains characters that are incompatible with use as a file name, in which case a cryptographic hash of the view name is used instead.

Configurations for zones added at runtime are stored either in a new-zone file (NZF) or a new-zone database (NZD), depending on whether named was linked with liblmdb at compile time. See rndc(8) for further details about rndc addzone.

auth-nxdomain

If yes, then the AA bit is always set on NXDOMAIN responses, even if the server is not actually authoritative. The default is no.

deallocate-on-exit

This option was used in BIND 8 to enable checking for memory leaks on exit. BIND 9 ignores the option and always performs the checks.

memstatistics

This writes memory statistics to the file specified by memstatistics-file at exit. The default is no unless -m record is specified on the command line, in which case it is yes.

dialup

If yes, then the server treats all zones as if they are doing zone transfers across a dial-on-demand dialup link, which can be brought up by traffic originating from this server. Although this setting has different effects according to zone type, it concentrates the zone maintenance so that everything happens quickly, once every heartbeat-interval, ideally during a single call. It also suppresses some normal zone maintenance traffic. The default is no.

If specified in the view and zone statements, the dialup option overrides the global dialup option.

If the zone is a primary zone, the server sends out a NOTIFY request to all the secondaries (default). This should trigger the zone serial number check in the secondary (providing it supports NOTIFY), allowing the secondary to verify the zone while the connection is active. The set of servers to which NOTIFY is sent can be controlled by notify and also-notify.

If the zone is a secondary or stub zone, the server suppresses the regular "zone up to date" (refresh) queries and only performs them when the heartbeat-interval expires, in addition to sending NOTIFY requests.

Finer control can be achieved by using notify, which only sends NOTIFY messages; notify-passive, which sends NOTIFY messages and suppresses the normal refresh queries; refresh, which suppresses normal refresh processing and sends refresh queries when the heartbeat-interval expires; and passive, which disables normal refresh processing.

dialup mode

normal refresh

heart-beat refresh

heart-beat notify

no (default)

yes

no

no

yes

no

yes

yes

notify

yes

no

yes

refresh

no

yes

no

passive

no

no

no

notify-passive

no

no

yes

Note that normal NOTIFY processing is not affected by dialup.

fake-iquery

In BIND 8, this option enabled simulating the obsolete DNS query type IQUERY. BIND 9 never does IQUERY simulation.

fetch-glue

This option is obsolete. In BIND 8, fetch-glue yes caused the server to attempt to fetch glue resource records it did not have when constructing the additional data section of a response. This is now considered a bad idea and BIND 9 never does it.

flush-zones-on-shutdown

When the nameserver exits upon receiving SIGTERM, flush or do not flush any pending zone writes. The default is flush-zones-on-shutdown no.

geoip-use-ecs

When BIND is compiled with GeoIP support and configured with "geoip" ACL elements, this option indicates whether the EDNS Client Subnet option, if present in a request, should be used for matching against the GeoIP database. The default is geoip-use-ecs yes.

has-old-clients

This option was incorrectly implemented in BIND 8, and is ignored by BIND 9. To achieve the intended effect of has-old-clients yes, specify the two separate options auth-nxdomain yes and rfc2308-type1 no instead.

host-statistics

In BIND 8, this enabled keeping of statistics for every host that the name server interacts with. It is not implemented in BIND 9.

root-key-sentinel

If yes, respond to root key sentinel probes as described in draft-ietf-dnsop-kskroll-sentinel-08. The default is yes.

maintain-ixfr-base

This option is obsolete. It was used in BIND 8 to determine whether a transaction log was kept for Incremental Zone Transfer. BIND 9 maintains a transaction log whenever possible. To disable outgoing incremental zone transfers, use provide-ixfr no.

message-compression

If yes, DNS name compression is used in responses to regular queries (not including AXFR or IXFR, which always use compression). Setting this option to no reduces CPU usage on servers and may improve throughput. However, it increases response size, which may cause more queries to be processed using TCP; a server with compression disabled is out of compliance with RFC 1123 Section 6.1.3.2. The default is yes.

minimal-responses

If set to yes, then when generating responses the server only adds records to the authority and additional data sections when they are required (e.g. delegations, negative responses). This may improve the performance of the server.

When set to no-auth, the server omits records from the authority section unless they are required, but it may still add records to the additional section. When set to no-auth-recursive, this is only done if the query is recursive. These settings are useful when answering stub clients, which usually ignore the authority section. no-auth-recursive is designed for mixed-mode servers that handle both authoritative and recursive queries.

The default is no.

minimal-any

If set to yes, the server replies with only one of the RRsets for the query name, and its covering RRSIGs if any, when generating a positive response to a query of type ANY over UDP, instead of replying with all known RRsets for the name. Similarly, a query for type RRSIG is answered with the RRSIG records covering only one type. This can reduce the impact of some kinds of attack traffic, without harming legitimate clients. (Note, however, that the RRset returned is the first one found in the database; it is not necessarily the smallest available RRset.) Additionally, minimal-responses is turned on for these queries, so no unnecessary records are added to the authority or additional sections. The default is no.

multiple-cnames

This option was used in BIND 8 to allow a domain name to have multiple CNAME records, in violation of the DNS standards. BIND 9.2 onwards always strictly enforces the CNAME rules both in primary files and dynamic updates.

notify

If yes (the default), DNS NOTIFY messages are sent when a zone the server is authoritative for changes; see the section called “Notify”. The messages are sent to the servers listed in the zone's NS records (except the primary server identified in the SOA MNAME field), and to any servers listed in the also-notify option.

If master-only, notifies are only sent for primary zones. If explicit, notifies are sent only to servers explicitly listed using also-notify. If no, no notifies are sent.

The notify option may also be specified in the zone statement, in which case it overrides the options notify statement. It would only be necessary to turn off this option if it caused secondary zones to crash.

notify-to-soa

If yes, do not check the name servers in the NS RRset against the SOA MNAME. Normally a NOTIFY message is not sent to the SOA MNAME (SOA ORIGIN), as it is supposed to contain the name of the ultimate primary server. Sometimes, however, a secondary server is listed as the SOA MNAME in hidden primary configurations; in that case, the ultimate primary should be set to still send NOTIFY messages to all the name servers listed in the NS RRset.

recursion

If yes, and a DNS query requests recursion, then the server attempts to do all the work required to answer the query. If recursion is off and the server does not already know the answer, it returns a referral response. The default is yes. Note that setting recursion no does not prevent clients from getting data from the server's cache; it only prevents new data from being cached as an effect of client queries. Caching may still occur as an effect the server's internal operation, such as NOTIFY address lookups.

request-nsid

If yes, then an empty EDNS(0) NSID (Name Server Identifier) option is sent with all queries to authoritative name servers during iterative resolution. If the authoritative server returns an NSID option in its response, then its contents are logged in the resolver category at level info. The default is no.

request-sit

This experimental option is obsolete.

require-server-cookie

If yes, require a valid server cookie before sending a full response to a UDP request from a cookie-aware client. BADCOOKIE is sent if there is a bad or nonexistent server cookie. The default is no.

Users wishing to test that DNS COOKIE clients correctly handle BADCOOKIE, or who are getting a lot of forged DNS requests with DNS COOKIES present, should set this to yes. Setting this to yes results in a reduced amplification effect in a reflection attack, as the BADCOOKIE response is smaller than a full response, while also requiring a legitimate client to follow up with a second query with the new, valid, cookie.

answer-cookie

When set to the default value of yes, COOKIE EDNS options are sent when applicable in replies to client queries. If set to no, COOKIE EDNS options are not sent in replies. This can only be set at the global options level, not per-view.

answer-cookie no is only intended as a temporary measure, for use when named shares an IP address with other servers that do not yet support DNS COOKIE. A mismatch between servers on the same address is not expected to cause operational problems, but the option to disable COOKIE responses so that all servers have the same behavior is provided out of an abundance of caution. DNS COOKIE is an important security mechanism, and should not be disabled unless absolutely necessary.

send-cookie

If yes, then a COOKIE EDNS option is sent along with the query. If the resolver has previously communicated with the server, the COOKIE returned in the previous transaction is sent. This is used by the server to determine whether the resolver has talked to it before. A resolver sending the correct COOKIE is assumed not to be an off-path attacker sending a spoofed-source query; the query is therefore unlikely to be part of a reflection/amplification attack, so resolvers sending a correct COOKIE option are not subject to response rate limiting (RRL). Resolvers which do not send a correct COOKIE option may be limited to receiving smaller responses via the nocookie-udp-size option. The default is yes.

nocookie-udp-size

This sets the maximum size of UDP responses that are sent to queries without a valid server COOKIE. A value below 128 is silently raised to 128. The default value is 4096, but the max-udp-size option may further limit the response size as the default for max-udp-size is 1232.

sit-secret

This experimental option is obsolete.

cookie-algorithm

This sets the algorithm to be used when generating the server cookie; the options are "aes", "sha1", or "sha256". The default is "aes" if supported by the cryptographic library; otherwise, "sha256".

cookie-secret

If set, this is a shared secret used for generating and verifying EDNS COOKIE options within an anycast cluster. If not set, the system generates a random secret at startup. The shared secret is encoded as a hex string and needs to be 128 bits for AES128, 160 bits for SHA1, and 256 bits for SHA256.

If there are multiple secrets specified, the first one listed in named.conf is used to generate new server cookies. The others are only used to verify returned cookies.

rfc2308-type1

Setting this to yes causes the server to send NS records along with the SOA record for negative answers. The default is no.

Note

This is not yet implemented in BIND 9.

trust-anchor-telemetry

This causes named to send specially formed queries once per day to domains for which trust anchors have been configured via trusted-keys, managed-keys, or dnssec-validation auto.

The query name used for these queries has the form "_ta-xxxx(-xxxx)(...)".<domain>, where each "xxxx" is a group of four hexadecimal digits representing the key ID of a trusted DNSSEC key. The key IDs for each domain are sorted smallest to largest prior to encoding. The query type is NULL.

By monitoring these queries, zone operators are able to see which resolvers have been updated to trust a new key; this may help them decide when it is safe to remove an old one.

The default is yes.

use-id-pool

This option is obsolete. BIND 9 always allocates query IDs from a pool.

use-ixfr

This option is obsolete. To disable IXFR to a particular server or servers, see the information on the provide-ixfr option in the section called “server Statement Definition and Usage”. See also the section called “Incremental Zone Transfers (IXFR)”.

provide-ixfr

See the description of provide-ixfr in the section called “server Statement Definition and Usage”.

request-ixfr

See the description of request-ixfr in the section called “server Statement Definition and Usage”.

request-expire

See the description of request-expire in the section called “server Statement Definition and Usage”.

treat-cr-as-space

This option was used in BIND 8 to make the server treat carriage return ("\r") characters the same way as a space or tab character, to facilitate loading of zone files on a Unix system that were generated on an NT or DOS machine. In BIND 9, both UNIX "\n" and NT/DOS "\r\n" newlines are always accepted, and the option is ignored.

additional-from-auth, additional-from-cache

These options control the behavior of an authoritative server when answering queries which have additional data, or when following CNAME and DNAME chains.

When both of these options are set to yes (the default) and a query is being answered from authoritative data (a zone configured into the server), the additional data section of the reply is filled in using data from other authoritative zones and from the cache. In some situations this is undesirable, such as when there is concern over the correctness of the cache, or in servers where secondary zones may be added and modified by untrusted third parties. Also, avoiding the search for this additional data speeds up server operations at the possible expense of additional queries to resolve what would otherwise be provided in the additional section.

For example, if a query asks for an MX record for host foo.example.com, and the record found is "MX 10 mail.example.net", normally the address records (A and AAAA) for mail.example.net are provided as well, if known, even though they are not in the example.com zone. Setting these options to no disables this behavior and makes the server only search for additional data in the zone it answers from.

These options are intended for use in authoritative-only servers, or in authoritative-only views. Attempts to set them to no without also specifying recursion no will cause the server to ignore the options and log a warning message.

Specifying additional-from-cache no actually disables the use of the cache not only for additional data lookups but also when looking up the answer. This is usually the desired behavior in an authoritative-only server where the correctness of the cached data is an issue.

When a name server is non-recursively queried for a name that is not below the apex of any served zone, it normally answers with an "upwards referral" to the root servers or the servers of some other known parent of the query name. Since the data in an upwards referral comes from the cache, the server is not able to provide upwards referrals when additional-from-cache no has been specified. Instead, it responds to such queries with REFUSED. This should not cause any problems since upwards referrals are not required for the resolution process.

match-mapped-addresses

If yes, then an IPv4-mapped IPv6 address matches any address-match list entries that match the corresponding IPv4 address.

This option was introduced to work around a kernel quirk in some operating systems that causes IPv4 TCP connections, such as zone transfers, to be accepted on an IPv6 socket using mapped addresses. This caused address-match lists designed for IPv4 to fail to match. However, named now solves this problem internally. The use of this option is discouraged.

filter-aaaa-on-v4

This option is only available when BIND 9 is compiled with the --enable-filter-aaaa option on the "configure" command line. It is intended to help the transition from IPv4 to IPv6 by not giving IPv6 addresses to DNS clients unless they have connections to the IPv6 Internet. This is not recommended unless absolutely necessary. The default is no. The filter-aaaa-on-v4 option may also be specified in view statements to override the global filter-aaaa-on-v4 option.

If yes, the DNS client is at an IPv4 address, in filter-aaaa, and if the response does not include DNSSEC signatures, then all AAAA records are deleted from the response. This filtering applies to all responses and not only authoritative responses.

If break-dnssec, then AAAA records are deleted even when DNSSEC is enabled. As suggested by the name, this causes the response to not verify, because the DNSSEC protocol is designed to detect deletions.

This mechanism can erroneously cause other servers to not give AAAA records to their clients. A recursing server with both IPv6 and IPv4 network connections, that queries an authoritative server using this mechanism via IPv4, is denied AAAA records even if its client is using IPv6.

This mechanism is applied to authoritative as well as non-authoritative records. A client using IPv4 that is not allowed recursion can erroneously be given AAAA records because the server is not allowed to check for A records.

Some AAAA records are given to IPv4 clients in glue records. IPv4 clients that are servers can then erroneously answer requests for AAAA records received via IPv4.

filter-aaaa-on-v6

This is identical to filter-aaaa-on-v4, except it filters AAAA responses to queries from IPv6 clients instead of IPv4 clients. To filter all responses, set both options to yes.

ixfr-from-differences

When yes and the server loads a new version of a primary zone from its zone file or receives a new version of a secondary file via zone transfer, it compares the new version to the previous one and calculates a set of differences. The differences are then logged in the zone's journal file so that the changes can be transmitted to downstream secondaries as an incremental zone transfer.

By allowing incremental zone transfers to be used for non-dynamic zones, this option saves bandwidth at the expense of increased CPU and memory consumption at the primary server. In particular, if the new version of a zone is completely different from the previous one, the set of differences is of a size comparable to the combined size of the old and new zone versions, and the server needs to temporarily allocate memory to hold this complete difference set.

ixfr-from-differences also accepts master and slave at the view and options levels, which causes ixfr-from-differences to be enabled for all primary or secondary zones, respectively. It is off by default.

Note: if inline signing is enabled for a zone, the user-provided ixfr-from-differences setting is ignored for that zone.

multi-master

This should be set when there are multiple primary servers for a zone and the addresses refer to different machines. If yes, named does not log when the serial number on the primary is less than what named currently has. The default is no.

auto-dnssec

Zones configured for dynamic DNS may use this option to allow varying levels of automatic DNSSEC key management. There are three possible settings:

auto-dnssec allow; permits keys to be updated and the zone fully re-signed whenever the user issues the command rndc sign zonename.

auto-dnssec maintain; includes the above, but also automatically adjusts the zone's DNSSEC keys on a schedule, according to the keys' timing metadata (see dnssec-keygen(8) and dnssec-settime(8)). The command rndc sign zonename causes named to load keys from the key repository and sign the zone with all keys that are active. rndc loadkeys zonename causes named to load keys from the key repository and schedule key maintenance events to occur in the future, but it does not sign the full zone immediately. Note: once keys have been loaded for a zone the first time, the repository is searched for changes periodically, regardless of whether rndc loadkeys is used. The recheck interval is defined by dnssec-loadkeys-interval.)

The default setting is auto-dnssec off.

dnssec-enable

This indicates whether DNSSEC-related resource records are to be returned by named. If set to no, named does not return DNSSEC-related resource records unless specifically queried for. The default is yes.

dnssec-validation

This option enables DNSSEC validation in named. Note that dnssec-enable also needs to be set to yes to be effective. If set to no, DNSSEC validation is disabled.

If set to auto, DNSSEC validation is enabled and a default trust anchor for the DNS root zone is used. If set to yes, DNSSEC validation is enabled, but a trust anchor must be manually configured using a trusted-keys or managed-keys statement. The default is yes.

The default root trust anchor is stored in the file bind.keys. named loads that key at startup if dnssec-validation is set to auto. A copy of the file is installed along with BIND 9, and is current as of the release date. If the root key expires, a new copy of bind.keys can be downloaded from https://www.isc.org/bind-keys.

(To prevent problems if bind.keys is not found, the current trust anchor is also compiled in to named. Relying on this is not recommended, however, as it requires named to be recompiled with a new key when the root key expires.)

Note

named loads only the root key from bind.keys. The file cannot be used to store keys for other zones. The root key in bind.keys is ignored if dnssec-validation auto is not in use.

Whenever the resolver sends out queries to an EDNS-compliant server, it always sets the DO bit indicating it can support DNSSEC responses, even if dnssec-validation is off.

dnssec-accept-expired

This accepts expired signatures when verifying DNSSEC signatures. The default is no. Setting this option to yes leaves named vulnerable to replay attacks.

querylog

Query logging provides a complete log of all incoming queries and all query errors. This provides more insight into the server's activity, but with a cost to performance which may be significant on heavily loaded servers.

The querylog option specifies whether query logging should be active when named first starts. If querylog is not specified, then query logging is determined by the presence of the logging category queries. Query logging can also be activated at runtime using the command rndc querylog on, or deactivated with rndc querylog off.

check-names

This option is used to restrict the character set and syntax of certain domain names in zone files and/or DNS responses received from the network. The default varies according to usage area. For primary zones (i.e., type master), the default is fail. For secondary zones (type slave), the default is warn. For answers received from the network (response), the default is ignore.

The rules for legal hostnames and mail domains are derived from RFC 952 and RFC 821 as modified by RFC 1123.

check-names applies to the owner names of A, AAAA, and MX records. It also applies to the domain names in the RDATA of NS, SOA, MX, and SRV records. It further applies to the RDATA of PTR records where the owner name indicates that it is a reverse lookup of a hostname (the owner name ends in IN-ADDR.ARPA, IP6.ARPA, or IP6.INT).

check-dup-records

This checks primary zones for records that are treated as different by DNSSEC but are semantically equal in plain DNS. The default is to warn. Other possible values are fail and ignore.

check-mx

This checks whether the MX record appears to refer to a IP address. The default is to warn. Other possible values are fail and ignore.

check-wildcard

This option is used to check for non-terminal wildcards. The use of non-terminal wildcards is almost always as a result of a failure to understand the wildcard matching algorithm (RFC 1034). This option affects primary zones. The default (yes) is to check for non-terminal wildcards and issue a warning.

check-integrity

This performs post-load zone integrity checks on primary zones. It checks that MX and SRV records refer to address (A or AAAA) records and that glue address records exist for delegated zones. For MX and SRV records, only in-zone hostnames are checked (for out-of-zone hostnames, use named-checkzone). For NS records, only names below top-of-zone are checked (for out-of-zone names and glue consistency checks, use named-checkzone). The default is yes.

The use of the SPF record to publish Sender Policy Framework is deprecated, as the migration from using TXT records to SPF records was abandoned. Enabling this option also checks that a TXT Sender Policy Framework record exists (starts with "v=spf1") if there is an SPF record. Warnings are emitted if the TXT record does not exist; they can be suppressed with check-spf.

check-mx-cname

If check-integrity is set, then fail, warn, or ignore MX records that refer to CNAMES. The default is to warn.

check-srv-cname

If check-integrity is set, then fail, warn, or ignore SRV records that refer to CNAMES. The default is to warn.

check-sibling

When performing integrity checks, also check that sibling glue exists. The default is yes.

check-spf

If check-integrity is set, check that there is a TXT Sender Policy Framework record present (starts with "v=spf1") if there is an SPF record present. The default is warn.

zero-no-soa-ttl

If yes, when returning authoritative negative responses to SOA queries, set the TTL of the SOA record returned in the authority section to zero. The default is yes.

zero-no-soa-ttl-cache

If yes, when caching a negative response to an SOA query set the TTL to zero. The default is no.

update-check-ksk

When set to the default value of yes, check the KSK bit in each key to determine how the key should be used when generating RRSIGs for a secure zone.

Ordinarily, zone-signing keys (that is, keys without the KSK bit set) are used to sign the entire zone, while key-signing keys (keys with the KSK bit set) are only used to sign the DNSKEY RRset at the zone apex. However, if this option is set to no, then the KSK bit is ignored; KSKs are treated as if they were ZSKs and are used to sign the entire zone. This is similar to the dnssec-signzone -z command-line option.

When this option is set to yes, there must be at least two active keys for every algorithm represented in the DNSKEY RRset: at least one KSK and one ZSK per algorithm. If there is any algorithm for which this requirement is not met, this option is ignored for that algorithm.

dnssec-dnskey-kskonly

When this option and update-check-ksk are both set to yes, only key-signing keys (that is, keys with the KSK bit set) are used to sign the DNSKEY RRset at the zone apex. Zone-signing keys (keys without the KSK bit set) are used to sign the remainder of the zone, but not the DNSKEY RRset. This is similar to the dnssec-signzone -x command-line option.

The default is no. If update-check-ksk is set to no, this option is ignored.

try-tcp-refresh

If yes, try to refresh the zone using TCP if UDP queries fail. The default is yes.

dnssec-secure-to-insecure

This allows a dynamic zone to transition from secure to insecure (i.e., signed to unsigned) by deleting all of the DNSKEY records. The default is no. If set to yes, and if the DNSKEY RRset at the zone apex is deleted, all RRSIG and NSEC records are removed from the zone as well.

If the zone uses NSEC3, it is also necessary to delete the NSEC3PARAM RRset from the zone apex; this causes the removal of all corresponding NSEC3 records. (It is expected that this requirement will be eliminated in a future release.)

Note that if a zone has been configured with auto-dnssec maintain and the private keys remain accessible in the key repository, then the zone will be automatically signed again the next time named is started.

Forwarding

The forwarding facility can be used to create a large site-wide cache on a few servers, reducing traffic over links to external name servers. It can also be used to allow queries by servers that do not have direct access to the Internet, but wish to look up exterior names anyway. Forwarding occurs only on those queries for which the server is not authoritative and does not have the answer in its cache.

forward

This option is only meaningful if the forwarders list is not empty. A value of first is the default and causes the server to query the forwarders first; if that does not answer the question, the server then looks for the answer itself. If only is specified, the server only queries the forwarders.

forwarders

This specifies a list of IP addresses to which queries are forwarded. The default is the empty list (no forwarding). Each address in the list can be associated with an optional port number and/or DSCP value, and a default port number and DSCP value can be set for the entire list.

Forwarding can also be configured on a per-domain basis, allowing for the global forwarding options to be overridden in a variety of ways. Particular domains can be set to use different forwarders, or have a different forward only/first behavior, or not forward at all; see the section called “zone Statement Grammar”.

Dual-stack Servers

Dual-stack servers are used as servers of last resort, to work around problems in reachability due the lack of support for either IPv4 or IPv6 on the host machine.

dual-stack-servers

This specifies host names or addresses of machines with access to both IPv4 and IPv6 transports. If a hostname is used, the server must be able to resolve the name using only the transport it has. If the machine is dual-stacked, the dual-stack-servers parameter has no effect unless access to a transport has been disabled on the command line (e.g., named -4).

Access Control

Access to the server can be restricted based on the IP address of the requesting system. See the section called “Address Match Lists” for details on how to specify IP address lists.

allow-notify

This ACL specifies which hosts are allowed to notify this secondary server of zone changes in addition to the zone primaries. allow-notify may also be specified in the zone statement, in which case it overrides the options allow-notify statement. It is only meaningful for a secondary zone. If not specified, the default is to process notify messages only from a zone's primary.

allow-query

This specifies which hosts are allowed to ask ordinary DNS questions. allow-query may also be specified in the zone statement, in which case it overrides the options allow-query statement. If not specified, the default is to allow queries from all hosts.

Note

allow-query-cache is used to specify access to the cache.

allow-query-on

This specifies which local addresses can accept ordinary DNS questions. This makes it possible, for instance, to allow queries on internal-facing interfaces but disallow them on external-facing ones, without necessarily knowing the internal network's addresses.

Note that allow-query-on is only checked for queries that are permitted by allow-query. A query must be allowed by both ACLs, or it is refused.

allow-query-on may also be specified in the zone statement, in which case it overrides the options allow-query-on statement.

If not specified, the default is to allow queries on all addresses.

Note

allow-query-cache is used to specify access to the cache.

allow-query-cache

This specifies which hosts are allowed to get answers from the cache. If allow-query-cache is not set, BIND checks to see if the following parameters are set, in order: allow-recursion and allow-query (unless recursion no; is set, in which case none; is used). If neither of those parameters is set, the default (localnets; localhost;) is used.

allow-query-cache-on

This specifies which local addresses can send answers from the cache. If not specified, the default is to allow cache queries on any address, localnets, and localhost.

allow-recursion

This specifies which hosts are allowed to make recursive queries through this server. BIND checks to see if the following parameters are set, in order: allow-recursion, allow-query-cache, and allow-query. If none of those parameters are set, the default (localnets; localhost;) is used.

allow-recursion-on

This specifies which local addresses can accept recursive queries. If not specified, the default is to allow recursive queries on all addresses.

allow-update

This specifies which hosts are allowed to submit Dynamic DNS updates for primary zones. The default is to deny updates from all hosts. Note that allowing updates based on the requestor's IP address is insecure; see the section called “Dynamic Update Security” for details.

allow-update-forwarding

This specifies which hosts are allowed to submit Dynamic DNS updates to secondary zones to be forwarded to the primary. The default is { none; }, which means that no update forwarding is performed. To enable update forwarding, specify allow-update-forwarding { any; };. Specifying values other than { none; } or { any; } is usually counterproductive; the responsibility for update access control should rest with the primary server, not the secondaries.

Note that enabling the update forwarding feature on a secondary server may expose primary servers to attacks if they rely on insecure IP-address-based access control; see the section called “Dynamic Update Security” for more details.

allow-v6-synthesis

This option was introduced for the smooth transition from AAAA to A6 and from "nibble labels" to binary labels. However, since both A6 and binary labels were then deprecated, this option was also deprecated. It is now ignored with some warning messages.

allow-transfer

This specifies which hosts are allowed to receive zone transfers from the server. allow-transfer may also be specified in the zone statement, in which case it overrides the options allow-transfer statement. If not specified, the default is to allow transfers to all hosts.

blackhole

This specifies a list of addresses which the server does accept queries from or use to resolve a query. Queries from these addresses are not responded to. The default is none.

filter-aaaa

This specifies a list of addresses to which filter-aaaa-on-v4 and filter-aaaa-on-v6 apply. The default is any.

keep-response-order

This specifies a list of addresses to which the server sends responses to TCP queries, in the same order in which they were received. This disables the processing of TCP queries in parallel. The default is none.

no-case-compress

This specifies a list of addresses which require responses to use case-insensitive compression. This ACL can be used when named needs to work with clients that do not comply with the requirement in RFC 1034 to use case-insensitive name comparisons when checking for matching domain names.

If left undefined, the ACL defaults to none: case-insensitive compression is used for all clients. If the ACL is defined and matches a client, case is ignored when compressing domain names in DNS responses sent to that client.

This can result in slightly smaller responses; if a response contains the names "example.com" and "example.COM", case-insensitive compression treats the second one as a duplicate. It also ensures that the case of the query name exactly matches the case of the owner names of returned records, rather than matches the case of the records entered in the zone file. This allows responses to exactly match the query, which is required by some clients due to incorrect use of case-sensitive comparisons.

Case-insensitive compression is always used in AXFR and IXFR responses, regardless of whether the client matches this ACL.

There are circumstances in which named does not preserve the case of owner names of records: if a zone file defines records of different types with the same name, but the capitalization of the name is different (e.g., "www.example.com/A" and "WWW.EXAMPLE.COM/AAAA"), then all responses for that name use the first version of the name that was used in the zone file. This limitation may be addressed in a future release. However, domain names specified in the rdata of resource records (i.e., records of type NS, MX, CNAME, etc.) always have their case preserved unless the client matches this ACL.

resolver-query-timeout

This is the amount of time in seconds that the resolver spends attempting to resolve a recursive query before failing. The default and minimum is 10 and the maximum is 30. Setting it to 0 results in the default being used.

Interfaces

The interfaces and ports that the server answers queries from may be specified using the listen-on option. listen-on takes an optional port and an address_match_list of IPv4 addresses. (IPv6 addresses are ignored, with a logged warning.) The server listens on all interfaces allowed by the address match list. If a port is not specified, port 53 is used.

Multiple listen-on statements are allowed. For example:

listen-on { 5.6.7.8; };
listen-on port 1234 { !1.2.3.4; 1.2/16; };

enables the name server on port 53 for the IP address 5.6.7.8, and on port 1234 of an address on the machine in net 1.2 that is not 1.2.3.4.

If no listen-on is specified, the server listens on port 53 on all IPv4 interfaces.

The listen-on-v6 option is used to specify the interfaces and the ports on which the server listens for incoming queries sent using IPv6. If not specified, the server listens on port 53 on all IPv6 interfaces.

When

{ any; }

is specified as the address_match_list for the listen-on-v6 option, the server does not bind a separate socket to each IPv6 interface address as it does for IPv4, if the operating system has enough API support for IPv6 (specifically, if it conforms to RFC 3493 and RFC 3542). Instead, it listens on the IPv6 wildcard address. If the system only has incomplete API support for IPv6, however, the behavior is the same as that for IPv4.

A list of particular IPv6 addresses can also be specified, in which case the server listens on a separate socket for each specified address, regardless of whether the desired API is supported by the system. IPv4 addresses specified in listen-on-v6 are ignored, with a logged warning.

Multiple listen-on-v6 options can be used. For example:

listen-on-v6 { any; };
listen-on-v6 port 1234 { !2001:db8::/32; any; };

enables the name server on port 53 for any IPv6 addresses (with a single wildcard socket), and on port 1234 of IPv6 addresses that are not in the prefix 2001:db8::/32 (with separate sockets for each matched address).

To instruct the server not to listen on any IPv6 address, use:

listen-on-v6 { none; };

Query Address

If the server does not know the answer to a question, it queries other name servers. query-source specifies the address and port used for such queries. For queries sent over IPv6, there is a separate query-source-v6 option. If address is * (asterisk) or is omitted, a wildcard IP address (INADDR_ANY) is used.

If port is * or is omitted, a random port number from a pre-configured range is picked up and used for each query. The port range(s) is specified in the use-v4-udp-ports (for IPv4) and use-v6-udp-ports (for IPv6) options, excluding the ranges specified in the avoid-v4-udp-ports and avoid-v6-udp-ports options, respectively.

The defaults of the query-source and query-source-v6 options are:

query-source address * port *;
query-source-v6 address * port *;

If use-v4-udp-ports or use-v6-udp-ports is unspecified, named checks whether the operating system provides a programming interface to retrieve the system's default range for ephemeral ports. If such an interface is available, named uses the corresponding system default range; otherwise, it uses its own defaults:

use-v4-udp-ports { range 1024 65535; };
use-v6-udp-ports { range 1024 65535; };

Note: make sure the ranges are sufficiently large for security. A desirable size depends on several parameters, but we generally recommend it contain at least 16384 ports (14 bits of entropy). Note also that the system's default range when used may be too small for this purpose, and that the range may even be changed while named is running; the new range is automatically applied when named is reloaded. Explicit configuration of use-v4-udp-ports and use-v6-udp-ports is encouraged, so that the ranges are sufficiently large and are reasonably independent from the ranges used by other applications.

Note: the operational configuration where named runs may prohibit the use of some ports. For example, Unix systems do not allow named, if run without root privilege, to use ports less than 1024. If such ports are included in the specified (or detected) set of query ports, the corresponding query attempts will fail, resulting in resolution failures or delay. It is therefore important to configure the set of ports that can be safely used in the expected operational environment.

The defaults of the avoid-v4-udp-ports and avoid-v6-udp-ports options are:

avoid-v4-udp-ports {};
avoid-v6-udp-ports {};

Note: BIND 9.5.0 introduced the use-queryport-pool option to support a pool of such random ports, but this option is now obsolete because reusing the same ports in the pool may not be sufficiently secure. For the same reason, it is generally strongly discouraged to specify a particular port for the query-source or query-source-v6 options; it implicitly disables the use of randomized port numbers.

use-queryport-pool

This option is obsolete.

queryport-pool-ports

This option is obsolete.

queryport-pool-updateinterval

This option is obsolete.

Note

The address specified in the query-source option is used for both UDP and TCP queries, but the port applies only to UDP queries. TCP queries always use a random unprivileged port.

Note

Solaris 2.5.1 and earlier does not support setting the source address for TCP sockets.

Note

See also transfer-source and notify-source.

Zone Transfers

BIND has mechanisms in place to facilitate zone transfers and set limits on the amount of load that transfers place on the system. The following options apply to zone transfers.

also-notify

This option defines a global list of IP addresses of name servers that are also sent NOTIFY messages whenever a fresh copy of the zone is loaded, in addition to the servers listed in the zone's NS records. This helps to ensure that copies of the zones quickly converge on stealth servers. Optionally, a port may be specified with each also-notify address to send the notify messages to a port other than the default of 53. An optional TSIG key can also be specified with each address to cause the notify messages to be signed; this can be useful when sending notifies to multiple views. In place of explicit addresses, one or more named masters lists can be used.

If an also-notify list is given in a zone statement, it overrides the options also-notify statement. When a zone notify statement is set to no, the IP addresses in the global also-notify list are not sent NOTIFY messages for that zone. The default is the empty list (no global notification list).

max-transfer-time-in

Inbound zone transfers running longer than this many minutes are terminated. The default is 120 minutes (2 hours). The maximum value is 28 days (40320 minutes).

max-transfer-idle-in

Inbound zone transfers making no progress in this many minutes are terminated. The default is 60 minutes (1 hour). The maximum value is 28 days (40320 minutes).

max-transfer-time-out

Outbound zone transfers running longer than this many minutes are terminated. The default is 120 minutes (2 hours). The maximum value is 28 days (40320 minutes).

max-transfer-idle-out

Outbound zone transfers making no progress in this many minutes are terminated. The default is 60 minutes (1 hour). The maximum value is 28 days (40320 minutes).

notify-rate

This specifies the rate at which NOTIFY requests are sent during normal zone maintenance operations. (NOTIFY requests due to initial zone loading are subject to a separate rate limit; see below.) The default is 20 per second. The lowest possible rate is one per second; when set to zero, it is silently raised to one.

startup-notify-rate

This is the rate at which NOTIFY requests are sent when the name server is first starting up, or when zones have been newly added to the name server. The default is 20 per second. The lowest possible rate is one per second; when set to zero, it is silently raised to one.

serial-query-rate

Secondary servers periodically query primary servers to find out if zone serial numbers have changed. Each such query uses a minute amount of the secondary server's network bandwidth. To limit the amount of bandwidth used, BIND 9 limits the rate at which queries are sent. The value of the serial-query-rate option, an integer, is the maximum number of queries sent per second. The default is 20 per second. The lowest possible rate is one per second; when set to zero, it is silently raised to one.

serial-queries

BIND 9 does not limit the number of outstanding serial queries and ignores the serial-queries option. Instead, it limits the rate at which the queries are sent as defined using the serial-query-rate option.

transfer-format

Zone transfers can be sent using two different formats, one-answer and many-answers. The transfer-format option is used on the primary server to determine which format it sends. one-answer uses one DNS message per resource record transferred. many-answers packs as many resource records as possible into one message. many-answers is more efficient; the default is many-answers. The many-answers format is also supported by recent Microsoft Windows name servers. transfer-format may be overridden on a per-server basis by using the server statement.

transfer-message-size

This is an upper bound on the uncompressed size of DNS messages used in zone transfers over TCP. If a message grows larger than this size, additional messages are used to complete the zone transfer. (Note, however, that this is a hint, not a hard limit; if a message contains a single resource record whose RDATA does not fit within the size limit, a larger message will be permitted so the record can be transferred.)

Valid values are between 512 and 65535 octets; any values outside that range are adjusted to the nearest value within it. The default is 20480, which was selected to improve message compression; most DNS messages of this size will compress to less than 16536 bytes. Larger messages cannot be compressed as effectively, because 16536 is the largest permissible compression offset pointer in a DNS message.

This option is mainly intended for server testing; there is rarely any benefit in setting a value other than the default.

transfers-in

This is the maximum number of inbound zone transfers that can run concurrently. The default value is 10. Increasing transfers-in may speed up the convergence of secondary zones, but it also may increase the load on the local system.

transfers-out

This is the maximum number of outbound zone transfers that can run concurrently. Zone transfer requests in excess of the limit are refused. The default value is 10.

transfers-per-ns

This is the maximum number of inbound zone transfers that can concurrently transfer from a given remote name server. The default value is 2. Increasing transfers-per-ns may speed up the convergence of secondary zones, but it also may increase the load on the remote name server. transfers-per-ns may be overridden on a per-server basis by using the transfers phrase of the server statement.

transfer-source

transfer-source determines which local address is bound to IPv4 TCP connections used to fetch zones transferred inbound by the server. It also determines the source IPv4 address, and optionally the UDP port, used for the refresh queries and forwarded dynamic updates. If not set, it defaults to a system-controlled value which is usually the address of the interface "closest to" the remote end. This address must appear in the remote end's allow-transfer option for the zone being transferred, if one is specified. This statement sets the transfer-source for all zones, but can be overridden on a per-view or per-zone basis by including a transfer-source statement within the view or zone block in the configuration file.

Note

Solaris 2.5.1 and earlier does not support setting the source address for TCP sockets.

transfer-source-v6

This option is the same as transfer-source, except zone transfers are performed using IPv6.

alt-transfer-source

This indicates an alternate transfer source if the one listed in transfer-source fails and use-alt-transfer-source is set.

Note

To avoid using the alternate transfer source, set use-alt-transfer-source appropriately and do not depend upon getting an answer back to the first refresh query.

alt-transfer-source-v6

This indicates an alternate transfer source if the one listed in transfer-source-v6 fails and use-alt-transfer-source is set.

use-alt-transfer-source

This indicates whether the alternate transfer sources should be used. If views are specified, this defaults to no; otherwise, it defaults to yes.

notify-source

notify-source determines which local source address, and optionally UDP port, is used to send NOTIFY messages. This address must appear in the secondary server's masters zone clause or in an allow-notify clause. This statement sets the notify-source for all zones, but can be overridden on a per-zone or per-view basis by including a notify-source statement within the zone or view block in the configuration file.

Note

Solaris 2.5.1 and earlier does not support setting the source address for TCP sockets.

notify-source-v6

This option acts like notify-source, but applies to notify messages sent to IPv6 addresses.

UDP Port Lists

use-v4-udp-ports, avoid-v4-udp-ports, use-v6-udp-ports, and avoid-v6-udp-ports specify a list of IPv4 and IPv6 UDP ports that are or are not used as source ports for UDP messages. See the section called “Query Address” about how the available ports are determined. For example, with the following configuration:

use-v6-udp-ports { range 32768 65535; };
avoid-v6-udp-ports { 40000; range 50000 60000; };

UDP ports of IPv6 messages sent from named are in one of the following ranges: 32768 to 39999, 40001 to 49999, and 60001 to 65535.

avoid-v4-udp-ports and avoid-v6-udp-ports can be used to prevent named from choosing as its random source port a port that is blocked by a firewall or a port that is used by other applications; if a query went out with a source port blocked by a firewall, the answer would not pass through the firewall and the name server would have to query again. Note: the desired range can also be represented only with use-v4-udp-ports and use-v6-udp-ports, and the avoid- options are redundant in that sense; they are provided for backward compatibility and to possibly simplify the port specification.

Operating System Resource Limits

The server's usage of many system resources can be limited. Scaled values are allowed when specifying resource limits. For example, 1G can be used instead of 1073741824 to specify a limit of one gigabyte. unlimited requests unlimited use, or the maximum available amount. default uses the limit that was in force when the server was started. See the description of size_spec in the section called “Configuration File Elements”.

The following options set operating system resource limits for the name server process. Some operating systems do not support some or any of the limits; on such systems, a warning is issued if an unsupported limit is used.

coresize

This sets the maximum size of a core dump. The default is default.

datasize

This sets the maximum amount of data memory the server may use. The default is default. This is a hard limit on server memory usage; if the server attempts to allocate memory in excess of this limit, the allocation will fail, which may in turn leave the server unable to perform DNS service. Therefore, this option is rarely useful as a way to limit the amount of memory used by the server, but it can be used to raise an operating system data size limit that is too small by default. To limit the amount of memory used by the server, use the max-cache-size and recursive-clients options instead.

files

This sets the maximum number of files the server may have open concurrently. The default is unlimited.

stacksize

This sets the maximum amount of stack memory the server may use. The default is default.

Server Resource Limits

The following options set limits on the server's resource consumption that are enforced internally by the server rather than by the operating system.

max-ixfr-log-size

This option is obsolete; it is accepted and ignored for BIND 8 compatibility. The option max-journal-size performs a similar function in BIND 9.

max-journal-size

This sets a maximum size for each journal file (see the section called “The Journal File”). When the journal file approaches the specified size, some of the oldest transactions in the journal are automatically removed. The largest permitted value is 2 gigabytes. The default is unlimited, which also means 2 gigabytes. This option may also be set on a per-zone basis.

max-records

This sets the maximum number of records permitted in a zone. The default is zero, which means the maximum is unlimited.

host-statistics-max

In BIND 8, this specified the maximum number of host statistics entries to be kept. It is not implemented in BIND 9.

recursive-clients

This sets the maximum number (a "hard quota") of simultaneous recursive lookups the server performs on behalf of clients. The default is 1000. Because each recursing client uses a fair bit of memory (on the order of 20 kilobytes), the value of the recursive-clients option may have to be decreased on hosts with limited memory.

recursive-clients defines a "hard quota" limit for pending recursive clients; when more clients than this are pending, new incoming requests are not accepted, and for each incoming request a previous pending request is dropped.

A "soft quota" is also set. When this lower quota is exceeded, incoming requests are accepted, but for each one, a pending request is dropped. If recursive-clients is greater than 1000, the soft quota is set to recursive-clients minus 100; otherwise it is set to 90% of recursive-clients.

tcp-clients

This is the maximum number of simultaneous client TCP connections that the server accepts. The default is 150.

clients-per-query, max-clients-per-query

These set the initial value (minimum) and maximum number of recursive simultaneous clients for any given query (<qname,qtype,qclass>) that the server accepts before dropping additional clients. named attempts to self-tune this value and changes are logged. The default values are 10 and 100.

This value should reflect how many queries come in for a given name in the time it takes to resolve that name. If the number of queries exceeds this value, named assumes that it is dealing with a non-responsive zone and drops additional queries. If it gets a response after dropping queries, it raises the estimate. The estimate is then lowered in 20 minutes if it has remained unchanged.

If clients-per-query is set to zero, there is no limit on the number of clients per query and no queries are dropped.

If max-clients-per-query is set to zero, there is no upper bound other than imposed by recursive-clients.

fetches-per-zone

This sets the maximum number of simultaneous iterative queries to any one domain that the server permits before blocking new queries for data in or beneath that zone. This value should reflect how many fetches would normally be sent to any one zone in the time it would take to resolve them. It should be smaller than recursive-clients.

When many clients simultaneously query for the same name and type, the clients are all attached to the same fetch, up to the max-clients-per-query limit, and only one iterative query is sent. However, when clients are simultaneously querying for different names or types, multiple queries are sent and max-clients-per-query is not effective as a limit.

Optionally, this value may be followed by the keyword drop or fail, indicating whether queries which exceed the fetch quota for a zone are dropped with no response, or answered with SERVFAIL. The default is drop.

If fetches-per-zone is set to zero, there is no limit on the number of fetches per query and no queries are dropped. The default is zero.

The current list of active fetches can be dumped by running rndc recursing. The list includes the number of active fetches for each domain and the number of queries that have been passed or dropped as a result of the fetches-per-zone limit. (Note: these counters are not cumulative over time; whenever the number of active fetches for a domain drops to zero, the counter for that domain is deleted, and the next time a fetch is sent to that domain, it is recreated with the counters set to zero.)

fetches-per-server

This sets the maximum number of simultaneous iterative queries that the server allows to be sent to a single upstream name server before blocking additional queries. This value should reflect how many fetches would normally be sent to any one server in the time it would take to resolve them. It should be smaller than recursive-clients.

Optionally, this value may be followed by the keyword drop or fail, indicating whether queries are dropped with no response or answered with SERVFAIL, when all of the servers authoritative for a zone are found to have exceeded the per-server quota. The default is fail.

If fetches-per-server is set to zero, there is no limit on the number of fetches per query and no queries are dropped. The default is zero.

The fetches-per-server quota is dynamically adjusted in response to detected congestion. As queries are sent to a server and are either answered or time out, an exponentially weighted moving average is calculated of the ratio of timeouts to responses. If the current average timeout ratio rises above a "high" threshold, then fetches-per-server is reduced for that server. If the timeout ratio drops below a "low" threshold, then fetches-per-server is increased. The fetch-quota-params options can be used to adjust the parameters for this calculation.

fetch-quota-params

This sets the parameters to use for dynamic resizing of the fetches-per-server quota in response to detected congestion.

The first argument is an integer value indicating how frequently to recalculate the moving average of the ratio of timeouts to responses for each server. The default is 100, meaning that BIND recalculates the average ratio after every 100 queries have either been answered or timed out.

The remaining three arguments represent the "low" threshold (defaulting to a timeout ratio of 0.1), the "high" threshold (defaulting to a timeout ratio of 0.3), and the discount rate for the moving average (defaulting to 0.7). A higher discount rate causes recent events to weigh more heavily when calculating the moving average; a lower discount rate causes past events to weigh more heavily, smoothing out short-term blips in the timeout ratio. These arguments are all fixed-point numbers with precision of 1/100; at most two places after the decimal point are significant.

reserved-sockets

This sets the number of file descriptors reserved for TCP, stdio, etc. This needs to be big enough to cover the number of interfaces named listens on plus tcp-clients, as well as to provide room for outgoing TCP queries and incoming zone transfers. The default is 512. The minimum value is 128 and the maximum value is 128 fewer than maxsockets (-S). This option may be removed in the future.

This option has little effect on Windows.

max-cache-size

This sets the maximum amount of memory to use for the server's cache, in bytes or percentage of total physical memory. When the amount of data in the cache reaches this limit, the server causes records to expire prematurely, following an LRU-based strategy, so that the limit is not exceeded. The keyword unlimited, or the value 0, places no limit on the cache size; records are purged from the cache only when their TTLs expire. Any positive values less than 2MB are ignored and reset to 2MB. In a server with multiple views, the limit applies separately to the cache of each view. The default is 90%. On systems where detection of the amount of physical memory is not supported, values represented as a percentage fall back to unlimited. Note that the detection of physical memory is done only once at startup, so named does not adjust the cache size if the amount of physical memory is changed during runtime.

tcp-listen-queue

This sets the listen-queue depth. The default and minimum is 10. If the kernel supports the accept filter "dataready", this also controls how many TCP connections are queued in kernel space waiting for some data before being passed to accept. Non-zero values less than 10 are silently raised. A value of 0 may also be used; on most platforms this sets the listen-queue length to a system-defined default value.

Periodic Task Intervals

cleaning-interval

This interval is effectively obsolete. Previously, the server removed expired resource records from the cache every cleaning-interval minutes. BIND 9 now manages cache memory in a more sophisticated manner and does not rely on periodic cleaning anymore. Specifying this option therefore has no effect on the server's behavior.

heartbeat-interval

The server performs zone maintenance tasks for all zones marked as dialup whenever this interval expires. The default is 60 minutes. Reasonable values are up to 1 day (1440 minutes). The maximum value is 28 days (40320 minutes). If set to 0, no zone maintenance for these zones occurs.

interface-interval

The server scans the network interface list every interface-interval minutes. The default is 60 minutes; the maximum value is 28 days (40320 minutes). If set to 0, interface scanning only occurs when the configuration file is loaded, or when automatic-interface-scan is enabled and supported by the operating system. After the scan, the server begins listening for queries on any newly discovered interfaces (provided they are allowed by the listen-on configuration), and stops listening on interfaces that have gone away.

statistics-interval

Name server statistics are logged every statistics-interval minutes. The default is 60, and the maximum value is 28 days (40320 minutes). If set to 0, no statistics are logged.

Note

This option is not implemented in BIND 9.

topology

In BIND 8, this option indicated network topology so that preferential treatment could be given to the topologically closest name servers when sending queries. It is not implemented in BIND 9.

The sortlist Statement

The response to a DNS query may consist of multiple resource records (RRs) forming a resource record set (RRset). The name server normally returns the RRs within the RRset in an indeterminate order (but see the rrset-order statement in the section called “RRset Ordering”). The client resolver code should rearrange the RRs as appropriate: that is, using any addresses on the local net in preference to other addresses. However, not all resolvers can do this or are correctly configured. When a client is using a local server, the sorting can be performed in the server, based on the client's address. This only requires configuring the name servers, not all the clients.

The sortlist statement (see below) takes an address_match_list and interprets it in a special way. Each top-level statement in the sortlist must itself be an explicit address_match_list with one or two elements. The first element (which may be an IP address, an IP prefix, an ACL name, or a nested address_match_list) of each top-level list is checked against the source address of the query until a match is found. When the addresses in the first element overlap, the first rule to match is selected.

Once the source address of the query has been matched, if the top-level statement contains only one element, the actual primitive element that matched the source address is used to select the address in the response to move to the beginning of the response. If the statement is a list of two elements, then the second element is interpreted as a topology preference list. Each top-level element is assigned a distance, and the address in the response with the minimum distance is moved to the beginning of the response.

In the following example, any queries received from any of the addresses of the host itself get responses preferring addresses on any of the locally connected networks. Next most preferred are addresses on the 192.168.1/24 network, and after that either the 192.168.2/24 or 192.168.3/24 network, with no preference shown between these two networks. Queries received from a host on the 192.168.1/24 network prefer other addresses on that network to the 192.168.2/24 and 192.168.3/24 networks. Queries received from a host on the 192.168.4/24 or the 192.168.5/24 network only prefer other addresses on their directly connected networks.

sortlist {
    // IF the local host
    // THEN first fit on the following nets
    { localhost;
        { localnets;
            192.168.1/24;
            { 192.168.2/24; 192.168.3/24; }; }; };
    // IF on class C 192.168.1 THEN use .1, or .2 or .3
    { 192.168.1/24;
        { 192.168.1/24;
            { 192.168.2/24; 192.168.3/24; }; }; };
    // IF on class C 192.168.2 THEN use .2, or .1 or .3
    { 192.168.2/24;
        { 192.168.2/24;
            { 192.168.1/24; 192.168.3/24; }; }; };
    // IF on class C 192.168.3 THEN use .3, or .1 or .2
    { 192.168.3/24;
        { 192.168.3/24;
            { 192.168.1/24; 192.168.2/24; }; }; };
    // IF .4 or .5 THEN prefer that net
    { { 192.168.4/24; 192.168.5/24; };
    };
};

The following example illustrates reasonable behavior for the local host and hosts on directly connected networks. Responses sent to queries from the local host favor any of the directly connected networks. Responses sent to queries from any other hosts on a directly connected network prefer addresses on that same network. Responses to other queries are not sorted.

sortlist {
           { localhost; localnets; };
           { localnets; };
};

RRset Ordering

Note

While alternating the order of records in a DNS response between subsequent queries is a known load distribution technique, certain caveats apply (mostly stemming from caching) which usually make it a suboptimal choice for load balancing purposes when used on its own.

The rrset-order statement permits configuration of the ordering of the records in a multiple-record response. See also: the section called “The sortlist Statement”.

Each rule in an rrset-order statement is defined as follows:

[class <class_name>] [type <type_name>] [name "<domain_name>"] order <ordering>

The default qualifiers for each rule are:

  • If no class is specified, the default is ANY.
  • If no type is specified, the default is ANY.
  • If no name is specified, the default is * (asterisk).

<domain_name> only matches the name itself, not any of its subdomains. To make a rule match all subdomains of a given name, a wildcard name (*.<domain_name>) must be used. Note that *.<domain_name> does not match <domain_name> itself; to specify RRset ordering for a name and all of its subdomains, two separate rules must be defined: one for <domain_name> and one for *.<domain_name>.

The legal values for <ordering> are:

fixed

Records are returned in the order they are defined in the zone file.

Note

The fixed option is only available if BIND is configured with --enable-fixed-rrset at compile time.

random

Records are returned in a random order.

cyclic

Records are returned in a cyclic round-robin order, rotating by one record per query.

By default, records are returned in random order.

Note that if multiple rrset-order statements are present in the configuration file (at both the options and view levels), they are not combined; instead, the more-specific one (view) replaces the less-specific one (options).

If multiple rules within a single rrset-order statement match a given RRset, the first matching rule is applied.

Example:

rrset-order {
    type A name "foo.isc.org" order random;
    type AAAA name "foo.isc.org" order cyclic;
    name "bar.isc.org" order fixed;
    name "*.bar.isc.org" order random;
    name "*.baz.isc.org" order cyclic;
};

With the above configuration, the following RRset ordering is used:

QNAME

QTYPE

RRset Order

foo.isc.org

A

random

foo.isc.org

AAAA

cyclic

foo.isc.org

TXT

random

sub.foo.isc.org

all

random

bar.isc.org

all

fixed

sub.bar.isc.org

all

random

baz.isc.org

all

random

sub.baz.isc.org

all

cyclic

Tuning

lame-ttl

This is always set to 0. More information is available in the security advisory for CVE-2021-25219.

servfail-ttl

This sets the number of seconds to cache a SERVFAIL response due to DNSSEC validation failure or other general server failure. If set to 0, SERVFAIL caching is disabled. The SERVFAIL cache is not consulted if a query has the CD (Checking Disabled) bit set; this allows a query that failed due to DNSSEC validation to be retried without waiting for the SERVFAIL TTL to expire.

The maximum value is 30 seconds; any higher value is silently reduced. The default is 1 second.

max-ncache-ttl

To reduce network traffic and increase performance, the server stores negative answers. max-ncache-ttl is used to set a maximum retention time for these answers in the server, in seconds. The default max-ncache-ttl is 10800 seconds (3 hours). max-ncache-ttl cannot exceed 7 days and is silently truncated to 7 days if set to a greater value.

max-cache-ttl

This sets the maximum time for which the server caches ordinary (positive) answers, in seconds. The default is 604800 (one week). A value of zero may cause all queries to return SERVFAIL, because of lost caches of intermediate RRsets (such as NS and glue AAAA/A records) in the resolution process.

min-roots

This sets the minimum number of root servers that is required for a request for the root servers to be accepted. The default is 2.

Note

This is not implemented in BIND 9.

sig-validity-interval

This specifies the number of days into the future that DNSSEC signatures that are automatically generated as a result of dynamic updates (the section called “Dynamic Update”) will expire. There is an optional second field which specifies how long before expiry that the signatures are regenerated. If not specified, the signatures are regenerated at 1/4 of base interval. The second field is specified in days if the base interval is greater than 7 days; otherwise it is specified in hours. The default base interval is 30 days, giving a re-signing interval of 7 1/2 days. The maximum value is 10 years (3660 days).

The signature inception time is unconditionally set to one hour before the current time, to allow for a limited amount of clock skew.

The sig-validity-interval should be at least several multiples of the SOA expire interval, to allow for reasonable interaction between the various timer and expiry dates.

sig-signing-nodes

This specifies the maximum number of nodes to be examined in each quantum, when signing a zone with a new DNSKEY. The default is 100.

sig-signing-signatures

This specifies a threshold number of signatures that terminates processing a quantum, when signing a zone with a new DNSKEY. The default is 10.

sig-signing-type

This specifies a private RDATA type to be used when generating signing-state records. The default is 65534.

This parameter may be removed in a future version, once there is a standard type.

Signing-state records are used internally by named to track the current state of a zone-signing process, i.e., whether it is still active or has been completed. The records can be inspected using the command rndc signing -list zone. Once named has finished signing a zone with a particular key, the signing-state record associated with that key can be removed from the zone by running rndc signing -clear keyid/algorithm zone. To clear all of the completed signing-state records for a zone, use rndc signing -clear all zone.

min-refresh-time, max-refresh-time, min-retry-time, max-retry-time

These options control the server's behavior on refreshing a zone (querying for SOA changes) or retrying failed transfers. Usually the SOA values for the zone are used, up to a hard-coded maximum expiry of 24 weeks. However, these values are set by the primary, giving secondary server administrators little control over their contents.

These options allow the administrator to set a minimum and maximum refresh and retry time in seconds per-zone, per-view, or globally. These options are valid for secondary and stub zones, and clamp the SOA refresh and retry times to the specified values.

The following defaults apply: min-refresh-time 300 seconds, max-refresh-time 2419200 seconds (4 weeks), min-retry-time 500 seconds, and max-retry-time 1209600 seconds (2 weeks).

edns-udp-size

This sets the maximum advertised EDNS UDP buffer size, in bytes, to control the size of packets received from authoritative servers in response to recursive queries. Valid values are 512 to 4096; values outside this range are silently adjusted to the nearest value within it. The default value is 1232.

The usual reason for setting edns-udp-size to a non-default value is to get UDP answers to pass through broken firewalls that block fragmented packets and/or block UDP DNS packets that are greater than 512 bytes.

When named first queries a remote server, it advertises a UDP buffer size of 512, as this has the greatest chance of success on the first try.

If the initial response times out, named tries again with plain DNS; if that is successful, it is taken as evidence that the server does not support EDNS. After enough failures using EDNS and successes using plain DNS, named defaults to plain DNS for future communications with that server. If that happens, named periodically sends an EDNS query to see if the situation has improved.

However, if the initial query is successful with EDNS advertising a buffer size of 512, then named advertises progressively larger buffer sizes on successive queries, until responses begin timing out or edns-udp-size is reached.

The default buffer sizes used by named are 512, 1232, 1432, and 4096, but never exceed edns-udp-size. (The values 1232 and 1432 are chosen to allow for an IPv4-/IPv6-encapsulated UDP message to be sent without fragmentation at the minimum MTU sizes for Ethernet and IPv6 networks.)

max-udp-size

This sets the maximum EDNS UDP message size that named sends, in bytes. Valid values are 512 to 4096; values outside this range are silently adjusted to the nearest value within it. The default value is 1232.

This value applies to responses sent by a server; to set the advertised buffer size in queries, see edns-udp-size.

The usual reason for setting max-udp-size to a non-default value is to allow UDP answers to pass through broken firewalls that block fragmented packets and/or block UDP packets that are greater than 512 bytes. This is independent of the advertised receive buffer (edns-udp-size).

Setting this to a low value encourages additional TCP traffic to the name server.

masterfile-format

This specifies the file format of zone files (see the section called “Additional File Formats”). The default value is text, which is the standard textual representation, except for secondary zones, in which the default value is raw. Files in formats other than text are typically expected to be generated by the named-compilezone tool, or dumped by named.

Note that when a zone file in a format other than text is loaded, named may omit some of the checks which would be performed for a file in text format. In particular, check-names checks do not apply for the raw format. This means a zone file in the raw format must be generated with the same check level as that specified in the named configuration file. Also, map format files are loaded directly into memory via memory mapping, with only minimal checking.

This statement sets the masterfile-format for all zones, but can be overridden on a per-zone or per-view basis by including a masterfile-format statement within the zone or view block in the configuration file.

masterfile-style

This specifies the formatting of zone files during dump, when the masterfile-format is text. This option is ignored with any other masterfile-format.

When set to relative, records are printed in a multi-line format, with owner names expressed relative to a shared origin. When set to full, records are printed in a single-line format with absolute owner names. The full format is most suitable when a zone file needs to be processed automatically by a script. The relative format is more human-readable, and is thus suitable when a zone is to be edited by hand. The default is relative.

max-recursion-depth

This sets the maximum number of levels of recursion that are permitted at any one time while servicing a recursive query. Resolving a name may require looking up a name server address, which in turn requires resolving another name, etc.; if the number of recursions exceeds this value, the recursive query is terminated and returns SERVFAIL. The default is 7.

max-recursion-queries

This sets the maximum number of iterative queries that may be sent while servicing a recursive query. If more queries are sent, the recursive query is terminated and returns SERVFAIL. The default is 100.

notify-delay

This sets the delay, in seconds, between sending sets of NOTIFY messages for a zone. The default is 5 seconds.

The overall rate at which NOTIFY messages are sent for all zones is controlled by serial-query-rate.

max-rsa-exponent-size

This sets the maximum RSA exponent size, in bits, that is accepted when validating. Valid values are 35 to 4096 bits. The default, zero, is also accepted and is equivalent to 4096.

prefetch

When a query is received for cached data which is to expire shortly, named can refresh the data from the authoritative server immediately, ensuring that the cache always has an answer available.

prefetch specifies the "trigger" TTL value at which prefetch of the current query takes place; when a cache record with a lower TTL value is encountered during query processing, it is refreshed. Valid trigger TTL values are 1 to 10 seconds. Values larger than 10 seconds are silently reduced to 10. Setting a trigger TTL to zero causes prefetch to be disabled. The default trigger TTL is 2.

An optional second argument specifies the "eligibility" TTL: the smallest original TTL value that is accepted for a record to be eligible for prefetching. The eligibility TTL must be at least six seconds longer than the trigger TTL; if not, named silently adjusts it upward. The default eligibility TTL is 9.

v6-bias

When determining the next name server to try, this indicates by how many milliseconds to prefer IPv6 name servers. The default is 50 milliseconds.

Built-in Server Information Zones

The server provides some helpful diagnostic information through a number of built-in zones under the pseudo-top-level-domain bind in the CHAOS class. These zones are part of a built-in view (see the section called “view Statement Grammar”) of class CHAOS, which is separate from the default view of class IN. Most global configuration options (allow-query, etc.) apply to this view, but some are locally overridden: notify, recursion, and allow-new-zones are always set to no, and rate-limit is set to allow three responses per second.

To disable these zones, use the options below or hide the built-in CHAOS view by defining an explicit view of class CHAOS that matches all clients.

version

This is the version the server should report via a query of the name version.bind with type TXT and class CHAOS. The default is the real version number of this server. Specifying version none disables processing of the queries.

Setting version to any value (including none) also disables queries for authors.bind TXT CH.

hostname

This is the hostname the server should report via a query of the name hostname.bind with type TXT and class CHAOS. This defaults to the hostname of the machine hosting the name server, as found by the gethostname() function. The primary purpose of such queries is to identify which of a group of anycast servers is actually answering the queries. Specifying hostname none; disables processing of the queries.

server-id

This is the ID the server should report when receiving a Name Server Identifier (NSID) query, or a query of the name ID.SERVER with type TXT and class CHAOS. The primary purpose of such queries is to identify which of a group of anycast servers is actually answering the queries. Specifying server-id none; disables processing of the queries. Specifying server-id hostname; causes named to use the hostname as found by the gethostname() function. The default server-id is none.

Built-in Empty Zones

The named server has some built-in empty zones, for SOA and NS records only. These are for zones that should normally be answered locally and which queries should not be sent to the Internet's root servers. The official servers which cover these namespaces return NXDOMAIN responses to these queries. In particular, these cover the reverse namespaces for addresses from RFC 1918, RFC 4193, RFC 5737, and RFC 6598. They also include the reverse namespace for the IPv6 local address (locally assigned), IPv6 link local addresses, the IPv6 loopback address, and the IPv6 unknown address.

The server attempts to determine if a built-in zone already exists or is active (covered by a forward-only forwarding declaration) and does not create an empty zone if either is true.

The current list of empty zones is:

  • 10.IN-ADDR.ARPA
  • 16.172.IN-ADDR.ARPA
  • 17.172.IN-ADDR.ARPA
  • 18.172.IN-ADDR.ARPA
  • 19.172.IN-ADDR.ARPA
  • 20.172.IN-ADDR.ARPA
  • 21.172.IN-ADDR.ARPA
  • 22.172.IN-ADDR.ARPA
  • 23.172.IN-ADDR.ARPA
  • 24.172.IN-ADDR.ARPA
  • 25.172.IN-ADDR.ARPA
  • 26.172.IN-ADDR.ARPA
  • 27.172.IN-ADDR.ARPA
  • 28.172.IN-ADDR.ARPA
  • 29.172.IN-ADDR.ARPA
  • 30.172.IN-ADDR.ARPA
  • 31.172.IN-ADDR.ARPA
  • 168.192.IN-ADDR.ARPA
  • 64.100.IN-ADDR.ARPA
  • 65.100.IN-ADDR.ARPA
  • 66.100.IN-ADDR.ARPA
  • 67.100.IN-ADDR.ARPA
  • 68.100.IN-ADDR.ARPA
  • 69.100.IN-ADDR.ARPA
  • 70.100.IN-ADDR.ARPA
  • 71.100.IN-ADDR.ARPA
  • 72.100.IN-ADDR.ARPA
  • 73.100.IN-ADDR.ARPA
  • 74.100.IN-ADDR.ARPA
  • 75.100.IN-ADDR.ARPA
  • 76.100.IN-ADDR.ARPA
  • 77.100.IN-ADDR.ARPA
  • 78.100.IN-ADDR.ARPA
  • 79.100.IN-ADDR.ARPA
  • 80.100.IN-ADDR.ARPA
  • 81.100.IN-ADDR.ARPA
  • 82.100.IN-ADDR.ARPA
  • 83.100.IN-ADDR.ARPA
  • 84.100.IN-ADDR.ARPA
  • 85.100.IN-ADDR.ARPA
  • 86.100.IN-ADDR.ARPA
  • 87.100.IN-ADDR.ARPA
  • 88.100.IN-ADDR.ARPA
  • 89.100.IN-ADDR.ARPA
  • 90.100.IN-ADDR.ARPA
  • 91.100.IN-ADDR.ARPA
  • 92.100.IN-ADDR.ARPA
  • 93.100.IN-ADDR.ARPA
  • 94.100.IN-ADDR.ARPA
  • 95.100.IN-ADDR.ARPA
  • 96.100.IN-ADDR.ARPA
  • 97.100.IN-ADDR.ARPA
  • 98.100.IN-ADDR.ARPA
  • 99.100.IN-ADDR.ARPA
  • 100.100.IN-ADDR.ARPA
  • 101.100.IN-ADDR.ARPA
  • 102.100.IN-ADDR.ARPA
  • 103.100.IN-ADDR.ARPA
  • 104.100.IN-ADDR.ARPA
  • 105.100.IN-ADDR.ARPA
  • 106.100.IN-ADDR.ARPA
  • 107.100.IN-ADDR.ARPA
  • 108.100.IN-ADDR.ARPA
  • 109.100.IN-ADDR.ARPA
  • 110.100.IN-ADDR.ARPA
  • 111.100.IN-ADDR.ARPA
  • 112.100.IN-ADDR.ARPA
  • 113.100.IN-ADDR.ARPA
  • 114.100.IN-ADDR.ARPA
  • 115.100.IN-ADDR.ARPA
  • 116.100.IN-ADDR.ARPA
  • 117.100.IN-ADDR.ARPA
  • 118.100.IN-ADDR.ARPA
  • 119.100.IN-ADDR.ARPA
  • 120.100.IN-ADDR.ARPA
  • 121.100.IN-ADDR.ARPA
  • 122.100.IN-ADDR.ARPA
  • 123.100.IN-ADDR.ARPA
  • 124.100.IN-ADDR.ARPA
  • 125.100.IN-ADDR.ARPA
  • 126.100.IN-ADDR.ARPA
  • 127.100.IN-ADDR.ARPA
  • 0.IN-ADDR.ARPA
  • 127.IN-ADDR.ARPA
  • 254.169.IN-ADDR.ARPA
  • 2.0.192.IN-ADDR.ARPA
  • 100.51.198.IN-ADDR.ARPA
  • 113.0.203.IN-ADDR.ARPA
  • 255.255.255.255.IN-ADDR.ARPA
  • 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
  • 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
  • 8.B.D.0.1.0.0.2.IP6.ARPA
  • D.F.IP6.ARPA
  • 8.E.F.IP6.ARPA
  • 9.E.F.IP6.ARPA
  • A.E.F.IP6.ARPA
  • B.E.F.IP6.ARPA
  • EMPTY.AS112.ARPA
  • HOME.ARPA

Empty zones can be set at the view level and only apply to views of class IN. Disabled empty zones are only inherited from options if there are no disabled empty zones specified at the view level. To override the options list of disabled zones, disable the root zone at the view level. For example:

            disable-empty-zone ".";

If using the address ranges covered here, reverse zones covering the addresses should already be in place. In practice this appears to not be the case, with many queries being made to the infrastructure servers for names in these spaces. So many, in fact, that sacrificial servers had to be deployed to channel the query load away from the infrastructure servers.

Note

The real parent servers for these zones should disable all empty zones under the parent zone they serve. For the real root servers, this is all built-in empty zones. This enables them to return referrals to deeper in the tree.

empty-server

This specifies the server name that appears in the returned SOA record for empty zones. If none is specified, the zone's name is used.

empty-contact

This specifies the contact name that appears in the returned SOA record for empty zones. If none is specified, "." is used.

empty-zones-enable

This enables or disables all empty zones. By default, they are enabled.

disable-empty-zone

This disables individual empty zones. By default, none are disabled. This option can be specified multiple times.

Additional Section Caching

The additional section cache, also called acache, is an internal cache to improve the response performance of BIND 9. When additional section caching is enabled, BIND 9 caches an internal shortcut to the additional section content for each answer RR. Note that acache is an internal caching mechanism of BIND 9, and is not related to the DNS caching server function.

Additional section caching does not change the response content (except the RRsets ordering of the additional section; see below), but can improve the response performance significantly. It is particularly effective when BIND 9 acts as an authoritative server for a zone that has many delegations with many glue RRs.

To obtain the maximum performance improvement from additional section caching, setting additional-from-cache to no is recommended, since the current implementation of acache does not shortcut additional section information from the DNS cache data.

One obvious disadvantage of acache is that it requires much more memory for the internal cached data. Thus, if the response performance does not matter and memory consumption is more critical, the acache mechanism can be disabled by setting acache-enable to no. It is also possible to specify the upper limit of memory consumption for acache by using max-acache-size.

Additional section caching also has a minor effect on the RRset ordering in the additional section. Without acache, cyclic order is effective for the additional section as well as for the answer and authority sections. However, additional section caching fixes the ordering when it first caches an RRset for the additional section, and the same ordering is kept in succeeding responses, regardless of the setting of rrset-order. The effect of this should be minor, however, since an RRset in the additional section typically only contains a small number of RRs (and in many cases only a single RR), so the ordering is not significant.

The following is a summary of options related to acache.

acache-enable

If yes, additional section caching is enabled. The default value is no.

acache-cleaning-interval

The server removes stale cache entries, based on an LRU-based algorithm, every acache-cleaning-interval minutes. The default is 60 minutes. If set to 0, no periodic cleaning occurs.

max-acache-size

This is the maximum amount of memory, in bytes, to use for the server's acache. When the amount of data in the acache reaches this limit, the server cleans more aggressively so that the limit is not exceeded. In a server with multiple views, the limit applies separately to the acache of each view. The default is 16M.

Content Filtering

BIND 9 provides the ability to filter out responses from external DNS servers containing certain types of data in the answer section. Specifically, it can reject address (A or AAAA) records if the corresponding IPv4 or IPv6 addresses match the given address_match_list of the deny-answer-addresses option. It can also reject CNAME or DNAME records if the "alias" name (i.e., the CNAME alias or the substituted query name due to DNAME) matches the given namelist of the deny-answer-aliases option, where "match" means the alias name is a subdomain of one of the name_list elements. If the optional namelist is specified with except-from, records whose query name matches the list are accepted regardless of the filter setting. Likewise, if the alias name is a subdomain of the corresponding zone, the deny-answer-aliases filter does not apply; for example, even if "example.com" is specified for deny-answer-aliases,

www.example.com. CNAME xxx.example.com.

returned by an "example.com" server is accepted.

In the address_match_list of the deny-answer-addresses option, only ip_addr and ip_prefix are meaningful; any key_id is silently ignored.

If a response message is rejected due to the filtering, the entire message is discarded without being cached, and a SERVFAIL error is returned to the client.

This filtering is intended to prevent "DNS rebinding attacks," in which an attacker, in response to a query for a domain name the attacker controls, returns an IP address within the user's own network or an alias name within the user's own domain. A naive web browser or script could then serve as an unintended proxy, allowing the attacker to get access to an internal node of the local network that could not be externally accessed otherwise. See the paper available at https://dl.acm.org/doi/10.1145/1315245.1315298 for more details about these attacks.

For example, with a domain named "example.net" and an internal network using an IPv4 prefix 192.0.2.0/24, an administrator might specify the following rules:

deny-answer-addresses { 192.0.2.0/24; } except-from { "example.net"; };
deny-answer-aliases { "example.net"; };

If an external attacker let a web browser in the local network look up an IPv4 address of "attacker.example.com", the attacker's DNS server would return a response like this:

attacker.example.com. A 192.0.2.1

in the answer section. Since the rdata of this record (the IPv4 address) matches the specified prefix 192.0.2.0/24, this response would be ignored.

On the other hand, if the browser looked up a legitimate internal web server "www.example.net" and the following response were returned to the BIND 9 server:

www.example.net. A 192.0.2.2

it would be accepted, since the owner name "www.example.net" matches the except-from element, "example.net".

Note that this is not really an attack on the DNS per se. In fact, there is nothing wrong with having an "external" name mapped to an "internal" IP address or domain name from the DNS point of view; it might actually be provided for a legitimate purpose, such as for debugging. As long as the mapping is provided by the correct owner, it either is not possible or does not make sense to detect whether the intent of the mapping is legitimate within the DNS. The "rebinding" attack must primarily be protected at the application that uses the DNS. For a large site, however, it may be difficult to protect all possible applications at once. This filtering feature is provided only to help such an operational environment; turning it on is generally discouraged unless there is no other choice and the attack is a real threat to applications.

Care should be particularly taken if using this option for addresses within 127.0.0.0/8. These addresses are obviously "internal," but many applications conventionally rely on a DNS mapping from some name to such an address. Filtering out DNS records containing this address spuriously can break such applications.

Response Policy Zone (RPZ) Rewriting

BIND 9 includes a limited mechanism to modify DNS responses for requests analogous to email anti-spam DNS rejection lists. Responses can be changed to deny the existence of domains (NXDOMAIN), deny the existence of IP addresses for domains (NODATA), or contain other IP addresses or data.

Response policy zones are named in the response-policy option for the view or among the global options if there is no response-policy option for the view. Response policy zones are ordinary DNS zones containing RRsets that can be queried normally if allowed. It is usually best to restrict those queries with something like allow-query { localhost; };. Note that zones using masterfile-format map cannot be used as policy zones.

A response-policy option can support multiple policy zones. To maximize performance, a radix tree is used to quickly identify response policy zones containing triggers that match the current query. This imposes an upper limit of 32 on the number of policy zones in a single response-policy option; more than that is a configuration error.

Rules encoded in response policy zones are processed after those defined in Access Control Lists (ACLs). All queries from clients which are not permitted access to the resolver are answered with a status code of REFUSED, regardless of configured RPZ rules.

Five policy triggers can be encoded in RPZ records.

RPZ-CLIENT-IP

IP records are triggered by the IP address of the DNS client. Client IP address triggers are encoded in records that have owner names that are subdomains of rpz-client-ip, relativized to the policy zone origin name, and encode an address or address block. IPv4 addresses are represented as prefixlength.B4.B3.B2.B1.rpz-client-ip. The IPv4 prefix length must be between 1 and 32. All four bytes - B4, B3, B2, and B1 - must be present. B4 is the decimal value of the least significant byte of the IPv4 address as in IN-ADDR.ARPA.

IPv6 addresses are encoded in a format similar to the standard IPv6 text representation, prefixlength.W8.W7.W6.W5.W4.W3.W2.W1.rpz-client-ip. Each of W8,...,W1 is a one- to four-digit hexadecimal number representing 16 bits of the IPv6 address as in the standard text representation of IPv6 addresses, but reversed as in IP6.ARPA. (Note that this representation of IPv6 address is different from IP6.ARPA where each hex digit occupies a label.) All 8 words must be present except when one set of consecutive zero words is replaced with .zz., analogous to double colons (::) in standard IPv6 text encodings. The IPv6 prefix length must be between 1 and 128.

QNAME

QNAME policy records are triggered by query names of requests and targets of CNAME records resolved to generate the response. The owner name of a QNAME policy record is the query name relativized to the policy zone.

RPZ-IP

IP triggers are IP addresses in an A or AAAA record in the ANSWER section of a response. They are encoded like client-IP triggers, except as subdomains of rpz-ip.

RPZ-NSDNAME

NSDNAME triggers match names of authoritative servers for the query name, a parent of the query name, a CNAME for the query name, or a parent of a CNAME. They are encoded as subdomains of rpz-nsdname, relativized to the RPZ origin name. NSIP triggers match IP addresses in A and AAAA RRsets for domains that can be checked against NSDNAME policy records. The nsdname-enable phrase turns NSDNAME triggers off or on for a single policy zone or for all zones.

If authoritative nameservers for the query name are not yet known, named recursively looks up the authoritative servers for the query name before applying an RPZ-NSDNAME rule, which can cause a processing delay. To speed up processing at the cost of precision, the nsdname-wait-recurse option can be used; when set to no, RPZ-NSDNAME rules are only applied when authoritative servers for the query name have already been looked up and cached. If authoritative servers for the query name are not in the cache, the RPZ-NSDNAME rule is ignored, but the authoritative servers for the query name are looked up in the background and the rule is applied to subsequent queries. The default is yes, meaning RPZ-NSDNAME rules are always applied, even if authoritative servers for the query name need to be looked up first.

RPZ-NSIP

NSIP triggers match the IP addresses of authoritative servers. They are enncoded like IP triggers, except as subdomains of rpz-nsip. NSDNAME and NSIP triggers are checked only for names with at least min-ns-dots dots. The default value of min-ns-dots is 1, to exclude top-level domains.

If a name server's IP address is not yet known, named recursively looks up the IP address before applying an RPZ-NSIP rule, which can cause a processing delay. To speed up processing at the cost of precision, the nsip-wait-recurse option can be used: when set to no, RPZ-NSIP rules are only applied when a name server's IP address has already been looked up and cached. If a server's IP address is not in the cache, the RPZ-NSIP rule is ignored, but the address is looked up in the background and the rule is applied to subsequent queries. The default is yes, meaning RPZ-NSIP rules are always applied, even if an address needs to be looked up first.

The query response is checked against all response policy zones, so two or more policy records can be triggered by a response. Because DNS responses are rewritten according to at most one policy record, a single record encoding an action (other than DISABLED actions) must be chosen. Triggers, or the records that encode them, are chosen for rewriting in the following order:

  1. Choose the triggered record in the zone that appears first in the response-policy option.
  2. Prefer CLIENT-IP to QNAME to IP to NSDNAME to NSIP triggers in a single zone.
  3. Among NSDNAME triggers, prefer the trigger that matches the smallest name under the DNSSEC ordering.
  4. Among IP or NSIP triggers, prefer the trigger with the longest prefix.
  5. Among triggers with the same prefix length, prefer the IP or NSIP trigger that matches the smallest IP address.

When the processing of a response is restarted to resolve DNAME or CNAME records and a policy record set has not been triggered, all response policy zones are again consulted for the DNAME or CNAME names and addresses.

RPZ record sets are any types of DNS record, except DNAME or DNSSEC, that encode actions or responses to individual queries. Any of the policies can be used with any of the triggers. For example, while the TCP-only policy is commonly used with client-IP triggers, it can be used with any type of trigger to force the use of TCP for responses with owner names in a zone.

PASSTHRU

The auto-acceptance policy is specified by a CNAME whose target is rpz-passthru. It causes the response to not be rewritten and is most often used to "poke holes" in policies for CIDR blocks.

DROP

The auto-rejection policy is specified by a CNAME whose target is rpz-drop. It causes the response to be discarded. Nothing is sent to the DNS client.

TCP-Only

The "slip" policy is specified by a CNAME whose target is rpz-tcp-only. It changes UDP responses to short, truncated DNS responses that require the DNS client to try again with TCP. It is used to mitigate distributed DNS reflection attacks.

NXDOMAIN

The "domain undefined" response is encoded by a CNAME whose target is the root domain (.)

NODATA

The empty set of resource records is specified by a CNAME whose target is the wildcard top-level domain (*.). It rewrites the response to NODATA or ANCOUNT=0.

Local Data

A set of ordinary DNS records can be used to answer queries. Queries for record types not the set are answered with NODATA.

A special form of local data is a CNAME whose target is a wildcard such as *.example.com. It is used as if an ordinary CNAME after the asterisk (*) has been replaced with the query name. This special form is useful for query logging in the walled garden's authoritative DNS server.

All of the actions specified in all of the individual records in a policy zone can be overridden with a policy clause in the response-policy option. An organization using a policy zone provided by another organization might use this mechanism to redirect domains to its own walled garden.

GIVEN

The placeholder policy says "do not override but perform the action specified in the zone."

DISABLED

The testing override policy causes policy zone records to do nothing but log what they would have done if the policy zone were not disabled. The response to the DNS query is written (or not) according to any triggered policy records that are not disabled. Disabled policy zones should appear first, because they are often not logged if a higher-precedence trigger is found first.

PASSTHRU, DROP, TCP-Only, NXDOMAIN, NODATA

each override the corresponding per-record policy.

CNAME domain

causes all RPZ policy records to act as if they were "cname domain" records.

By default, the actions encoded in a response policy zone are applied only to queries that ask for recursion (RD=1). That default can be changed for a single policy zone, or for all response policy zones in a view, with a recursive-only no clause. This feature is useful for serving the same zone files both inside and outside an RFC 1918 cloud and using RPZ to delete answers that would otherwise contain RFC 1918 values on the externally visible name server or view.

Also by default, RPZ actions are applied only to DNS requests that either do not request DNSSEC metadata (DO=0) or when no DNSSEC records are available for the requested name in the original zone (not the response policy zone). This default can be changed for all response policy zones in a view with a break-dnssec yes clause. In that case, RPZ actions are applied regardless of DNSSEC. The name of the clause option reflects the fact that results rewritten by RPZ actions cannot verify.

No DNS records are needed for a QNAME or Client-IP trigger; the name or IP address itself is sufficient, so in principle the query name need not be recursively resolved. However, not resolving the requested name can leak the fact that response policy rewriting is in use, and that the name is listed in a policy zone, to operators of servers for listed names. To prevent that information leak, by default any recursion needed for a request is done before any policy triggers are considered. Because listed domains often have slow authoritative servers, this behavior can cost significant time. The qname-wait-recurse no option overrides that default behavior when recursion cannot change a non-error response. The option does not affect QNAME or client-IP triggers in policy zones listed after other zones containing IP, NSIP, and NSDNAME triggers, because those may depend on the A, AAAA, and NS records that would be found during recursive resolution. It also does not affect DNSSEC requests (DO=1) unless break-dnssec yes is in use, because the response would depend on whether RRSIG records were found during resolution. Using this option can cause error responses such as SERVFAIL to appear to be rewritten, since no recursion is being done to discover problems at the authoritative server.

The TTL of a record modified by RPZ policies is set from the TTL of the relevant record in the policy zone. It is then limited to a maximum value. The max-policy-ttl clause changes the maximum number of seconds from its default of 5.

For example, an administrator might use this option statement:

    response-policy { zone "badlist"; };

and this zone statement:

    zone "badlist" {type master; file "master/badlist"; allow-query {none;}; };

with this zone file:

$TTL 1H
@                       SOA LOCALHOST. named-mgr.example.com (1 1h 15m 30d 2h)
                        NS  LOCALHOST.

; QNAME policy records.  There are no periods (.) after the owner names.
nxdomain.domain.com     CNAME   .               ; NXDOMAIN policy
*.nxdomain.domain.com   CNAME   .               ; NXDOMAIN policy
nodata.domain.com       CNAME   *.              ; NODATA policy
*.nodata.domain.com     CNAME   *.              ; NODATA policy
bad.domain.com          A       10.0.0.1        ; redirect to a walled garden
                        AAAA    2001:2::1
bzone.domain.com        CNAME   garden.example.com.

; do not rewrite (PASSTHRU) OK.DOMAIN.COM
ok.domain.com           CNAME   rpz-passthru.

; redirect x.bzone.domain.com to x.bzone.domain.com.garden.example.com
*.bzone.domain.com      CNAME   *.garden.example.com.


; IP policy records that rewrite all responses containing A records in 127/8
;       except 127.0.0.1
8.0.0.0.127.rpz-ip      CNAME   .
32.1.0.0.127.rpz-ip     CNAME   rpz-passthru.

; NSDNAME and NSIP policy records
ns.domain.com.rpz-nsdname   CNAME   .
48.zz.2.2001.rpz-nsip       CNAME   .

; auto-reject and auto-accept some DNS clients
112.zz.2001.rpz-client-ip    CNAME   rpz-drop.
8.0.0.0.127.rpz-client-ip    CNAME   rpz-drop.

; force some DNS clients and responses in the example.com zone to TCP
16.0.0.1.10.rpz-client-ip   CNAME   rpz-tcp-only.
example.com                 CNAME   rpz-tcp-only.
*.example.com               CNAME   rpz-tcp-only.

RPZ can affect server performance. Each configured response policy zone requires the server to perform one to four additional database lookups before a query can be answered. For example, a DNS server with four policy zones, each with all four kinds of response triggers (QNAME, IP, NSIP, and NSDNAME), requires a total of 17 times as many database lookups as a similar DNS server with no response policy zones. A BIND 9 server with adequate memory and one response policy zone with QNAME and IP triggers might achieve a maximum queries-per-second (QPS) rate about 20% lower. A server with four response policy zones with QNAME and IP triggers might have a maximum QPS rate about 50% lower.

Responses rewritten by RPZ are counted in the RPZRewrites statistics.

The log clause can be used to optionally turn off rewrite logging for a particular response policy zone. By default, all rewrites are logged.

Response Rate Limiting

Excessive, almost identical UDP responses can be controlled by configuring a rate-limit clause in an options or view statement. This mechanism keeps authoritative BIND 9 from being used to amplify reflection denial of service (DoS) attacks. Short, truncated (TC=1) responses can be sent to provide rate-limited responses to legitimate clients within a range of forged, attacked IP addresses. Legitimate clients react to dropped or truncated responses by retrying with UDP or with TCP, respectively.

This mechanism is intended for authoritative DNS servers. It can be used on recursive servers, but can slow applications such as SMTP servers (mail receivers) and HTTP clients (web browsers) that repeatedly request the same domains. When possible, closing "open" recursive servers is better.

Response rate limiting uses a "credit" or "token bucket" scheme. Each combination of identical response and client has a conceptual "account" that earns a specified number of credits every second. A prospective response debits its account by one. Responses are dropped or truncated while the account is negative. Responses are tracked within a rolling window of time which defaults to 15 seconds, but which can be configured with the window option to any value from 1 to 3600 seconds (1 hour). The account cannot become more positive than the per-second limit or more negative than window times the per-second limit. When the specified number of credits for a class of responses is set to 0, those responses are not rate-limited.

The notions of "identical response" and "DNS client" for rate limiting are not simplistic. All responses to an address block are counted as if to a single client. The prefix lengths of address blocks are specified with ipv4-prefix-length (default 24) and ipv6-prefix-length (default 56).

All non-empty responses for a valid domain name (qname) and record type (qtype) are identical and have a limit specified with responses-per-second (default 0 or no limit). All empty (NODATA) responses for a valid domain, regardless of query type, are identical. Responses in the NODATA class are limited by nodata-per-second (default responses-per-second). Requests for any and all undefined subdomains of a given valid domain result in NXDOMAIN errors, and are identical regardless of query type. They are limited by nxdomains-per-second (default responses-per-second). This controls some attacks using random names, but can be relaxed or turned off (set to 0) on servers that expect many legitimate NXDOMAIN responses, such as from anti-spam rejection lists. Referrals or delegations to the server of a given domain are identical and are limited by referrals-per-second (default responses-per-second).

Responses generated from local wildcards are counted and limited as if they were for the parent domain name. This controls flooding using random.wild.example.com.

All requests that result in DNS errors other than NXDOMAIN, such as SERVFAIL and FORMERR, are identical regardless of requested name (qname) or record type (qtype). This controls attacks using invalid requests or distant, broken authoritative servers. By default the limit on errors is the same as the responses-per-second value, but it can be set separately with errors-per-second.

Many attacks using DNS involve UDP requests with forged source addresses. Rate limiting prevents the use of BIND 9 to flood a network with responses to requests with forged source addresses, but could let a third party block responses to legitimate requests. There is a mechanism that can answer some legitimate requests from a client whose address is being forged in a flood. Setting slip to 2 (its default) causes every other UDP request to be answered with a small truncated (TC=1) response. The small size and reduced frequency, and resulting lack of amplification, of "slipped" responses make them unattractive for reflection DoS attacks. slip must be between 0 and 10. A value of 0 does not "slip"; no truncated responses are sent due to rate limiting. Rather, all responses are dropped. A value of 1 causes every response to slip; values between 2 and 10 cause every nth response to slip. Some error responses, including REFUSED and SERVFAIL, cannot be replaced with truncated responses and are instead leaked at the slip rate.

(Note: dropped responses from an authoritative server may reduce the difficulty of a third party successfully forging a response to a recursive resolver. The best security against forged responses is for authoritative operators to sign their zones using DNSSEC and for resolver operators to validate the responses. When this is not an option, operators who are more concerned with response integrity than with flood mitigation may consider setting slip to 1, causing all rate-limited responses to be truncated rather than dropped. This reduces the effectiveness of rate-limiting against reflection attacks.)

When the approximate query-per-second rate exceeds the qps-scale value, the responses-per-second, errors-per-second, nxdomains-per-second, and all-per-second values are reduced by the ratio of the current rate to the qps-scale value. This feature can tighten defenses during attacks. For example, with qps-scale 250; responses-per-second 20; and a total query rate of 1000 queries/second for all queries from all DNS clients including via TCP, then the effective responses/second limit changes to (250/1000)*20, or 5. Responses sent via TCP are not limited but are counted to compute the query-per-second rate.

Communities of DNS clients can be given their own parameters or no rate limiting by putting rate-limit statements in view statements instead of in the global option statement. A rate-limit statement in a view replaces, rather than supplements, a rate-limit statement among the main options. DNS clients within a view can be exempted from rate limits with the exempt-clients clause.

UDP responses of all kinds can be limited with the all-per-second phrase. This rate limiting is unlike the rate limiting provided by responses-per-second, errors-per-second, and nxdomains-per-second on a DNS server, which are often invisible to the victim of a DNS reflection attack. Unless the forged requests of the attack are the same as the legitimate requests of the victim, the victim's requests are not affected. Responses affected by an all-per-second limit are always dropped; the slip value has no effect. An all-per-second limit should be at least 4 times as large as the other limits, because single DNS clients often send bursts of legitimate requests. For example, the receipt of a single mail message can prompt requests from an SMTP server for NS, PTR, A, and AAAA records as the incoming SMTP/TCP/IP connection is considered. The SMTP server can need additional NS, A, AAAA, MX, TXT, and SPF records as it considers the SMTP Mail From command. Web browsers often repeatedly resolve the same names that are duplicated in HTML <IMG> tags in a page. all-per-second is similar to the rate limiting offered by firewalls but is often inferior. Attacks that justify ignoring the contents of DNS responses are likely to be attacks on the DNS server itself. They usually should be discarded before the DNS server spends resources make TCP connections or parsing DNS requests, but that rate limiting must be done before the DNS server sees the requests.

The maximum size of the table used to track requests and rate-limit responses is set with max-table-size. Each entry in the table is between 40 and 80 bytes. The table needs approximately as many entries as the number of requests received per second. The default is 20,000. To reduce the cold start of growing the table, min-table-size (default 500) can set the minimum table size. Enable rate-limit category logging to monitor expansions of the table and inform choices for the initial and maximum table size.

Use log-only yes to test rate-limiting parameters without actually dropping any requests.

Responses dropped by rate limits are included in the RateDropped and QryDropped statistics. Responses that truncated by rate limits are included in RateSlipped and RespTruncated.

NXDOMAIN Redirection

named supports NXDOMAIN redirection via two methods:

With either method, when named gets an NXDOMAIN response it examines a separate namespace to see if the NXDOMAIN response should be replaced with an alternative response.

With a redirect zone (zone "." { type redirect; };), the data used to replace the NXDOMAIN is held in a single zone which is not part of the normal namespace. All the redirect information is contained in the zone; there are no delegations.

With a redirect namespace (option { nxdomain-redirect <suffix> };), the data used to replace the NXDOMAIN is part of the normal namespace and is looked up by appending the specified suffix to the original query name. This roughly doubles the cache required to process NXDOMAIN responses, as both the original NXDOMAIN response and the replacement data (or a NXDOMAIN indicating that there is no replacement) must be stored.

If both a redirect zone and a redirect namespace are configured, the redirect zone is tried first.

server Statement Grammar

server netprefix {
	bogus boolean;
	edns boolean;
	edns-udp-size integer;
	edns-version integer;
	keys server_key;
	max-udp-size integer;
	notify-source ( ipv4_address | * ) [ port ( integer | * ) ] [
	    dscp integer ];
	notify-source-v6 ( ipv6_address | * ) [ port ( integer | * ) ]
	    [ dscp integer ];
	provide-ixfr boolean;
	query-source ( ( [ address ] ( ipv4_address | * ) [ port (
	    integer | * ) ] ) | ( [ [ address ] ( ipv4_address | * ) ]
	    port ( integer | * ) ) ) [ dscp integer ];
	query-source-v6 ( ( [ address ] ( ipv6_address | * ) [ port (
	    integer | * ) ] ) | ( [ [ address ] ( ipv6_address | * ) ]
	    port ( integer | * ) ) ) [ dscp integer ];
	request-expire boolean;
	request-ixfr boolean;
	request-nsid boolean;
	send-cookie boolean;
	tcp-only boolean;
	transfer-format ( many-answers | one-answer );
	transfer-source ( ipv4_address | * ) [ port ( integer | * ) ] [
	    dscp integer ];
	transfer-source-v6 ( ipv6_address | * ) [ port ( integer | * )
	    ] [ dscp integer ];
	transfers integer;
};

server Statement Definition and Usage

The server statement defines characteristics to be associated with a remote name server. If a prefix length is specified, then a range of servers is covered. Only the most specific server clause applies, regardless of the order in named.conf.

The server statement can occur at the top level of the configuration file or inside a view statement. If a view statement contains one or more server statements, only those apply to the view and any top-level ones are ignored. If a view contains no server statements, any top-level server statements are used as defaults.

If a remote server is giving out bad data, marking it as bogus prevents further queries to it. The default value of bogus is no.

The provide-ixfr clause determines whether the local server, acting as primary, responds with an incremental zone transfer when the given remote server, a secondary, requests it. If set to yes, incremental transfer is provided whenever possible. If set to no, all transfers to the remote server are non-incremental. If not set, the value of the provide-ixfr option in the view or global options block is used as a default.

The request-ixfr clause determines whether the local server, acting as a secondary, requests incremental zone transfers from the given remote server, a primary. If not set, the value of the request-ixfr option in the view or global options block is used as a default. It may also be set in the zone block; if set there, it overrides the global or view setting for that zone.

IXFR requests to servers that do not support IXFR automatically fall back to AXFR. Therefore, there is no need to manually list which servers support IXFR and which ones do not; the global default of yes should always work. The purpose of the provide-ixfr and request-ixfr clauses is to make it possible to disable the use of IXFR even when both primary and secondary claim to support it: for example, if one of the servers is buggy and crashes or corrupts data when IXFR is used.

The request-expire clause determines whether the local server, when acting as a secondary, requests the EDNS EXPIRE value. The EDNS EXPIRE value indicates the remaining time before the zone data expires and needs to be refreshed. This is used when a secondary server transfers a zone from another secondary server; when transferring from the primary, the expiration timer is set from the EXPIRE field of the SOA record instead. The default is yes.

The edns clause determines whether the local server attempts to use EDNS when communicating with the remote server. The default is yes.

The edns-udp-size option sets the EDNS UDP size that is advertised by named when querying the remote server. Valid values are 512 to 4096 bytes; values outside this range are silently adjusted to the nearest value within it. This option is useful when advertising a different value to this server than the value advertised globally: for example, when there is a firewall at the remote site that is blocking large replies. Note: currently, this sets a single UDP size for all packets sent to the server; named does not deviate from this value. This differs from the behavior of edns-udp-size in options or view statements, where it specifies a maximum value. The server statement behavior may be brought into conformance with the options/view behavior in future releases.

The edns-version option sets the maximum EDNS VERSION that is sent to the server(s) by the resolver. The actual EDNS version sent is still subject to normal EDNS version-negotiation rules (see RFC 6891), the maximum EDNS version supported by the server, and any other heuristics that indicate that a lower version should be sent. This option is intended to be used when a remote server reacts badly to a given EDNS version or higher; it should be set to the highest version the remote server is known to support. Valid values are 0 to 255; higher values are silently adjusted. This option is not needed until higher EDNS versions than 0 are in use.

The max-udp-size option sets the maximum EDNS UDP message size named sends. Valid values are 512 to 4096 bytes; values outside this range are silently adjusted. This option is useful when there is a firewall that is blocking large replies from named.

The tcp-only option sets the transport protocol to TCP. The default is to use the UDP transport and to fallback on TCP only when a truncated response is received.

The server supports two zone transfer methods. The first, one-answer, uses one DNS message per resource record transferred. many-answers packs as many resource records as possible into a single message, which is more efficient. It is possible to specify which method to use for a server via the transfer-format option; If not set there, the transfer-format specified by the options statement is used.

transfers is used to limit the number of concurrent inbound zone transfers from the specified server. If no transfers clause is specified, the limit is set according to the transfers-per-ns option.

The keys clause identifies a key_id defined by the key statement, to be used for transaction security (TSIG, the section called “TSIG”) when talking to the remote server. When a request is sent to the remote server, a request signature is generated using the key specified here and appended to the message. A request originating from the remote server is not required to be signed by this key.

Only a single key per server is currently supported.

The transfer-source and transfer-source-v6 clauses specify the IPv4 and IPv6 source address, respectively, to be used for zone transfer with the remote server. For an IPv4 remote server, only transfer-source can be specified. Similarly, for an IPv6 remote server, only transfer-source-v6 can be specified. For more details, see the description of transfer-source and transfer-source-v6 in the section called “Zone Transfers”.

The notify-source and notify-source-v6 clauses specify the IPv4 and IPv6 source address, respectively, to be used for notify messages sent to remote servers. For an IPv4 remote server, only notify-source can be specified. Similarly, for an IPv6 remote server, only notify-source-v6 can be specified.

The query-source and query-source-v6 clauses specify the IPv4 and IPv6 source address, respectively, to be used for queries sent to remote servers. For an IPv4 remote server, only query-source can be specified. Similarly, for an IPv6 remote server, only query-source-v6 can be specified.

The request-nsid clause determines whether the local server adds an NSID EDNS option to requests sent to the server. This overrides request-nsid set at the view or option level.

The send-cookie clause determines whether the local server adds a COOKIE EDNS option to requests sent to the server. This overrides send-cookie set at the view or option level. The named server may determine that COOKIE is not supported by the remote server and not add a COOKIE EDNS option to requests.

statistics-channels Statement Grammar

statistics-channels {
	inet ( ipv4_address | ipv6_address |
	    * ) [ port ( integer | * ) ] [
	    allow { address_match_element; ...
	    } ];
};

statistics-channels Statement Definition and Usage

The statistics-channels statement declares communication channels to be used by system administrators to get access to statistics information on the name server.

This statement is intended to be flexible to support multiple communication protocols in the future, but currently only HTTP access is supported. It requires that BIND 9 be compiled with libxml2 and/or json-c (also known as libjson0); the statistics-channels statement is still accepted even if it is built without the library, but any HTTP access fails with an error.

An inet control channel is a TCP socket listening at the specified ip_port on the specified ip_addr, which can be an IPv4 or IPv6 address. An ip_addr of * (asterisk) is interpreted as the IPv4 wildcard address; connections are accepted on any of the system's IPv4 addresses. To listen on the IPv6 wildcard address, use an ip_addr of ::.

If no port is specified, port 80 is used for HTTP channels. The asterisk (*) cannot be used for ip_port.

Attempts to open a statistics channel are restricted by the optional allow clause. Connections to the statistics channel are permitted based on the address_match_list. If no allow clause is present, named accepts connection attempts from any address; since the statistics may contain sensitive internal information, it is highly recommended to restrict the source of connection requests appropriately.

If no statistics-channels statement is present, named does not open any communication channels.

The statistics are available in various formats and views, depending on the URI used to access them. For example, if the statistics channel is configured to listen on 127.0.0.1 port 8888, then the statistics are accessible in XML format at http://127.0.0.1:8888/ or http://127.0.0.1:8888/xml. A CSS file is included, which can format the XML statistics into tables when viewed with a stylesheet-capable browser, and into charts and graphs using the Google Charts API when using a JavaScript-capable browser.

Broken-out subsets of the statistics can be viewed at http://127.0.0.1:8888/xml/v3/status (server uptime and last reconfiguration time), http://127.0.0.1:8888/xml/v3/server (server and resolver statistics), http://127.0.0.1:8888/xml/v3/zones (zone statistics), http://127.0.0.1:8888/xml/v3/net (network status and socket statistics), http://127.0.0.1:8888/xml/v3/mem (memory manager statistics), http://127.0.0.1:8888/xml/v3/tasks (task manager statistics), and http://127.0.0.1:8888/xml/v3/traffic (traffic sizes).

The full set of statistics can also be read in JSON format at http://127.0.0.1:8888/json, with the broken-out subsets at http://127.0.0.1:8888/json/v1/status (server uptime and last reconfiguration time), http://127.0.0.1:8888/json/v1/server (server and resolver statistics), http://127.0.0.1:8888/json/v1/zones (zone statistics), http://127.0.0.1:8888/json/v1/net (network status and socket statistics), http://127.0.0.1:8888/json/v1/mem (memory manager statistics), http://127.0.0.1:8888/json/v1/tasks (task manager statistics), and http://127.0.0.1:8888/json/v1/traffic (traffic sizes).

trusted-keys Statement Grammar

trusted-keys { string integer integer
    integer quoted_string; ... };

trusted-keys Statement Definition and Usage

The trusted-keys statement defines DNSSEC security roots. DNSSEC is described in the section called “DNSSEC”. A security root is defined when the public key for a non-authoritative zone is known, but cannot be securely obtained through DNS, either because it is the DNS root zone or because its parent zone is unsigned. Once a key has been configured as a trusted key, it is treated as if it has been validated and proven secure. The resolver attempts DNSSEC validation on all DNS data in subdomains of a security root.

All keys (and corresponding zones) listed in trusted-keys are deemed to exist regardless of what parent zones say. Similarly, for all keys listed in trusted-keys, only those keys are used to validate the DNSKEY RRset. The parent's DS RRset is not used.

The trusted-keys statement can contain multiple key entries, each consisting of the key's domain name, flags, protocol, and algorithm, and the Base64 representation of the key data. Spaces, tabs, newlines, and carriage returns are ignored in the key data, so the configuration may be split into multiple lines.

trusted-keys may be set at the top level of named.conf or within a view. If it is set in both places, they are additive; keys defined at the top level are inherited by all views, but keys defined in a view are only used within that view.

Validation below specified names can be temporarily disabled by using rndc nta.

managed-keys Statement Grammar

managed-keys { string string integer
    integer integer quoted_string; ... };

managed-keys Statement Definition and Usage

The managed-keys statement, like trusted-keys, defines DNSSEC security roots. The difference is that managed-keys can be kept up-to-date automatically, without intervention from the resolver operator.

Suppose, for example, that a zone's key-signing key was compromised, and the zone owner had to revoke and replace the key. A resolver which had the old key in a trusted-keys statement would be unable to validate this zone; it would reply with a SERVFAIL response code. This would continue until the resolver operator updated the trusted-keys statement with the new key.

If, however, the zone were listed in a managed-keys statement instead, the zone owner could add a "stand-by" key to the zone in advance. named would store the stand-by key, and when the original key was revoked, named would be able to transition smoothly to the new key. It would also recognize that the old key had been revoked and cease using that key to validate answers, minimizing the damage that the compromised key could do.

A managed-keys statement contains a list of the keys to be managed, along with information about how the keys are to be initialized for the first time. The only initialization method currently supported is initial-key. This means the managed-keys statement must contain a copy of the initializing key. (Future releases may allow keys to be initialized by other methods, eliminating this requirement.)

Consequently, a managed-keys statement appears similar to a trusted-keys statement, differing by the presence of the second field, which contains the keyword initial-key. The difference is, whereas the keys listed in a trusted-keys continue to be trusted until they are removed from named.conf, an initializing key listed in a managed-keys statement is only trusted once: for as long as it takes to load the managed-key database and start the RFC 5011 key-maintenance process.

The first time named runs with a managed key configured in named.conf, it fetches the DNSKEY RRset directly from the zone apex, and validates it using the key specified in the managed-keys statement. If the DNSKEY RRset is validly signed, then it is used as the basis for a new managed-keys database.

From that point on, whenever named runs, it sees the managed-keys statement, checks to make sure RFC 5011 key maintenance has already been initialized for the specified domain, and if so, simply moves on. The key specified in the managed-keys statement is not used to validate answers; it is superseded by the key or keys stored in the managed-keys database.

The next time named runs after a name has been removed from the managed-keys statement, the corresponding zone is removed from the managed-keys database, and RFC 5011 key maintenance is no longer used for that domain.

In the current implementation, the managed-keys database is stored as a master-format zone file.

On servers which do not use views, this file is named managed-keys.bind. When views are in use, there is a separate managed-keys database for each view; the filename is the view name (or, if a view name contains characters which would make it illegal as a filename, a hash of the view name), followed by the suffix .mkeys.

When the key database is changed, the zone is updated. As with any other dynamic zone, changes are written into a journal file, e.g., managed-keys.bind.jnl or internal.mkeys.jnl. Changes are committed to the zone file as soon as possible afterward, usually within 30 seconds. Whenever named is using automatic key maintenance, the zone file and journal file can be expected to exist in the working directory. (For this reason, among others, the working directory should be always be writable by named.)

If the dnssec-validation option is set to auto, named automatically initializes a managed key for the root zone. The key that is used to initialize the key-maintenance process is stored in bind.keys; the location of this file can be overridden with the bindkeys-file option. As a fallback in the event no bind.keys can be found, the initializing key is also compiled directly into named.

view Statement Grammar

view view_name [ class ] {
    match-clients { address_match_list } ;
    match-destinations { address_match_list } ;
    match-recursive-only yes_or_no ;
  [ view_option ; ... ]
  [ zone_statement ; ... ]
} ;

view Statement Definition and Usage

The view statement is a powerful feature of BIND 9 that lets a name server answer a DNS query differently depending on who is asking. It is particularly useful for implementing split DNS setups without having to run multiple servers.

Each view statement defines a view of the DNS namespace that is seen by a subset of clients. A client matches a view if its source IP address matches the address_match_list of the view's match-clients clause and its destination IP address matches the address_match_list of the view's match-destinations clause. If not specified, both match-clients and match-destinations default to matching all addresses. In addition to checking IP addresses, match-clients and match-destinations can also take keys which provide an mechanism for the client to select the view. A view can also be specified as match-recursive-only, which means that only recursive requests from matching clients match that view. The order of the view statements is significant; a client request is resolved in the context of the first view that it matches.

Zones defined within a view statement are only accessible to clients that match the view. By defining a zone of the same name in multiple views, different zone data can be given to different clients: for example, "internal" and "external" clients in a split DNS setup.

Many of the options given in the options statement can also be used within a view statement, and then apply only when resolving queries with that view. When no view-specific value is given, the value in the options statement is used as a default. Also, zone options can have default values specified in the view statement; these view-specific defaults take precedence over those in the options statement.

Views are class-specific. If no class is given, class IN is assumed. Note that all non-IN views must contain a hint zone, since only the IN class has compiled-in default hints.

If there are no view statements in the config file, a default view that matches any client is automatically created in class IN. Any zone statements specified on the top level of the configuration file are considered to be part of this default view, and the options statement applies to the default view. If any explicit view statements are present, all zone statements must occur inside view statements.

Here is an example of a typical split DNS setup implemented using view statements:

view "internal" {
      // This should match our internal networks.
      match-clients { 10.0.0.0/8; };

      // Provide recursive service to internal
      // clients only.
      recursion yes;

      // Provide a complete view of the example.com
      // zone including addresses of internal hosts.
      zone "example.com" {
            type master;
            file "example-internal.db";
      };
};

view "external" {
      // Match all clients not matched by the
      // previous view.
      match-clients { any; };

      // Refuse recursive service to external clients.
      recursion no;

      // Provide a restricted view of the example.com
      // zone containing only publicly accessible hosts.
      zone "example.com" {
           type master;
           file "example-external.db";
      };
};

zone Statement Grammar

zone string [ class ] {
	type ( master | primary );
	allow-query { address_match_element; ... };
	allow-query-on { address_match_element; ... };
	allow-transfer { address_match_element; ... };
	allow-update { address_match_element; ... };
	also-notify [ port integer ] [ dscp integer ] { ( masters | ipv4_address [ port integer ] | ipv6_address [ port integer ] ) [ key string ]; ... };
	alt-transfer-source ( ipv4_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	alt-transfer-source-v6 ( ipv6_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	auto-dnssec ( allow | maintain | off );
	check-dup-records ( fail | warn | ignore );
	check-integrity boolean;
	check-mx ( fail | warn | ignore );
	check-mx-cname ( fail | warn | ignore );
	check-names ( fail | warn | ignore );
	check-sibling boolean;
	check-spf ( warn | ignore );
	check-srv-cname ( fail | warn | ignore );
	check-wildcard boolean;
	database string;
	dialup ( notify | notify-passive | passive | refresh | boolean );
	dlz string;
	dnssec-dnskey-kskonly boolean;
	dnssec-loadkeys-interval integer;
	dnssec-secure-to-insecure boolean;
	dnssec-update-mode ( maintain | no-resign );
	file quoted_string;
	forward ( first | only );
	forwarders [ port integer ] [ dscp integer ] { ( ipv4_address | ipv6_address ) [ port integer ] [ dscp integer ]; ... };
	inline-signing boolean;
	ixfr-from-differences boolean;
	journal quoted_string;
	key-directory quoted_string;
	masterfile-format ( map | raw | text );
	masterfile-style ( full | relative );
	max-journal-size ( unlimited | sizeval );
	max-records integer;
	max-transfer-idle-out integer;
	max-transfer-time-out integer;
	max-zone-ttl ( unlimited | ttlval );
	notify ( explicit | master-only | boolean );
	notify-delay integer;
	notify-source ( ipv4_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	notify-source-v6 ( ipv6_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	notify-to-soa boolean;
	serial-update-method ( date | increment | unixtime );
	sig-signing-nodes integer;
	sig-signing-signatures integer;
	sig-signing-type integer;
	sig-validity-interval integer [ integer ];
	update-check-ksk boolean;
	update-policy ( local | { ( deny | grant ) string ( 6to4-self | external | krb5-self | krb5-selfsub | krb5-subdomain | ms-self | ms-selfsub | ms-subdomain | name | self | selfsub | selfwild | subdomain | tcp-self | wildcard | zonesub ) [ string ] rrtypelist; ... };
	zero-no-soa-ttl boolean;
	zone-statistics ( full | terse | none | boolean );
};
zone string [ class ] {
	type ( slave | secondary );
	allow-notify { address_match_element; ... };
	allow-query { address_match_element; ... };
	allow-query-on { address_match_element; ... };
	allow-transfer { address_match_element; ... };
	allow-update-forwarding { address_match_element; ... };
	also-notify [ port integer ] [ dscp integer ] { ( masters | ipv4_address [ port integer ] | ipv6_address [ port integer ] ) [ key string ]; ... };
	alt-transfer-source ( ipv4_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	alt-transfer-source-v6 ( ipv6_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	auto-dnssec ( allow | maintain | off );
	check-names ( fail | warn | ignore );
	database string;
	dialup ( notify | notify-passive | passive | refresh | boolean );
	dlz string;
	dnssec-dnskey-kskonly boolean;
	dnssec-loadkeys-interval integer;
	dnssec-update-mode ( maintain | no-resign );
	file quoted_string;
	forward ( first | only );
	forwarders [ port integer ] [ dscp integer ] { ( ipv4_address | ipv6_address ) [ port integer ] [ dscp integer ]; ... };
	inline-signing boolean;
	ixfr-from-differences boolean;
	journal quoted_string;
	key-directory quoted_string;
	masterfile-format ( map | raw | text );
	masterfile-style ( full | relative );
	masters [ port integer ] [ dscp integer ] { ( masters | ipv4_address [ port integer ] | ipv6_address [ port integer ] ) [ key string ]; ... };
	max-journal-size ( unlimited | sizeval );
	max-records integer;
	max-refresh-time integer;
	max-retry-time integer;
	max-transfer-idle-in integer;
	max-transfer-idle-out integer;
	max-transfer-time-in integer;
	max-transfer-time-out integer;
	min-refresh-time integer;
	min-retry-time integer;
	multi-master boolean;
	notify ( explicit | master-only | boolean );
	notify-delay integer;
	notify-source ( ipv4_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	notify-source-v6 ( ipv6_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	notify-to-soa boolean;
	request-expire boolean;
	request-ixfr boolean;
	sig-signing-nodes integer;
	sig-signing-signatures integer;
	sig-signing-type integer;
	sig-validity-interval integer [ integer ];
	transfer-source ( ipv4_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	transfer-source-v6 ( ipv6_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	try-tcp-refresh boolean;
	update-check-ksk boolean;
	use-alt-transfer-source boolean;
	zero-no-soa-ttl boolean;
	zone-statistics ( full | terse | none | boolean );
};
zone string [ class ] {
	type hint;
	check-names ( fail | warn | ignore );
	delegation-only boolean;
	file quoted_string;
};
zone string [ class ] {
	type stub;
	allow-query { address_match_element; ... };
	allow-query-on { address_match_element; ... };
	check-names ( fail | warn | ignore );
	database string;
	delegation-only boolean;
	dialup ( notify | notify-passive | passive | refresh | boolean );
	file quoted_string;
	forward ( first | only );
	forwarders [ port integer ] [ dscp integer ] { ( ipv4_address | ipv6_address ) [ port integer ] [ dscp integer ]; ... };
	masterfile-format ( map | raw | text );
	masterfile-style ( full | relative );
	masters [ port integer ] [ dscp integer ] { ( masters | ipv4_address [ port integer ] | ipv6_address [ port integer ] ) [ key string ]; ... };
	max-records integer;
	max-refresh-time integer;
	max-retry-time integer;
	max-transfer-idle-in integer;
	max-transfer-time-in integer;
	min-refresh-time integer;
	min-retry-time integer;
	multi-master boolean;
	transfer-source ( ipv4_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	transfer-source-v6 ( ipv6_address | * ) [ port ( integer | * ) ] [ dscp integer ];
	use-alt-transfer-source boolean;
	zone-statistics ( full | terse | none | boolean );
};
zone string [ class ] {
	type static-stub;
	allow-query { address_match_element; ... };
	allow-query-on { address_match_element; ... };
	forward ( first | only );
	forwarders [ port integer ] [ dscp integer ] { ( ipv4_address | ipv6_address ) [ port integer ] [ dscp integer ]; ... };
	max-records integer;
	server-addresses { ( ipv4_address | ipv6_address ); ... };
	server-names { quoted_string; ... };
	zone-statistics ( full | terse | none | boolean );
};
zone string [ class ] {
	type forward;
	delegation-only boolean;
	forward ( first | only );
	forwarders [ port integer ] [ dscp integer ] { ( ipv4_address | ipv6_address ) [ port integer ] [ dscp integer ]; ... };
};
zone string [ class ] {
	type redirect;
	allow-query { address_match_element; ... };
	allow-query-on { address_match_element; ... };
	dlz string;
	file quoted_string;
	masterfile-format ( map | raw | text );
	masterfile-style ( full | relative );
	masters [ port integer ] [ dscp integer ] { ( masters | ipv4_address [ port integer ] | ipv6_address [ port integer ] ) [ key string ]; ... };
	max-records integer;
	max-zone-ttl ( unlimited | ttlval );
	zone-statistics ( full | terse | none | boolean );
};
zone string [ class ] {
	type delegation-only;
};
zone string [ class ] {
	in-view string;
};

zone Statement Definition and Usage

Zone Types

The type keyword is required for the zone configuration unless it is an in-view configuration. Its acceptable values are: master, slave, hint, stub, static-stub, forward, redirect, or delegation-only.

Note

Later versions of BIND added type primary and type secondary as synonyms for type master and type slave, as those terms are in more common use now. BIND 9.11's configuration syntax predates this change.

master

The server has a master copy of the data for the zone and is able to provide authoritative answers for it.

slave

A secondary zone, replicating a primary zone provided by another authoritative server. The masters list specifies one or more IP addresses of primary servers that the secondary contacts to update its copy of the zone. Masters list elements can also be names of other masters lists. By default, transfers are made from port 53 on the servers; this can be changed for all servers by specifying a port number before the list of IP addresses, or on a per-server basis after the IP address. Authentication to the primary can also be done with per-server TSIG keys. If a file is specified, then the replica is written to this file whenever the zone is changed, and reloaded from this file on a server restart. Use of a file is recommended, since it often speeds server startup and eliminates a needless waste of bandwidth. Note that for large numbers (in the tens or hundreds of thousands) of zones per server, it is best to use a two-level naming scheme for zone filenames. For example, a secondary server for the zone example.com might place the zone contents into a file called ex/example.com where ex/ is just the first two letters of the zone name. (Most operating systems behave very slowly if there are 100000 files in a single directory.)

hint

The initial set of root name servers is specified using a hint zone. When the server starts, it uses the root hints to find a root name server and get the most recent list of root name servers. If no hint zone is specified for class IN, the server uses a compiled-in default set of root servers hints. Classes other than IN have no built-in default hints.

stub

A stub zone is similar to a secondary zone, except that it replicates only the NS records of a primary zone instead of the entire zone. Stub zones are not a standard part of the DNS; they are a feature specific to the BIND implementation.

Stub zones can be used to eliminate the need for a glue NS record in a parent zone, at the expense of maintaining a stub zone entry and a set of name server addresses in named.conf. This usage is not recommended for new configurations, and BIND 9 supports it only in a limited way. If a BIND 9 primary, serving a parent zone, has child stub zones configured, all the secondary servers for the parent zone also need to have the same child stub zones configured.

Stub zones can also be used as a way to force the resolution of a given domain to use a particular set of authoritative servers. For example, the caching name servers on a private network using RFC 1918 addressing may be configured with stub zones for 10.in-addr.arpa to use a set of internal name servers as the authoritative servers for that domain.

static-stub

A static-stub zone is similar to a stub zone with the following exceptions: the zone data is statically configured, rather than transferred from a primary server; and when recursion is necessary for a query that matches a static-stub zone, the locally configured data (name server names and glue addresses) is always used, even if different authoritative information is cached.

Zone data is configured via the server-addresses and server-names zone options.

The zone data is maintained in the form of NS and (if necessary) glue A or AAAA RRs internally, which can be seen by dumping zone databases by rndc dumpdb -all. The configured RRs are considered local configuration parameters rather than public data. Non-recursive queries (i.e., those with the RD bit off) to a static-stub zone are therefore prohibited and are responded to with REFUSED.

Since the data is statically configured, no zone maintenance action takes place for a static-stub zone. For example, there is no periodic refresh attempt, and an incoming notify message will be rejected with an rcode of NOTAUTH.

Each static-stub zone is configured with internally generated NS and (if necessary) glue A or AAAA RRs.

forward

A forward zone is a way to configure forwarding on a per-domain basis. A zone statement of type forward can contain a forward and/or forwarders statement, which applies to queries within the domain given by the zone name. If no forwarders statement is present, or an empty list for forwarders is given, then no forwarding is done for the domain, canceling the effects of any forwarders in the options statement. Thus, to use this type of zone to change the behavior of the global forward option (that is, "forward first" to, then "forward only", or vice versa), but use the same servers as set globally, re-specify the global forwarders.

redirect

Redirect zones are used to provide answers to queries when normal resolution would result in NXDOMAIN being returned. Only one redirect zone is supported per view. allow-query can be used to restrict which clients see these answers.

If the client has requested DNSSEC records (DO=1) and the NXDOMAIN response is signed, no substitution occurs.

To redirect all NXDOMAIN responses to 100.100.100.2 and 2001:ffff:ffff::100.100.100.2, configure a type redirect zone named ".", with the zone file containing wildcard records that point to the desired addresses: *. IN A 100.100.100.2 and *. IN AAAA 2001:ffff:ffff::100.100.100.2.

As another example, to redirect all Spanish names (under .ES), use similar entries but with the names "*.ES." instead of "*.". To redirect all commercial Spanish names (under COM.ES), use wildcard entries called "*.COM.ES.".

Note that the redirect zone supports all possible types; it is not limited to A and AAAA records.

Because redirect zones are not referenced directly by name, they are not kept in the zone lookup table with normal primary and secondary zones. Consequently, it is not currently possible to use rndc reload zonename to reload a redirect zone. However, when using rndc reload without specifying a zone name, redirect zones are reloaded along with other zones.

delegation-only

This zone type is used to enforce the delegation-only status of infrastructure zones (e.g., COM, NET, ORG). Any answer that is received without an explicit or implicit delegation in the authority section is treated as NXDOMAIN. This does not apply to the zone apex, and should not be applied to leaf zones.

delegation-only has no effect on answers received from forwarders.

See caveats in root-delegation-only.

in-view

When using multiple views, a primary or secondary zone configured in one view can be referenced in a subsequent view. This allows both views to serve the same zone without the overhead of loading it more than once. This is configured using a zone statement, with an in-view option specifying the view in which the zone is defined. A zone statement containing in-view does not need to specify a type, since that is part of the zone definition in the other view.

See the section called “Multiple Views” for more information.

Class

The zone's name may optionally be followed by a class. If a class is not specified, class IN (for Internet), is assumed. This is correct for the vast majority of cases.

The hesiod class is named for an information service from MIT's Project Athena. It was used to share information about various systems databases, such as users, groups, printers, and so on. The keyword HS is a synonym for hesiod.

Another MIT development is Chaosnet, a LAN protocol created in the mid-1970s. Zone data for it can be specified with the CHAOS class.

Zone Options

allow-notify

See the description of allow-notify in the section called “Access Control”.

allow-query

See the description of allow-query in the section called “Access Control”.

allow-query-on

See the description of allow-query-on in the section called “Access Control”.

allow-transfer

See the description of allow-transfer in the section called “Access Control”.

allow-update

See the description of allow-update in the section called “Access Control”.

update-policy

This specifies a "Simple Secure Update" policy. See the section called “Dynamic Update Policies”.

allow-update-forwarding

See the description of allow-update-forwarding in the section called “Access Control”.

also-notify

This option is only meaningful if notify is active for this zone. The set of machines that receive a DNS NOTIFY message for this zone is made up of all the listed name servers (other than the primary) for the zone, plus any IP addresses specified with also-notify. A port may be specified with each also-notify address to send the notify messages to a port other than the default of 53. A TSIG key may also be specified to cause the NOTIFY to be signed by the given key. also-notify is not meaningful for stub zones. The default is the empty list.

check-names

This option is used to restrict the character set and syntax of certain domain names in zone files and/or DNS responses received from the network. The default varies according to zone type. For primary zones the default is fail; for secondary zones the default is warn. It is not implemented for hint zones.

check-mx

See the description of check-mx in the section called “Boolean Options”.

check-spf

See the description of check-spf in the section called “Boolean Options”.

check-wildcard

See the description of check-wildcard in the section called “Boolean Options”.

check-integrity

See the description of check-integrity in the section called “Boolean Options”.

check-sibling

See the description of check-sibling in the section called “Boolean Options”.

zero-no-soa-ttl

See the description of zero-no-soa-ttl in the section called “Boolean Options”.

update-check-ksk

See the description of update-check-ksk in the section called “Boolean Options”.

dnssec-loadkeys-interval

See the description of dnssec-loadkeys-interval in the section called “options Statement Definition and Usage”.

dnssec-update-mode

See the description of dnssec-update-mode in the section called “options Statement Definition and Usage”.

dnssec-dnskey-kskonly

See the description of dnssec-dnskey-kskonly in the section called “Boolean Options”.

try-tcp-refresh

See the description of try-tcp-refresh in the section called “Boolean Options”.

database

This specifies the type of database to be used to store the zone data. The string following the database keyword is interpreted as a list of whitespace-delimited words. The first word identifies the database type, and any subsequent words are passed as arguments to the database to be interpreted in a way specific to the database type.

The default is "rbt", BIND 9's native in-memory red-black tree database. This database does not take arguments.

Other values are possible if additional database drivers have been linked into the server. Some sample drivers are included with the distribution but none are linked in by default.

dialup

See the description of dialup in the section called “Boolean Options”.

delegation-only

This flag only applies to forward, hint, and stub zones. If set to yes, then the zone is treated as if it is also a delegation-only type zone.

See caveats in root-delegation-only.

file

This sets the zone's filename. In master, hint, and redirect zones which do not have masters defined, zone data is loaded from this file. In slave, stub, and redirect zones which do have masters defined, zone data is retrieved from another server and saved in this file. This option is not applicable to other zone types.

forward

This option is only meaningful if the zone has a forwarders list. The only value causes the lookup to fail after trying the forwarders and getting no answer, while first allows a normal lookup to be tried.

forwarders

This is used to override the list of global forwarders. If it is not specified in a zone of type forward, no forwarding is done for the zone and the global options are not used.

ixfr-base

This was used in BIND 8 to specify the name of the transaction log (journal) file for dynamic update and IXFR. BIND 9 ignores the option and constructs the name of the journal file by appending ".jnl" to the name of the zone file.

ixfr-tmp-file

This was an undocumented option in BIND 8. It is ignored in BIND 9.

journal

This allows the default journal's filename to be overridden. The default is the zone's filename with ".jnl" appended. This is applicable to primary (master) and secondary (slave) zones.

max-journal-size

See the description of max-journal-size in the section called “Server Resource Limits”.

max-records

See the description of max-records in the section called “Server Resource Limits”.

max-transfer-time-in

See the description of max-transfer-time-in in the section called “Zone Transfers”.

max-transfer-idle-in

See the description of max-transfer-idle-in in the section called “Zone Transfers”.

max-transfer-time-out

See the description of max-transfer-time-out in the section called “Zone Transfers”.

max-transfer-idle-out

See the description of max-transfer-idle-out in the section called “Zone Transfers”.

notify

See the description of notify in the section called “Boolean Options”.

notify-delay

See the description of notify-delay in the section called “Tuning”.

notify-to-soa

See the description of notify-to-soa in the section called “Boolean Options”.

pubkey

In BIND 8, this option was intended to specify a public zone key for verification of signatures in DNSSEC-signed zones when they were loaded from disk. BIND 9 does not verify signatures on load and ignores the option.

zone-statistics

See the description of zone-statistics in the section called “options Statement Definition and Usage”.

server-addresses

This option is only meaningful for static-stub zones. This is a list of IP addresses to which queries should be sent in recursive resolution for the zone. A non-empty list for this option internally configures the apex NS RR with associated glue A or AAAA RRs.

For example, if "example.com" is configured as a static-stub zone with 192.0.2.1 and 2001:db8::1234 in a server-addresses option, the following RRs are internally configured:

example.com. NS example.com.
example.com. A 192.0.2.1
example.com. AAAA 2001:db8::1234

These records are used internally to resolve names under the static-stub zone. For instance, if the server receives a query for "www.example.com" with the RD bit on, the server initiates recursive resolution and sends queries to 192.0.2.1 and/or 2001:db8::1234.

server-names

This option is only meaningful for static-stub zones. This is a list of domain names of name servers that act as authoritative servers of the static-stub zone. These names are resolved to IP addresses when named needs to send queries to these servers. For this supplemental resolution to be successful, these names must not be a subdomain of the origin name of the static-stub zone. That is, when "example.net" is the origin of a static-stub zone, "ns.example" and "master.example.com" can be specified in the server-names option, but "ns.example.net" cannot; it is rejected by the configuration parser.

A non-empty list for this option internally configures the apex NS RR with the specified names. For example, if "example.com" is configured as a static-stub zone with "ns1.example.net" and "ns2.example.net" in a server-names option, the following RRs are internally configured:

example.com. NS ns1.example.net.
example.com. NS ns2.example.net.

These records are used internally to resolve names under the static-stub zone. For instance, if the server receives a query for "www.example.com" with the RD bit on, the server initiates recursive resolution, resolves "ns1.example.net" and/or "ns2.example.net" to IP addresses, and then sends queries to one or more of these addresses.

sig-validity-interval

See the description of sig-validity-interval in the section called “Tuning”.

sig-signing-nodes

See the description of sig-signing-nodes in the section called “Tuning”.

sig-signing-signatures

See the description of sig-signing-signatures in the section called “Tuning”.

sig-signing-type

See the description of sig-signing-type in the section called “Tuning”.

transfer-source

See the description of transfer-source in the section called “Zone Transfers”.

transfer-source-v6

See the description of transfer-source-v6 in the section called “Zone Transfers”.

alt-transfer-source

See the description of alt-transfer-source in the section called “Zone Transfers”.

alt-transfer-source-v6

See the description of alt-transfer-source-v6 in the section called “Zone Transfers”.

use-alt-transfer-source

See the description of use-alt-transfer-source in the section called “Zone Transfers”.

notify-source

See the description of notify-source in the section called “Zone Transfers”.

notify-source-v6

See the description of notify-source-v6 in the section called “Zone Transfers”.

min-refresh-time, max-refresh-time, min-retry-time, max-retry-time

See the descriptions in the section called “Tuning”.

ixfr-from-differences

See the description of ixfr-from-differences in the section called “Boolean Options”. (Note that the ixfr-from-differences choices of master and slave are not available at the zone level.)

key-directory

See the description of key-directory in the section called “options Statement Definition and Usage”.

auto-dnssec

See the description of auto-dnssec in the section called “options Statement Definition and Usage”.

serial-update-method

See the description of serial-update-method in the section called “options Statement Definition and Usage”.

inline-signing

If yes, this enables "bump in the wire" signing of a zone, where an unsigned zone is transferred in or loaded from disk and a signed version of the zone is served, with, possibly, a different serial number. This behavior is disabled by default.

multi-master

See the description of multi-master in the section called “Boolean Options”.

masterfile-format

See the description of masterfile-format in the section called “Tuning”.

max-zone-ttl

See the description of max-zone-ttl in the section called “options Statement Definition and Usage”.

dnssec-secure-to-insecure

See the description of dnssec-secure-to-insecure in the section called “Boolean Options”.

Dynamic Update Policies

BIND 9 supports two methods of granting clients the right to perform dynamic updates to a zone, configured by the allow-update and update-policy options.

The allow-update clause is a simple access control list. Any client that matches the ACL is granted permission to update any record in the zone.

The update-policy clause allows more fine-grained control over which updates are allowed. It specifies a set of rules, in which each rule either grants or denies permission for one or more names in the zone to be updated by one or more identities. Identity is determined by the key that signed the update request, using either TSIG or SIG(0). In most cases, update-policy rules only apply to key-based identities. There is no way to specify update permissions based on client source address.

update-policy rules are only meaningful for primary zones (type master), and are not allowed in any other zone type. It is a configuration error to specify both allow-update and update-policy at the same time.

A pre-defined update-policy rule can be switched on with the command update-policy local;. named automatically generates a TSIG session key when starting and stores it in a file; this key can then be used by local clients to update the zone while named is running. By default, the session key is stored in the file /var/run/named/session.key, the key name is "local-ddns", and the key algorithm is HMAC-SHA256. These values are configurable with the session-keyfile, session-keyname, and session-keyalg options, respectively. A client running on the local system, if run with appropriate permissions, may read the session key from the key file and use it to sign update requests. The zone's update policy is set to allow that key to change any record within the zone. Assuming the key name is "local-ddns", this policy is equivalent to:

update-policy { grant local-ddns zonesub any; };
            

with the additional restriction that only clients connecting from the local system are permitted to send updates.

Note that only one session key is generated by named; all zones configured to use update-policy local accept the same key.

The command nsupdate -l implements this feature, sending requests to localhost and signing them using the key retrieved from the session key file.

Other rule definitions look like this:

( grant | deny ) identity ruletype [ name ] [ types ]

Each rule grants or denies privileges. Rules are checked in the order in which they are specified in the update-policy statement. Once a message has successfully matched a rule, the operation is immediately granted or denied, and no further rules are examined. There are 13 types of rules; the rule type is specified by the ruletype field, and the interpretation of other fields varies depending on the rule type.

In general, a rule is matched when the key that signed an update request matches the identity field, the name of the record to be updated matches the name field (in the manner specified by the ruletype field), and the type of the record to be updated matches the types field. Details for each rule type are described below.

The identity field must be set to a fully qualified domain name. In most cases, this represents the name of the TSIG or SIG(0) key that must be used to sign the update request. If the specified name is a wildcard, it is subject to DNS wildcard expansion, and the rule may apply to multiple identities. When a TKEY exchange has been used to create a shared secret, the identity of the key used to authenticate the TKEY exchange is used as the identity of the shared secret. Some rule types use identities matching the client's Kerberos principal (e.g, "host/machine@REALM") or Windows realm (machine$@REALM).

The name field also specifies a fully qualified domain name. This often represents the name of the record to be updated. Interpretation of this field is dependent on rule type.

If no types are explicitly specified, then a rule matches all types except RRSIG, NS, SOA, NSEC, and NSEC3. Types may be specified by name, including "ANY"; ANY matches all types except NSEC and NSEC3, which can never be updated. Note that when an attempt is made to delete all records associated with a name, the rules are checked for each existing record type.

The ruletype field has 16 values: name, subdomain, zonesub, wildcard, self, selfsub, selfwild, ms-self, ms-selfsub, ms-subdomain, krb5-self, krb5-selfsub, krb5-subdomain, tcp-self, 6to4-self, and external.

name

With exact-match semantics, this rule matches when the name being updated is identical to the contents of the name field.

subdomain

This rule matches when the name being updated is a subdomain of, or identical to, the contents of the name field.

zonesub

This rule is similar to subdomain, except that it matches when the name being updated is a subdomain of the zone in which the update-policy statement appears. This obviates the need to type the zone name twice, and enables the use of a standard update-policy statement in multiple zones without modification.

When this rule is used, the name field is omitted.

wildcard

The name field is subject to DNS wildcard expansion, and this rule matches when the name being updated is a valid expansion of the wildcard.

self

This rule matches when the name of the record being updated matches the contents of the identity field. The name field is ignored. To avoid confusion, it is recommended that this field be set to the same value as the identity field or to "."

The self rule type is most useful when allowing one key per name to update, where the key has the same name as the record to be updated. In this case, the identity field can be specified as * (asterisk).

selfsub

This rule is similar to self, except that subdomains of self can also be updated.

selfwild

This rule is similar to self, except that only subdomains of self can be updated.

ms-self

When a client sends an UPDATE using a Windows machine principal (for example, "machine$@REALM"), this rule allows records with the absolute name of "machine.REALM" to be updated.

The realm to be matched is specified in the identity field.

The name field has no effect on this rule; it should be set to "." as a placeholder.

For example, grant EXAMPLE.COM ms-self . A AAAA allows any machine with a valid principal in the realm EXAMPLE.COM to update its own address records.

ms-selfsub

This is similar to ms-self, except it also allows updates to any subdomain of the name specified in the Windows machine principal, not just to the name itself.

ms-subdomain

When a client sends an UPDATE using a Windows machine principal (for example, "machine$@REALM"), this rule allows any machine in the specified realm to update any record in the zone or in a specified subdomain of the zone.

The realm to be matched is specified in the identity field.

The name field specifies the subdomain that may be updated. If set to "." or any other name at or above the zone apex, any name in the zone can be updated.

For example, if update-policy for the zone "example.com" includes grant EXAMPLE.COM ms-subdomain hosts.example.com. A AAAA, any machine with a valid principal in the realm EXAMPLE.COM is able to update address records at or below "hosts.example.com".

krb5-self

When a client sends an UPDATE using a Kerberos machine principal (for example, "host/machine@REALM"), this rule allows records with the absolute name of "machine" to be updated, provided it has been authenticated by REALM. This is similar but not identical to ms-self, due to the "machine" part of the Kerberos principal being an absolute name instead of an unqualified name.

The realm to be matched is specified in the identity field.

The name field has no effect on this rule; it should be set to "." as a placeholder.

For example, grant EXAMPLE.COM krb5-self . A AAAA allows any machine with a valid principal in the realm EXAMPLE.COM to update its own address records.

krb5-selfsub

This is similar to krb5-self, except it also allows updates to any subdomain of the name specified in the "machine" part of the Kerberos principal, not just to the name itself.

krb5-subdomain

This rule is identical to ms-subdomain, except that it works with Kerberos machine principals (i.e., "host/machine@REALM") rather than Windows machine principals.

tcp-self

This rule allows updates that have been sent via TCP and for which the standard mapping from the client's IP address into the in-addr.arpa and ip6.arpa namespaces matches the name to be updated. The identity field must match that name. The name field should be set to ".". Note that, since identity is based on the client's IP address, it is not necessary for update request messages to be signed.

Note

It is theoretically possible to spoof these TCP sessions.

6to4-self

This allows the name matching a 6to4 IPv6 prefix, as specified in RFC 3056, to be updated by any TCP connection from either the 6to4 network or from the corresponding IPv4 address. This is intended to allow NS or DNAME RRsets to be added to the ip6.arpa reverse tree.

The identity field must match the 6to4 prefix in ip6.arpa. The name field should be set to ".". Note that, since identity is based on the client's IP address, it is not necessary for update request messages to be signed.

In addition, if specified for an ip6.arpa name outside of the 2.0.0.2.ip6.arpa namespace, the corresponding /48 reverse name can be updated. For example, TCP/IPv6 connections from 2001:DB8:ED0C::/48 can update records at C.0.D.E.8.B.D.0.1.0.0.2.ip6.arpa.

Note

It is theoretically possible to spoof these TCP sessions.

external

This rule allows named to defer the decision of whether to allow a given update to an external daemon.

The method of communicating with the daemon is specified in the identity field, the format of which is "local:path", where path is the location of a Unix-domain socket. (Currently, "local" is the only supported mechanism.)

Requests to the external daemon are sent over the Unix-domain socket as datagrams with the following format:

   Protocol version number (4 bytes, network byte order, currently 1)
   Request length (4 bytes, network byte order)
   Signer (null-terminated string)
   Name (null-terminated string)
   TCP source address (null-terminated string)
   Rdata type (null-terminated string)
   Key (null-terminated string)
   TKEY token length (4 bytes, network byte order)
   TKEY token (remainder of packet)

The daemon replies with a four-byte value in network byte order, containing either 0 or 1; 0 indicates that the specified update is not permitted, and 1 indicates that it is.

Multiple Views

When multiple views are in use, a zone may be referenced by more than one of them. Often, the views contain different zones with the same name, allowing different clients to receive different answers for the same queries. At times, however, it is desirable for multiple views to contain identical zones. The in-view zone option provides an efficient way to do this; it allows a view to reference a zone that was defined in a previously configured view. Example:

view internal {
    match-clients { 10/8; };

    zone example.com {
        type master;
        file "example-external.db";
    };
};

view external {
    match-clients { any; };

    zone example.com {
        in-view internal;
    };
};
            

An in-view option cannot refer to a view that is configured later in the configuration file.

A zone statement which uses the in-view option may not use any other , with the exception of forward and forwarders. (These options control the behavior of the containing view, rather than change the zone object itself.)

Zone-level ACLs (e.g., allow-query, allow-transfer), and other configuration details of the zone, are all set in the view the referenced zone is defined in. Be careful to ensure that ACLs are wide enough for all views referencing the zone.

An in-view zone cannot be used as a response policy zone.

An in-view zone is not intended to reference a forward zone.

Zone File

Types of Resource Records and When to Use Them

This section, largely borrowed from RFC 1034, describes the concept of a Resource Record (RR) and explains when each type is used. Since the publication of RFC 1034, several new RRs have been identified and implemented in the DNS. These are also included.

Resource Records

A domain name identifies a node. Each node has a set of resource information, which may be empty. The set of resource information associated with a particular name is composed of separate RRs. The order of RRs in a set is not significant and need not be preserved by name servers, resolvers, or other parts of the DNS. However, sorting of multiple RRs is permitted for optimization purposes: for example, to specify that a particular nearby server be tried first. See the section called “The sortlist Statement” and the section called “RRset Ordering”.

The components of a Resource Record are:

owner name

The domain name where the RR is found.

type

An encoded 16-bit value that specifies the type of the resource record.

TTL

The time-to-live of the RR. This field is a 32-bit integer in units of seconds, and is primarily used by resolvers when they cache RRs. The TTL describes how long a RR can be cached before it should be discarded.

class

An encoded 16-bit value that identifies a protocol family or an instance of a protocol.

RDATA

The resource data. The format of the data is type- and sometimes class-specific.

For a complete list of types of valid RRs, including those that have been obsoleted, please refer to https://en.wikipedia.org/wiki/List_of_DNS_record_types.

The following classes of resource records are currently valid in the DNS:

IN

The Internet.

CH

Chaosnet, a LAN protocol created at MIT in the mid-1970s. It was rarely used for its historical purpose, but was reused for BIND's built-in server information zones, e.g., version.bind.

HS

Hesiod, an information service developed by MIT's Project Athena. It was used to share information about various systems databases, such as users, groups, printers, etc.

The owner name is often implicit, rather than forming an integral part of the RR. For example, many name servers internally form tree or hash structures for the name space, and chain RRs off nodes. The remaining RR parts are the fixed header (type, class, TTL), which is consistent for all RRs, and a variable part (RDATA) that fits the needs of the resource being described.

The TTL field is a time limit on how long an RR can be kept in a cache. This limit does not apply to authoritative data in zones; that also times out, but follows the refreshing policies for the zone. The TTL is assigned by the administrator for the zone where the data originates. While short TTLs can be used to minimize caching, and a zero TTL prohibits caching, the realities of Internet performance suggest that these times should be on the order of days for the typical host. If a change can be anticipated, the TTL can be reduced prior to the change to minimize inconsistency, and then increased back to its former value following the change.

The data in the RDATA section of RRs is carried as a combination of binary strings and domain names. The domain names are frequently used as "pointers" to other data in the DNS.

Textual Expression of RRs

RRs are represented in binary form in the packets of the DNS protocol, and are usually represented in highly encoded form when stored in a name server or resolver. In the examples provided in RFC 1034, a style similar to that used in zone files was employed in order to show the contents of RRs. In this format, most RRs are shown on a single line, although continuation lines are possible using parentheses.

The start of the line gives the owner of the RR. If a line begins with a blank, then the owner is assumed to be the same as that of the previous RR. Blank lines are often included for readability.

Following the owner are list the TTL, type, and class of the RR. Class and type use the mnemonics defined above, and TTL is an integer before the type field. To avoid ambiguity in parsing, type and class mnemonics are disjoint, TTLs are integers, and the type mnemonic is always last. The IN class and TTL values are often omitted from examples in the interest of clarity.

The resource data or RDATA section of the RR is given using knowledge of the typical representation for the data.

For example, the RRs carried in a message might be shown as:

ISI.EDU.

MX

10 VENERA.ISI.EDU.

MX

10 VAXA.ISI.EDU

VENERA.ISI.EDU

A

128.9.0.32

A

10.1.0.52

VAXA.ISI.EDU

A

10.2.0.27

A

128.9.0.33

The MX RRs have an RDATA section which consists of a 16-bit number followed by a domain name. The address RRs use a standard IP address format to contain a 32-bit Internet address.

The above example shows six RRs, with two RRs at each of three domain names.

Here is another possible example:

XX.LCS.MIT.EDU.

IN A

10.0.0.44

CH A

MIT.EDU. 2420

This example shows two addresses for XX.LCS.MIT.EDU, each of a different class.

Discussion of MX Records

As described above, domain servers store information as a series of resource records, each of which contains a particular piece of information about a given domain name (which is usually, but not always, a host). The simplest way to think of a RR is as a typed pair of data, a domain name matched with a relevant datum and stored with some additional type information, to help systems determine when the RR is relevant.

MX records are used to control delivery of email. The data specified in the record is a priority and a domain name. The priority controls the order in which email delivery is attempted, with the lowest number first. If two priorities are the same, a server is chosen randomly. If no servers at a given priority are responding, the mail transport agent falls back to the next largest priority. Priority numbers do not have any absolute meaning; they are relevant only respective to other MX records for that domain name. The domain name given is the machine to which the mail is delivered. It must have an associated address record (A or AAAA); CNAME is not sufficient.

For a given domain, if there is both a CNAME record and an MX record, the MX record is in error, and is ignored. Instead, the mail is delivered to the server specified in the MX record pointed to by the CNAME. For example:

example.com.

IN

MX

10

mail.example.com.

IN

MX

10

mail2.example.com.

IN

MX

20

mail.backup.org.

mail.example.com.

IN

A

10.0.0.1

mail2.example.com.

IN

A

10.0.0.2

Mail delivery is attempted to mail.example.com and mail2.example.com (in any order); if neither of those succeeds, delivery to mail.backup.org is attempted.

Setting TTLs

The time-to- (TTL) of the RR field is a 32-bit integer represented in units of seconds, and is primarily used by resolvers when they cache RRs. The TTL describes how long an RR can be cached before it should be discarded. The following three types of TTLs are currently used in a zone file.

SOA

The last field in the SOA is the negative caching TTL. This controls how long other servers cache no-such-domain (NXDOMAIN) responses from this server.

The maximum time for negative caching is 3 hours (3h).

$TTL

The $TTL directive at the top of the zone file (before the SOA) gives a default TTL for every RR without a specific TTL set.

RR TTLs

Each RR can have a TTL as the second field in the RR, which controls how long other servers can cache it.

All of these TTLs default to units of seconds, though units can be explicitly specified: for example, 1h30m.

Inverse Mapping in IPv4

Reverse name resolution (that is, translation from IP address to name) is achieved by means of the in-addr.arpa domain and PTR records. Entries in the in-addr.arpa domain are made in least-to-most significant order, read left to right. This is the opposite order to the way IP addresses are usually written. Thus, a machine with an IP address of 10.1.2.3 would have a corresponding in-addr.arpa name of 3.2.1.10.in-addr.arpa. This name should have a PTR resource record whose data field is the name of the machine or, optionally, multiple PTR records if the machine has more than one name. For example, in the [example.com] domain:

$ORIGIN

2.1.10.in-addr.arpa

3

IN PTR foo.example.com.

Note

The $ORIGIN line in this example is only to provide context; it does not necessarily appear in the actual usage. It is only used here to indicate that the example is relative to the listed origin.

Other Zone File Directives

The DNS "master file" format was initially defined in RFC 1035 and has subsequently been extended. While the format itself is class-independent, all records in a zone file must be of the same class.

Master file directives include $ORIGIN, $INCLUDE, and $TTL.

The @ (at-sign)

When used in the label (or name) field, the asperand or at-sign (@) symbol represents the current origin. At the start of the zone file, it is the <zone_name>, followed by a trailing dot (.).

The $ORIGIN Directive

Syntax: $ORIGIN domain-name [comment]

$ORIGIN sets the domain name that is appended to any unqualified records. When a zone is first read, there is an implicit $ORIGIN <zone_name>.; note the trailing dot. The current $ORIGIN is appended to the domain specified in the $ORIGIN argument if it is not absolute.

$ORIGIN example.com.
WWW     CNAME   MAIN-SERVER

is equivalent to

WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.

The $INCLUDE Directive

Syntax: $INCLUDE filename [ origin ] [ comment ]

This reads and processes the file filename as if it were included in the file at this point. If origin is specified, the file is processed with $ORIGIN set to that value; otherwise, the current $ORIGIN is used.

The origin and the current domain name revert to the values they had prior to the $INCLUDE once the file has been read.

Note

RFC 1035 specifies that the current origin should be restored after an $INCLUDE, but it is silent on whether the current domain name should also be restored. BIND 9 restores both of them. This could be construed as a deviation from RFC 1035, a feature, or both.

The $TTL Directive

Syntax: $TTL default-ttl [ comment ]

This sets the default Time-To-Live (TTL) for subsequent records with undefined TTLs. Valid TTLs are of the range 0-2147483647 seconds.

$TTL is defined in RFC 2308.

BIND Primary File Extension: the $GENERATE Directive

Syntax: $GENERATE range lhs [ttl] [class] type rhs [comment]

$GENERATE is used to create a series of resource records that only differ from each other by an iterator. $GENERATE can be used to easily generate the sets of records required to support sub-/24 reverse delegations described in RFC 2317: Classless IN-ADDR.ARPA delegation.

$ORIGIN 0.0.192.IN-ADDR.ARPA.
$GENERATE 1-2 @ NS SERVER$.EXAMPLE.
$GENERATE 1-127 $ CNAME $.0

is equivalent to

0.0.0.192.IN-ADDR.ARPA. NS SERVER1.EXAMPLE.
0.0.0.192.IN-ADDR.ARPA. NS SERVER2.EXAMPLE.
1.0.0.192.IN-ADDR.ARPA. CNAME 1.0.0.0.192.IN-ADDR.ARPA.
2.0.0.192.IN-ADDR.ARPA. CNAME 2.0.0.0.192.IN-ADDR.ARPA.
...
127.0.0.192.IN-ADDR.ARPA. CNAME 127.0.0.0.192.IN-ADDR.ARPA.

Both generate a set of A and MX records. Note the MX's right-hand side is a quoted string. The quotes are stripped when the right-hand side is processed.

$ORIGIN EXAMPLE.
$GENERATE 1-127 HOST-$ A 1.2.3.$
$GENERATE 1-127 HOST-$ MX "0 ."

is equivalent to

HOST-1.EXAMPLE.   A  1.2.3.1
HOST-1.EXAMPLE.   MX 0 .
HOST-2.EXAMPLE.   A  1.2.3.2
HOST-2.EXAMPLE.   MX 0 .
HOST-3.EXAMPLE.   A  1.2.3.3
HOST-3.EXAMPLE.   MX 0 .
...
HOST-127.EXAMPLE. A  1.2.3.127
HOST-127.EXAMPLE. MX 0 .

range

This can be one of two forms: start-stop or start-stop/step. If the first form is used, then step is set to 1. "start", "stop", and "step" must be positive integers between 0 and (2^31)-1. "start" must not be larger than "stop".

lhs

This describes the owner name of the resource records to be created. Any single $ (dollar sign) symbols within the lhs string are replaced by the iterator value. To get a $ in the output, escape the $ using a backslash \, e.g., \$. The $ may optionally be followed by modifiers which change the offset from the iterator, field width, and base. Modifiers are introduced by a { (left brace) immediately following the $, as in ${offset[,width[,base]]}. For example, ${-20,3,d} subtracts 20 from the current value and prints the result as a decimal in a zero-padded field of width 3. Available output forms are decimal (d), octal (o), hexadecimal (x or X for uppercase), and nibble (n or N for uppercase). The default modifier is ${0,0,d}. If the lhs is not absolute, the current $ORIGIN is appended to the name.

In nibble mode, the value is treated as if it were a reversed hexadecimal string, with each hexadecimal digit as a separate label. The width field includes the label separator.

For compatibility with earlier versions, $$ is still recognized as indicating a literal $ in the output.

ttl

This specifies the time-to-live of the generated records. If not specified, this is inherited using the normal TTL inheritance rules.

class and ttl can be entered in either order.

class

This specifies the class of the generated records. This must match the zone class if it is specified.

class and ttl can be entered in either order.

type

This can be any valid type.

rhs

rhs is an optionally quoted string.

The $GENERATE directive is a BIND extension and not part of the standard zone file format.

BIND 8 did not support the optional TTL and CLASS fields.

Additional File Formats

In addition to the standard text format, BIND 9 supports the ability to read or dump to zone files in other formats.

The raw format is a binary representation of zone data in a manner similar to that used in zone transfers. Since it does not require parsing text, load time is significantly reduced.

An even faster alternative is the map format, which is an image of a BIND 9 in-memory zone database; it can be loaded directly into memory via the mmap() function and the zone can begin serving queries almost immediately.

For a primary server, a zone file in raw or map format is expected to be generated from a textual zone file by the named-compilezone command. For a secondary server or for a dynamic zone, the zone file is automatically generated when named dumps the zone contents after zone transfer or when applying prior updates, if one of these formats is specified by the masterfile-format option.

If a zone file in a binary format needs manual modification, it first must be converted to a textual form by the named-compilezone command. Make any necessary modifications to the text file, and then convert it to the binary form via the named-compilezone command again.

Note that map format is extremely architecture-specific. A map file cannot be used on a system with different pointer size, endianness, or data alignment than the system on which it was generated, and should in general be used only inside a single system. While raw format uses network byte order and avoids architecture-dependent data alignment so that it is as portable as possible, it is also primarily expected to be used inside the same single system. To export a zone file in either raw or map format, or make a portable backup of such a file, conversion to text format is recommended.

BIND 9 Statistics

BIND 9 maintains lots of statistics information and provides several interfaces for users to access those statistics. The available statistics include all statistics counters that are meaningful in BIND 9, and other information that is considered useful.

The statistics information is categorized into the following sections:

Incoming Requests

The number of incoming DNS requests for each OPCODE.

Incoming Queries

The number of incoming queries for each RR type.

Outgoing Queries

The number of outgoing queries for each RR type sent from the internal resolver, maintained per view.

Name Server Statistics

Statistics counters for incoming request processing.

Zone Maintenance Statistics

Statistics counters regarding zone maintenance operations, such as zone transfers.

Resolver Statistics

Statistics counters for name resolutions performed in the internal resolver, maintained per view.

Cache DB RRsets

Statistics counters related to cache contents, maintained per view.

The "NXDOMAIN" counter is the number of names that have been cached as nonexistent. Counters named for RR types indicate the number of active RRsets for each type in the cache database.

If an RR type name is preceded by an exclamation point (!), it represents the number of records in the cache which indicate that the type does not exist for a particular name; this is also known as "NXRRSET". If an RR type name is preceded by a hash mark (#), it represents the number of RRsets for this type that are present in the cache but whose TTLs have expired; these RRsets may only be used if stale answers are enabled. If an RR type name is preceded by a tilde (~), it represents the number of RRsets for this type that are present in the cache database but are marked for garbage collection; these RRsets cannot be used.

Socket I/O Statistics

Statistics counters for network-related events.

A subset of Name Server Statistics is collected and shown per zone for which the server has the authority, when zone-statistics is set to full (or yes), for backward compatibility. See the description of zone-statistics in the section called “options Statement Definition and Usage” for further details.

These statistics counters are shown with their zone and view names. The view name is omitted when the server is not configured with explicit views.

There are currently two user interfaces to get access to the statistics. One is in plain-text format, dumped to the file specified by the statistics-file configuration option; the other is remotely accessible via a statistics channel when the statistics-channels statement is specified in the configuration file (see the section called “statistics-channels Statement Grammar”.)

The Statistics File

The text format statistics dump begins with a line, like:

+++ Statistics Dump +++ (973798949)

The number in parentheses is a standard Unix-style timestamp, measured in seconds since January 1, 1970. Following that line is a set of statistics information, which is categorized as described above. Each section begins with a line, like:

++ Name Server Statistics ++

Each section consists of lines, each containing the statistics counter value followed by its textual description; see below for available counters. For brevity, counters that have a value of 0 are not shown in the statistics file.

The statistics dump ends with the line where the number is identical to the number in the beginning line; for example:

--- Statistics Dump --- (973798949)

Statistics Counters

The following tables summarize the statistics counters that BIND 9 provides. For each row of the tables, the leftmost column is the abbreviated symbol name of that counter; these symbols are shown in the statistics information accessed via an HTTP statistics channel. The rightmost column gives the description of the counter, which is also shown in the statistics file, but, in this document, may be slightly modified for better readability. Additional notes may also be provided in this column. When a middle column exists between these two columns, it gives the corresponding counter name of the BIND 8 statistics, if applicable.

Name Server Statistics Counters

Symbol

BIND 8 Symbol

Description

Requestv4

RQ

This indicates the number of IPv4 requests received. Note: this also counts non-query requests.

Requestv6

RQ

This indicates the number of IPv6 requests received. Note: this also counts non-query requests.

ReqEdns0

This indicates the number of requests received with EDNS(0).

ReqBadEDNSVer

This indicates the number of requests received with an unsupported EDNS version.

ReqTSIG

This indicates the number of requests received with TSIG.

ReqSIG0

This indicates the number of requests received with SIG(0).

ReqBadSIG

This indicates the number of requests received with an invalid (TSIG or SIG(0)) signature.

ReqTCP

RTCP

This indicates the number of TCP requests received.

AuthQryRej

RUQ

This indicates the number of rejected authoritative (non-recursive) queries.

RecQryRej

RURQ

This indicates the number of rejected recursive queries.

XfrRej

RUXFR

This indicates the number of rejected zone transfer requests.

UpdateRej

RUUpd

This indicates the number of rejected dynamic update requests.

Response

SAns

This indicates the number of responses sent.

RespTruncated

This indicates the number of truncated responses sent.

RespEDNS0

This indicates the number of responses sent with EDNS(0).

RespTSIG

This indicates the number of responses sent with TSIG.

RespSIG0

This indicates the number of responses sent with SIG(0).

QrySuccess

This indicates the number of queries that resulted in a successful answer, meaning queries which return a NOERROR response with at least one answer RR. This corresponds to the success counter of previous versions of BIND 9.

QryAuthAns

This indicates the number of queries that resulted in an authoritative answer.

QryNoauthAns

SNaAns

This indicates the number of queries that resulted in a non-authoritative answer.

QryReferral

This indicates the number of queries that resulted in a referral answer. This corresponds to the referral counter of previous versions of BIND 9.

QryNxrrset

This indicates the number of queries that resulted in NOERROR responses with no data. This corresponds to the nxrrset counter of previous versions of BIND 9.

QrySERVFAIL

SFail

This indicates the number of queries that resulted in SERVFAIL.

QryFORMERR

SFErr

This indicates the number of queries that resulted in FORMERR.

QryNXDOMAIN

SNXD

This indicates the number of queries that resulted in NXDOMAIN. This corresponds to the nxdomain counter of previous versions of BIND 9.

QryRecursion

RFwdQ

This indicates the number of queries that caused the server to perform recursion in order to find the final answer. This corresponds to the recursion counter of previous versions of BIND 9.

QryDuplicate

RDupQ

This indicates the number of queries which the server attempted to recurse but for which it discovered an existing query with the same IP address, port, query ID, name, type, and class already being processed. This corresponds to the duplicate counter of previous versions of BIND 9.

QryDropped

This indicates the number of recursive queries for which the server discovered an excessive number of existing recursive queries for the same name, type, and class, and which were subsequently dropped. This is the number of dropped queries due to the reason explained with the clients-per-query and max-clients-per-query options (see the description about clients-per-query.) This corresponds to the dropped counter of previous versions of BIND 9.

QryFailure

This indicates the number of query failures. This corresponds to the failure counter of previous versions of BIND 9. Note: this counter is provided mainly for backward compatibility with the previous versions; normally, more fine-grained counters such as AuthQryRej and RecQryRej that would also fall into this counter are provided, so this counter is not of much interest in practice.

QryNXRedir

This indicates the number of queries that resulted in NXDOMAIN that were redirected.

QryNXRedirRLookup

This indicates the number of queries that resulted in NXDOMAIN that were redirected and resulted in a successful remote lookup.

XfrReqDone

This indicates the number of requested and completed zone transfers.

UpdateReqFwd

This indicates the number of forwarded update requests.

UpdateRespFwd

This indicates the number of forwarded update responses.

UpdateFwdFail

This indicates the number of forwarded dynamic updates that failed.

UpdateDone

This indicates the number of completed dynamic updates.

UpdateFail

This indicates the number of failed dynamic updates.

UpdateBadPrereq

This indicates the number of dynamic updates rejected due to a prerequisite failure.

RateDropped

This indicates the number of responses dropped due to rate limits.

RateSlipped

This indicates the number of responses truncated by rate limits.

RPZRewrites

This indicates the number of response policy zone rewrites.

Zone Maintenance Statistics Counters

Symbol

Description

NotifyOutv4

This indicates the number of IPv4 notifies sent.

NotifyOutv6

This indicates the number of IPv6 notifies sent.

NotifyInv4

This indicates the number of IPv4 notifies received.

NotifyInv6

This indicates the number of IPv6 notifies received.

NotifyRej

This indicates the number of incoming notifies rejected.

SOAOutv4

This indicates the number of IPv4 SOA queries sent.

SOAOutv6

This indicates the number of IPv6 SOA queries sent.

AXFRReqv4

This indicates the number of requested IPv4 AXFRs.

AXFRReqv6

This indicates the number of requested IPv6 AXFRs.

IXFRReqv4

This indicates the number of requested IPv4 IXFRs.

IXFRReqv6

This indicates the number of requested IPv6 IXFRs.

XfrSuccess

This indicates the number of successful zone transfer requests.

XfrFail

This indicates the number of failed zone transfer requests.

Resolver Statistics Counters

Symbol

BIND 8 Symbol

Description

Queryv4

SFwdQ

This indicates the number of IPv4 queries sent.

Queryv6

SFwdQ

This indicates the number of IPv6 queries sent.

Responsev4

RR

This indicates the number of IPv4 responses received.

Responsev6

RR

This indicates the number of IPv6 responses received.

NXDOMAIN

RNXD

This indicates the number of NXDOMAINs received.

SERVFAIL

RFail

This indicates the number of SERVFAILs received.

FORMERR

RFErr

This indicates the number of FORMERRs received.

OtherError

RErr

This indicates the number of other errors received.

EDNS0Fail

This indicates the number of EDNS(0) query failures.

Mismatch

RDupR

This indicates the number of mismatched responses received, meaning the DNS ID, response's source address, and/or the response's source port does not match what was expected. (The port must be 53 or as defined by the port option.) This may be an indication of a cache poisoning attempt.

Truncated

This indicates the number of truncated responses received.

Lame

RLame

This indicates the number of lame delegations received.

Retry

SDupQ

This indicates the number of query retries performed.

QueryAbort

This indicates the number of queries aborted due to quota control.

QuerySockFail

This indicates the number of failures in opening query sockets. One common reason for such failures is a due to a limitation on file descriptors.

QueryTimeout

This indicates the number of query timeouts.

GlueFetchv4

SSysQ

This indicates the number of IPv4 NS address fetches invoked.

GlueFetchv6

SSysQ

This indicates the number of IPv6 NS address fetches invoked.

GlueFetchv4Fail

This indicates the number of failed IPv4 NS address fetches.

GlueFetchv6Fail

This indicates the number of failed IPv6 NS address fetches.

ValAttempt

This indicates the number of attempted DNSSEC validations.

ValOk

This indicates the number of successful DNSSEC validations.

ValNegOk

This indicates the number of successful DNSSEC validations on negative information.

ValFail

This indicates the number of failed DNSSEC validations.

QryRTTnn

This provides a frequency table on query round-trip times (RTTs). Each nn specifies the corresponding frequency. In the sequence of nn_1, nn_2, ..., nn_m, the value of nn_i is the number of queries whose RTTs are between nn_(i-1) (inclusive) and nn_i (exclusive) milliseconds. For the sake of convenience, we define nn_0 to be 0. The last entry should be represented as nn_m+, which means the number of queries whose RTTs are equal to or greater than nn_m milliseconds.

Socket I/O Statistics Counters

Socket I/O statistics counters are defined per socket type, which are UDP4 (UDP/IPv4), UDP6 (UDP/IPv6), TCP4 (TCP/IPv4), TCP6 (TCP/IPv6), Unix (Unix Domain), and FDwatch (sockets opened outside the socket module). In the following table, <TYPE> represents a socket type. Not all counters are available for all socket types; exceptions are noted in the description field.

Symbol

Description

<TYPE>Open

This indicates the number of sockets opened successfully. This counter does not apply to the FDwatch type.

<TYPE>OpenFail

This indicates the number of failures to open sockets. This counter does not apply to the FDwatch type.

<TYPE>Close

This indicates the number of closed sockets.

<TYPE>BindFail

This indicates the number of failures to bind sockets.

<TYPE>ConnFail

This indicates the number of failures to connect sockets.

<TYPE>Conn

This indicates the number of connections established successfully.

<TYPE>AcceptFail

This indicates the number of failures to accept incoming connection requests. This counter does not apply to the UDP and FDwatch types.

<TYPE>Accept

This indicates the number of incoming connections successfully accepted. This counter does not apply to the UDP and FDwatch types.

<TYPE>SendErr

This indicates the number of errors in socket send operations. This counter corresponds to the SErr counter of BIND 8.

<TYPE>RecvErr

This indicates the number of errors in socket receive operations, including errors of send operations on a connected UDP socket, notified by an ICMP error message.

Compatibility with BIND 8 Counters

Most statistics counters that were available in BIND 8 are also supported in BIND 9, as shown in the above tables. Here are notes about other counters that do not appear in these tables.

RFwdR,SFwdR

These counters are not supported, because BIND 9 does not adopt the notion of forwarding as BIND 8 did.

RAXFR

This counter is accessible in the Incoming Queries section.

RIQ

This counter is accessible in the Incoming Requests section.

ROpts

This counter is not supported, because BIND 9 does not care about IP options.

BIND 9.11.36 (Extended Support Version)

man.named-nzd2nzf.html000064400000007352152530214170010670 0ustar00 named-nzd2nzf

Name

named-nzd2nzf — Convert an NZD database to NZF text format

Synopsis

named-nzd2nzf {filename}

DESCRIPTION

named-nzd2nzf converts an NZD database to NZF format and prints it to standard output. This can be used to review the configuration of zones that were added to named via rndc addzone. It can also be used to restore the old file format when rolling back from a newer version of BIND to an older version.

ARGUMENTS

filename

The name of the .nzd file whose contents should be printed.

SEE ALSO

BIND 9 Administrator Reference Manual

AUTHOR

Internet Systems Consortium

BIND 9.11.36 (Extended Support Version)

man.host.html000064400000031374152530214170007171 0ustar00 host

Name

host — DNS lookup utility

Synopsis

host [-aCdlnrsTUwv] [-c class] [-N ndots] [-p port] [-R number] [-t type] [-W wait] [-m flag] [[-4] | [-6]] [-v] [-V] {name} [server]

DESCRIPTION

host is a simple utility for performing DNS lookups. It is normally used to convert names to IP addresses and vice versa. When no arguments or options are given, host prints a short summary of its command line arguments and options.

name is the domain name that is to be looked up. It can also be a dotted-decimal IPv4 address or a colon-delimited IPv6 address, in which case host will by default perform a reverse lookup for that address. server is an optional argument which is either the name or IP address of the name server that host should query instead of the server or servers listed in /etc/resolv.conf.

OPTIONS

-4

Use IPv4 only for query transport. See also the -6 option.

-6

Use IPv6 only for query transport. See also the -4 option.

-a

"All". The -a option is normally equivalent to -v -t ANY. It also affects the behaviour of the -l list zone option.

-c class

Query class: This can be used to lookup HS (Hesiod) or CH (Chaosnet) class resource records. The default class is IN (Internet).

-C

Check consistency: host will query the SOA records for zone name from all the listed authoritative name servers for that zone. The list of name servers is defined by the NS records that are found for the zone.

-d

Print debugging traces. Equivalent to the -v verbose option.

-i

Obsolete. Use the IP6.INT domain for reverse lookups of IPv6 addresses as defined in RFC1886 and deprecated in RFC4159. The default is to use IP6.ARPA as specified in RFC3596.

-l

List zone: The host command performs a zone transfer of zone name and prints out the NS, PTR and address records (A/AAAA).

Together, the -l -a options print all records in the zone.

-N ndots

The number of dots that have to be in name for it to be considered absolute. The default value is that defined using the ndots statement in /etc/resolv.conf, or 1 if no ndots statement is present. Names with fewer dots are interpreted as relative names and will be searched for in the domains listed in the search or domain directive in /etc/resolv.conf.

-p port

Specify the port on the server to query. The default is 53.

-r

Non-recursive query: Setting this option clears the RD (recursion desired) bit in the query. This should mean that the name server receiving the query will not attempt to resolve name. The -r option enables host to mimic the behavior of a name server by making non-recursive queries and expecting to receive answers to those queries that can be referrals to other name servers.

-R number

Number of retries for UDP queries: If number is negative or zero, the number of retries will default to 1. The default value is 1, or the value of the attempts option in /etc/resolv.conf, if set.

-s

Do not send the query to the next nameserver if any server responds with a SERVFAIL response, which is the reverse of normal stub resolver behavior.

-t type

Query type: The type argument can be any recognized query type: CNAME, NS, SOA, TXT, DNSKEY, AXFR, etc.

When no query type is specified, host automatically selects an appropriate query type. By default, it looks for A, AAAA, and MX records. If the -C option is given, queries will be made for SOA records. If name is a dotted-decimal IPv4 address or colon-delimited IPv6 address, host will query for PTR records.

If a query type of IXFR is chosen the starting serial number can be specified by appending an equal followed by the starting serial number (like -t IXFR=12345678).

-T, -U

TCP/UDP: By default, host uses UDP when making queries. The -T option makes it use a TCP connection when querying the name server. TCP will be automatically selected for queries that require it, such as zone transfer (AXFR) requests. Type ANY queries default to TCP but can be forced to UDP initially using -U.

-m flag

Memory usage debugging: the flag can be record, usage, or trace. You can specify the -m option more than once to set multiple flags.

-v

Verbose output. Equivalent to the -d debug option. Verbose output can also be enabled by setting the debug option in /etc/resolv.conf.

-V

Print the version number and exit.

-w

Wait forever: The query timeout is set to the maximum possible. See also the -W option.

-W wait

Timeout: Wait for up to wait seconds for a reply. If wait is less than one, the wait interval is set to one second.

By default, host will wait for 5 seconds for UDP responses and 10 seconds for TCP connections. These defaults can be overridden by the timeout option in /etc/resolv.conf.

See also the -w option.

IDN SUPPORT

If host has been built with IDN (internationalized domain name) support, it can accept and display non-ASCII domain names. host appropriately converts character encoding of domain name before sending a request to DNS server or displaying a reply from the server. If you'd like to turn off the IDN support for some reason, defines the IDN_DISABLE environment variable. The IDN support is disabled if the variable is set when host runs.

FILES

/etc/resolv.conf

SEE ALSO

dig(1), named(8).

BIND 9.11.36 (Extended Support Version)

man.dnssec-keyfromlabel.html000064400000044654152530214170012152 0ustar00 dnssec-keyfromlabel

Name

dnssec-keyfromlabel — DNSSEC key generation tool

Synopsis

dnssec-keyfromlabel {-l label} [-3] [-a algorithm] [-A date/offset] [-c class] [-D date/offset] [-D sync date/offset] [-E engine] [-f flag] [-G] [-I date/offset] [-i interval] [-k] [-K directory] [-L ttl] [-n nametype] [-P date/offset] [-P sync date/offset] [-p protocol] [-R date/offset] [-S key] [-t type] [-v level] [-V] [-y] {name}

DESCRIPTION

dnssec-keyfromlabel generates a key pair of files that referencing a key object stored in a cryptographic hardware service module (HSM). The private key file can be used for DNSSEC signing of zone data as if it were a conventional signing key created by dnssec-keygen, but the key material is stored within the HSM, and the actual signing takes place there.

The name of the key is specified on the command line. This must match the name of the zone for which the key is being generated.

OPTIONS

-a algorithm

Selects the cryptographic algorithm. The value of algorithm must be one of RSAMD5, RSASHA1, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECCGOST, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448. These values are case insensitive.

If no algorithm is specified, then RSASHA1 will be used by default, unless the -3 option is specified, in which case NSEC3RSASHA1 will be used instead. (If -3 is used and an algorithm is specified, that algorithm will be checked for compatibility with NSEC3.)

Note 1: that for DNSSEC, RSASHA1 is a mandatory to implement algorithm, and DSA is recommended.

Note 2: DH automatically sets the -k flag.

-3

Use an NSEC3-capable algorithm to generate a DNSSEC key. If this option is used and no algorithm is explicitly set on the command line, NSEC3RSASHA1 will be used by default.

-E engine

Specifies the cryptographic hardware to use.

When BIND is built with OpenSSL PKCS#11 support, this defaults to the string "pkcs11", which identifies an OpenSSL engine that can drive a cryptographic accelerator or hardware service module. When BIND is built with native PKCS#11 cryptography (--enable-native-pkcs11), it defaults to the path of the PKCS#11 provider library specified via "--with-pkcs11".

-l label

Specifies the label for a key pair in the crypto hardware.

When BIND 9 is built with OpenSSL-based PKCS#11 support, the label is an arbitrary string that identifies a particular key.

When BIND 9 is built with native PKCS#11 support, the label is a PKCS#11 URI string in the format "pkcs11:keyword=value[;keyword=value;...]" Keywords include "token", which identifies the HSM; "object", which identifies the key; and "pin-source", which identifies a file from which the HSM's PIN code can be obtained. The label will be stored in the on-disk "private" file.

If the label contains a pin-source field, tools using the generated key files will be able to use the HSM for signing and other operations without any need for an operator to manually enter a PIN. Note: Making the HSM's PIN accessible in this manner may reduce the security advantage of using an HSM; be sure this is what you want to do before making use of this feature.

-n nametype

Specifies the owner type of the key. The value of nametype must either be ZONE (for a DNSSEC zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated with a host (KEY)), USER (for a key associated with a user(KEY)) or OTHER (DNSKEY). These values are case insensitive.

-C

Compatibility mode: generates an old-style key, without any metadata. By default, dnssec-keyfromlabel will include the key's creation date in the metadata stored with the private key, and other dates may be set there as well (publication date, activation date, etc). Keys that include this data may be incompatible with older versions of BIND; the -C option suppresses them.

-c class

Indicates that the DNS record containing the key should have the specified class. If not specified, class IN is used.

-f flag

Set the specified flag in the flag field of the KEY/DNSKEY record. The only recognized flags are KSK (Key Signing Key) and REVOKE.

-G

Generate a key, but do not publish it or sign with it. This option is incompatible with -P and -A.

-h

Prints a short summary of the options and arguments to dnssec-keyfromlabel.

-K directory

Sets the directory in which the key files are to be written.

-k

Generate KEY records rather than DNSKEY records.

-L ttl

Sets the default TTL to use for this key when it is converted into a DNSKEY RR. If the key is imported into a zone, this is the TTL that will be used for it, unless there was already a DNSKEY RRset in place, in which case the existing TTL would take precedence. Setting the default TTL to 0 or none removes it.

-p protocol

Sets the protocol value for the key. The protocol is a number between 0 and 255. The default is 3 (DNSSEC). Other possible values for this argument are listed in RFC 2535 and its successors.

-S key

Generate a key as an explicit successor to an existing key. The name, algorithm, size, and type of the key will be set to match the predecessor. The activation date of the new key will be set to the inactivation date of the existing one. The publication date will be set to the activation date minus the prepublication interval, which defaults to 30 days.

-t type

Indicates the use of the key. type must be one of AUTHCONF, NOAUTHCONF, NOAUTH, or NOCONF. The default is AUTHCONF. AUTH refers to the ability to authenticate data, and CONF the ability to encrypt data.

-v level

Sets the debugging level.

-V

Prints version information.

-y

Allows DNSSEC key files to be generated even if the key ID would collide with that of an existing key, in the event of either key being revoked. (This is only safe to use if you are sure you won't be using RFC 5011 trust anchor maintenance with either of the keys involved.)

TIMING OPTIONS

Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS. If the argument begins with a '+' or '-', it is interpreted as an offset from the present time. For convenience, if such an offset is followed by one of the suffixes 'y', 'mo', 'w', 'd', 'h', or 'mi', then the offset is computed in years (defined as 365 24-hour days, ignoring leap years), months (defined as 30 24-hour days), weeks, days, hours, or minutes, respectively. Without a suffix, the offset is computed in seconds. To explicitly prevent a date from being set, use 'none' or 'never'.

-P date/offset

Sets the date on which a key is to be published to the zone. After that date, the key will be included in the zone but will not be used to sign it. If not set, and if the -G option has not been used, the default is "now".

-P sync date/offset

Sets the date on which the CDS and CDNSKEY records which match this key are to be published to the zone.

-A date/offset

Sets the date on which the key is to be activated. After that date, the key will be included in the zone and used to sign it. If not set, and if the -G option has not been used, the default is "now".

-R date/offset

Sets the date on which the key is to be revoked. After that date, the key will be flagged as revoked. It will be included in the zone and will be used to sign it.

-I date/offset

Sets the date on which the key is to be retired. After that date, the key will still be included in the zone, but it will not be used to sign it.

-D date/offset

Sets the date on which the key is to be deleted. After that date, the key will no longer be included in the zone. (It may remain in the key repository, however.)

-D sync date/offset

Sets the date on which the CDS and CDNSKEY records which match this key are to be deleted.

-i interval

Sets the prepublication interval for a key. If set, then the publication and activation dates must be separated by at least this much time. If the activation date is specified but the publication date isn't, then the publication date will default to this much time before the activation date; conversely, if the publication date is specified but activation date isn't, then activation will be set to this much time after publication.

If the key is being created as an explicit successor to another key, then the default prepublication interval is 30 days; otherwise it is zero.

As with date offsets, if the argument is followed by one of the suffixes 'y', 'mo', 'w', 'd', 'h', or 'mi', then the interval is measured in years, months, weeks, days, hours, or minutes, respectively. Without a suffix, the interval is measured in seconds.

GENERATED KEY FILES

When dnssec-keyfromlabel completes successfully, it prints a string of the form Knnnn.+aaa+iiiii to the standard output. This is an identification string for the key files it has generated.

  • nnnn is the key name.

  • aaa is the numeric representation of the algorithm.

  • iiiii is the key identifier (or footprint).

dnssec-keyfromlabel creates two files, with names based on the printed string. Knnnn.+aaa+iiiii.key contains the public key, and Knnnn.+aaa+iiiii.private contains the private key.

The .key file contains a DNS KEY record that can be inserted into a zone file (directly or with a $INCLUDE statement).

The .private file contains algorithm-specific fields. For obvious security reasons, this file does not have general read permission.

SEE ALSO

dnssec-keygen(8), dnssec-signzone(8), BIND 9 Administrator Reference Manual, RFC 4034, The PKCS#11 URI Scheme (draft-pechanec-pkcs11uri-13).

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch08.html000064400000013774152530214170007207 0ustar00 Chapter8.Troubleshooting

Chapter8.Troubleshooting

Table of Contents

Common Problems
It's Not Working; How Can I Figure Out What's Wrong?
Incrementing and Changing the Serial Number
Where Can I Get Help?

Common Problems

It's Not Working; How Can I Figure Out What's Wrong?

The best solution to installation and configuration issues is to take preventive measures by setting up logging files beforehand. The log files provide a source of hints and information that can be used to identify what went wrong and fix the problem.

Incrementing and Changing the Serial Number

Zone serial numbers are just numbers — they are not date-related. However, many people set them to a number that represents a date, usually of the form YYYYMMDDRR. Occasionally they make a mistake and set the serial number to a date in the future, then try to correct it by setting it to the current date. This causes problems because serial numbers are used to indicate that a zone has been updated. If the serial number on the secondary server is lower than the serial number on the primary, the secondary server attempts to update its copy of the zone.

Setting the serial number to a lower number on the primary server than the one on the secondary server means that the secondary will not perform updates to its copy of the zone.

The solution to this is to add 2147483647 (2^31-1) to the number, reload the zone and make sure all secondaries have updated to the new zone serial number, then reset it to the desired number and reload the zone again.

Where Can I Get Help?

The BIND-users mailing list, at https://lists.isc.org/mailman/listinfo/bind-users, is an excellent resource for peer user support. In addition, ISC maintains a Knowledgebase of helpful articles at https://kb.isc.org.

Internet Systems Consortium (ISC) offers annual support agreements for BIND9, ISC DHCP, and Kea DHCP. All paid support contracts include advance security notifications; some levels include service level agreements (SLAs), premium software features, and increased priority on bug fixes and feature requests.

Please contact info@isc.org or visit https://www.isc.org/contact/ for more information.

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch09.html000064400000352033152530214170007202 0ustar00 AppendixA.Release Notes

Release Notes

Table of Contents

Release Notes for BIND Version 9.11.36
Introduction
Download
License Change
Notes for BIND 9.11.36
Notes for BIND 9.11.35
Notes for BIND 9.11.34
Notes for BIND 9.11.33
Notes for BIND 9.11.32
Notes for BIND 9.11.31
Notes for BIND 9.11.30
Notes for BIND 9.11.29
Notes for BIND 9.11.28
Notes for BIND 9.11.27
Notes for BIND 9.11.26
Notes for BIND 9.11.25
Notes for BIND 9.11.24
Notes for BIND 9.11.23
Notes for BIND 9.11.22
Notes for BIND 9.11.21
Notes for BIND 9.11.20
Notes for BIND 9.11.19
Notes for BIND 9.11.18
Notes for BIND 9.11.17
Notes for BIND 9.11.16
Notes for BIND 9.11.15
Notes for BIND 9.11.14
Notes for BIND 9.11.13
Notes for BIND 9.11.12
Notes for BIND 9.11.11
Notes for BIND 9.11.10
Notes for BIND 9.11.9
Notes for BIND 9.11.8
Notes for BIND 9.11.7
Notes for BIND 9.11.6
Notes for BIND 9.11.5
Notes for BIND 9.11.4
Notes for BIND 9.11.3
Notes for BIND 9.11.2
Notes for BIND 9.11.1
Notes for BIND 9.11.0
End of Life
Thank You

Release Notes for BIND Version 9.11.36

Introduction

BIND 9.11 (Extended Support Version) is a stable branch of BIND. This document summarizes significant changes since the last production release on that branch.

Please see the file CHANGES for a more detailed list of changes and bug fixes.

Download

The latest versions of BIND 9 software can always be found at https://www.isc.org/download/. There you will find additional information about each release, source code, and pre-compiled versions for Microsoft Windows operating systems.

License Change

With the release of BIND 9.11.0, ISC changed to the open source license for BIND from the ISC license to the Mozilla Public License (MPL 2.0).

The MPL-2.0 license requires that if you make changes to licensed software (e.g. BIND) and distribute them outside your organization, that you publish those changes under that same license. It does not require that you publish or disclose anything other than the changes you made to our software.

This requirement will not affect anyone who is using BIND, with or without modifications, without redistributing it, nor anyone redistributing it without changes. Therefore, this change will be without consequence for most individuals and organizations who are using BIND.

Those unsure whether or not the license change affects their use of BIND, or who wish to discuss how to comply with the license may contact ISC at https://www.isc.org/mission/contact/.

Notes for BIND 9.11.36

Security Fixes

  • The lame-ttl option controls how long named caches certain types of broken responses from authoritative servers (see the security advisory for details). This caching mechanism could be abused by an attacker to significantly degrade resolver performance. The vulnerability has been mitigated by changing the default value of lame-ttl to 0 and overriding any explicitly set value with 0, effectively disabling this mechanism altogether. ISC's testing has determined that doing that has a negligible impact on resolver performance while also preventing abuse. Administrators may observe more traffic towards servers issuing certain types of broken responses than in previous BIND 9 releases, depending on client query patterns. (CVE-2021-25219)

    ISC would like to thank Kishore Kumar Kothapalli of Infoblox for bringing this vulnerability to our attention. [GL #2899]

Notes for BIND 9.11.35

Security Fixes

  • named failed to check the opcode of responses when performing zone refreshes, stub zone updates, and UPDATE forwarding. This could lead to an assertion failure under certain conditions and has been addressed by rejecting responses whose opcode does not match the expected value. [GL #2762]

Notes for BIND 9.11.34

This maintenance release of BIND 9.11 contains no significant changes, although some minor updates have been made (for example, to fix build issues on Solaris 11).

Notes for BIND 9.11.33

This maintenance release of BIND 9.11 contains no significant changes, although some minor updates have been made (for example, to eliminate compiler warnings emitted by GCC 11).

Notes for BIND 9.11.32

Feature Changes

  • DNSSEC responses containing NSEC3 records with iteration counts greater than 150 are now treated as insecure. [GL #2445]

  • The maximum supported number of NSEC3 iterations that can be configured for a zone has been reduced to 150. [GL #2642]

  • The implementation of the ZONEMD RR type has been updated to match RFC 8976. [GL #2658]

Notes for BIND 9.11.31

Security Fixes

  • A malformed incoming IXFR transfer could trigger an assertion failure in named, causing it to quit abnormally. (CVE-2021-25214)

    ISC would like to thank Greg Kuechle of SaskTel for bringing this vulnerability to our attention. [GL #2467]

  • named crashed when a DNAME record placed in the ANSWER section during DNAME chasing turned out to be the final answer to a client query. (CVE-2021-25215)

    ISC would like to thank Siva Kakarla for bringing this vulnerability to our attention. [GL #2540]

  • When a server's configuration set the tkey-gssapi-keytab or tkey-gssapi-credential option, a specially crafted GSS-TSIG query could cause a buffer overflow in the ISC implementation of SPNEGO (a protocol enabling negotiation of the security mechanism used for GSSAPI authentication). This flaw could be exploited to crash named binaries compiled for 64-bit platforms, and could enable remote code execution when named was compiled for 32-bit platforms. (CVE-2021-25216)

    This vulnerability was reported to us as ZDI-CAN-13347 by Trend Micro Zero Day Initiative. [GL #2604]

Feature Changes

  • The ISC implementation of SPNEGO was removed from BIND 9 source code. Instead, BIND 9 now always uses the SPNEGO implementation provided by the system GSSAPI library when it is built with GSSAPI support. All major contemporary Kerberos/GSSAPI libraries contain an implementation of the SPNEGO mechanism. [GL #2607]

Notes for BIND 9.11.30

The BIND 9.11.30 release was withdrawn after a backporting bug was discovered during pre-release testing. ISC would like to acknowledge the assistance of Natan Segal of Bluecat Networks.

Notes for BIND 9.11.29

Bug Fixes

  • An invalid direction field (not one of N, S, E, W) in a LOC record resulted in an INSIST failure when a zone file containing such a record was loaded. [GL #2499]

Notes for BIND 9.11.28

Security Fixes

  • When tkey-gssapi-keytab or tkey-gssapi-credential was configured, a specially crafted GSS-TSIG query could cause a buffer overflow in the ISC implementation of SPNEGO (a protocol enabling negotiation of the security mechanism to use for GSSAPI authentication). This flaw could be exploited to crash named. Theoretically, it also enabled remote code execution, but achieving the latter is very difficult in real-world conditions. (CVE-2020-8625)

    This vulnerability was responsibly reported to us as ZDI-CAN-12302 by Trend Micro Zero Day Initiative. [GL #2354]

Notes for BIND 9.11.27

Bug Fixes

  • Multiple threads could attempt to destroy a single RBTDB instance at the same time, resulting in an unpredictable but low-probability assertion failure in free_rbtdb(). This has been fixed. [GL #2317]

Notes for BIND 9.11.26

Feature Changes

  • The default value of max-recursion-queries was increased from 75 to 100. Since the queries sent towards root and TLD servers are now included in the count (as a result of the fix for CVE-2020-8616), max-recursion-queries has a higher chance of being exceeded by non-attack queries, which is the main reason for increasing its default value. [GL #2305]

  • The default value of nocookie-udp-size was restored back to 4096 bytes. Since max-udp-size is the upper bound for nocookie-udp-size, this change relieves the operator from having to change nocookie-udp-size together with max-udp-size in order to increase the default EDNS buffer size limit. nocookie-udp-size can still be set to a value lower than max-udp-size, if desired. [GL #2250]

Bug Fixes

  • Handling of missing DNS COOKIE responses over UDP was tightened by falling back to TCP. [GL #2275]

  • The CNAME synthesized from a DNAME was incorrectly followed when the QTYPE was CNAME or ANY. [GL #2280]

  • Building with native PKCS#11 support for AEP Keyper has been broken since BIND 9.11.22. This has been fixed. [GL #2315]

Notes for BIND 9.11.25

Bug Fixes

  • named acting as a resolver could incorrectly treat signed zones with no DS record at the parent as bogus. Such zones should be treated as insecure. This has been fixed. [GL #2236]

  • After a Negative Trust Anchor (NTA) is added, BIND performs periodic checks to see if it is still necessary. If BIND encountered a failure while creating a query to perform such a check, it attempted to dereference a NULL pointer, resulting in a crash. [GL #2244]

  • A problem obtaining glue records could prevent a stub zone from functioning properly, if the authoritative server for the zone were configured for minimal responses. [GL #1736]

Notes for BIND 9.11.24

Feature Changes

  • DNS Flag Day 2020: The default EDNS buffer size has been changed from 4096 to 1232 bytes. According to measurements done by multiple parties, this should not cause any operational problems as most of the Internet "core" is able to cope with IP message sizes between 1400-1500 bytes; the 1232 size was picked as a conservative minimal number that could be changed by the DNS operator to an estimated path MTU minus the estimated header space. In practice, the smallest MTU witnessed in the operational DNS community is 1500 octets, the maximum Ethernet payload size, so a useful default for maximum DNS/UDP payload size on reliable networks would be 1400 bytes. [GL #2183]

Bug Fixes

  • named reported an invalid memory size when running in an environment that did not properly report the number of available memory pages and/or the size of each memory page. [GL #2166]

  • With multiple forwarders configured, named could fail the REQUIRE(msg->state == (-1)) assertion in lib/dns/message.c, causing it to crash. This has been fixed. [GL #2124]

Notes for BIND 9.11.23

Bug Fixes

  • Parsing of LOC records was made more strict by rejecting a sole period (.) and/or m as a value. These changes prevent zone files using such values from being loaded. Handling of negative altitudes which are not integers was also corrected. [GL #2074]

  • Several problems found by OSS-Fuzz were fixed. (None of these are security issues.) [GL !3953] [GL !3975]

Notes for BIND 9.11.22

Security Fixes

  • It was possible to trigger an assertion failure when verifying the response to a TSIG-signed request. This was disclosed in CVE-2020-8622.

    ISC would like to thank Dave Feldman, Jeff Warren, and Joel Cunningham of Oracle for bringing this vulnerability to our attention. [GL #2028]

  • When BIND 9 was compiled with native PKCS#11 support, it was possible to trigger an assertion failure in code determining the number of bits in the PKCS#11 RSA public key with a specially crafted packet. This was disclosed in CVE-2020-8623.

    ISC would like to thank Lyu Chiy for bringing this vulnerability to our attention. [GL #2037]

  • update-policy rules of type subdomain were incorrectly treated as zonesub rules, which allowed keys used in subdomain rules to update names outside of the specified subdomains. The problem was fixed by making sure subdomain rules are again processed as described in the ARM. This was disclosed in CVE-2020-8624.

    ISC would like to thank Joop Boonen of credativ GmbH for bringing this vulnerability to our attention. [GL #2055]

Bug Fixes

  • Wildcard RPZ passthru rules could incorrectly be overridden by other rules that were loaded from RPZ zones which appeared later in the response-policy statement. This has been fixed. [GL #1619]

  • LMDB locking code was revised to make rndc reconfig work properly on FreeBSD and with LMDB >= 0.9.26. [GL #1976]

Notes for BIND 9.11.21

Bug Fixes

  • named could crash when cleaning dead nodes in lib/dns/rbtdb.c that were being reused. [GL #1968]

  • Properly handle missing kyua command so that make check does not fail unexpectedly when CMocka is installed, but Kyua is not. [GL #1950]

  • The validator could fail to accept a properly signed RRset if an unsupported algorithm appeared earlier in the DNSKEY RRset than a supported algorithm. It could also stop if it detected a malformed public key. [GL #1689]

Notes for BIND 9.11.20

Security Fixes

  • It was possible to trigger an INSIST failure when a zone with an interior wildcard label was queried in a certain pattern. This was disclosed in CVE-2020-8619. [GL #1111] [GL #1718]

New Features

  • dig and other tools can now print the Extended DNS Error (EDE) option when it appears in a request or a response. [GL #1835]

Bug Fixes

  • When fully updating the NSEC3 chain for a large zone via IXFR, a temporary loss of performance could be experienced on the secondary server when answering queries for nonexistent data that required DNSSEC proof of non-existence (in other words, queries that required the server to find and to return NSEC3 data). The unnecessary processing step that was causing this delay has now been removed. [GL #1834]

  • A data race in lib/dns/resolver.c:log_formerr() that could lead to an assertion failure was fixed. [GL #1808]

  • Previously, provide-ixfr no; failed to return up-to-date responses when the serial number was greater than or equal to the current serial number. [GL #1714]

  • named-checkconf -p could include spurious text in server-addresses statements due to an uninitialized DSCP value. This has been fixed. [GL #1812]

  • The ARM has been updated to indicate that the TSIG session key is generated when named starts, regardless of whether it is needed. [GL #1842]

Notes for BIND 9.11.19

Security Fixes

  • To prevent exhaustion of server resources by a maliciously configured domain, the number of recursive queries that can be triggered by a request before aborting recursion has been further limited. Root and top-level domain servers are no longer exempt from the max-recursion-queries limit. Fetches for missing name server address records are limited to 4 for any domain. This issue was disclosed in CVE-2020-8616. [GL #1388]

  • Replaying a TSIG BADTIME response as a request could trigger an assertion failure. This was disclosed in CVE-2020-8617. [GL #1703]

Feature Changes

  • Message IDs in inbound AXFR transfers are now checked for consistency. Log messages are emitted for streams with inconsistent message IDs. [GL #1674]

Bug Fixes

  • When running on a system with support for Linux capabilities, named drops root privileges very soon after system startup. This was causing a spurious log message, "unable to set effective uid to 0: Operation not permitted", which has now been silenced. [GL #1042] [GL #1090]

  • When named-checkconf -z was run, it would sometimes incorrectly set its exit code. It reflected the status of the last view found; if zone-loading errors were found in earlier configured views but not in the last one, the exit code indicated success. Thanks to Graham Clinch. [GL #1807]

  • When built without LMDB support, named failed to restart after a zone with a double quote (") in its name was added with rndc addzone. Thanks to Alberto Fernndez. [GL #1695]

Notes for BIND 9.11.18

Security Fixes

  • DNS rebinding protection was ineffective when BIND 9 is configured as a forwarding DNS server. Found and responsibly reported by Tobias Klein. [GL #1574]

Known Issues

  • We have received reports that in some circumstances, receipt of an IXFR can cause the processing of queries to slow significantly. Some of these are related to RPZ processing, others appear to occur where there are NSEC3-related changes (such as an operator changing the NSEC3 salt used in the hash calculation). These are being investigated. [GL #1685]

Notes for BIND 9.11.17

Feature Changes

  • The configure option --with-libxml2 now uses pkg-config to detect libxml2 library availability. You will either have to install pkg-config or specify the exact path where libxml2 has been installed on your system. [GL #1635]

Bug Fixes

  • Fixed re-signing issues with inline zones which resulted in records being re-signed late or not at all.

Notes for BIND 9.11.16

Bug Fixes

  • named crashed when it was queried for a nonexistent name in the CHAOS class. [GL #1540]

Notes for BIND 9.11.15

Bug Fixes

  • Fixed a GeoIP2 lookup bug which was triggered when certain libmaxminddb versions were used. [GL #1552]

  • Fixed several possible race conditions discovered by ThreadSanitizer.

Notes for BIND 9.11.14

Bug Fixes

  • Fixed a bug that caused named to leak memory on reconfiguration when any GeoIP2 database was in use. [GL #1445]

  • Fixed several possible race conditions discovered by ThreadSanitizer.

Notes for BIND 9.11.13

Security Fixes

  • Set a limit on the number of concurrently served pipelined TCP queries. This flaw is disclosed in CVE-2019-6477. [GL #1264]

New Features

  • Added a new statistics variable tcp-highwater that reports the maximum number of simultaneous TCP clients BIND has handled while running. [GL #1206]

Notes for BIND 9.11.12

None.

Notes for BIND 9.11.11

None.

Notes for BIND 9.11.10

New Features

  • A SipHash 2-4 based DNS Cookie (RFC 7873) algorithm has been added. [GL #605]

    If you are running multiple DNS Servers (different versions of BIND 9 or DNS server from multiple vendors) responding from the same IP address (anycast or load-balancing scenarios), you'll have to make sure that all the servers are configured with the same DNS Cookie algorithm and same Server Secret for the best performance.

  • DS records included in DNS referral messages can now be validated and cached immediately, reducing the number of queries needed for a DNSSEC validation. [GL #964]

Bug Fixes

  • Interaction between DNS64 and RPZ No Data rule (CNAME *.) could cause unexpected results; this has been fixed. [GL #1106]

  • named-checkconf now checks DNS64 prefixes to ensure bits 64-71 are zero. [GL #1159]

  • named-checkconf could crash during configuration if configured to use "geoip continent" ACLs with legacy GeoIP. [GL #1163]

  • named-checkconf now correctly reports a missing dnstap-output option when dnstap is set. [GL #1136]

  • Handle ETIMEDOUT error on connect() with a non-blocking socket. [GL #1133]

Notes for BIND 9.11.9

New Features

  • The new GeoIP2 API from MaxMind is now supported when BIND is compiled using configure --with-geoip2. The legacy GeoIP API can be used by compiling with configure --with-geoip instead. (Note that the databases for the legacy API are no longer maintained by MaxMind.)

    The default path to the GeoIP2 databases will be set based on the location of the libmaxminddb library; for example, if it is in /usr/local/lib, then the default path will be /usr/local/share/GeoIP. This value can be overridden in named.conf using the geoip-directory option.

    Some geoip ACL settings that were available with legacy GeoIP, including searches for netspeed, org, and three-letter ISO country codes, will no longer work when using GeoIP2. Supported GeoIP2 database types are country, city, domain, isp, and as. All of the databases support both IPv4 and IPv6 lookups. [GL #182]

Bug Fixes

  • Glue address records were not being returned in responses to root priming queries; this has been corrected. [GL #1092]

Notes for BIND 9.11.8

Security Fixes

  • A race condition could trigger an assertion failure when a large number of incoming packets were being rejected. This flaw is disclosed in CVE-2019-6471. [GL #942]

Notes for BIND 9.11.7

Security Fixes

  • The TCP client quota set using the tcp-clients option could be exceeded in some cases. This could lead to exhaustion of file descriptors. This flaw is disclosed in CVE-2018-5743. [GL #615]

Feature Changes

  • When trusted-keys and managed-keys are both configured for the same name, or when trusted-keys is used to configure a trust anchor for the root zone and dnssec-validation is set to auto, automatic RFC 5011 key rollovers will fail.

    This combination of settings was never intended to work, but there was no check for it in the parser. This has been corrected; a warning is now logged. (In BIND 9.15 and higher this error will be fatal.) [GL #868]

Notes for BIND 9.11.6

Security Fixes

  • Code change #4964, intended to prevent double signatures when deleting an inactive zone DNSKEY in some situations, introduced a new problem during zone processing in which some delegation glue RRsets are incorrectly identified as needing RRSIGs, which are then created for them using the current active ZSK for the zone. In some, but not all cases, the newly-signed RRsets are added to the zone's NSEC/NSEC3 chain, but incompletely -- this can result in a broken chain, affecting validation of proof of nonexistence for records in the zone. [GL #771]

  • named could crash if it managed a DNSSEC security root with managed-keys and the authoritative zone rolled the key to an algorithm not supported by BIND 9. This flaw is disclosed in CVE-2018-5745. [GL #780]

  • named leaked memory when processing a request with multiple Key Tag EDNS options present. ISC would like to thank Toshifumi Sakaguchi for bringing this to our attention. This flaw is disclosed in CVE-2018-5744. [GL #772]

  • Zone transfer controls for writable DLZ zones were not effective as the allowzonexfr method was not being called for such zones. This flaw is disclosed in CVE-2019-6465. [GL #790]

Feature Changes

  • When compiled with IDN support, the dig and the nslookup commands now disable IDN processing when the standard output is not a tty (e.g. not used by human). The command line options +idnin and +idnout need to be used to enable IDN processing when dig or nslookup is used from the shell scripts.

Notes for BIND 9.11.5

Security Fixes

  • named could crash during recursive processing of DNAME records when deny-answer-aliases was in use. This flaw is disclosed in CVE-2018-5740. [GL #387]

New Features

  • Two new update policy rule types have been added krb5-selfsub and ms-selfsub which allow machines with Kerberos principals to update the name space at or below the machine names identified in the respective principals.

Feature Changes

  • The rndc nta command could not differentiate between views of the same name but different class; this has been corrected with the addition of a -class option. [GL #105]

Bug Fixes

  • When a negative trust anchor was added to multiple views using rndc nta, the text returned via rndc was incorrectly truncated after the first line, making it appear that only one NTA had been added. This has been fixed. [GL #105]

Notes for BIND 9.11.4

Security Fixes

  • When recursion is enabled but the allow-recursion and allow-query-cache ACLs are not specified, they should be limited to local networks, but they were inadvertently set to match the default allow-query, thus allowing remote queries. This flaw is disclosed in CVE-2018-5738. [GL #309]

New Features

  • named now supports the "root key sentinel" mechanism. This enables validating resolvers to indicate which trust anchors are configured for the root, so that information about root key rollover status can be gathered. To disable this feature, add root-key-sentinel no; to named.conf.

  • Added the ability not to return a DNS COOKIE option when one is present in the request. To prevent a cookie being returned, add answer-cookie no; to named.conf. [GL #173]

    answer-cookie no is only intended as a temporary measure, for use when named shares an IP address with other servers that do not yet support DNS COOKIE. A mismatch between servers on the same address is not expected to cause operational problems, but the option to disable COOKIE responses so that all servers have the same behavior is provided out of an abundance of caution. DNS COOKIE is an important security mechanism, and should not be disabled unless absolutely necessary.

Removed Features

  • named will now log a warning if the old BIND now can be compiled against libidn2 library to add IDNA2008 support. Previously BIND only supported IDNA2003 using (now obsolete) idnkit-1 library.

Feature Changes

  • dig +noidnin can be used to disable IDN processing on the input domain name, when BIND is compiled with IDN support.

  • Multiple cookie-secret clause are now supported. The first cookie-secret in named.conf is used to generate new server cookies. Any others are used to accept old server cookies or those generated by other servers using the matching cookie-secret.

Bug Fixes

  • named now rejects excessively large incremental (IXFR) zone transfers in order to prevent possible corruption of journal files which could cause named to abort when loading zones. [GL #339]

  • rndc reload could cause named to leak memory if it was invoked before the zone loading actions from a previous rndc reload command were completed. [RT #47076]

Notes for BIND 9.11.3

Security Fixes

  • Addresses could be referenced after being freed during resolver processing, causing an assertion failure. The chances of this happening were remote, but the introduction of a delay in resolution increased them. This bug is disclosed in CVE-2017-3145. [RT #46839]

  • update-policy rules that otherwise ignore the name field now require that it be set to "." to ensure that any type list present is properly interpreted. If the name field was omitted from the rule declaration and a type list was present it wouldn't be interpreted as expected.

Removed Features

  • The ISC DNSSEC Lookaside Validation (DLV) service has been shut down; all DLV records in the dlv.isc.org zone have been removed. References to the service have been removed from BIND documentation. Lookaside validation is no longer used by default by delv. The DLV key has been removed from bind.keys. Setting dnssec-lookaside to auto or to use dlv.isc.org as a trust anchor results in a warning being issued.

  • named will now log a warning if the old root DNSSEC key is explicitly configured and has not been updated. [RT #43670]

Protocol Changes

  • BIND can now use the Ed25519 and Ed448 Edwards Curve DNSSEC signing algorithms described in RFC 8080. Note, however, that these algorithms must be supported in OpenSSL; currently they are only available in the development branch of OpenSSL at https://github.com/openssl/openssl. [RT #44696]

  • When parsing DNS messages, EDNS KEY TAG options are checked for correctness. When printing messages (for example, in dig), EDNS KEY TAG options are printed in readable format.

Feature Changes

  • named will no longer start or accept reconfiguration if managed-keys or dnssec-validation auto are in use and the managed-keys directory (specified by managed-keys-directory, and defaulting to the working directory if not specified), is not writable by the effective user ID. [RT #46077]

  • Previously, update-policy local; accepted updates from any source so long as they were signed by the locally-generated session key. This has been further restricted; updates are now only accepted from locally configured addresses. [RT #45492]

Bug Fixes

  • Attempting to validate improperly unsigned CNAME responses from secure zones could cause a validator loop. This caused a delay in returning SERVFAIL and also increased the chances of encountering the crash bug described in CVE-2017-3145. [RT #46839]

  • When named was reconfigured, failure of some zones to load correctly could leave the system in an inconsistent state; while generally harmless, this could lead to a crash later when using rndc addzone. Reconfiguration changes are now fully rolled back in the event of failure. [RT #45841]

  • Some header files included <isc/util.h> incorrectly as it pollutes with namespace with non ISC_ macros and this should only be done by explicitly including <isc/util.h>. This has been corrected. Some code may depend on <isc/util.h> being implicitly included via other header files. Such code should explicitly include <isc/util.h>.

  • Zones created with rndc addzone could temporarily fail to inherit the allow-transfer ACL set in the options section of named.conf. [RT #46603]

  • named failed to properly determine whether there were active KSK and ZSK keys for an algorithm when update-check-ksk was true (which is the default setting). This could leave records unsigned when rolling keys. [RT #46743] [RT #46754] [RT #46774]

Notes for BIND 9.11.2

Security Fixes

  • An error in TSIG handling could permit unauthorized zone transfers or zone updates. These flaws are disclosed in CVE-2017-3142 and CVE-2017-3143. [RT #45383]

  • The BIND installer on Windows used an unquoted service path, which can enable privilege escalation. This flaw is disclosed in CVE-2017-3141. [RT #45229]

  • With certain RPZ configurations, a response with TTL 0 could cause named to go into an infinite query loop. This flaw is disclosed in CVE-2017-3140. [RT #45181]

Feature Changes

  • dig +ednsopt now accepts the names for EDNS options in addition to numeric values. For example, an EDNS Client-Subnet option could be sent using dig +ednsopt=ecs:.... Thanks to John Worley of Secure64 for the contribution. [RT #44461]

  • Threads in named are now set to human-readable names to assist debugging on operating systems that support that. Threads will have names such as "isc-timer", "isc-sockmgr", "isc-worker0001", and so on. This will affect the reporting of subsidiary thread names in ps and top, but not the main thread. [RT #43234]

  • DiG now warns about .local queries which are reserved for Multicast DNS. [RT #44783]

Bug Fixes

  • Fixed a bug that was introduced in an earlier development release which caused multi-packet AXFR and IXFR messages to fail validation if not all packets contained TSIG records; this caused interoperability problems with some other DNS implementations. [RT #45509]

  • Reloading or reconfiguring named could fail on some platforms when LMDB was in use. [RT #45203]

  • Due to some incorrectly deleted code, when BIND was built with LMDB, zones that were deleted via rndc delzone were removed from the running server but were not removed from the new zone database, so that deletion did not persist after a server restart. This has been corrected. [RT #45185]

  • Semicolons are no longer escaped when printing CAA and URI records. This may break applications that depend on the presence of the backslash before the semicolon. [RT #45216]

  • AD could be set on truncated answer with no records present in the answer and authority sections. [RT #45140]

Notes for BIND 9.11.1

Security Fixes

  • rndc "" could trigger an assertion failure in named. This flaw is disclosed in (CVE-2017-3138). [RT #44924]

  • Some chaining (i.e., type CNAME or DNAME) responses to upstream queries could trigger assertion failures. This flaw is disclosed in CVE-2017-3137. [RT #44734]

  • dns64 with break-dnssec yes; can result in an assertion failure. This flaw is disclosed in CVE-2017-3136. [RT #44653]

  • If a server is configured with a response policy zone (RPZ) that rewrites an answer with local data, and is also configured for DNS64 address mapping, a NULL pointer can be read triggering a server crash. This flaw is disclosed in CVE-2017-3135. [RT #44434]

  • A coding error in the nxdomain-redirect feature could lead to an assertion failure if the redirection namespace was served from a local authoritative data source such as a local zone or a DLZ instead of via recursive lookup. This flaw is disclosed in CVE-2016-9778. [RT #43837]

  • named could mishandle authority sections with missing RRSIGs, triggering an assertion failure. This flaw is disclosed in CVE-2016-9444. [RT #43632]

  • named mishandled some responses where covering RRSIG records were returned without the requested data, resulting in an assertion failure. This flaw is disclosed in CVE-2016-9147. [RT #43548]

  • named incorrectly tried to cache TKEY records which could trigger an assertion failure when there was a class mismatch. This flaw is disclosed in CVE-2016-9131. [RT #43522]

  • It was possible to trigger assertions when processing responses containing answers of type DNAME. This flaw is disclosed in CVE-2016-8864. [RT #43465]

  • Added the ability to specify the maximum number of records permitted in a zone (max-records #;). This provides a mechanism to block overly large zone transfers, which is a potential risk with slave zones from other parties, as described in CVE-2016-6170. [RT #42143]

Feature Changes

  • dnstap now stores both the local and remote addresses for all messages, instead of only the remote address. The default output format for dnstap-read has been updated to include these addresses, with the initiating address first and the responding address second, separated by "-%gt;" or "%lt;-" to indicate in which direction the message was sent. [RT #43595]

  • Expanded and improved the YAML output from dnstap-read -y: it now includes packet size and a detailed breakdown of message contents. [RT #43622] [RT #43642]

  • If an ACL is specified with an address prefix in which the prefix length is longer than the address portion (for example, 192.0.2.1/8), named will now log a warning. In future releases this will be a fatal configuration error. [RT #43367]

Bug Fixes

  • A synthesized CNAME record appearing in a response before the associated DNAME could be cached, when it should not have been. This was a regression introduced while addressing CVE-2016-8864. [RT #44318]

  • named could deadlock if multiple changes to NSEC/NSEC3 parameters for the same zone were being processed at the same time. [RT #42770]

  • named could trigger an assertion when sending NOTIFY messages. [RT #44019]

  • Referencing a nonexistent zone in a response-policy statement could cause an assertion failure during configuration. [RT #43787]

  • rndc addzone could cause a crash when attempting to add a zone with a type other than master or slave. Such zones are now rejected. [RT #43665]

  • named could hang when encountering log file names with large apparent gaps in version number (for example, when files exist called "logfile.0", "logfile.1", and "logfile.1482954169"). This is now handled correctly. [RT #38688]

  • If a zone was updated while named was processing a query for nonexistent data, it could return out-of-sync NSEC3 records causing potential DNSSEC validation failure. [RT #43247]

Maintenance

  • The built-in root hints have been updated to include an IPv6 address (2001:500:12::d0d) for G.ROOT-SERVERS.NET.

Miscellaneous Notes

  • Authoritative server support for the EDNS Client Subnet option (ECS), introduced in BIND 9.11.0, was based on an early version of the specification, and is now known to have incompatibilities with other ECS implementations. It is also inefficient, requiring a separate view for each answer, and is unable to correct for overlapping subnets in the configuration. It is intended for testing purposes but is not recommended for for production use. This was not made sufficiently clear in the documentation at the time of release.

Notes for BIND 9.11.0

Security Fixes

  • It was possible to trigger a assertion when rendering a message using a specially crafted request. This flaw is disclosed in CVE-2016-2776. [RT #43139]

  • getrrsetbyname with a non absolute name could trigger an infinite recursion bug in lwresd and named with lwres configured if when combined with a search list entry the resulting name is too long. This flaw is disclosed in CVE-2016-2775. [RT #42694]

New Features

  • A new method of provisioning secondary servers called "Catalog Zones" has been added. This is an implementation of draft-muks-dnsop-dns-catalog-zones/ .

    A catalog zone is a regular DNS zone which contains a list of "member zones", along with the configuration options for each of those zones. When a server is configured to use a catalog zone, all the zones listed in the catalog zone are added to the local server as slave zones. When the catalog zone is updated (e.g., by adding or removing zones, or changing configuration options for existing zones) those changes will be put into effect. Since the catalog zone is itself a DNS zone, this means configuration changes can be propagated to slaves using the standard AXFR/IXFR update mechanism.

    This feature should be considered experimental. It currently supports only basic features; more advanced features such as ACLs and TSIG keys are not yet supported. Example catalog zone configurations can be found in the Chapter 9 of the BIND Administrator Reference Manual.

    Support for master entries with TSIG keys has been added to catalog zones, as well as support for allow-query and allow-transfer.

  • Added an isc.rndc Python module, which allows rndc commands to be sent from Python programs.

  • Added support for DynDB, a new interface for loading zone data from an external database, developed by Red Hat for the FreeIPA project. (Thanks in particular to Adam Tkac and Petr Spacek of Red Hat for the contribution.)

    Unlike the existing DLZ and SDB interfaces, which provide a limited subset of database functionality within BIND - translating DNS queries into real-time database lookups with relatively poor performance and with no ability to handle DNSSEC-signed data - DynDB is able to fully implement and extend the database API used natively by BIND.

    A DynDB module could pre-load data from an external data source, then serve it with the same performance and functionality as conventional BIND zones, and with the ability to take advantage of database features not available in BIND, such as multi-master replication.

  • Fetch quotas are now compiled in by default: they no longer require BIND to be configured with --enable-fetchlimit, as was the case when the feature was introduced in BIND 9.10.3.

    These quotas limit the queries that are sent by recursive resolvers to authoritative servers experiencing denial-of-service attacks. They can both reduce the harm done to authoritative servers and also avoid the resource exhaustion that can be experienced by recursive servers when they are being used as a vehicle for such an attack.

    • fetches-per-server limits the number of simultaneous queries that can be sent to any single authoritative server. The configured value is a starting point; it is automatically adjusted downward if the server is partially or completely non-responsive. The algorithm used to adjust the quota can be configured via the fetch-quota-params option.

    • fetches-per-zone limits the number of simultaneous queries that can be sent for names within a single domain. (Note: Unlike "fetches-per-server", this value is not self-tuning.)

    Statistics counters have also been added to track the number of queries affected by these quotas.

  • Added support for dnstap, a fast, flexible method for capturing and logging DNS traffic, developed by Robert Edmonds at Farsight Security, Inc., whose assistance is gratefully acknowledged.

    To enable dnstap at compile time, the fstrm and protobuf-c libraries must be available, and BIND must be configured with --enable-dnstap.

    A new utility dnstap-read has been added to allow dnstap data to be presented in a human-readable format.

    rndc dnstap -roll causes dnstap output files to be rolled like log files -- the most recent output file is renamed with a .0 suffix, the next most recent with .1, etc. (Note that this only works when dnstap output is being written to a file, not to a UNIX domain socket.) An optional numerical argument specifies how many backup log files to retain; if not specified or set to 0, there is no limit.

    rndc dnstap -reopen simply closes and reopens the dnstap output channel without renaming the output file.

    For more information on dnstap, see https://dnstap.info.

  • New statistics counters have been added to track traffic sizes, as specified in RSSAC002. Query and response message sizes are broken up into ranges of histogram buckets: TCP and UDP queries of size 0-15, 16-31, ..., 272-288, and 288+, and TCP and UDP responses of size 0-15, 16-31, ..., 4080-4095, and 4096+. These values can be accessed via the XML and JSON statistics channels at, for example, http://localhost:8888/xml/v3/traffic or http://localhost:8888/json/v1/traffic.

    Statistics for RSSAC02v3 traffic-volume, traffic-sizes and rcode-volume reporting are now collected.

  • A new DNSSEC key management utility, dnssec-keymgr, has been added. This tool is meant to run unattended (e.g., under cron). It reads a policy definition file (default /etc/dnssec-policy.conf) and creates or updates DNSSEC keys as necessary to ensure that a zone's keys match the defined policy for that zone. New keys are created whenever necessary to ensure rollovers occur correctly. Existing keys' timing metadata is adjusted as needed to set the correct rollover period, prepublication interval, etc. If the configured policy changes, keys are corrected automatically. See the dnssec-keymgr man page for full details.

    Note: dnssec-keymgr depends on Python and on the Python lex/yacc module, PLY. The other Python-based tools, dnssec-coverage and dnssec-checkds, have been refactored and updated as part of this work.

    dnssec-keymgr now takes a -r randomfile option.

    (Many thanks to Sebastin Castro for his assistance in developing this tool at the IETF 95 Hackathon in Buenos Aires, April 2016.)

  • The serial number of a dynamically updatable zone can now be set using rndc signing -serial number zonename. This is particularly useful with inline-signing zones that have been reset. Setting the serial number to a value larger than that on the slaves will trigger an AXFR-style transfer.

  • When answering recursive queries, SERVFAIL responses can now be cached by the server for a limited time; subsequent queries for the same query name and type will return another SERVFAIL until the cache times out. This reduces the frequency of retries when a query is persistently failing, which can be a burden on recursive servers. The SERVFAIL cache timeout is controlled by servfail-ttl, which defaults to 1 second and has an upper limit of 30.

  • The new rndc nta command can now be used to set a "negative trust anchor" (NTA), disabling DNSSEC validation for a specific domain; this can be used when responses from a domain are known to be failing validation due to administrative error rather than because of a spoofing attack. NTAs are strictly temporary; by default they expire after one hour, but can be configured to last up to one week. The default NTA lifetime can be changed by setting the nta-lifetime in named.conf. When added, NTAs are stored in a file (viewname.nta) in order to persist across restarts of the named server.

  • The EDNS Client Subnet (ECS) option is now supported for authoritative servers; if a query contains an ECS option then ACLs containing geoip or ecs elements can match against the address encoded in the option. This can be used to select a view for a query, so that different answers can be provided depending on the client network.

  • The EDNS EXPIRE option has been implemented on the client side, allowing a slave server to set the expiration timer correctly when transferring zone data from another slave server.

  • A new masterfile-style zone option controls the formatting of text zone files: When set to full, the zone file will dumped in single-line-per-record format.

  • dig +ednsopt can now be used to set arbitrary EDNS options in DNS requests.

  • dig +ednsflags can now be used to set yet-to-be-defined EDNS flags in DNS requests.

  • dig +[no]ednsnegotiation can now be used enable / disable EDNS version negotiation.

  • dig +header-only can now be used to send queries without a question section.

  • dig +ttlunits causes dig to print TTL values with time-unit suffixes: w, d, h, m, s for weeks, days, hours, minutes, and seconds.

  • dig +zflag can be used to set the last unassigned DNS header flag bit. This bit is normally zero.

  • dig +dscp=value can now be used to set the DSCP code point in outgoing query packets.

  • dig +mapped can now be used to determine if mapped IPv4 addresses can be used.

  • nslookup will now look up IPv6 as well as IPv4 addresses by default. [RT #40420]

  • serial-update-method can now be set to date. On update, the serial number will be set to the current date in YYYYMMDDNN format.

  • dnssec-signzone -N date also sets the serial number to YYYYMMDDNN.

  • named -L filename causes named to send log messages to the specified file by default instead of to the system log.

  • The rate limiter configured by the serial-query-rate option no longer covers NOTIFY messages; those are now separately controlled by notify-rate and startup-notify-rate (the latter of which controls the rate of NOTIFY messages sent when the server is first started up or reconfigured).

  • The default number of tasks and client objects available for serving lightweight resolver queries have been increased, and are now configurable via the new lwres-tasks and lwres-clients options in named.conf. [RT #35857]

  • Log output to files can now be buffered by specifying buffered yes; when creating a channel.

  • delv +tcp will exclusively use TCP when sending queries.

  • named will now check to see whether other name server processes are running before starting up. This is implemented in two ways: 1) by refusing to start if the configured network interfaces all return "address in use", and 2) by attempting to acquire a lock on a file specified by the lock-file option or the -X command line option. The default lock file is /var/run/named/named.lock. Specifying none will disable the lock file check.

  • rndc delzone can now be applied to zones which were configured in named.conf; it is no longer restricted to zones which were added by rndc addzone. (Note, however, that this does not edit named.conf; the zone must be removed from the configuration or it will return when named is restarted or reloaded.)

  • rndc modzone can be used to reconfigure a zone, using similar syntax to rndc addzone.

  • rndc showzone displays the current configuration for a specified zone.

  • When BIND is built with the lmdb library (Lightning Memory-Mapped Database), named will store the configuration information for zones that are added via rndc addzone in a database, rather than in a flat "NZF" file. This dramatically improves performance for rndc delzone and rndc modzone: deleting or changing the contents of a database is much faster than rewriting a text file.

    On startup, if named finds an existing NZF file, it will automatically convert it to the new NZD database format.

    To view the contents of an NZD, or to convert an NZD back to an NZF file (for example, to revert back to an earlier version of BIND which did not support the NZD format), use the new command named-nzd2nzf [RT #39837]

  • Added server-side support for pipelined TCP queries. Clients may continue sending queries via TCP while previous queries are processed in parallel. Responses are sent when they are ready, not necessarily in the order in which the queries were received.

    To revert to the former behavior for a particular client address or range of addresses, specify the address prefix in the "keep-response-order" option. To revert to the former behavior for all clients, use "keep-response-order { any; };".

  • The new mdig command is a version of dig that sends multiple pipelined queries and then waits for responses, instead of sending one query and waiting the response before sending the next. [RT #38261]

  • To enable better monitoring and troubleshooting of RFC 5011 trust anchor management, the new rndc managed-keys can be used to check status of trust anchors or to force keys to be refreshed. Also, the managed-keys data file now has easier-to-read comments. [RT #38458]

  • An --enable-querytrace configure switch is now available to enable very verbose query trace logging. This option can only be set at compile time. This option has a negative performance impact and should be used only for debugging. [RT #37520]

  • A new tcp-only option can be specified in server statements to force named to connect to the specified server via TCP. [RT #37800]

  • The nxdomain-redirect option specifies a DNS namespace to use for NXDOMAIN redirection. When a recursive lookup returns NXDOMAIN, a second lookup is initiated with the specified name appended to the query name. This allows NXDOMAIN redirection data to be supplied by multiple zones configured on the server, or by recursive queries to other servers. (The older method, using a single type redirect zone, has better average performance but is less flexible.) [RT #37989]

  • The following types have been implemented: CSYNC, NINFO, RKEY, SINK, TA, TALINK.

  • A new message-compression option can be used to specify whether or not to use name compression when answering queries. Setting this to no results in larger responses, but reduces CPU consumption and may improve throughput. The default is yes.

  • A read-only option is now available in the controls statement to grant non-destructive control channel access. In such cases, a restricted set of rndc commands are allowed, which can report information from named, but cannot reconfigure or stop the server. By default, the control channel access is not restricted to these read-only operations. [RT #40498]

  • When loading a signed zone, named will now check whether an RRSIG's inception time is in the future, and if so, it will regenerate the RRSIG immediately. This helps when a system's clock needs to be reset backwards.

  • The new minimal-any option reduces the size of answers to UDP queries for type ANY by implementing one of the strategies in "draft-ietf-dnsop-refuse-any": returning a single arbitrarily-selected RRset that matches the query name rather than returning all of the matching RRsets. Thanks to Tony Finch for the contribution. [RT #41615]

  • named now provides feedback to the owners of zones which have trust anchors configured (trusted-keys, managed-keys, dnssec-validation auto; and dnssec-lookaside auto;) by sending a daily query which encodes the keyids of the configured trust anchors for the zone. This is controlled by trust-anchor-telemetry and defaults to yes.

Feature Changes

  • The logging format used for querylog has been altered. It now includes an additional field indicating the address in memory of the client object processing the query.

    The ISC DNSSEC Lookaside Validation (DLV) service is scheduled to be disabled in 2017. A warning is now logged when named is configured to use this service, either explicitly or via dnssec-lookaside auto;. [RT #42207]

  • The timers returned by the statistics channel (indicating current time, server boot time, and most recent reconfiguration time) are now reported with millisecond accuracy. [RT #40082]

  • Updated the compiled-in addresses for H.ROOT-SERVERS.NET and L.ROOT-SERVERS.NET.

  • ACLs containing geoip asnum elements were not correctly matched unless the full organization name was specified in the ACL (as in geoip asnum "AS1234 Example, Inc.";). They can now match against the AS number alone (as in geoip asnum "AS1234";).

  • When using native PKCS#11 cryptography (i.e., configure --enable-native-pkcs11) HSM PINs of up to 256 characters can now be used.

  • NXDOMAIN responses to queries of type DS are now cached separately from those for other types. This helps when using "grafted" zones of type forward, for which the parent zone does not contain a delegation, such as local top-level domains. Previously a query of type DS for such a zone could cause the zone apex to be cached as NXDOMAIN, blocking all subsequent queries. (Note: This change is only helpful when DNSSEC validation is not enabled. "Grafted" zones without a delegation in the parent are not a recommended configuration.)

  • Update forwarding performance has been improved by allowing a single TCP connection to be shared between multiple updates.

  • By default, nsupdate will now check the correctness of hostnames when adding records of type A, AAAA, MX, SOA, NS, SRV or PTR. This behavior can be disabled with check-names no.

  • Added support for OPENPGPKEY type.

  • The names of the files used to store managed keys and added zones for each view are no longer based on the SHA256 hash of the view name, except when this is necessary because the view name contains characters that would be incompatible with use as a file name. For views whose names do not contain forward slashes ('/'), backslashes ('\'), or capital letters - which could potentially cause namespace collision problems on case-insensitive filesystems - files will now be named after the view (for example, internal.mkeys or external.nzf). However, to ensure consistent behavior when upgrading, if a file using the old name format is found to exist, it will continue to be used.

  • "rndc" can now return text output of arbitrary size to the caller. (Prior to this, certain commands such as "rndc tsig-list" and "rndc zonestatus" could return truncated output.)

  • Errors reported when running rndc addzone (e.g., when a zone file cannot be loaded) have been clarified to make it easier to diagnose problems.

  • When encountering an authoritative name server whose name is an alias pointing to another name, the resolver treats this as an error and skips to the next server. Previously this happened silently; now the error will be logged to the newly-created "cname" log category.

  • If named is not configured to validate answers, then allow fallback to plain DNS on timeout even when we know the server supports EDNS. This will allow the server to potentially resolve signed queries when TCP is being blocked.

  • Large inline-signing changes should be less disruptive. Signature generation is now done incrementally; the number of signatures to be generated in each quantum is controlled by "sig-signing-signatures number;". [RT #37927]

  • The experimental SIT option (code point 65001) of BIND 9.10.0 through BIND 9.10.2 has been replaced with the COOKIE option (code point 10). It is no longer experimental, and is sent by default, by both named and dig.

    The SIT-related named.conf options have been marked as obsolete, and are otherwise ignored.

  • When dig receives a truncated (TC=1) response or a BADCOOKIE response code from a server, it will automatically retry the query using the server COOKIE that was returned by the server in its initial response. [RT #39047]

  • Retrieving the local port range from net.ipv4.ip_local_port_range on Linux is now supported.

  • A new nsip-wait-recurse directive has been added to RPZ, specifying whether to look up unknown name server IP addresses and wait for a response before applying RPZ-NSIP rules. The default is yes. If set to no, named will only apply RPZ-NSIP rules to servers whose addresses are already cached. The addresses will be looked up in the background so the rule can be applied on subsequent queries. This improves performance when the cache is cold, at the cost of temporary imprecision in applying policy directives. [RT #35009]

  • Within the response-policy option, it is now possible to configure RPZ rewrite logging on a per-zone basis using the log clause.

  • The default preferred glue is now the address type of the transport the query was received over.

  • On machines with 2 or more processors (CPU), the default value for the number of UDP listeners has been changed to the number of detected processors minus one.

  • Zone transfers now use smaller message sizes to improve message compression. This results in reduced network usage.

  • Added support for the AVC resource record type (Application Visibility and Control).

    Changed rndc reconfig behavior so that newly added zones are loaded asynchronously and the loading does not block the server.

  • minimal-responses now takes two new arguments: no-auth suppresses populating the authority section but not the additional section; no-auth-recursive does the same but only when answering recursive queries.

  • At server startup time, the queues for processing notify and zone refresh queries are now processed in LIFO rather than FIFO order, to speed up loading of newly added zones. [RT #42825]

  • When answering queries of type MX or SRV, TLSA records for the target name are now included in the additional section to speed up DANE processing. [RT #42894]

  • named can now use the TCP Fast Open mechanism on the server side, if supported by the local operating system. [RT #42866]

Bug Fixes

  • Fixed a crash when calling rndc stats on some Windows builds: some Visual Studio compilers generate code that crashes when the "%z" printf() format specifier is used. [RT #42380]

  • Windows installs were failing due to triggering UAC without the installation binary being signed.

  • A change in the internal binary representation of the RBT database node structure enabled a race condition to occur (especially when BIND was built with certain compilers or optimizer settings), leading to inconsistent database state which caused random assertion failures. [RT #42380]

End of Life

BIND 9.11 (Extended Support Version) will be supported until at least December, 2021.

See https://kb.isc.org/docs/aa-00896 for details of ISC's software support policy.

Thank You

Thank you to everyone who assisted us in making this release possible.

BIND 9.11.36 (Extended Support Version)

man.delv.html000064400000056400152530214170007143 0ustar00 delv

Name

delv — DNS lookup and validation utility

Synopsis

delv [@server] [[-4] | [-6]] [-a anchor-file] [-b address] [-c class] [-d level] [-i] [-m] [-p port#] [-q name] [-t type] [-x addr] [name] [type] [class] [queryopt...]

delv [-h]

delv [-v]

delv [queryopt...] [query...]

DESCRIPTION

delv is a tool for sending DNS queries and validating the results, using the same internal resolver and validator logic as named.

delv will send to a specified name server all queries needed to fetch and validate the requested data; this includes the original requested query, subsequent queries to follow CNAME or DNAME chains, and queries for DNSKEY, DS and DLV records to establish a chain of trust for DNSSEC validation. It does not perform iterative resolution, but simulates the behavior of a name server configured for DNSSEC validating and forwarding.

By default, responses are validated using built-in DNSSEC trust anchor for the root zone ("."). Records returned by delv are either fully validated or were not signed. If validation fails, an explanation of the failure is included in the output; the validation process can be traced in detail. Because delv does not rely on an external server to carry out validation, it can be used to check the validity of DNS responses in environments where local name servers may not be trustworthy.

Unless it is told to query a specific name server, delv will try each of the servers listed in /etc/resolv.conf. If no usable server addresses are found, delv will send queries to the localhost addresses (127.0.0.1 for IPv4, ::1 for IPv6).

When no command line arguments or options are given, delv will perform an NS query for "." (the root zone).

SIMPLE USAGE

A typical invocation of delv looks like:

 delv @server name type 

where:

server

is the name or IP address of the name server to query. This can be an IPv4 address in dotted-decimal notation or an IPv6 address in colon-delimited notation. When the supplied server argument is a hostname, delv resolves that name before querying that name server (note, however, that this initial lookup is not validated by DNSSEC).

If no server argument is provided, delv consults /etc/resolv.conf; if an address is found there, it queries the name server at that address. If either of the -4 or -6 options are in use, then only addresses for the corresponding transport will be tried. If no usable addresses are found, delv will send queries to the localhost addresses (127.0.0.1 for IPv4, ::1 for IPv6).

name

is the domain name to be looked up.

type

indicates what type of query is required — ANY, A, MX, etc. type can be any valid query type. If no type argument is supplied, delv will perform a lookup for an A record.

OPTIONS

-a anchor-file

Specifies a file from which to read DNSSEC trust anchors. The default is /etc/bind.keys, which is included with BIND 9 and contains one or more trust anchors for the root zone (".").

Keys that do not match the root zone name are ignored. An alternate key name can be specified using the +root=NAME options. DNSSEC Lookaside Validation can also be turned on by using the +dlv=NAME to specify the name of a zone containing DLV records.

Note: When reading the trust anchor file, delv treats managed-keys statements and trusted-keys statements identically. That is, for a managed key, it is the initial key that is trusted; RFC 5011 key management is not supported. delv will not consult the managed-keys database maintained by named. This means that if either of the keys in /etc/bind.keys is revoked and rolled over, it will be necessary to update /etc/bind.keys to use DNSSEC validation in delv.

-b address

Sets the source IP address of the query to address. This must be a valid address on one of the host's network interfaces or "0.0.0.0" or "::". An optional source port may be specified by appending "#<port>"

-c class

Sets the query class for the requested data. Currently, only class "IN" is supported in delv and any other value is ignored.

-d level

Set the systemwide debug level to level. The allowed range is from 0 to 99. The default is 0 (no debugging). Debugging traces from delv become more verbose as the debug level increases. See the +mtrace, +rtrace, and +vtrace options below for additional debugging details.

-h

Display the delv help usage output and exit.

-i

Insecure mode. This disables internal DNSSEC validation. (Note, however, this does not set the CD bit on upstream queries. If the server being queried is performing DNSSEC validation, then it will not return invalid data; this can cause delv to time out. When it is necessary to examine invalid data to debug a DNSSEC problem, use dig +cd.)

-m

Enables memory usage debugging.

-p port#

Specifies a destination port to use for queries instead of the standard DNS port number 53. This option would be used with a name server that has been configured to listen for queries on a non-standard port number.

-q name

Sets the query name to name. While the query name can be specified without using the -q, it is sometimes necessary to disambiguate names from types or classes (for example, when looking up the name "ns", which could be misinterpreted as the type NS, or "ch", which could be misinterpreted as class CH).

-t type

Sets the query type to type, which can be any valid query type supported in BIND 9 except for zone transfer types AXFR and IXFR. As with -q, this is useful to distinguish query name type or class when they are ambiguous. it is sometimes necessary to disambiguate names from types.

The default query type is "A", unless the -x option is supplied to indicate a reverse lookup, in which case it is "PTR".

-v

Print the delv version and exit.

-x addr

Performs a reverse lookup, mapping an addresses to a name. addr is an IPv4 address in dotted-decimal notation, or a colon-delimited IPv6 address. When -x is used, there is no need to provide the name or type arguments. delv automatically performs a lookup for a name like 11.12.13.10.in-addr.arpa and sets the query type to PTR. IPv6 addresses are looked up using nibble format under the IP6.ARPA domain.

-4

Forces delv to only use IPv4.

-6

Forces delv to only use IPv6.

QUERY OPTIONS

delv provides a number of query options which affect the way results are displayed, and in some cases the way lookups are performed.

Each query option is identified by a keyword preceded by a plus sign (+). Some keywords set or reset an option. These may be preceded by the string no to negate the meaning of that keyword. Other keywords assign values to options like the timeout interval. They have the form +keyword=value. The query options are:

+[no]cdflag

Controls whether to set the CD (checking disabled) bit in queries sent by delv. This may be useful when troubleshooting DNSSEC problems from behind a validating resolver. A validating resolver will block invalid responses, making it difficult to retrieve them for analysis. Setting the CD flag on queries will cause the resolver to return invalid responses, which delv can then validate internally and report the errors in detail.

+[no]class

Controls whether to display the CLASS when printing a record. The default is to display the CLASS.

+[no]ttl

Controls whether to display the TTL when printing a record. The default is to display the TTL.

+[no]rtrace

Toggle resolver fetch logging. This reports the name and type of each query sent by delv in the process of carrying out the resolution and validation process: this includes including the original query and all subsequent queries to follow CNAMEs and to establish a chain of trust for DNSSEC validation.

This is equivalent to setting the debug level to 1 in the "resolver" logging category. Setting the systemwide debug level to 1 using the -d option will product the same output (but will affect other logging categories as well).

+[no]mtrace

Toggle message logging. This produces a detailed dump of the responses received by delv in the process of carrying out the resolution and validation process.

This is equivalent to setting the debug level to 10 for the "packets" module of the "resolver" logging category. Setting the systemwide debug level to 10 using the -d option will produce the same output (but will affect other logging categories as well).

+[no]vtrace

Toggle validation logging. This shows the internal process of the validator as it determines whether an answer is validly signed, unsigned, or invalid.

This is equivalent to setting the debug level to 3 for the "validator" module of the "dnssec" logging category. Setting the systemwide debug level to 3 using the -d option will produce the same output (but will affect other logging categories as well).

+[no]short

Provide a terse answer. The default is to print the answer in a verbose form.

+[no]comments

Toggle the display of comment lines in the output. The default is to print comments.

+[no]rrcomments

Toggle the display of per-record comments in the output (for example, human-readable key information about DNSKEY records). The default is to print per-record comments.

+[no]crypto

Toggle the display of cryptographic fields in DNSSEC records. The contents of these field are unnecessary to debug most DNSSEC validation failures and removing them makes it easier to see the common failures. The default is to display the fields. When omitted they are replaced by the string "[omitted]" or in the DNSKEY case the key id is displayed as the replacement, e.g. "[ key id = value ]".

+[no]trust

Controls whether to display the trust level when printing a record. The default is to display the trust level.

+[no]split[=W]

Split long hex- or base64-formatted fields in resource records into chunks of W characters (where W is rounded up to the nearest multiple of 4). +nosplit or +split=0 causes fields not to be split at all. The default is 56 characters, or 44 characters when multiline mode is active.

+[no]all

Set or clear the display options +[no]comments, +[no]rrcomments, and +[no]trust as a group.

+[no]multiline

Print long records (such as RRSIG, DNSKEY, and SOA records) in a verbose multi-line format with human-readable comments. The default is to print each record on a single line, to facilitate machine parsing of the delv output.

+[no]dnssec

Indicates whether to display RRSIG records in the delv output. The default is to do so. Note that (unlike in dig) this does not control whether to request DNSSEC records or whether to validate them. DNSSEC records are always requested, and validation will always occur unless suppressed by the use of -i or +noroot and +nodlv.

+[no]root[=ROOT]

Indicates whether to perform conventional (non-lookaside) DNSSEC validation, and if so, specifies the name of a trust anchor. The default is to validate using a trust anchor of "." (the root zone), for which there is a built-in key. If specifying a different trust anchor, then -a must be used to specify a file containing the key.

+[no]dlv[=DLV]

Indicates whether to perform DNSSEC lookaside validation, and if so, specifies the name of the DLV trust anchor. The -a option must also be used to specify a file containing the DLV key.

+[no]tcp

Controls whether to use TCP when sending queries. The default is to use UDP unless a truncated response has been received.

+[no]unknownformat

Print all RDATA in unknown RR type presentation format (RFC 3597). The default is to print RDATA for known types in the type's presentation format.

FILES

/etc/bind.keys

/etc/resolv.conf

SEE ALSO

dig(1), named(8), RFC4034, RFC4035, RFC4431, RFC5074, RFC5155.

BIND 9.11.36 (Extended Support Version)

man.lwresd.html000064400000027422152530214170007513 0ustar00 lwresd

Name

lwresd — lightweight resolver daemon

Synopsis

lwresd [-c config-file] [-C config-file] [-d debug-level] [-f] [-g] [-i pid-file] [-m flag] [-n #cpus] [-P port] [-p port] [-s] [-t directory] [-u user] [-v] [[-4] | [-6]]

DESCRIPTION

lwresd is the daemon providing name lookup services to clients that use the BIND 9 lightweight resolver library. It is essentially a stripped-down, caching-only name server that answers queries using the BIND 9 lightweight resolver protocol rather than the DNS protocol.

lwresd listens for resolver queries on a UDP port on the IPv4 loopback interface, 127.0.0.1. This means that lwresd can only be used by processes running on the local machine. By default, UDP port number 921 is used for lightweight resolver requests and responses.

Incoming lightweight resolver requests are decoded by the server which then resolves them using the DNS protocol. When the DNS lookup completes, lwresd encodes the answers in the lightweight resolver format and returns them to the client that made the request.

If /etc/resolv.conf contains any nameserver entries, lwresd sends recursive DNS queries to those servers. This is similar to the use of forwarders in a caching name server. If no nameserver entries are present, or if forwarding fails, lwresd resolves the queries autonomously starting at the root name servers, using a built-in list of root server hints.

OPTIONS

-4

Use IPv4 only even if the host machine is capable of IPv6. -4 and -6 are mutually exclusive.

-6

Use IPv6 only even if the host machine is capable of IPv4. -4 and -6 are mutually exclusive.

-c config-file

Use config-file as the configuration file instead of the default, /etc/lwresd.conf. -c can not be used with -C.

-C config-file

Use config-file as the configuration file instead of the default, /etc/resolv.conf. -C can not be used with -c.

-d debug-level

Set the daemon's debug level to debug-level. Debugging traces from lwresd become more verbose as the debug level increases.

-f

Run the server in the foreground (i.e. do not daemonize).

-g

Run the server in the foreground and force all logging to stderr.

-i pid-file

Use pid-file as the PID file instead of the default, /var/run/lwresd/lwresd.pid.

-m flag

Turn on memory usage debugging flags. Possible flags are usage, trace, record, size, and mctx. These correspond to the ISC_MEM_DEBUGXXXX flags described in <isc/mem.h>.

-n #cpus

Create #cpus worker threads to take advantage of multiple CPUs. If not specified, lwresd will try to determine the number of CPUs present and create one thread per CPU. If it is unable to determine the number of CPUs, a single worker thread will be created.

-P port

Listen for lightweight resolver queries on port port. If not specified, the default is port 921.

-p port

Send DNS lookups to port port. If not specified, the default is port 53. This provides a way of testing the lightweight resolver daemon with a name server that listens for queries on a non-standard port number.

-s

Write memory usage statistics to stdout on exit.

Note

This option is mainly of interest to BIND 9 developers and may be removed or changed in a future release.

-t directory

Chroot to directory after processing the command line arguments, but before reading the configuration file.

Warning

This option should be used in conjunction with the -u option, as chrooting a process running as root doesn't enhance security on most systems; the way chroot(2) is defined allows a process with root privileges to escape a chroot jail.

-u user

Setuid to user after completing privileged operations, such as creating sockets that listen on privileged ports.

-v

Report the version number and exit.

FILES

/etc/resolv.conf

The default configuration file.

/var/run/lwresd.pid

The default process-id file.

SEE ALSO

named(8), lwres(3), resolver(5).

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch13.html000064400000023253152530214170007174 0ustar00 Manual pages

Manual pages


Table of Contents

arpaname — translate IP addresses to the corresponding ARPA names
ddns-confgen — ddns key generation tool
delv — DNS lookup and validation utility
dig — DNS lookup utility
dnssec-checkds — DNSSEC delegation consistency checking tool
dnssec-coverage — checks future DNSKEY coverage for a zone
dnssec-dsfromkey — DNSSEC DS RR generation tool
dnssec-importkey — import DNSKEY records from external systems so they can be managed
dnssec-keyfromlabel — DNSSEC key generation tool
dnssec-keygen — DNSSEC key generation tool
dnssec-keymgr — Ensures correct DNSKEY coverage for a zone based on a defined policy
dnssec-revoke — set the REVOKED bit on a DNSSEC key
dnssec-settime — set the key timing metadata for a DNSSEC key
dnssec-signzone — DNSSEC zone signing tool
dnssec-verify — DNSSEC zone verification tool
dnstap-read — print dnstap data in human-readable form
genrandom — generate a file containing random data
host — DNS lookup utility
isc-hmac-fixup — fixes HMAC keys generated by older versions of BIND
lwresd — lightweight resolver daemon
mdig — DNS pipelined lookup utility
named-checkconf — named configuration file syntax checking tool
named-checkzone — zone file validity checking or converting tool
named-journalprint — print zone journal in human-readable form
named-nzd2nzf — Convert an NZD database to NZF text format
named-rrchecker — syntax checker for individual DNS resource records
named.conf — configuration file for named
named — Internet domain name server
nsec3hash — generate NSEC3 hash
nslookup — query Internet name servers interactively
nsupdate — Dynamic DNS update utility
pkcs11-destroy — destroy PKCS#11 objects
pkcs11-keygen — generate keys on a PKCS#11 device
pkcs11-list — list PKCS#11 objects
pkcs11-tokens — list PKCS#11 available tokens
rndc-confgen — rndc key generation tool
rndc.conf — rndc configuration file
rndc — name server control utility

BIND 9.11.36 (Extended Support Version)

man.dnssec-coverage.html000064400000025606152530214170011265 0ustar00 dnssec-coverage

Name

dnssec-coverage — checks future DNSKEY coverage for a zone

Synopsis

dnssec-coverage [-K directory] [-l length] [-f file] [-d DNSKEY TTL] [-m max TTL] [-r interval] [-c compilezone path] [-k] [-z] [zone...]

DESCRIPTION

dnssec-coverage verifies that the DNSSEC keys for a given zone or a set of zones have timing metadata set properly to ensure no future lapses in DNSSEC coverage.

If zone is specified, then keys found in the key repository matching that zone are scanned, and an ordered list is generated of the events scheduled for that key (i.e., publication, activation, inactivation, deletion). The list of events is walked in order of occurrence. Warnings are generated if any event is scheduled which could cause the zone to enter a state in which validation failures might occur: for example, if the number of published or active keys for a given algorithm drops to zero, or if a key is deleted from the zone too soon after a new key is rolled, and cached data signed by the prior key has not had time to expire from resolver caches.

If zone is not specified, then all keys in the key repository will be scanned, and all zones for which there are keys will be analyzed. (Note: This method of reporting is only accurate if all the zones that have keys in a given repository share the same TTL parameters.)

OPTIONS

-K directory

Sets the directory in which keys can be found. Defaults to the current working directory.

-f file

If a file is specified, then the zone is read from that file; the largest TTL and the DNSKEY TTL are determined directly from the zone data, and the -m and -d options do not need to be specified on the command line.

-l duration

The length of time to check for DNSSEC coverage. Key events scheduled further into the future than duration will be ignored, and assumed to be correct.

The value of duration can be set in seconds, or in larger units of time by adding a suffix: 'mi' for minutes, 'h' for hours, 'd' for days, 'w' for weeks, 'mo' for months, 'y' for years.

-m maximum TTL

Sets the value to be used as the maximum TTL for the zone or zones being analyzed when determining whether there is a possibility of validation failure. When a zone-signing key is deactivated, there must be enough time for the record in the zone with the longest TTL to have expired from resolver caches before that key can be purged from the DNSKEY RRset. If that condition does not apply, a warning will be generated.

The length of the TTL can be set in seconds, or in larger units of time by adding a suffix: 'mi' for minutes, 'h' for hours, 'd' for days, 'w' for weeks, 'mo' for months, 'y' for years.

This option is not necessary if the -f has been used to specify a zone file. If -f has been specified, this option may still be used; it will override the value found in the file.

If this option is not used and the maximum TTL cannot be retrieved from a zone file, a warning is generated and a default value of 1 week is used.

-d DNSKEY TTL

Sets the value to be used as the DNSKEY TTL for the zone or zones being analyzed when determining whether there is a possibility of validation failure. When a key is rolled (that is, replaced with a new key), there must be enough time for the old DNSKEY RRset to have expired from resolver caches before the new key is activated and begins generating signatures. If that condition does not apply, a warning will be generated.

The length of the TTL can be set in seconds, or in larger units of time by adding a suffix: 'mi' for minutes, 'h' for hours, 'd' for days, 'w' for weeks, 'mo' for months, 'y' for years.

This option is not necessary if -f has been used to specify a zone file from which the TTL of the DNSKEY RRset can be read, or if a default key TTL was set using ith the -L to dnssec-keygen. If either of those is true, this option may still be used; it will override the values found in the zone file or the key file.

If this option is not used and the key TTL cannot be retrieved from the zone file or the key file, then a warning is generated and a default value of 1 day is used.

-r resign interval

Sets the value to be used as the resign interval for the zone or zones being analyzed when determining whether there is a possibility of validation failure. This value defaults to 22.5 days, which is also the default in named. However, if it has been changed by the sig-validity-interval option in named.conf, then it should also be changed here.

The length of the interval can be set in seconds, or in larger units of time by adding a suffix: 'mi' for minutes, 'h' for hours, 'd' for days, 'w' for weeks, 'mo' for months, 'y' for years.

-k

Only check KSK coverage; ignore ZSK events. Cannot be used with -z.

-z

Only check ZSK coverage; ignore KSK events. Cannot be used with -k.

-c compilezone path

Specifies a path to a named-compilezone binary. Used for testing.

SEE ALSO

dnssec-checkds(8), dnssec-dsfromkey(8), dnssec-keygen(8), dnssec-signzone(8)

BIND 9.11.36 (Extended Support Version)

man.pkcs11-list.html000064400000012257152530214170010266 0ustar00 pkcs11-list

Name

pkcs11-list — list PKCS#11 objects

Synopsis

pkcs11-list [-P] [-m module] [-s slot] [-i ID] [-l label] [-p PIN]

DESCRIPTION

pkcs11-list lists the PKCS#11 objects with ID or label or by default all objects. The object class, label, and ID are displayed for all keys. For private or secret keys, the extractability attribute is also displayed, as either true, false, or never.

ARGUMENTS

-P

List only the public objects. (Note that on some PKCS#11 devices, all objects are private.)

-m module

Specify the PKCS#11 provider module. This must be the full path to a shared library object implementing the PKCS#11 API for the device.

-s slot

Open the session with the given PKCS#11 slot. The default is slot 0.

-i ID

List only key objects with the given object ID.

-l label

List only key objects with the given label.

-p PIN

Specify the PIN for the device. If no PIN is provided on the command line, pkcs11-list will prompt for it.

SEE ALSO

pkcs11-destroy(8), pkcs11-keygen(8), pkcs11-tokens(8)

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch10.html000064400000015757152530214170007203 0ustar00 AppendixB.A Brief History of the DNS and BIND

A Brief History of the DNS and BIND

Although the Domain Name System "officially" began in 1984 with the publication of RFC 920, the core of the new system was described in 1983 in RFCs 882 and 883. From 1984 to 1987, the ARPAnet (the precursor to today's Internet) became a testbed of experimentation for developing the new naming/addressing scheme in a rapidly expanding, operational network environment. New RFCs were written and published in 1987 that modified the original documents to incorporate improvements based on the working model. RFC 1034, "Domain Names-Concepts and Facilities," and RFC 1035, "Domain Names-Implementation and Specification," were published and became the standards upon which all DNS implementations are built.

The first working domain name server, called "Jeeves," was written in 1983-84 by Paul Mockapetris for operation on DEC Tops-20 machines located at the University of Southern California's Information Sciences Institute (USC-ISI) and SRI International's Network Information Center (SRI-NIC). A DNS server for Unix machines, the Berkeley Internet Name Domain (BIND) package, was written soon after by a group of graduate students at the University of California at Berkeley under a grant from the US Defense Advanced Research Projects Administration (DARPA).

Versions of BIND through 4.8.3 were maintained by the Computer Systems Research Group (CSRG) at UC Berkeley. Douglas Terry, Mark Painter, David Riggle, and Songnian Zhou made up the initial BIND project team. After that, additional work on the software package was done by Ralph Campbell. Kevin Dunlap, a Digital Equipment Corporation employee on loan to the CSRG, worked on BIND for 2 years, from 1985 to 1987. Many other people also contributed to BIND development during that time: Doug Kingston, Craig Partridge, Smoot Carl-Mitchell, Mike Muuss, Jim Bloom and Mike Schwartz. BIND maintenance was subsequently handled by Mike Karels and ivind Kure.

BIND versions 4.9 and 4.9.1 were released by Digital Equipment Corporation (which became Compaq Computer Corporation and eventually merged with Hewlett-Packard). Paul Vixie, then a DEC employee, became BIND's primary caretaker. He was assisted by Phil Almquist, Robert Elz, Alan Barrett, Paul Albitz, Bryan Beecher, Andrew Partan, Andy Cherenson, Tom Limoncelli, Berthold Paffrath, Fuat Baran, Anant Kumar, Art Harkin, Win Treese, Don Lewis, Christophe Wolfhugel, and others.

In 1994, BIND version 4.9.2 was sponsored by Vixie Enterprises. Paul Vixie became BIND's principal architect/programmer.

BIND versions from 4.9.3 onward have been developed and maintained by Internet Systems Consortium and its predecessor, the Internet Software Consortium, with support provided by ISC's sponsors.

As co-architects/programmers, Bob Halley and Paul Vixie released the first production-ready version of BIND version 8 in May 1997.

BIND version 9 was released in September 2000 and is a major rewrite of nearly all aspects of the underlying BIND architecture.

BIND versions 4 and 8 are officially deprecated. No additional development is done on BIND version 4 or BIND version 8.

BIND development work is made possible today by the sponsorship of corporations who purchase professional support services from ISC (https://www.isc.org/contact/) and/or donate to our mission, and by the tireless efforts of numerous individuals.

BIND 9.11.36 (Extended Support Version)

man.dnssec-verify.html000064400000016206152530214170010772 0ustar00 dnssec-verify

Name

dnssec-verify — DNSSEC zone verification tool

Synopsis

dnssec-verify [-c class] [-E engine] [-I input-format] [-o origin] [-v level] [-V] [-x] [-z] {zonefile}

DESCRIPTION

dnssec-verify verifies that a zone is fully signed for each algorithm found in the DNSKEY RRset for the zone, and that the NSEC / NSEC3 chains are complete.

OPTIONS

-c class

Specifies the DNS class of the zone.

-E engine

Specifies the cryptographic hardware to use, when applicable.

When BIND is built with OpenSSL PKCS#11 support, this defaults to the string "pkcs11", which identifies an OpenSSL engine that can drive a cryptographic accelerator or hardware service module. When BIND is built with native PKCS#11 cryptography (--enable-native-pkcs11), it defaults to the path of the PKCS#11 provider library specified via "--with-pkcs11".

-I input-format

The format of the input zone file. Possible formats are "text" (default) and "raw". This option is primarily intended to be used for dynamic signed zones so that the dumped zone file in a non-text format containing updates can be verified independently. The use of this option does not make much sense for non-dynamic zones.

-o origin

The zone origin. If not specified, the name of the zone file is assumed to be the origin.

-v level

Sets the debugging level.

-V

Prints version information.

-x

Only verify that the DNSKEY RRset is signed with key-signing keys. Without this flag, it is assumed that the DNSKEY RRset will be signed by all active keys. When this flag is set, it will not be an error if the DNSKEY RRset is not signed by zone-signing keys. This corresponds to the -x option in dnssec-signzone.

-z

Ignore the KSK flag on the keys when determining whether the zone if correctly signed. Without this flag it is assumed that there will be a non-revoked, self-signed DNSKEY with the KSK flag set for each algorithm and that RRsets other than DNSKEY RRset will be signed with a different DNSKEY without the KSK flag set.

With this flag set, we only require that for each algorithm, there will be at least one non-revoked, self-signed DNSKEY, regardless of the KSK flag state, and that other RRsets will be signed by a non-revoked key for the same algorithm that includes the self-signed key; the same key may be used for both purposes. This corresponds to the -z option in dnssec-signzone.

zonefile

The file containing the zone to be signed.

SEE ALSO

dnssec-signzone(8), BIND 9 Administrator Reference Manual, RFC 4033.

BIND 9.11.36 (Extended Support Version)

man.named-rrchecker.html000064400000010101152530214170011227 0ustar00 named-rrchecker

Name

named-rrchecker — syntax checker for individual DNS resource records

Synopsis

named-rrchecker [-h] [-o origin] [-p] [-u] [-C] [-T] [-P]

DESCRIPTION

named-rrchecker read a individual DNS resource record from standard input and checks if it is syntactically correct.

The -h prints out the help menu.

The -o origin option specifies a origin to be used when interpreting the record.

The -p prints out the resulting record in canonical form. If there is no canonical form defined then the record will be printed in unknown record format.

The -u prints out the resulting record in unknown record form.

The -C, -T and -P print out the known class, standard type and private type mnemonics respectively.

SEE ALSO

RFC 1034, RFC 1035, named(8)

BIND 9.11.36 (Extended Support Version)

Bv9ARM.pdf000064400004232631152530214170006252 0ustar00%PDF-1.5 % 7 0 obj << /Length 216 /Filter /FlateDecode >> stream xuPj0+hcCBiE.m&VSŁ~~dt = 3;08<3<{xrB,?A+QkjeQ^vWm~pS7OHoRPW %F+o]v?=AXBgHhE'.PB>替9>EyS 9DTtgrcdEp#zb}n#K endstream endobj 5 0 obj << /Type /XObject /Subtype /Form /BBox [0 0 236.998 271.998] /FormType 1 /Matrix [1 0 0 1 0 0] /Resources 13 0 R /Length 39 /Filter /FlateDecode >> stream x+2T0BC]CsS]c#\.}\C|@.l endstream endobj 4 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/usr/home/tbox/bind9-documents/bind9.security-v9_11/doc/arm//isc-logo.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 15 0 R /BBox [0 0 612 792] /Group 14 0 R /Resources << /ColorSpace << /DefaultRGB [/ICCBased 16 0 R] >>/XObject << /I0 17 0 R /I2 18 0 R >>/ExtGState << /GS0 19 0 R >>>> /Length 101 /Filter /FlateDecode >> stream x=K 0 D9E.`ǽ .GpJx 3 ̛ $(ˌބf<.prCR QÀ"I(7,{lcjc|Y endstream endobj 16 0 obj << /Length 20 0 R /Filter /FlateDecode /N 3 /Range [ 0 1 0 1 0 1] >> stream xc`` I-f``+) rwRR` ``\\yy 5F}Ydi+HbdF {ByIP- f_B@6_:N8@"'l t[lbVep/,L(Q0200PpLOJU,.I-VK/*/J,IM ! A!ahii #C C>CC*C;`0dB MP\AXq(v!ɥEePa>Œ90_!fSbj  9US endstream endobj 17 0 obj << /Length 21 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /Matrix 22 0 R /Resources 23 0 R /BBox 24 0 R /Group << /S /Transparency /CS /DeviceRGB /I true >> >> stream xmV;6 u h >0mAi$O9BOϿn?G֧xüNH*b׍XTuxBV«,^2.auĪku2Nѫ -1_cim>F:86q ܉[}Y}zۯCFZmⰵ.EO(P?X`8Ma#E=YՂ7NDT_ XZ5:*QQ|V/F.dM!D %ȵ9FgW@JzJp2ʰچD~e"jVA%2QCPV kChWDg{:)O42VYZ}Q3={獈}a &UjV)Sc3Sk3%NWQqAkHqgO)JMҟHFa D,O.˦ 3-,ЈߎbjKr0 (0l K  1!}KLYRuCĜH͙f`'6B"i+ 9 ,&6. UƆڌػs=FnדIIګۙN2=6*B>~Hh@]v#0smJ!> stream xkrHq4_?wc ꎘ<>@ՏZZw[U "}PH$╕2!Y6 f&uv8?mrel;/ڷ&H4VF*Dj[:Լ"[n~VnY^ڟvGn`d=~Uؓg);{NNh_wOT Y;<)*@#߭xj΍7Y/J[׋**t#0~U8ckv* !?t߬ <ĝ =t ˜lFe'Vvo l˲ݳW:nv {keӒ]*ըccB[t~nui%ݸ|aZn$]$Kqc%$΢A\Yoc"l_RDވQ#XWxEsj%{=*v8n?ڍ#C_#׆1+ jk~ֈQGѕ2;qv5f$}(v^'q `=(M㷊}i t@Ŭ q'ی5O:׿kP+@lDWך>d? jOϬmOwUd) 3&^8jiwm%&*z>j(\) [+3\:tG.ŇM]9ORx#ibѺLz_mW1z*݊K4M?]4kdo)Ps^9\ƣ=Wq khm朦{{{l_WKѝ͹5>VYn}4;1A"qңaƨ,LЄR8[u~.NIT+4^cg@?Ds$yhlȋ-؂ȠOs[+5K1eYɏ;hə/]laSGB'cm]}rj<(}bo^4a+|-}r]{^mdCrPI,>0g_+# I)#kmaÖ rsͳ$ Jo0cmH,-8`?]uC\d;^ݫ,4zS $ٕܻ4I2=2eGי:w-;_T"!Zh_yin {/݈RKUU㳴+ +j/MU:wFyĴX4(i9I7sTRu߮o6cZAY/Pf9-Vk Kz^dO:!fR¥eSskUbʙF͙k%6Et?f m{"=xslru'->8yR&o[Zs HTQz78_w@`<2SJ5ȼ"ncwo+گ azI Q!IP| 6x;xthb_!JݍBS*wWZ5f&v?C. U6F3?Z8 >DDg5fCoԘU|۲ZNdVXSy<+5'BgIl+D $[{k0kOjĎ`93ϗ|bSAc+|(>U˹ɼnq6 oSCld+/Pf'C#݌x"I+wx>xE*Fu K{ΣHVCx9=&c&mCr%\<: ٨;-M(f6w%搧ϰW/iʯ':77hNmI HlW |pg'~"ϫ/A;SJò{V&WaXiJdkB/ Q.Ӭ*T~_LࢊUzD 7ElWYzp]=Uj$`cϗο60G=q' e__ӃNS*D%pA0fU>5sN$SJֻcg/8iYSzKj5QEZ~:_>-aW|$VEoT8k#mRWF#Ou }z='6G$MSPnϤiiޘ;e.n//һrVfE4O^4W2]FPe(d]VafyL.{eB>cTOkSjZ })LAD,__R[E5 ䷍edlb(N.`.[r"1.f 01> ldU!{4-_51I&B+[Lk`T%۱[ipvVEE{OL>WSrQ>CD:uWSy$,YƟ˸aM^9)BQcyC:V+;0C;,0yATBG}l榟<#$RVɗ"!Ա+,wNi`mg`W^i?|;inN+ߑ"W :ǼRG>1*7jzad.j\5"zwuꏊVLw5 !fS/?zSGΛC!8y7#[y}hNYW=԰Ϣw"0mHj}_>qΪ`?q3 κNUw ƿ{OMi5Hn8Δ` Ft[)ubj D֊#ܟWMu:6R-cwS>W#i-E)5~Ͳ]beq,4TIWfp[MŦ^5 ܕ jh#PI$Aj&9V_~M檌QݖdUXU,*g`YjLb#FČ8>9\TsY6?f$NY٪Ah!Ղtj6ׄ+(-JQ%Pv8v=NxlV ӹÖfUai:+~XOg/@CZ[yo*RiP~8Mu|ߡYο&6,I.۳S>mvuRtMgټwاmҙ-㓇u̚*"mizK P7TfLlPjsQosVN/}1RvKWaKM6\ov6N˚\FhmSjTgtj^Ls+6)aɜN?yֽ҄uݮh!urƾS͏wh50C0S> stream x ǿ^.G|^|[pʸ {3pI7@MY 6:|^6H1̛<"lnU#^.%nɱ~EMD*̅n:|iο>ݬz$)͠Nj/FւC[ nW%1sH-u9L&>tꨑ9E1}N}O/YC`IV7mȦ{7Cy ??t^ | /QUsL 5KXxܶ*{Iu^bʸ{K kxʻyC!N.U a2D>}lRIT'D݅Xj"Lu V8ߴWh5oP-l^uoTbCmȡlOqv$Tu&IU NdɊ8NZ $wh'}9uymNinC=B{2v-Rc5W xw|X>yl[Dƛ8!>3lh15Е'qh]fMtYCcMhuC;P`SڑmfǕ h^"`MUwz$nͣC2- pj!q)3kZF'bJ[}/{q؞Ǧn \FZCM.+SZ{2RMK@7D_hIuEM'T7={~}t:-S`HU%dKUi&%es]$Jqqd(ԟ)7ҭkoYgߌS=&heԏ5lquַe7* ̤tKK]+wnT#FH;{UL-jl?A2/%=7g߼INIG{/Pgoxe?Yd*߀Yjq#((7`軋g]:|/ PqMMuջSܳ:? iA,5$ @4M, ]YLWf-~*of$V$Wov5W u;9 uvѢҦd۸qyԯw~Z^}1eiAzM@?S &/M7B30WS n(#;] %SaJooq2`;?HџN`q?)t܄oLe"b}].S UV~" o6/gQ*75tT8/~c߹ߞeWRb;?z'aJJW_@~uV )i'w#C?.z7KeLj.ǧސH3g7=X\?ǿ/֯}Y~eh8rf4%o#Ӭ QWS/Vp./g,Q$'I ;8W9ptpWO9\Deɒgc]?_L͚.\uCɡ_Y?Ekۭk%_>ncb߮>6Dv3"wM҂Ӌ߬ۦ|SbOTkϿ4u PxtV ޓE1kj(ߜ~s WSOD5[KA2x`JϭA?s9L4cSi= 3Gf?08{SkEfz*%lV[W/ͥ/W_|+~VS=QKmWB,St%Pcg!2iiBCW_';yoҡhr>^+NTh]XS)z]b$u/a/,<  SzY?kϽ2 `?rfwb<[$Ɩs &,㔒q^i%׸ ϟ/W:%dA97$גNlutR.6fCbkQڝE.^szҦCKܚOz]Њ* [*\T}?ΗbjM8Z>k e bv O$`vz?m_#uA\X<3" z7/' endstream endobj 29 0 obj << /Length 30 0 R /Filter /FlateDecode /N 3 /Range [ 0 1 0 1 0 1] >> stream xڝwTTϽwz0z.0. Qf Ml@DEHb!(`HPb0dFJ|yyǽgs{.$O./ 'z8WGбx0Y驾A@$/7z HeOOҬT_lN:K"N3"$F/JPrb[䥟}Qd[Sl1x{#bG\NoX3I[ql2$ 8xtrp/8 pCfq.Knjm͠{r28?.)ɩL^6g,qm"[Z[Z~Q7%" 3R`̊j[~: w!$E}kyhyRm333: }=#vʉe tqX)I)B>== <8Xȉ9yP:8p΍Lg kk Ѐ$t!0V87`ɀ2A. @JPA#h'@8 .: ``a!2D!UH 2 dA>P ECqB**Z:]B=h~L2  5pN:|ó@ QC !H,G6 H9R ]H/r Aw( Q(OTJCm@*QGQ-(j MF+ 6h/*t:].G7Зw7 Xa<1:L1s3bXyeb~19 vGĩp+5qy^ oó|= ?'Htv`Ba3BDxHxE$Չ"XAP44077&9$An0;T2421t.54ld+s;# V]=iY9FgM֚k&=%Ō:nc1gcbcfX.}lGv{c)LŖN퉛w/p+/<j$.$%&㒣OdxTԂԑ4i3|o~C:&S@L u[Uo3C3OfIgwdO|;W-wsz 17jl8c͉̈́3+{%lKWr[ $ llGmnacOkE&EEY׾2⫅;K,KhtiN=e²{^-_V^Oo§s]?TWީrjVQ=w}`嚢zԶiו8>k׍ E  [ly邟~_Y53rW򯎼^{7so}x>|쇊z>yz endstream endobj 33 0 obj << /Length 447 /Filter /FlateDecode >> stream xڕRMo0ﯰzr$Η͍(,*e D9dư!-;].7LQaECVɍȐ$%a9CeJU󠏭bS|Osv-Ɯnz^yY~4SmH v^mvesIjR31{Ln:siS5OHs3jѧS ?Q2ſ#&sBڄu5x1Fd*\zc=G;d!Pm%)E[$96L`g܇u8Z6I:0O1qg.!^+biJ2Q9)LCd4}  5$/KzlX}*ME^ ԾuVapS],> stream xKs0| `UoKY2G4c dO_ٖC $aGJ+2ɰBJ@H0|.2 H0iAgᕶ@A%(p\µ%9!y ?%ԝ`Ci,(1C!'OfA!I?\IJm{^u0U]N5/64gScrL˝bO ΕjC]( #jo KԷ@"LV'ARTlG5fUdN= GcwڒE&VC=l]Qbwq3ŎؖV3C闷DxkI\-ˇ,+> stream xZ]sH}W#V-M2ԎLGf(EJml@H d3Q@=p@ߺq[?) TN Q8@p'8t{Cw$B}ps[.%vO6\)~k$L#bM*m!d ߶ Gȏ؜Fl{iy)3`N>[&R3ó *ƀ(q6~6\-&m#a)u U %{XG@T@;9x3; 7AB]gv Xu: |a BD@t-pض%~W6T#l-A9ǵ/Ik/"mE(Z$ic9͹s)O)EvN6W<(Rx0J`lzHEy'2$7QF/ʚ'2ZYe9_XJzEaF%Q!:*PD5Jg-pdN|/]~Lu"1b˓,OQLͣع>^/ൔN=Ex>3>f´GXcY.j~™}6ô_QȊ0qnD}G`B9=PVV )%!;OwMyWF=>V2sA_WU45NP}psɚ^s{l?i2LZV28se&iܖz%sܪh!U9p_BH-fmxI!Or1,ݨCe"g/6xef&N#'20#z$m*QAVDPdH5qy]ݭhԻm-] 7ڮ$Y45Ci[ :vcU 1ׅp̮ZڑrЪ+NʍC+K3+ĩ+BLsjSǗS&xmEb{F腯?;ê/Z,xe< s8rP/wEAo.lsRM΂8ۚLS&-p4&RMnîCSl;ԓ!dO endstream endobj 173 0 obj << /Length 1126 /Filter /FlateDecode >> stream xMH:g6TVI6B9NDh A4q~~v$F(޷@q4^CX#`ȠfaR<4w=sl Ӓg 5NK!Py!Epx'hȫ#'0)؍ >9N&0hpϮ 75h6Ӽ7q!fnr4BT;2{*N`PxV74NϾ0^j!tq\K`5ȝCWVWcOәi^}~ U[4i_*̲gwۤ l ZDew;-ѦtAűjǑHxZ|e$U+M焜#k~poB|F8|0OJ'Ag(Z151C^d7Tdxw!Q> !LeS^> 'cUh9jO+eL7rGďإi>eя2/uPm& f- ϢƕDATB^Ŋs֩QlRzпndGhv?l{t'R IT y0 R_F[bA5HPbM.J&֨5A相A蕋?ڷ ,ϲΒnE #TwS?;-k!{̱qi9٬@jWhVM.f"'Hǹ¶:8Rۛ 3&0B vpndoRu2k%NE>BGtQ-E*w5H(!N]Kw8p[D(_O!Qe OH'NVKP΋o4VǙq=r a<pu[3 ^QTI=-*> stream xŚo9(Bq$sĈjɐ"Jboj@J\3CQN9+YQVYYf")kSLƊ=!56*NQ٤8[ 7g٨ *DbIG*y2H{4qIQp¥(jkBlS(؃+SѢ^`1[9t``E}Q.`D=C Hꃈ#J+x?yɩIЩB𘸖 BdD>d(.4EhLAQM"1)649( ̯nf1߮7lY~PO>|X/xqZlG/8V5<+o۫:Z\>Z\,׫ 81?&K{tz|r|*k/AL}_:g[t^vl}"y뵑m)]E+i/CɷgKm{ Es>{ 4jfiĬW72#_//\~t7sqUb'/>ahE'g:iՈw,N01ꮖTZѲ}V"먳Q1xIO@"Y|VZsߚ۷ ֑bMkf]0Z=Yw.^Lp\(E,E*Ekiڢs5ib<\pE )\")HE/R|ZTmoտbӎ\~=;V9dl>x%HXV|H힨oʣ̯G,bpW|obf48@ kgb! iA6jQF5#AA1 ZB=w<eMp{Sh&8Ur 4lAe@#.8BD!4:3[:M73vci| iXfa ~MՇ Fck= DHՇ#[vk  ltNU! Ǝ MoP:81E )ك HKՒ qݙ= ]fR3*K6K6 x(̱TRJe*)J*:J%EI%EIEt*S\"%)HEJ.Rr\"EJI]iu%wA&O3YG [H.i{WC\WÒ6r܁8THw ^5H H$ wa~uu]~zyL1'F B@kerhz Rи4$ԳI >E9 @BF4+HLGCz=K* ]nw9GO#Ha7m $ ##v=g 0 iC3šscp FY0Q9418-@z,ψ{W> stream xrHG-ɤǹ@C-[ $Z)dL \O&gxm P Gzg޿=lv! A4]C`f}#C8QWvNa!BHe+BdNh>pG}4<8Z>8waZ9/`>䍫v0%hrk 2A;veUfl:m 5fWse3syM .dOy+dWon* ]_[iǷKԏ##m*0{3ؓv\'rN o%Knr\:M'Sƍy/Dx^.$Q=8-m K{ M͒V}oY߫k|0uM93s=`|j+sH W( ܭ7t0K޴L*UؔJ Qͣhy8~%^4 Ɛsl2pm/],B/Jr g{nE< sզ%'RU(u8,ϙ02{spYsc2N`O03Ӣ)իdǟ?Y@ `h 0:ARM C7K%r lrP4NϑMi6N{p-sM 1vUP"C`c65߂x!iIjS Q҇5? EެtvhfM̫#+JLrm@Y%? nPwnf41U9Ud^u f}K_P{JCHHnLcG\ ekȾ> stream xS8+tLeY:ntfmge$558I">{_W %'! 8@$1.G'@6WQrx9- xq;z f0BQՏms.Na!vp(B֫=寫tuf[4{iN27Zv,Ci)_SWltgzws6ieK(lXX@ls?AbYfy;Pl9yY`do}ހia>H>z΂6āUѷI1יn`}sA|C$a%wp,\k|w2"^3veS.Od C6I8e+ 7b?% zQT5^KyXA;h &Zyfjocd^ҏJnup#+/\? {*PYv </ҤtFF?"yv&Q1ֽ!*>ٖFh?-3߯Z!Ή蒨P@1BFDI37+#* > DYfE<ɓL7P s*|\ccݟyL4͘yXR]6,ܽf{da(fٟܨG O:F. "Җ;>_El(4j3Iti79'1h" +LVާY쾖ʸ!xws?/k0>$U:|*Q#/UNPoĚ^Y Zɯ7")!lP%*L> stream xKwF| -&~t>Đڤ {NDv?}GHKG{c%~?W{G΍aBc 9#8*g8v'^u?8DIɩVw)1 8'o]؞@`Ź[^;([ N!ųy]?D0=txb/־⎋loFYmVM?324ac $6Icmk,'QD+42 [@q3cRc @b<֌B[Q8ult~d. ǭXf,!ڷL.A@65H(ADŽPnJ}<&)tSGyi3LwcC"2xh4/!vgJ9,UMy7Y"~\ңLJR =t vfd9lBvYpz-{+&ͽ,7(:"Xu Zej=^F&:''l[&Ay3% #V5^Q5?[ ;&X-(2΁6a츂W*'Oa!۽uX_,]d 1НwwI4,0& ~~uC*k#bkxēׅ™IRْ*O=6YgGt(6#s"@nu ȅGMF%pĶL>xCѼ\zK!aǟy!MԨߓt' B9hŹ Gu:Lbt@5Z= 򷙘8w&MZےNWn{J %Zw'pj'zQmkH@k [6'["@uS^c ô]џ endstream endobj 179 0 obj << /Type /ObjStm /N 100 /First 919 /Length 2367 /Filter /FlateDecode >> stream x[]o}Cy9I ZQW $H};]7VRYyCrx8B )>KPr2e Me )8q)*h:5S]i}Aмj`6ÕPi?J` *m$% $xEMAr Jf^d|iP*-(~[taT6T(h&A:}8xhqx;b Ϟpp|ӿDEm&Il3؉"-gHҺ_40FL K-uǔ!-; FSԾ`HM 3zF8`h&m32 Tfp+WW0 l/g;Ty'0 l `vXak^xUϨM"" &WͿ4puOn@8"{ S-Nd)S43!~T]u,<o,4Mp@U4 !Rۻg_\]ޞ  TsǗW_]e8|"__|~~8Zsէ7P.~뫟!o{Sw0ɣ7xّ\6/\"<[ P-Rޡ[},9U0,$ Vؤq)``y%X^2b`4Muh*;S*86OSӺR6=O`ξ؅M4IW.5֤{Q:o&ՕҐqbyjVh/0 lrU0CV^SΔdYۀgWr0LdSϖhyM$QB vԴ&P=FM2?rS%vy]b)uJ].{.].ke^q{W^q{ .ˀ2 hUW^[jwv'YmI@;n/&A BWc#n[MZӺp B뼺j!7g&Ic⚶uѪwBZ^`Z5*$38mIm\ B__T6V]qUWxxxxxxxx ('('*D9D9D9D9D9qeS\W6ŕMqeS+'nOxӄTm#FXӖMPE]T9SlJ 0XhSE˫u02L!`)5u&K|et;,\/6A J` O`L(%j N3V忌 endstream endobj 389 0 obj << /Length 1182 /Filter /FlateDecode >> stream xMS65>XջeemKv8=[$b;X+G'& _?or p:z7|0PP "2@ dLi .G': OG AA."{fp)䌚89BI8Tqc:ZIuo;ʳ2uVZk--f^u:>a1zJkm؁TKkḲ~"]cr/'e1 L)\wJ Nv4?,uR'-?!*:y^56e,DiaX +Hy9*w-%!Ἕu v++ ߊ\ Ҏ! :}Ćb2F :Ҋ"2]s_$lV픇qp2 UթE0_S}QI6}IdJoÀ~[I [Xز7x\䫫.&A5;k+4㣖̣SL64ʽOUꧦwōQɇF3;$Z&>5aqSfzdόi/IgYd㺪v,yzIHE6=d^P/˞F mj\ozǶ[>8cC(!wܪܟlպ2v0TmzhV]ehrx{[wpV6IqVQ]ϴ 9)޹~bz& w$+ <* 9f(ުhs[9F4  ru<.'r킛8Ne^TkԜ ڵ>juExC"50X8f=1>$냩coSOgi9>7wurm_7+]AL{K]UIN cOfٿy>zN\3 7{>#揆/]]tp٤06n@q`Ʊ8OͮEScW> stream xIs0:ڗct4pb)`SL| /BM/ oOO`pO I% ˆ s1/WA?xf4=uɻx<.a@ֆFR2ͽ bw`䬀ŝsC3מM4o8G(EFTDI<; qs̠WK(wJ2qc~ Q0փz$0h0Rގ4I5iE9MKnI%͛Y$Y:^ʪ-eѤ<4yvqCaewDEY !]nC[܅,.j4.1T!*6֍G⽮o=xn%n,V慎l+JFlcd8- k4>.VG[ z0RåK 車lBU.QNm,Ҧ)T5imڧM4NugUJv!hXy/6XStj,#`CX7hߕJ7 e]|\ogPs$>_֋G.%:UQ;2B` Gs2S,:s70wUuҥ ;dS9!V0,JԮ,?+Mg;,_\ΐfOAZ\/{&qMmg(RTpTڿ٫f6*na$MtK1%[ۗ*GP6:5bf= JXyV4[ֶt}"T6|s>E endstream endobj 466 0 obj << /Length 1944 /Filter /FlateDecode >> stream xڽXK Q3")[{v[7L K[ HYvgJUH AQǻqs,(f2X1!x/!_i|Y(fW" j*ǺmPAD$, ։`yABd8UTy$ighq+fq vG܌?`Ke;i`+-yk-&8gR T*;`}.uu_+.#*0%e* #ڃivmOJfoיC㙺틶f[|;(Tʭ1X_K8uG}P`1R(ǩ8;@pK_pbU7a[W3}_F7]ko4SG]s ߓqN-p`mœ^C_kb#Ju\1=AɈ,!7+24'β-mtmSϕ9S,P^(BY8Sf h20#h=8b`<\9Sğ<4BOE]wKhO+p&*tr#LْCэ `, bkTP-a, aЂrH}c2kx:āYJHSXT,Vh'^tnGjj8/ĎFꉦ1}!CavtBh@RY-$,ɹ <~7d霣(ߨDP0!x危 uQ 1Sr6ոYo^jL t(gZ#/_~M)uM9 梺"enJG ]9~k~]^1m*5ҝ vؾHnϾOY?cF,fqq8|0 ˹<6Ps\+./(f,RSjY?z 35Tܷ t?R1exqТȳ,`&VaZxz_5>iq2Nl$[eAyWA;+LH3=ws`ߠ lqT3s_⦔QNӻ)5}u%~ l8T ڷT癩5u xt"Ɉ4#zuq/u6'{K%n+SBV+o`^$.|)ټ Qi WCj>JRK08F%:me6΅ D皽Mg[ȔH&K"ރlv9].۴b)O"PoO}{7'T;LN tC& eq:vKj%aVN; \z};yV5 "ܕۅ$ZzKwni"kO1nɋGn^e"w/ϋ"GG{ G.V꿫J<ˌT&6RM)418&sG`I&F>m~CR x<}- * pox?w?ϡVDh'ԥc9K>9ҊJK> stream xڭZKs8W(UEX{Kbg㩍2kjj*%R6+)+_ 4@Q-[/bF~_dLM 7@+N4i:>ӫo1萑8Rtx=~zh̘ҶO+~ ғ_|_7ӫ/HFrr61jz耵D1QJ ˋ? ںˁ\-x1 `sQ2g"f1<FsBȳ@UhI$z:b +TMu>y!"|Ad$s0C16';OC'U$4_ ULCc#UYL(DXzR]DzkF u2WIsW&]ʋǷ{ꮪN2ɋ0Ā>"_}Sxf~׼*٪y^ #MtS+KGcEpuǶeyu OZVdUOl )RZlR/>dxGu䇪HO`|,=CʈOx`$EQQv4}~+%\cz= !Lz ␻Cz\TEQmmhA>+*klHxUgB8H'-s1n7N搞 /_W3bH+gRQ,AQo!+$|]|`)E-`aƫgC |_z_"s@ ,_3< PU 2& z6ů/ZG x=8 {Lđ* \=_] u7ӑ?>f弨2nf/'g?Nbxe> f35`a/h *!W:cFuj[09&j7!0𲏗Z_/v> g"L<<#wJ )#3Q/~ }r"T {3~~'۲Gs xAL#tKk9Lf }"K߇U $EIhIglV?l&5) ?"{e$Y9xߌ,A,1gjXWfOhY{&$7,3nS[8>|EM(3M&V#IQcVweeA neK>-B@á vU=Z0V}SWcsibm#w[2-@-9zF`wyFDw<)ލƂF4(7 0.Md))Ql25/zף^OiՈ WdfozR]z؈U=IStC7o6g:qff~2sjsUGt`#޴z h0 D5W0YTn,\ இƯܠu787>PXcc-Qw~[]ED-:zHĘv٫=p-(ͨ Qu֧|K6Fox2[1'xxČ2wZЕ& E B{%怷'3HLiƗH(xAcs48~gN&e~%[jpxb'?No +ؘUr֜S*埴e?g.Қ4g6lnDJ\J Up,Kx9)jb?T r|c-BDk[sXhׂU̲o42AgJ-lw [e?@PN`'CG#R b݀|elw}5$|/TUӣdB/ڊ8( Y ;v7|)Oad@cTdi+@~{ |4TkEhbôV3tF͵qaxU~,\9$BysΫySo +Y/> stream x[Mϯ1>*H@0( Ap( P}^pۖ\[K `5뱾S )2#!9R0栍0JlKh1j|\v*$/ȒS ,f d.9Pï9pr9,9A\g4T+.sRq #ό?O!y:f_TܑqHTp\r\ ௤A^^( w *$~W 4[B»կP_Y%o%o Ԃ_ՠ+iGV]6F3[`̾sa4Xq9ftSodY#ߖjJR]nld5L CUC5I #hqAMo-V,ǡ'{kp{H[R\|82 P=QR@*+;PlO#\Π2"fק`f1wH)!зk~Y'Xf8?YŎBf0 ,ѣ>㋋˛姟nջ 6u״8{^Ŗx-b K`Gee? p}s?_?M߅"#B1FK#X2ޘXj Xڊ,rƍ//Џ4`GJ8LbZ)+5G(WQ!)pI8c[y ;IxJl+OJL)XWVc:Oĺ]fDJy9bJs:y-? `sϞ7/wS<}%;_.'òSv B8rX5uee,~^/}>ZkՏH}.O<.O<˳.Ϻ<˳.Ϻ<˫]^={0H\s7I|o}(a%nax RΣ`o(U]$F<<:Tm'X T.'aq@T# @@VȚ<3aPխ3 E^@{z'.5[ $@j u L-`*ڝDmB@TZMjO܌6<2KV,u@&C@īǡ$2hz^$;MuLj6qL@dp&162!0CkYU56- ]7+|l> stream xڝrPDWlz6R XHH٣|}lNh4Fdڬ?_CV'aXʏtJЏ|u_xou$>}z?^]+/yO|e7~1Gn?à +؉3?I]|3X*uinڏ# p|`z,Z,+~N=S q?]_o`pm[ߛB=0CݵUɈ:bW**#; 4 ^~Fpb?@m+tjw!:Vxv_uR+P1c\ve%d6TmThG=@w‘KMe.zIn.=o+pNƄ[AoekiC ytBR p쇎-h4B2fܾTJ;D)Zpc:+_աdbq`:ؓKVC`5!SD9(>iO膮蚅;R#UQK0a{ﻢ6~Xy-C2aO JbKNC= c{XD81;P ݡ\$rG_>wJ.3 lc}w`t%-s84V`6T%H"B[yȣ3=lV |BnJ`\v;:۫S7t2-jЩW _>덬lP˶-i+3^H0{l>L,EeWwU;ȴP.WR9̉&_q Uzx d_bbx +P|p59ؖVMj=l(A~ Ы; vwL7Fir& ˪6nrr0Ǐ>əws~Vѵ=<~J?:,l'1+:-#:j-CUNOC N/҂`Wx=. iY~YNŨT'ɾf|¥'2=D\dL͑x /q9_xۃo7K2EҖK'~0:`^*p.٫(z)KMEd(Mu-sNlT^Dm?#zYPyȠV~ ;?vzUa})y(0-;gHH%jDᡎ$I,[SV oϴ;D <%d9F='-S95 =Tq*nĒBˡ ӛXK ޳ fÆHzI V>F58C0P%E[gc"GOcpmk?d86]!7tX 6TwR[%G8èKԵ&}I5Z$5 U޺?Ԑ\I0 ͬby _/ w_]`lWʪhAbm£R? yVBhck;.AHRZÉ[a#JQ%Z QL4)GGGt{ca=H\AC+i)2S`P+erq^wP^o4v?OGg#T᩶ݪq y!eR\wPo;Mo*^-ܯ4>fޭX}|9P *]s2O]- #dJ  T.<Ę:3sAKf,DalS=ҩCYf.err)U(غw:qkCTn0Y? Xkd[ QdVo䘮ƒg<ٳ-6'Lo׸*N- }꼲,YD,O?/[%qi N+ GBS|?ٖ+6ƏPv˓m8O؟Bĵfׇźg @A]` ;gZGu9+\(A gp|lR˅qxTM#[XmS{W; $HḦ3q6$ir %21h\P]̏ ?/y*^0S|K o!I!DI > stream xڕ]s6=³/uf:)ifbw:mK5%ג> Ip4 gauS1KH3[mfq4FQVO7_W ùڄ×?X}^abxv閖ό]\~&P׿~]]q%p&<;: QYs?@Ѯ")WX$(8h0HR0UqPR͋슜}.[}Z$m牧.߻+۬.YU1h6;>XO\o ,[ZRI4/1 &QLq!n;0'g8loSg3E+(v@kDE첶C=_lV it')$ IhRizFhEm GsƠvWD@t<=xs3^:hYY OX/*ھhl&T#lWi}K'tkL!"e.DkB%- d$iϲX7utNI0a[P6%b awPv ϶D"ﴸ M[݄_@ҭĬ~`J/k-o bS QZ&gg@ fkL*= ]ߢEse!WppdX ҉c!%_ԇ.5&e$vW370AFs7b6X @L"s1e:᮰N)0-ܸYmk61ᲚX?S8T%X>`T7oa|[=x^n66q kL[GKYuPUkoKֱp] cp+wiV +B$,喐殸b{jg'@ p Pca8=ܮU<(&1esUKkl Ceor2T]mqAhgƋ {?ASR{e 2_&h9_& L\P'0b5dR/QTr.e`(_O 2A=}Q˔F6o@Eg9^h- JC b]ZZD?_n & 'kg l3uSH4Uw8P_r.#ż&۞/y W{axB7xll4zl2 ;@%E!"|*EQ\T&%v0ZX@ӂl %~$gݻs4c5ͯSݮ'm86}ז9͡]M@:E%3y;~2 msh{۪4ݸoNxӽr `B5r H2Yga?{eKqaE+m_X7:$u*k?J(/+ؾ"o' "Q4},աM識>,lBFTEw6$Uhs:KU$ _:ZҀ1G% Ie [8L%O0 endstream endobj 502 0 obj << /Length 2418 /Filter /FlateDecode >> stream xڕv-{-w==C2LA\4eSHJfO^N( @"*Xꇏe*2fC?UE~v㧛7QxN<|Ǐ0r\Kdu~rsw>q OW6W]^ GvϲxU5W*XeJOzx`"YxbE)O\Cq_׽hDAoT[wIBuuaҳѽIlB{]P]xUήA=`exp_ike]ETvkȳiy'L]k[] zY7yg8&N/;YzLYYav"o_eQr.=`d??C>|6vnb-/X~Qy#*"Ռ2uo=DR[^jԉt&i)ǀjZa)Z "KF0յӉGu?53+\~L^/ ҵ*&'WCHJ H@X'1_4>xGEߢFg/dYN˲'hێ|nBzCqp9z3/}P.6?ST\ߵv }5* 1O?GoرlTџmG/Sɒ _] b# V~;ސHf ͱe9Ϊ݉';`3ذN5p? )Dkܰvg@ .%qAQ .F!&;J -QYt[n)C\NSN =ZqL_m;j@"!RRgQ鲽f̘iyq)~<!+ #dݫ ,CIt!t8͖VHKXWiBd n];x9TU1TCLY&Os+ -os3#%xPY{gHu\l[zn)5=ע!JpaaBw'ܤ*}(8sư8#M/Jk/LkۿH{53a?fj3WBlW=BĜ k]m*YWj+8uV"&qJ$ gY(^G;PLg`6xxY8'4FTsG񿚭oyoPK8KAHnN G$ xwɰ0Ov&wi k-~dT5r̶pVcmZ9`<.ЌmLybu6_M!) Jo)@ޙ$=)GjPbS$NCKP? T )ۭ~1PEbOԘ35p8Wl)01F^>˚6ym*@ӱ]nxeOڨ~OE\ß,=i6t('F6 `(} hR@ MD,u<GA< C#D+% ؁ lTBFn }w\Q[{Ѳ!V%9Q6nrhf7Hչ+%/W2?^:elFj jgm]2D'5v._Ì 4{*Vai9O_de,^C>r+Zx_f]n8Jǹ! 0JYD,TA'bϩH7zӨ^:wQi[N[TЦjDj;zuyY7uƋ[}*WTDZ߬ۉrJ(@c[  t#Xto^Rڨcq'+o᲍mƭY}[j reΑ[bˣ|APm_T;gDI"t%n&pCOCo]gY!})ꌟS\dAHKG(,cHƘ&1}Ifbι6]u t8Sܚys1F< '1)qV2_~uLC"z)Vt*ڨ'SȹPxiS2%.4#R.8uRF$gƏ 0(/uXoLm0/Ժ,pT&~;@ͥjܹͧ2*TfX`2MEdK]tU$g- '?0.rOLI!},`-d?CA^d] endstream endobj 508 0 obj << /Length 19 /Filter /FlateDecode >> stream x3PHW0Pp2Ac( endstream endobj 513 0 obj << /Length 1881 /Filter /FlateDecode >> stream xڵXK6ϯQ XZzcOl g pr--#Q)g]{ibՃyG/q=~{“2Bz/a'^$a)>r"C (}{.yc? ;{8M͠[ݙj1m'$)n +,ui+^n ˊpyIv'23 r]I obK.Hr/Ӫעӊ%{9We&3&H0*R/eXd1v 5sF$fPUcSO>h1K 81,WuvQӍT(T5!2Qz$x0Ŧ "kwGjoseg=uU6z8Y9e "a gËP%C0.%8]bkX5LlȜ_5ʗh(Aݍp>[3;̵-[JZ=Phyd|0aKa٥k+w7F'FޑЧj9Ë|j|pz &oF&*dSɪ+v" 4ݑp/Ls)tN3#l :[vۋFy~M!̋e 5Lѿ0rZi?Qxƃ_F2ͬ_A^yW3ꎚ9&.`RUѪ}t2 E#u>A.#Q?'GV3Ez8ͨuVɮ`űYNhs[9csBxcZ>u0i= ȮU6OU6 E^#1OE!ߗt& %Emlpr@4>؆f?Hs3(_sIB0tީǔ*|@jƏpUq| hWg lD<ݟ9b`M6FO TOyGsnCOWK vF%2&3P (ư Wƴ稉ٹ@h/ǥ~Nr8/j{wሻ Z.9ڑo<*wΖ%kĬ;;q%͑7=&QmY:Z4 1hlʔX s!Կp7E_bVʡi]\WZt"KZ jH'؏$u;NzžM讟5sgfIIȳKTTSYjb ~m tPR9Bp*\m= .EPڦFW ōH*'\7,9edz@&H=t$|s0NDA_x|#Ny]iJ"X#R\<ࣦ~4.[GXy `})jӹj}؏fD-5kH?mlgp[z0zd~֍R.0Is'~]"f dR[.Q@Gy[wO-`#4~@hMV:pՕ$ bou(76]j͖G"y|l<"uX\,G~=a]R끹S,iX}e!eՙ}WTs-(b` :95Ղ %l6;m4$  \ad] VO(n,?!a/_'eۛF^s?bp,.$zIS0b[54+a2, vW!vO0Ξ/|Y'' endstream endobj 522 0 obj << /Length 1058 /Filter /FlateDecode >> stream xڕVKs8 WHԬH4ulbVfAITp lu ~$>$sϹ^|R4xdONQ&Nqb]G>}Adڭ﷗+GU A-C ,> --zS$gZ} ΰyhlZԪ{C|P=*Pq;%Y J޶5T>Ye#kv?M*D|EZ2F0D/DDΚ(UJm7SF½ػi^AWu@alAXAt0cFEs4g04C2t1'7 n 8籃 TAiTcyӤ! Q.KL! /s}PKz4 1[Ub{Z*:\C<9t%=ב}^f!g0'/InެL RK }1 _{ M^2)pRF`P4S\Cnzαq2ꊆN}g'4A1 dn9V׊ON}El`dfdmF'Wr";y4l=g(=vM2[#_BUE!(m.4(B9tEpi?~v9%y%uYkIWc۪n?2B_ i&͟^;Z۪ey=ڶ0ek͕!ūFI?t::3( ϋK>qaNO (קoX} endstream endobj 527 0 obj << /Length 1808 /Filter /FlateDecode >> stream xZK6$5W|H" 4M\e[,9m!)y- p0`Q| ?7CI 7A|vqsDN‹1by  #o6>tevSVEIoz7E=4}BiySeNM6 ]jLAJQL0S}8eIE BK+#)Mip!1<7Evi)3VfkSTM-3i42(s)Dk@R|G8m:UNH "܊1ކ (ͨ;cJ "MNd㚷MEOzxkFa~{efRii]zx5vP" =`x{B3Hxx\xU-.~{;Nw^Pv`cUQ~3H`e!"L^8Z0LZquLW-='}ٙ_+Un\ǪlY[J]vҰ`B[|<+w4bWGjBfLr{=æ~`AVGaϺa?l GaW#` ".pNT"2{ X R nTV_"o>С4@DC:/]8p)*v_u_\S[~KɌ"eW#cm)+Q`0lPPӃM g5 M<]\i7Yc&0My]s;<BE}eN(v*W[KkXGln׵>/ͭLVP>fj] vh,7r>(z:ahwT+T= % Ŵ٘UhN=f+bu|dj#y[-l"w(~X:#;6(m|{p{AP8(y|Un3 \nxw=D`ģf\uxaM;]\\9s@b"\ \)Ex] ]*uv>%dXEUZTeMJȦ@Q=4OWQNll-~7fPpPTNj͝a JEoQ߄_6EsA(ۋ}P\2U竀za#K}\ e-J۫u? $a:^ԓ61gad8p:/wT+U?tC/w}<#uG$/w0s!F!#vNR'@A&IVCki }4K͡Op^\{,M_G Dy (eآ8w/M!D=4Py#< endstream endobj 556 0 obj << /Length 2234 /Filter /FlateDecode >> stream x\_oϧj.=e7{9rib(X[IJҴwȶʴ"%J E8zq|&FZRgQ*%Eh<~|jz8ă_>bW8>_#L"!9HfS؊!Z˻xzqz8"kBRh`0Gh Pm'0mLj[)} h%aQ5=P{D) `m;t Mo${` 3 ֶ@”ܳoeyGx_-CQ=˴xOҮs]*XM\*FXA#|=b{Ԙ"Ei $T_);D:IG5گ?mksg@sjǝD~KN|cZ<IwyYu`o/o(vhoPn2\[(ֈzW2I(nF P qƻI"vpk _{Lj/YoIPG2)CdyIZ@Rܲ) - ) pHGpiwx6mES$D6 @4BuHhup2zzz2hyS@ ڶcL-W ۽I=3|gӎ뽧e:O+8q@nڶHzVE*îƦ@VbJ{`'ƆkW͆0l݁$cz߁h 7B{mY) ВڶZ+fMKB~-t?K6Z2Tc:?%) |ڶW\H)~%wٯ) ~H{;k ]r.m؟7pv8Цzg'%a~6ga1=xSYGS@ ve?P~?|[c2"M.mC&lwSWޞL2 ame{Rލql+_]0劙Ph D!T iH̺VuLqKoT5tGR^<m} tM֋OeLŨy f'WT>u8"tp Cg//ilD?b$k~~-Z.ukD FT#NŚ%eFye9Kak[y2u-"&e{9I2Gqdr7Oөkgռ`O.ojgPּ`&ڎbH F{`argfcIJ+6pu܀qp''YLZ@jbH5Op(-vsRs)?Wc^<ͫ;wS^|wQs}d H{'Z_ҕtIj*TTk(GTiФ2ء ۦ6T̖,[p2 dIrԓ<ͪ|plG/*u=3 ]r΍d,_4 endstream endobj 480 0 obj << /Type /ObjStm /N 100 /First 876 /Length 1457 /Filter /FlateDecode >> stream xڭXn[7+l8O -AE[# 'T3XL,otyg^:V(3f!Q<:A><d:tn2:bzgy5] 52̘^1XAfHb) gLj$XA`ħA p̐@Ϝ±cA+LCFZX &+mZ0チ"6i`7Pȝ&N 8 Ld'ba,h Ďa%eBEBACHG[g1k;kQn,500 k `# 0|N`1f#nZP;8 zV}a10#-"0yD&~#hs5SH4'$FH<"$ز0cFF=x4G![IH< ISB2b8:Z,V~++Xb}ţG_[)th &u[6j1x)N? . ($6 #vu6o^.IY>v\/W.'^ NZ-Oaj}q^oٛlE޾;}PNb Ve(1_a3t^od[¤qW+nY//.__ly{|9{:ۮ^-Z|zBۗ 6':kD;W|#Cke1o~Q?n^n 9f۬W>zCP*XQ†/W0%ECNg Ƥ 8 ՔeNdkOa[Uhn=鲃-֦(+,#e,(^I,>;Yvx.MKSK7hz|rH)0:O3Ivu;>~5588da{Q8(ݍwCeWL%c*amͮi}6ؤXt!,Khkd?X_zuVƕn8Cu{~][)Mm:l3*qN_G gY{X>W v7 -nC (S_09.@90:ۻ][wW2z64.),Uz^E1>UA$aE簌svowM@sDX S>k'W.Jak3 a]r _A9x"3= ^5{T@C+N9l9O.qw9޷۝?6jl l|՜za# Ɓa칌ӬS؆/}Xk<5K}lZi$}#I^0OI,5\`h3@c90ړ>1GgO tZm&}b"%pP?O˝ endstream endobj 595 0 obj << /Length 2599 /Filter /FlateDecode >> stream xڕYs6_Ps!J|Iܙ89G<~EH"U]` " `vfY49$OX2[f)%Y0"D>[,NaDۏHCqů?~Ĉ iV &8#4INP?}y;OEtE\\qAI4L9Ilf%:ϳ٣Xph׳/49#枾nd<(ԇ9ٵdUyFvidoٽHٶ \+AW oejz =!blzQ/lF\}av z摟gFbMy.x'L;Axo;j@o^ 2zT$'%$Δ!() 'F.g 0p_|ݑ(p !HĩU?M4FsrX ETDgfa >FIt $tG (t#4_@>LuG`pW峑 J`~Ӽdj/>&0!I1[?sZ-ݸ*R`&~ e蝙\UqU8zBj ԛ e(ecF gLFgYF?0Ek@,mteic,yաщVcK B"=T.\rɢie A6hTAa~l*Gy,H Niʃ4@4+^4Yxcžjfat@LF' ,K"r„FU3DUbPM o3p'uiӫĉHQ/J=ͱ쥦M` =+"qw7- l܃z;_ޞLLƤ턐;@:vͰoU^j&U$đDChQwRrSιUru18R/HYY{GܥOZ6WK+#2DaK8K`$15 a}FV αP`wH1fIʗxC oF9~u9I8#oK!Bmyw%9$ R#.LHh"AM P endstream endobj 607 0 obj << /Length 2888 /Filter /FlateDecode >> stream xڵZ[۶~_G9&L/}sj'uΩ)R('?37Am>`0o WU曻f|,nJB&tĂEQ+Vۛ} ג*|OJ/w߿6&#X͐ 3aW)q&H}|sD?|4orÁHÞrU%\U$|z2#wHI" z7TN} dȐԇ /:ǒ۵mU~ݗyrvGe/0.XPk@0fQG'EfdϪA纱4vFƭJ7/Gj}rcA]fs_>Ǫ5,.8'K<4Kv"-ZL #S,k:Јsk$f:1f?CSD,͢C"ܘiy<G *`1 o]Հz[mγI(ƥ<7SMs_Ukxۃf_{-jkB75,AP_Aw6˙\Yϵm\h6I7d-yw !KۻD,14LX#.(4,AnI]T jw{X(UdB" b& >Tv1.]$*QWXZT2[wGcG{#<4EG"K bcy (nԁ&%Xr- ˉq":M)O;D7`D&8A9Jba7 `!p_"j5We9E{ыk-m2{MGS?FՑxEFWV`w#&3:#JMgFvN' 䋤`5/5zSJ~UIy)\ Q&ۃ/ 9z Z38MC 1O]7)}c_HDL+>L\tخg#Tt$ Y=Eaȃ#|,ljMp,w9 e XkjEe+)|(8Ђ+ fN~+cM]@4vV>ٶxXgIk[K`Ia/?h,Hnj2ЏS۩Tj˜{ϸVv瓶 FǪ(J9VJV\Yq 4[s:Y}{W'D&Ƭ;gT$ʖЊܵzeF. Rt2\A7YcUvQQX,é`4lγ<=ɬbpp3AA@tlR'^IFAa,iMJ~% bb!.U5iR <&BH ̧BB@-%Ѱ'3L<%v{A7?cUԴCNPt)9P"/HFA.a:ŗY~-.CAjL(e\x P[whlpe{@>scr":>hOM`}cƾ}<7IބsHt iC}q(lSe,If+ 39d7Xܐ4hju=>V<R<=>WK";(=FNY%,̲iDF-um^ ,cxuvH{6bZx`֨a.7bWꦟ5)!C*hͨ'/C1Wm-@f){'w̜7(gXv!v(mǮt|] RE} +1 /3s].)wBz!5zO^!S}Y4?{,G_ G/t-ۥ_9coOA6_PsaEI"l]6)"{I!N8)!ؘ+ZdvIPt׼USΉ1"z6)nx]3*H:&N D.e8;Wܘ {G"q%dӪ`>Y cRIY8ZJ-mc8EYCY|R$Y_Oɂ6u]pF_:z_='Ðچ/mv}$2hQt5R8.!˔Epş=8Z/ed0SR5Km endstream endobj 617 0 obj << /Length 2889 /Filter /FlateDecode >> stream xڽ]6}܃~j\.m)Ҵ8he-D,9{C ?iګD)rf83 o/^\< B2 B8A()< nVū `r)$^{v=|b?n~|F<$6 X6f""R6 :/.C{ ſ/idAV#\0$8~iH" a"ǦM|N}L94lTu\۴b1-uC .m{v_+7#GJDkWA(ͤMZ8uuV-%Y!""]QWF⪮`BhĂ%!(籨r lean"ZŞB>hS !t_ŝP17cAFp14#*H32-!Mbál&s9D;%8@;ϳϩ=09Chgej7\愑I:&DaPj&˵`Bi0t&m X_]l?NܟvZqjq8D QܜisȎHV\E܀X7lQ-}z_?~evkld]Uʑfϔ1vJ$P6I)@\j--d-bHvwnJcxLcF1X&e^>Mg_wi\iJs jQ@+vb]cŊm2Rɗi+f|inzu&>$s@{s#k@pvL y30YD* 4:R0l8Y+;$?ED`œeAq4F 7S$§96#(m){=NYNU8LS!ܩ)*!$v+!j!#o"ģ T o:#D;ZwIaxds%e7 6a ʻ'c`FJ޺56#& 0|&pvP /ɤnEpcI)6"HvRPcnhI\έpFX:4;*Li@iՕOP0YDf4āXDhC3 os`քAcA=nͻkg"3_ݼF$1Px!HGzE % 1RQK^==D% | s}E );H\A,I|J :&78jR. G D6|ZJK;}Tq3$gLy̦u@`AC$cN?sB2hn;SEI9XUv6QlZB4qz$C3;V !DU8a׏TWo?oه"~r{ˮ߿?-oFߝKp79nI I˩SiV8f<&@[e'B0aΜRL5S\oN4c>ʹ|Nf؉gcLͦu7( 3{Ws|".7v.6dlZ_6D <7`y %z i᫑С~z|o.Z KZd)pF@O}~qIX~!]>yÜ4 C^5 2GM&:I銇XiꓘQ2|x_s3*]g^5~6~o<wo/^u+Q}b}IAj+*θ5u}YUma Z-^2+N5i5ARj_h+DãcN[ UrISSC'a#.!OFd7ۨUm+i("@h)+鼿ٺ*uGȫtW*QVnNܛ>q@w\Bp+l=Vǟݼ$"_$tEJdݚ6غ Šl~몎yoÚ޶mʍ\꫃w%3<tUg.E+DgTE> stream xڭMs0:C6Z}#iIBfBhp{b -?8PSfpZY^>⋐*Ȓˀ"@ E"{N ^8R`LY!wq6)+S 3K2oqfK֦8[_&KhjQq5!} @AU[=nhtV8|cmoR<@:IHUCj8N{ck@l?Hc5kww@E F?.*CCĽ ) 6#n endstream endobj 645 0 obj << /Length 1882 /Filter /FlateDecode >> stream xڕr6m*!$$3N9aj6lV(R!L)_n49qrFV<qM|v͝ցLZCq R2ؗP~0] >G<]INġi ["#-ΝWw7.Xyb&IL*>28df %;`Y*2pRï'U9SHI$dt"=#fwpê'/#/fu~񸧮:B(~?Z6P.# [um6/=;,Oy"2.?*`@2}CnuhS>iL.45pQ^E58KlD;8&"?`][HOfexůγK2V>AYZxzZ: h 0:*6(=M0i253M Ě>Zpؒˀfp2yj#oX0IRM JxB%NHi!틮::G "e'`;g#Z_5DL$KxzxS"q=%D2qchĝ;'dDV$AqKp֏\_1ǛiR_ʓ@D2c@s'>,tXX)*ՠͅ T"Zr(F[Pu<ŔђᅎLi ,= 0Z70. o4sC|HY*,H1O/m B"8{кHdp;>) XJ>Tήf/{s}oT"tlێ67$5s EukJ /KɬLo:%G%V.*k(1 CUΔiOu{hxfdQ1^lx`jrO.<4έ~n&04'STHwlRÀ4/U&D PKk,59-qÃx,! 1(h[9զa"K[v|\0zPt~B NYsJ4uEæVc7U `L@`u5RIb b8D51/Q%WpnՒ${5lwCXLMڧR_%:'D1:uUlYiR>gSaC.rWff"I?DGat{";OpH!ĄۯS B"]swjxn So1gZ/+G yQ2@0S%DoiҪr}'nTMd tٕ@(|ylۙaXݽEw=<p>aM8`6\"J;n9fn6[QӊrpLؓNgH*`6s HcД&0 52KHs,e):[B(&#oH\j^E᜼U gҧrSOEKU?'Gab2O\ endstream endobj 655 0 obj << /Length 3095 /Filter /FlateDecode >> stream xڕv6=_ӗUΉUQԵ}J3I76uݞN Kt,L  %;JgE@q-_ߥbiGv{&8 Hb޹='p/a9o})pnnԛG^_Ɓeu 0)lfu\H;~{pKvxwI0!.&)vl]_u!`2aF\x.`:x{󂾷MU5aXTz^ K+?VXDOM~(G9*Dl4C8 =h]_YUi4cLŤي:~Dk&PSWeg .:< 5m9CU'PbdC3շYe5"YV=oX 69&`nl {ʼnZ)|ܕeKW^WG'ҩ`dȪ]:ۗ9 qTE3˚00ڛW%]n ^{ɉR,\9қȀV|ީIxXv!pk[Yk!Q&K>7#x[/tjN"(@w:FhԲ7x1Y'ffhMj K)wTvX h)56u37x.{C*~0znƥ< aBȦʧs'FDs5b S:E9Sboþ3H[2?S}chޭ Z=C"mt,Ƹ$7$ٖ7?&Ϧ""$i>,xs賖;a{q7E۬!|HzZI@?3ĉe6t⊆)!(2gt0 cL 3GM94~lʺ9k7&Iχf4{k)Y 5w5RխjQ|̬'jzuD?9g#8É3_Cy-σR4qB#|m)Yu?čP'..*qOs$ωؙF."N|p?"7MoIb̅|h2)qEϑО3#cL{Wd:ͅKݍֿ4cae;`58a\pXr ܐ^B[ϴ6$8Xug@ r@-%Ǿ2g z3P ӱQX9!f49@:m)RH7pÆ -;9ԾϏM5<'gMō +I,4kM,}ϻɵV 9. W*~wO;y)֥燐1 $}/SlaMM_Hw+jJ.&o*F;:!mH:eA%,7Qs~kɞRB[_AJ7$EIJ|69FԎsP0>n'ضbR-_J[7k4XiKµ?ө0/2pAC[YV?F`R8?W (R{\K?4NM@f\+ j& #}55@/Gs cކ|(iV^ cS:biٞpe cݴbc9` &N3PVƞ_C@jF(Ǽ]OYrXdm;|=_Ò )A(o7-kՈ`U"}5+iLJ8=YpsTF.(AZnf,Jy*8"ElRK #tC,bYg| cO M6j.9Q(l endstream endobj 663 0 obj << /Length 2756 /Filter /FlateDecode >> stream xڥY[w۸~Ksl x}N{힦@Tʲ;"qҼ 0@~/v_er,jHpālqW.>yo}ssw"|/gQ{o.u&|x{uIMnYzwxQ ۛwÈ?~;;r"$!{TıZO~[Be`{naD*(׋ۓe̲/ҌnPzyU= ~}/E۔Uwz;G~pI2uz պ{pǻp/㶮yڲ2֥݂%^H)(ukwK 2p&yUjwچeHh:55))vvӮ`c!i/{mqcDu.6%za 2{4vn#tv;{t!I9L }Op2|B A5gExawà Q ݠK;{;Ƌ#[~_phB4CE2b N6H6/Xf ߪk7% =ʴ5Pϊ'ۛ}^[4*sxG|R#@5Tq+惿C!ho֕q*,?g{8vA{y7 UV*R"7pa@i.I7FcF獁}L=D C 8{KɔJ.<f74l0Ո8@\3!םSg`n@: sFTA4u0!$P-G40!צ%R`ZĆzEĀ(! i$ǵq "{V$lU(h1-KRB,PL zs^woJ:r!+MD(,S6]7S AHI6-L\+LGKH׹y@vv`'&;a5$q?1TK@j:Tݚm~CXڢ7=b ? aT|W}l 3Nrp>S]>+1{(6lӥW=L&:b[fSfNn n1,5ꐯ! SB8t[C5eX?뼹g\WzE^)f/ QY'AQ=F\< RX0ÅuyŠq3\ eš9FM>QC}纞=^c] $'7M,aͰ9f.# J XU /:q_t =+7qv[xS +x+@TCU#B UK%F` T؜vXW6R2>>^ #Cp.?OhڳL;f8$B=utr`Y<$.ֆg1߻7+Ep$ X׻qnBHgbE$H OK[MS%ⴏ3rBq@jS`fv })b :/ p#A,h<[V܅4RR5Ce{%oSRA?tF¦CUJ4Ng/C"JOm U";6PG!d!P*B5 3RMp}w !_tR+ zz`Xd8_ō5-$( za8@4:;{ÂMb25 |/2N@s߸og Dl7U5}|!5E/^?PB"rd8yF`8"J]'qL G1U`qnO'=! MCk'SmÖf*1'oksuI7 i%uܽzp~Nqf]pz 2F/ݐe kWv ~DDU}Eg8>{(EPL3ݭJH Ns \'\l_ۏTH*.Ci$0oJE?/L epTG&! pzb endstream endobj 670 0 obj << /Length 2211 /Filter /FlateDecode >> stream xZYs6~ׯ`e#~rbQ*Q%@)r2,+[߷(2S[[/"lt7}|7 ޞ|{uMʂ IGHWC~:w.TDWr _]~w?|7Nc^9PX"U?xqꇓND3A%$Dߞ|+C@O6J%/'DhLق$u뺨N0[3x4l電eY@pPrՌ/$oqI!ZMЄ^WAu}W̘6Hƃc$U)J3%k\5]g-~͊ _rgȉ_}<36uQEu,mh$,l Ru6AE,4UZ4X(\kd*]!mqȵejVL v@Uw2RaѮԵ0#mg zhiNZS/՘u6u1pz{Y gYkGo ^]L%?5Ur¯G|97xQX)HΡ~'i[\P4uBD 5dfg+9R YD %*a$>5nվ pIQ Tfpxs>,"j#稌> FC]? =BT2Kgtѥ9ҖE[LsBr,Q}QX 물vkA}nИXx'tCh'[Q-knZTUKSecFk?| /ꙅCH%6+CH<]Rph (\ꩅ@cH)j}ڎ=$U*ub}ݢݓ5;-,a1J00  v/Us.3w_m0 Kg0,ov@ń7{V:er)77k]غ~=PaV8^hR~ *4y5m`O&}T<e [jT4qʢWKT$#ߺ*&1Pᙜsz8FcUc*\(. Oy,5ʦƑ]/|5\;E]꼅*t,E( ~Rf^8Pa&޸`\,G]v6]TLLWϱO*'+x06,x-K T>r [AC: Ç.Yz9[2k(pC< 2>d)!9(kd"D9 ]B8=={\} Po knG~r%_gՍ =Ph]ɧOֵt$a2$ꔖ]DH*F@ RC4ᇹI7 -C ¹dԘ;o$)Fw/B$o^t0& wMĕnm`^eY!_֭ʬ0[whe1:Vpk /G ik0=|Q"nÌ,͙n'r 0IkܽoXx G IoXF ݰZIw_pw tlkݷ<}#(w•,/Xݺ_)^3O/}KGL 1!O˽3Zcx9T0s#gs0LC31CZ3q`\{D\?{m/1F]ehiྩ`^ó5 uV V_t'LH4:Geq%EW)at"Ґ%c endstream endobj 689 0 obj << /Length 1890 /Filter /FlateDecode >> stream x\rH+TEnV5E1 8Jpc<ߧ!-#;72&qɭsnz œу豥*&g (b -&ߏ_LN^2I"GPJ<_=zx|r|x!o<|d2z?)7 ҀR]^%ũYA[S|jG^Brϋߓ+ʸfe r5h[Teq6ty/DXzEaJ4["y9c;BlkF|Hdţnё׮^>!zzq(1ݯ .OPu5]geۥzC$scZ}>Ɔ ?/\B|dn8@m2Gm`\Wk4LLEPYE*u5&e%rŘʺ^ᠵ`tM6~Z*(qiZܜ/e.퉹s~Z30T Xk*gzZNTEHϙ lDUP7?v=Y'w6kC|XFJho$ĪB|xX}S>&^/ٍgKb`GC~7ಚ_Lc `'<Ó.mW.[ '|]~Q{?zϠ#G00!nh_zՒǞWiP67B|h nh BwE|:ѾMQ>"!>2DdB)TŝmO#Uu1]čuARMel_&}<>٪4N})}ڜ- C|d&,TR]!\V[ i)(|[TK5Ap!@Zj%F`р&ίZCPR_tds6G:%;\{1$e$9{6B|vvbS\bqb!L]VӜa| l|cF pTcyc͆6f~4M6 /#djc^L?7lfH3dPQ7ԉ}}6&"!>2DdBD*}{tW9LMSSg!ڜ1<,tL #%GMМK bM |-B|d8&gIlƆHcdʁXؔW5%z8݈a|M)l|I-kYU*>gM6~w|W>FtM6 e}`p&F.}:lYrft$c&.4p?b=>fjtM6V=k,sե=|X)& XjB}^M].1O겉#@M^I؝]򳇏O6~gԸklLl-!> 43 i^^cC/L1!>u45\6cҧw,&X -(rԏLX6xX Ih( TⱇM6SAxḑٌ bfKcҌ{qӫlG+2-? m wIwEۿ_ywmi7[YuuY}t~oaE)u  twI]H3>E!l|I[1}xkךQ#&U:OՍ󁺜s1GF ]1G&߄&]<1b_ W ߕt%Lk𑱅&ߦɝV=ul s]XR{pHvͯ(9KP endstream endobj 591 0 obj << /Type /ObjStm /N 100 /First 878 /Length 1607 /Filter /FlateDecode >> stream xڵXn7}W}(\HF\@ qAB`4IҿIhK}%p893Y--5Q<(4@CT},!gk|\k$-@q.[PAbΊCiO +-4쩭JL%M4²:1cP2'`F_$c ayFK#%6,Wd!SU`b_8e R,&K)!+ 9*/V1 9nc)gs1lʰzu|*ubI q02f03SuMƆ&x>Cݴ&9p ÑV--̆sImLܹ 23 p)VB<11|90R$_+|V;΀i`9d/?N,e f׬>)edrZn~,.ljXgd1oİ8g2qdq28@43la Cmrr2窊{=(a~Ûɓ'$]`-VDIX Vbqj!&~}`֘},18I9"#fnԩ2ˮONu89 S(9rXv :zHf"`!`r_@pJ;;'ӳwaby5[;7_N0p.q!"1z9Jlxt0Yxj~;ѭ&(HʥT4-, X("}Xo,XU } uas.=i^)=0"r81(52j6(b^v =fA7Q.~rizE=87 *a||7[Ɵxk#Cِ;t:AG"hgKMR(0c@@um]&[tAL]PWǠUu!$tAq9QYb9-4QrT.ktŒv L Vwݏ?2[Udڗݠf;0tfǕһהvsTvz JJ܈T *2nw 2\\neJGT͠Ӂzf™[kPmm_~oco3A{M:$H[?eh͕c_ k;6ٺzhdqE0e .FP$(G iXͮޮj*(屎_c`N 3[o.:B2xAFaІY,'-]BCK.,vGk]X[=bH&x\Ҿ+|쑂r E $C{Uy4WXyGn[{@oX˭>p)6.`F+zH FL%w/LQ0i Ns`z@柳O:-j<2q Sv endstream endobj 747 0 obj << /Length 2343 /Filter /FlateDecode >> stream x[Ks8WDUE$8sNsHe^2S)dJBRv AkHܝ݋(XQ7 ""#DĂ ƒ`6>dJx24r.1޽w$fWn_.f_/$ 1HdOG\D;;r0NgTWNj_Dn1J#8b $FCtDwIP`qԟ3xb@${i-j@CmHmwĩ4yYVE-TDQ4vuڬ2W#%ȩ}E\_'~Ҟ/m PbpҞP$E/_:zR?96]ʻM"6UZ UW~xtzfQ,Ծ<0m28#LxK|hH(n{Nq#*ibSoI.OJ{F@8ZUnUus2Uw>:I.Ga⛂#|Pq3-C9N k)<%4}do,TM(4fk:"mPpL2b5<. o/S: A W};2U5)p'VԾ|8%ZQh^4ceT%wY~ .h*iہAGeX!wyQo^2J/5WSJkZH"3DcQ󹲈c )wh <;sZ7 mj.rVƓVbd̅͌oYY\;,|:0ĉL]޸Y ~} ^GdUPʶM_݀hk l|m.@"PBBp=@;J1QXssiaۘrXnvx;nrGw잣֊ \W*}/CKQ97J-ִ8AuF8GȩA>HͦweB$liCK3mʩ{=Y^o {-PZ0$]jlˋl=@?Y4(M^rf*;2!lXb$cr6$c>;&Cw?L[ZD > P1b>,} ӱ endstream endobj 787 0 obj << /Length 2607 /Filter /FlateDecode >> stream xڽZ_۸O!, T ĬGu$Imuh{-bK>K޶w %I_E3oxΞtp/aI$"of@6lt#O"NYnvl77۸+st@ؘ% dkX9tļN'K6 D^Lh^H%,V3dlZ!MA׸uJ M[y@\r^nzH_n),@%"=@Яf a &iu 2T`Dhھۥݯs rRzbtRk}Jm;k!mB(~l0JtY҄zCN ".M)ǗtgDڳ T7Qo`5l+z}>d+7Oqk6f~OW5F%='gjԊ`&S2/`z˥iZoJ$oڢj>Bݑ oxc$1'ϭ8#ˋ3kꬺhpr#7D{^'9 O|H+lUBJ<8a6ƛuTpCQ(L@9>Ç{Xv֌o!l V#`ߛ6? (=a>,p`}+W,Lpt ilbܗY;q4HHauy $\U&-*2EZ^ S6۷hlU-Ҭ}SL7}*͗Nzʚd<6pBtCΞLceUe OJj`Zs4+BY#BKUk;4h@4F͌fY \#:_yQ_[[JK( m:g-kzf^==@> /HAђ>9 Wn]L1grYޑPj8P,kVkC4 n&Jc5Aqil@sK Ks,v/^JTritai+ t:!࿏uPEg>myGؒc‹djPS9دWX+Ptx ENe=taƄ ܯۓ//Djbr?|uyo8}Wy'^c|>?ڀ(O4ѡs!F͙JZpYn)P@ItjGC5$b%qɸlU{ T~ 9L o 6@%D מR.W0pѮw3ո;&mN6= AP]PA J h92sYıc41Ͱ(wcR)'T."Dt쬰_Wv\)=Qצ*zuovE96K)˂pց)URVUzz*w%_'P8eM)p}Wt&5QSbv``#[T,cv5q*8G Q2,M݈Tn`Z##=kCR}wI&D;/~k*^-}2t| X)}XJ͈|^ЊHp;*(~?ÄiwA<E׽]_;^3閕xv\wMtߛN8s1qÖyU?&hsG:eM6E-BC'T wE.^ ޹$<<܂_xo&aG2ڗ꿅m endstream endobj 743 0 obj << /Type /ObjStm /N 100 /First 873 /Length 1356 /Filter /FlateDecode >> stream xڭMo7 +tlH")J p[$F ߗI"9,(KEi9JHŗ Xon䭋%<,$qJ5r-+t3Rc8; 9,nϒҗO}ܴ>9\EX?;݇clwpfOa{?B7ݾ/v&񶡟wo/> {@E6SZ5f H́{+4y9Alu,z'jn O1;tCxDҍቦQ7'n Od1<vcvLڍቶq7'n O1<xcxD37'*o Od1<zc8^@8l oN C87 q]5&/9ox`~/:ONG|XؾKԞ?dOo.f1^X\^xřaƾSJA/f8D-/! uۻחݷH)ڗ!h"\}| DP&ᅊ$`H;qnV~zfKq5rٵr_ z endstream endobj 802 0 obj << /Length 2528 /Filter /FlateDecode >> stream xZKsܸW0p2|OcKjxdgȑZcYIO 55*ũ\FuwQ˫?̋Iz!%<0DػJW/\Q_R_mWo_K윟>?#z;./^/~Pu6P/3JGu:۪(nޤ!XP XMմlΈ cʾt/ٻ)4!D">)? sH:y"#]1ڛp3ڤè"Jt.,ƉRݚ[3TfzTˀY P(:)[f˪%@nS i<֕ pkr3Ao< H Ks 2YBN 3h/;1 WBI$? X*8ث3o;@Kcr3'B H>#zb `}aCҋ@]4S:q.׿Vҏ0L?c@16sRr>j;4/;z*} AAAf:>J}._y;R( ,~CcdM!/@,Z``Hq >+q|.C%';I޷xvUafHòoxDHG7ngn QP1 ieґ61(P؋{Z|H%8j~;`sWED2I A_?wE~mL"=[bq zt퐖ZѲj`=!cT,4&5ERϙ#<(cy,:#2|,!~ 8Ǧ34m: (vF~)!!ǎ%`L;.b-||zI@d-v dG%ϲ[VecG4~rI.~7 K:Mal&ˆКkHucU遰*i(}N6r` :F>X/ Bv^&?_m6uxz!/ݙZu֨b[5f_  B \/onf O.u23[PX>;:$~w{HfQHb6͈CP$Y7)A(r|66C76ٺ2QH [6(3;*lmQ@,+\=G6%DJx#1 )G3I&Z'碤-)8%Ύ17i }0]+٪`!f`~6OHU,rp,(MRz3#;K$(d6O R!~z_&|?ո1u0h!2m2EK5ZS·wc~jhwD䧴g_)4$D(x] 3$v8g*!E2(u{'2Rs,[Cfdjf}7}tpE']5bD%)LDEw'mU9@(y,@4E4ij`m@5t.l3^߃_k٭}юsF 2{'wc%0p3@+8r 6Uc>5!]3>C9h/bw]WJ b~JN)CeI{F֣K C'K$_NߜܿNsDDd> stream xڥ]}~/Uc`Hfgsw\v|IvA&ɯOR jZRw#:Yd^8D,ЋYO<}7f8݇͂ p^OJl?/g@y \wݷ񝠿8N$N{"K;Q,8W_| Fa, 5 cÅ|Ǿ>of ]I\qB\ju<#>WIƽZnyƐ5ſ\3ވpݵ9펩O* fֲ{ Rgc$dSd"ԇ֌9UEК1] 2R.T#wiAhh|gxc-wG T">>`coAVrjV5|ш!j0wz Ƙ007VIH+c,2k2)p 6@Cl`7g 1Dj z򞰲 cP.$vn?[χg.FF-~ @/ g b𙏑7nnNZu>>!jY& _,!_7 u[+8( Nz:cLaC#Hҩz\Jcwi&^e9-o&Ey5|tn-nS!4))(w. %fnM[2 V9k՞=Z7r[ֲw'}P9!Jv 3 VN] N # GVz=~GhF6o5g>MUmF5_U5E͑kQ_.8|\QӼ k=\#>@?TQeX1 ~Ew*dI@iLm@h[WZ2y;i Ii q]Cj >4}D#|k-;8ήQ`Du͜8SHRS9agZg OBvK4Lo4J$v".!0p@L:ue-0oΌ쮌НOwP(@FC!+# Us85dQCq9&NBlE@ whS, NMh*5:OY1ܸ$Stn*^a;(2YRa :cX[*ؼ7u+K,H!i gI|o\E}j}6;Hvp6]5Sh &~G(CȦ#_/,YXpda]ea2A¹56ysgʢeQ?H*%·[-Akii͗P(2ԭ5$4 Hqѱݖez2? 3w\8ѪE=8Qn ӧfj7܏zϠ=!Xz:2Mb6R? (4"g@sfdN<| "O,{whJ t'RS5f*tgwKa?"KtDŽ`gSjF̬4GZDWP["bTJ-<6yS26hq R&OOt9L[gFD AԼ#G]Y{6ߏE?`Aْzg!h',>. Q@;HD2zD$QSS4刀_L[L2lt7( W\"$>MС-yXJqI 6W@9ʩBb,|!J{8L;Xf yOZ3$q(ŸP 婬V19\?؂Z{6Y~?N%]0ɾ)6U4jkTB~;U(V1F BR+I4xp 59 1tybyds/uQ_ӚYۧ}Vqg\د"jжjzbcFk &R|m o8 `o<|컪-r~1 >F<{(4ܳ<\];ϕka~ѻp~wy¤DPv&ei6{'4aonz~*~̧zQ/oo0PA?> stream xڭr]_r*`y9`$e'@bHh */DO=}Пmf컫oO,UiD,U&8 9}n|g|Fw}ڻ~'~}eOw7ߞ{J+LDEvW~g90󕁩WZШ߯|?VtRCcec;D_.f!SC  h~wKJv mD~}[o~[PۭbE]1^Ĉ@QnhXG0׉W7Nzrhx+܌9ÒsX[qjZB-VN^~.+0NZzH=GҼD`Ar/*a! .pG!(&EY!q+ r׬ X\Vn0h#pl9qlbCWCS]F>$|2W;۸㞿:BtK~Ùl4v 2\z2;6RXeYt}xİJn <1Eeq/dpφq~bUGʿ&!mQ bh!Չ204j(37aP9^a M!x 2:Qg̯}F)2jS/agܙ C@ (u ~(!2ę>؍P(1R  2$fSbUW9ckrʼnI"6a'wy{QMYwe.[/;RlQoY_aJ[@GRb~*ȣ-G8~Cq6U TPvAJ A QV^5 U'F) Zr1;eӗLRwÜd*"6@cfEZ--$2۫.2y(Y,&8aо̫Aj@w}Grd( J|>UP~pasN%vdTA}$9PI±ۮZ"@ L-rL/,}W:06Tb%s*hP4j tl C{ eiWQ &A N*EjLB8!ӆT_<(S Y㚾4%M7rU))7"䌒UaL$P*hkOH֌kۧw fP /dҵ+Y6QPʜ=Pp"d wGS %\PgtԻwm"*@P LjSMʆ[)\%Qp-=dR>D^q ZnR!;`A5wY;J0%#~6NJ'ޕҕzKceO`\CM3]viwˈ?|kYq`hͧx-Fܽ+%Q`=Ach˦\M0ۜ+M+7'SE)(Hh#8 uW"g7DRV4\шPL~"EXzj Sx )\ BMeݟ )GE|;U؛X~o2@l3-/dg~7̒O3Og1TC-&?ִIyiA X=zF@ZȆs gXC endstream endobj 823 0 obj << /Length 3136 /Filter /FlateDecode >> stream xڵv6_'zBBoIf&('g~g0xA`0/d8W'ϯOL,ez59Bb1)r[pOHds/ Zz//Nc\|y3da(?4yK`"a06yT'i'ArY8mEMӺ}?W)f]7K{gQe 쓑lv2im^޳YٜeJх:k S&"zg4">,'($ELI*̅AV.WS2,_ |.B`03_G f>lb. 4A<@D:Xli q:വ5gXird*bl.< ܑ}cєyZ.5=25(dfSݓ Eݢ}аup5~w}EiAʧlXIbF,mwB˜ԛá8 rY6LsA=ǚ3R㍃jt 7'yj_ BYÌk_NZ$l&i;p'omJl*gp DxW7SC @m,r5qWH&"L6־$&XM/C1 px- Ux6ME'4Zl)3lM@Zq& Óenvgw-: 8?0آiWT%vmu>)="r &Iy*jK}&N 5 k:xBGB9ə<S-RTBe[?^ h|c:,V xªyUkrq\aNL ͮNP ˅=N$MK4 s.nʡ@ve2ȩl)ckGj'.A;ʹ7~}`tǙz@p{QbS'czfLf6d#J.++Zc}? =δR,iA']#'H_d2_ x^ 6ŒiHs_K@*jjt1(Wi1-H\kZjUI:3B;RLM}|e!;L)dD)pxJcL) iDc2QQd'i$ڋ*ۻ.o 2)W+ xKS0wYcD^cIr,s`Fx%ڌC#&bV /rnV1S .2}Nr֦Mڸih&LtUXE"zsVf}a*MX&1 G^wᔚ-U, Gf#^S (dQقdðn!CZT0V)h*0p-B pڬ[Q#bPnGa+hZjxînl.bX! GQpfL0Om rʄxTx S;lT%% 2h(@tL\6u%u9U*[SąAUb6CמXێ ,y8p9 AerK4މZ$M+qN&$<^ HΡ>w$G0+i~7o9W._ m8w€䕋|EUϭ|wf2ݸNkLf,&_Ujfņ^=n}⿬iP~QRz,+ӯr@D.V4h΄xnli6v#pN`D F} "+ wy߸a>}sǜq>d]KmpY$8.zBDѬMYrBC?ypTG9ȑ|sqmj3b5Nxmb# 4̠gYT[}K+a%έ8Wq}PHE>>\6+NJzSH*ʐCC<?W(| #Hصa)Rԩe-txR4}2@Zv7\|?X7<^g1AΨ{} ˂bݗsvV8YHn+;PB($u!cK ﱳ}7 K,W %%;1~ya-"BiRUPv2ubOo?KcNp ;.kַ3\r{ub͡fqw:;1Fj^ͷ)xF,vbTzCpM81 |3CHW<&Y{}L m0s:gNJ7Po'!' i8kQ2r)ʢ- %3HQ <A׿7 Ӗ<q@Oln 0?V}qgᵹO5<LAaꦍ[\޼ʮ﯆W)v"ǟ|#8SLבiTͯu7<2ѯ5+7#8@"$>_yvy!?x\&=ῂQ*X2LZkRWC@Ѓr" endstream endobj 833 0 obj << /Length 2841 /Filter /FlateDecode >> stream x\r6+Tٴ_duB5Ϥt,֔oJGR %s/y.H1<$6ǜQL@m+&81g1WtfoOx !/')Uܐoo>:n=lƈVF:W'vȇc`˯06 WE2%yP{ρf3#H8&/0-n6^lts? b:EpE d `ѿe8&?1כӳآ["&KA;yCܮ.}~3BBs?a? 1I ]3/@S?m#>5$ȯa*Ƈg!#nCE2SThRNa@3 Kfi@.W/V%rzDV5%[gz,?r3a$ '>Z &u㯳XfE kU84]va͢2z|1CXJrO-$R4 #SL |D#@39ѪTA& {U8 ɮ.;@K.v1*_g`=s |׮RM*IKjNpMMѪT )Ֆ+m/r͐e4Goh~Mvu([1UpQ cr>vПyʃ/ NL:|ȠjU)A;(e3oTz[+ <뢽S$eV@oBt-@S7m*OLX ei(>rx):d=?&NsMb-11v0Vlqd_Vcy XE!ќ0.,i:)6ZBcAdzDgu7G%3Gw8&h Z܅zb8zb|jg>O\Cs܇hr3䀡ot4f ڀzqTͯI.un `o7.ڧ;q{56[4%&@S]_7g&~QccX'G{[:mwDz:p3-tΤΤmdfmiZ?ȷ$6LdOG`$ `mQ.ANc{Iw-^VsG_dL7D0t<;TK:>l֤-tl`ĕM$\~h./,#eDtżП8M u{:Iw8]3Ttƴ >(C=dx`g0) œ޷pdz~6cV%945E{[jOo~ J=MVbPJEelh*VJA[wpZ$Ev7w 0,tYȿ\v TS\ Z1=O5^Ĭ?j2v n0ECy&=94Fu>yO{dia˜[-5e(@S#]w|ܩuVVJ*g*e#L9L;s/Sa,*F՜ꢽ#*"A|YqjЎkM >U= 谤3GG8&ho$*yWׁ"~ w!\ 5]s͂<\YSsh:tFФC¦o,ZN ]4ȖVWF{1)6 Z*@d Om=gA3\n@:/x|E\sh꧍VA?m߮7?2!Ȝꢽ}v@H7"F;v,bV_?=0 P<0+"b,&rɶg¿=!Nû? endstream endobj 883 0 obj << /Length 2404 /Filter /FlateDecode >> stream xڵvFrxX}'rqfLl%s;Y`,&@vTu5cF4U.x^}:rr2^b#7y!gJ*/4){?ߓXWl4&Oq볋s:(T p,v3z[qz}>yHS3E  (r<#73Fzρ78-SZ2$ 軣i{! ACДaGs32b*zD1 L(X{F8g,d / Qx޾p¿ l.AK>Hro3aVe #ѳ;/#yfSZel$d,v~RS0TʿrgI=otU}'D]U8NǷ0zlFIs#HAD5>Y " %? &\+/UI {q@䮰q25mU +MOt 7Ut Ҷ騯 7)ǬnPp1,?# &/dcNᅢ5|霖$/hVt#,VKG2NKn ȳeCˇ7YƊ%HִpBIE "&}&I,22J4/üimf-󞵤  *OZh >K6mH!En4ZZ-HFvXo'U;Vuuv9A:_yZγɃ#{pާq!u0~>7H(Z:o%MH E^Ynnt8OUIIq[ä%DPzc&`d&U@_oz;M 7"S|c;LA=L-X0%-i6XNjs&TX'$cQ kFe Ħ8x󤴙7,n6nG𘬛/ICc=]"O~ RX tywu) 6LVm5 :&mի%>{&.muYEy5=)Dׇ{gidx/a$i:\j dFcq/rkkxi*Wu1 rQý Xy vCɎ]U'*UG0a] n*S4j[rhJi]; D}P'f&\m4+`3.ACDh Nc uH> .$,/.ԍ)Lk-cf9޷Gs Az;ԳXYn TX i:= ت`%3& oGWgެt0~yǀs~#}rWK8z HA\ZG+Aِd+J)2c9$ w_Vw{}|_f~R C~ܥFY"&xI[dv|If>3.7¾F0nz}eq2U~0~h7 iδrrgUfw.>w$wq2ř?YyCX2#IH17 /1K}; endstream endobj 895 0 obj << /Length 2578 /Filter /FlateDecode >> stream x[[o~p^esŷNĖS'MhqmH٤8gBI%G:,p/37\wpppA@: 8UG`D" :èGwiO}PsB=۵wrfAOx>p0ldh||s:'{?8ޒvG/( _`pf!q:N}u0buoFN:ϐ1λ,QkR_8!iGP8(tnUj-o .#l$b̧ I0Xt!#a7P }VfwJ>w uŷjTd9Jyi8GuI/P_4QhT~-Up-z|֢T4ڮ "P@P{7ҌQ SlC^SZ>oU<,U8>;iTh|?aM8s.J-uRu*ұn1s3OtǙ> gr$n{Dv(3( sS{ jt6M^[cɳT Cf냟Hp?M5&ۥJ`;}#]M}R"].d>FZgvovD׍ h_ֲv9nP؋d"J1_b>aÖ- XrPcԢ-o| 5( !# ۘrp?|Lï$xW/^IN ~e6#2Yy;cpiKNCHnPk+> ; ޽rtUqt3ïA\ 4Sm^zF&EY,:4{+S beZ2 AE4&7v(Bn>\(drXGYODI[YsU{Xk?P oƠk~7=SW44uSmHp"2\hs<Nw<=)+8H.Q9 f%of*/l(әȤ IVvœb< [u@fY+4sPq4VEҖ4+7>Oc  "KD9p>L>?smcʂ@dmd ZӳCK\3Fdޕ5V';ܳS{T&a^[--K쬴+Ǻw5͡\n^8+@'H,7&5f8 GhnI^hti[-ap:xmmSJrQbv(m7yn@C=Pߓe\ZCCQtm%09 b c^U Tx?ˊT6M Z=-fS9*(oO hfڮ76 Ff [4{Sm?` #3Z4tnqb!?Lf~lUk+px]0y-lU P'O Z,X4nc<({BɌڳU{Xk?ɿ HfĞ3tU@CC7F$ fѦi8ҫ\l < l~hb&/5 _}eP` w)JPi:SR}%M%]%%a,?X.еTEqvԭ\JmQ ^s` NMtm͂IfBT+1<܏a:R6H>\/gqKdwNkuŜL݁=WaZdh{k?ACx#;~͈"c`, Bf}0Uq\ߥJ`GLp6m`Ha0I=V; tX}1jIW&f!>SYRPTsL}r;>tZie߫$YkAA:+ 꾚hi@Uo<* r MQZn&@BCIͪyF+}$]%/x-g+ˣ31ރAʺRZ endstream endobj 798 0 obj << /Type /ObjStm /N 100 /First 880 /Length 1418 /Filter /FlateDecode >> stream xڭXMo7 ϯб=T#DF|m9cQM?q츻݀֗o(J%Q~8YOT-Sꦉ&+*}$$xvIjj" ?Rg;m# kɈ+,ޒ?Pe2b 𶿠DdšU ¿t`¬as \x6m!8 j |+R0R RbU*d{f8l16aC,l`8Mк[q'hu2lKqK\[,1[^-+BkJt\4Hb,~2ɢng-gh`'DUyj% 6x-8c'CxPj$bxX' [4Hy2`4 ;ST[Y;. snbK~>( g q 3DDȣ@|؛2!t%dXtr2/Y%_=uʂ5{_fz*W–{ {>J''i>^r)'c"_ ,_Ɩ@-sn,9V _{l g L#7b.|ׯ D|w:]zxɻOTZ&sazvH G e?b`+fD׌Xn$fo&Fncncv3cxRsbz )p a9Kaqeo,ƴEŏ&Ir$8*ս N5 q$I L ;:TKGh"QDON#ɩ5^e[]BF4qs" BX=7BJ;N)l~X7WգRwSMmmjA0!1lK cE`lpk'Y)V45OGzp.pZ dAqɍZs:&ZH bn^p 'BDD׵hQ ke9ANxNrVr`Qqjp+ "ί '\5K4r$8삜p%蹎UTBA/AN*B)AN*Q\09EI ipvAN`R:6c!{Q!{t]y8۞aYu'q9A· Ѓe6A7rZ>~N|HL!_. endstream endobj 915 0 obj << /Length 2764 /Filter /FlateDecode >> stream x]sFݿBӗR3zs3NNQK@kTEҮ_KQ&3{A,Xw oų/SH4v+7"|7źXwwf}u\rFsKsyO~˫e8w7WT[*@W可^___2 Fr$I1vj}ۅ o݄Ez.- ~:MD[v@\-^+S{n~ZSv[QY}ƁU8fUmkrئN&OO[f vYͫ&;,U[摁$wAPa je]-;JRhjn |[sPJ`bPn0+ҮAH[A HNV[3P 'N[3 <8:Fi^zdE3,#`s|v|YX#:3 cbJgL 3 $ʮPyhd#+"m{o:ʦΪ{BgwB\] = DQPG |ٲDAϰqHCc2yxh) c 3[jU /W"2 s~B1g8 |{xO% &8hT!1rEܮ0"pV1,OPa.l_`4cda8UqH3V5YQiY5s,P`"r rl*!-9뭙9vПEnD!7\)X>d-hӠ|y8T7H;[wue '4Ħ2t=XqP숐Ux /Zv2χRA" cNQfxРaƠm %YOAJ|"IhBulg$C AjvP /n 2!OK'm+4h o U㲗?6$0%%Fֱvj@`P8)d@( Ǻ(. ` HXi&%; ĕcbty$伇~oYqٟ6f[01=SZJ*G 6,[K UW(8 2jZDGm6e 5\5p LV~ODY׽q7ˌP*|UћPnCg|>Tءq"}h4G]TB ~n2B)SŒ:JK$]0fJZhNg8Gtjvĝ?u6| Fn:{wi ʖ>54,(Nn"2Y d/A䫼\#jtpJ H֕ZWx +QAqb拹dhy!ll,)y =+JˈRFʨFђcAA)"Db@Bx{4`?{|ĉP;c() gD:R =A3yrV3^yaAVtwt~ݛYgv[= qTgҁ*+]մ-}:]𥕵C|#݇l}@[,)Ɣf5?080 Y$1%54%Xu:3v)VFަl}e]79Z[K]pۻpwgiKE;N Uyn&kLHqǟ҃7;ݠT23IKH;h,A͗JGfk7}L"CO ̏\(ޘ.W* ~Z~Osu4F;} endstream endobj 927 0 obj << /Length 2388 /Filter /FlateDecode >> stream xڝv_R=CWOZ[lܵ][4%AR"R*_߹"enɋ0 FO#oŻw?ҮUж,/~4Qq0Zn/~`Ǒ0BQnNj_x] x#;T>Ǔ@N1 ԾnZ6kFnc?u*Ky1Mmf%Sϛ͖,l' drh,(ͳ%v; ;}WGv eaYѸn}0S"Q\ˬ15k-7YhาӆAK<#֌ܱDG5{ $T cZ8q˪l$JcK^ sv F=2J(LQԌ!];Ϛ* h~ˡjti|6H7?8tyn>(XO#//1CD<~~iޣ=㏎Is0g<>׏Qo<}팶?B~J!+I~ $$JR*j<sP=hAqxc0H:Y'M59}1% l_֘*b-yW6G\rx©lJri^*";BΡ'LbcmY}:V@g`aݨő-=^5=(іI:kʊՔ绾 G@i"fk1|"hM O験- )k R*FXj/⓲z)DЍ*L:Iwj?u0EF8ZlELi^Ah{T !V+J֜@A9ވPzm{>Ҁ*̐oءcJq\oDőO%Il . jdZ*RFB PHrD{U.Z iPYݺS ˒4[fO9CP#6j+ t[@"YX >@?mqJRVf [dC0˪mU z@Exy0\6BI^GQHԡ`rcw啻,Zώ`_ضۑ[Ԛd(c1?S4(}ɷM ڸ%%?;̗]ޚ f]mفTdZ0H e Ir9l9ORũ\h27\_B)%#)>EKN4=fOÄ1t ꅧnC'LlDצV X90*]N(,xB* An5VP&NDrTwsLeOOyvH#7vX`RrWudFل`BdJD8GV"vvϨ&zkzt…Ip |+ <0zR@-7@"K 7K$xτJ"^TY#r9A'8Nr!0[3c³ӳ܇#QƆ"O 5 5ÔDtV?ZlnMUKx9 @^ߕZ);!IK}(ϡa!8EtU5NKvL.PB5RJmD>q#d/~S1yuI- bq7x> stream xڭXs6 _G}ݞY]qu{P,:jK%7K[w{@Ad=yOˋS,D-^̙ʋ#Je}/d*Wl2 ]> ]q=Mb/sI$O`̫?ogn.ux_ ޾_L^uz:)Y$Qp`o0bt#x0aQ$߁/^dxφsPPIoA.L$v_ʻI*bn2)ج^Uc_௲uiW}9"_nP͉XmN+jӛFٺ"'ϳfΧlm9KÐ_UV7fNdBZ˪ o 8hW;jMjGx R%fͦ1al}#Pܘ;cK^U%.*;`nHV1v$o"`39Ց8V7m2+3=n SK =#ʎǨK}<|kRGS( G:WskBq55!{2)`PY@KW&uZƮӁ˶[8s N\_sl\[C<0<v))RI>8w_~|^=MYS1icFFx*qHJMTcg6*"ٮXQ7[cAZ獰n~Is=u5y~9J$&He{/RNsfjY, 꾢"D}LQ~Y =j,p'ڜ0hjH9έ_W;M=.ao bTSeC&mnI^8?@}n!RΞfdIul+SQ̀αgU'#s2"*W5Ie|⿿[ba9~"\V<$h.65Wn-M79FNR4\ (CGnlgah(F3`a10Z43~W| `<}DaI$668*b^!1]o9 =++#+RC(i˄Tj N_n@.iILpsu?3;1N@Ju9F.-r"Ľ+ T ٘Xkqk5[#:+jy7&ܩ՝UPlyB#!/"aibT?{j dB4-хH~s$>NrVG"$";Q]fOD#)tP$I4`B%H4I8x#I>RIl̀X<FD$GuʬqEu8Qz=cTf~a{KW#\c]A "C0uf30PDLFZs/ endstream endobj 942 0 obj << /Length 2976 /Filter /FlateDecode >> stream xڵ]o8=B8ZH}=e%}%:jK^K7Ғ]!9 /ޞpM.<ȓ(^QyiJ}}_v6Wl'qq&/޿wʿ 0l!?_۟ J>~՛L xRJqdž #``gVpw IWn>z腁YT,XIٿ¡\87L0 D ed9K SfH#RY-/ۙ_0zf 0M/Ci dV-;y5aPMQ7=!~7`wȦ\;K@D$v?o*D1ݔ5;HdzS4Ńc7!$ d,/zM!E_7v h=* ]hyN Y#,J,FdLxY\8Hbo.ULdzR h;.)~{[#.)@mZ Z6;GN٠t(0;P<0_q6dGSF:G)~W?4o,Mg @),A6+pv6l`Z^yQ\ .v^Y!Vu"jilZ6Վ6F&jU&"| hQVG@d.Tȯد 9C+U\fѹhA  WfdcCqWHmNRM ph/> ?MaZ%R~($D_f,=+Bv=tlBr;W*#+L%hN1\sGkzlmn,Ga$~DːVUcFc$bntzض4{9+H4Ro{4#Z<:IcF aȁaȔ]Ð aϡ7'LY<AZ \l7۵+|E<6/ì6ϐ`,%vHl{ vZ+=3#;ȳoһ{B뢫|BB`ܮ4 eP0򸊝_w@r&%wb p9.c*\e6ŨznNľh A?\|z!=9 6W~J2?Ȋe&^I#414׺;;"Z%R`YhbADcq/GQJTGN7ߢ8 BȨ9U)I(:y'#EIHT*$/]`rрx@δy&H2S3&z L(&wP WUwr7dV Ő,:K?8o"i;[|wiP"P7b7O:@"J'9\A1 П>7ARWK ȵ/lpqJ5Jш l2S.VjlTNS+6T9|&GWm 4 A ]k^(T\뎹ZsaO찇U]ěHYJ9bTQh|M(& ʱˏ2 MLنxnuF*#{$@TXXeC :ח(WEMDHiϐDVzs؁ul'IC8`dw-$E)3 :a#|˫6M$eG, N%M= &'92CuEtY,q1'> stream xڵYs6_io蛐!܃8&Eu:IhxH.)R]Eb]@ N~\<}}\;TNRYݩFS/?Oٛ4͂/.N.߿J!,W^:_|/MDS]-OE}u 4]zkG/>Xq"@QDZtVۓNc?;/uڙ[GEҏv,NqXI8I2`=(?p}+8<q+{nJO=>N$, BS/GV0t+K<9Fi_E=.n3hhK DQ!y"{<)T(s.5r_;j7wT&m*t(+U;O"AVŮr3ʬ[+ T]]Rm 쁏("WuY1꒜^w5}Stw$_.^#2Oؼ A MnW7ursSLjP37Ijhho+jv5 g݆6tC]H qa@f'@H#e>Iۚ3tC>7ޜί KQ"qu5D0%Y@voy47V0+ FIhlǗlbS2;aaM/&~#A\6g؈8"YIjeJd]Q] ēR' dy^ 'sBHPLG}k o,y!96iiCzݽ_~ :v v!!ݲw&k8v~e8y%2nT1Sg}F@͞uc7Eއ"~9UٶXe%hugץ#_H%%&+͍ARzpSTiPעKS 75qx>zVpT HNcaނ3\ӺHhA`,o۝YF3ُ\^Kza>[3&+J2'vfɪݶ4R Ch*#;P48Qu>l xp⿂Ё[ͻ7p d#}'jZaٴu%#!i):&2Zg~H{ l$U!v6"9^NrՕw1$db6h +-YT r޶["¦ SbʊMD.i MS//ݔ+d,&8@a'u !km"e-D4 S=zY6TLFkM0)ַ݇bu^pf`l|{ǵqi[R"L9A41싶HR1,f9~{zB 唏frP]oR=$o#5k;ި\ j<5 2Ve6u}1VC4Q ފ_.E# 9L-`AZ]a4l4 U[RoMsGgD*(ʨHF)?3ߟ S?J($YSxASx2R~'X@3`Vfw؀€0lmix~88e'zWg98YՅ=A`пBǺuԲ&/myz_zt)CTm[Ѱ: {Ƴ"L{ z uDzw&dT~PM3Ăq8J!~-bQ}N8V&#W)j @r&4꒒*4^}B=qT PjDpI ìlNl<`,Pd" {$j!Cc _NVo!l֔H*|lʺc\'%ƣQřgNr>U}/JfYrX*OKOEEJ^A?-8>j[JEN?!] }j1z66O( ُφGXpCX˰P]4rFFO!$4懟L x&C wrH<#L?)Su!hG%Ga>ZD (z( 5HC=VXk5p$N|8y"T F֌|)bmPIq52Շ@q8OBkF JjN-ZeN|SXEH[UUBVi:uSe[J~GBIx S?)Ar9B^p/6U ?R}fa?5<bC?Lۥԣ;G@9<;huxiv@A+?W@OG?ct^o?#ƙ3&?@NJ ͏/0l<7L#l.'i``^uShK:XoEa)"uϡ~X7^n1QWRHåz& t0~(C9Bvo>xZps} !%#cQ!bK; endstream endobj 960 0 obj << /Length 2858 /Filter /FlateDecode >> stream xڵ]6}w3g"D곝>$Mlcfn -Ӷneɕd;_ْƷO@$Ay.^N.._i$"k2bibőp &3}#BܑF?G/]]W~1{5` A.ĨP [l˪enu ]q*t &GAg]>J#CZ!``  u[-j%|Sf-$-HqFD/nf$wt{MAP8[H78mNOWCx?Ai2폗պ\f_nL{=2 ,np]OOCgŹښ 8rq!5;.q#pdZRDYr(LKcH]}C[[`!\'P?[~Mj˃m<3t>AxgmӼNΦ; (C2b)J9@R'70DNJOӧ#E~e R_%1ُ3]zsNG-"^ZdhT廴smI.GƧzQjW&/DC8ٍ(Ô ?\˵Kpa[Nժ*/=.ܞopf>xxB2PܡZ!W:dVtXP weBS$bmH@["/M gUycѱ*̌{e,[),U'[kw_= 圬U:V-l2 +ܼyGJjswsͤZd_T18uHvW;T۪n#&RJ C^z9Z3RQ10Ӟ5eh.)WB$Vm6{\1dnyƝ3EnÞK7*,Ɉ:Cč}~ ,DxŽR3,ӅY`3J&HZ4k8{-VwP5<!^UIe'Qkj!"Xbd^;GдbQvz2E9C>O5Ey&@4T^5O\v^r:c Id?kETeq\JBv}}xa02Є] R?39+/;[XiT(t?ۏ!\g2up/3eeX>|,}0"LIGaH U3G4CG8aK\ y c5 ja -&}ѥ}-5-AzhLrYnHZ%iE6+02'3u'ŒNi4ljo.wZ qft:ww` #/2/З9`rb`ON(\XR7MkOL = >/o[}&n =@k OQhɼyթeZT!5F34 .Ϯ Θ1¬:$lqB=A)QC 4GCjHl6ȼlt㗖f I,tvz|'S lȄ׃}I,E 𐌤w~p.q8Ÿ֪r?:iYr[&N%Ǜ`k0ۣsBiP>: ɿH"NLQ+-WJwZugitv,>1yOą c~YapO_D vHэFX~ endstream endobj 971 0 obj << /Length 1950 /Filter /FlateDecode >> stream xڵY[s۶~t& ^㸩'V4}(ZY%r|*~vgλ75w4ӑѭsrH038g^?yW1=}9wO/"~>?b>:N"83?s'O#'Շ ћWft9zt>:&,gL`0gi$J* t(cö% NSxLHIlu7$01L8q /\fa8Jb$T_n%r#QFwQb%b^`69Ɂ?`3WŴk >\ BؼY1:X >t&wnI}S~D4~s>PMG,s)_D\0.bf(:+0fB#rK0+,ZNs_ON%m[,?,|ƺaoO@CgH`ۣkפYUqZ?>qJKurV \tL$bRDtwD^]./^ OӺ.vOD%aJ45t֘[˓!rWpT @g@^Ihx _sKLb_TO,'{Ro>y橖V1[a%`)*"wiYUV1`Y+p]m @Ӣhm Ԣ%T+3QUCȃK [*f"1S&n3YC [=@i#5\eEUw>눳$ζ5d>0 ʞγۗ"k'o;te50/rB>0WO` XRjftVڬ WtUNI~_KJH侪mae{5uW=mzV IhXp10r/:R4]ic|jU${)A$c%=qiƖu(;BgןQ>l[Aק!6^tWu@ CC۸CK9.4B2;Ie/g2|Po$0W_7 endstream endobj 982 0 obj << /Length 2373 /Filter /FlateDecode >> stream xڽZo6B;`2P1$ERR@&]-jwb˱ȒgI=(R֪~0Sw{x=sPыyĜD+gad]x <a^L&{J6ҍSܥSmzz4;Lq>XZJM,f}Ooruª9Sbey` 썸D'"킈P!'"7Udi} %&%3_ j* W_k 8-_J=oy˘i/vs{SAO3n7>bS^g_^0Qy@6to_k?^]7]%c{?Ux|\GH{V*Df&p />:{"Hi2x{.V 0A=+bL4ĚUӧ q3{p=BMh`YU$`FV*!fVUKNaj^FBΛkV5V@yS䱲ie<֙gi&i\w `|>#:ͦ<>u h+pzP*xDP;6?J PO+x5f12˼,3DmwEPVuo}| BuRҦDAcò*vQx2IdW@ tQY\Vuc[n0z" \}}98vhmH6 H ^Ԛ$XUmTs^o/"7AD|u@#TH= i)omT[N~p.8HSAODz[~V Kɤ{~('N}}:?""A멩=َn%NKAOw3Clg[!uꀴZ?W߇ PkN)uUd5uWT؞tNflGU/xM]*/1qiwHJ- ӿ')7"w EpX`g^1*fϣ߾Z.Y+uC:e0\4K2Kؼ&mˋlmGLGSSZ>?9D%:BLevvYXp~N4 mNT`Rf ]q}gXKuҿHi->>r₩U Eq_&Yc6v^+ XhK /erPmG"ujāre=Vg ,T#m{Gu *?^ 4" hFw@oz"ICRvEW;DuƻCA mmb+oþ#q)'}mD #`dqZW 'H)N!/[ zb.`)I0 &s{wLhz}F~/ryK򖂞 rRpl5kC:k,A*nvZYQ^%Y#\)oxYɿ.­! wHWؔ m(`N^ endstream endobj 910 0 obj << /Type /ObjStm /N 100 /First 879 /Length 1679 /Filter /FlateDecode >> stream xX]o7}_Gxc~خ"JA*RE6!i]=wvlCpQhm~{D\ű৺\z bR9mΎő\Ԑͱ[ ^'e{/For1a.dS, R6d Մ^gQ#a+NZ- g? a.l` aԥkW*PNQŠ# 3GX Kqa6YlgA۩@?O600@cɀSP\P'jK>ømR|M" țhsnTŠ*^QϤ+ /ͦ =xt&ZO,6jAbOreaOgGg{{] ^q?B~&ݫ~>;;=K/w'Of_݁!P"0yO2HZwv<dy~I0&0da=O›y{zvKE_sHT$0v뙃|:w?zvOEz4`)L7a 2O0p)_9CqKbE:mX/fiæiFۚA|}H]FwaF$Kج]U2)}WOɧY*xU7) nb:oEx8rҽyו8^wzM覆*zJh+eD ۰;҅bQ&d )#=(R~hdu3j?22fH wwFÆ3,Ϻ3Q /k-e5(hs"/9'8&TIz&8gEcu;; d6?^_d?}fNg,7=NcI;}B{DIN1D2^.B/_K @1;*z ^oWLBj#{F,z%10|֝J{kDN{u3 `^&o&A6 [$TOc6ϔ-Xղfl*҆E?rnIJR۰n]?Ŕ+*y [&ͼܾ+o$5/S$h>ԟ BfARr~T9HYZ|qgU!k+*,`FE*2\Q0n;KB N^QiiT5y\}΍`*Fe$J>$iG/ܺs endstream endobj 1008 0 obj << /Length 2277 /Filter /FlateDecode >> stream xZ[o8~ϯ: D oIәNgLh,˱YHr.PlKQ2Ne R CcG?MN*(dqƝ@PĹr&3{ȣ>v9y?FTޞN>}<I1iؙ?b~>>8bɈH;hOudu#clX%9W̠W#s[\:g 3>]1H#TV |^2c>s03U\b?.WU~UEFUg14ʝ+3L(6{ӹ.Ҵgl`#XZąg%ܤԥt|0+]{ \)aw/Ŧ^W*VP.c4iRAy^6.lGM{o+_0fa83:Ig!^l< ՆaV.~n`پ#msm6S VTN;];iQo}cY&z@6;9H+–+T>6g w$u*!˨R9yK Sf#O`)++W߁0SG@u f$bP>W,պ^$[ywROp⭪EVo_*Kpep8eTPfkt%P@ 9ykB4f2~}uTr.h׿Ԣ\2!N*'6bSbZb:ބKSD Lm;٧}`#"'w]sWL!"ɐ0/D*$3@(B"Ǧ0 d;$kQg2݅)G ͠W\K!zhU}`c[5tr< ,@Jٳ@T)5 .ۤXeF zxxl8WĆwC ή,6ml ;rS5ӬzjeM~w*/4ҽ KS*IJ^0x7h# Ҁ،jm|Z Ӧ? |nfۅB3haI 6|h(X|뤊li9Zs0-ge鑄gx",lRdwC2żAQcEբZO/M}|x 6}{OFj,_?J IfF0™庴v=dL۫%]`uz45~@a`8EY7g:&LgNHJ6z3˽tNO{SgHèM2ۓS 1E'MNFxϖ1cHms //622f@VڒciӢJ:=T(P y D SS3,`@A!{0WÙ?"G P:34إ ^""Z3_dTC7'(ܖ(<t(>%d b(-X}\Q ط M7mRNu8_6Svj7eXMIk=g#0JNu|dm͋k)kM ﻯ)혽 X*GeR.*Z X bQ6RIͪbVյ$k?Y֍*6)&` TVa tSnͶT-My܄4)e6²j4;69ddr^YNVnmҖ֥V=jEFsOК)1@ ĸ+`} br6㾾 endstream endobj 1029 0 obj << /Length 2474 /Filter /FlateDecode >> stream xڽr۸_q` A 3}p|xڪ%od( XKV쨝{p@KW~TPz*!} =u'/8eMŨզgP_ŜΚ1TCOi\e=Zh\ݜ/3{|(H b-1_rԦ}e iȥ΄\P Y,HeXp [)$!TJiO",6@~ft Ha>j>:o {͹᪬})kVXdzl8o ;TϩI$6)ү_/Ϫ{,zNnʙN[6[ =Z+n pj5t0)O%GFEhȨ?_5FzV |Yܽס~V"bh:\aݺ@;JgĵaCYݮ&W1!K .ٸ ߼?٫'gm/K>}tC5N{g0@0]>J8 ]Tid- "2 )e0ͪx.[I #b6PnBme>G6airi5yZq(,UĵO$g(q+^íd&#]Vh8f&f{VӆK[Uך~ne(L7%4\*eU&_U&,琷MT•Xߒ4Љ('d'+yM|r3zPd%n:3]V͔U1(fM zy}d` 4MKzREnڞ]]ϼ5'0O)B pw #l$ o%WOU̯a{$ G%J8@(ucI PJ:i+-*R>8R BHƘLCie&MP?ܹQmoX(T EoWmsFcE(-n eWfx>MT6#Q恉Cr^9|t}s r{񮦿P\Ps+\LPp##sd?u endstream endobj 1044 0 obj << /Length 2726 /Filter /FlateDecode >> stream x[_s67S$˛8;ǵvi( xHUs>bAe[2 `.]َ5뗣7G?\+b}zb.BZϙu=>o?\^^slz}ww\׵O.ޞw"ޟi_:N\̼<;ui_缽u g3OuuGGc^|_X/5_-(ȹ%=<)NoGپ"Il~iHCؼgaadKa, #kɣv]|⫓/]`]Xa\ TS{\0ChWR~~:ACOIlNu ):+ \θoiVJ>}@zG[Q.fnp\&\2E>#|1]fq6NUk d(|/|Z(b4ᗞvTO)nڣ|Zd$wu0`ݒ];+~ ^_%s iB;B,a8 M@iXW e*w~xp80 ;]ɼ(@oמm^ߴk2 s"n䅜zHrYS]" 7 N{k|?zg':E2UD9ܮ Ȥ6ޘ@Έy|odt56! jOr r6 ʖ79R¾3Uߋ47삙¦T^uq#ރ^h+ٸfOl=wXJqI1.Wiֺ+;Z"d^Uٿ 2РؐZr+rZow4Wge0KK2KcIZR@O P1~'j+>+Zŷ&bhYF)u]45Y`pO{~ihv+u8o #IO| # :L x2`6dWZR-I,j~ Ѽ \C ZPU5G*CC,F[‰ 1V\XeKJkU#%#S5ZޚN VH.8-ef֠S.W.\u /0VAX((BfB/Kf|dLߍN N&4BV$0}L[s zX&x5-QObZRڰi'(F J0H7`~ QoW,hnu BQކmT'T?j>~$At+FEOb+8b@ :c0ܛgEgݔ1[ƫL ~BƦ\Q: aJE 8"K"*Czz@m0N}D#l`p fFDxmfn<,G' )@\oZFpP6A6C p̖'Y=Nt sWc>R;+lw]ge]0'UQDG1s ?7`!j h m-t^Beɪ}hEKF><#}I,/f7.u endstream endobj 1070 0 obj << /Length 2740 /Filter /FlateDecode >> stream xڽks6w3n"xk:$N縶z4$bCHUbAe׎E\,.@sxλWw"wF3'B'S*rFSb0s o=gOPכKޞ~8L(<83|}7io^_ d|4S_?臃{oE!}L?y~p<&ƌ\8JK8s.~>C{,БY?5 #e2Ig4Э I~.IX%?Q `'ѯʭKe_^4e2%Usl5}HR* uKa$ǖ` MnE"ִ<^k`FHq!bF^.tCge2cCř~3*$¸xXfHjO!5[hcP.UZ E!l5ȩY(rӒ:*ojNV.LJtDO!4dYe{p3 Cryݝ7ʌ\ $OV`55"`lG$)xe<&bE@Y,zF~haX 2fw 'WX#lv:ZkL[ٕ8Kd)ViUA[jE dyQT)cYEhj >" d#绌k|/pw8HvD9(vrYlw.άV +C xfb%/L@6 y܃ n c#XF*qf'DSW?Æ6Zj譮.<byIy;˒9z Mav*{Nm_n'Ճwq숭/%n~ht!HXYh޸rG MC6i!8$aol@eL}zmRID,F<ޫ:nC*NݠcQL,A͝ 0$Ssn*LMt8ZQHʀZ)Mż&Evf(Eth\Wn\k7`D+)mtL<ѻ/^ %g*˾K25@q] 0ᄚim0ŬMLYv5WA5Hq DЦ02"BK1&!%YcTeҎ0!|7(+":'>)wZӼLVXB1|6-4dd ]e2%S\re[."&:!dB`MM7@#iN aCA2OU7gPw5&P HTG s2''C[zg@nb`2c|FsS(<"9Y\;6|8=tD.WG QWۦᡆDsY ʄrlaߪ'2aOd0:Y4ikBWcK[O ?pI~Rʇ4@ :^jq̊n> ։͎AJ쐴DvT{LɨKc&{pt\<]`siRdE9 k9M"f:n{d0ڧ`O+֐I~M߶CO>3S{KAPe=XY 䃜??b*P}{oi:`oO`xJ2'4OW{%t=*{H^m1S{Ktlug|Rw?w椆l#1_.$Wѻ}@(ʢAߞ>}"NlkfuaSf\Aisu$=ߜ\G|r>X-^{?MD7o/Ȇwþ/$-Qoq{CV_ks 0V3o[_݃PpsxZ.hģ/`ƶs}6%LoV p=kC5U:+;[9`ܗd w)Irľ{x\"6P#`O 00'@3ۻ2C/^B6eˢ^MGI59eTۥ'p{Nn=&xtB5چmStf-vFvZlֹ}3CF/@/ C !=X_D" wPK[LAZP@4},M^CŐfEKҜ@ LG3"NyS?]ÆC, ADU]E$E-`Q\O>`!Q9v|2}PnyC\fybQ1γΫdZOU" ,+;.wy_**2WQ|кoL$,\֫թV!V7"z ][EqVӂzp+`R䨗f5[Og/e,Nۿ&q;J&oqێ41~eT?? ss3Bj\j,Pq endstream endobj 1067 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/usr/local/share/dblatex/latex/contrib/db2latex/graphics/warning.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 1081 0 R /BBox [0 0 29 29] /Resources << /ProcSet [ /PDF ] /ExtGState << /R8 1082 0 R /R7 1083 0 R >>>> /Length 566 /Filter /FlateDecode >> stream x]TIT1 Y09b$@{Xp}[(ٕ<}Q>~O6t >Թj4'W53/%HK*J,.Hܯӏ&>=o&)d$+]K7ԣ]:(mmԤ '<(_OU'K 2ԻX~op/˽ˮ_H ]&2Ԑ%dw^%bTXE!xҲ8j$43x7"89 2mF6, a;,w8]50&})0Hc3p ha< $u3ثTnaE> stream xrF`` cxD[r8v+D"vA@)vO7mz:ykz{Mn'仳Wg/11 d0^MBj'a ]:|r^?w}~:hw:ϙ}*pW/io.P;{=o ,W/>Ҵ_=;j|BWo?x=E@% P X}`gfxGnrs7oU&ۙkp>pә2e;F$<&-A+쯴Th&fCaٱy(Yy93H,]u8H* ,^vb ǻDj)[ѭ]_u;nq Ϋ.6m񘍘E 1J E C1b63W&?&[ygQI| e4`Mubq5rMZYYPwS9M0<^}MvԛM"tnRd 'һ4w:hge; [RI8UM\`N;`4iMQR~V SV(+u+}&b"-%+WD BJ7V ,xrn?"yz|d-+斖i:>p\$|n*qINCwD"Z*ka@ .(/8HC{@YU/m*%{ac'XKQҀδg?S{5k^ ' }WG=VpN`s+M7&+ұ5 LL7<*)}. ,Wϓ&kwYnYҪ&T< hěm>'ϒ& D`W@x3fI,OH6nc+Obp'|wZE ҙ˒m,ck! BGMet8qxy>Ž\/R7Yak^Dc|dd{#` =[/ q#Ȇ`ufz˧σNИN0y[uFZ8".7I>GRCd6EQ+9:eZݠ~]m/% o =0&G5%zvxVUta`ub4Ѡ̓oOu X}G@9 QDU~4 ^lYtA{ﻴz |NLi*voR 5g?!~:?:8(.7N I;<2HsݕnuZ }أ^M8È2 Xk-$mm%[*#C1"!'@x~`=Qn gJ19߼m[WeW*\WXnj첼Y]n˪#4 `zxx{@{Nwה>Ʈ@[z4 /1{ƅߟ r,ǽoIoمR\WK 6G:8Q6 \ni(}c<ːc3 m:2` (n3lL[ Ÿz)AM+N@X=wNAOѓX~-%f"])LNVDin@>?קkq`Q;4 AEXNx $E& $9{'EquXá0t#0'9#4ٝASIw>֑C!qfbGq>D*OgC'~y@/jZSCHG+S8Jܤϗm%C?~Q paQ$az.mrGL@Llc'\RDFU1E}rM X/hC-!]RDXaͭ˱hBd)U߼)ئn6nAԏ RzN S ;& r&+Q% ,taL8&Tj2=p5y9TR0TRH8g˸<ԨMR4$B.j8,P}:: G*!M wV/BpJl,M)ǡ50cȶvo?uh,*!ֶp^_e?,ue݌Dpl\;w|W+e7m`8Rn]%y.]=FT *Q}@Wq绔 ]JHחA{5B/}IPa,F0j <^U:k<+מhZw%<.K CX>+P .{1Y%bFw3BZY%l-ntpk\uh5Jt<εh {_{fW74k>۸/k 'a ï8uH8Y{'[ ,F@/5R& c\Au4uX4*tkf)&miMC̮un9Vx, >~!*cC/vƷ,+[6ȿ=6+CiWw/yV{IW?8#N8I["V_wCWގIz cެZ}e+ZylC@\ w=f?U~tb/z[/mEz?! l1>N&VyC`v)DyD8o6O|{ţ(ۂБLC'Tb?'!eH\ PiVә0ߌ g endstream endobj 1103 0 obj << /Length 2919 /Filter /FlateDecode >> stream xkoO4`G Ͼ􂞛6%(hHEYR$-*E.wfgg)>7G7Ggo#1XKr(dZGd{w7NpO7›]k^N|0A|&ǫwo74fK io=9H|"Z&M|_Mˣ?IcN8S0`g.'(f8\툻sMgeQ_N0_H\$az4YųK}@CZ̏^$Xʭg'0R &|h.pQ|EHPhtOEjYgqs F{4{ʛؿ>F{4[,9BIW}?]ɝ:Mu:q# @ɀ# ďBƥ#I/HYߧbA8FXn?~0; I 4r 0 qWl,ъR"we*Ow:`}&e5t'ᓩL>~[OJpn%q1u ,hXEY=-QjY&mУ qE}6mAUqQ9HX:gRs(0BIu^҃^ nCxCH`ʻ{ \UuC^U"o;{+BHD5ou8`GͤwN9u=>w{]Gn[Id!2.gTeG`8ƪO`A`QDU4!g1 Xnw9HQ5(R9qݭ}$hn_V*DM|M^A-ep@W}^IΌ0+^͆em)늁_4**RLbK0 XH(!GnE^6E~i&nŴr+Z:򺡖t^ժ,~mIJ@kc]No"ߜD+i^.L<|-mh$đ]kp+y [;J"8OqF d 5>:昈>d=QuP: X~$QP*kVU/5%\5$tT+{r.D?3ѢwU d;/bVm u`>G ߛ]eԳ)o\ae[ xg#Mr4+'pցHfS3DxsI'̱)eJ/T"A;fAiH8ae-?gJ)ѳ[v#rE(ǻTl5Q{Pe1(iP?˂^қzrFф,.l(nhsӔA4:42u#rcYJhd}]ܩĆm4>/R?lfA;E3;>@*e[ۡg*̊ .y7ucsp@&IP:+>1T/7yB; GӦ]mxmp@ˋu_S:usr1_ΔTpdK24Dn-#DW #m+ Xn0A"`z^ %;f! yiŽF oINdQF9z b.wu ܖi ;IT wcIӾT[qsۤm.TFt - טBkk-8?%غ}xˬiQMW[ "zX v٧ԭl-(*uk"jhJэ+aIWXt|@ g_ %48num{X }`S 0\ϱQP-6y>8̄Fa%n}"# ܧt&{Eck `&,pVXoNq>T'ei¿(h<&ɳfdMJ=jL\0([l!UsSXõSb52.⎯/L쮰A30lRBїgˬn>|J1!ם~=<]hgGL=ot48vִ6EC=zzTӓ< QbSw7<γ[Vs㔊w\{o+߰Z|v\mH`kʇ&2_+ endstream endobj 1005 0 obj << /Type /ObjStm /N 100 /First 968 /Length 1549 /Filter /FlateDecode >> stream xXKoG W19dvLapG $aE#޶n)e H9eK)]Ѓ$.[(\p1or]Yb 㓒29 )$GMѕDɎ# ArA9*)ڕ\4r)`@).٠X 1( 6"&|Ů.N:N2/0g\uwÏOb)‹KQAa˲Xa$fٙրaz搐GNlzq1>0~m>fڰ7@7NFp&/8eR3c[Lk8ybc`D^PKe+7ր*l'߬aikFSL0ػX}0kƦuT>|_F"qvy:ݣnt~y~>9}}0cX3Obtv~HAm!D~-/ggoet2>rxK1W`> stream xr_Kj^'%vҴ>IZ-ΑHV(gοXHɉrgxAX,J:wt^=>:}+'q 焁;ש}H;>R_UDw^-%B!Bv2`## ݇i>c[&v91LX_H9~JɫV7y'Xz[Hfq'IduMr`Bb_қY-^ӷx" 2(3Ƭ y} ҫf9IӈHt,2nEy}9Zhs\0H-i7#w{gAXGX)09ƌmZcF*<,ia@eB}de|bfguU)SY`s-FEڌ V)aΓl /oC^@(-lEIjn{d) ~([c(F6SQpZ'>eC@ݔ]ՉS*ؔȊf;.H8YY7T^fTglFjlɂ+ۦ06!$H!-❌ pox ö .u'':F*_b?wxkH 2y#(g#PӬ"Cx4ɬ'c1%}wߢZzIН5޳t"kO=00[mA jϑ6.۶!~ڊi%PƄ^8/. Mӵ{<7bM_cz!qӣvMq%?i:Jx3pI0P%NT) endstream endobj 1140 0 obj << /Length 2845 /Filter /FlateDecode >> stream xڕYs8_:3B(ү촻mcْcYג  E9rAAJ,b뻫\Qn0"la8J|qW..|ݻ׫Xe]t*oq-\~|- ^dy"$`tS(O4ߟ>w\J~b!>:T-6?Ģ_"R0h9EUW"c{DRl%,MF.7P{"r+ʪHX:eA vbjӵeq|rCu$]1t8tǁvYnOfÓKlo%ekM[vJp5jސPlvY;.xO4tM1ԛbS-Zb" jռ鰚Sej, -֮Щ[4}{EɼĖ.j_ mͮhk ߟX4 ؃Vͻ YxO+dg*k#- X8a[mRf'"?3㖥nbOm}op疰D1))P9"=59$23sFMMI٦Bu꾉hԅ*o-2Pƺui#Pmj4EżE&\Xdy,_5rmc奕3sTc18Xޑ-rw6iP|^jm7qWB]rdy;%h?ի9wp_u.7fQ] ۨonsc[ ]YmOWʪvcObw;2:VUikvM n?0XG:IG{S.BzK;/'~(hlɴ'nh 0ʡkY%PID$Jmg6:1+r~`q Oϰ9WB/5؋DXQ<dGk@ĶHh*oD:SnǶkEl[F qRҒUPwxzX;Kl{$tkL,Ҟ8Aa2]M5R`px£0ek w󰹮lrJj<=ۖ D XqI.1i.1}.OLN 'qS ld YEY&8;X5JDy*qFyLNu8#'N<9`T, fj(9D4ȎI|FRLU6]e"ۣFKl4pI H%PGRȳx{0[o4g,Xj{16` ɨ['cqE4oѤNFhI$0l.Dm{֙+5VjាP{Ppa|jpZdXHt o"m}űr}]i@_l1)zmAäL:Ci"bE+'3L}ɔɥ_sMQ IlUPOKNN^(9NMp w<:[v*ҹ<xtFd㕜HIpXx[ [Y+̈ƚ/or7l Eէ.| 0u EsRX <#)| n^4C˗6#6{H2zVUIͅMpćM,ѸYvkB9߁ T堃D9IiOgaZM\fJ!m|zam ihB+Gꍮ9x~3HuŒ݋X`t2Dɿ@H#YW&bw&f f,\QVCx^+cwo~P{,Q56-E܂uq1b`@"My9O:DwDGV2v)kʤ>4N`s! =BD҅QщeY$mw\T6|ZBҝhn1 ^LATC͇tKE"I=ި:|0K6\ rGΝ>ch+ cGyGO9̩mP19= eSN u)P~I%m7ԛw1Hh\W0tP~K"ΩÜ3!e_cťāSȲCOdWTu)P=VĄ[y<:jgNL>ſaB\*?^.3s Y+"/s_ʢ$O/Ͽ0;YPD@<z%"IΕ :{ endstream endobj 1144 0 obj << /Length 2847 /Filter /FlateDecode >> stream x]o=Bs5KEurُȶiqŖ줹{g8$- _{Hj8̣G/˻LDtE R3v4?n~ (v9M4\brus zs^]jrOoaE( ~5ş|O{~x~ Hzôlu/<û#df' T"Y$^gi.)93d]y|mHJ:M~E0G@>K<%'-0fR,eTn}cp[=gFL;@VL t7Ū6CA[oכƎPfYTe4'H-fx ESifLM`Yc' U1gyI4񠠒RV xe5éExKm>x,F^⺊cP,Yf)EGW]M\w!}&~gJhA͎9aKDGk6 >y"ӪcԀG ["Wp:SJ^sEr?S0g{`DKqEA6qÒ9 KvxoʘNILIMpڜ4XIH rĞ"2hYY"bU7Ͻ cpVNU݇W:S%9+$y@4Qu,./'>3y6H3kW N2z)  \c௏%;_N}g\b @!Hnϻ)IOT~5P}(L^Yu1+Eg"+aA0<TX  K'(,@h,(E]m[G]AE_ ~ Q"ږhTѰjK[x I l կ>8UMt1}POvNs(swF[y(]8\/$NrY?QӡK;0pvұWUܧ{)啃-yEF(cq k.N;IF pk)uS$ ll򘻢E߁:4դ0} 7H!t\%Rb4 6W c4|^g)+zR\sV.h r.ljxqu.PVvu߳ʩMW¿ wlr58K(p; \fvg+_0't<%}˧zR. β@5JdS zme20} B^ @)pg0iny]Y/VbW*əB-ȭb[~Zub 5٠ K9= 8/PQrŴGr4 LR1{fiHzL@*9Jc-5|eJ7 aiNKzKNdCݺ0bD^AT99}Q@e(j f2g0:1{zk O4 A,^=3,^aE&!nz]r ct#)pDp0ν)KפW b1$Pk4m \48K9!H/+(O0StrE﫺wmnl恬n'{$a.E>NeUW:okiX2_{U`,G.J)nA(|r$<8^ĺ! C~㖐) {y[m0kh r 6n+BsJbd̖92bɴ1}ޥ!aN|3 hFP5'P"씂5mB2Xmq}[Zo1iXfc!O=|v:sTFbs \,6VS{۱ΑSpu*RTA]'\ wl}s,M5th>5SޱYoQ>C`:/b+hǚ5. n|V.,W?w*0tvńw/=n˼'n2W7PjCXtC5f L?^0Ȫ ;lY[Cb)*RRՌ+J\봡[v;olY,zoUWZ.A[ rSp=eFE6 I&#Rh0hsy ɿXZ87Ӡ;-[8Uu0/Jf/?6D&9w`]'n;>b.4 g@ű9Ǿ3lbOP5R rw˄|]?rԏ=A?L좰lǟNn8oB;ϥ)gA@k(.\(]Jwnܿ1$| endstream endobj 1160 0 obj << /Length 2497 /Filter /FlateDecode >> stream xZko8_'YEf?e$A馞blˉ~4eYFqRtw<$/4Ihryͅe%Vs &IJ &I5'Rd0N~xap~}$9+M{o=fNb۫8?=Neo90)r,=T/̿~̿~::}>b&ƣ Z$od i?%H9gT() ㈆6f[lє0uJ ZTq_ޫnʅǘ:[f_PnCxes̳Y}%_bN\\0jȴtx gp{Lʦy&|XFJcW)M{pЂT$}ƈU 6)wm7O? =+>,¡+ 4͆4Xq0dX3A7+!@H]AS b -*Ge^a K.v\vyo<YBu&!vgfYC[n o[<4 ȸؐ{f̜-Lu15 W6cЁ&p(9jGc["B1r≉zG&sISih!Kmلkl̓I6uv&2K@e?dVi-۫119z˛q͒ d%rSfYYcMBDjC/fw|}.)(љQCSײ9d7д=K!«"Ugrgn֜,=0#l6+9H>8WUCuEWjk1qmXR!d7i q*Pq\q M gXTҼN(V4J רpP4Y<%F*fa.)Q| 4[ 0r$frwb-Y~ċ+V?mRzQA[ 9ŴӀmS$IesM0 CfiU8ECܼn`0qOہY:lJ}PbF652GcMʚ3~߅ckU b_V%KjhpЪD*ӄGZm}ҰE|oV/ku(֧x(&лt׫݀xԄjo-t)( YZ@) g,,0j 1,p8ʀPXj!\-[C+0Dԧ.D+g gH,.h3tHq-_i1nzm!QF@M^*F  @jIU u L [,}\]^a^[} R1?mNڿ#Owmp+K`/cc}^N59;r35Mph]`Z3'*iL=V_®̤kaSJĦ* jJBA"fqɝf`45 J0B[5 QmVޢexUcbIx(sw_'vWU8CqԏF_TH7<a–E8g.8]Z;u&9"y@J?\,xc5i0LM{ss#M_b̼=~F!kK`ze5t-n0> stream xZ_o8ϧ{%)b7ͥiqvqPl9jK^K/oCɲs݇kh43wq陸׷'fԋSb-Rƻxo~}w3 d}FAH_\y^}$QO7R<~"r]/?k([b\^SjFr6sO6F :~8 M⭭SQ"=>ysf"$SGN`֑%Ơf+)a If-3o}q'TxfKi>lT$aB~SGMtK & %IWŢ\5@9Hx5In-V\+ҁ9o"gA]dBjfuﴠ vZZTy_b.*fV%Q*mFuX;y5# ټi^?dQQ⯊"/t،Ez7sGXAh&ԑjknZp =6A P=l{PDMM-R#"/Pz&P$dz$h'N|j%BSζiy]߻!;o h.1\dP13,;rav w(rHa8a2l ޲:YR`fڳ+bÎ_963GB#:>.>z64ْtQ5"@!x~ADb<δ/ם3>BLzM匚6k%争Gg& Or]^-E~lUa,LHjعg,Q;.4KtѭxM9 !gPD9lUR5P@Yb6S40/vy !0CvʉԎ1p6tJ2f<K+іtѤIZmA[J[ٌTӪ!Ie̕,:%r gl_@ڶGfnS*x^&Mk"dQpXQѮ{?%`п|ikM  pd-|> stream xڵVKs6W9c'ߔXv(L':la J=(.7z^ZF,kMH [CRͩdeqpq4DO1c,.bx~(R S'onGXQw=lK7z }Q _g/@ } @H%у4U; E QjlyDŢ\.U YV&^7˰]Na9߻#U+wY/fʹxg Th|,q"*չͺ eEО@z0m1p9X=/ZϚz^W>YNgM_XSXřs5r(=ɳ@E(G^Ѵ4_49=0&lᚦeVuzw]B~7 b ,\LM+lٝt.'LbG[?V?M2:aV3Й{7|[V'w1ZSf΋{s~Q+x=k n5طr5z1$w[K8ƒEI&VwzA3 ̉ {@2MeGA|WFk fKb0WZvGnf"q|}SE  mvPbO(Sop]ũpKKg9W EI Ja^^I1)^K KDl[Lai#%sdls@63o-{k/74Nv|:5M}=Ȅsoxw2m'uoW4[A| endstream endobj 1198 0 obj << /Length 2087 /Filter /FlateDecode >> stream xڽ]s6='yf)ꃏdngٻX}4-{g,WꇫysX UΙL*)(]qӼhu8wfy|%HS^ ⳱}l 9N3Lq%"Ym%RN7i1/=bIWn#|NȏM&GƣJbbU9>:Q?{Eǽ{V,#۱tg ii?|!T{X$ԏmo]5RN0+9:B6;H~&*" }}omm< %ר57Л^2˔V>\. ȅؗk%]V">F]XVQ]K6(/(aϞ>ZJۑv[w((ӡmNM"󒐨 L쀩4uGL' 3uf|]8!Ff8Ll;vXzg*= j*#z1ճ!/ϜpfTېëuWt$|s)߹؞2+$SrTQ!d75/ݹww練.c0f+dw۰4-_~E#&07'}#0D, 1ЗAZj܎vuz)g("9Ee,g`ll0SORy$ 3gU/<}q$k}BSå<4kEΒ#T`ϠEβ\.ge**bi sͽ<=m0,1‰Uax@ܕI70㐲 PH0<8(/RXSU L - >{Q)$ET'Q ~ޔ3H'G<ĺv#hzxwRL)XxǴifGZOB s,;K\_Eb/ʲx}Q&.-{ؕE7ԾdZ;rBɌ08 %XHSE9cGufc<DW]ROJ+G_%[^y7mh@>\"ȇiXn`p8X9/Wsأo&bM?;KDLD4ߒˆy`W薬5[ڴ&g齦k7ó_y]"^6T٪l*JU^g0KN׬~VH0\9V.z3 g$ٹUjC endstream endobj 1120 0 obj << /Type /ObjStm /N 100 /First 966 /Length 1535 /Filter /FlateDecode >> stream xڵX[O\G ~Wc9s3DFj(R[U".R @{|f=_7D!jla}Jȵ+^C92ta" "PKV"ts.rQ@p`VAHEZrvT(0$qJkkU)@r gS)߲-)ʤb$]jQ [ztADƪ J&%e[PD`}gIelH55+q( eCM`z2sg[+F*8OdK1(dbej.&j6pW*~%AvhYUnM/j(B7We w݁3Q:d%lTT!Ʌˆlg6 8|Uѩb^z EݼEݼCzApNCzQAubvEp5; PI` Fm͘:6[%llK%IAB0:#2 ]~"9vӧ/BM@NtMC}':8ǁ{^1>4;u7ExZL*'9&:E X/ҼFEsP/JDInRzzY7zwaڵOmTBX lϮhkh-7_3CBC%Hޞa?Lo_E/ pq5rŹ֔w|]gl簯"830єkr`%Uղ7jrkz:;^t0<^:Pp"K"Qs"U?x ~9Y=loid޽]\8M/d5}8Y??<3(8%;GnNJ *T4g,hJw p6pS K.NppuEe6π N Fe:3`!)6r[w8MWsҜ U5\&@h"Wq4ww. ZOKrn'9Dcܦ-rix<> _E~Q˱k'֪j`.h6 GoN0T\RLm@"%Jrꬁ/msQz1GF ܟ<20D_MPl5cD9k GcQ;y`p&y_1Ӥjn!xW@~hAAULh,ͱ:g,'GǍ~Tl Bߙ`]|[-_6?Nט3^~Z_\ ka|Ms : k F @6vq2[fm;9pt4Nkh2 n&9pb<çM73E?h>W{3TZM4t|_@o1?2LedX l:?F|k endstream endobj 1206 0 obj << /Length 19 /Filter /FlateDecode >> stream x3PHW0Pp2Ac( endstream endobj 1211 0 obj << /Length 1243 /Filter /FlateDecode >> stream xڵX]6}Wx3Eѷif6n]0OMf}e`5С/XHs?>lF)Rİ { D)f8oOK`n>LW~ϳvIՓiBXotٙP"1bySm<x'fW5R~`l:e2t|g>onA͗ތ&TgfLAU.M Dl)Anu`hl X[`Q8H*+)vO)@5 O9@x4)gX?Ҥ(QT?uW:+mzT.7v̷FQG%0YͤviGj#NQh5z~Ti(P޳Y8È` {yy ɘ dCc))-`GxQ:•@lyraϜ;-¬h8袘2Z =ۂjDZĺ"/s*e|چ ?h OT(Dr3=ݡ"&3]2%E }9!3~r{"d=s3$g`/$1;groJ$В@ 4e m#*B,zpoJPh>LDpP~!8hϨVaQMqT> \_B ЍT]y}Nʥc]=tAQmy<Z0舮<7<ˆѽ6&Ynct½BDkylCk 툜AT>@f8Ud'Um^:iIlM(lwRvcS͓ 3\Sݗ+e *uQږ3CRɝ^|wiJ2 AxK~ϑ4ߊLB9?~>I]7CŁD4@zL93K> stream xڭY[o6~ϯ p1#Q.6&m6xm1P$&WImڱs;m<}x)J#yGz}Ww]/1^_|$/~}?bn2$1!݃`ex6'EQ 任~{\}e^ݭwKxHEWW{|zNV!$WB +cR!N% @'T:w(Z48FkǗHF~"V}'2#%q)y.9̈"q: hHK7;Vx PLbx*F1!MY'm̬fϻ7gS료ʥ^|WSkY^(YOl·\HYfʃJGtd`ak9:P0x%`Υ;fmwL9Oo^*_ V!59NZoJ7oՅvk\3Rx:ZgFDKU+\YTǬYjOBZdm2^?ěX%M 37L(\~l^ًDJg0f]C˂$:Ӈ0-`3j;"L}$ckqe'!J[L)]?6 wpc4 FW5vq4IRfoxwΫ|0F>Ɯz"Cg'=) ^InÜT:!ߤߑc(XJմ.QJ ( L!)js4a%_|w FiޅJbPQ\X a@Z?Q:#I V_UV Fh2&_I}m#諈Ůn&? >|T>Ɣ<'|&YQkݦ>l0oakzX] ]8=v',H#'EĠ&ˣ30 /fޒȯ$ѸK5UըkyF*c&?Q]k V)ztc'N~EvlY]d:l"T@/<~?YaYc[ᬛzY l*KA{:#1:;')Iz u^X7ci]=l)dٝo;pZku dzJހ_:n'>q*S.8^(uzCXieD1 e.(>Bz endstream endobj 1222 0 obj << /Length 2144 /Filter /FlateDecode >> stream xڭYYs6~`j) =&Y{lflEI5Ȟ_ A”6s>]K(CiGda65Bp5a@MPEcsx(Ć,%M'5X|*'N e%7N6rm0ش ŁT`8˂-mO7|Pn]ghdQ`Ŷ8K,OHؔ+;w iX;R9SmmN&wȓ4ossRT?O>$ vȥy7mZȈfi6*d^IӲhس)>^{/ۚm4L$`C\̋Qz"5?IfRhJBaTi8J{F:6?Kv:tCeF!Sϓ.5UhS b 0A^*px^! D!*1K9aKHu;lUZ[`?ᑟf9n (#4)vLeG}Gx.bEoFx*uڴNW `pѥܩM0Ve >M;gFP^XD)pd@ļhxC> 1oenQGX6{!U6BOu@=]9GK((y(gĖNɳN.{NCnl D?0 i8pxE .qNɯtS OBIy#K{"NjQ&ihW/]I_8db|%ݜ.kb+Ϥq]q?:Q|.@ {>G6:ըQèXmQ FU≽*c(IBDK&QFY-\(n6i3,CCĽ0UqDUB?&Y2|kbx )Qlͪ&QuِFeJ"=e[Iw➐"jokɍ qZ<([ 9{gM%"i4!N&PM Ѧdc@ 71V_T)K)˥ VCY)Y776,t'FCzJIEK:5r}y[3 F@}"]LrІMj= Tp\T֨YP|\m~yn.AU޼z 5qw^,&eᚉ=3լ1`s"'O7Хnb_2Lե e Բz&u3I_~81[{j<t> stream xڵZKs8Wp|"Oܭ9d&NSyS{Ȥ\[H"Rv<߷(Rɉ ~h4~AyB{=$'y,(N)L>M~Ň?\IJ*_޽Ğ8ǿ?p!am P 89I5 Ss2:zs7o{{_, MXCId&%P"`\&R "=굶b4#B% ": &*'Yz(TH5 7\Vb:iV]1}JEr&. j9~!8a" 2m 5#aγ$X&H҇tUH(Su'MWEV&pڴdDˁPKA̒SOnr N=75.iMMtKr2=4\&xOTWQ1l.=yC)LO`լ |fe ԮbDbxoV-SU#ؗ0[ѴwLĹ$d*hDF (%p ml_Tm|X_%Uߜ"):Vx=V+P')!S +͓Iy セl, + 2ӟpgR^K h~^ ;kFDrx*N=ߋҝy~1Z䄳,[50KSw[O0bW=? ! l\S/Sqzud(q/Duƺ奐^@ HII6:U!!YBF}1W7jœ$zyI],MJj"u]RnW#}>]fO6 /J\IkMpGnF/tk%'w.h vP?Է%f"y2~%w,Oі+]nciϱtSŘR^߹/Ƴ^Vr{i58B]効2^\񛅢?Hzzh]^+9ںH)BÙ"^p`ӚK3mx Qj}ʬh^C}cL˵>U;i \BϤ,U=Sa/6몳RSio#s>{@EJXi6 oΑd%N@䆇)z M-/`RރfJkRak=4,mX`3n Y7޲ma9 "k_Eqaю${u/a3fr͸w;j@5:\yU/jQ82 >J|3.}1T-u/*\-G_miuSb͋ƠӶ[䈺uBcSF7NgDՆ ٳAAϚg{ִ/.w(9(yk2FnK_˹qr.{ eZwj@wy(,bY'cᮻqCYOW G(Md)x,sPA{;n7%>&㮬먽Asܲ}fNޞ- a@ ek?ńNԕUdut=૳u{x'='0N\SB?QrW볂 endstream endobj 1235 0 obj << /Length 2581 /Filter /FlateDecode >> stream x[s6_=GA>%s')%?[`ZioObwvIE<'NoR$LWׁDp(Ɉip5 ~PQ,7o?|uDxuoW?$ŝ&0aoXQX}]qR"KBY\Ż\dx\\qbDj'DJL'_~DIpkg.s #m|:IԶZG/ϓG$IղQxnjl6[$umI̚NJnjPG2/"[%L4l RJy.U FLj0=@f+[7z>QBl:N41jq0qQT}̦۲vEnYϲjƏm9#X,#H B|gF+ +y%ְu>/_MXJKdYk[[S.>Wﺻ]WrUn.<ю/[ f ɰ2'TBQSO,n̬n@5nU4@Ǧa4mc-9ਸ਼!/={ܭ ef(ssdcXZ[ ;ɮ+xxB'd!$pM6b=03[4<2,0!LjZ-.CMF0E)fNzZG‰Ad91K2yn ^9gEYfd6oe6D9新38M7˖Bۍb~IԈFa U#)b<1QA%.1=32go`=b-㴇q\)y,nQn98ͪ}2m^[NFӳ5X` $;ĂE:/ ?$e̛8Jc|cv; k#DQM@"ܣ 8D}`RTߍ6.tM=I/;ٸ?9Ж ,**kEb$S> w;!U~/` $]-l.D)Ύ.mݙzaj5C Z]Yf![!URSHRo֙XIW)?0nP$\x:\贮/u+ Vqx'gvD+agoH8ybn. LF$ :n]S6 R2f@HaK$ |D H9axlX <3+z`Akꕹl'/#EayYiz!});L 6س6B:7"$M7H ;JNT]tT$rt<~!d;ᓜKxv׻$D<8^r7!^x?н {$]}{ q/ys27:Hme7]=THe/tg߁y;1߯s1KVa˥&hlN[+YsJ̔f[i攏2Ƚlؽ"M V2lzul´\iڐ-Zdl؄/kGu H y[v@LӾHX*<404\ȡ4Fo8jNtxN]ØM!(7mG`RɚD W:3>JVt*q9g>?[[I=jheQoO_ݻ\vr*Li= @nSw6R6~6M(c.U]S쇅㡢>zIJ%wF֡UY[7Y/|Z1JF]A>TQ.cʟLoץ;ўf>Y*n7/];T ~jojS25c}xEY)Sؿ 3fL.\3OGT8mP%\ߓV endstream endobj 1255 0 obj << /Length 2215 /Filter /FlateDecode >> stream xڵZKw۶W.*FڕĮzE-O(R)ί)bdV7" yP8ZD88$HK*]cDbI:ΣO7?]:}w=SBᏓo}7?\N~|8|0kK[܉evM#UM/ /dη/޿,旅4 Iɢj/a#Crq Yt3mp[yk0ڻY,cf@4"bo&A/}b2yUJ6o>ҷe5[&dVM][*1" _="bխ " ZJmX*vhLBThLBxMwzX$oYW7j#0w~OZg{gq k[+UsD$?PH+jpJtDSGݵ-a߻ aO(RpȂKw]vu:rgȍR>Hr:wn]nRiR!c79/rW5&?6ڊbydWXأ${<كcwxTk@@(^=[s` L#!4ʬ[h˄HHx`cE `=TEHRrOD`NjX(.pҴFİD Icv-7P '+-@ߚqqbG(Μ\@W# 6uOU|XU:+BN% oq G9=]Ib4~,,UrͳBNDyc UtY+Y}Þ;-xaeJ64< L ]iҚ2Vx_Gq`yЄ(j4_2 CF!(OERhn/lε[2-mk߬3~Wqz- onDmRS &2~荛֒2$$V !. X9 e  "@aYViP˛uD >a5, OlfuӶW6Q2-z%+ ?2*a܏x )ש}i BȲm߾wjv.6  q Kx1z&pe;| Ƭ}g0Cc8UdݫaH\Dm56rS+?dee02{EtTec BUmpْf ?7 i~ rmkFH"{X`s0@Yy,xq| °Oi4w:kwda\nGBZ6m[YZ=!C8U=x+(;18TA)8z9{ؘHӪo\&ϟ@ߤOH3g U\?׋>B_){&+(H1F<1;l1#7'H&; n+Cv?fv'Z"8`UR$-υ,~ZoUylb$3clΏe=JaZ_10)M. :΋*;8)b|.9Np/ZKH,P0(6jLLȊd;sb4]dUeAT ʠC?Yu=gQ%ۨ}A9|hif6=N QqXIT߿ & L!~OL灚+ROp>!&Gc"C!;wX/ endstream endobj 1264 0 obj << /Length 1831 /Filter /FlateDecode >> stream xڵYKs6W(̈́^8N⤶2=$ C>\>{@"%Y|"}|x< NA3u|8/(D?N\$"(Caa拲'q[8<F 4#9eonnN){[ X#,n0wmH~̝έ wVffQ&T^9&DiZѬ,L*a(= %ca$} O⇟dn}O;{1 y|-FsfblxX!)5ǐ}ǻ0Dxv "i1u1MyI,5;URP]jDŹY_I A '9oYXEoqҕ8/BOOC0ԉu0[9cajb%\P|*Z 4g! D=_O }2*Ƞ0V>fߋ4bzjYnk.mcR 1BNegAz2uٷ"pA~&ln'{-U̮kYL&*5W#ANViWZT/'Jx0).CU-Ҵxh(Ȩ24n䯺VRJK:V9}82|8c( '6Xl K[(>^ŭ(̬l) q(f H`ftl $m76Eal|}X͙xm2iDwMWm5Vd;\y]jt}mtmtVǓK {@%B׮mG˷X]ھQv{uZs#[7z:TW$ob6rU6=i'\,fj6KdPwkf-H&͹F9,6=:"7"[Gns0Й7+ 1'ZY&ͮuO&q'~Ug$;Icjjmfmȍ (}i;ڑhۀ7/?4 )BЧ<L~$3JGQo b?!cs3Rw@Mjj HQ_ڨk QJس5kkVvsN  OVm݅?%y-@/lܑ@3] "h> stream x[Ks6WrYzB&Z6ٱsLM-"n|5m/&@_7d:[ɏW'߿I,!zvu33$͉j9NjW?ι&siŻW'q{s/N.~ywr: BvaX~0&ǐ|Mf7|Zo?pɓW'0XXw@l9Ζ0ӌCwvf& J h˓P4JM|̨$Lhqi$ln.0ŦHNA[).H,:H$w.kfF;kJVR]\ۓG;|[m?aԆd@J3I7ydlkHn:*OqӢFy9NPJ<78Rv1q!a;x6ϛY?gE& yƀDc~pr$_#<@XT3 k:Z+,8{@Zb%IguO˴ny ,$8Ὑᧃ<6K~Ueq 'FӑzINbB UUdisácA hy|>ڐ-2CB2#djck}W5sor("XnfdB NbfQ h¨rL܌9=v#^?%ӱQV⭃֌*~F78RRܵ"LG׀(j|:2H9G٢puh&eo$ƱZF0K.ٞrUE}:&.qّ}}F)/&JדKNOVs:t6)$1*eXpj"&=udFlQSGYzɠ*|:-ˬMO]g}WgK׺w\;]n26v6ifsr8%Q(u|7ٍƷlXSL#j?6:΅o  [xv2a@-zj욼țvժ\:F6O86ejq>>AQa'*]]n6~e"LD@Aׄ.ERFCb!z5!>b3VRtz^=Sz5j++1غꅝ{-rl kMv~Mwv lQcfXX mzn/T:ZhJYg~tjh?JP#:,DNHQZtpv<51R~V:L d bW6' wkxڛjr}]B,}Թ;n8d;ut{;7TKh %#4hi£3Q× O^ؚzۜao~(h1MFU)[ 6&d &br$n5Tǯ޵kinΜZqHMES]mk6N_Wy:NIXw( -&,p2|an}9?-ȝ!y= r (e>ܠSmXc>X9X>b3.nڸӎvxѳDd! po;$$e كI߹5':)9Pc1m94 IBzaz{Ѐotr)=EJy!v( sL˚&:e0FSJ}>Zh.&HwΩjiCw.4w3:00q̀ԁEf* ض&|=pX[ ?ǽZ]Okƒ-,ӏh:7@Q*Hs 7xk$O)K QB} pt$r0 ˽쫿cTrJ/֛8_qE۱6i^vw=;" Qmڬ^du'}{pØp'_-ؙI#B: Oh%VfQ1e=2~"qvU2111layT<(NUR@)hw0]d5 k-fcf-17O-vܕ\Wa㲂=1ATτwRu=_#a2ޏr{['jbߗM xBW1 M٢!,corVH |oR$Kf]m?}17t^oܫ;|/kro PÇu11')یQP6N$I풙Fp$I$#T:zk5%ӗ8G?q d)ࢭ*'^eص֜!Bn9l uB4jZ\> 2"v5c?C?}5*zB58gʅ}ͧw=;6{PmaIt\ݎ$6v8#VmLY 42P^dH4SLL&(,ny{2Q" nekLK ڴ{1oژV=vBX}аƝ?JT5P` xt,,/wP@OIE$f/U](9(u2Ϫ2Nj eZee CJ2|"]{)c'[C1я6la&M2U5t|. f\ȬWI 8(ɣ2s͛6Ƿ@4єbXa1NJ$VUvEHn>uK!ūVOh2.kj @LI^\8GUÄ]8f}Hb@N V2yXQngnǗ-q;[Mmϙ\t-- <.^Ծ:teN%!SGJ;bBNnz׸eծ9vSk4XAՄ`ORƅ-hTeoO1@uQKc:bbsqd贌 f&i^-.Ah8ݕ33;dԄCx+y;kp.#M$Krlpg2OC YI ‚5kvwزޢ-ٞ![WEn-jyyq_t/x~%EJ}QY,W&&r4"c]4DWVՀw-U׽ЅLuzt-+ՄKuX9l ].l@cÔ]m 7A&j^u7:a72Vu^x7"_)`*vƂ7> stream xڽ]s6ݿL$ڧ}qN&iTEʮ~X%:O=~RQpD۫gY#LpuĜ) cݿB(4tMx=XoNc^]^%j;Ob&b@0SrbD7L/s4]fo~%s"S+%6p]L"e4۟{p:܃[qJ4ihNNmΚ'Pk0iSQDQ O5혗Vya%%" 3Ie MSGNl;V:Laq> j2k̋dCuWs 5Td^ż8Sۥ2U4 w.Uos endstream endobj 1307 0 obj << /Length 2383 /Filter /FlateDecode >> stream x[s_5!&{$w3]8憖(3Tk= ,(2-K7}1H|~\4ZF4)RjEPS%)fO7o'Shd4z֤X|۫__O\7poHg&!\H(#wЇCM_?U0 >]^Vś.MPf4C%]u$ J x^E?_vfL(IT a JLͶFeQ.Sb⟛y&[HIx[\3* pD)WjOJnNӉo`90aH>C)gUia. 3q^cmf ?+~6E{X*aƥ[Cse?Ni{esϠ&8UM,k)l&Y]Wm%4öuWTRfQzp-yvg0OXUϏEs3pMwʸg#!*.r[slҡ&Ͻ$#R'+U|W`àc:B (y]gw00wF@}&ʡJ8)>)LD5Soq~| 8 Vыu֘۫^[a`tעeY ?!Bnڇݢ/!ۘSwgIMx+RI 5(MѦulàs0?d0p8sOJ.*+ޑ#nSƥl6y Q/17@䧲]u 4Vۊ=>϶;,+OnH|Χlҹ;\=jlrLvy:V&Yy!d(%"DN0vf/?aέR:ƒmr~'g'(mmb]S`^Y,sDsh/ ťG~q׏(D6ӰnKۧ0æX-ָn& >_k<,2/GP K]Kƚ䠨z endstream endobj 1203 0 obj << /Type /ObjStm /N 100 /First 973 /Length 1559 /Filter /FlateDecode >> stream xڽY[7}ϯcP\lK+$.EjU<Юx%h!"3]H6l>2{.>9w )$l5 BNkZPl Mт*ϠPS1=TqH ńŬ5($C0ئ(pclp# ҪIdjVLH=9LCIɌ!"dfnλ3"u]T]GF*av@ c1ØxjƔL'f:Z\cKˮn@"-R!5 l bApGe e_!IHHu0Q%Gz [ͣ< qFt_-S61lP\J`dQ` Y4-ArִX՗ø4RaKM#{fL`$lUHbDNփ 9v`T_1{{MiMaln4-jN)h2Sʐu)8ubHi5wӀLlx ''aaRxf26O;[˽{e8 jlXaf-nllq:?[\~Y}c85%Zz+{}I7S/H~3˫?uo-w^,krIOܽe7w˿fs^??<:C(56lJ9 {㓁<\X |ZF{[d,%Ȩ5)c``n oΌmBYD ?GlGv!d;!tp%r߈sG><"7V1!A4>(:X(Zz pt +bXlD]/9.{-ulUdrD+8 h+7*揁G2093N: Ll: n` 1j$LFi #< F2 rXy0Y [wDM8Fk,e@/u=tK; FkO(ZRE }hQ_=4/}6֥F]hُYpT|E= %ƃ`|94ح"10kB083K?`*3hB!0qcˡv%^o4Jr_ endstream endobj 1339 0 obj << /Length 3684 /Filter /FlateDecode >> stream xڵۖ۶_jϱ ''ݺ!JĚ"UZy / ye$p@3Bl3f|wۗ4ӉHfYʙj&)g׫/x" ZI4?Do߼|_j~훫߮ey2!%m*_ev'L/fhx//h~zQ>yqO8 fo0Xrߢ ~ELlv2of*,VHl5=Lm˴eڋp5_n.*|(uٕMMӻc\Y/ poחU~l yG6k vݶ8XENEU,b\,8g:uD) MCq/U;|ryMwmlhn/˪8s&h";y l`mg|gQD`F|*ۥY@뭛 +˼fh"چfrWv"+n^ʽn |,g$vdfA/0x5#?*pɔÓ)42s'MKpd(ڇ5vEWC\;dy8_Z{uqȑ;ZK2dV(I<\T0S†5j;)# {fClx0DԍYɼS3N$^˘N$cU%8pUƖDޒ-Ai0uG#p74~o=CX ZདX^`$j0NzZîTO6<HLüh7UˮICy!=U*m zcr/xIS@LY$1 _J1pc%Ա˖&AmF)(1J NV_%:;84'%rެ-`.>[ȗېb,6{+^+ިL4E,S h+ c> FX%'8&@4,UvK:QH"$=A{L6A&QVڅD81lGs'ܞ0PvKs\| oA>{_{4T+OHn=XX{kDnvB  ݇TOrhάNs4o4 ,jBJEA'GHIƔ_)Q,R:- )ybx!DvJXPbL= ER6MXxb(7HDh/@~ c!ۅ acm|Kо)-3ehMpkiJ n& p\C016D l#-~'Omer8Śl SV$ڙm-= i"[nSI9෩MUS[l'_{ y4Ej'\g # FCFaq~p7 Ňyܖ`gv:φsT@ `JtHkٖ BApAѮ`m +d>A E׿-vCIUE{-,M7ͭR.N4 +bs)G&<\e& h1ߪp~5JY#4 r VyP]]a\ :<9]YѰmvv9vf!vbReyZyl5>2@ .Q&VM2ajBôb(wǝ3X|^k76-]"{bLɨ"u0[FF&lhMp%ʵ7>ffOi:>M7a^ $)wOp%dz&9zv(fAw- OXenBGE ~|L4h2ŗ 7^'v:`*hj}-CN`q؃IU29E,r\(J2eU|j㍬JUiU6F,ԏjluٲcVUwY4kA)fMJ6ZOrš0muY}Y(!#Gw7ܜ:~ZTWs2iUb :JzJ妶p[U76WͩuE嶬֮9C"RS{}%-O\qs / +tI+lAǖjZSsxg'|Z$L Z9P7 ut!;QUK,r0ȓV1^Ͷ'#Ƿ` VnU96В֛`C u6?{8 ^[yk/] w:Ѐ@œdpqS޺C4R[ߝw?~Y 8nX<?bۿ ƅ29?! /vQo{'m4KQuaWV_7-^>},qWfk/(3'2T:\!Ƴ9bb2 sPr$[&* 2>o1s'V@X`.̸h"C6\bi`;v^PθN'v!,mO~ܹLx0@$ Nz"J`EZ߻3g!'3\`+>?:iRdt $ɾyb߃ *KQr<z3X﹛\ƗiLeSs]/Yު rךLQz@݅zC23>:+BC a> stream xڵ]s6ݿBӗP3oSWMRS%JEH*zsX"e*#b. K63:{w[ff= )&)f5~7o>\@Bio1׏o?秗P7~8o#΢p!C l܆>;!hԬׄ{ꏉ9~ >_^~(\:cUDtfzp+3QRs6W+hH܂x%^y%U*)A"&tlTuuZP&XfJysɲP]IfQPGUR~M8_ !;ei[Ѓ!2,Ef`o[pc4|Xk͂yKr!wjs+(yo{en,NxTsXɸاJnwl'bw&?ͲE)JhhxxHYBڭ*< ; e{>gU~;|a7 hNSQb+`q! >qez|c`*dmlIċ, `vD}gOkLPV$,}TqXgEyV̋YX91$)DOqY`T:0hf- mkhݩ!6-3IS0J{EAMJrL~)saܹ2WTep넏8WKT28޻,ѱ}f oAZvG"]PhyCovnQ U/bm->TT!4< lʋSrQ\ ^feo 'kNiblĪhtc qעR͍ޯBW%qe[qJ8lhwkwOAƍ}L{8`6/-/R~V-"@lev?l4DN aš^֝ n2(]>'G$D6D{p>|jQ9&VD@T{ا5Nq'>/#/J`;T$2'0QK%t0攴wX]юG%DjܞPu9yXb^ԡ^&e*aZ/?香r^PrdCpn R!k a B|:&Z@Mb.q<^6rŞ/W5t *:P8Wq<-tsهyHhؖ{Pa]Np*X4,Gq3uB1†I]#C!M.Oܱ_zqB8PQ"ö"rN-%);☵ۇ=`Zf>J"]UD+:mu;FPnBI W 9H jsVdfyCF"pmG䷞H6%?Fıb}PT}e])4hQ!@gW,͓*͗qdLV*/}J4Rr2y202h4F6n9ʹT԰6ϱ=$ bm;5jND!=Jq_E6"2=1*\127لC;jC(ެdx[uVЉ]I~{gTZn=yۍB,c>I  y>]6^ʀ}2̵CSf︜&e: poҽkl֩*?|(uɾX %L+s{F_*C묾dc‡$Ie[_G&g*']ý[xqш}$_T]4i2xvY8k2FehB= !WOR`Pwr 㟦>7P"F>%v:cx,3 5 L4܎wg mk;e#:b'0Q#S=1Ж*t/'>^ˉO`8&s{FFap==#?stB&SODLtp&] z(!/wث`$w#OPɲo1J 8沗>v9v ?\qv?d laJ# 58:G..g~3էG=ߖ^>ۮ >v=vBF4Gփ-N tn-X\T&dnϨ̨&B'==zW\L}Ӕ8דcFΌwέw.weS<-G(1Ȉ&.9"0$'s;>Hɢ'}zIMb-z9 LTTnO,Ds>Lax9 LX\N}13>G(]Wbfy7cG .Y`wŚ0F/3O endstream endobj 1377 0 obj << /Length 2585 /Filter /FlateDecode >> stream xڽ˒6>_ŚLןʛ7`@ 4n>3xs"VC)L&L QUW50XƃDH`0q8 NJ.o)gX ~O{;RHdK1ߓyC2#4`d7WD^K9~Fyɛ/yg <U<M' cJHu%{6wLҕ=oG16`祉ĞFXA뤍uVDYtNYbFwdeq]8]tL|fuU/2i`zĞW(B,nl|tQL/VdȃɹSĺq! \Z!5 $σߓվĞg,sR:G7|ce(<]sMU9'!3qd@.>4 #:\QG祐^a!9ܟ= Φ=eԔ@ S"Ğ9HkO8SBfrԑ~ ]h j(I Ilޥh+ΞƅwLpLkQKw굜f}nq I@GaB.gXMXR`D1V$gGl[?AW;z(YݎƀeJsE7t)M_aH ISa2|?{LX@hK3TmJE vѥ45+( /e:U`fޣ6et16l`:ToK@LE (ߢܴ.Np+iu]L#Dpwag9u |fUZyVHٖ3K™9hn |faٝVڍۢM1:F>yc1H_'Qem[ LZT:ܚ?Y"Y۱d&֦T! YfS(8(2FxP6s3VƣMQtiݎ+-,O$d4Ҽfcdi(.ނXmQfogtQ 3M4Sxf% 'ƺl4Ԫ.ݙ!m,>GԍIYtOhB0dAJhЯt`}9!aj\ZQyhV65Iw]LV(cTؤPa`6Yތ[>.iQZZqO>+Mn|dnvfp],`X&YU9.Z>׿@9XGWyDQ|`|ʗK,iW_|| j>zWHޥ_IYA~`:Wqc*bzD? Zv6{#wAۛ:= ߛ+,Ht꾳埾}M+}!o/-TБOZR' i!Vf@]Ȕ%j :S^uyf)ZL'r>fELىP%[lMn]׮4]:U08Lp^h8*ĺ{A|zMӗVwx!RvS@ĺHr_zھNp/!‡swSB^!!",v?A1`,8֑D]dD ʬ~ z;ƂdϲBT Y endstream endobj 1409 0 obj << /Length 1654 /Filter /FlateDecode >> stream xYmo6_!Ԭ">y[&m#юPYr%7$RXU$swL׹^_ P wFcw s Q|:0:=st2susG}9}squgϣ/[ew-Daxsy_pE#bvެݹ^_o+Q[zqNpu"{븈cr0"QOǞk@sQUrM2vœ8>Ǥ]M&ay>܀axb%# jbqV[ѓHƉ-ò<}A :YZ`>qAD1ӀT,_hX s> WR-co2=2xć`HmKAJ6` pS ؠݵ=r!XΓK(lh | m !shG~l ޠ#]^VdŲԻNCVII M檊p]q T,U;p?aJY -EИ!Q,MM5}ǹZ"]m36Ҹg﯇WG YX-+*wlL`a#p;g]״O1hްhЏ i#^~SHߝZoH;p稦P0jRU3YDžYU@iM3~Ue pi͓=$*ޔkiPsMܪ7bQ=@Fkb kt#݌.-0,̒vUCm\Y!B NWrvTi5j\'O P3Γq)&즫XG1x\Lbosv k~憮Q~ȼϙ/} endstream endobj 1336 0 obj << /Type /ObjStm /N 100 /First 971 /Length 1380 /Filter /FlateDecode >> stream xڥXIo7 ϯб=TDmb9dAә >N}h2'rmej+㻖d5-Q3hDCl!jO[ĵmEmGSI" Q-ih&c*4hc`IcgnjJ5+bE=>*ہUUTT=Ac?!#ld{ }gbw x߃)S])uXW TyVl3Sh"X9gܔR9Lԉ֧>DMGPD |%S)$-~:Ԯ:t?o}b5]ØB嶺 AXyX`+JBDqpt){ބ!<.g36=P'RtTCdEC Vn\{ Y +Od[\{b&3-oAu@*0 -*@+=(lL߃2~y+aaV3wR +$6U:Awdȇ+Bk'swͳg%J.pd][E#X36e Ur}rȶ(SFERU K I3mRgf:5ў%jeF#sG; ;G0h# hīr 5pP* Eو :葵y% W.[p;Oi9[CkcJ8_5 0#Z-ed[# v [0HLMΫSE nss X8IGE^ I'Mk[2 XT%ӿcgD:^5J%ah1M@4!h([a hI?T5~]ZWع[ع>~ endstream endobj 1422 0 obj << /Length 1264 /Filter /FlateDecode >> stream xڭWMs6WVy&DGo#r+NLB'$ ]@-mOv}]Bg@fr|ȉAxZ;!>0*uN}5[^\$ӫ'&֗EOW߳x+߭ae ݥ0 'x6헙Y^].j4AtPD ߡop9/ o͝hH;B_J!12>7b'|šFR.41g1`HH=_FsT2cR?T[Z-}f1֢@4QNj4Kw9O&U!DŽhi,D &JaHm&} b]ի[󢍋bd3+X\TW An"]Qn}vhB,Kq5_͖H(ګ̊,YCi:(7L sVLp941yho^6C"Us{qiZ`d&&{ l4YGa4;9T_磐J\*=Dnۄr+)֌ #5)G]_1sX_x;QV ָ@&@#y;#!ۭ@[gGT^b}X0z@{hWؽw3ײߧܠk¬G+fZ;!*{>a_%6T~)gh^By03Fi l%,񚇧:34'f~Ė!mzen8H^bV9xf.SDAXm7g^Zil]jMW ]⛓3%AQgrЊmDӇ0~F@ 㡷 WfUqr{3+ VHwLoe+~; vh`戤v+~7arf .$i]!t.NH2a 8?KD@!hXF8L+3kuO1s)py p#U)+[__BT"D8_{ߧS1O" g:I?>*o-0} endstream endobj 1426 0 obj << /Length 1765 /Filter /FlateDecode >> stream xڝXr6}Wp& !TTYV"!5E*\,{I,\I㙈 pq;umڻˋ77>|;-ך#41e2ҾfN?/G؎>zfO|3Y~zZHǞ ӂ Nlq{b ~a 9zw?iz_//_`kX*h{qL-^|k{ȄWfVlٖ ׉pׅIkea # +,!5 50sY ٥r}ua HNI`ҷ- 6V Y$ވ[!)J"v l!Qc@;OK ڍݎt}ݗ1(&vOK]a`kK:JYl}4X%BZUI«RXR0`*b:N(D-g8(8>DI; 1Qi.HZgfafey) [uH")gk)[L0odVg/Y JG[\{¹S[gi@/>s m)J)wZbp0n(,(ƃSÎtc(QWƂLy= sM DҤf-DRZ&JeiV ezPPbi )׷I±$=-Va)<{D7{UCKu4-tAԮnЙE4ln 4uCÆt-<,{Ԁ9QpEbb~2ei!tg06bjq\R \IN PhyE{"3f);MäHOvbY|+"I8|G6nѦQrL'k,H&!ٕHATsvjڒm&RHsɚloBN((G[S\҇֙&I*#HlLxQ:RaqVyxlԎ{&62/Ǿ}D\{FzƢa<4",kPAH Вm+j5\M TʾYLv2*^UEtV.=k"hT B,ab" X:QTaf+J ,iXwkP4e#$"? endstream endobj 1430 0 obj << /Length 2462 /Filter /FlateDecode >> stream xڵZIsFWj.T8G)[8"* @cyQH^^~}g?ݞIXR. xJ8Ee_}|NIt>~כ|y7_oy{u2{@a Qc?_"vofx޶>|&y"8 EdA> %Q53 ̓~;Nh;Z āQ399D BehA3#!=p{B@D(fN.eN,mlSU9feUM1ޔElϦ̳Ѷ. '4W cB8 m5 ,7·SQ_e+U7aAꮽ#IA91ʇ,ϭ>@V{45>a42ZР ی cwZ-i(#;r䝪lcw˾9hҡ()+Mǹo2U{sJ)oY4[+79 zц6Je?$@϶~8,+.?zr|&m LmTMʳu&k&GXPSjqHlvKbTTm̓"]F2)14*WkT?N9䈓Y1ģNx[DmɛGCjLƘ-)͓{7,]u)p{1a%4!SۉsR &P#xvr$@^,*<[u :&{yyMًg!KGghQXt ޗ=5p1 ! ]y޺%4̰MPgY^0WDG׉8èvٴp$hQN)`;P!?c'ø_#$ x2~%(#o:49벃Gqh'DhNO;!0(b:Pua'KP#vEKS%E rVՃGf(#C=$SO9!(טXD/(]T -ѩʈjlJW!2+`q<:cC ' 9 w|@LQ>t%<і~N˺3&>-0E7V6J3 SCeW]xJa7b<"mr2@ cL$}v7"Fs久Xiu3;e7`l35o(.]k! ab 콄FLFi\HC-q hz/5)e:SgjodWBg6PLuV乡`݁bYN߁Sq$#yuW4{3#ޅ*!ۋ[EF6Nq&8\1pO?}kwCr#ZnX"8'0} ;f'Dl66 ׉y̌@00'!lo㫿\a}_,V_۽ןs vCC@@¿8^z2rnM nH}O֛\\y{ )|F(`QCvs[\0"!@MatGIvh,\=j*>=DUݭ9O[qëxOekKwX j/&AzA947 UK!\2 D`a&,mJeasStlh ̲ FҤ]n̦Fm7 Yh=c2 H8I6aHvȦm%pZؗ@wm[6t]uzEm;m \6M!NUr4 /)8s= R %Za> stream xڭYIs8Wr*F՜wuݗ>@$Eb=,IRc]oūn$d~Q’x\z ˫ ޫoLb?~}ۧHxw?\yO7q0.lXsx Sq"ч2֌}~x{w&t 1 CJˋ? ~^Qai)˕8 q| jFƛG#p$N6 K?JYve+;Zcϒu>2vSZ,Fifo7mSm]]X!zp Nszf.]B.ј$v0 apSB)cn[8ڗxZU$GT0V̢W } N3A~x,dk3) /f 0#DԌl^˕Z P  ޠTC҅pE>P+>IC^w8,p΂';G +6iE ͑WNvuJi{?}m3P1.`^sb'EۧjdQYj3?n~嶳Ҳ)elƝg Hx[%ZGp=SÑ[x V[e^dQA%K;ժҥ\]eF+. j0C\,xҒ6]^xb&Jvܧqelx|7u`-wA95!Q!?Tu[9F_UM64e¶]wH|չx9yҾeġUw3,d.Ƴy xDx ÀUE?wA|2{ՕvŁ9JA5fi@2/vyњ^'$$[&McPv, ٙG& @v u0ޤXp?Yurq$F'Х/1icل9).36fLwfHa} Kil\։|;i6)nt@Q`|U.Ob?ehw-Q C yD>G"IIyFCǴPdwJ]˺[tꊵg|CPt  zxGZϨ ~rWp.9ۜ.1Y\!|L%IW:sxreO|{-!hpaɝ.zQ2`_m@<.!OTԘKBV#%u- gݸm,~4O Y:396ݷ2HvoE]F jmY~NW lվ]yf&=ءIϑ8҇aBA(tX8 Зם<nG`}ס)>\ ynݭJefvP[;q:)OBq")>W1x4X}-=~l!x[RUZUgC2~Onx`R cD5p*02˵ka)E/@ryn;;SYi^ܾ~bo_4#x! "ϒ0$T\"ϐJ}ߎj>.K£@2|̛ߒ&1o׏'qr*BP؈𐄲s:';͇Ixo9^ /4 X$H endstream endobj 1444 0 obj << /Length 2466 /Filter /FlateDecode >> stream xZmo_o3"O&6{ŖmE{/E[:զKÙ!G8G8xp&FZR=̢ xH84O>TXXHr.o?]r_+ޑNT(cз ^ : RX7QagV߹_~4"/=\~A@H;@,.>}aĴ-*!om'`8(*AXSp$4Je9!I̢+$sNfcH-, ,u/QqV9䅻1-y1wMdz*̵lm}:zU#kȼzh zk!rB2YYno. wᙔU&i7L(V/zcv@K,ҕ8-{Hôb{3Fǘ'N+tN.8"0?^P2ep_|J,/3@qXiƎ.SBdBC+/t靷]=6\f/m?l@mE z/vϡEov$Hč)]vɸ[wij,}HӸ%DZ}VۢΦǸ{;>rLbԆ|=64A\a'9ɏ *rmZ,4agΊ6z0)N9p\` Qk!\+=)q-dXc)f>ǹqXwrpqg Ek=em13CE>_@;3CyRuܭ߼VZ/3}zR"Pwg-L/s?sCIF̼j0ZYaf-̝!"ڌGlc-9'Ow]6%1j;Y8S~kat7Y3};XsبTјD81:sR{js(m!fĨ>ja Վ@ bԮUug rB.pXqd[sHBg,};tѡ#qmM A7P1B;) nE)M(IEyc%*:[eE7tJ{CC91yN̽T=DQu7,aL:*+f0f=pav(v4D܄KpqPM)8EG,uvj~x" &{|7MY=tVe@Y:#Hk^JDxs+ J|=wGW0&=fW{q0?_7B؟^ϡ6O?ןUn.MG5uH}ba NyWH( D*{""φH1-.w#Ͱ%loR{7C9T1qVi8N%.5:uǝ !hBNyVOUȡ?֡?va 2]βAlȩՕMM!asyُr w 7?Wx>v!h&L-84=gpSyԟc r4Pm*tكbsue>_ϙwN{Nab.3Ws0 K٤)>{ l摻xs}SQPL٭a9yRcC.|쵹ݓFO:0z>LF$n=cXD`>JX> stream xZKs8W(UIlNI&zj'3qNTaԈ=@ òF[{1@ntr3Wg*6QD%<\^ORJ&iIe18}\y?ӄ"髋w?^xrˋ>]mHgYJA |94ߜd4';Y^ ߿駗ȳ7g1B'lXH|y %^ٙI,~5gtweє0 %r̻o,v5dz[껙f1ӋaŒM[|hK]w,ˮ3xR |uMڴx1rP3M5(ں#ƈW[ 9k+Ym.on 2Bi.a(!{[#TaΦq|L6qmX3@(?NckdB>ZMuKM}Р$IbsTS- mDlG+G\c[4˼Jwֈx0 ]8,lqFw孛WKDoԭ<"1 k3TpSC!Z!ΉR(1A%_8E<8,rJI@feYԨ%.1CI?e,y]DUYJW]Խ;U#֝QymCIv=3" X*P|d4>a2}iQwU?s=qU@єzD_;ѝwf$}8Sf̂c*dFg2L;guotcym+Djf6áaZR qiȕa2AzGy@3qػm[g = SD*l]cțc-'_<_ϖ` |6+4v+4-;M!=^2J6lܸq0*8IX(h=30a;?Pm_m;M$ô]fgQB!7@;ʺ7i4ҟP^^(OH_HڌfUkhSo/l~3q`ekmȑ8Fsɪ;@4D3"."|k: t\Xkx߄3v)H6`}z !ϋ=FrDҲ^3A$d}:T6Ey] 4s5t> 2]Ho.2WnҀ?1Ͳׁ,Ua(3gsaL2}1c/]Kmn>: _iluU=oqrUmrEnj .=ޭ ]4 :YȇcW)皐(&K!n> N2ևSwrxdھEWdCM7udxi:W:!F&ίo*ÉUtGc/7A+ XkAJpI%lXWMc034=!,,:R mQ\,uM6!9<LqBO/:cm=SҴτj}a^%K ;Sc#LxOH\Z{ :<`vj/{^|CF@򝥘CV_HXZ{V(dUYԘH Ąt F:CB1+){nt0PTf3a+Xka+1ۨ>bVGj&2(G@J9ad$j}  endstream endobj 1484 0 obj << /Length 2767 /Filter /FlateDecode >> stream x]MH'T3k{=02n{[PVJ#bu^fef%R]{立$$j1ʼPĘ_WO_]_;Rg/Փː=z7W>~=tP+(ܽ( dyHw'kmxO__='ȋW. <@!!X]~x_Qyw'Wq{EݴIټA2n>-2H{M|M9="mE3"TvEPŝabmz?O`EGY?'IVU\/nަyJ.°?K_Jj?S 6Sw@VZX9>eؖU6̪@AxU.O5pu;ZM| Pc-ꭈ :8 Е©Uw ;F-qjUXEeiaQ;c 5ªʤa&t iHPB3NM| Pc-?_]\&z"v(;~M| Pc- 0=Uᯋ:[~rY8߹k}[KkO%bSu m!T%9V( so4GNTLz?dMUKӲ: el.`jl'[3h S͐;7mAMːbF|O[b&(Ŕ3@}MKG± xRz~*+[ӗD[&>{%b$w_r!r- F3%hEpћޞ,{ JzT'JҙhM|h8 Xj[H&@WΘ3AC9 7,tvgĉN8Dȥ.o]&BC-^(rG)>S9m1`xK[gܚ@nƎNث̺SeQtB֑+#3]p&^_*s]8c5:pz'JG۟}2NL,t؏k$Wwyh\Vxr8`mLƱDT: 5&!HD#3I32M| Pc-dbBu3e}Y>-4y;yTfTCQHg5B'EEA׳iQ?3hlvrdۦh1@F(bXCK?d Qu?za%{?ȯoNy3 @ C3(q p6kcv:P2A\7thu52@!'}ձGJ&h՗3@M q^;`1/IV(Cé}vՕ3@@vڡ_'@xwՃMNsh{qn9=cGR֙M|ZjP?{?n2Zڤ@qq-,?a?..OȮEBw2Xcg0ڀkV&8Z,z0HG{ ʦ:v'=6J^)geh{Trә&L|&ƎkJpHMMuJ>*#3e@e@(CM0WF c krUߦ'Mҙu*Bs&(9*$"duitH:XwU9IY[k8Ā24B Afyt3~]wTpƭ$j]* ny;WIJjE#fmwY,2z'&>N0CLXb /b6-N֝bikEe<}%u]_B"8F qZ$WjZ8.ʬY ͚{OSɛvM\]ISsg2񁲂kU!*]i}D9#MD%&>JB~~[H%UGzHۮl+{dKݚnR\gb5".ղM}%q_.ramL-Kt)RH)XyF}vC<6W[gL/=\C>O53@@IUpƁjŇk$Yo7G;Ǔo hM\UI;ǧYKHLN#Iߦ41sRsN.\&grƒ"i/)YP@X1@^%g=+U.VYT! řCX&>as$X+e?y FxZE`QO봪aGlw0UK1wdW5)0UrPe!`\TQqh endstream endobj 1419 0 obj << /Type /ObjStm /N 100 /First 975 /Length 1346 /Filter /FlateDecode >> stream xXn\7 Whn4ER`n @d"MES}4q1.#KMK+;Vȟ\.H6\B\`eP+d mt^(|p*2ۣYl \Ut;ެX:k0>:DA8 \Zs/3R=7uXaxE( vB=)ԁ("n:d ""SH\CP<2p s*^xxiΎ:a +2U^pg Z hY{U&t$|$H\ 9bɈp&Q gJ>tz2: uCX n<R$i`іU!dr6t v:-l&p: ||O|L6j15tKj]%pK i:h$ (2ZN -m vaW?)۟[iV@^ t͛{=Z5DUQ$Y].eIm֦H[@*4zJ󳰏lѡŲc?{9?x[0}|twQN}{wQ>~ן;f~v~ lo^/{Ńr Yz/`u ՔLyX×f|I$IU^yo'uʣHnz&$~]D'JrƓ&9Q|hUw/XI,9gQ\{0D$'2Fs`5qo,' #&9aέ%7OuV$',) 3Flx`$oIN0_oi endstream endobj 1542 0 obj << /Length 2714 /Filter /FlateDecode >> stream xߓ۶>9:8zѫo{iNG:%̚VaG7&kE%R߿~Wu/?WyL?y^:50.v04EK{&&5+:O>|ݫ?fՋ۫OWIGt{hz.Mo?RO_o.FBr"?qv+o/vZ Tf(M5_2M6u܀&T}*,d181: hJ%oNC9Ko#yI}~z#nGRM,]; #B̪I?Q3)6Afx# } h vx3{7f}7zx(A9 ['4" ۞:1W]zB.Ɍda ?QNe>ik 5JR}Sdƃ@BzpQs^A%ѠAA{"%>.@IdqjVnt .:Z* ` 1.<>r?$):x||H>XoC|&BKO\j.E\. 2/ *-kwy9~PA$]jomP%=D}VzWm,%1;B1mhOGǑ{s*ȳ.tg&ZZ/),wE0D MSik)qR@hͱLAL#-{㛻$7S*(nQ|!7e> sr8<]pVXކX1FP9DI]tC<K/eކQJ4f5 6fY$'8vSC:8|Hq` P"MW+h24p>͚y}5l1p> e#7zu/\O.\ކSʥ0nO7ϋ`ҕ TކJKRO&2,.} 4(D[ӊ>R*H_CJ+E_)kpW\œo!@7Λ[TwM=),L_`Lކ1E6 g!~:'gڣĨv b b/oj M)g m؊MRXo>Av6.+6 1JJHWCԺ.6 ഉ67Y/rTy|hSv[/~jW@zc9)-'\moImZOh\5uɛ> +*$jx|HHXoCCCrw$ˢM&ݻb|@rt:0Yuʯ3Ħ-p_H@zP%lߩ ? endstream endobj 1599 0 obj << /Length 2494 /Filter /FlateDecode >> stream x՜M۶+YurRuN%h̚"er=4{k/[I;ui}]&.%ExL|} h&R k&o&•SDIJ)R\#@ LmWs3ʙm]9-9h}} th1OZ iqI<.> 4fYgŗYΚznlfSML;4& 1.Ϙvm;.f9+tlܟ^c 4@PbG7~Ya+Df:O m|`|:yM>3FvoV rd9hh}} ZhV-ۇùehq ;0unXdadZ# 3ui mYR=tr4 {>^G#\C gH ~%P{jkO» ׎ >0,]¬DԞ'ؾ>[ĉxOP`(@ `sĹ<gqtܿD Mf+/-4qFHaaԯ=3Ս[ Y+̋G,/7o83_:p^{4<<0ۯԎ{O8˲{D=?aՈv 1u LlzʡYNO?&*& 4@20և8r[/ Q72`B3=MmW̦-!g!_l K˦˱}]_ac},p}ɔ3Ѡ@(`ǡ0Èd;(tp6Ox<"ҙhD|} h"6)<"˦-*Eay{.F8 D 6FhD9Bbd `Yhp|} h8\!>YciWoiX FœB`IĘg5D"yhH|} h(L &Mˢ4iU:s  6ryɫvfgŴ8Fm 8,b44> 4L16{~[xt]@83#lPb48>4EW{t Hsѐ@$`Htofe ?q(ΎFC Pڶf]mW<ŋ1hrѐx@"P@2$V@ve>iOp@<`|lnͻm{NߏS 7Թhh|} h4T CQ=R%F@ P!CӭQ|g4(> 4!%J14߀t"XDaD!!MOdz{|_'\Kw-hk_:&6-1_lBѲf/4@O7e5 p:_lW|IMO_~v+-WbvR \@󇊰m[ `8-߫_彴V̚wmd7)/BG &/,b endstream endobj 1539 0 obj << /Type /ObjStm /N 100 /First 973 /Length 1201 /Filter /FlateDecode >> stream xڭn7 )IQ`d,YEQ ҷ&mRW*_!s\jS%Ә#q㩻KbNܦG$6=5i K=;ԍLHGr2vdmz82=M5*,rG;]ZR):jn!v sBd!$P(?Κ[x9*BYueQ9mV<ޑ"Ƭ/ ș}J# .gjkQ#,rLErX5|6=}DC/<,gڐGlyQn6hˀgC Qr}b׎c&tFu=/.=/&$ynIx`YEV"hBkXjhy(rLrXGƾ\1q2|K ">}U'i҂ kK-,zӇUs`bYVGRѹ|2,TeCK3]ɰÇBӇ-Or4eFÏ?aCbBźӋgr`{1gb|W Acpp1X Hc0WhP8ȏ n-q'\ΦZQ`ORK'z >IL{R;Ƴ\=t2fpV~~5W﾿>r ^r9EӣOח.Ǚ;}]~8 KZw q?:Eꟓ lJb?A{ڣdLjD2hhΝ6:e(e kJE-JWң1b6w:Ec\hp$5J1HFP5s%i6#AVreUR!hsY8t)8ܜY9g:u6GQ@hsT+pU*mRx؊5SKz+7No\;ŹwsM4ވ5Skz';Vw\;幦wsMމ5Qkx'?N.];}&:ԣ[k%(n"<ϛ|@}/@WV\[so JU+x+> stream xs۸W qo`&inz> OmN(R!iǹ\ d BN$$b,H(n$z{wo44҂: "ZERĘ.}g1ɩ@g1~??_IvzgW?~FֱPfl 9?uG""z޼k~zu5y 6$~Yr/}Yգ#¶3a9!\}WIL^E4^0zގE/Ȩ/a$c"bf =OwU?lE׏PۮCʪ̶S\[ v\kD0;֒J G5GCήڤ*1&,. 5ևEJ$_nǀqj t?z5Ņիp 8+}>ޭ܏^Lqnk8* >*=.W"=.^y m!t:O`m}.\z AB=@|1YbbPNlq.]Pz1FqY'L8X\n%[ϸtL?.q)[ :0zeLvH\T7'sb sM{8  > Rlajϳ|^ߵT^V[Ɇz#$RJY\|,SwC~g5jc]M4-& ^Z2&U|Z%} $.nvP٘<Vɇz!C9JAebƳ"vLם r(>,vv!+ix]9ɵz!ӹqu Bp% n Sn0ioDpK.r1 [lJjgCul{ac:ӡ6Lzpcj1@F E"}"ۋ9* G5C3B|Y*ŠpT\@*Po=TLN@M_VeSne82 2\!{hC%b88N@6@_=hDMb4qdQ)0[*CIjoEMXtzYiUd/[kfl|Xba8  E<.y9>aҘ(0vyahwD"n `A,_Wlgwu7kj*@DXkHꭏ4MC*pn[8$ >$\-$}Cu[80N@.@_}XB2Q+,e^Ocǿ\kᨸXL\^a(Bt G5G rJ󗀂 5s3P'*&w⻾75>x }|+q @1=IGf7ce 7;l{!55LUt׌}2݅Tev ib8@ >@4Ǚ;/"}Wm៊پwDo0uI/҇=vW~mzJ +kPo?H%FZ=QǍG;+EvVZW1tyqeφ˽*&\vX`bJݍ 8t6M{[ph;[BCS׎UOni<LbZ_ =e#VmꐲY 1,Ƃq}*٦S! endstream endobj 1714 0 obj << /Length 2747 /Filter /FlateDecode >> stream x՝s۸W1  ~Mr$M/wu'7a$X"r$(ɐH 5\X|( O/((8m 0iNPzܼ~~}u2ds{hOHFj{HwË>y۫W1yFooI9 fˋQ0%U2rČ"7.]"-B5gMA4 RR 4ts~9\ag+argQH͌-"i hbLgӰO4dwH߇ܠT4ɻxn>(ېːG:x20|nyWo/ϟ4y~bnD y1ϫ*Y'B7`kjp3/l:.Dlp| W"=u8\Y^wi9P,-|B$Ք+tHxEL^/l:늹H'iļV$CҾSI*a9a(>2L~9O7 =! ,1w:uPxGb;N@9+^씱y$gSpm@Pg{$O" jeQ<]wI3dm<b=ߏOc[E?Vuw=p=$݀2 #*G8bϢ!} 4<] :#2p1:xbb:1葲rޫ^GER.ON@fErfDH2Siz I>0$v!b\ Q,-Mvh G0:ж2 tՑa"DvΚ_٢԰qNGb!Mq@u6dy8+,Pr`d"ؔވD:̒EyOaq4a>TXtp]&yumQ.z㱰$ NW͎_FQbȶ!^ -Sp7rLirw@u0*\1fMm?Cf_kϾo:-󫢬zt4(~'>nJ mPgR&Q4¼Xۼ-иUHX :H,7eܨm:2I}$=pdRSy Y>0f?2L)GT)^m2ȇΟlAuPLtSs.V~v!M䍈mHꬃQ>b]L"Sqxcb2:`JyOij _XðBi_aYWu vG]>\;r|y:,fh1F{jr:*ۉYG+[-W/7G$FŶuAEDn{nv‡x<;fD7,} ,,ۛ0Yaԉ;O Kot,@8@Wlt#"c*l*߾1#664Fɓ3j7} J[J[cIҶd up?eIήQ`0:``u ʊ|Ae덹mꬃy#)[Za^h Rի([_TèE ^*,bo@uGźEn#vܮk[ǝ|řv=%1cn( Rζ3`TW1xW*7Qr5H%*f5ژ4`!1Svr+PuՄ endstream endobj 1654 0 obj << /Type /ObjStm /N 100 /First 973 /Length 1197 /Filter /FlateDecode >> stream x͘U7 y8XB,Z4Jh@ }gQRn>_vN{Gk{+,= )lF/-6g"gԳN8I iMܼdMdҙ m)'5dMZ_I%k.䜬 Fɚ G5{w_<)68rkmlsQ07?^˫ry\^^?ݗ/^?zsq? h17p}**J +i=&S_?2K dHDatfiXgiv$-ICP$=Ȯxw}diIdnFwJnLýhVwϖR\G7IQ$=)g-Q`OsOD>=}{3Ih'Zs>-}{7Ip'ɹOsOD>=}[;Ix'鹧OsO>=|{?QO jA?IPX|uG-؏t >-{R;(>c7r{ endstream endobj 1771 0 obj << /Length 2811 /Filter /FlateDecode >> stream x]۸}/ά~Hx}tozIkr7ٖw5%Gu ,/}1!@@ܻFx-w"ΤHKƻ]z3r_Y폄14|͛___F{?="T𶄁7'b1I__?_Gn/>] =.0[l.>ν%Ǚ̍xr UZ{(4.1qYlڊmyDK&kz1sg80I$*ܿp?Q"`$6$մa!@/!1Ӫmi[dM~yP4SB.+/̽6`IdMLڛ LkD"%(qT~B"GʄHĬS!.!Щh̋J0:$*>PV/oՈuHCV&{R :'`cf-2]%7sHuoOұJd-'] U[N7 _]>RB|?\} _w,[; 7SˤNI+cK1@E@Y7dlғoĒR) h-NJ2ώ^ݰmJNl :[8 IܾI_U9{C!.*V{[arWHVv*)&[vemMQ~B1mQUwur-1\"q{/4_\AR=-@Z1"C|+F1dBP6vڦ bC(mD@0[֥!Jꊌ9i3.ȳA& (ު|B`w2:;dq(: OU!TBUH D&Xl`SdoU@XDZHKBY5 b-DTfWʅ?L'kR*[ LrCfCE;3mc{Yz$om2B˃-6H"Dz~춮 *f (!ŬNj ykHyVIDWm’ Cl뼰u&&IpLN2 FA0:S̄0nn ={YPM nm &f͙.X?H.NwPu<;J9SP;e}lDD8C͎Sɕ-gV(#A[LiPRz>LTdi7wӠ|3h>f2Ʃ$>Lt>8׳[5e HV3e1ˋYU$DT(wY[o͓6}ߙ7|\Ot@H"5`Gv΅# &]Yف#Vm iq~4KElM2^ "@i n00` áp#/ڞFXItLVszWUPwzpd$PG.\M9m -5[6% eac1@yQI>Ui^9py ` dLiHSf^1+@ڿq$3#YnLj$3K [yьDE"PSo :^͑(Lp,0q&-!#IUycs% :F[]+ƻOW|X4$Ŕ}k8P^]΄BGz()̕ endstream endobj 1793 0 obj << /Length 3257 /Filter /FlateDecode >> stream xڵv6&npNNb{I999ndeͼB([', ګ@_\<{ehu[R:XőA`V7{˵ }/0@3y?߾7UL$Jk8Pv0G'oH(>aW?/~[y @.&"*+/Ǖ/IVve B-=]gS%zxam&ϺgtQ0~ZK)LƛC^u6r͇ةz7y1oZH$^TuicSТ:;<x |_&(ؙcK IХr^#;[J`o~S)%b|ǎl̮nSmG=];*| D!`؋+)c vҊ$܊D+QBIG| _fĻтti@T5_=YɷW8O($ZA8ȹم7 1)#("L<@/4?<}oggxM]2m6r15#ADh1ixJI8#o\Zq;hP;FɦD:r$i;o?2p]y;σzc 2TMNݱNQ2pĶS޺p_I7:4]faH.5Ƌ@Sp6o%[Z 50|+VE[2P M@x}io7ݦCڎjCzl_,BWrӊ6e=mFӄ̈́ ʅěKA$XN8I}9GPSqӸ+J$ Zfij$`Z FTqR`Z&cZXW Qs֐ A}&M;I[J15ql GO0HKm\衍#ZnY}P|L]Ț}YXXr@ B.Ҧc㻓 mzHa <_wRQg[8S|s]$:y6{ "W-t\ Dj-;hz($ G3vR1 @T(c49$THΕ(UΜ%(@۴.gF,$V3cݝ56J/%e0 I%S6D@3m 3`+'ѽ ʞf g{8U4</lj?"@/&SzSnfzy{/{jZYTRj{&X%p&h = }NO/*gYzL$ |I)Nog%Ⱥ;PS " WyH,SW Qkq t\m (‹Ď$V}5v?O!{I)|f%mB/ ﳻɆQ#C(=sIE TԱa:i)<ʅ١2 H<]*iHamGZX s"^N9|mq*`_$mJlC,buiql rz(k*5$/ܬ\~\K\2 W NVeM{ %ueZ2}lطS3X ݛ4AT|_]Hc~a8Kj$6Fq4VrIc| Y&U=kBdEFs+UNLhג)9f51Uz> 7܈DrR^|Lfuuw(6CXq1dm13_ ),t 2>DtXTe})ƊX 2h~c$f +[A!q̣iۇ/R}/V|3.(= Zh5 O C/ C]-= /(W,4J-f$UXu%0ؑ Q l <3&-u^` `Xd%Zx+.:OXL{D,|9 zn`*{xֺplZnNyQ1i"A\WuW֠٬ *!djtal ط۾TmI)Dy=XFhXwtz|،VliIh;!8 0MC38w74 7n(:\V: #/VU%gZBK_!JMԄ*a RBae=}σd&h+M%m\ؖ~ &3QCX ΢r- 4?'!?::N endstream endobj 1807 0 obj << /Length 3044 /Filter /FlateDecode >> stream xڭZYs6~ׯ40q>j+Z' 17<&CҲ I`p4Myuˌo2"\6IDnX0uy^0JY;>S)nB&;3ިHHIhWg: -9SeQIdrG!"C[|g!xSt-o]Spȭ|+8LP *h4fnS;-}jyoړoi#CҲٺp,sHI&PR >9ّ>P MC-|Ÿ[\6e=q fA??=c Cy$9o R>CSl߈ e˸Lۡcj&pJ'd& <X'N<̓QDN, bFiDD(2Ć8"SaL7Ȱfu]m)z5.tA9Vbz__VYj ̻ q?R+bVH4Rt w, lȧ\,s很G6VoAeOn c|:iNX FA\2W8\l׌mv×U ()?Nv"·?QC(;!uÈ9"Y5*Z`0v+/mZ YrD9#" 칧> c͉ݴ!5vөcs픑GةʝP6n{a)?ݟsѺzu*3a?cۼʆ~pԕmQ(2Ɯ"Tz^;EjH9\QQB PyK0ea d =hzqL4E'ha(n,Oh|jZsOw ycޒpOJ\>9A(+Vyu{&U?2b)cCeeؗ^EˏpH89MdɄC!˼1*#.'B=yxQq& .nД|󹗄l‡!Rn߻{)`, UD",#֐<i$0nlhkFn5LGݹS@ddN:= 7v4>3tcRx.}3﫳b"U]Ξ1$tڦgRLXZĦ%ahV{ͼCIE>?Jk/fbI*=cYhkKw`~x GGǾtU afC*rmV ,|HĖK + 9)r#! A`.q4{"9e2TDZ誅hR`#bM%C*SWb_1ZA 0 %w'Iך7 JM흝EU.}<QiNMg}B dFuN|O|}fLe$/2L).AݣޗH G&Afg('(ۻ_g%̔nwtR.KO(Ÿ-mԭݖmQ髑ܭ{Tz({6IEA=%bONx۫2g]]P #&1 }1QvldKZڒISxii@w9GnO e2'4:XF)q 3S&4CD/ PO0N6뇲rCD+[+? M҈ 0E ;@fz=HjlՇ{&|DVEhX: g!BWhzwE^ gVu=sQHR=!YTfR*4AzHn?lcCN aBPec03Q[p1!]7zڮhg Qf0>E.Zo_?[@&.0F }o׻ yLO 5魃5IL0DcyA$AGPHWZ?Lj=q|!#]= /U픳0\X1ЯVuOݜ|={yyL P\Zt?p,@yTyjG!|1XEYkleg endstream endobj 1811 0 obj << /Length 3049 /Filter /FlateDecode >> stream xڝks澔Z{7|wKNM38G:OXL7|"]b,ޒ\VrJEyn]*<._}\{t"q#鼾yKo~y៟^]Ɓsww?|#n lCHe0LىE"S?0ӫ~z I^rr{DD*W9OՃyX/-WcMJ#$})uZgj`Mn@:QJ镼RuH9vt65|5q^Q?҂5OD֧ݞ -+ iClKSļ+啔<UК{b^ RTq@4R;?s΋Fg:֌{*#NFg cL4` hþ2Ƌt`>BúxQgBDڃ"%=v|Z{wS 2!> gtgnՕCB^iOx֫ dZҙ+=Pm<4$u~ɚ ȥRBҋԈV FH7 RC*6^fix9V19މ1z}KKv~JLbK EG[h:UTL+ۃ0evA/**G6#dHpk,s+jULɰ͊LD@X m벬ȌF_;].F.'43I 6FJQyx!7u|F y T-Z5ea,NRn>4 &(jK 9jL`*ԙaPN E$i!m)ivAyxle9]$kޞ(kEYtq9j<w!ŠgRˋ[[p), S5$Khp*_2`-C-=YyNq0@6q _L?QeM*㈵F n֥զH>2^Ws@#gU8d(z$̎ d3t qj;cy*C)9ڑF[.j[n(6A|mձbgȱOt|:$I|Q_-U`93V]9q| %&/n ZtɼD^t_&E, Bq8klaW M 2}57&]ʖM>%j>"ghhaɄ}YH;T8tb&{f"_ğO&$i.$Awbu:M;M, Kmiq`P`lnj  NW?^xBN hY^>Ҭ' R^(%DS3蔪('K8ꏓ?(_v&B.:1u3C+4MvX8n^l--lJ<;f=i`JRLGJL+&){#vj%_B.DkQtk@x 7_'gFh`l6iÜޏ#FTCà H\r2b|7A`Y9@\H%{a4ͦN )T u+zY?S_DpX0:\`ٰ}\G4?!L:`YRm'x!D=m >8KY|n!O{Q,_^VV+ Dk^m8)x6s@|b? xT[_(|:48^QD /4/H@~x^R S=J{.=g'9<o #Lh.˃)a!9~Lq6[qL!K.Uve/ sS/5@[3t¿ `$]5JІ7/ \E86e<[qj,FՖ$;:~ *ߴK#QMEClL!6NrG`﷧"DHz@+"ŎZ><ƚ\?A}K}Ahu=ǃK\%Ï\g endstream endobj 1817 0 obj << /Length 2464 /Filter /FlateDecode >> stream xڽYr}Wm  H<-nl*U[)lR;4o<8ɋ >}Ѣ]}i{q1a$2~Q$*"Ym՗mrt-&tؓݯ?^H׿~cXVgqD.`o0,a?~$t3+~֧,ya{"t1ŗ?*Wpz3+r bu{ Fʋx4",=8%qⴗ^o~4(?M HBjI ?UV7m^KUO1J}ebk4o>|w"igˉDhk8T{pvM;]?;T53ժjI~%ve֗K[+*s88Dc; Ņ5e]f)N7e?LNslhV{msoaTCϊh288̓)8дi:xx\Q%p쭼R:(FX6pGv ["dݫ{M_r/r{ZU=k3U˪O T-ñ-Q1(41Nn^T*Uiu9)8knD{3q6p~oKd1`x3Kg;٫2b.ZqMc@xdѴ}`o]hUZƎnFi"G^ۍ8p {)?rzqϖD^$B .|꫺+,616ٓo ^XS ['qzա׻jqe@fq YUpu'( CwF>(&bdPHrF eϐ=%a/=љǒ=<>荋Sn?K|H]9PTe|DetcLF?Qf@V㘵҂`o`I脭P>\Oh1bv;Z@kOр7&v=<ɾw<}˴τcvko[봫MX{Uz̥X' 4Fo+؎~z-s%x2u^Rb·e `\@A5 A8F e7ybHޜ^K.* 1 -ƈ:tW@.,T@z}Nfe1NM~C~b၎!&r.rc#[u|Y_ #25NI.$bf /c`!LS0G0g19y"ɞc QunC$ 'A̒wM[S>s=(G~1qD^ui@nO/",&vUb!#en pbaɏ+ @ˋvch-D:q˔̏힖*aL7 $݂9N̨Vg$DcպAKڸWk^yKvIqDSeן86tk8efU|an\\C@a5M0h>Fa zgc)U0eX>b/Б <@2twaL! Uc?&$rs q6ǪӥːDQO&Ȁ~pJ6ߑ!> stream xڝYKs6W(WE؞Yg3lm*&!5$mnt].F_@]|qsc-R'h.b D# t-<\]F*号wDIr/8Xnn]$I񅀽`ʾ1 N⦖?r|fF?P\yw '".~]0uD,^ gB*[./yܱ1c<:IkU^}UZV(d%Yԍ+s0}^/YR."Hkz&c˄nxƮ<~kF+Py ["׺cʊ]W@sDz%yq|0wzRg\y΄H:q rfWIDX.e>k9i)]4P*;"萱W_XeyTl.¬¾٪K4#x|?.*?("9 =)mDTkydؙ.(Շ 1o莕kW[o\}M^~mcj-oEi2U<31&rt};nL,۩[h c& [`VࡰʅlIЙUS9L(cǞj F[ʷ +B`S6^(ab ;T#C:E&;x)ءٕIM_" 5`Ǫb^* + 9=AL+{ .n^?^C Pc-RBٞNwfB&P!hXdoijV"k{j;Un/;&dX*^z~u'u.:C J8D0h-oy7lΏӇMkFp"_A$wv&Vm$Use$+m|@6o~fÝ>JJ^r$ءw37oT,WYy̹b`j 0!r3E tXW82g+ cHE gNԞ{Ҭ-Bdb[تQYi%Camؼ)ѧo7\QzDm'r}Qj "1`I32^䉉 W PJu"43DaӇ7隌0NΌ &Ye. x Y ^s&xл"+bw!j3 t-i\T4͈µ8!;,k8oNl 7_l'i 'T0$1Z#ˇ0 Y=s^@VAT}{T~"Dh <}0=Q3XM̉(bE &%8)"uba "(D^k7cg$ 殉QP$Dbc 6%p4C}!}gM3[pkݞߚfIVBe_3+3mW|3b2WxoBԡg 21Bc!),x,MI{HbUՄ-I dXU|1y Tusaֹ]@HĨpoQQӳ 0ﬣ,p>}/t?ݯsN:p j{=_xR>G{'`:/7_O&s \+ endstream endobj 1827 0 obj << /Length 2705 /Filter /FlateDecode >> stream xڵZKsܸWLDUy`A2>z8XFJy@ f9#YO7KGV hr>}{{Y,YijHLdv;z}<}Oy|Q~>?9A$^$=U`jmiWjj{&UCLz6yUΫTy-lrox4}oAxw#_.HZfn}P_Vy9gIE^7/  m&N{>BPEQD^ SaLV/C-{sK.ʟ`0}j(v6OL~}]E]wݓ(9z+>*sBRθBL(;_U-3Zf?2MԺ}mm3пzKP}*F K777ڲ1QGq(c8U*$N~ιɓNQX bFc㻀ɓBCY4N* EGOg$CD# qA@TI J @TɞEgjRT$3D,D S' X04lUD#]B@(,kX>/귴G+]qLo&t#43X1ǻ1nanM{igipgwJDiNVͪ,j*3E NEߎӥH B *1i1jCΠ.iVNm@LiJ68И9!]q̪uDcDQGu@ &|&&y[z$A"ٮS[x=5UZS7HjȲV2f"CJWW R(\?zy3v^c ;?( I({,.lim6B7FjP+JsPLN^tyhC`j *]SBɐ5tWLTPxw\.4! YbS6,q0.bE>ءl-rmr0dt+W p?,]X˴B+{qF\sS >̈^?\o6[@β񵹇"Lb5=(z3r˒h{- g貒85ĐQS'X"DEiEx ˭y0 ,Sp4i2iۢ\^DBaf{Z#H[!#%`@jo05>}A9ng;0Ц%eUe.q"P }r RMx84 a@}hgV6%_?8N$p'\-rT- `Q7m%Xg>Vb (h"?j YLcdt]uKiSV5qa(64j߲q;Frm{&߻ra寤1G \;`UvխԤp{g\Ǔnr$Ѡ;¢1x [;YYre^oL|elCJZ aU,eCj(?4?HBCL"EŮ8 F 7lb=XWn gƠW&f,'e2.b&<و(&$'M~V@̕ /BM endstream endobj 1768 0 obj << /Type /ObjStm /N 100 /First 972 /Length 1710 /Filter /FlateDecode >> stream xY]O\G }Wc߱BH"HTTjxc!.U{l )$mXz{|{3 jDLR䦃G w!$>a .F`fR0Ir$,&). W4WJwի$)`(6עa`r5 D0ڗ#|0ֈ M*KX$%z@A! Sf8ɠ#Vt$N R1td6t䬲*Бuf2pQ:8}-Jr؉n(;a[LD(oь*# H &), oX)V*tsA|@hjnހf"F |q^ >,-p[sDc]QAL0RT7o:B8F][j=:c^3Yc-6QH])_$N$dqͪKQ#")R&.!+vpVaB"nT_VqY gޭW.ɑem}}mx") ;"R/L%ONv^gpNH>pĠ VB ò:M\Btrrĝ(NNR(@9trD(NLEz9tڨ .j$BvrS&`עyIH@@urNNBcң\= w&UȍJ:9AM@!trBP:9Hs)NN|8)NN2i.trrL*iL 'Htr2wrZ8_u7lj,61[?=ir\?/m7nx?rtl/vfkkWK+l9/gˋd?w_ݶ DZס vowI_ _{=Est@s؍FI%݋F֧eh'zѨ]M/hĐ֡hۗ؋ΞS/:6=C%,b&RHB/93I>Q]t$!1ұQ8l#&ݾ,k.Xҥ$_IڕbyLֆW`0 vx8nGr5]ʨ-ѣG s?6Mð:˻junWh<wl8\āBԦkHz:KXkG|v]fgŒdf-ո?;??_5AZPh+?L`Sޘ vZ5!n=čaJۓN˝Ax2ڗ7gVYсYîM/&d!G/*hN'8yr\CW|fxgL(?=@/{)jq6^c$4z5c+M*Nse)Sc?V<}8zHf ;)>eRDJ@T/E&2JӽЛB_OЗ]WaTr/oZ7] endstream endobj 1839 0 obj << /Length 3321 /Filter /FlateDecode >> stream xڵ]s6=TgffN7>(k֖\KN6~AI,ow6@AÄO>;xo0pr7Di'Q(frM~էw3igAȧoP旛y{u/7t>;E1*# Ȥ}2GQǏWgh, $];dӄ3eɓ빚@@#]eB(g<.gZ$:/3ӄsOTSȮn?9.Z^QҨ j뚺ƹJ}r|35U^ 7 %i|"EsHHEHl{4-7DS. g"$7oo{THN﫦sfc$V i雛*CաER6:UgG44,.)°x0-:I1٪|D26+@aY*Tλ&dLJLCX@B: A.δӻ<ȆPٚGbxEF4}I[?(wmz>r0wIL'aIÂUmrSJrd!d92 XȃV0z%RLrkf ~E s1Es %gb@サ,'4i?Z|z=6vr(l#}-|lGzV,xEv1+fWnBb:>B̑0#bo٘v46Espv/e5RZep?o#_^zԞ,泲 }Ey 1|Dʖ $}㈁F_B#ca J){pSnVr|.n!9|k4+{x tw04DYJM":9!|*<2hCUW#[ԚUl]ܱG]zIxھRpJlmflli1bnOfmu!Mp:(H2ju̸R~!*PC=Տf@3(<3j,}aj-وA(d$=#=lJra;$3U'ATkKړڍȕ#dҝDcx&+//u.9s. Vhojôvx)"1}<6}6  >oI%V b?q. *"gkƌGk현!9>lNc3ڐ tcKv]%uăӇ#EngZ=ӁzXmzGhPIaa9I%FBvP.t ЙXё30`t}canRA7;mLN<͌12zlX  OU{k"[mfB ]t8뵿PBX:}u&y˼M vl:&d+pO^}@8CF,jc 7S'li%mp) bݿ, ?zqA]#r=M@+c#G s0W[1HGMϛ` Xq8/MPn7pb :0>MoixH8p *rmw۠ l,PRQޭrbz^Ƽ/Oɴ~BÉ܀'NZK`{ ?N[ X_J@}dJ&B3L-ۑCqx{ gGN{D! ӂ,oq71}򢍔x)џ(ړiI]M^X;X?q4=DL< Dm_~yy4 _}'rTZF*ĵT"q)@IjD M8Tt,}fyQc)H ,\N`A[~a(k,0m3}./Z$ۺl&nfk?vw\M]b ..7F9{ӅM4WRE轛ܼܼtBRZl"BM D9ɣ}ogK- A!TUM]iu%%"|[Xۮ3zXq 8"Т`O/QU=  HRL(Ew=)ߩUۢ9hJʽF 3[#(QWI9B9sѽ&nkA8nSr45rX+`ۀ( AiE얒~vE(lbl2w&L]͟|utͯeȌ%An 3ѦJ'H J1qma%s7/:wWgYtOiV 5ӦXkk +?l}6ώ~|L 1hGdG$8W=5 _$ymGbvoVIU>BM>YmVCNϪ.dcsVwLHVXQKcg|RM(3hKd<҈ 9W x-;c%xVKSw%u(z?Fosn;];Z(==9 Ē3%-]žʝ3Wa|4")k+{8Ι^aS7 _I((@KW`Xkpا;I|Դ徛7͍ ^p]5Rb(`u.88[66f?w0&d=y*@ p\Ivп3H*w*cHG)G+Ϯ ue0ڄ|xٰ4'@&珚:WfR/M endstream endobj 1851 0 obj << /Length 2823 /Filter /FlateDecode >> stream xڝYI-{#&=3i/=I-A-f\zO3B PzXW_ozU"Vi"(Wg_cnq%z'Dͻ77ouwN#o{vdш{mVY0' _ZoY^^v`ƙ$r~5XaUKz23UK?$^cM%*嬵qCOCKn .!44#E1ڝ.51(F/Dc\<'e^GeqpuTO|-i|6dw0ĝ B`-|VQo=0jGxȼ a"W$i 桃5{m e5uLz꾱TL<<(uOԳaiqKť#eIӨ+L,CDPIdSEP9Qpdnv`ΣV:vd3BuN#18λo9Ă@6@ȧaM?i&ȨKu xtڑn:( ,]F RZ1yo !Qׅw6]) '6C]nlyEC@5Y|xaG;g]b4 ẻvR/"W>̳L)$::œ &~͞(%TFQ0J1NcH|V7hQ>|YWM$MlAD^ %$l628e#Mr$6?#e'Pvs$me 'U0{ (ڗuwn7QL*vN݂Cn ʸi\[,tT.ARҨcCҠ齮NMzDsA)ǹ^ra$hq/kj@9->-J\JOr5,w9F̄!}~h{2n*1:Z5s `/fJL?l71VU5DE'FA/D1a1pbUNg/#}E &+SyAo0x9S,>qωJoDW:6HіjD1p%U[A4{HX #8ODs pDJ^ EȾx,*rCYiؔPԦ%~e{($ij)_6"uz J-h!zXȞQq6N3/Djk){Y xR].:K`¸.E]?Ac7l a (*i5fO8G8|Nu3)4 uk?x3^۔ELHuV)mwlAyx fzTՁ͹atz;KiǙsaz~TU _\uB>KWr܌PGS)Up@ƛXw%Bm/hM Qfw.Ky'“a_GIjوd7xlUj>ћ5Y`ۥ^k0%0N6G{zfkNȾTB%z,_8;Q>OjZMhh#%i?VHC|{[lwcqtjCQ/Db^dGpp!آ8h.)_C endstream endobj 1857 0 obj << /Length 3013 /Filter /FlateDecode >> stream xڭZKs8WrUHYOŚ(TDʊ0Ļ 4ev7gN^ߜH,(f7Y,<%,Odv}7o?.ПG"sI?>j~s__^hգ.tRDH aNi?#/0?>x-}8:$Oޜ|9@ğ '`(l}/o|O&z *d}<ljW@$=4 E{*9|]lmQK2}}K"-2m:o%.l}5uxqZ*/`Kv<}|fAײ}O$#E"7d7Uz$Hcc ]:Sp`P,92!*y_K^W$~W:w*]:64ʸ0j~`l`I*nwfUU]56&hdB5kbm4z:=df8>)M;x/2U>4d@iOQt{[-Nf $kWQ`B-uG#hܭ7q7jRq bplA W]{,Hx ."?Ӳ1}0Yp2nƃNfLA(2GRa<&τ}ާd(`(AH~mYf;s^i*65 N9ǂcEPizC#3$a $ *?FߴSa\K$.)(82سvPS93K^M2E~}^sԄ/ ԥksyZ@I#^Vp~f#銟ax1uV@Uq-G>hOe11?efY:Ύ_Ơy)ϛp*p)m-}O3O`C(͆tkplQ`Yf.IP;Q)J-n<g 薚n.?@_cXIi'0ŗ25U3xU>FA/Te 5].i ox}'`~f"{cw6e{~gu9n:' ̨eM,=cql\p6>,$wVI]SVSp% i1j@kKY vо)uu?-Pyb~mey+ڮ,m :h#)gX,GW]~_'i91;4H$NeOEGibGJc$ u9o^H(b4% C5B[M=BGY )fZ[454hr1Ŕv(`(.,YE:+Y)&>q3DE\r焷67^)1 [k-ؔzXEMO'C1m #tiLepc+&TiЅ|,lhj|OMP8%Xʛ$t q ꭱsC9o,54Ȁ۴I=x`ѷp]5~{Rc)o9#؎8/&M[m=ϜGed1StmH}ooMQҦRA8lk?4{FWGFa"//@ =$fv%4\T? FXhNbNu8S j1&i n1[ 0g'Fs_W endstream endobj 1862 0 obj << /Length 2378 /Filter /FlateDecode >> stream xڭYKs6WrV VNNv<Ƴ;q[II,SFhvD٣Y6F?n| 52f1O0Nfݔ6twev $LV;Ht \VSItD}Yz$I(u<|jMՐؘ\qTMeE^ڿ0 _b헦ߔ79)`3SfYTuE2 cYzXpcv IE!Zc ŬgDJi&[yɗ<^ "f~{DZK8Nn_U5pq1 @of)[`L<wrŇ.Z%xDxuCbc `@.h嫼uH %1[C{])8)5 q~jo:,wr8ˆS_.ҙv/p4ע*xnV;#&jlDcXd;bY fvkA/|T `ʎ<1@fm]Q;Gqvi1* G官r L&8QMJBAv;:A2۫}3s?4u3Օ\5 ereDZ܇: dAhtH#k"kA;_\E^|\+sirylvx8sv*+FA%\B(sݮP|yZ)BENaųEê^bV-[FAM/Ν0ٶ\@nz#Wq٨稊u|@ldѲ0_p$,5ؾPx< }G8Iĉ$li/IpkfHLzn}b5 վHZABHg)\&?hLx 2ؽP,4\)64zqmyDfV_V e6DL3r3ٱ(x9أv^H1[ 0f\W tΡ<@}a.` DѠ "/Qݑ* TSRI#h"w۴\4(I߲G]K'J:Qhn(&r\e)zRe%Lguc}B:J\ caWTpїQNذ:QcOd|&C8/KǐM%?v;F'&Vaԅajz"AF޸S&Lg$^`&!^"R…H;D(_1_O}a 0Fi"7Rn ̘Av8.׊esfzW6jJ(&Ë %%3jBtt޺C("wတrnB<3TH0e "B`f,Gj_,Ƒ}4!MFU>Uz˯+}ȧJ|j>J݌[%qu|կ"*-SbJC/"Vz%*/Dg@ElFWbOK)o`2UM%:\7-}OG_R:n4g-\m2_ z0M9=% zL<0> e@蒿nyɈJ> u"(D#@)z endstream endobj 1866 0 obj << /Length 2686 /Filter /FlateDecode >> stream xڭr۶_=c$+ڌIOe`ľ\uPDYP0gAVcڱ`Ju鯌\y|LJx &,j X'v{7/.)4jPmD,n/' "e<5Ib&q#AMI&yoY44(3?SѦEA^"+U~:Y{ mDuX6.z)S4TS8h+>šm ҭi+h4AP ~C 20Z`qYrb~!ctuOG|Ɯ{bJܥ0wLa{C1ʂ;,2l}pH(!V ILQ.UbX:P6\D!VlͳTlUJ哏οjd}C[)M$i~Յl{#AGL:_38 6#cjA~K٭j)8nZkl:?v鄺aAFӧR)g-+ Eg:/BjĐEQ@G>VHnrV)2b̸L?bh ʭ-LB)Uݗp"hTT[JPö2= E}O8y\Rw/Kw8X58AF_J4QByiw.)|rq_ `'[գݧ47} ScL1w(T5S}<(*rjd9y[&yu9ͻ$3$0PsFu@r % ]J4+׸;z{C@{ܦnK0]s0˳ cg%'_NP<&i6Me!XU;Q`&k4D )0:T | DֶqVEjDHe7;ju7LO5$ <;mx2O,cNZ8A-N-ΎY<lѮQ -.AO* }Q`Agا OOɂ)R( +,MH>WBx7 ):9ǮlMP%ʓn7 )U))rg0<ۀNF4VzBW-&@F<.Ԓ*12!NgƠ>(NndշUS | ;8sE&T2B[ӗ*M})D zaf& Du_l%Mwe"rl,OEmcӊ'Zƒ'!de> @0*2qXL>ߩrb靳aʅL8rOӿ[&"M&.4eA/R|iza <K^l}qzJ_, endstream endobj 1872 0 obj << /Length 2979 /Filter /FlateDecode >> stream xڭ]s6=oUf*)4}J#m>pe9֬,$;ڽMg$ $x\?" 3z0EbPlZ| ^ׇwHKmDdԼpD7n/xwPiFa %aи$a*R?߄|3û%;$y DBihLȷa C7sP:,41^O'Pj#ae]nmq㗟&Ra&b)eiMKo֗8AW H8 cy!nNIű )o>-LbW@*8:zW6@^7ėW+{buTy<#\p,`r PRJ<hYp5Mx,ꢵRk/ ]SwqO36kjW_NKwqoo~QKdP]_u9h)`H٪"s\I4N8a#'qp_nʶ(ĸc4FD9:LTPY B1ƈ@ b>c޸vna ❞9JE)p 'H@&79%,wV+E2 um31b-aqQ+rZó}ѫbmUO^C%/)Q:e 8I,ԉk]U,s4ZK%NeCY"TRPJsQ]k Rjda}b?|}{휼Ϯv2x* bl0]N2a#5 G0bJ[42K^S9xa2  8Ɏ`k1:d}#:P˜: {?f7j|4P%5ghЊ5 ~xy;[4$n `p6&@¥'. M]'=q[K?0ߓq¥(}\pw}&PH|ÆL #aNjNǦ3Q8?tso=1cvW;te00(/vr얨|"==T+ 9dQFL;g/%MC yf932LԠdECga:LӉհs74@LOTdω]%f>*4Lhi is{V |*@s!wǧKk=]ω4}{^.ŗ: ~Y7 mh+XD(tr`* 6?D"_8#߱IOoNN @!Q L+Q#5Kjj1(3"TIb wzyH6er1?eO-fF-Ό! u>X^B/PgধՇf_/ 0PN5aF)/!ab`VJ3.s2H#pF FDn 8}gyk B 5ղe,~#PN51D\9io FR슫'E>ke-V%J6`عC}|6R[$%/aaÝ d»s:n`NJ z斝۽]ݺnx:WQ]OwAX"9~@>tuf[l5iUiKDGblQZErt0 NRq"@mJH;=jqߺňQeM S$QPf^Rb :݆dUJ{͈KWS.`^r2U4_Dn& g]1/70mG$~i1X"pXHN5PD8 :W0|ԻIq<,'+۝'@$&C~9gK+ZŸq0JN֘ʑ䘅IqͱQi:k#l'[e`L|!X tI`l@gD%Ļ`e(]^F?*bRډalйc4;+d9° X''NpYfKGfuI$N'N~~`rwuҘ뤀&MXr]fqnk,Ϗ[GI N+w4*/HO>}YHizeH~5sl ӛne _,I 0J^!=j%]Ans1|"u:sr} Z`E!MY\ #ނ=@Gp}aoz2NCSɬŋck@A;Ӷ?~“:rY.W`{9bYg4L\3xO 4&m_dqNK!wTy.Rc;%_#\I\f c|8%o?22a$<"t9S@ϰ endstream endobj 1876 0 obj << /Length 2769 /Filter /FlateDecode >> stream xڥv8I~/b듓8it'=,N("hS7Ɍ3, rWw+w٫wZ%Nzvk6_~﷗/pסs Bw[$Xi W$Վ)f(y4#'eGkX S}Z9Ck ߚ]3 ΋nB&ZﺲUlM~~zKgZ+DTxƋ7 rAQ m҇t+F7?׊wgŎWތDQNڦ95GMm Rzm f knviWZ(%=?q+n̤"E>0:\P{V|Npdl 9 WHe͑eAKA/dTH|ANwZ2d%l,7;=ޙ1,LL奇yM80^+pk,}!m2 @9)Jqx?M/c9fg&hO!Cl; 1.C:şe-A6j;W)|lՀ1lMM p =ogġ2qg'AFW*-KGy9eS ȇ< `\M˶cd}"+lQvю_`5e<;(YZ5us0)#Im<|Q $M4}m{^[ڛc+}%lםŜ|Qq?87z%;? [8>Kqugb XalR@, yxˢGeQ@ZdQ1> ?80RԋNđ56u)F5gĦfo`3@o77s } UyB|jp;,sãr59 Je=ӣV&m; !N(R duOz |ʫNYDڽUCqJVK@y.Z^K UIze %2i`"0aUfrl}0:FV AR ] ,N'vHa YJ!`j8uCj_? mk_D=?O-ief)ݸ4(Ec)vozL#$ m ,d|U\!_+(;+dB8n:O̗Axer,pO%R~cZl _ \tڧ͡Ɗ>eK6w F۶);khU ЇRgdS%Ny4~sR/J7#sI 03r 7X2pwPe f)VXTTQrbM7%7LS؄ᛡS' lkI3plʣ3uj"ŠIV :vǚI)NxSBq KGH#)׳ 6S%ۗ\I@#9CT.Pc=/Z]~شf@Y>i): Lͼ@N<'qB3 /үEU %&."D+ CjD4bjGtf7`RCcLsX,%0Ei$DT4igDg E;꒵ u{v s;H#̱o'\? )tӘ¡3y5ByziqÓjOYK<}K}W@u{4,RKض Le3aXBkW?Ʃޑ@@#U$ߋNB9aw6^>(#<i~ӆ:/RӾA/VL  |{;6DM@;'i{:`czȠSOKRgP#&*{dc6>PgBBۆcgƷߒIxX7@qs/ cq _v=.6O,E]kp QPL pWzM/ TAH  [ cwso:&?Lh{$1ׅЅ+7Ԃ\ ..`mgZ_rBWvś/σ=KϻW ڗV:v$|< 慎܉ }hb'; :?8=7X endstream endobj 1885 0 obj << /Length 2178 /Filter /FlateDecode >> stream xYmo8_!T,_7ဴI{^thFmܯ%[!RppǓwR,d-^̙L/$Ro{_$}u5섾tWV,qhT< ǫG(Ňߚ+'N%S"/N2y@2)~Nny*[j me Ptk'e CSkiz Ea:2+ΈjFRɠNN!$f3xpz*оCy s3 Tp(B0_`½8e )),Va$䇑4fN䠾u> "/K^P@C^FqB e}[Ogéq_76Ђ*@w(OB6K5-xD(p",fv5rԹk^{ Uy&x. Ugy~tap쐏Ap "efhxkvzyExXڝE(wYDx:kG;c*[k}'j HN)@YnKzIޡO_GotIbUt mNq ]]@щ_pNMGr!".no/߃Ib9 !0}In/7nEKR&n(‡,ghK>lߠc΃)+"׭!AAj3\;RM]]iH:OPٿm5"`ABqWY66E#K: PAʆ w[8"| aOSc3T$ì&S6P1Y Q蚹!NCET,Z4c1HM}Ƶ] q̧T(' 0 _N2E aXŜC*gBQPˣũE6L$lE&zzU,ʲ7g0K LTw@)Ml0"Bt4"BCDxb*m<򢥃/nXknuJ4kPah.r9lGL\}m{8rǹAG[ҸYyD|> stream xڝZs6_=&q%%ʹ}("To2k/X.b.`~P/0]o(^diq_/~te^_/4~97~|{ׯ7Y*0`mR054`NAaS?՟/F:S|tp畂IrLr?ME`DED~?1Z06^/ u=Ԧ-3eyoYˮ4K\/"HK"Ix2Sq?*ݵ= #񆭈<֦AnVZtr2QˈV[ٶ?n|wO*?ȝ?A.IAk)<%dݳJ+Mai<RWm vdȊȡc: P;!cZNн~{6s+  ǞD*$`5 \KEޡgg}Oyi`d:t:E3U\ޝߛ  ިIhqΡ]Uюi()EFkI*ݵ4,ͬt<`2iADQ 6*}Y'36dOVְس+Qpeec̺3'r8A$ؒ]i/ )7<ʣ׌6b !kQhd&h4xZ{<םiSu)oo/^|Ņ.M9VfL>u ++5ь7k=S$r' .SɲAͭ8 oM?H2wO_4+ x J.D^{*Ѕ Wi2m28h~zȲ4<p+aZl43yqyveCY(.wD~Ǎ ?JRH喻˭~cGElj(KRhOip*%_CckN aki$ӌWiDV%]:ԑ7+`HMCeKU&%4T_D3Z3wd${k줌n9yD>4QN1hf~e7;LZt)&V_Hz,P`CLzRnY$:Gy_ =IF+%ȟUe8mX&_nCD"p͍cOx[x[ J(Sbl5$q>*N|FDRO5^U) uUo1gV r?tx5!{V[fӰpUeg+g_0#Zr4*C|Tvtlt&页u PygjnǙѕ v9#'rog<>?6U8|{Qg)L4}齊ߖa4m]K R9#r"I>2}4"{USqhIBEVP g"dh9)t ɏ K$y޸r~b(P(\`hUt炒tM~s͸\ _/x/ߚ"ϑ.̿^ ͋O28TʿeDʽ{5*+v&MO@3: ]"Cw%(7,?t|+[И3 *-J܏* q ԏbSM{K l endstream endobj 1895 0 obj << /Length 2784 /Filter /FlateDecode >> stream xڝZ[w6~JD,II{i6qϞnhEI+ί(8 `0~^M2/xu[%f*COlu[~_60ױF~yGɨy˻77opIw?nM*g܃4B!aoX6z8{!~Ϳ^?_@Wo ԋc*W%t3Itx+cdK3͎@I{Gջxf΋Vt=aG"R@tSs?oy y, ]gU{3Şa=(rßC\)X.ے%Qkg)]H)`b /"b]E=(LTׯ6F Ys^D\Q4t[m]3tE~Q3 }^S Р <=n :FҸ:D Hvp#Pl6{8dATK 1džx)!T {:CARi1 IZ5']ۂFQU4X̬:y2",##$9Rs{@ʉ@ uek3TmChm8t Q@Q>S̝DU d~0ʄÔJhEނ9?) q]u,X##Hlt89蓍[u-5:3ZҁEq1͊^A{gƲax!*>x`ǮVz^J)̰$ KԩZ^Qút/|gOj B @]Od4M!_rͳA`Ze.6^^O-$y6lZ9Z}p-CU5 ."@O"E-tPPCs aɲr2tf(kD*.L-`m&qM(׷_V _s/Lrraؐu3(^Ϲ@|ݭDxQUTf[B̀NU[І`h{~|$aafХ"a-@]95:35vОIcG|'ja\LЦf#0ԋgAohx@6y"bW,!W^7!O)_d&YX' Ś`VPAu@ ):ȩ!;j'<0zr ɞk;,F>]HS_[_7[Rl؎&pIi="{ MT]?CG?  I7 [R΂۠To #n"SB G-qrQ{?l)҅ n#ܲbbP0J u># ߁s&vqNB}>(z[v,hD9 CZiTL4Xg'} q8kM&uB= ! B\0¼W+ڄȞ>9^kb7 o8"e!B&`llݑj@l"¬(E᭞:Rd6A^pWw G;K^QtƋYMSgp[͠Cw%* ƻK(;6yX蒱Dx̼ !BE*i b@b ba%))a ;8!D7#0Y%B`UJ?0NՎx. c-h~bS5y d1>;Þz=t}_#)fn(|Nc/6l;<#0qЎ2[Z(9=̹ Xk ~! OEHӇ)L˺\k8"NLؖf}MCQ+<)/H=~H27 2Y r endstream endobj 1900 0 obj << /Length 2954 /Filter /FlateDecode >> stream xڝZIw8W{BH&ɌysH!TD*M#B9^l//0hEY"EK._WKH˥qˇoh>ի4?|x/eɀ:R&a agp,MXxxoi￿Bo/]p /xwA1bg(ۯI-"Q.>_" -.fHR,3^fE4v3q˪KYlxfY64o;mSro~it+|緯2pʔGuEϜ-2CjU.yemx0O~uv͋tUXG:;l4z`@pc+ܑ Zr+xT<E8aEb\GzM,LbE[rSz+3ؠܐhƥ QUU36 a*?6`0 H,BR -0t,n뼠7YeHNh}ݔm}psӋFF5F`Դxy? eՖwBdt ܂7utgSX$cixJ/qɒX##/ u7 }ñR'v:xXǜ XStqS?5 b9)L!:#> O^(QԮG2ކ[xh@4nI N@uكH a10[D'"=̇l/J?m(AXC{#CͲ)LNb8Nx`zʴso3??ypp &膞o aI]/F\_L.i'ا ph#(Ɍ*@p#hꓲK_@.)F5o_1k‹slwN:#8\}Օؘ%ZM}]oumo~~҈͊Gn^"[8 xA{~HО$tG*S?Q| Ɯ7'ZL#cEpݷƖ_!—@gi-ZM_8-4YTK%dteo&!بrH*('|D_~ jf!A'p3sG`1l/0tFͨ1 C̖4hw%ȥxH``c*0Z&Rf o8ΥUqx}_+2xbj+ &B;N$eq*G F$fYX?MMQzAE6>ɘx[K$Ʈo"&HNtm ٩@p Dѧ ǖ߂Fk9hC1<]؅[oS2@ uڟ h㳃үȷ~=4aW;CX~*{H-R|ߣa V'}]5dq>HӘսp~WS妠/sv I2f?Slw]IL_/sH)O".B!N Zt[*yGyooC˧k>q2 ĔgOm KuvO}u}b'y櫯͸:\f,r_RM$ zߟ5M'P rWx endstream endobj 1905 0 obj << /Length 2897 /Filter /FlateDecode >> stream xڥZs8_ٗSfb-){ȶ^vi6ufwK5%WPevq}@ A:b~ZxEQ-VE, MqJU{՛eK I<~ws5Y]& 6 Rf3XODbG~nfd Q?]}{yKY}Pޮ1,- @W>Kovи~[Sў/tkd|*s)w3#Ssoyn:kvӴ^rѻťCABSYPjyѠu#?+P.Ǒ>XmfޢB?PK#LxݾX9ӝ_Cr`IKLݷ& DYޡ36.ڷ~Xoe" @/Kg$T}VțӱGoS!yG

ę*{*\!_'ֳYcí;`#Y5 5 J{=CƱwx'wR3@-1>Ep~A 7} 9C!5k̨bbBɈ%%s1*-`:KI(EV:) =:h]""rJYG59C j?0 @H 0 ΢̤Z(+JQHW} 6Hk1R2oӗݖ{n fr&IO1!3mebϲqw.EL_ФwF~`}0wwoj8)iCkar4Q6pz1=1eSvuGyCs:h:/ v`z_^5/P5͇~\  1K8s%C7ׯ˻4 OCm4gYd]7+P,9Kalw<,Q25vpFJ;9Td!6p$B0 W;VvaWS*G0Hw_e} S$S:W1}mԠ;kFʇSVC9s'%g ͝5)hau>W._}^\ }[ Yөa~3,PwF[猻1t ]#`iVP˄Q%F!TIgcGز~_ }_}*_gm.i)_`TKz0aX!Pp4CD+3 fâKf<X܎BzZj3&p-8ܧ_+(o p*9B*ȖXч֣Ai Ġ<+>w ^wO~xG(F#XƷm|O Ux& %`Oyac$F+{ ( 賿tiM+tw XZ/ĥ_`!2~)&'t ]f Wi-f@VN&CB ɟ_rCPPDS5c endstream endobj 1909 0 obj << /Length 2432 /Filter /FlateDecode >> stream xYKs8W$WE<=x;ښ΁(tDʎ뷁nPĖ+=x5~䣛>ezY*F)K4b hɢ(M磿/=y?=uŒQ诿h}8Si2w#WH+#+l9:'PyP,IIye>8Y}̪l;y{ʑKM`8|AZ I0/6Yv@ cA5y(˼B"+Jbgr5~ HsO#o}/a"_SGMp8y{zŐ9]:͌& grO|mJZK<ԋN?=6b2 gpQ4H"Y}G&,M,qϠJz* TgP`z 3zԇVdծj;j c: HZ\Eud΃n^xΌviȯ6i/kܔsѴ hX 4|EQm g8(IZ84xHNr ÉO[2=cTm, `g;.5z}A-2j;tWM[]"?@! eƫgC!hJ#RizhIUO:m\L uo{AR%X@ f]9T i52kGUM"]U[: {E~[5ߑ" QV[oCl;B>Ca¬- W??B)Q,߄d͖D&")4HrF Fwn0dl+ sjF"guldjVCl(ܠ%SfD҄`fWq u"su P-==G`q/ݥ6{= U!2v4'.@c-6 HYi*Aq}N[,L&4ti7a4=$6=Nـ{ʦyՀ;@`ˀmì^ओsN D~mv0!! HM&ذjӴ5q2jyx ke3$.FM`YwZiB)&[ vX`XxВwB7y!<]/Eԩn%;k:Dڰi-~W*:&]"=b  cEHPÐ&(b\~+Clj3ZСbjeӲ$Oj`_f݌fH@b0΁P5؍o,ҺNkфy 0!h$Vh _ivPp ᚝s0qSw9T[ !o ٕRTvFg=鳞!eX=@RR_:a 9`Vs P$e2 sޅs9n>_=#o o'_I\q%at8umH%?Nj_G0&?y$e YɯEAH~,Fpۮvv;Yu,k0@fϹI唽{߁qtW׾?^^v?mLʤCi I[O CC1@A,;cU1CiRi%uV5 hz{w`I`[(.ZvxS!ׁׅwmAJlTZcUSA!kqnIoq%-2 \c]u|D 8^]ǧ+1+})&Xd`l$Xt >wJ۽m'W/1;Cj"-x˲lCJXC`Ťa*(G!E: Å)//. endstream endobj 1915 0 obj << /Length 2422 /Filter /FlateDecode >> stream xڝY[sܶ~Gy&~>Ӻ>SDy9ъ] @$+ʹ;@A\>h|Mor7OdTmR l&E|v>rutp bImxϷww7puFw=&&Ya{a)$LJo73:vMԧz%/.^ƙ$8\|۔0sC:Mn@כNj\xS͏4,gV ~/n:ux!|8'1Qwid!Ng)k.fL}0ʃ~5/QDIQ7jiQxgٙ?ػim巣,zYiEON@*#E+)rRR;IOYj.nUCOAjZdr-E']5H;dU-ˮ#Aǁ舵!͟<%M<~!N|1<72blNAZth8 6ՙ5;Eؓ|9*zdEv5[8G#$yԝ58GERS=1;WKfqJڱ(Z:3w޾Uc.,GQgGKs4 np] yh!GmG=Z214᤺D_hl8ǘILMIPX<љVHŀ#u4ҫ}g֋(> *^{;g-i?ɐQ׭!_x\8VjN˯A4x$󫞃8  ,b1vc(ʥ4t!nso=>`> C9HUTC3*zrQoyd ؏WC^j+BU'6KqFIjs\Zb5y<ɄT?X#8jt(\@˙ۋ%u6]p TɛG ,wʕN-lOSS %b hpIYWpKQ"|{'#0NJMtVP9W !˿ۮ&q8OkhWչ6clnDkwQOg)&she+ ӻ(KƮ|c*48ŦxR E8izj(888YO|-&"Fw^b,YaH^54)w2Y;] EϤwEnME˝f8#Xk鏏2YEE>N9-w]]H*@\@&5)  6h+ÀnZn,h#O,m[3ʍ(ԌaNt TPwzb k3(Oqx};`٠Ue)n z0Fa=`U %h3fbש1t}ʀÊ Κsqb/?4Fꒋ 凱Xy̎﹨d FɝP 5QFuc *IzS$}h7D<||6rr"ҏu0#Qo)P<2as2  4ᅐw`Yk 0*x! '~nHИxY'w=^_Z rPAL79AQ,ieΜ9b@мtS?£hmwQD͘4apd`ešz" \$6F6gXwZǦ;L'OsAP1 QN+8wET#FFC/vto(S9E"$9_c{aNxV;b݀Y 2 Lle#<NE5 %gނ"涝ubx/i|݄𒸋0Їcd6W}v߭X(L<77<2;6Z@ V0tO(teuӷqBa̟c1َC@xݹoYA@%5KgV}naT!CY?v QPu7O{'/(1U6M,&\6kBaFyOx] Z9@dɟ3.*b'Q;yT endstream endobj 1922 0 obj << /Length 2005 /Filter /FlateDecode >> stream xYK4ϯFm VCipV- OL|&a~=W_t 6t%]]'&7 M^]|e%VsIƈ24'RdIޥϿibM5Y,7WE7_^"o|i;3Bޞ1bcq2b5aͼ /~xWo/cybu&4a!Zd}xM60}B&3T('\|APyF(OPblP^˪n탗&.KbN]tcYzl4wź|O)/Mwzci`&-BljPl ymOSjbGqv_uwyurD#jfSezH@^tw,,#2LU:Ѥ0ɇ!oj:rQj'ߌ<~;1˺IMkh)4rCQesEruH,[`cqwTibE d"<#v*HQjCWeu=\qv[/q?oZxNH9VN]ZMO0K z]4 ߻MFa`Fa~q~`}a$6]19%Z7~*xiAz iQ;1-LΛ[$~ꦬ<@/YQs*$˜qv!4PHɠl|X_)M b/'WmpNX^hm}eKi":QƞPD"DL(TaWAAN#H4}A ^=BQN]YF뮅J0"L} "d]qP*b  dPm2AmqtN()C ҒDzf,]/O_&1`@20,$:3},D7(TN>,z ܲgc`SEIO ƪ jТ>A'_7lMb0RfD3mXI,% #gd Ⳳr-!"|T//&N\Uuߵd*ݨO1HKF7f ]4pX;V,:Ӆ):{Ჶ8V~Pq'!N>ؔ̀!֧NyC"ڄDs_KU8G-n[(o\XqG!HT`[$pۙ !ʳlLϚ8T$˲QL1v(tA0tl۸aFXGGU;Tc >[NM0u1H^8G Ӯv-D+CPuk0L %\Bcx/Dcx/8{x ixoBɰ l^ܷZGDtz!CjcZffq-s =R>Fp #>]SB{WaXS 3e=s >Cӛ 5Us_úc3MD30jvu>UQ^C=MW!>Jt?F/4k>tc~(Zj`CLߎVqjpTO~,֧cSe\1lVk^m{ڻКn̺3V/,$hZ@57vsQWBP,D`XBtS>T6j1Υ8sؖ2_-=\ކ*6||`PA4N/`tiC6_*w9wVc-"u@g@c<}brpqMWϢ6Hr#Bes .f4(Cpg T%[=0蟣;ggjasK0iO["⒁xfa3Z*;熀mJ7)_ endstream endobj 1928 0 obj << /Length 2494 /Filter /FlateDecode >> stream xڥYKs6WLQ8T8@ ! rBrUo7C+v.`᫻_;~sL22^mnW g2KWI,YfM~͛@F| ?%^< כ_ߟ黷i8.҄Iކ1oSqԭnfdx{꽻kdyfsי&|%űZmg~Zq`ܯH(TЯV~;Vi|T&"CqfV{yU5AǶ+HX#Cx(7;BAo?8vvG]"]k;uAvӴHvoIu[YvnQ8-<`zQl;Sډ%6(qY^ K z)_5Q3]_|ۑiT$ev`*n锟EbŸPSfm Y, YFf u^K 龆ۈP Nt}ZuԨg)=ɒ&AW=H7BǪ/I.B0)'Ml}wa7  UA[X NA?pQ3Ƌ^j*Fk5G.(H]n:v=g$kp"nX(2sc ;H`#G;Igࠩ'3>ӷtyzCSsJz y;O ;c˭H2d;>''̰3)AbԩLF!c qGppKzOlgozM.i>\.'o]9j=, ]GgՇLAV]t>m&nEwgOfQltByY} S!o TsaOA:wRCz"\`4C00DgzeʬFSKgZL`!\FfЌs"xƕ >Q}ysnBuKl5ytu^#c6\8u||xc%H+;j=81_o :,%!qQ3YʄEPQQ.ѩuDG˜[>T \}KdPn$C񕗚8@#^b 3.,N|@ ;BimKDB>dC=B%l@]ySVeHt㊔D`=qh5ǪpiC}" y+r&30ݹnJ qIlȈ#2␠M!w:\2yy$Lsf>DЇsK(❲,:/mIp%i Xh֍Q>Xi6p7 "Z n8mQ?ſIuc s}&s,K'h$B%V@M7f:l{t2a=7Ķ]SX}b5Uߋ[Z}KWHȱ_4}@B`B;ˍ*5· _]6~EN/ZX8z$ )_cح6_BFd 7 1$OC%`)9^߶cZ ab&f[@25rڂg1fbM܇K1:K/r{4yCuz>b  /芄e~G,>-):h+rIb@Ӳa@Z MTF.^?~B}hu;׬ r@? [Ap*aq~`$u/,-_:Z$ r8gNP_JW/p:BH9N癈!$I9E\m?XfϸH0NE&$YG$ke9t1.'s`)hzks0zÿvBQ럱#)&3H)"OK1,ˆX.RARUua6BM(6޶*!h\4RK*h* jx1Sa?ZAa%0Y:a t endstream endobj 1932 0 obj << /Length 2784 /Filter /FlateDecode >> stream xڵ]s6ݿB'y&Buԝ9Ifz#QpD*]"%fpv PnL^t{"TFrKC=Z/ooNf* F"L0)=^]_\IO~E{e RV]0'IF(~pq7WW7HÑ"D F0&̫~& u0M&[;(Faɛ} $@$)l[t+D'n>4)򺣁25/nisJ̤iE}G[6k^>L(2V*4t0PvBtpOwbfMn0P!Sti p_tY9ާ}:2 X 83#T3mGA.AM pA===8~uszOOw /BLJ yE='L⒤|~C@ т={(|M)D)L}}'6k@ B޺ܗRJ&pTBQiYT`o2+WszfK{uulMqA9DiZS68[qi}d]W=Ve*bQ 70t:>{?c[?z +2Sv:W6\Dj'pȇ3"1 QxQWyI-=e; i7{.3}F/ҜXԤx;x -]NdٻR0Pi"B]Ioe_`GJ'`FDwnW %%5F:Qbvƈ}>5&LL:H@BszW:F?PCԣzS7LX;ل3bTIϼBPh/=ۍ GI{OEN}ޗ6>N7l_r8Ʀb͟*?8]&İ2%{6qG3e߅baX\N^[xʸV};3&:$8~W2\cgFUŘHq8h 3L$8fp*vox5rLSRtߔ |竢 c7ӃiN;EZpKSm/+mש:h׃5}CC+q /֖ ke?0]6s+W1{I'@EFPapjᣅbgKOV?WEW֪:Q~ǚtXa qXT BHNBDp ̨ endstream endobj 1943 0 obj << /Length 2983 /Filter /FlateDecode >> stream xZs۸_>UD>HL|9M˹C&CKĉDDʊ]"iƱNqz3}"br4ћN'jj;ER$EV HFWW={Drl$rŻTՏ/4 W?;qТHh܎0R0]v"B's<_{*<{I|uۉ"rXXkFϿ ~IaizFAhD(/G?Dd[y]d$Ts)ℵWQ:HVq "c۴X$Qt6dUaŇe^CURH177AlZF7EY1)ɭ ZaV,!u㨓6)geeM^ )&:" hH%{A6YmrSS-N⥀_d(+ݩRj9We4V9@+0Ab~[hLf2J/ '=kD%,K ː._ΦZ`7B@Yخvty1-WeVswR(k ?Pfِ r‘Pm( ^s6MiM? -H4F"1{j6ҩJ }|]?K-b4-mYT:Z@0p"B+rxz;TCjlm8oo&=͝S$EH~l4Kڴ$v 8fʴ$:˪FΨ 9gf!, q}_bg~GRzwDʾS}9iJ>/Jv >r>M'60"Qe]9)~XGXicw[e3V0٧ % :Vl%Ye “I6;kfZ 3eݏAo@_Mԣ q5u7.= F> ژP0jӂ Wqҙyb\sZxyZ&J.y?n8kv~Jl/'-z gq/[@cγG$DhNsgw H@T5HzePPpXs-{.3Z=舭[ REgϣfuE4 kA9DMϪ`%-*>:<;SmU1QR ՛ܓ.)r8CyDƇHnBчoꆏv34aؿtQ )?t/TDQڈ‘ȇ#--YJ>5'<3McI[ˊPٮIKqWn܅g>Ma/8`QG^ JDd2@"¦}_ '&>"=8mMQ:XRCЂZڋO%C*>\xw凳wҰ^M Q4ഖI73 f qZ/OJ&Ӳ:2Dwu_yy:&A,J>-&h)&(9 PrL*"Qdž s!Xl=6T,T{?e"Pr]^eZ/$(J|a k jh SoƤ4;wsԤ==ty%5_^04N]tԝH :C,H*,Y17.B&wb̉ x~躯6IVp}vj{\{IK5|q M^79$6E iH+ 묘t9n'IOħ^/ĂۚZv}YڿUڐ_@:+Ip\Ҋ ZL׹u ",(5wawpXǯʒ{Wn ԃr|XJ!d+ @zY?wI̜Jϩv *]sͨrNĴ#uP0t7zx -Eǩnr(ς!\O & wt{:SR/`  endstream endobj 1833 0 obj << /Type /ObjStm /N 100 /First 982 /Length 1866 /Filter /FlateDecode >> stream xYo7~߿BC5D(];HryHEh[x7HGg{9C'"-9@kߢjvC>7Ŝh$+AU 8X5X\KT:7%Q'er!xIcO>qΘvjB+Eب៵WCNLS%Ui zh2C=PpFP(ݷT&EbBJbY$ 2SPY20}[ YF.C)>'riSJ\+UQq^S 2 w3cAkVؿ5 ܝFJI/(] PCBU:>7KB5o%Fg& -,Zh; 4VҶhTBˍχj}><>&A1FRAG # kU<}ͭ ;cV $PF\0YKA#l->y·4l! 5jZ(4 ă  AbX;ݴJA[b!"Y rLdۗoO׫m89 S=E=QWBӄ(`ItOm8 O?< ËċWo{H]{óflaAw_éVc8OT{ y.1cVkLzC1W؞)>m|y٥߆O?g0̢ [DИ%Qy~X޽ZfV=^`#hhmظi wdQFvg ) GDDRvV,Oq_LS:oWfZ`Z- ONNIߊ?_weaC؜4{,ַ<>dq?d5yFF#LXfFثoW4QeTmRL_ nD/¨Zn_hKԐFSSc[:w52׉ܥk&rJl9Υ$c?7_GoG'l_U,Y#*tCIR)"sVTSX/myM.\ہ2") E MoXd5R)Qv2T4UNc> stream x]s4L#6<G{;('ԃci0wvk'nJ^je/ ޜ}82A2-tX gJ т)"%|׳P4lj@)mh;2Ƹs9َ~5BSJSw=+840?XօSw~ڞlVJ\x)q +hox{ZZ[ًmmmhqMg"K`3 yES2*N)pOX{PD}bG)a ;mXAwtx읁g">ow9s:|_p}vfҏ#@^UdD,SW2rM+wa/ol]Cpg.+ӶD\&k PJ߯npeuB/k[a3݇08P5{.LgV)h88@n@IvżwrTKDPo(<-tu.ʪ:/shDPu= VS\Lbba*h92ɣ#2e6\7qa5#ܵ=d,Ȣ(˚"-R6WakS瘲>n> :ԁmI~[o!M栅Uun"HKK>MY|RV#'Gd36;lх|i; :F*t2%o \ GY7z`MCOVg@9bkn+VS8ѩ:$|w>;~1ny} $L 3RTtYD˲-:y$sY0X`72qSM$,-8_Cc][pZXA]@MݣDƝH4)5 Rjh-YBf P8@\O`ͷn媸%]{[&g4BL7\Cr]QfiCDz0朻 ;|7"pgW1.rr::ҧ+W@ hǼOdnނ<+3n0Bbŧ)ǔfJV+TN\IckgY7I ,Gxo\>lfOsc4 hy"NGbY,n|G0bI枮2VROGî;ojG/k'$)~x<+5]n endstream endobj 1965 0 obj << /Length 2184 /Filter /FlateDecode >> stream x]sݿof" <9ՙNɴIh#AHby:yEX,/,4zכ/_,*RrmvQ&TQ!yeov՚4j-d}sW”4|swoWEonnWl'ҙ* Q 81̷S$*U^&k_w]EW6WI#6PD,ڶW?F5}IKr%"nwWJβXZ$LLV$X3²B&l"l.$T"4*$͔e,)ξ'p4VjhU[Ә<7R[pS0iW;jݎ8r>Px8W}a:Ht #kuLgphF)BU^$!Y0GLSTΏUNZjTPϷ՛=q]WLź?$,U #Y7Kّ8 2S[Op{y%ߵz@YVď{m5h#r';<GS\"w 0 c' qwR!qӋQ璢,}D|Fsc ΅ ރnt1i hO|sYx΢MA^: j43 7-x߹@mG@} i'z[q fttXW۽/P,eEr,,H #О4 Yi'?$jOI"Cӑt4V4ЁTB`wթ ;ڑC$d^B@ݼ{w WqdsJ¥KV s0a&\ y &P;-4Nxx& -MITYvӢ Ll&G1jop%1+ 9.L S:4h`Z6䍽n4M@nǕOֺbUK}򐱧A{BG^# N@^/6M;020 z_Ow`?ӞZ|KƺzHB {n=ͼ'sd;a3b$`'ԓ>{R\xRB/ޑlh)NK=xw S aa<'`ZODnwBۊI u3)"29EXy*=*7Nhd/BF'b x~ϓ~='gXqr{o' }#tpҮ]w ¨|sLK[l 5;,_|GusjBOy)]<{4X3ט2. E+'toR*PO\n[ćG{\R_pE*JτLM>#+ӻDI?<K > stream xڥv6_ΉX A)m8m=>P"lq+HYu~g0b&s0hqo__}&<̵ԋ"aEeb].~ ^O+DDG77o2{"KCm );nY:|,o|M/޽{I^^_~%HIj/F~XDʳŮ<,DI~XhPx,g]qUtTt2L$$0b%D' Xn}A@E}/j#ͿyRdlڎiAkjԓCiHڎV^7lE4@Ae Ч6- qӵ,Ҕv wY>q+ * Re-+#y=3f%PRSJbU6{C#~Xc!/Ti>A,a5LOƾT yP42CW- \ 8TSA)Bx_wSUW?o 1JYZ'Hjj[9 mY4ӷn C8n Fm UG"~bIS6V[c0¦#3sѰ.1Z r`1*\I@uW7dmcuWTLԝ͚c3P:̥L@a+gL=@/,DA;Bo!h.6ܺbC_04Bd0PcNEޒnDE-qZ!l,;HH±8\03~)1> XJ&|2vKQg@%z(7: DwrU׳.!ϼU(t<~rR3b{$JLۮh[Μ l -VyFS@{#tuن35{(& e*HX9-k=>b%5g l%U's+: TTw]Q %Vs,$1H4a_Ǻ 𦂉QG 44Ov ($T*J_)9d/:84Q40֚5n+0瘦aaq_h[xc,CɧZI9CvI[޳ط aZ(Y="bb& !`@_~Wrv0~Wm)i[Fk@Wͥ%2r%컪8:{A$Ln;UP-DOK6ʈ>3}5MѺj9R`y??T>ҫ3$59tYa-ϿقVm[["`(1.|L :%6arc!^ gZĩִ=Ws E?-Ѳd׷.1ݑ _ZSt(u;{ 5xL &F6L?yk!͆ ={cӾy  Cw`TJCAQrWu#+Q(ف+ՔGO.&1yi8 Jv`o(nePcX.O^p5׸^7["RvOû=8P6AJ~Ϟ` [njXHptԆfmG};uUy:ȇ|/u(Ofь1#M|#N`Vfo){u+ENЁ{'84- \'%m/Ϻ 8 q^wc$t4> stream xڵY[s~ϯL"Qiݓv>}P,:T\]%[4W̓ۀ﮾]_}ֈ0 L,Hdqluϫ7VLx*J4~?Zq~f uLx;@J6IYƳqfsddx{7z?$ެ@b:`1U_ >LԽ[D$VЮ~^iTy:=OH,3^{}ֶ]tJdaTwNΙd A$3IB4ֻ[EJf3Nī6Hpt:\wMp/Y`;skLȺ0Y.h+T =-{̫ m^&:8`S6ɪ'3^*ՀJM>Uy96-=iz$`7h0T`k/+)k8!bɔîuGBwCɸ<Гw}=`v:#'4 SvҚEzdӹ!|:Ka{Kp^TY5f^l[Ĉp^~pSj˦ۆ.3f~$pk{' 4xJka&%!JϮ{/&,a6f)@0Gd+t HC+5!7mڳ`mKWxn}#p,p(e;PRa,J$`#:97:Sx*g.Atn -9N<0$S״K!Y2a&1F\҉n NrC"ĉq搋.y;9?q,B'iO9T|y]z>4^$A)\pc 'PH% @!vPS(Mn/wP ݪE(Ԡ4iBCeRj<:CCŲ47wi$ ψj\Ϣtw |ubc4]3T FW"0+Fڕ~Ӕ 8 XJFK<՗_q>O nYffhY2DcC}ܗLo@P߽ҫ}jɥH `/d t' €O:\KnBsM; endstream endobj 1980 0 obj << /Length 2763 /Filter /FlateDecode >> stream xrF]_Bd. 0^[+3[DB$&} N‡ֻUa4(@/_^|E*,DFF *2u>|˗7 F؊7?07^r21_?~*52M"5&@JA $Q*\o#幟3#^]Go$yryۅ""4V_EiG&QlPMo+M i+~8@ ,\}A8+MumQ5ZPxVنHR!\(lA fQ]STeٜyG.5 Y9#5W$`qb[dEKMdMˆy'PQHPM;3q;ޣAꇬJxUI4*C$%L k_׹W%3~d :^<ѓjR ݞTa]-sUFROPEvW;o@|q߲ec<5@? DI,6a qC$c̩(bfXH1>lCi!aa|` B6ytb ZTOEXKHIaG$bVC@u"!E2I<&`CS "!Mx[#1rae*|R AZ .wՆSQ2v!I$q( l PYW AaC 7p<ܰô?zd:)l%t`VJc M=fy|6BRU3^x{n}>g>gC7Ň9Gu{lδanA.O4cWװo&μf^Ă;d ~_pאySQ7 Aj<.ţYֻs6c]s1 rcU?GFcR$ $\?B$c=ԝvy+:J.8㌸)6;~^]ChCqD禭 Y5)x3`Phޓw--> 4j farN6< => jq`f `bh2}+DG>+uZ%6c?}J QgL+竅}2oA0boML$ A 5nc Dİ}V!W| F Km;vҢ+:l:5 )\v}vH.:;xIֻ v WJH(qB<2WQb2b>9v}8_w S.$U`Rȑ0-pp_HgO@2Z8CUt~msr)fxk\&UX[(ںa'D7zˉ:,XxGxJڞnŞ.,{>+WT ϰmVOC?#tWȣTT0_NU}SG3He}] 4N<>=ʘjO15zNw!ڮ%BA(Ix{=$@Z!(5Ro&~u^,օbrIf5>1BURFtJ3W2'!TU(G:r Iah. Zߓ۱/ Dag&=~߆r^CaRr*luNDy4COz,t@0}ZVVv^y[l~ Vu]nNsRps:]p5n;o/RS[} [b'% |?C,]O֞5BwAf0 z*n&vU3{-&brVE`@̚A񓊆r3>>4+_}}bޱ洊߁}ek:gf.IqNL5\'Y"p@-@Ld{ӜmXyTX+-1ё}3':#Ia@P)~-a@9dw62lg:͜Ǫk]v43.t Z1U e붒 mZpGcI[T;Ծ3/Vky+ҸoיQ],cH..eu>S[N/d}kPSQNJx6) ڇ> stream xڭYK8PeUk z֞$S3ݎ-mmp,;_ʒ[Gמ$H] 7W/7W?ey`R< DQ]~_czbJu˛?'O}}_/h_~|E2KC#8 Qva~4D'ӟWD}o/nQի+ BD G,L?D_jzp+ uG*xw+FSezHCZY+ړ]ー\$Z0cڷ9ٞ`ͧjGj5􁣯eP|Z yvoG/0*F2̜i/ԝiUF1*mz]JbCEZ5 n'M+T^jHk'/ [fqLDhK,R_mN"z={.:WmC,T5@kЙ;7WxNMm}ؾenUk} +Ld~>nY6ij uD[' aS@ox-Z衬*ٛ8~81UYso.ǫ2xl+L:w}{iwDல@׈s ="QDiS=^c`x jA "b# =2;pڎVng[#o@\LWہ)!^JsN);[%{ Pj`Ru_:r QXmQW * f֖nkzfLәz w7-.,ܝa̴GD(Hҝ 2(`xo-M)؀sWޙcoKcrq(~V c9Mյܺ['E鵩;Q,j;",~-Gs-tW5Z ub{=^S:Qsv `^ #71v,h8tn k Qِcs֝fϿth bdDrz~`~6>]/;n 7 ͩݓ;k̐\D9)ϩ!4FjԼya0\g$7剨kN}{x& =}Je:gDIy/g&_4y=-0uu8v ·ߍΠP|RDLGri,]') 2uqq(QADS.`SYS@#ġ(2XglC3Os2gttD@kJ}nv|8خ_ &@>@ ZqbzܼvҁUlm>(9p_0a__VR%ۦtZ&JHc endstream endobj 1995 0 obj << /Length 2806 /Filter /FlateDecode >> stream xڥZoF_!8-Krɻn.I]I/=}ĕE"ٙ]25;=Y:\-n/}E.4J"VB|q[.~ ^|w( T\.4 yoW7R7,.3-"`o0,%a" s7>p3{W7?$~~K^p!ap!LZw.Ja g[ĉI\" mr< E̮/qtG2>۾UGEݵDui!^qqP's ]f644cTͺUu.eGnSbh>K)E$tb6ޮ$X*= Xo6GԵ7MiwѮԋgŎ)i7XAPf}N}};s)t"ɤR2y UKBF~hFޏϝG,0^JWDYƮT;j4*hAwi?3m;<ՙGZ>gZzXd6l 85nF9A/WW_)&z"ro,Wt(r2hx}kӐS5U_5q?IzRhJ5\a@ #ܝ-+},`8Q4DB $K1)vCa Qg3v}*XjbY)JeYZ1Boub2"͵(roU9m_1cֈ#Kj\7' #+gbxF1IKMQs(1 ߱jj nska{lѼ5i[Q*MQψU~F圐b`Re]I7W0i4?fЍ!?WK@e{|} 3ޫ@ۗ9VDDqu;<΁KKQ)TN*DN*hi v2H\c*Y,t6玏b'0>Ks7҆P^Ct;YebcPGH`WzbÏ+: [{XV^;5ػؾٷ[RLb@&Ut"'g+gS/m ,Mm,P k6Ɯlw5^u:,8YCmh=A Y|>ce_ٟ*]D+UJw厯Q>2"t3.8ux;2DҏwpT|;*X?KDK#QWb18@' endstream endobj 2003 0 obj << /Length 3091 /Filter /FlateDecode >> stream xڝZKDpLƪ#ƢJ%԰ ClXr{_*I 'e3|jPoozMyQx. <[4 8_k`%JHrD*]IǶ6Z=5 >fN8 6͡Hͮ;Jdʶ(mLk?Gd,M.z2qsAt 1&h3qEr+vd@vjsb~Qvr%ieq2GYPO @Ë?*heঽ3١5``O|7ƱˏcBnܷ%'%U\$@JJLqY /. -O'TjeXR_" =uYc%\+e`-l] (;#M5ևr߷Yq9c@<|㭎r*i^ED(X\aqniSW+sM{|M؃ 6^y,nP0qL$TbYx3CZ=تF\1[9AV6.%؆j2-$er0"F(![Lڶ_p[*hEaѣJ7z2-܀(:,Za9؂ |S?#Hyb9'n݉8Ck] )̥|nʼn\%j|4擄 ȳf\s ʾdM.ɿ`b}>nk,!\GY!4h]]coQj`9'DB N/xsX~_́{5.\Z@Q#7=9/;, 򀰌!E_Y ;'?z"dMAGmOT!?jў\}=T?^CtD$Dq_N9"F;'5#\8%]޾y*A=@ʻ^#Ѿ$ 4ty?$Z#z 19kޞ݁yY7JH$^N`A'a/t=JXv}0~`3~rgCC<> stream xڥYKs6Wtr4×^'gvf֩{@Klvv:~RKT99@ %W+psEduYJXcWi\w_:Q"q"n?(95o?}|?_nS~xݏ߿LR``Ԅ KuR|O՟/txw槟nȫwwW])"Wj`$1W*ۏ+)LgEeWs-'E)mVCյkP;l=u\aq=Uj5GW=mSn_qG>xf_,;jz [Y+%8&w>L(=qm\itD:jm]5ȆI>vnY[ ͭða>0P C?l'vmȩ- \DQX(a&;C3C ѯZ׀Bk;r]0@ǀK;,m:+n_U3pb;^+EˍFBG#a[l]񜆪!&>Z[ʄ؁b~?ss;Mgmzy~^ؼm>~7la*~@-Tm(&vX+}kV¦R4!I"W Rz_+V+WөA v5x[,v]e=S#~[Q-B_JWBThT;O/`홡k;z?Ӓ4\~}hBJCkrƝk߿`p mCV5`Q}U}chaba˂1%j tp/t@]DpuĸpeAX$C׀b}:HTKZO/ ̊$="(gWp̎VCBP )h1!1=Tb: }B9t5H?-T9!dA^Eo cUW"u=<ljRfIz:4ۙ]:N+Jkkoon w2*X ②p?9W & @K?]8:3tD\ʦy2Ecsx@bxW_'>f> stream x[Ks6W* ƋqP*Y[{pR)jXccٕn4!fHSAOĽ[{oN:y:^@Սr& ɴa_^]I/vz|4廋os4ԋw_u{E246lp Yģ>`J?ftx}+|/.ɫO'pOt#[O>νq`P=+k{ xȄgQlQKI<z{$MNfIB|q|Qh֛LSSċ^xOO۴JuhlycWymrW@5eJivY&߸//kx)uVK2ΊžOs),괡6(\!EN[sZ_G_i7۪iiw[g]VjhWigCjP-P7 ǹ6V)͢P2ǘba6_UYY!CΟζ <y.,/T .ߜx 1!hYU$)2,r ʞ+t&J[^E`&i"l }28!蓆ֳ @6h_-*ZoY I\&9a.D$:Oak6xV4t K-SD tefhFlaij6UI`vl6K_VֽtQ7-d2 Eޥ?t (-G Z)a6ڮn I"6]{Du#jD6nm[pm%\uY6}ffwRkML7I~Rf] Bѹ{Xも%)S4/m4b$i9zА9Va$X'eE~ēbERÄ.N&]fhbrMAцűtUè17g9'}(pb ŚJmo4!a.2/<[f`q(,4FRʂǐi!\o0ÇTt_ :7d}`\VTtD2_iB<;qBE~#y'ٵ\h9p^7jbCH;Xt 05;腪'YiK@|hk-n577+XypD&&n Ƙ24xq҄έuZ0!DρC+el#h+]\&Sk᳟#Mzr+7e^~rlBymr *[n s1xw Ӫ6`)f(9Dae7"TV*12P׺ nj)d 33ӏ4FgbL1]F(<@sWR8:yަukΖl d%2 4Eat}EŦ5i;zzP2RHb_KdLB }.5XULn75q2ͨ뱔KiY S`)\о'ZGrk\> k`AHpfIGC^=3DX3D3Dm:=45+v ..Y;ym`e 0-mƹ(xk05#anXZ5mLw<Ȭ8߰5+;6{ku.Tb@na"c>Fo/k8~b-% ؓ,bJ7U쀄Z%[ Y dAwO bq3_*жvow^{(Й>EP{g4}~tf0 + pYAsXt_;*җHP=rK>]/y㗬#qy%_}uqܕdIh?أ vX3e33WD3$(2?2> ;:y8uWDԧj;ϙs;͈+`"S@=,Y, ol xF(]P 0Z~;vS>_Ʀ {4:efeq/J瞪&=,~9&i:ڀC*`WD GOǣ± HPWD@j;ZOP2xT ·+`"SOo2L(7ME|&?U6vsg8mN̜Uٰ+` Ov܆o;z ~ :{>@]x\PA|&:URRo>]xxS*g85wSg0h.ix)O6C#L|BS;M&Tmm=ևn;n݇~?2&߱I} ^iTeB0x!ť] endstream endobj 2041 0 obj << /Length 2180 /Filter /FlateDecode >> stream xYmo_!'XWI6^ͺ(`d9"K>I(ߐCɒ:AXE<:x1b+ )\xbD؛ͽǿmvq=2LRW?aO?]}I(姫DO:B8V00{ C8!sY .zr~mD]~= $h@nǑ#WHa糿hiǞdɤ(ʌdH5cJţH~|(_PE ;Y"e/#HxL H< Q"wC37N{h&x81bڵ1u >s#7[)(fѫueyJ7iՄF~з8R?Lv,M#/csY t1u9e"jJ#kJ),[",  2ٖ} ی벨-hZQ OSbϯ \bF⠩o(9CxY %Zn>8>lNܨ8uaw=cOm.])ن (&IkWg8ڽjC[γߏ>l,LP>;>HΎwڋ?(D (B!Ϥk2Z(V/N!]P]_ש;>Us8 =V$I!cOI4)y/Y$㧫 d*MmÙS7)pKS%׌zZYBIkis0# 4r97i,2Pdf14*H̉J0 zm42XyоMZ`B@NnNǘv%KSSotn_{?OYOhVmCw, ]LZ =VH|Xo %f]ZX hðhca^ B2DKR$p|sX UULK<2vIX7P0Ejʄ/A6Pb G43;7N0Zj7TS),= g(wIWlue :˷m_b`|NۓN^> stream x[s)8}:+KM[gUy%ګIt$o'=H,^aIQ8pwdIe6FLI87x8ߏ/#*@HH;<๺2[7wSѴKgn^%",T&AZR&_5]vB0j9!S}4uRLfRI0w($'.aH0Zq8t0pքLC0f$q1tS\10$x8 wo\of%i2ݱ\ΟY>x8b4/=R?4'҆pW>6"aSVe4*A(hh Ě9b>&16rq?S٢n#q qqZ/Paʗr{ 8ѭm?j"kNd>{ga Ug7maoBM-ܕ_ܵ0PS]Bkۧ\͛nޟ/Q0Un 0H>Ϊ4U(LQlW+reevgf ^v Y,f$6,мsX M!uKnJ(Ff7Bx-\\G$R)}t' M1ZىQ'c ÉSDzqN<k_וVnüX! a4ͭyG0P)iK.ԘR}Z t5+Va e%:g0냇rgxS w‡q} ~!R߫Tioϵ@2[CŷWPg4Zo.~G_Iyo0GDҌƌGoT>b`O_E7? 7g͖m9j ek yXӯw_Ks"AR.B/o6U0 Yq; GFhՓ4~Ii8ȩjWHN }='/TMV8[N}B"NU@ :BQ|GF Uv BO>&]T}߿Wwz@|?yGF D߅,!|>@/$^G>r}"PFq! #؏QCd,A|؟'C0$`GAb$Ab Һ_/ ߱1B{uwٳ>YpdiىʟKq! #OQCԳow0o'_O$e7/*a.  H̀z}j endstream endobj 1956 0 obj << /Type /ObjStm /N 100 /First 975 /Length 1520 /Filter /FlateDecode >> stream xXn\7 Wh.$h ɢE"h)ҿzfgtcIue)P; A)PU_C,A n2u+ EP'}-*(վ$}M1KWh/pP+suM%(`RKHn4p3ڗ $7Rk-0wM&ΚkbHXĝB4 \1Nm5&hqD'r_ B <(T(UZq"h,,-%YK1 yD%bRNon}k xkP61ygv-!Y_3t_sr-B!a#UV}0Pd6y23" &jcPn-LB z$'He Nib$j/*Pr>~ϣYr(Q,ú *)GDvMnWr2,^<_]|4,_>\O_ xj| ;K/V7VWo߽z"UXK{u%GF> j)؇ڍ:R k՜bFcf0}尔vRДfuޝMfhhã|ĺ{ ?WRg_L?歎x~ҳir(–X>~}E7^.X||F NGūp}&T;a~bo_^_zuk[qIKpSfӜb6%v[Gtd"Pۣoά `t10f=5ⴃ`F<Q1R 5qf^ `_J7!#[Y>>þ6f&J7ݣ:77sE%xj2&Fcn?ܔvHa)ߣw\w@ 2-D 6?h!IڿVa} 4oV4UՔᦼrKAuV1ܨnx2H e4k-%VQ4VE*Σh\n _JUbpᘆFd49Sij49&UMDFC;Qt^EBFޅ}1n˖OmeK=ff8C-U0CêTɺ3H/xt?66E1ͧA7 pQ78a,ickG%?Z#wK${dghD߼Y̢beʼtǽ4lzǽ4rǽ4#IG^i9yp1+; endstream endobj 2065 0 obj << /Length 2282 /Filter /FlateDecode >> stream xڝMw8_^InfnKgLz%גf(Ɏ:ݦ!7{BٯgrAԻ_{(Tq{+_.2 4X,4yO7?b_PPY ζ/~p,N0wi ׇY>\~EۋO.n3LBO LTWlϾz+ (WRn8$Fa+gTi*QZ*g/.G+[]J,:":QHM{QI}5#Ic-3>h /+֒MWi&͌<W;XvW-[4QO/3, 85rHA0H$VN$e~5HaFݙ>0"gqENn?A!r'q$kSJ=eY$P ^(|i4\LQuj./ޖ!Lxb3{-` }8o.c}=XkXŘ'{|yiS"Vd*-@@I^`],O8=`Ĭ<׶PGyW(ů\ u`)8*w?薿s2qN~g0j;MU6jZ;E̚VEs> stream xZIϯ--4[ǧ%rbɑF˳} Dѿ>U] Q$]rРz嫅Wg/\i ^V/8aWw7n{zDu^?'o^|IݽzL2MDB8l [IX>fuO|WA[+ +"j{+_(z030R" ջ\S]>KU|jݡ`T-"-탺rϪ2/ߴnաީoSWyYOȺH]q_/OUQќPݛ[jNe{-S7kR*D BG]oYU55-5hklSD3{f۾lj"l(Cw}֖1<eV0w=S;3*5c:cG Ɂ?bpL~w(*NTl}?(`c<Gq/6ɴcY9bSZ t=((D}ljfC.)wV:y@XHDY JYƩdCbL5TiĉIڳWv)'ރ4QUid5ۢx&9.ӈ0#(d`J2ZgڟO7J4&2DAɗ["Sw3A+ŵYOSqۘoN5WpBNmNhۡ=CE5I.PJA+?" @z@ 57˞!?;UE$tYGq6G."4 SFX8;:Xh+@1H$@,HHEb`--6ZW%XY-a] @5I47lA~|%E0X`3V]vbto0J|P\*C`}  #Lw3s]ٖp{t'fvg S%4#>b/du25}I;#=~#Pg7eg2!ES=֩RvYYn=Axﻁ}ouVp!ɫJ5b51)%m*LWd Iv\>p /:A<`n"G`@%݃Ɏ話#Ѐ@q}yoq~;_8b,1hӲuWeW &f0R,FUvTe_[<җ᱆ċHh4:(Dz@q%yR_bbGşk |J:} `33`žj6F9R~8#g3с3jfSQͣ 6#>w7Rȶʎ? Ms[sif;TnK4엚OR%Cx(Rٌt] bbB1|O`6}`tf(,!G*jb @1 LfnEˇO=NXtl̫=.{ˑr ?P] )_dzqF!9,^}n=uW EjRQž4!_<ZJ7fg M aLcOvRi.P <ς ukG./Jνi\ lf!Y8St'+F&N e;`P'" [W#ҋd@ sxZ6qp3]FuA?CGa$t5^k @0SSrZpT1)`@OPT"O Yzc ;ucX#YE iU蔺㓀ncI q.t^#qϮ?> m7޶#"咸~S5XNAGP#tsmΟQNݡֽ%\7Ū= 㨌`"J _P1У/2_~kAUL*d)U65 3߂_G 3"3KÍt?*r3; 6+VAŎi1rccfb6-Vl9q6T[T^KcЙCd2H byANCH0K= !t*w;;gXʄ)ʗ3 g<#_Tqs1vnx^7NM=펌&'c@J RÀcPW@C*,[8XhԜX5(*XuP,`f6cyOlY;%#;[~7ā;t RR{%TJM$+ ҙY"3P(ŭl؁FyJ=֞!R"oBIwPZ"{R[ endstream endobj 2077 0 obj << /Length 3205 /Filter /FlateDecode >> stream xڝZIw6W&@p{998oxle&!c6"YS$\@ _]|Mꥑ6WכXy&08Ҟ1W^F.Ȕ?ͻ}|uջ__y7A{°70g'?u#Oo5~|/>.PQċ`.~04Ƅd|?Xiᒁ%{j[^Sb#ږuٗYŝ>cR7Aܗ-^ ؤ/ᡌR%k*Fs͔Pia 宂ɡN)/ C>PlrAڸrX<" =0坭xʈxC,B2eYEB+mHPeݱ`z>ggۛf}K] p 50j{U xn ө$V7<5Iנ/?}3ɉAw"l<;vCx$~({vnR{O,Ln}IL2Ҁ>_~iNhab $0lcM@ފFaC/H/{;`ū[N KKr\84"i% )cq- UTtKzہ~2ՠMeC6:CfHmr$w،F]aP,䥞%6lٮ@:N,c Vz&D-5*{<PFÎ[>^qdߌoA3; xHbN>^ >Cr4t,U:.Y̧}+d;S*XӬ9:t֮8@aOAȇ(Y6x($Mu!0y wiå9/*} xw'MSkv0[4޶4ober2Оk=1@WMQx3|¤-N+ZQ7*t$Һ(3)8t&< @qWùC-c, (IAQ$3MFf'1C#*.3$ZޭC!te`ExfJV%V2_Aj3I>_w΂[ ,!x-nS%H|m^ZEr8p[v6Ng3; }D/|9!`͆^l~f„ x8ͲqQɘKBXrs^$>"W-sL&8F׃E=m@8osFe_1Dù=<y+>p| 6g䣰M@rZͧ8dʼnNmv^:pooJ~ZXc`(Ah:}2O:͡t JFf~~ ( sDJj6CUps/3E9Y!s#rUlA>-T0Oj阁#,P\ii3qt3Qx^քmL@i@- ) 2N΄$}`(Qvgz|}H%]p4~>j((w51ĂFFCJ~T|$Vp[īhBͬ"=޾TT`lkiI/4Z3, {.3Ĝ]L;Ԉ=1ש贈\_ӓ{g^ZS/RJUƢc2 *kPV[:r^+8Ʋ)L`,0JZcN葉Vwkbb/ѓDtePt)gM SHlc; m*kG՝0!)&B4^u`PSh1e=.M3Pٞbud][.mhH>.3Z~-:N9%[#Hʆ\H:j5v-NֲZ}Q><zhNQq/Y8rR(;)HtJ:I{,ele`)^m-J)R>MOHH @3ו6֕dbͳ :O`͇+~8T/ao ӗ08k=\0@n1ts>3,"~12fH3; Xľ,?T -sr1&?O(/\ߌO5 Hpֈ\vYQ8p&uq"$@JkC㎁UV`m{O&q,׍ Kmv3Z n=2P(pBibA),#ӿy ZJU endstream endobj 2083 0 obj << /Length 2652 /Filter /FlateDecode >> stream xڝY[w6~ϯ'圈{L3nid+KKIKҙHR|ٻn`<l0K9y6K(g׿]"^.8ۏ JN7>ܾeyO/M YDޚ1 `cqRO0?Lps-]p},//\`$ g?_f0t37(YЮfC q:KCβXM>.,['MnLk_TvUqwd\V K/wGjڥmT]t~u9\̼ӊc4{F9y|(CJ~O%D- ͭ9,3 ɝ&fpRfudmU,O05I-\$B'$pFiCJuPݚF "T Y(F9HNpM_w0+y+>If ȟ8ՕR3k*(RNȧcNJR#" Ot1]N_[80hR|LItZXg /5A+?Is^v)!NrC4,0Meѷ2vtZ `P F4c2[W6T02)4>"$*.½%@ÅZH;!9DrgŒY-/bz*%ƿn< e,R>n+T0bn lP6b|[{Ioz+eq2+Mab۰ (N  Kl*Mmtժ؇ hjyy "PFp `Y P)|?)-/(cB[ ~2vo{AK'1& endstream endobj 2089 0 obj << /Length 2156 /Filter /FlateDecode >> stream xڭYs _3gDJSvM7&n{LY[ZRR/Hpn'OAAGЦcDgg?XLq-"͈2Ҋ)h9yBcEfDr2p3-ů?H@;K5BmT1X}܂;4 po1Ç_"ӧ[rq팁nIJr{`׈ѳF2$Mtw3: h["V$|̚$sm1$QQ^`G*'TJN2݉YM(( oU.i2yi[mp63&ߠEUTn!C i\=H#BngܺO$2 ɒ{8T]z˪4Vi+VEoLKvnGԵ5x{⮁֚}ajBR.YEg|gf]!H&cw'NE٩ T%.Si ~ -4hWlT\%AۉppʼM]>TS~.Dn6j_2NpJh"'ms(/SIHTCy4+r\̷x(dTy%qb>aUBOsUY!u 2qlc{@ePgp(ւIB }yM*\\4kondBTRc'Q BtR2 0NL>Ro(#3uGO`Y(P6V,e%!>&8m ܕir@tVn_l󽷾kp5nC2q9|]xeʦx8y],H07#Bk;-˼npa<2/6lA~o8p1e:]..noqz FWIb6K1i`b^?Y#`e!vٹ)3KS<gPZgVRnsN%==$dPqq%;r>Dϫef*#\u nM5*·ͬ5 Cv^_WhX1qT4L А*7;_o W"'K2xǤ0aE v6|jቘ%ZΒݷ;'-6ͼ/9 oSOVTeD2"IQ\倆ƠrYQ(L: wO{89؆Š;d˪rߕ7S[n P?wy"g8#Ye7Hu7]~% r/AAIan0{Uc*/M:yb zȗ=x}7BceXX0eG˗fh4o7ί\FzW[SDv>M}S,MwW`U䱛0"_s3H vj#ރ1Xj}Iϓ,ǼD y&Und`p{b7`t{!nMʓI!JXއuFҬ,? 4?Ӊ Ћjw/X:ȳ5Ֆ_C@QH ӼDOUG7E,[)>S-wejŃOxvdOoo3)jT)z/ǤXǩ3: 8gĿA=tV}nIɅ%#ɡ%~ 5 [TQnW56Yf|lpZG{7)fD;2\+=?WD'3ΓЗyBi(_\ܒϳc1:~c`ߩKt77􋿡.񺮩?9Hԏ Q-k1=C'NADcEҷ endstream endobj 2095 0 obj << /Length 401 /Filter /FlateDecode >> stream xڭ=O@ cߧo TL}C- J=~~ e_\LCL"I1t.AY㮪2`U@emruӇ+vQ=:KDc]=32\8QHv6dI{3]377GBz,<K>GCw/ w> stream xڭR@ {?J"s 90 @C *^sLB Q[>`۬7 SwFN1 ClGMQ*Kâ~=1X䥩 o^̋u;퍃9sN;pBq<åޡ:Di׏Ӥf!Q}e | 蜆mZlҷ)໳܂ى)C> stream xڵMo0 :$}Tj;u|Cӊzߟ$Ep0 )DP͋XtTةYyAy`LTڔwi=CUAU[_67q]-~cH7دxsDɾ'pFQxLr< xICkw4lE;e*ؠ Vߊ#:cRp| ~> stream xڭr6`jسNmܮ~{,QYʤRp% aN2 ,7"O?]!ɋ/3$*(vƃ~ 8Syؕ #d/sJ[i*β)j^  hFϕy!TmMMnJmQvXԺw<2½zXeB`y$} Lv+Ƞ@Wt`)Ʈjwn~64sR]kZˉ=ٳ!MQʹ+& BXMtV 8 guUԑ`>zC]ay|(9RRzکmwN&k8_AA|0DLy YAgcOHa#HXsNhEYƄ;;a dD6pHY{5CE;hֿ 7?WR"WƏf$),MC_5ORl˒RMntd\` ْ>`\fE T;j><ϯdiVg3)&}%%K. V47b RUOxHFw= B(xR [BtJ~?t4#Qf~VYx(ØJZ:ŏ(@Fáҽ߳Mb޷ !BW6!6]"]t #qե;]ȓL4}, *V7_ [p2813>ڵ(Tע Yײ@AO%Ov>cX;>LeB NIE*7|qѻOއ:RNdxE._L`E,I]r|>3hY3 >mPPWEܸb֣hqHa>xM+Mz2<4Y0wr1Y(N{!ᵗB2쨇8!"'"SE~~+򡪇/C#-x#{s8txk(Vb חMGp8p$_? )4[7uZfd2BQJXΓ^)2p#`Z_as'@cmwe شS. Q-gq/'d8JT9JH[3xMɎ59ګR |\GL{G\;+|f[%Y0dqjf,> dt-Kk#G_R:w$8=R}o&sx=txZOй˗cKYVUyU!r8^H$&nT\y~s:{hn´Ƚh(U3!j_{v%?>An%ZeYڙ|~G'HƐy;%z RSď(bmtɶLx?eZde& ɜeiYT-[ R5FΈ<ݞ:g?%sW}dpB8[VHe$6Nt{!< 5jp=#b+s6V[^jvCqPiYTɰ"GMbv0=1>(+ŸMomnOq!1܅2&`h~1 L1Zgo.ѻ,i70/8C/+P4V2,k SJHZD|pmv ~ endstream endobj 2113 0 obj << /Length 3045 /Filter /FlateDecode >> stream xZYoV~22 7̓&,Eڢ%┋JR_߳].2: gΑ_=7Z$^pq]Dxڳ6Y\o?-_}{e蝯_~}I7o8_MlG8p7 G)hÔȋح=-?hxs5^]qG>L!B b/ b]w 30uO+˅ Xb?gig8^׮W?7]WVn`>>kuSZfrߜxYeeVuwC'l.~KzW/WV0ubS=6uc9IKIgVD-c(-O'KzeKx&@imNCmb bXʬz;C6tuCTkZ\0r;VvW7 h ;yE!c o>|SJMڥd6$F@cjywy}hM7w)0MϱFk1`BXxxdK;.x%!S;/k^#θC39IBP`&ʀj?,:ݡE2 tdVeB׾Z#T"vƒi%7C{ ʽ$ m/u- :-V~c [nl[Vf]Zm)nIQ9n yiǡ"xCT !& >/((|@//;&m-6AKmsqetзg|ӡ({04$}fo/k">1C9֥To]7GUcw e%N3&h?f];(o&\ZlGn :C".me?üBǑlfCNb+F#dME~zt&n5g~CT0nW~b` _M'^r{9'+/ {Q"_ϝw퍼04#ҌxQl3q9 '? '[vxTY# gPBn0hr.'CEoğ(^}_?/6ThL2Nf+;e)%FЀBaðRZ'H.>ze~%ljY-EZYx]E dzܻk3N2z4eU7Y{#"\66peOq)+6ܾ$X[y6jĚqt01  aa'#3XucT.ܭ+Ǐؾ3Ӗ)Y4CyCV=|RCiutEŦ\R%PxuǪ2QωTk~[h-YxyNEQ?:Qu(˴J%@$ YQ#܁t W_z>k;9rmF1xČOn^9I IEGNN-5H:97dPdf 1.V`l4 BLM.2 C/7?1B'ܑE52٥d']j.n6c#{@l rˊ<ۓ{08nLظ(n~_Xf8S'}>ڇy6oD/ЋEϺh痓? ɀ mm O!3rXʻ`~Լ<xoyTuL`e!enuL8}T-Ƹ#Jb {.F5NT;8Jb?k;}BiA}Q[2iY~&ĉN1i5.pS](1*Qϐ$8X?S`HE;j&AVN OJŐުj{:!0kzLjjR2П8 8Mdz #P=aSicW@i#t]"(8."8+2؏2 5zne=s)f4x+[4RP ]0o/d|{йg-ZgkOk3#̉v҅~bm;$NM؎~ɞ7?:sCwO[/O. TϺb8,ƋZ:]pՄ] Ў@ž-~Ŏ%'##Ekvy[ }I{\"*_ DOOI+e+VO>G%L$sL$Syw G7ܤ%ScFK8 endstream endobj 2121 0 obj << /Length 3046 /Filter /FlateDecode >> stream x]s۸ݿB3Mݓ/wN}˥ۇ EBdDʲ"E3n2=`X,brf3{sUfn0]BekOg7_/psp} 8wogL_^]y_ޞqUUڮX)74`ЎlWf<zssϗ7۳Og 83oЏ f?Y}?ۋف(3{qϜFxz"v;V17CWe;4In>yNΉmV'#o :̔lfw"k!frЎ}n|"u\*ڎH`=;<.*) ^*`ޙU~?l&p8 h̔6hX&)r2");bh>Ą^d{qi l”-uY 2eX*NhV hl b4inH/&cLq qܢ5;>.mrNJH:9W7)2&;ړ^FR_%&d:ygpL[;{yc͎& Ev+p]RNvcKvC|p( DVב)i{E̡y;`߾.Ye&B+i$ؼw,ya(pa(P u8> <ͧ=0"jWdkby!UJe 2od0~'xiBZϳop_:S+M{vQ.?4%E4,( OB }qeu̒%@i]^ վ&gc`>-ĵ{<~UJ)0.:r! _Y՟+n J(Ҕd͌ʤ௲ʄ+< f۵*1xNo7Ih!˪e`ih +Yv1ExoL\IwI^$BH2Ag+qA;;=M7Ya'fӼȪB9RڿP]Ƒg~wdT%3-KUDYFH:L+>օƤO4x2NGpf2?OrnsevOV0z\ӹG=w/c/T/3ׇ گ*ck?zY=i }p#mJ *B47!0 7;o_ 0C7yIm9K;W'qs7 H?DR^@ilJGM?q=:m˽c/N/^g'ǵ#IZӋ7gOɒ\NYV/_0H >cv&`Zy/ O}^%mx2O)3dl}$ߜIUeF8[$ {C\!b-hرh|%ؚsTք$wlW#Qb;8ڈjMEYjeQQDKdh{{](ʩ4c{< . qg_nWgr@npшJ;€&Cedodz.}tP̠+!2#K>]0`'e_Pxhx0OLUMSX*sJM>vcHa,d-- DJ Gs^ Dp;<+HP"5?֑&cEhi[`]Η]qƝt>m_L"D]yk$uߐ:pQ \\ aSW:Dk@}`CJ[:W\8-wѵJz*]6B(*xCpKQ9.be:ӎv!q5ѳ6HM ")=`e. E‰_)%G M& kwM 0 n%(a_lE]dP+<\7UIbdnǾ&}}S ҍԝW'6Ivt?+Qr'Ur3V<&tCԱ rh#uNn]^:A_7.bI%& xXա/J]Zux(q'Q?LJs# SJE%}/qeU:Bc2&ê53L ~*Hl)(+uJO|EslIf`LkU 7~7氃WvؽGH"@* FiH4ImN~lM wlkp.q+,٣>MvzUk瘳| VZA u$Titf A/)zy'p'qR~bʃ0)>b7vf œĹN> stream xڝZYs8~У\ea 9$z+q25MA+) )qLFh4(d5&o.ξ{IRr{OIl|a1ezLJySg񦗷wIs۟q8}pwÿ{=:6 Qfv0T'VFbÛw7L?Gg7giMt(Q|sod}x*Q0|:m-/V:فTyw~~{`k,Z4rzۏݹNil]z'MVT ?\Mϼ.ӼZ"LA 68ZQěY[:k3IT ϹͶMm]׺B)X,lcG 'J3Y4Hő^oۢdA\¾0@M]Lf J~JHÍb_2]c{%71o&y}&h)g\uނ[@;o&B 5XU~<Ą_Af}c[kY+'vWP@w,e0|SY$"{iH?ن{ӶƯJ"w= $ȗ]37]˾iY| _;W3ŖudhJURԻNg6 7AG50 jWK;[Zl;vU-t)R}H\_f*F23Q9U!sax9s"z{t/![b[Zft HQxX}!jobS|=f U;v٢x&u:tRQRb E"Ai$6#ShRRLXNB B _;Slqk1`CL֔mM 6T*-soK[FsoxapW<ݕ$\Vf\(rrMipIbIgwα>$jwP` l]uO!ɒI2 _D(@HSF6(:B{+"44l٢?PS.,^VEHm0ql sc Fyž ՌxDEw b!p  p+/ izY8Q Ds%X#3PfмzXBhڬ7.:JU߼͵B%)}.Qe|MT:} w. )ԫP\/(aA?V&H~~J=3 #DAWE;v(`zpzGPr QXY)1bhzEՙz weݩсy^u[Tt@@ @aPK5ޝmjO~gֈ  "\61j:m 3p^җ2s80J&˙tؖܟɸgXh>ts|8}Kne 6"jo'w׎.Vv.CuK_]jW!4`.  ǼhEbpo #ŚU`z' ۾X[qC\DgYw2KKu. epK_8K=2gA=& /A.cIs`,l^l A6ElUUsQ?԰V C|on6WX>zoT⇮B>Q `XLY @2qMϙ {[\9hWq.R{xLczcǿ)I/:znf\(.56# jaBI.Rp.g P-5BCFXyb0S>m#+.e=e H 2ˇIؽa#B;GQdN B6bo{^5VpY?l~4.zMtHft5a( ;sbK]},.s^/Lشa@A8NGO-_LedKEЙ URHxKR\/a_sm++dhc}[@Wk}Ȏm **ׯj,j݃AzUeIX*-y] `϶ XLN"Űn@#70Bں(q<4ƒ{iCH>8hZ{;hUϠj_+n[Q8O"PԇgXnQꆠL8D[EØur+ym\G㩞aܿ`@~\c :k-aPc OwF N9xѓpRV!q/vt[ewㇼ>C$<9cv pݧG] l~qe2Mo|f¿/n(W'?!2Dp+7A)ڝ?)nΨؒ7 )n~x?[f5v,҂B=G÷#hIF(dEA'+NIpdGQ ZL7L$[b-OBG.|BPCH8-P,\~{Z|`-*>~PB-mh\ %GeBts?y2cxS#/Z1 'q(yMg^ӽ)m9گpN;ȑu05SONo@o6N(0ZCN+ZhwX endstream endobj 2139 0 obj << /Length 2656 /Filter /FlateDecode >> stream xڝYKsFW`ɞdI*e+T"!e`P{iz7x\Ż7wg߽5raBdqHeh&*",xwiRp"۷7bF͏~my, ְ]0oq0ƍOBŻnf5Q>]|p <;L"b!{,LXξ&Bdg;rbZ|>LJe" < ч̂bvӂkITkkVlu2yv(۲!N2{nuB)t(j]i܊ 01@G#K բ"5#*S5sg x)#S[ͅE=IIWϑNSZ@O챋"wQ<=pV@"I.6wox}Pq'i^g'؀%*di2֐HCJ$q'q"eDlH(\{δc& s:ecAE}Ձ A@萀 'ȜL/0N9sā+Ë">_}=A2ɨ^J䢔Sy`?%-vئxȏgI!\$9̄Dc튼II 55d =O@"QeO/Ԩ7rFU.M][7(es~2Uuh;[{P4I Ƞ&|N@FJ}]ٲlHm[p[ &)` >CSXm@* tRPhc]1B m ze8SF&-s# ex:b/6!ΤQd z$ vE35WFngee* 鏾+kqi0ꇃ0}ܦ}<ՑExkwɂJV*א b…~UAp3e//85U* J.h+V\:? >#,EΫ@W %!׀݂1-nkSډ 7gj|MAWm ]ۧ*\.eYGvL&F`5LV#U$Ɋl`DA)VpEBWp5a,WP5SaڃL~J41=d"R%su$W3{57kzCނg%d;>5a$2Ӄ(R3XRU,aEqd<*̩XpQ69\d(#EBÖ,p(,L3*S\7OMyĶcg ?C@M5ՄfϞF#Q~}gl1`HcH9 )} )_2I( <ƪE\|pny2 ;-"U,u::@bAi[? =Ej9%v-)=ڰaz <<1Iz>:'m힙&1>yʉYJ91Kx@O/GƢDp_~-/1$53֎ڝ B٩45Pl4h5Idw2ackk~W; A֑>n>_y}5Šؙ^F;ѺOjmQt۴EW ,"`{fA!ʞ oPsvHD }ɘ'{?4U<G+,QǑ)wŗU,Dpmԭ#.cv'_RM9}Q8>@fCɊw*T G7׷w8V6a{ '~[X!܈n^f^Q F4zV]c;JWUld{d[ۊnwǸ@_ ;~}ܓ>aSObv;^^sq^W^wvf+(ߕ8UQ?v[*D+y 7>7 gSzÞK F7QgibԌarJVCg :Lj'=RұO-Pg\zYuR?ҍC8T/UkKpDxiX\ў/9'c0Սp֤xmKl.. ݜn?V,Lw~ڞUFזTr%Rz?Cc%T endstream endobj 2148 0 obj << /Length 2461 /Filter /FlateDecode >> stream xڝMw6_*bUy؃'Nqijo߶=ВbkG<7  -ٚf.& 3ZчwI腣(rl/GQپ7jW t0 7هϏȷ_~u7lOp" \iNdNׇǧx}%ӧ#]\|p3rC1J72ejf|p9z -'h ǎ0vWnli qmC -W¶ۼ!\Li5"+3ͷ^9t˛wf5!۵yYΌmQW J 9v]; |re;@5E/E%}"o@]‰ep:'`[EZhjX3E&H~gbʯQ:8 ͶA‹ú(p=EVt VøC;B/Tw{%ECcZo6j!w~+b[Ӳȫv<{:ۅ]DkEǣXPB[bÃ"I?b,i|&Ly-8yܡS3ԑP*E\rṆ=+؃'F&OO?n "ZD[rc;UHcQD6f)bha]79nS򖦊f^5~oeӴ~da[! (J!ܓN@^HS5TuK%Oîhۼ5hhU?*_;&ھu0̛KcxnfSk˲N4k3cv#HM~b<C"/c4FIp=%/4F6vxv]vv`DbA^i1F"щtƒI,ױu.w~ > h(^@NE?~])-eU x<}¢%/4hŒV)`{*%j* ۍ{~M [AiKGZ|J<}"gA;zbCn}ʖb{3u_ X'4H+r%PGSZϬ[;mXeB<\[! cj[6#&+'.z!UyU]t"F/XKYcFH`4!_:| _H 5<9R+WdxH?3w'plqUY c q'l[4Äp* *uRK&.Sh:Lx>e@z;.d檬+ص*v5S;Qmy ~iAgwƧ?r(b-29N9O7;\ȝ\R>֩dLe+&~;duQT=b@DIyGG<j#|hJ>sREK]aD 2xt` Dd{_E9&PqCŎ % uUH o[MB5/iw66r{RvSa#ECr|{#M`-&e\n(n~Ki/M\y ( ݦ]pgvERi rHEt)}l==rݒ c#bzst~[9[ ^"dU|:!v( NBGX+(GڑZ* H['%bgo*69EቚHw,6u*ZF>ƀʏ5>xׇn, b+w*&&MS [/d;$4H-%ˍjZ?ogOo?M xyӒ9 s?2V)a)W9 endstream endobj 2152 0 obj << /Length 3272 /Filter /FlateDecode >> stream xڽ[_s8ϧtYQ̥ifMvADZr~P9qH Щ38o'Ob9E`2Rx+/HV(RVŴLuJ#%CLv0YӀ=6( o.yfEγQHLMRws{ 38؍b{ղс;_߹xVyzn4~8N3IA+M&)QFmH:4\3HfEg1骬@2 +CPsQxx7vmR‹]KҭaYQB ijMn2kzܮH+*yTzy 82R׻+׷_͍R4vPO<%)RꔫM:2-*XHH\.cЦ:׵IQwV}7Ik\)uAb*iY=(vH4&bLY4@,a6K汴S~D#8 +Gy'`WԮqu\R0 ̇q 3^|ߝ]RրW5!aOg+e`aq=uI A(uNt %0OC{@ll>n,Ou}}5,ZTsK0Fz9EWƧu ᩌnp: ]x5C+0@#~hh?ȭcM)w=7O}4=6zmq,dԤ-WK>NSZs` q)zʠEo>F ?h&[lPUF9# P<͊EMOYTzZW5]uBR+0nյulI)j= Fd@HJEz "T:@hM :3~,Oc{ .jzغuf)p 4e W`f09W iqwhˬf $YY=uY,islK}Nnu~&Ve~S0"NctlHV=X5|6&/xl0 =ʭ`VYg ۞oR 5CB< _yý7DpvzyƇAZAmBM#O/˅^&udF_0D ۠P'} VCVl%+' By變Z/'S7h΅$5.hO tGF$B.$U^-Y7qk- ;$y:dd 2 =-NȌ'ln%T+Z.1%f l[`z Y*zkc񂐒"J]GCorDS\11p@$B6Ag-?l=4;ՙ7ýYܧ9-b}X30YA 5X0%KJS;Cs`A>l3R;XXt}_5fn<'DKBQdzpDh 4Hxj`V5@bre%!lVE^8‹7e3>:[n]6D[Rv͟ K P^ǖH@Od#:|0g[@#x(ܘ`9ԃ7r;|B7(x]Dϸ'= f.ϏvΏ>}> stream x\SHUx2h{rdRuu}]lɑf5_taǝ;o"E({^r|?'NOw4vǃG{N/?~9h_:!ފ0""r"z! 'TE"NyE]n%84#N,!?C'hWV^!ƴ)- GKH`%Rqn',N33Bj|ViА x;}oP=_[ 9t{q~r<ؚk^O!`Wg` ݌+R{5?=Cw|x8 Wg` <[i[`WGׁKsa _ *(d;T6ء^GajxtB$@'C_<"E2ʻ Ӥ̷5 0ȀY@Wcn(#!]j/rQw3D]-&bd ,̂[g`]ki;h2(ɸfh_ӓ\;gNCXjZ>Dy|BP^Tmpv1x6&ߏ#EWg`>wu0UBF2,em;!JGrI";+ErSU+v78r io=mG?^)E83}Fa56Oyl0.<.X<=]R%IkԁuNu강ŏѺ~m{I]*UϮ} TʙG6y=2B$S^'1c }V@j ,NZNR:IkuMNu강%A(xsE``wju4ةZvJ\e٤,!M|w3ą=H|!NRV~4+'Y0(c(貨o{Ѹ7NA5tNu강#"vZ|E0Egk2%Ve>͵wtqj&Y?U95ش~LUE3Vk;>s^tWM|Zg~M%mm! kEuZur'Q5;uXVO# ۋ;y1N^תn<kT-'} /l#뷕?MX$k?ۏ vf-ma3m Z~KNj<1:ϦwO^I7 ,h-m >C( L6H uIuH7@|;G@g\WpVg`3w.4=y 0ӌ:U!f|EDӓ) 4t#%bp)7I#)t<) O8AC`?_ycz(D?t.իqy@ߕj ALB:0.jDC Xu2_NżC/ѝ|_$ŝaa7QP08 glH3JT27iuYR-X6S x-&_kPNUWWIa?(,#FOv R oYu*t=z@_fM%&\Ihj,tަʦPd0KqQyR ,&e<ؘs6[[YѨ~<ĕ9KfyahjBTAMs4$D^'[eZ}SQ]׀fueF䇡6-ft4)sM Dɑd'gz_J7)nLsl/1Xw D|͝vßkǕIe뽲/,ټd+6}KM0k3Ve33/(Xפ<延U[wþd p ዬJ̄Ra1ak Ő2՗ۀީ~7X^-J*zCʽVQFJX.)MM*fx/Tt'pMB @DQ \^w\j iJK~\OOGq](jQ$K ސA:$(zB1$ꍱ u/aP3S.MU X˿e>Oe&K 0s;N2NOgy)]A:r>N_Nj9beumBYV.}/|+([EPoB_ Z:N:6 Am\A׭]MFM&ϭW4>7Mq$yI~ɂirXwdƒ:-d|gi9?%ċ:ChS/;T.^UlZ#aƇfx+&.%)Xչ endstream endobj 2069 0 obj << /Type /ObjStm /N 100 /First 986 /Length 1672 /Filter /FlateDecode >> stream xY]o[7 }ϯcP]1l6H:`[ ctAS;M8d_wy++R!Eb0ΰd(U`2MB21֯I.AHd2WYgJ!u 1 y7EXfC Ũo`ʮ~ \jF̹yTBRQHQg)0-1|UG]_B`wa tHrx0᱔z7 CϾR2x_o%22JǪĘ/.td]1"MXLT%HU/gK >!HW*%XHdBr e$blBUb#P00Xp5:!:WH"$H8Xbu.+I'Vru`R@zDLt\m CdHY%16"ϩ'^ ^_cHjT[19]G)]LJA#bԀA1k*{dQ,u>WxLITY V${pxxнto?LWj:[-5})|OdS4<9bNehɁl.gkI+l6Ǥ} P_Bn쩯t/狋颪qgݛgjdeNAq G+C.V)K!GN߯0gcj^LVYw|FZ}^~udM>c Vf(֘jj_9_v(1U˰TGֲHRM !Y+p/NLt͓mΐtxiQGLJ `, F+KG/Э(!~EXys󄔉=mb>9 ȐG{7zHՍI::I֯A׍rk!# kG R)'6TT5%ZfĎľZfןO/[6}K&v{vs`StsP#O8Y%?]on"=}IulQS|ĦFͮq}3`^60s9qejɇ<:9͵Ç{ Z=MܶY/ C8Z>FJUKꂣZm-'>~e)i'y'dq#y[H%~8+h3xǏiț1 qtLC7S;/Y6/}쒅rV0gfPNJf$<+ )Yn5&? P7(yb#6G{y%(͡~8 F9oTV4rҊkA %Xʭ鞻l} endstream endobj 2204 0 obj << /Length 3466 /Filter /FlateDecode >> stream xڥ]sݿB'zb9ۉ39V$yDb"/Pě/" By~8~qmfOXFYlCߘtgz~yQYb!)}ᗇx/~61*Pk؛*+-Ie͈ۻoWfqǙ$LZ=[m~=0,u^iff"Gfg8 6:é?IҺIC/l; xoAUW65C.bR Due]>pF[qˋ.o_jGEmhʄeW+Qćiq򶄤y)v*7%o S+7᫪Z|-uY@&Y!E~Pm~qY U@ܞIr<Ú9V1U]:|QҎzhz m8!xznr1扳D8 %wv(b/Evb"Q2źDzuVeuNپ+ 7<[ruu eR[&{ߵ=Ru9uP4`h[t~1<_|1ޅ;-'4%N`"u΍I/2kΒu(&ӭA@cq[\9poc_2[ذ^m  ^QS_firYh!BiIpp \ 1Z]WL <5 l=pb;?6|]Ayպ(}n2:Y5eYgbsaUw + Ck)^1v{4:Vf_#~aը%f Km$Fi 䤎wz%ۙX~!16u!;< fod2qَ#9ee J^: uL6 (CK1h';,1UŪBs !6 r#D )WBq"2wZram5r-'y/" +B"/=QBQHJslEag7^j/$=emh(|&k˩SCXt=m!r F)3~X?_aʁ0 .nDizV@j!f&4}δLYU(m4#L/y ?G/n-xS8uGP*iK}1ɚ3E*Dj+4.En~h5l،B+M4Ob޸{$%bFeMǏBr.Mp%v+{*|2ӡl5DSd86tEOL.znf~j+L7 [(4Mε4QQ'OJ$jcQW}=tC\Fqpsz,5:_r˳dXRprxSy fa&# B\@'8a28L00:b>,sf?v~>9UѻPLUҟLD֋XT0h$/8Ԇby,cX]tw$0z7;,n`dp_{xl+j/]l=t벷%~e'X rOCJNJY-) N`hbؒz5FX+M,+/b61?s _Lhʗt. f,47?Dt8Gc9A=l ꃔ*S&͡@ ΀ Z;{*Ec.aj6hɝb1zD@ ^y/\Oɤ9OP5LGڨ ]=7 y2߯HH[sh [d"pͤn+*" 1im#3E֞`,$) nm} fv4J@G^c*6`ץ,N{)NLj|j+3'0\ݛ6w/=uK@b  Q+ŜeXgZnoGMu :ć1:5J_rA0Lғa! gH_ş^_aM t-%K%ݰR!¾ @[3 КE`AgGvDAY$0Ǜk?N|?Z֐Z\C .J&=&Kk( endstream endobj 2209 0 obj << /Length 3629 /Filter /FlateDecode >> stream xڥZY~_`SKhR\,ұl?D4j AbsL_7fۙ}{]R7hbi2# tX~s^~w~zʉy)7^1%ݽ8po~|wwI0KbMT4`MTb#ח=ܽ5}zʃI 7l5[C3jz",+5;{F NͲê%EBCP$KS7Yn,fx=IqNSN.OHSGRu0pQXQ|2S5 6_{xxR .9[))VbǬנBIc$/#痝)- k>> >CW%svxo7remk?= R6f+w ͎:AֺLMp:_6M2 \O-5ipɫLYQsn!ez1/r63Ej'$ ஏ31Q^Agaɑrj,AAk1eLp) SKd ^қ򞢞-Fv8@=8?[s|[3PYQx@+cu?aꪰ?^e pS-'X\kե GzdE-hgX4tnxc==YcnZ~\W{O)j3M]Ȳ|~(v(]*x$|5~̈́)99{6(G %byl:f" /SH$I:01b5m'+yRow)6#^w @Ia+E:wXc?A®xBFPeHS'd"Mk˜YdS=pSŏ ȞR~mGpkoQez>SVE"y*ڵy̯A{;SiJFx2td#!_M[ԬD O}uX p!߹brBdg@Ao=v+Ө`JGbWmiA(C h\ be߷%2(d~"@z!xݔaᒛ $O(:ۛPV/ (p o B^@-CCQ}G]p|& 0%AORҢ#Q qp k߇HsX Uxڲ?0%AW HMp#$`k0:r@rw*_3ݸS5p#Đ`+?94"*OguSK% 3 r8Mcd||YfAb X*$]7ꐋ"͜?Қ˂I?(Ayj5Yϛ u!G gf 8x^t^,'r3So74tRPR;GI::DU0ӐSk݄:EpgH=׶Ywrz`O.x#J>_bI|o`:;Ph lg11"v\< sI\Jr.db+>0+ٵ0̺Ut ꎎ`EI`IDypqxb qR L\Gmd+@;e#:䈾kCr0:&vZH F2QhHXTJv^V::F74G{@yV +H+z ٩QG֚;[E f J/޼g>PȲ/%\gWƤZ: b3SW!b&$-)  euKaҌ=,24HE_uE[̆;??dKWe|B OvtEȹ;}ODS zl=#Sw̒/YgjR(bpWґrC`UUf~D`#$d/'ź='`@Dno&c_`! m({*ZZwzER]4hMľ_+R=ZWY Lp^͸m73bg|^1KȤfQloCZ<OѰb01F\(jðCV M{cqsnTݸw:& Ύ\lKm {&ii F @Oz!,(K-&f+ T!dym1L7υE"\;e_]_p==ҭ#_Vn&k Za쫆?.f:%+r!p^uaQO;[ ldH,RK ].ha la4h\G-/U%! x' A:&붢0wR }Gҡʼ@4'rNh]4Aw`?hc{f\sU2˱.N1pB'gn;ClBep󪤐S=]^/:C!VWUc$zK|ǮӱOѿ),gH|Xބ!n\ͅ:Lvxu'L \W_mxϟNJ9`=(Gc ;  Csܲ5E |WZP$}K|\<(Kr-=R!+dAEa_|wStiL5;ˏ\x_.܎^:' endstream endobj 2214 0 obj << /Length 2523 /Filter /FlateDecode >> stream x\[oܸ~i\E6EnIZE $BѶI4lËfıFQi}<<x^=?g{Dc( Ƹwyof?rӧ'> Y0 f?Ypӫώ0fW/NYzq#B)( =?Nw#DS:<;S]z~rщy! Eԛ/ޜ^~DyݨKL*^ -FJ1ѱQDdy-m^R%"Rd10oVUUmEԇ8AԯHS]hoJ]X̚?+t|Q# a`cFB/ K74F/=]8Q4%w-_` H6U:ʾ>(I{6: Y^AD-ˉ1@J>c2{)\0\ZzACSE#tMv6]!"Quښj־r #Je"0/nFU="soU-`F[J`hE]m~-Fz $FPq&, `7!Цw;-~n*6 7ƇY=)S*YQ2]l-2$ fGV i.W2 ˢMBlj-\ɺNa&( 3j!1e;32.q0 aS)JOX`fwiVrA@niÞߣ]D  ^ii^q6d mof*xRa|VStEx,o&"ӝd(w l(*{~gW(2 %ϚJsi'})7$tL=nV,u~JGxz.Ju،ґS.UV:O]QP(ըh/efi#߱y fMP>ʖ(]PXE+;ZQE֣PsX Irvp oҽE!nUڻPӖ؃ 4mVP>ͷ}4˕^rAg;(Mker`oe&Nbqd~Z:q2{BAt}U K 8g,Hf}eU!4IGH0tO!ڴ16f!ڪIr!}!Ȝ[#! 似\5hei1ړ}Kd:,lX*;aCOE *7|G(\"X(UVM$!O:[E+.;0 G4 ["rؐi6ƜlARA#NM-WeG I0bs$N~4~p#(а;1DDnގG#;""!Gqdg/\s1`j{ ٜl(ZV],e}_ G;>FadzjFA0{caw;얯!5 (Y3kShx2u1=1 ;AI`I̫?ɳdPpUvċNwi}/_G0p/GI<#"bAW'q UזH\We- _bN0kA`]L-3WeG '<~~{Q?E~b2Hl*;Id6Dڈ(G1K)t8hw|P_6dT|Oi)GIY2^XgqҖHJWeGRߺ}_Vqa*G|bpD" N8[#\ݽ߈$BAً8ԉd4;Uٱ8SG,w2VYvw_;oqC:Ks|Gι*;!c m׃^IӘ켂O-WeG@! "!A:GHu2Hl*;  IW$Id!qUv BFWE]>|[/&CsL- WUwÁyhlv^e‚d_DGawDU8f6{uZ4jo˴Cf.3FԃgGP8dw䐫#)bvޜ S[sɷyMܙyȏopɘkwd#4 ?LAawU'"Ǿ8 }70% |=j` _?:@`eQfV8>ǀ)h[娿 endstream endobj 2248 0 obj << /Length 3282 /Filter /FlateDecode >> stream xڵZYs6~ׯG*ɉUjcgme+U^?PC rBr$+U߷,yyBF_w VUz}RJ4z_*uW.2 ȿ\Qxͫ׿{~kˏ?*ѣERi, K x5);w?/z/<K^B"JEj9\|ry JZEB 4DףE}U,c?I 0=]jRo" (ObX,O[!J@i6ZVrU')uVD{}`nsD։EjbWl7c}|FNX2T|[;8Xy"Sj_fu-ڎ$=U xI&DN%OH_ߨovЗHB~K pi41;0[lex/E_A /z:'.7wb!Ծmuh ;0'k)"7m`Ri@$bQx}fhˮ/7jo jk6%,KwejKxš Pg~.־ ֡R8>rg *Lac)qNw2}QXFSw͖Z/BhG3.c%uuOc(y f9O'a5n*;zvi:G>5ۚaL!( S_X(4v8ԏhHX$@ `R}Eq 0NLP3tTzfsj/멋΍roDTmQ-IpFft0 {*дW]s_p*a-SPkJ~1 1&/^Xk?~lW K5A}çkꂺ͹=,*RC(ST)8=~t==%4cdutY+)Z7p 㳙rW74" ܖƒHlT7K`!UQHpH/G$KXH@ѽ*GTdÞ4N.s76;U};BMFhЌ3C#zb+ozGtsꉸr"όf'7rNL2nPй=`B'X 3+-p90f1IYu*k$|bn7\v g&-|, **aDms P.?o,(U\|J"d  <{j6YEQiAAAVxؖKp;:[a>a 屈*# #X2C#p Nm$_(@P#!A;MZ^齞藐efŒi Պ35"WBKNdl!Iqk+o}FJ{6U11W33U3f; f(F63E!^dd0!3L4*2;LdgA P|P͑3إv4 6nx*+ 'z 78Ql[rOA@t4 j#48H  hI;X?X3S:wD1 5\xܒxpϳdNx01Djk0Dj5d dxn[XM k]je*㞌svibUos{Uu /|dTS#L)֧g,\u1ZX(ݬJs'Yb|hY>_-u΂0myC-[Qui 7(L[ln29a=}zڊiXq-$^N& 1zP[%H(>1/[]Oݾtuyp>PTJL6MKl5/吋q| ǾVCoN.7%^pMv&=6]q~W&TWMF-&*z2S\h9Gճnl J>1|zlBO4/ˆ=°tUU@G wلL QKȄwOc9vRM6m @*(w2NǞ*#т͏3¹etAt)_H/ \ !sH&T[M ^xzhͥDžDu=8ʚB 3h RY(!(4J fA&4Q(*̖ۛp̒߰-{,wf]JC8b'jSN&{큸/@ݮeΗd%Dget I>__r,u6'@66Z]||c{uEf4$RiH[z$MUPC~%^D*?//L8bty!cw J)84NP=U[Aj'@]/>L5٧THБH?J6@Oqݕ.zJB%h)2^ʳpYCqF!0 dHI*=TM,)j\c)1w?2e ik**u ^BUeN; x$j0B ʝ{ m~sF,ѷ|0|L>u=]D|Ec/.xACK B1[1` pl{u>Z Etk5 dK+zB4\3+ U[ WBrle ,=sZE!S2i%Dr3Ŗ'#6 fea=t5UfiniuYҤ'IOq5 tvqvdPꪘ+rd &Mu ˢ_}>G }`P<X²NƍvS /dG@٬.-{hMnKcAJrD2 skb1Eů&KKI<w\sy8*AECeb1|Zs,M'T4/}롐52Q"σB9WNt endstream endobj 2257 0 obj << /Length 3200 /Filter /FlateDecode >> stream xڥrF2ycP99Uvc{%%{HR[ IA!@iߞ@\y1C6هo^_d|%fvs;KyF$Je||!4| dy凟ޜj~so7?j4R03~1:ibY֛DLJy..[+gj#g/~DfvWnfJD+l5>2mDV)Yb3bZ])f,ao?aޝs;ow[mv^Dz}ALlD45iͶ+}P"1<1* h5~o#菛-L%lyi[qAUmzQOf[%\p~CkidPcEۢk]zMr`5*_w8\kp$l+ӬO*a4 y6w Z, 8r87| ۄ,+j0쑅oەUEŊ=Ђ#k2'&UF .Fϯ.޺qNjW`罉'C'ִu<#a z^q&imwؼ/,^+0M?U o}6;y8-H҉Mgmwٷa6DmЁAsDH|]=?9~qVt ddy/DeA5Fhh4ڞR7~2%Qfy&yUq!ɏ U0=$L-+Ps~Tz賠ꦣFQx-q} ̀k-AG0@ *# $U{k,<0~]Ŕk։١kVk֐a(7JZ?LEwa'm"X su%Ube `kNd% ·v:6k.p+| N-ufߵw0`xH B^R!qP#S CIà# !=+c*֍/fW!woշldiAJz}K,2g(7a 65"]j*ZϹ|76W.򼍛 rV2>3Bg1d:5$2_}!oD0zM!|vPعJ0-™Uf=v8 [i'CQtfUѫn۽R3 Z  h4V*>NۨP)YXp#al}H2T_:RjGewQN ʞx 9}7>rg?˃ۦmeEL`oڈ13. HU-S *Xq{;.*13п{"R~O8 ;$AZa z$HK,DK+5`^7!:2u)}1[<3 J#ͿȄX_g|~{~AK VW:}ɰ1?ې(c\ӻ ՛SY׳Ň+wvp[Xy!4*7uWS5ݷH`6g^~u4p=Cv1'j!S7nP)p]yW h0;#hk7C%?k0^"%eMe|rA ez'O1gL9d4PGkx;v2oVQܥqb:3c'x0)';C׸\˒ᐡ-4zMi qJ? btI7\ ;hPnT҃+xNWxw:Pw5;"^BuPrh{82 |少 glkPW|:x/I @GMSA0i^i%ACeI&H(0.Z},[h]p-MPtJB{p+үۣ{3arɄ 7c,['pfL28̓E2Jv+cdOz%;Jp/ eYwcUJS6E{!FfiMBiZ _"Zђ') ϲg ^#%4> stream xڵks8_Ų DMn8UWM0=ƎwucƏ|h~w[ <:;| /f;"dlHKw>ǿ}<} Ckj:}3Ab?szh? =|cva"&U-b@%~/ىۯt<95NΎ޽;:C{{04Lk奋/_7g n΅y}*ͨX.R/Ğd:.NPf(fw&@A X<Y(3[ gu0 2*qߦ=)7_ l fb)}L`GEb $#턖)wr$x<t)_ +Y3e7 INOAI^ S2^0&-#'P1`g<H{/l2.4R宾hrv}xDM3Εmv6* pڬ|#)$2bJ$c;:ɮN %PyIR턕Xkkh`Ht-+褞HD{Aԇ?Όc;qWnǺ/WDžOO"m8&wvB=EJ;5>C,]ɍ:QqܱjÄ _"ι,sW ~|n| 0g- T|3bE}Ͷ5qm8EBMCCZ,Ve&$"+!mЋU5@ep@I[͸Z$ihq-8=eU/u;ԷEԓq'w&@T"tzǖOh)x$l9"*F *_xYaöXmvm@KkҪp n%װtyjWdqڿXY~il lV# fmj^2I{ݮuwqPA.t)Y+:0s,Ieu[ X'ɰR@̰ ~X!qXC.߇? duK78ȝ_P{ժpuN}邩F|]&yѬqwИUc稜JY3JԮM)>U-]xcBG4UzI/+mu`#w9hZC;蠾u-SӗlϠr.7FFbXMY:*4S TR.{>x Aۃl7@iڈ3i(F.ztP(5F~ w0k7ԓ6-i٫9+]Ӆtimi 9YJ ebn%w|t5KB ;\MG -4x>j:]o9#0d\ӼA<ɠ/nQFȶƔ!8s UiikgA`#ƎT=f6d`B SqWC`DP;:ߤu>ZASHyh[ qn/q~M1@FƛΫ{\{n"`KpA-qrXڎg4ƮU5 \OڣW.G&x_6wpTA`R7~Lcw_"c3 `~hB6p}ܺٯxՏ;m|yx=(;!\ ႖AQL =)֞?~{9djX|YfZa[+Cu L8ⅇ5܋aCGRܿIt`#~YɒnB.TT eN e_rUc09Szv9d6SZˁ 0_ў<Pچ82nWgk@\ qWio;QHkl85 @ &T.ě=_#. nڕ^ vѝXqp كYdmLҤ8U}G^H?nLq0Sm\o \|}K?Cvl*q9De^טPМ9o9 W37єi MP&WΫ endstream endobj 2201 0 obj << /Type /ObjStm /N 100 /First 971 /Length 1733 /Filter /FlateDecode >> stream xYo7 ~E>‡IPT@ݐ6iLVC)Vޡ+b };H>ߓN#悋T㬿5Q*J$? ؔV\..c UpZp9rVI-D䄣8 ,TWjBع5(y!&+T1ɠrVVe@Dxc ks+NZak 4ҝI@IP MC6MyQg-d<dDݴMpx >B|m+PUy 2$24HQ_aJƃT!5Ncj8B f5&Px%j+NBP(!/(ѣp)%aĺ)Z{,妧YP JT]Ģ"_;!jf3.lO)d/C O[ I݉3]gI':gsE3 wSD{k"_bCEz͵D+Dg-:9mANk DG|h=^F^oNt %ME<D Ujd,BH>@b~z8]#7 ϧVZ⋓1VK-&f2<.痋r]ɣ;wqz*NDfN6%S Qblz3F\Iws?ͱѺS>npxbe> 拗ӅOUBVvX0j6DU7C󹃡/WˋӅ(WtuFm0{>0wg>FF 7-6 (c(Ps!wZ yWBhN0^:-:zwN(t>I;}w3FNa;}1ȇ^&ND^ocuSuD/:}cWFљT{aƚłe3 þp8{z`((p#!y-t+2bn{wq~wַ6K/]MUKI"!~İƚ|׸݆iXNV˻k }qZk)rx;]lf =cO,Hr4(I*9.9WY{P1ilT䆱D_vb ÏuyA)LTb*+GN֮R:wիD$fq 1LԴƧ|Q_ƺno@h<Z/XϣC(|G评F=& ^@al-_il(^?wk endstream endobj 2294 0 obj << /Length 2474 /Filter /FlateDecode >> stream xڽks۸`Ay6^ھtr7H%#)N{wK7 b/ ޞ<9} ctpy$)DGL,\—>VD,ͼ.782ҠִyˆKSMERDZY_8u^UxEQZ:F?Ʀmw?(aRs*Nx$6o7DB,I܅c#DFkLLވSվ9`QǼͷ֟ZXsE\V/G45t1!}}<`?8 NyGG%*]-'AIM|մm;nz8tdX4]lKU 5Y?ZipFu~=eBwK qn#>i 8KV[*n}D~n-.@ eKӷni2d?oy@@)a@"H Y,͂W?vzXva؏}%4ӐBr@K)w`FUBrj5oġ!?7>돷hH2C@0i\sHu><,a VTgG3M5VjT9M۾ Io紋1F>%~̭ !H~X`̡牘f3M3eEZCJro7֕E$ hP5G*fn*8䍥U_λ.sջ򽬎"TG$ @Z&'5rK U]إ7fcMw^ZL LӉa}Wt׆i&z* пSP =}{ls?Gd1E":RBjH7(. x+qeZ^5ݡqgOs׺6]XFQZU[pzbvgtb; ),ѩaC#,H^]U\*FK`mG"'>{V{H;+Q_Y/968#5Zb\8fBS}n\  7 C^ ‹|.WcvXuZq-I@\U] .qs$@ ObuwGș(|yc[T a䟼0KeQ՗) ˠ*;NeFF ,6\C0sDղ*V(H̭uCK30\@D%}I"'iHJl=ޝ]wN[b8s#^:_dxHu|H)RrzjD_/ jѥ[b+::<*F7$zstYat{.󆾞}-rUG8aWxoR2FQQPn^*ǒ9z{ʦ5 Ni4tJ;$P`(<2E<3W٘t0JN4c:#6 @!ٴ#w3qaTomv#s >8.`Sզ;VycEuѳ =w\-PuA0?,yL[8boc>.AQ ?RGLɓX܋ţq xi=4=pOg)GZ)-}CԵ\$~h$|eyh8t,#a_"`MdC9qx>c;%ͻ>vlRѮ:JQQ++W, E4ᰰWa:1AgB)=yWlU$ڡ kkij)} |/:I O"py @HN$1~Qbgj.QQ{'?oE/Q]]+" huij:`ԇl! endstream endobj 2310 0 obj << /Length 3254 /Filter /FlateDecode >> stream xڝZYw~ׯKs,hJ&NkIh,mPP# ] *Y}WZq_]߮$yJWכկ˿] 'ѷ|=9^z{yoNvWYkc6m [)X9|h8i%Yc-3\{Ooq˳WglpAޛzwjc?=ܭ3?ϒ)JX9$q +_yn4ݾ蹿)aFˇkLY\eQrCh6J8-w! gPb۲ ͸LBdlC4ҁ!/n˚rCʀ#]9j,΀YZ+:@h?ƺ&,6&+rM6ŠSfCPc}Pth %̧('bK3c -ɲh8Ϣc8AN4ز 1Ү܊]X|C/M1v9+HAo|>b=%tPf$OeNzt`=a9 L̘Q5SBFd7 F/c$!mTgVzR8Fz8ֶS^p` ni# d۫pRj̶/" .K.n1" FA5z#{ ]G\&y! BA\(.N<܆T͂+܈+_6MIHR)hKbps~_1Ko5qiN('<ȼ),7bӄn_+wل3{*9ё?ǎ\Cj7;7Mt=؉8.9 ϩfkܜpPAPN50wsB)e4J*fh"W!Q.ڷ6x )Mr`zdJu%aO15d!2`X`]mu쭝S7 eql]4-$)jq$* qx [(h=0bH =78c4H@֠KfMzTI|1EBr6lQ< v6J2C&7'ܓ@\6d-Ebӵ_h{ϦJ)O, MmsYH\L4an5D۩wv g:ȪؙtΥPbBUO;|9xCYwx %G#!:y1RX"l3GXzAeM_ JP J;5T >]X A Slc$Nl]pyI. T/hv0=xvln^`tP\uy"wI?`l-*:=cE0]p=閺# A2 &nT6~6>1%@431sEfk6h~!\MH2G?gBd/0 &6By@HATHHp endstream endobj 2314 0 obj << /Length 3320 /Filter /FlateDecode >> stream xڵ]s6=ӗsf֬)}Jm:mۦw3QlyY[rM9izs$;XH J&'7g_q|3L3%$5)&׋o԰6˫Wo.~2*a&uiM|&A(0؞s;p>nV ,.Cs瑬H3&GYQyy0ՠ/~]_fpo7E`@Ə2u&>)#o)9Pxo70wU\;ⲛX,/^ kdznKMf:J"2%|P`C7r ϰwwyYӰF_g 'z -]xc#:ꭹGk SW4WM o,d^s-plLs‚PX]X2 3ə)+sijYIv6YGQJO4L~WBvum>Y8?D+nw*e-tVCBoAFmw߄[ cUҭnep7ǐ N`ʼ#i}s+0VrJ?Q2;vX)s2p緳 $ s_s@ZeׇZMO@_?WʗSW_J{OSW'V6ﶾgUI U>CKjgkrBb?Q;2Kn_jV0Mmz(cu nu&,S9I\`v,Ԑthȶ!7~1 񟨝S=ej#WhT{Oj ʜf<Ϩr˱.4] sL߱ {؄\ SXsF3EϤl(re;0iUh uph"EkOBy>8Y{jXe@bX˷؂I8Kdig%־0!|PEmEWd,󫌚^MnmW$._oVAn*BsnijWmvk$4DI鮤z*oР=ki֤ﯳ혙&O !1b&Bh% ChhhAM6p2(".c!7~wCX0^D{L轖-?INS`]DXdFŒ&Wdex%`q5q$zN`԰S| #jIN .IŒt#5* - $ ҁl^ Ok?O69l:  Lrmi ȡeJ{me{~ <79'pE:dqɖmholm&D}`c E7<>|8 3j3,۹FZDhMxƮTu9ٓS/0R?&4|izFOX?Om2o p}6+9QimV~MNkD*|n!SAs'1|^P8$waDQ%9śX)`Tl[Jkh z+'l8Z4qtW]X5*믣_$F֞4 ߟ.x 4 *?YdhƄޅeIʟ޻ŏlg X,j^PU!Ǎc-XВi"6$BWiNuXH3xy4Em46pTҜ;޷ӝc4@XU (1T5l-p9liX1C ĸxol/"vII]}RS;@+~,B2z$vό^ D:q=0"KtSM{pXuGk(eUh ȁ"Y0619~!t`UhPx|~OjvfGv"^/hi~ZO.E*x = J%){E|,]j &v|^Uu$I VΚ1vֻ&st$s,Zkt%8Ary1Ǭ!qClCB ^Tpt{F$M 5ϫ=zRM%`"+2!"nJH )Z4ZX7 6Q%D. .ʇQo)x:*26p@H*4O߲QjCGw*.]iZ'[qXA(r7lAi3 4E~[%*~ NV UDLk:^j pA9 -D8.1 !Q$N(&p@f^N^v_bO6B$> stream x\Ms8Wl|TNěMf9eS)FmUdCRv< -Pl D?{("gG_d$y0F'JRĹIfW&TcM?yq/?O_>S}8k7f'Z!ʸLl"Bxhk}Xr|i=ѫ?'FRdzuNfypH~;NȈdcf9"&a?ZK&hYr>8Wb=Ĥ _!"Hg~N$YxKP4|E8]'ڪDFVk&ډf6gJO$kNk//Xeʯ}{~ŦiD|@h{aQ"*,]K#|Je|U eV+*&i4”SSLMp! Ĉ6pOlY} w \poE0ev2bRm%";|@w@U*c+ ), K2E6]&px7i*ŀ`.#7T:/yY@K1 v*LdؒMx28`HC16NE&"f: )m0\R jx||юCJ]k2~vGH>mEd8ʕ LBc?H{}PçB1?x m*x F;xKpoe_xK0Wqţ7v8a2 l߆Db&2FekdFB0ʼ"bnnB@mF_t|So,,j>kܦ+U0AREZ:BzľKv*s.,zE{#}dcs1[\=/5J/k\Bc^#VL0NXwPJ풏ڢt;wͪ2|&c+.b5{U.sKR#cƫoH,.bEuu=KVdwͪP_; PX[:]dWK=EP^!utº%rz8׈C__W[7fk{/";_C1v4ݠۨo4[?TL׃&]/^|x٩H EA*$Ȧb,mxD!R/% '2>kWㅓoNP}ۦvEc6a>J:N]cϑ#hwT#*zIi_Vߣ0#R^v~MjhZB7x;8 l墇ݕ;ѩgqEJ7hy'ީ.ޮwCѡ >܋iG΅4x)7LiPR19&7/Ydjif5}xV'n˩MY4 `A҉j7P6g-6B<|@hwd-9}']Ud,lwCeTvU:o;|Ei7.m(xM/lu=)i^cv{)f> stream x]K۸ϯq&UM؎ę139&yxPА쪭҈͏ 8x} RzDqƃHRĹ ˟o/]TKB!Oo|Ͽ}?߽^}W1ߓNQׂ(ܾ/D(j}hw7[cx/ͻ^wȋ_.}@#)Y0[^/FLˀ o?.~AHmzO )R HmTitL-1wq=ص̃Xs&yYLQ'(V >pΊdvD[aa5&0o޽އE7 /{HbeMQVi߅)K6R%?Ͱ5 ֡D8WV) G ,4MܟVZ ?Z٧<+nb=.bd2OGob;D?"Ɂ|'`Üh0e'waSet'c6صمu1,-G\WSD8;cQȟjPH"žjolGogƒXHIu""\'M)>:7溩E4: azoll@:|c#KQ?4O_EwI]g[MJUZPҩ։30lxfKmYO}#&"o/1Y7rl@r`h`&/&I$磊qՖ7iu>z cGaG4lJMyOBq~2/&H(A;ȦᲜkwH2֥&P'O: '4 )-PзhI^dyR;U*tq0 :Tbɖ!| !PBKeQPV= [&F-H-Z)u/-jӪ""z#9aY=u@N}ZK?ry=s.x߯6ʆRoG)\QIy ޟw&7$rZ뤛/c-@›Y:&V!"2&G3:Qy@GswyѾ'ogr7cgEA@oI]0+yĖ A cHޒ=.pQp-iͪoZoIȱɁuC)\UEyRl2o@:(!EUyV/ W&Ú|3`f0F+ˤnҪͤC/gΧI)aUM@>DǛb;(X#B"E#M)l}ojFg'ioX:B0d 3a7jl@n`00V;rE6M>2y(篖r9i&dƺ-:ufnp!]xglJ'tSZEcGߛbP,P} :-V6$Hli󽏧wvym؝ֱwN3*YlobZ UtN"vrn0G&K6̶|0C;%cD qJ];K{+FO0m-y&ϴ3iGo&c 3iBL$ކٖf(Xgj7LMS7E3NӼQb2 G|TU5i[&IFjkM[̪tSrU=0h;1ry[>PM`z$b>n6K}¢/*SlԤ]hiuB9+kҬ>y2b|o@:!qI(X-!>ɳy<7sǚ46/x*>l=z]Lc~o߹M-| -PZb*ܢ̳pؗd`NGȚSN-bpW+a"oC?ha rӔO ϛ>j[j-4iS?1j ̾琁55/bioAp${aoO¿.MK n4/6.kv=Gp2[̨&6 lr#J;t9N#NlN7)~.R~:f>x@>aNp{8M%F$7 ;嶿5n}e>Lj9iZ|B:8Dt/z:ߜQ~҇0MzD_(JgLDŽ1i9a*z1y endstream endobj 2306 0 obj << /Type /ObjStm /N 100 /First 988 /Length 1661 /Filter /FlateDecode >> stream xY]oTG }_1exl(-R+!B(iXEfC 2<"gl?_rRȹWPSPn&PI!%64)RN3iV Ԋ#M$cS6UXLՖb&eoASA~֊ I0lXa +\ԵLcoc)=q-` L_Nl-$k3fd  &y e Mm/co1Tqaqݴ b,R\P6Ujr@%ہ@ga8:%"f&!]  D]e`)v(ll;6+l4+<ƱJF!4%KIƎiW{P±Qf 7<#G]-MQJH"|7GBj;`Lu1c1"e$gfuzC[6GkکF-b6j C#PPrF!7ZǚB'oЬflz\չ5ͦg|,cE‚v6 ΠڧJ_/,/PFKJdݬx5[޼n֛Q6=њMFFK0 I-O?IW0i MOϖ'sT)h0=X}ʳ>叼?8ux-26]EꔟHw8F{:{3ek;Zkmh)x/R՛1ivor 79%XforX --ySj3QҼQz&G%?R&G=t{# \TTɑ}&~`DủƼa{h2>M$ oN4nv-`M^{ ^{mR27x1p,&h5?zIM^ёQѦ17ӰEd_iܻѲiY-0pm5#ڜ`NCL=vqbSX}v[\tTڭ/m࢘ | endstream endobj 2429 0 obj << /Length 2761 /Filter /FlateDecode >> stream x_۶S3DImיi0'še$HIQ|47H"vbw ptŷtnYf.w"H2;v ͌;)]7ai&HWp"q)_M uu eSE&>9EaH΢o]w>ĢCg L>NM[ ?-Iُ;g^Dž--!W!;ƛiP \ju:7>ќ /5mC,(KOC:C\6\@wk<^luۘy1林b2eV,cO2z,C$ bIiusʆq7v{yh[C j<7b}wtIm>8.]QӏI9x䃔Dݫ?eˣ9iFZ-E gѪN۬x\ ,±pY@Lt׫a%岸,ZMʄ:/nXG؂"WT[!L>E UNǴD8ێ2k*"9u&;Nçۘ(gínc-D_5ӲW T[Jܵ94&;VժWa[ …jKR8tw=??t1tM`O ]7N Jӯ&!Pl=u4f2r̸g"S8. >.J]%gU_N|HuׅOE EM+(]i*j)fm%g| >2\nnYCk$f'5]\wH\5 >,4 >`aN ku?D'm}hcYԘ{`}ySDX׀Ebր?e(/D"WH"_:?-h\u? l+Əj6آr} ,T](׵[ HF"/W T[fbvA.n\x[+ĘB2ϊ,Ηv1glF+Hr]r~>&|P8Dbpt\@:Pm}tG\Cx{Mq@ ܻO|\j;#'F Mh2Qe3p\\@.Pm}\4AB%纨6kNx]T1W T[ev5Gz[oz˽MRhU.LAoB3㷉o8r ϸDϲ"?ļMwAq2C5RX;H>1mQj$xHݧ_vs^d̖\mԼ9 7ѮDCE%*Q*rc/FtGdwO$;t t [ޅsWiNk&hdfD+ꄧ4*=E+Il ˞,$akTهucSyU7˜8:Ḹ\h3.憘Ghi˝pT\@*Pm}TAI"5=c ߚnt2ȸdHbVhLcOOltj s$4<#g~,3(;4 %p=3 endstream endobj 2477 0 obj << /Length 2507 /Filter /FlateDecode >> stream x]MsW( ɻoeYE9).,B2)=/CYR:(Sü׃DFG?Ʋί)dhN$8y$kr+M|o;ywoޞI"?1r p!k`bp>CmyMx폿?^7?Wg/G @hĖ' ZD7Gi4Q"֟DɊ4oG4J~^Nא!SQ9F,ڈ cK1 +,i adbTF4Ӳp,ۆ",]mH@qON|VfY:j%v9wTD8Y\|,XYd\rNI^>Հ!i3Dd6R*\ bQ]ޏ*wNf)3Gf oތ^YUVċ]q ф&Uttot2)bRC^}>fb~/˷w6`' zthT\GgGEyQhF}(KXbw NauN83>(Ό3NLxxd@D`e l-nDC0 ؆P.%mI H f,EIZ^ xgɘ¤ޣ.U`rwo?}SW?dqaS‰e,Y_qJ4aT*NKavÌ%)NZ&uW6.+(#ֵLi֮htOTq`zTQ0ZIZfsyy{ypYD=SŁG* d鴌{^=0ǭ&këG%Gg&fR ,Y13%os0U\|*XU6n$Ow[x{՜adv:>$zGmpu1+C8Dy-Chve׫$m`rH=d=Pp[]&c~'ˋEGv3 [ 4E,tJ[ebp{t~}{ۉw+s-.wg;s1 Av鵂%L,Yce1׻=4"(^iE<,YOZkX7̊Poҡ& G$כvW~k7%zNVMg,0\|d``zCSP(0tFww E6N%dӪGʌ%YZH.bm/kx1wԍpM,\|d&>;,NvrkRk ;R#rSF;ك$yºȣ:Lf}#X<’6K1Iz !9ȱCRLh>Ev9/&^<^m`zHAd=PE,q<3xmPqn[Y}tM~ ;7i`HMd=Ae+Q7;s/FWQ>R,Y6Ie6U<6qq`zќФ[gO=ƾGʂ%E1Ruk<#cL) GI S7-YtNK|=C70$.>R,Y$6yyNs|j,Yxd zsV2Cic e,YOEI򐼗mf(TqY&)NjҵM4MNQv񑣌%61=%ML)GDICKgނE2,ٍw3-`8vs0};(+O;' nqӊl+ Ԯ ;(N: endstream endobj 2426 0 obj << /Type /ObjStm /N 100 /First 973 /Length 1215 /Filter /FlateDecode >> stream xXn\7 W 8zFM0AE[# #; jZ7I^f="#J:,XzOj;g)QRi N$ӣIX4FKӃcbF25d](pmz$2=ZK=OOM>J,X j⮂s>N :} 3XVݪo.HP, 5RQq#v1r[a-Lr:}ѲSҁvqxWA!Ώ:_:T??5o\ 89?}~7?}Nnj*#: __"񉝒+܅ 4Xo4֣h(jDe(8w0QFS+kF;DoS,kNѵE8kNU.kN;FS/kNљH(Y{&.j5z'b蝊Yw2f5x'd蝒YRfG[&QhTkt3l]zЮF2X:Ӱ(w]I+=K٥J yBM ?+N>dN%ފ|||g|Wa endstream endobj 2528 0 obj << /Length 2081 /Filter /FlateDecode >> stream x\KsF WhcrJMIZ=bѮz8my\ZQFɸ9Qc,Eӄ&GKq$1pg9%Gޓ_~pd4{/_\uyճ>7rWo^O? hh8U|,. ɌJ4O:W.K8q%Yl @%wkɗLX/kY b%^D FeiE+5s[Ƨ< Q׸뒌ڂy6ֆ֔) j}ۛ.Iѫ;K'ܬjJ>f迟gkb)H<">Z]2C+LR(:K%,5NmG~7*8߾a_򴳄rx]O7G$m`M]&E 됐vLjT: Q;^|8_Ʈ/A%jx\H2چdh{òI']ZM;=-j2gc7,CAb1MG>^Kl mu~՛֔];,&JA(AAyȢYD )ݣ 1@r6(iEv9m#xD`@6Ćf岎iz [b>\ۮ7[] 2H)#[HbچUYAF)mVs .V1gjVsGtXmfELl5YY:Fg{-\sJ'UzעSZKqwXtJN tQ iXmUT+Q)! ?">[KJF,׸3KǓ,=o]wJH#>!>_m[[;|$H]Cޗ7 ٩-$XmC˫pO?m:e=Eo;ͅtЈ.q6pp8L{( bd!JI lӬ`fx XuMH?Fge[~}>aD:mHj S XW+ D;D(\xuVG׷Lc 1] &3dzh^ }LX; UD@:Zѯ[ŢxVukf[ ЎϜ͈^P>j6;<ɿjx ] mc ̩]݂W%_6[!f+kxx u 1{H9>dž[t2@{T("MR[M2>x!igs"9D2wUZ8CCkt;sKosp\̳ai7CO iXmg\}HE1@r6bYGgw &>?h- 3lp ;*uw$WEQBYDnlm ^3،=̀@26DH?'Lf #]/+K? o}LX"4J5~j3j1ɽmV?s endstream endobj 2574 0 obj << /Length 2245 /Filter /FlateDecode >> stream xڵY[s۸~[ H$''8DtYly ArIws)׫Wr(g V %4HY(̓Uݯ(!Cep'$ח7ݿnpuaW2:NEq `E`SsR~Pd+S6孾{ÇOR78 1qP»< &I*7eY@0J|,7Qk9ؒfy^㨭k-Q, 8&(8P:"iDž'rE1K'FQIQRj/?d>JkgCo |^~`b&V(vYw a_`C[sa,eE՜$Ъ]>WQ+8+, 41}/iX|AsQ}WS!1Xf57g`2Bx둔8r u r,{I Ķd{('䛥xIʷ{Vd 6fac/=(AvA{^V{EA" SދqK^'e',Wt{r!2Ɖ P(&YxEhVv;2OH0!GqWI%*%CSX2|dQVM( 9p+bȀL)dI-)NE|/ B?6LϓOHLiT-*\gvlвd \T^bHkqKZ M<,b6 (; dS jjH LQ<v3J+i``E+m',C~HO}_t{r5MgyvҌォ%]R+iw˖_ /p S_2wm>qi)Jf?Pg\ E`qCI_0 5R')„4c]Ɯ4 `f$@P/,C q5-.5 (VAn }1۝yY?LJ=xȯ;G<۝A窴P:Jvg'Tgګއ,R,w@:zUDCAyL7 9TjcNql`-嘷 Hu34r(pfNL JWǪz{}ykfYsX:(o-NWzz5V%izV-±&δz,TC?{߾28^)SHtRNY(vmd Xmzk}y).Wɖ谛USf݂Ds"#.hZD X@؎jLOU'CZSGsvw`IĽ&"[;L-"$p[րѽc3BrPD]¿ͮcG_Of&=;INQBS=mMdvukSQVf,{b@}u`@Iƹ㖛vq._~n }R?1OG{hܭy?va&!^>tGç8A6΋ ;wb!˿q\^lVKs$;0"U?0Q^)Mt=/*y_h6Ü虔<|jRWOyޮ:QM,zgӷgG95e=y5 u|{!̳F4,3~ua핸!.,i6 pi ]ux&*iۚ(;m,,<y챦^Sc+g{gϟǝ4";bbXV&@83嚵 \If endstream endobj 2580 0 obj << /Length 1688 /Filter /FlateDecode >> stream xڝXKw8WLΉUtIi:㸛iApy$$d7m6,]w{|󽷋Wŋz)H {o Mu*˿Weg18_F돷7o?m.׫/D:L WA0N6A'j} yA?.rq]|_@&60J@^V->A~zVV* A {-^i,C/ V_G^#P 7|l_>HRw7& ZyRX<)otx"ji|!^ :@gs3|(I:r-BKAEBOjTn9g.bTZ|v}}ܝ.nug:CORCtGxs{RzrHBuв=| 3cӐTW~ԑ> Q"id,1̺/W4H;wB0QgGa {+Da( 宀`+UX%R\h߶X;IR ǽ#;Cm }6,a)*"M> $ŏ5XY!hán֤ %GZyDOBea-cLVD]im s墲pjq@Lky^(Pj/*NHzՈU+]Oʨۜ^PkąG}/" U=];'XkN 9}mt$u<껢ng#[kCq '6R6>h>{o-jsڥLa2c)RQPA Erي%WՒk$a#=KZUXfqq0?JqF쬵-N7K'ɾ.ԙXSz(3Gg,tY+fRkm1rd?WWǻZVE},[7&:]qҖKrcc{<@P{y,m*Ns3m-G]O1!t*YhMd*]9̄ # e.P7 n0J9=7>dp˾jaOz8Te#t!uQ,2  <֒"~>'7UQ惦2Y_M>ldo]$dnZFX82SX!q'&遲.'$b PǮy6,^V M' v1Ͳ-0Lf ,t ;#_ߕ$mMU̹(h%h#Ǎ N#f(':/UӀ&ٍ8NWJ> stream xڥY[o8~ lV]]C l#Ѷ0%)^$Rt<h%9΍r:wOŇ/)tRF^7N ANy Rg;.o~u}tB2W0r/??|OR~y|r8\?>\×$HI <ߧ{(HT]$n*G7tr[~wt]/\@*u20L@N_|ur/ 4qʽ>ltb(T4բC*m-[6Dr!Sz\J!1ӄs o_yt$JtxP ı!7Epg,wEuYV=nCn@Yјuc_W[{X-^}9   Ub7RjX(?y?9'0NXSm"¦2gGeK]`#ҪH+7,9eyKjް68Z=Pu 1P2T6|oUAo:ˍ%C.4rU[l]l0CDR ֶ$/X&,3(Np`vH1Z~1,y7mw!-r85 !Uy0"ȄՈŊy@ܴ4n^EP+vb,WK U[[( ?H^j:oa=A󢡁w?6Y7R\<;N}kcA9^&isIH|ɶ/;=_<{ý` ]T8H *O`FھIIdX##؎W'Q6 CTrX1LO[Wߛ/6BYvM!MS!5`؀7w2PVAfsFxصcO2#󬡋asM˃bKcۿ]M8G7%r|KT^r'u[\~uo&qFW/0OH-!M]j]rA(5 kO6Lk CQV`M ISq++$<~NhAf8e] i4Nc6Rw^2~D.m%`lnMfn~K 'EkG*`Lw@vCM,;GFv&kTnd$U.eIKž(Ԧb k'^DZr +.dcVfSY~ ǯs$NDJFu!B-RaTM:lF\E5^-^d`ɬ Mz3k aK0V;? )4Oe뷘6ܹZBQlf\=G]j?pͧ0?ZcN57YKArjD +o:yA*/oMg $HYH&(^0Yᙡ:n|![YlWdlOUH3/O+я|Rq%uAt4OAHgs>@#Xj_;V endstream endobj 2595 0 obj << /Length 2013 /Filter /FlateDecode >> stream xYKs6WrYjGg2vسRdLB"]_ 4IR!h|QW1bK_zRǑJ{xͻB*t[j}2f"1΢\ٖ1b cqBѨwfeZGw_6\0`B=]0K򋏿Q/=J8,=['0{c> 9$gDϘ9 I"?†ErJ!L? E$`a O;]ཏuV<0?XPeN[,nejɢNPp1A+cV Nuە[{pKf[$η<u 8ƾ1bjGߗnP69,HҔ}''QsZzzٕfBY>;R*fNĻ=vJ0cGOUr.Dl#]:PH~ 蜠PSNEYa8}¡Yeb>}EIfJ3a3~Se d0l YS&gTq*u3g!51& zu|Q3N< tQs`uBp<$P |$÷~)"5+Ѝ)Fq%%.NlPA9:. O% -Y:[;ь ;ՋF<>Sx sJ1 x;KBdBK!Pj*UԦ( e-%>j́< / Q/ DT@`F<J:,pה}{kҏ\07۩8 9rRbYә31#$㩣qt3E7Wόrsws2cEkNIȢa=jPדFR3M'R6Ebelj8A/W.+tnV{J@p|wiJڑWtH``Dw=ao&3D"u|}nM܏Oy##@ s>#"e5קAvf 'd&jH(kM߬M8ҊcRe 7p^ bb:ˠսiz{r[ܯq *J)-8ฎA59DA܋0cd.^tLȩTo endstream endobj 2525 0 obj << /Type /ObjStm /N 100 /First 972 /Length 1568 /Filter /FlateDecode >> stream xYM7 ϯ=ԯ-ɲ K l[h!$9]B$CΔ $4״QaY##Y=$HfM1ΐT4##4:'sf"+j$@@/t9p$%紤9zuNO]3(Ιi4ZҘƩ5M1 s`sagҝRDF)(FT:ojΛo!,@*irPP(!b9T]Z22 2K0VKi1 :QPE`HfT#g XT!3|/?E05MÄt6KMA sFôa֘gcĥ DJi!T zloZ@Y5Lcr'c8`8Q}FK,3,ݫ0XS1A}94\auZ7T 9@&aZB2alQp`(j@Kc-IFs jj{MF[ ($"6fH>w8pr/ 2GAZ~,Y-#խ[-<$W8*&9#Jd[cR2ƄkG+( 0( F6SpH9I*(K >ANό%sB}"e+:1"ْfH !k)o1a-#ńAA4jDi8D6 sCIɅFApHLE7XG&\d rKF]Px٥{uzzkWq$Dˠ$W#kҚr|zNrqZ_ҕ/֫.lZovVr_-W2__پN'ևZ"X9z>zPbnXuN- OӨG}/ C4nLaZpp.5s Dilar09*ݐՃҢ*֢p#dsQrV6ң2(l:ºKDf(ܸ3dQǃ;Gl8gEj%Л[bD7 A5x)#O:<£F]Q^av?e MnyF1!E4,Z/QKpM%l Gg8 .A:9GYiہ8nہN]SV)} A1a1P/i{;9.̊t-G9>3`-ulPz52>ZVWOw>rg{|}kOݓ36D-Bc4{GrEeTymaZ~>&v{|}~q{> stream xYݓ6_LQӧ|2ͥs< |ws\i'?Jw߹^^II̗NLIB' ԙ'w9"o"%ϛ7W߾Cw~$pIL@a (?f:1II`?ftn_}VϾ(0%sd٧Ͼ{',Mvˆ(ʖ쯙?Ȭ͒$I-fd$]Il_PJ;6DRG^- hРGPcc-EUTme`CՕTo0wީ˥ؖIU8$q J(Bri eZcYD/Is`0 JZ/ղ9.~֛5~v2[Ƒ&TmSd1C#[Fdlpv,ZG]$Vvzm۱r760A'3 RoVM])[R&r4z,Md)}~uQZuȲ0Mhn,~#Aܽ4MSE=[gsWv׸񵉈H/EQN2RM ŝÃ%ʭ"AdRE"Nx҇N4Մ"#AN;3,II]0Sq M)ײjA1uT@'I'jUT>'&3MupapȴI ȥʚ S @=,DC#aDx_y'3#@kW@s`j|wZpdNY#c%S,?pBT$pMb+<M~N0Cr4$MEDovND ٩`bg'*Έ@dxʑ$7藢jmyiB1Jp'$qxvVz<4Hx 9xsy䕵!cQhEyľ-'C ]$tvu. HlhB$=I%|`gu4U?*cS8O$#fk䲑juPb|$NS݋)8E+Bpڪ]YtY3&Ek.l"),c39:;jLVǗuY;$'h3Nc<~8`$bgK:ɏ₺6aAKL֪ !A)UJrY. N.M(% Шj1ώ->",wQpĆ;NMT{lB/[`K{~ 7YMꔾS㸖ۅ8PGgD -ޛ3{N)tE$x3bP(PBS %/Eb2G|я _6*VxQykM!'b(E3ZuZtA`=I> stream xYKs6Wr\D @8Ɏgڙ$*U`H-Iq~}h)kOLjt.շ7o.S$U\7 I+N( nE%]+rJE^'JRl՛_]w|evgILl1l`e߸SubФtk콹~k+Ѐ QJo4`Cn! 2/VhL3%IꭗtWeXŃӨbf dR}\B_)z}ȍVn^,YgIl}Wj-JӀiW[?j~SF'\wyTn?ݛ76A( ,u725:Y7[߶r]4a3G=C!h2EXwp~wl霉Ȫwv߬nܩ[Um\01T؁: PJ#[ד w qRaU;A`>5 "!HǸ"s#$E9$c"cMMfH`h}٣) Eeբ`X84䱂k&r XEkǃJיn%VRT:`[n:'I܇oS ךH})oceyerLpGGi<U˸o Z2|Ar0T}*l|qZpCE޴6 4X%*=xtq:l,$QjgR4Pt}mu^Do-;a[?|WQܙ헔U7ÖneTh!{Z5]}7C.r ؼ}4}п<1d P┃X[T [lwEun ӦLS hf[w:%nfyй?xS"$C.vt 1d=,ス x7Rc]އ;c3뎧<{ ;y~ƥ&,E#pŠC+)+IpNх/CZq!HjR|#EίT߫S] ,Mp!3qC;r5}t t~&!|A<Ҡ=Gx R}M;_wK-j9.L9`+_|=KeLi|5^m^xB?P&8 {4jqUg26)k3vjV ([G^RHNb6էE?8*3S)vS](|[筭N"Z`Y}&j#CDl$aX]?2RB Y,!yp\u Dug[AgU<|@#|Y>q@a⚽FfMB()QC ?]l7> stream xMw6_ޘ/QLk6qO=(kkK%M}%Y&&3Aý[{GΎޞE‹Xdfs/L+F2#oz&uT|b7|Dy/W'.~P,ƛ "ߧYFnfU,PΝrDo6`" uX&(1n}lAdtpƮ\SAz*/Ά3kH2|tsaI "hTmyQgEKVwYjILk 2OgYdEY-h^ rs.a'bn~[S<wz>$C!ū`)2vXE&,#B4[1pv\JWAQo([+`.?In Q\`=֜~dڻx*dZՠΓՈC2_˱BC9V6qʞ9;gp X>hE^7KsPЊfkA:}u=.AŜ.~9^.d1fo[DjR-2M`YQIDzB<ͺc[.7cxp:)Aft"N#g.U8HRsn7eW.TUq9G]nSk7HZ|.8IG[f99A%@tsjL!188d(\KowT[xEq`YnP0zq:]|eP9.OH;n'~jK\} M^&$(I,$1Mt 5ށvq:u[DܦB%};yI< NF7YՏ1BW [n }@S%;1MDlMU;thE\;6#7|7\(V#tN`O(ݺ+@;6N:bnD5\([|P!6CF2v- o(@:=ʲsF%Hkel3-^. ׈N<W]AΡ!̲ӡ-Uq^mtN 6քX} qC覵*,M[ O/iwU ~5F DZCمA j+" w" $|Bw8Bi8u;0Gv:V5üP1  ҆"|TՏ^&?&:\'Dzϗs{%RRftO7"hޔˈWkD*,_HPm cwtQkW߯_]kMWn~awe9S߷]yoú[j] ;ǩUń~wMU3z>^i^?L(CTLy 6x6 \ م 6GbYeb;A endstream endobj 2663 0 obj << /Length 1244 /Filter /FlateDecode >> stream xYIs6WprfJ G']gՓ-'\\>BH6ro!wa|n:z{/B›ĈF'EAyĻħ\_Hd..:`B Du.~?5󫓏Ot쑍!(Vmͪ T%{M$|A!C!Ȭk5NҰ g:W#ƚ=]G]p>IU#tnvQ FCF9!}^}7_ZpB%3q٤p7բG|Cb((bX>˗ǹcqX(aCy1HXJ`\8@4o|mG380@2쳷hS3h@+6KWGels2!  EeGGPH4FLY*qY~1nu[׮(ՍyKFOdRҺ*$K HdUԝ5 A:z\w ARЧ0s|Y}vپ2`?k3Q(h`f*{*6)Ƌig!b|erH cͪSӚ3xӉqǷ[JR&O_hAO2V@m W{{^,:Uh+?)F͎SU9s9| A./UŹOVjUrW 0 P. +T /%2n4Z~#QZGcʀLF"ƪΦ#onŽ<}AWz{L*KQoNo7PtۅlSP .| endstream endobj 2668 0 obj << /Length 2987 /Filter /FlateDecode >> stream xڽvFeL7lxQ^lglg`Њ23>adl6kj)S˓'_$K$4wqEwyQh|">:ӵ *OAVOȐ}N#8#X gb@agCD~n}9aDË廳ׯ!ʓ'h@<_00^;rSMbV<X?pH{%LScvyVq"ۥbݶ[>cq~Bo}_|v#hCo˺b@}%lӑD2Aǵ9wq-."Cbf'3tv1]kt쭍[U@d.+?]dgə-weޜg)?TWI?V_yʍeV qU 6`k504> 75jW:(~iՖ5e۲|M8ښApUvww#ݡC!Gx {lʏY]>Nu*r^ZpZu'to| ƪoZK1p1Acj͆'Ց1/X| +Smc2DG 8MMoe*Ͳix no˦WFvuV27TF6EӁ ^{z>TҤdTAuve:Ǒ򧕈!Wt;T$װ/rls9MBA]7 .+6&G@8(^llz1N:AV6ԫV .7v/I aC:a)Z&4^EFh&ⴐ+G[+x mZ`yQƹ+^B@_,~e'_@5^7s3eMدsw$;XVmj9neZȋ/#o'TūE؞L(E9`oX4#ю<5Nv"_2~SRF#9xɮn,mPw Ě70 RT6n4=Mi!֗@YΟqڠMwm`]%o>+9c!A1:C\v_Dc94KRa)-{PXIH+ЎgXP-Tv /=;P2!=vl AF\}$&_ tNx:"!kd# Eʹ#)i k.%@;pmHǟO: !bg Ɏr^aDzpYl I\˞n!cɭ퐎@Wx|XV< ,nJ6r2 Zves,d:ڻtd8 B2/ nR&u꺨}"T:MKWz)*ol.[^P69Ż-G)euBP4 Ir9pֲ̋sʌWґ2a/{|UMWDWqZU~w'V'P5 ٟ \q^ɤ`?LJcXNE@B6~/c gTV@rZP6Hn]ћ& #uJ1R6c81^=[uf9EAA n81rݗ[9@wB+_GV''2r{$q+;J]Q i,jf"TZc. < >^ h [vxwN+/!?Đ Hy QNgj0K|E2!BYapŨw<12:cvY; {v*`@FЎOy*GiPLr m Ri⠐е|%5nu4GV0`OsD?@@+9.<<+prMmrG M5y9,. `;A3t3 3w(qwmz&I߈_Z3N~0rqk=zqÂbp50 ռ $mX}&vd߽K'=&ׇa*xh|3" ™>yCB|}y?(sK .[K{(3jQS}Uሜ |zrrP>(ZjtŦqY)EAt]`")}(Gp|ۥFIu~8K1K%o9]Y b }}I\-kJ,+:NEP{ 1H} C?" ص0Pj&QJb iEJMbl.U  n $Q}fIQM7ܾ'&W|z#0,[i*)]}No o:?ʨ?וC#<2_Im{"7{o6QwVpPԷ{;g EY/ɋv 6>v0}r[j6 rIuŽ恪w4VGP}N-ڑ' yq 7='OmqM]rLIp ٦>Ĝ. 9ާwi /pW=[C(y[xفLIu5Gz:rץ]%&̧BzѼyM  v,l#AqDzcLE {Fǃt8<-ϔ^ĸ+diҖl⿦ulH¯;Zokk=ZBA:4*-ᜬ\H endstream endobj 2676 0 obj << /Length 2555 /Filter /FlateDecode >> stream xڵZs6_3 @޽8ƹu}("o!Q~᷻aB'Ͼ~IB~( xdHH&]ݞOÈO#IoL͛7\`vŢGŊ\ٖ0be($tfyxw^~pykH]>1 B'0|~NÄKvj""N"_LuFJEaĉ< q4K Py3izymY+^ 3Pkh-} J0v=X\hɼlf9gqɫ7T:R/&׵9~2 * 'SHExBu% - N=fDn|O" H|AzF4IRMV0J V0~\jGOϤ /BP"m'[]1K]wcJt5.yo(g>&àLWg$n *i$ nJA'<$E($aq+=}_PC҈,oAx Oε'֡?H(ȌpDl:x{g_ӷY=[Էd/Asx=oILv4e΋O2HDP:͖n$R ]g|n\yw6nDQ+c PqB8A݄U>)6ۢxmZtN,UjSDs`yUCֵ/-,Łg b88#hﲀ_й̴Kni30a5Ή3[!SNЛ;BcD168w=hĂ]7ԛ'K c^,2t!B,țz;$r,7wpF]e sQMyfU?*pOxkׅۢy&D9b,laIdd3ǫf˴|f$eZ\/$g62TAftmiҬ7ǎ7YKDŽTr\T67@)suQrQhfZ֣փYA3ޅ`6Ԏ[IBؾVmE{X q!VYrm&¹LgE67smzYN ",N86;{xJͩW?}x5%[(d-"'s?G`rQ=#+>x<a w#ŜXyCgg4@D ]L>8@f+[:#Dwj |!s`sh8IX2]z غx<yFq<9`'1Ƈ)33{DӲHB鑄DvK(@vgycMwM,[*c\=.o2{;Oz-Nn\㥫n\8 &Pѩ1D6aX);-Q%Βj'5 O`Ɯpkbk")$'('6N,4!1FI2gR98YAK 7 1p=gҦ+؅ZaА¸t8NrC1o\ΚbxGXPp'v˄׼nuFG0R)N"@x4i0헴o9e1"{.FDDȖSHKgoUj 7&=>IB.7\QR/.ȷ!_23~t mUOx1a+!q!(%_DKA8{67萐sԸAmFF*l}Ъ#6ȦUBii8>G诐ɔ:?2AIN)$LF^n)_nt"0 N8JXAREAbc`PL &MҬL'jJM W_&䯗[Q܅5V`ؽeO,&m(*Hl1d2h lϫD8SCP%iRt.!D>͕gt+:&1,j.3pvl! |.9PDPFNCB!89p:_E|J\dm^ }i!y>q%:ς+ x}I8_4pc+ V! LԢc2"j \j:]u]ީ1{egy0 ^kYDŽmyf PNg!F[h97hUggЛՎ{ "GSU[V֙}!cb}Ka+/B}iUBEF$fOMBru'ᩲ{_zH׀/zt}c*޽0jNZn#|GŎ HK3_ O+ KB@\O i(y@li endstream endobj 2680 0 obj << /Length 1688 /Filter /FlateDecode >> stream xY[sF~ׯ`<}:feYTIԙ8I]eҙ$E@5({`/Ⲁt$s9߮ucaz'|v9Աk#ud}i~}vX ]X2ϟ_})~Ż>\ܙ/޽]|Y~v9 ȦtׂAR/hÑ}l͙{u\]U"gg3BECKp7[<{maD}ϺY9A;"! um(o1fKY"\L-a>q1|6>:7ۤ.!ŗ]PX>ƙ+y]<]oy}oqTCK0g> 82(<+,j ]KǶJ|ʤ7PpqJ(99kP/v&t&Aޅos4'P$yv*ZPҥP2J%aHŷSF,!/b^IF5H6(FsITNc R-NЉp^*\jiHR|D\OI(E1o(q;:v%HBp! 1ogvKL,TkId^lb0yGAa*bV(Ⱥ B=Tt$j*#auä^5Ё 9U#8Bk</} E&pOP8AF{~0`ʐc{Xzx4c<0BԏEKXhK "_# }mn`x$;e[;mAMAc*HRLSfHߒv2D DԿ/yxD~!퉞A bO&*B+ #txo 4lEHF]nYGq<ɢN &YlM$ }*F[ۧj؜H)xuzsyR5pRmj~ӻ0AŋruĒ ( 0pbs:HwfYwgo&11{:cJ{}?D[3L#TaġpMm~ȂQD~U,E%i?uuzRJRmRJ|&aD] Ak:܁@E2ll*asʸfhSl}5>T"0C !GtO}ଡ଼8僽/8ޣM18g#_U~5a(2Xk`% XMN4m|eFajCT)obh~ GmMr RGTqc?;Cju=\f{Dv=} AS5VI4)9:;iM:rĥs8F@5/,SSo__cLUv40BG7k]-N6 q4>Og#`t0|"u0CNB+,LQ\㒇frm yQaؑAR"a0F i([N?>v!@ĶFpE\x@+Vm4u AbJE(#@UAP{HI06"ukߔM_9 endstream endobj 2685 0 obj << /Length 1675 /Filter /FlateDecode >> stream xڝXr6}WpRiƂ ApRűS2LJ-6}@&)Lg.:.(;w s y|9_OsMwon'\^x?l<|?a `0f}^h# ;#bV/VpyB߽]_K=8r=u"{︈s5s0"QOF\faXll#cK߂81 OofML1P5Jz,XW25>޽ж*N[Lgu\ũ,]M1Fg7q03m#\<տNV*Ό?/fO`:6*6m&bMW ${rUWXY{jd[_i6wك˸tbu16BF\G2Ob*TL-4`_ 7QW$4/f437JFRF6isfZgUP-F_xX-DzSB9bcpEE-~C.|j%LriCIɣV*Y4Lpdhf=1'R$~ Z&,݇ t~{TY;יviuCxCv70L_Q@'`w4PYZ-\vT:.au`SF Yl;jXQ3 (/%x/1%\|{pBtJ.Wy죀ҟ2{:8 梀K ٻu U;?1 ҩߖ([b9T3)8V ԧ$=lT$ \MvAIBJچϟjD\F .gXZ_7emNrf1ti:]V6xP;gzzF 5e-v2?rāh*|6\ՇTP'YhW{Pzd#u9in qi;PCE q:-pC83DgWwc 3 qsT9\6\7{dWM=9yA#E`z݇e1Ru;%>1, c5dJ:u%օ'nžɠAPV:~jۈt)]u|*[y,>mqjʦ(Nf-J[+Qh@& 3 9"}#paU^u4$dN抦L›:( >BC>V4ȣu ӡYh9} Uo3+qcql#j> stream xY[o6~2X(){Js鲭izCEbbx4~")f0  T|txwn)l=Xz7{Sn- 01X= [.|BǎAp]0CʑG_JiP7y,u?haZXM||nS.?bLjJZ`rjj#DĘ?Oru]^_ț``gu vyY]YI.>'Q""1Ȕ";sQ?GڷT(T"%jdZuZlucR 7Ժe%ꪯN N2'CSgɆ܄YBZz"ZC9C.bnT;]DZN 1PKٶ;7ݤ6BE6 6Eɮ5S7@:LNjP:7x.ҢtMa˺JH?oٌ#}7L߅ɰ"M*RFաN~mEmj4| 0Qw(h@*x{Jrr[sp^Ʃ&3ɡ(8h/ۺ?uumui8GnRE |Fw 6a$Nj'~ݿa~7J3 ~dЉ{mP_ls`@iFD w3jcrv?gg!5a=>F^@#r0H@^CQf.""Bh@a5]"Ա0 T@Pθ]SMg wh6U&>@d m,I{)VvUa,JQ' gӦnA<lR2 J=ZJpgQٓ|(NEaPnߎ8R=cHˠ cK$sZ> a~sEk-a `io6!`4ArI;XON aS6LO2=D'@~࿴׎E wwғz:~ϓv\dRUD_D*zP?/z54R(޹II֒"O5gMQֆ%e"ZyReboxײ[}s.q0VW/TeU{徐UgoInze`;"wT0H! _͏eQQjblsX-6eOV"EkQ ޝ~loA1-ھZúfH)h(;ZeMqC`WpIGë(\/A Jzv`t 9T=7>NtI|a@ A5HroY1MšfIcUEu8p&^WR-#SVtz}h-4> stream x]s۸ݿsO $''gIѵ3I&!ԉHIC_o,^Pއw77y0‹( TEa@P<|,L'(|{/wW?^:M,:Y m )+ۏ])Nx. w~F7?].Lk1 CoR/=J8 ̵'$'RpWޗ]ЮmbFI)3_v:߬4 K)\7 8X , } r &KUGE~. t4-P%k@1g~Zxxnv8%|qW#%EX `5P} f췝[W5b|+)^?3%Yy2]~刃x~*#4%~g_&+P=RhxVst ,~y13mfHPn,X DčhR9z{X7szWoTZ2OL!8(+ PE.g ~.'6Bv[O燥~]zB8,y[h 9d NMk$6)|>0BI  ˙+oE'ɍcG8pEh,H`N0,$bG8_cGHk n<Rx1|(A(#~|)yf!5Rm;;ۍh1a>n,1n&a!`Nt90?siQob`T|3IAC3hҞTazTJxl zRJ gs4NY䑫46GpTp, =xtkѣ?Se=p픑w-g[Ě kڊ'p#&svFLTi_L20K`Jr-+C 7': &|:sJ<]i`9&K{]I N"`z]lzb`Qu>Ltdi/7%H*;O Tau>LtuX}1Yb 6-ai..UP(5>!GM70 |џ載D (ZGH3`0zS}LQdl?F"Ƨ_쁊MpUzuS/2(zأVLkXʃM^pY%uCi`ñ"9c0+M$MSZy3 vg՘ "uŞֶ Wd̡2m3գ:Ǵbp`44kfw<0J`Et/%s-F. F}Sob`2vl1 TR$CZP$fAUW<.|+Ɍl[\!evA9`pۛ5 4?֎%%A(=Klћ(ABЬ,f+ԕ^-(ڦ\w~E~F.* 4y cuf:Ox6)*ؠK3Ȑ >\4eZ(hS} JÍ-6MtQ$`3pyD[]lڿsR'b9 Huu) gh#aPSWa.OljX71چqBzљ<~pX\&nZIWj[Mݔ<}= }s*@Ftʏr4]H.1\D1&|I8T3E)6 X_>0W;6 T`s"#3>>"8fAsmђY %TVYAFWg/C?mtͮXLZZDb*b$"HWmrlČ Ѥ&d'B(}!_ncq=tn{84e9Qkd?@9uQ{@dۤ^=m Q}_{4TN%lBeI.nvy2ʹ <ye&fUH Ѵx;uImr)9oʪS6%t mfqeFPU 'zI3YQv6 kx1Cup,qS R,HNk- 4 ' HQ:WJC|r8כ™/22E9NOL:Lp@#gl<ݙh8Z~r)mR{Eʠfv=SC+ f<%`>.rTLCy~ endstream endobj 2599 0 obj << /Type /ObjStm /N 100 /First 993 /Length 2163 /Filter /FlateDecode >> stream xZ]o\}ׯcP.9!`h C[{U,ɿJ"K7pK[*[:'ʞUNh$Q  '4ժCJ*c⩪אzF1Ttc+VFհ& 5*nI)=z1&.%c]L_I, l&A҂5?a.h5I) & [i3$ cV!z\8ah Dx5IyCI&Ks SpxR&=BҒ0{Vo0Sh$86s #Vl PG8iO&2ld:36aIJ2Xebɫ+iUHұ>~C1ؤpUkɅPLwo[q$nu !!6 8=ҝc8FhBU=I6cώfkL77GpD`V̜yEhfҭXs0,1 .Ji1[!lA/ITcD`zza,`wdLGߧdGӀ:xu:Nd4M@f]2E:<\?.?z{pq˚4bR*[PO

s]f/ǝߒCȳLW;r2EcQGcOR(H&:D'tS&ݔI7uMnY:g9Ιuά}Md54 +>Yݢy񻰵QbX㲿gխ't-QP^p!.рGY"P& h*:纵1'J>'g=peOoLXD<4w8wG_9Gq' 8g7U\{horvMx߹}Bo~{| 7wOT aI3B 4j_8-ޗjc*KxMvvmBmx-^Ymolx endstream endobj 2720 0 obj << /Length 2380 /Filter /FlateDecode >> stream xڵYYs8~U>y&άT "! ;%x_EJ\N/&9wr7OYw0r$p(wy_onA|'47ov{uFǛ?\͢u?K nCHp#vN!L V-b7Kazt(w}/M@$B"azAv HxIw45YG80˸l6`Fhq(:[ϊ5jvu7#HGM&iafI`$I0aKEnNiFKW,YM)L~2_*M㯢-8ŻXދŇ'-f^c4X- ̫r MvaךƠdWCoӁ뒂{ڈVUsY,6t0$*D0bBQʮhnӠj(}W9/W X)vfWs 9)>\7qq)baT^!b#Uؑ Bh*h-,n;-BN!Sjx/(o_Sr8iY -m9r*x`l{J`D |} (N;9F'?|G ( Al/o j\%JuF*ŶCEtU4.Q vJ& Rv%)ؐۡ^<#wKut NF N1 >eݫKYO.ֻKҬ@ eΓWMU5ca&8s7F|Ժ vTmaZ۸hCwl}): L0O_"E3K)< dkTZNLǏ(_$ #@^+d}Z4\< 6Z#pڨr7Q^{m>'S7*sDž>f;m(QGy(0j37(m^*;+1RQP;i;g9_$S * 6 |Noݿ0:+\*f{~%Gz\69l6Xt+=N,]tMCg7K\+ݮX3=]v*tG=J=H":>ȣMAn}$}fqM 2U( w3a )?I2&r5fh|+0 F466Y7cv-!s4҄L>Դ]6d]w9ZݼmZPTU /0mxVCMfZielnv]d?= _Ȏgk) a8tPêA m *9єcȽ{bobY``>H썪'd(ŷGj$p)m1&D9R#Ti 5[=-M&*15 l{#; d2-SQ&nu2n%o-ɓHTlE::o63U5api5aW/bU .*q\=*()Jy ga] a۠330c! FDȫڄ-ebΜy0%x298:霯l"hiaS5$|ZUR٣FvS K& 2QxCۃl} Q 4'k\= 96jA*Tfn'q8 r;H #nqz>ˇml Cyc endstream endobj 2724 0 obj << /Length 2243 /Filter /FlateDecode >> stream xڵ]s6='{&fI[6l{^d[u+K%Ǜ(Kf'+A|`9M qiJhZ۟n~=ڗ@~ & oFN'FN>2-* m+;GŞfC <>wt^uTT ~HRo<]ɶmP(x{RD1gRH3pn:))!rVZJ+uZ1 g\FlG*.->s0L~d$G+jcD$j4T rRfcJepR(B&5`a Q˗]>zþOC)A-Z8p9E'ԫUؒu$-9qUP5gEn^C;[eŎJPVlJY* Vgm^L50vL2{2Da(<398KY,Y"L6˓ +]o:qrIU6z0b־l^!dN)J=g厉IGXz|<_)l*Ba[绅N$p]$,jjӽo5W9(kH6z!״ Jm<HV;Ypx{ j6"3ZUё"]Ÿwi@%[!ŗ6,}*.ً""G1PB|̉r3 v[t Z6j+G"}#@MySqS<#|{;# բOfha$<-E@XN1\ D,}F%7MH&!5sj\*BF۸ȀT!U'F$0:<إR(YnM%9r 3x"  1ԝ+%FG9b ~W򷰊⡆*ϲb5}ѲVf/MJ FKSլX<ōx t_~ {erԺ=!䠏&B;wCׯܵkO|CN4^"N}Aq~J#hLcݫ3;@%אp9<(o.*|m% D%UXt?/),kN!߷Tn()jog" ?5m}4"VÌvF o y'|d˕SyݤnX ?Ru P~FYgA8Su"{B)RuWab%?1xl'xh-c endstream endobj 2729 0 obj << /Length 2418 /Filter /FlateDecode >> stream xڭr6aT!ds~F T𣐐][>ʵ.3[O-:+{G&O-M`3Hx_6-5f ّ&ʎ"tlȎcLً=؝ ͷ4h W)k-@sF;Cӷ(JdV7BѶR#lu#_A=}z]]6>dHAJ>1eJ7"dn2Dͬ}o`[mE HZ6T`6Ll`5HN/}kch0kdוmW/s4?AM{Z\ |cv/Ӥ;t tX t'Vo0o\Ev=yԽЎṥA`~q߃LE|inƐ @m1|NA d a@&p>{໶)kMVYph`Wgx@+=AYoo ˜@3G>,3x?YY=}-MЍ"w=ie }[:kկm`v(8bie6h_7ǂ A: @4ak1z@wI `qePZ  =̛n$O38f^? L?IUBHfbfDkΘۼ(XGyo5Mha?|xq'bA\RۈS"z? z_+!HИ\m׭yxP(ϵ6]*՘wAX/XZ@2', ³٨nwڀ Z$0@O}?P3+w(k%}hʐۄ3T}ƌ_-@1x4 ,PVS>b44ro!iOq6I;EVu%0sgkN^AΨJYUC툈 Ķ#Ӷ}Iբ6p5Èkr4 ;6cKCRmոƢ=(tm}&[B3E~($YY̦4{ʐAuNwzO̥(CW?ʉ1 &~ 1ӛ _G 8$җ0q]I w(xDPB6nV6 ~8HKWr<t}9'rNӅdjMDz۶7Nwj'9ي;?A5YA״|P`.ؿᗹseRKas3g%P)я k&`s<8 endstream endobj 2736 0 obj << /Length 2090 /Filter /FlateDecode >> stream xڭX_6O!}%E"{Cd7"M]EȢkɻM? 9O"M_p8$g3MvqՍf&Zf2YLs,}/-i&h*d*$MݾFO"Oɇw_ݨH;Sx{{Ša N4'\ $a_nqߛkzqQB)y\@ K(0%7I.89I~t1J@9Z>&\%e{j,'$L]%pQ'@rF(,[$AԄ:tfi _)L|uwnTj<&M-qmPR޻G{-\Q L7L};fkN7#!DPBH!抈H9JINS 7Z|8{l weܸPuz$OrlʜjjLSvs0Z < 5Α,pQcVawkH\Lt8ݜvuo}HבS9>N`<TG[;ԓ}/9}oZмX}W ߸jM{&8ZO#| x@ uɭ!Bn§ lpXО%7 -9n葓:QScXcn k=mgnP=h<;Zvq'rLmGD9~6%`-͌@m!Gp96s{x.:nrqP]eakdi7K<밀g+qPP {`#@PBSy7eMO|HѣhӏtywZ.HZ Bp!w3IËsZr ?hw:W?$<+)$aG-ʩ9_9rB]R|ܙwLe.V q'dµyw>(Ͳ,Qdy@,"&xwfJ`D%EdAZ8s)'Y )U u [lwǺ =. jZ,4BQ^6Q7KyD" O47}`\PJB#/ AeJs5eGG[@`';Q;,oꮇG* xۑ+F" 9%0O:A^B /X〺@wf &2ݟ4<>D+/6Wza|6k]OwD [[zY\:y @sGnߙQдcX2Z?*oEfҙf|`\6eM!֩j{P*z O'K@+ Bvu8HTvE82H|4aEUY6*59Mf'aYQAr r/FTD?k2"#MFTnAbM("Z>B)&ZEв7?!L!Y9qMyo$>}hqCiw9zfå* g<栨a;6`~A=}h]Uu<}ٟu]ƀT#InOme>-V8|Mwe^eCgMLGX?#7+; ;gɌIz~ߜ endstream endobj 2743 0 obj << /Length 1924 /Filter /FlateDecode >> stream xڽYs6_{f"כθsDZ{4th 9#QHD:bw?g ~ ;1$3H* ⌴zdt9g3)ÈyeC;ٻx6؆aM1qqy<|.vڔm p6qw_pw;& 2{:MPrGb&jYը*}K0C;8щbZ.mpb I}Q`D@\1P,I"\#EXۦyl̸A_.+@Wjfgq~ڢ:fHbQ1Md!ѹ|;$f7,BU획#B"%`$w׵ȹOA:a$̦%Ery(ecP9oGBژW  ڣs@l(R#c}$C"yjlAf]_U5I:3͈J86Č;[q_q|b<׷vHA#XU c`ҨUZlb.M7EJB\dJkR A&[lGo2,|#~!9H2+йL7,Ipu}sg)vSrIꧽ(Nbaq~T"*%ώa8iڷG{.;>w_J~| M_{mIZnƵ6bѦ7ȹ9.Җ [yy˅=HS'|6~Ɗ㋷Sx`ɯ`OcW$ i(%/LJC L6-B ,[`9/!WXGҖuy ]HmǠt/?(H%QO*NPv!& BYT̈Om(Jzl=vG(="JS6A-qtLƵR$UPIIUYyD`T~:1x颱#ƻտԻ%=@5hjsd|Ƴ@vW67}?&6kNt\R+(zVbɞ6;x8y}葉%ILv]vxл)~=yGrк?t2J]ǫv;"ZڈS 2 =Ŕ}lQ#<d'&H\P[@$c1zxǐj\{1IK) y"pFG~q3z0/'v 3wD=f1 bmfq7һLPMJ5C|*nZ^UuH!v|ejH r>{/Kud0*FݍI~IFѸWa*&S 'I/@j:1ή D|bv q<[TinIml+"y2.&yOq):n-} w /̽uX{Q ~5}1)lm2bhFMkΝ2IUI1TI}J`I0: HK; ̙ϓ!t\^C@?f*@,Yhv-/|]|KՔXuQ].Qp5X UMQNJ/!C֨g.6'|4HeC@Rƣ2D©I ./XH endstream endobj 2754 0 obj << /Length 2101 /Filter /FlateDecode >> stream x]o8ݿB Y~ܧsS'9>8plWRͿH9x2ڽ3p>UͰR@#- Ĉj"u0t{-yGH~skGm.nW!oo矆T| ;Q! 1"0sd S 1G7{y[l-8 ud&#f Πn[im(B-78DDrN:NjOvrlW-jyqNgë^BӸ=١8/QqС1),ۧe:gȶ@\p*Pɠ ցp d㍜%lp0͡?T!0HE5HDa>YuV"ӈZƋQRR6*0vkH !ZX(3VPVj& fEJc";O0o?&D;]ّq|NT;$瑛O2Y=fqd*k'>nrd&F2fh4Y{2+ :n1BκGKЏdyţCdAa%zYlmwlkgzF~Fܬ%΋a8$M#Ϗs)IUZy*$y뼦z%LEt?J!$@2w9_vpya;\#XƩQf^;ݷo;xo-ȴ*_9"RpRe)8EZ V- `1MFaKjR32ARfv&η3!"tnq3[9dĸFDS0yg^22`ckH_{_^Q=Cm4,+t苺]"XmoGo}޷%H&HJ=Lr:fBhP^3~]讕J' )Sj큠:) Y'y,6e0)av 8%P7g04{cQlBI.xKNqG6qK<-̗=&&5b\= عaE& ;8,l7K r֠} xڧ/{ "6gE2@y9A x З=Oڄj~\/'Q&Or 2JoV n91f0R;s[b6ݟ-ё5Uϖ J6SYڙm%ˎ||~L;|yQP,~3n ޝG7L^RY?SfL,÷%(IIm PB6X-R t%~Οg\*/xb=pajڣDS)P)jrs;< ׬vO<C]5l3$<"{Z/?|_;g|F5y%"#%N2*-fa﵀Z[,W]"}{'[ VaoLu^1"X%Xo!R endstream endobj 2783 0 obj << /Length 2545 /Filter /FlateDecode >> stream xZI۸uU C$HVN=NSvVR}DHB,br"o*X볟SHQ[wb->/뫏+KW ?Uͻ|F [˜ _(Ȫ<'Kw_6MYese7)1[fOݜ@Mk:|++c e#N:wO{/S_ޘ˩6S !0"/~[%# 'J0BALÔvхO`< S z/Z ?bmRpȪy0TU2%8ڒA$,yۃ /bݮu0@ؘg6T`Jk1ju <dh!v;Uaw8f\›\dQLB:Nw %Gy>Di' Fb0G?_(;hNP{m΋c.|A\g"|LBguvӀI LCL$۶=i< Mu4BزV,x>N}Wv~ZՑgv>зR;.sGi"Tp?Nԇʜ3K@t8ҳ6qd(N\43^/щAڊKsx%Ѐ:E]hG-@vRn]z'W(mv'PVh'T[gj ڎ(+' d(eZ(ovOO 5lZV67u` M0ކ2Ǜw7>1HDq0}RmwkE뚸xόwSa2h7}'=)+;[MìÇ*>' q̺;eSRm7fodr/yG텑ҦȽÀ 鎒,yͦ∕dL\uVő7r#s<<2tn _oo qкy>}^%pz2[o!>.CpC1Φ0~DXBsox?1(d:G@i)nYUSryꌭS&3$lA\/@ A3}z~/kr.̥Ϟ!14a3j( `նy8AL183guНHݧ Zmfp%M1ccnB=8=֞&q:xַ&D4 uTzu0jPrkt<ے묣+ PܟCFʄ~wF1{odPVK\41wZ QT wV,kz'^|SSp5{s ,tݵD8< +&ƚy<4T mt !BEe J8u$T'ۅfXSlBu#.za4$r_8SX03pq V;uc&3|#&oynPDbGؠ3{a, N겕:gbzB_3셌tFR{t'sF^{%{!V)&?ԇ+0oH@ajNCS9$?keS|v endstream endobj 2788 0 obj << /Length 2083 /Filter /FlateDecode >> stream xڭY[s۶~#5[$=LV3'0E٘PBPv_],H&kWS?XX+( dz><(XiY"4fRj| է2N0eeFᇋˏRp~u߮/2..~s.Td=ԝ/1f=/MfH$?nf8fiH9ԗ"SMc?ŭmo]e.>A6"X=G8\C΃cDwF7.?G2΀aAIy\Nj}lI`٦*/suUGeb(Q"מv9(NAdQK/$m<Ei(y%l2;yxbl@'@lT?ܠc!5SD&ͅRwo^҂92W``VxP9bnzyz4{e3\Eo+@^Gw{b|Y깞/ +K`v~7wgj i{I1umv!bl< ,ge$\n/ȈH79𐈙3d+2mj \W}chҋDǵm0KwWG7lj Y)̹pOlj?(5t<&,gM%2}jdK2Z4ߚ ~2{7gkAWخd“-01b 7یQ0@k]R7 ?!]\<68BȾcyW^@t8ʔxSQ] N3Lը^$'~w%X!N{m ovM}Y 7sYNtb^YuZB@C9&zC/S`8\cdzYp5O[pGi!OW$8_Z endstream endobj 2795 0 obj << /Length 1929 /Filter /FlateDecode >> stream xڵXKs6WEDA ٜSgZ$=@$,aL*IYq]Nۃ ]{'g)RҀzk/($a-rϧ-]̂ȟRt2?}}~VysyqvIN'.>x>"iʍFE[x8l$%raJc|/H(JRN%Q([l͵eo_m#6GIB[֊Ygծlym~'8<me)MR0Ulz݆?kݹ|:~B֊gt0lrY¤C`umV vVXr^3gfKdY xt XN2rPQ"o S}k Zam)JZ2zƁ偞OZd wܞoWo8J[-˻NClଌmP~Ahp5 @Wn5T7;jG­{+,*ʬR:svj]&|۲1 |SV! s#جm٨oPP;T͠ì9YoX;Na,wEO՘fP)ZKE7aƱUYҦ]c/]pjZVpfߕ3kgɖ W=6Qyǀp8V .hШ–[,#2E]0+V/ʊgFn+BCР( {}Jq$B 0D7UvÍ5// 9ψ su.yِ'V"l=~b>~b G,bXy "nhcޜ׷2%rN`Z_.cen$u&[++04=%;V* ց5;rP:ev]բ;OeP^g !IPc5#RvPKvx-!]Q8E,˧fpHuwuFGJ8e7{]dq1l~Fmj,FybmJ@IަQڹۈzUFtdZ`wf+ ׻,2?rϟB>E|11|=vTi3:{Pu$ػ/j^k] RO.S ?6o{Ӻ'AhQͨ)@jgAE|,͓j7m?H2pIٮ?V:;pպ'oY7j͊9)3Im$tX)Gei+|n xZx׼p93mQ4Bm7[ 9W0]:CzigF#A|]Q3/2jr1 qj X TՆVcScO!":8׵RQPB!X@=JVx' aNLN0b\u"=|hhAof̎C8cjm)o*QS$10(U1a2'c τ'=|1xׅqcrs$-\9/lAyx=?u%ҿiL4It!> յ{GjY-GvS]/w]a$t6[ixHΚAk8+7Qfz`tUfjY-*o% /0j/ʕ^7'c{*hJw7*}q䧒pnP,OtꖛKWcR^~=f[tz˘$(|;H!5G4:a8D6) endstream endobj 2802 0 obj << /Length 1724 /Filter /FlateDecode >> stream xYKw:WxC%Y. mý `jc!vzidשC NW7O;wћ幢"J2Mn( L^$ CMRz|DK2>2\\Ÿo?^П\<{iC Q8˰p[I]31o&'7Fl26x3NDJ͊ѧ/_^@8m,eᅂ{sft5 mD +Y2Z,k=k4ܟUeMG-Yf|-mdeV!U3Nb4 $-lIrtUW"wFoVIn@ˎ(%J>l-ޯS TLd ddy2ӧGH1}Κ1ԷG9jId|Lc9%CY5lզH/" -Ds\NLD(fbx[<\E~*x˴&kxڴlp[(U154 R]U-Twx;p껬tQ}^ =)~GGG.!xj0s H*T@2DB9'd(Kl'.ԩYH=_13mVߘX^Ee 8EF)2{ 7֩\f2 eb$6DG*tlQݍ\6EU7H3UQk$.جi2)M,˛tM2"T;P@K|Yx1ċYFH\d6u:3EM&-[(ΓԹ@Hev7Gv݂Cek"fY^Y E[ !3ss9yI^Wr򑨭Xq+;2i5[P< yErSun*Ec͖ .c$MYޖsӗCif HkKwCOkK^%0rtt1gKN4ŖK,MݲmhCh*w1UvUÃ:X٬7&~ܡ^X"0ujX9%qJ]vUq>i+`zj'0B7>!aBuo…(' -(>D "%F;8J)W A Wth+H");m Z[YP*#(\WvWsT)Ġ0nǒ~_|07&4WJv%W< J`RV.nYG {y?q(%4~?DmI1?맃AI©x?qxE,-zgOpǾ}p3` Se"< <$J7Ij,ϳ}L*bQ-h+5}8ȁ/`>/R2brsƻQn26HD5INzȂϷrRHg0\ 4CJ ɳ =#+ISl5(‚]4+qx&yW?8?UCO0BDEqh L/`S<}>^5 #Z zTy\|6qlFC Z?Ĵ3oB<c*yÿ ZYL)9 T@bl-kU lj0 endstream endobj 2808 0 obj << /Length 1277 /Filter /FlateDecode >> stream x͙]s843oɗi Y:]1d3^x)#i%&sΣWH/v.zog7#8$Qq%)sf {ٟP]!v!FR2g~; {#i|! +gڻa 6Hm.P *3S\*r4G%D8p~ït2#g( QAڏ248'LL{}cIh7γpQ03ϓ4a)jrD 08&k>HKy$T*ȍ#&!}UqG[.qNw$@,538Y@SpA0\["[azE|Kje7֝A5YS9>CHV|!o824;= B٘au'!' Y&y\ľ?eI_;ؑB$H0~.܁L .Ӻ$Z7F3&\Ɯ@+Dt:$M^'ˉ%+d$˛d_,d˾6]o)BD!(*sڣ 1Wۄ&_ٗ, 7qqc~͗UY\}oJ3چ 6GC_}d%=Rz׬Ou=5G*!ٳ, o qpw:7ށoI]P[nqD$=Ar|l~:u{l ( 2s5=zbH3?YvLyҝN',|Ŕdmx錳"#,顪D!i`ն y~Y0[w3,B oJ'3ؼZp-{IuАIpx)QKD4$iR}hOJedAq.5 C6JǠ0b뮎D7)t;b5 ឍ?@4C )!.7x ~_t?ʮAڣހb[K= W>GYw[`wGׄ 4L)2aWQGK"`Hy{ 2Y BDK endstream endobj 2812 0 obj << /Length 1585 /Filter /FlateDecode >> stream xY[s8~љU ]ݧi즭t9a f'e[:;:qc`r!a c6,L6,a"c_8|8O:qWG}~u9iq~frK5B&e ?-s: ;zYʯׅɛDŽyl9n#!m&_aÇQkWSY74''Xl/` Qn"Ș,l0 &Ѣʘ۴$eeX!.rcW5|0j Ua ~๙_[|ZGk#Ifj{*<̤_ -f s2M{(2hWEʩVHlfVyUj;Ϫ-[(f]be]ڈ;AMB}qNI#2|\we#`m ҹ%N;|LB~|<7O+dw䮒V":J6Mi *~Wͭ߱ [&eMw *T| Imz?#R뢶sVLZ{f(9sq6E>en;}D!dƴt?Ard lPmF,.NV'AEⰖ_yYSK FLO_hEI)l3 c 2WK*=[h#|'1Gܮ[  'sDc$,ֶ)> stream xřs8+Qm1Gg.iVZu&i&bb`r/Ȗ]O.{zއ&FZRM= θK84/8~Ψ}gBh\\G>OG7׃#^ QFn!OBd:z#[BR2o}}0bZy7 {_=\ۑ%sl=&fX _aIǰXz -3iSF6iEZܙ] MVkVYY=T&EU5 X)5"tV*`0>E:[AVYt{LUҌ!*EB eWqdNy/s fkUX#& .%QfH(];.҆Hpg 'J# QwI>OCnܶr7-{f/\bصkn}XfyVaUZ3 󑤼eq3$riN{W*jױ=6KsYSU E'a@|ĞiOڲcY2PUK(p=E@ʭU(s 52WyJY<&6^^]lΞʼn[5mϦ_"n9C5kTb#"x֠ l(fE$ 2fvV,e `(d6Mq ^5+</ۄ" P˰8X!.5yZL:K2qTEDa*UsHDmau|F]ǙYeyMj`ǧQ[0a2:fאzYnI%'F5 Ǭr"wȍ}.ܮ?3wmP}ρJxޡZ_H![G~TA%^76^w|g#m°.+UC DA '' "Nj$brs~)QH2w2=pGlmy < - kky > stream xڽY]o[7 }]I)  l@a[Ї45b9 iw%atD<(%P]pjERE&GFGQr3TDZD'L&$W-tuU@C(K5I\L $IBXfl E&BRqQBz%4t*ʦ5*ʐjds3LKds31R+-td,a ٰpMP3Q ڜPQņb>5C4cv1fHd$HUCAɐ@ Dåp1aq4 t@lFa% N#@Gmt(Сj:Cf@GmtR00 &4rn25aLƢ92 v*.-*ɬ5B!%**r@gۭs0&eH0X5HYgbW!u'!RV')WI#jڐxUHlx.py ?򫥗GnFٳgO)ysw':E P':`_:+щV؇F"x}h8+Bԉfٱ>[.n8{= Fe4?|@Kz:ߺ 7~u憷ϷA/p|6ƪc[x6,VWu)nc??||. ~z.WX5 %Xz3zhp~raj»El}W [bv!|"y[]:+RէoW1'-JI11[c7eYo/mP.oJJJqG"-UF<^'J|:AuAe/]i'vq N'M}`JC-{DZ';܃y{Eh:IUN4Z_o=y?~Dl4چ (nfLQN{|O~,Y| V i3^0^lP)SJbTU#[ "VG'N {O}~8VLSl4_pJsm ]1i/:E4x :ʻ~n?"帏"ɚV*P="wE9)"XPM=`f*y'_E;"Ӟ }6#>in^+r4iH;4Chh:w6 |guij2ݳhs/G*UYe-5?49hHh9h[<4_y7_}.{)?EBF"'-r^NG_H[˂ endstream endobj 2822 0 obj << /Length 1444 /Filter /FlateDecode >> stream xڽ[s8~[3ST-=Ii؝δ}ph&cKPSg_st>$cwۡ&FZRM^ $Ekoy_?>O/ؗ?FWm/WgUۡ;҉ etAϗpQVu~2-:|R]N{=G Iɼ٪;"xÈ͕CzޤwVx# iAa2fYQ%svbD{HiM}A"{ oO專,̍měխIm;k'7&>Fۂd+howTa%E0GI-2O'dSeV|&{;O8La@=x@nJ '<s_LvbW,q!fx($@X bldPaQ?O6qnҬN& # }ȼ0 ֬yEBk#D d(\=?⓿u|LvBN983SpGnWjfT˭I+-W q2L/?iyrK7uTNRF9aMҟT\ޯ4(I~Hǻz ]'">`]Mj֭{&#FoӸۧ v]H+Zn+jFwr/lz*|p﹓z M]Sh/pEȒ{ynVHت'׈quѕ O (v>!O7q]QC\~:}WGfp| ?UT#L 0 pQk"^ʌ`G'mM(D9 blB`'PS^b[r,bmy9P( pЉ>e:gmww|$m䐧oJI岉ukROYaԲg1K׿Zoue? bUC t endstream endobj 2827 0 obj << /Length 1758 /Filter /FlateDecode >> stream xY]o6}У %bÀ6]:`AD,4~"Hԉ[IL{xx//k{Fo"BJRK'3"Ε.O?\Ǘ)x,d*$==;_}xfqxz~6?8 x>%0@Y?-sѺDg > Ogntyg-FL}rqfě>#%œ aa(A9m9XG?l,9⤏Hc`)Fm&-qQkqtҷw% `ޮZqzm_!Δ`.rF7zZ%*."F`LgBx]d9JD/׮4B=AR)CW%'B6ŀ8R~mIho1b He<@>掃J}CahY5$2N/`Itpw$ue_b읩->&)N?k#ޕ.Ӓ eGϥWsl^|{(vQ3C]A2'&Yqd,&q) Z?ȎQ|t6z%L ;#]RaXR9`9=C=${sg2|$e%mB7NWÞ{U~g:Գ" S UZQS#k;:)R<#D!!s|R !n.Mi:T?0N.Pv/tD[EC:**a6j I *0(X"N\yAihpDE}t)(&ZcS*v2n]]g&(S@1l Ft 4t ak%=NP eÑ h>?F!_<%„?gbf{ƍQ6.:7&&]ۦެXηp{>a哆F8`ͪz˶<vݥ$_`ӚDcgdXٖDya鴨BQ~mEص[иJ QcԙmꗾvWa+/m9qeIK֋p!EnQXM;+t=Q Ha\Tbz2 v} r1T}t ׳3+Q]wpNIf^s7a*aVq)?&z˛pǼRU-Iu9=oY<˕ ʭ``@Ԣxt䡐ļ9p0a/  X;eP +t7bxoD/6Ca%8h]` HoђlpJT0>VQZ)f>* Xs(I&](2\:1"vE@hV"4Wbh/7Y,Iü>HuRDnMSzAq#Zo\^=ŠJ ԼA򸷮/T+5osn-4S\YnM敊NMA^[Dbab9|f%ad˕AUE`i1)")V;E)NK* endstream endobj 2833 0 obj << /Length 1498 /Filter /FlateDecode >> stream xYmoHίGv_IiT6 TSqSػ&Y Ew_Mi@'Z!8خۏꁖ;DH(3?v|\.'=lIɂh3#T+ ^ڝޗv=`9ƸA-X R4@`9EXa3ǚTq1 F,a_i: `Q$]rõAZKk˴jZlhM2:G<p8n)~b7ӧgɓiVc-L T7ϣ0uـvyOl"(2f[#$[=2''ʓl#!]M1҄6}>Ox2J?'Q?ͨSCeK@cEF"[l0:[c 0$d]'Ҹx&}i&?:|7Ϟ9{lNî2bw2^rYUillsjqvV;,(\m\YaKZeE-Wxiz/ӓ9! Rl:mC@7qtP@v|eGqrћmg25=;'B9W5*5<~|zմw>[ t ꩇkO+ SyXAj<)pś$1"Ʒ;FF^UϽeh0 T"Qk4)0 I^$Qn+jobb}x 6Y<ijZz> stream xڭSN0+Ht+N|B!ZH qhShRD>nFiמј+ .up>Q*$H( . PWo/uXLB($̦W\Ϧ1l6$4MqnvȾt#94Y(~='l<ߏ uP'@Plg+{wJ{sŞC@adh\0L7.:ԉL"Fco-TTm٘;0u^/]m|#+j._)7MѬO5 lyQlkg&exUv[:s)mm|zh$}|S(:> stream x3PHW0Pp2Ac( endstream endobj 2847 0 obj << /Length 2104 /Filter /FlateDecode >> stream x[[s۸~L Sɦɤo})J""(6v2w.88Xq"~vG AJ"B)ep>w?&#qחKUr[]=nE˺Z&eDS5c"Һ_2JOry2RD2^0t ,e$۾uOJT.tMTY.2ߍ-DQw#nt%zͅՅI3%<&**ϋS0aL. xl; p] WZ`wXkuVO(:Pg5B[A e6fnt2"JN3[LuX֎ ~DS$'0!\>0H"$}2/v` } X#x)S3v&rd*?ع]<)U_5D$ yB+FyUu׎B%G71HEV뎨"B.j L\` n焿1 ) ATAohnGhw0SaLePvf9juŮWNAh"jH/lxG)ha=Ú57'OҰl1 05īY9"0`6M ʥ#% Lc5v"9);KSZ4]l`zH6ueO6zẨ"mQnƺ1n3$4E]f,F2/z&%o3 l*+-^Fه>zwʭS>k˾oW5XlƧۮYCظI "dn;ۛf F*O#6܆E| -W5rTv&uKՏ* ~aӋ~ ,=fbY7b9D5r|_Ci`Ŋ/f[CouޔX')[Y m;eÊn}o&# T" ˆR .],/Tƥ/SELhO|We?T _!-R D2r[` s ǂ[z@HeqjbLa:tfo!tg2B<2I1{0@`!6=W rʦlO5U_n겋if3rW}{* ]u $l?5GC|O?U&NsԼlzM۩QS}iL|sdN.P1 =[,v]njfrbj.H$di_e_ZRa)Q bb])()bd`Ƅſ5$r>\*$J m7܈(e d)!'߾ʞ.4!?'y`6ͥ#i[{ޏ _UOӐ倘gU5j5Ot9v$p^)G~^Cř>K̝-&APbc]Mn~c7\|cE$qiDoeW XY{"_X[/M]9,b f!gx+{FHJ(w=g)xH!'ѾʾUG {29sgcoɞ0f4{C|O=L7>/՜Wg'yG?g؟?xob,g!*{$s3}`:yCx?U>T'Ȼwg_rjPC|OK*{0JѿU{Xߓ=_eO4D3/Kٸ{r7={S%M(I;řMH7 r2>k_`}??|*x#7H8ܐyy n) 1x6&)e wirQbIFPJ|ֿm endstream endobj 2876 0 obj << /Length 3102 /Filter /FlateDecode >> stream xڵ]s6ݿB'z&bI)uԝLҋ}ss恢 Taս~^r!+{[⻟Sn=7HE7 f޹ow.WA9{x'^~pDS7X=ÆC&R:tD חWW׷훻wo_-RtVoljWk?x \KG/HQ,.<"M#ՈEĮ$ &),zhb, B_:?ʼnX(7 f;kC"鐴nsT{<W}v0jA!xA 2J|_\,d}lҜ1ROulx}~G^?|{(!J2J_t`IZʲ>_y|M8g&zv-gSNXENg N_-9 kKwP ȁHf6nE%Zh/W*h8YMe]`x0F\Jp!",eSb -}$t}8 n N}8lU $q +c`w ̆uOW._"HY VU3plf>W%GyHz׷$;ࡕ !^d5"*,8kw`+(Us/{ku.+>+@[ YތPo#-xw۽`˫-#*/2tbPP~43m๡ ,)T]+%TUt,4^yO_ tLo}! qӃAa s0gTpt./"s@[/`'Nrwɮs֦صW.I&p-9yYqVmYT"+Zv5F@\m^1[QWO S[,@m]>f@agIl4Ld䏔 Щ`]ֹ"̬ HUV2a.>9rrj"o(xuYT#% .t'rv Xl s:{iQvEîΪй 4K D4%>ͳu* @A\uF h!.>@TIfA۫k׋'Qi![Cc31D-u,0!oW؊<yt NbgTzm*esWƀ 7gڱ Y8qrA0O;7[8 >T Ld6Gya8d^8RXj (yU5mPH́TB8HC='^ /M=nTN#0gLC]0Nq~lmƉE_5T] _@PZ3 [+~nPG._D|j7RC-<:cΨ}0tu,)˛3_H RH""dLh>d\Rd,i2bdN c3'KpA(ᐙDk2,%:HLq@ϛ=L3J[NY~_fG{|]Bz.7@ֺ(`6 O#;lLpYْ0%- A\Ӛ*E<q򸞄(g!a SWk,HdD42$B3%'};!a8y4&i84\Á I8eOb Sbw“FXY)Υ ?S~zq5>FġsR :H\ރp `rhMK yAl> A0LK{HF]@|@)J?(#VQʟB(;E71V%+eLMzR 퇝wMvT69ȏjNm,l:vwSWB."o'vcs_*p0p85LpAm~Bou!SZs"x5)A%73uY^|/\:!GuTf+L) 5PCICꭔPokHd38ȸb*yy !+Jx Mav`%0quNs7ƨ2/0n@鲒0**_A#g r)- ,وͳ\n슽ĢchK;ڪwP-.99 .@S  v9]6-0&`}q0 ~((@] O=ToS*6ˋOlYnriw'8C"„z^l[K*ʺu cۙ=a̹V&ݷʵ4p`o ˗oߒgB- Dty( XڣVn/(5^"O(5kne]0ug߷2$9gi7 } /cWfU"q$%a$ 9AA/GwȳQ9۞v7 JqeSK|qD)_7?PʾOfcr~k(\EJ?HcDž,dXo$HOщP\3~l.[CAe2]ҷWDֈ8ynqdХ>EH*T|:ge8Zc!U`UmF[+p M8\r6GG?&Ŏ]2S  zl1> stream xڽks6{~O̚+>~ڦ6;fo^Fi[ZfNr>d&@z.]|s'fq gtBΔTNTWog.ܐ]Ns{sw}쟗޼|Qb40oLX,./du51ţ=F+`Bz]\.~@V<#I7~q<&y0G ˝_x}Дb+J'KZW s,E=!@cWG NsMIQ=hCU/,MUnKgZ[Zjf'Z$u2O*]@y"J˩@Vߡ[?#[4[>fŊp4/v"]NBɰZɈ EQ "38/ Dvzha%15]C%#Im0Br b FQoid* ,G}yެjfa/zBjNBҐ۪n0@z/dF{h K~_6-/+bN8!tDz =ݟNM?4e,$cVޑ'"Չ-K+IRMەUM,Ԍ_$+&h#\6|t*SpJlzA7oyA|RB/&Mb햕ݢ+ďi}J<9f3だ(i(duCp q'nϸ*/2:nAH's+KtIj84L1.g`[-:Ҹ =+!Љ(vY™!q BB4a'ҷ}:q`ܮjkn;[#gdHeRr>Lb=:WC~7=0(<ކO?޼jE":ކO7cAG!_%EH f bHD8# B+ 'WMzVMk'*TVЙT._{0>%6)ҬJ}UO5wFe韨퓙=BB2!nۏyWoT؎7Nfq[\f}/E^K-{OS3)z?ҁm>W/SYUҹڗ}HDzWd {][LD:0.ns(E)g<*X٭fYS^]ONl}j2YURs4L.RF͵r5,*x`Rta9O 8D|،ӱ"f01&B$#SHAsP\tec'M. ` Z:KN3Ojt*u?|ɑT2QW*I{ߝP{R_LgB,h&}.IVM,lˤn:dÀo&o1"c9c^e? wD !&ݖ<w %} ) endstream endobj 2903 0 obj << /Length 2586 /Filter /FlateDecode >> stream xڝYKs8WtU=yg㩚7k+M7Êh"%&ً4F?!wrWisq6VHB?\mW+$^E/JV|ynsruO0$Ǜn7.|6VJ Ci聂 lqXDA2l|ݛH9s.n6_x஼Q a(Wo*+WH, n)%1.W/}N55ʍtEXU]Wu Iӷ/i8:ҋ͋E @g}U|eгnڢ\?2v';Ӈ, \NzF]mikwy_Iqvy" hEt0!H0v~uT/?^ݺgMV1pB!B8Ո< C?ovIOX檨C#"FD⽚K$av$@c䔱(96u-q$>SĨXY~+4w-]H@s5Kջ]ZQH a1*KoI,IF?Kz"JF<__-T9mt՟ Lz3OYH\| bP /8ЭY` ݭWY*,-ڇҮC%?0_гgjY(c`R Gb'\g\Cd`7եr炡NWKBz a \Fj@,X MMҦ+L-9SYW7vEABb?,;s( QP\&*S )28lY.K5Q=1[Ǘm/-;Ep*e >@rI#'AA)}9ER!Jjn_NACkZY|Y ă%XsD`"99/^2|L/z ԅ_c2QBy\cHC(bLeuOwFcfu[Ki2Xn#6eaB&lhyf/RpXuybk:RQ- /1ξ DI|̞GF9>XQv<ϱ+JH}80H%863,)hYx RT8,u+Up43|U@N5*4%\ujBEj$ vW d򎁻E2*Mf1^gh϶Tˑ3ՙ8DvGrez< "lWKOcȋeulea{l(֠u_d/>ȡ):nP$uEe oKωcZU⡟ , gN}X<h8eL_ '],/ߞ G륇f5toaē-pF_.ќ2 ܑi踴[1Ҳ\.R/)IvV lLh1ؠN[B$"pt-ǩ,ɢD3E aYFS{ SnXǂ bp {(쓏B Ӱzc~f 4H?1f%Qczdk3ޚGGf~ FcS}gH#Ll+1}\#&o&o |aq=~"B7h6-_k ~Ud+}I)s qWv~|z>-?! ЇzQ|ѥ endstream endobj 2910 0 obj << /Length 803 /Filter /FlateDecode >> stream xڕUM0 WP'N}\ ; 8xf6CRʯGn pH{ҳCUB7^D)2TߓI)22Kz8eMK2葸,n>}\TߪwW(%EGzPAq g(x<_jc MؑU1'BL|I%p9Ov!r'EÄvԡ&d.cP[Q{T2lj5Z3t1ht5nfMn~rzS^ՠu[PHmqr{ 3cȢ@/Y~ Rkٮr[҂VXAWHjR6D9eٜr~.  e!\,v5hw5  gd0s8Qs&Sc:GO"3yR#t$/szֵ?5`b}GT#vmAX&nS+DpvNzuC(vCɣ֎,Zh QyT"|A nnhO՚X!}jF&f6+/pJ|]0 LnGݫk5qdvDN cg1U[֬0ZbKz__@+ϻ >&/M֨zvFTrC3.J/#ƼK/s)e$%%ea[X &2*O=:߰; endstream endobj 2914 0 obj << /Length 19 /Filter /FlateDecode >> stream x3PHW0Pp2Ac( endstream endobj 2920 0 obj << /Length 2027 /Filter /FlateDecode >> stream xڥXs_R3%M$g;rܴwy(HB"dzIobX`Tଝ"8<^\eNQIG#cgy<.n6aA,p0p~1[v4'\w(OJ_n%_r3^#-|C?!葑3O_?.=:~v)&̋7W?};al%MrV<3;^ͻd3/L3}1 +D;53\5s~~['z.2$ǃYn=nZKwmtS3k+8JzɢAm{՚fd[`D'Uwi&\ުYd.,~$}:z{^nQU^LtB#(YUV7<(H9 Xm&06OzXZ0mҰ7v ݚࠤ:OI ox[d c#Z=쀆cLًC11KGrHp2S9~6S]{JqzݚlF#?B{5bL%> ~&vef5m;l59{ug<2o(g82W6e7hO$D 0. jjro!cu]}˓}۽\ Yel!rYtc kYLۢ6vUnP3*z 2A+< h/J*9k;ÒT ~gA9M[҇uXsFσr$V] azNMXtifp{0Ƨ˩MVvm3>WӢux-쏟"8Nk,AV> stream x3PHW0Pp2Ac( endstream endobj 2819 0 obj << /Type /ObjStm /N 100 /First 975 /Length 1465 /Filter /FlateDecode >> stream xX]o[7 }+$A~X (!K.Xgv~Jٱ1)/1E~\Jr,Ȫ  \(ЂѠ5CQAPKhԗLݠ@j J]!bo °/-R 6Jrb"nM+|]uX˷I!Ռk9 טּ밞S:v|SV@I̸͝*\`!ʢ]54b U;Ѣ 6O ӣr1~x}7gqykt?rG+7i~[_>?k3l5w6>pl?s !ї$w >; cjA'v}IMaǝy绫)_&sUX endstream endobj 2932 0 obj << /Length 861 /Filter /FlateDecode >> stream xڭVr@sLf,G;&Aea2Hǧg x%h^^n EKDч=Owg Ή-ҌH! v tٷN ]bF)Ϋoj6Ḿw8e % 5%u>pFYB٩XPp#w2;H7Q%%VqLa!cF`1n*_/ *rŹ6UI:Hq76l(e>N;n|6Xg֣Kf?zӔQ\> stream xڵYKs8Wr,$&LfjɌ9"lBF0v= h6^W+z{/F 3LVUʙ4*M$c?Wza<2|^FFF/߾)O&^Zz7o~={9L|%i:cIVٟU~]qӽܭbg|,[ RmOа,3 \݇ͻF^WkXoU67j/xXOhmnK4I;, $}68e[t= c_U@}DC!_ѱxZĜJ@05]rghs-Rp$6%2];=|5a& q]["ELd?}m=oqv{< DC-M/#!|iN?ȝ 7à/.3,(-J x`ڶu[Mck3k ԭp-)fяn6){Rbd-<*]^s@F&\{B/Υ-h]rX j<%-:J2 jBNpAT`~)\q M;ߨgx1ۺ79Xsw5c*24,b`2$]2gph `ڤf$JAފĈS|[>o3()$S5j^gSw{@db`Fy_o)˥LfA2MGaI/1˴~2'{gkg{=O! &.slc$cn!NRFN$Cq`Q޷u}XNB҄MnE|S:(]@gJ gѧu!}tbp%ykNcrS 2˶G?Ő"Izl}C:wN>)T6} 4|>9+]ft7HL%_[2 T: W.H<'A9 ·[D'bPp&X)Ylnۋ7@4&3?ķ0g075k/$-XΤkxd=8-|wy(|u+/08W xxuH+KfF4|c =9܅A pjw='"t"H([3~ . `~X.+Wp —_A#$X紭wwB׷-Dr77X$_1hKDvxfvbiXkϻ-j;K 4TzWhDt =we.'s)9E'"Ee1&~24L3*' -#<̠x8wv n;]=s'=ɞ@]}".AwUH=f\XMŁJ&V>f7aUw+ۃǤaۉ@ǒdnԻEP^cQ׈^LL =3$B$G 6}e *O&^$Li3d 0ePMXpuҨڜIaup$F <4:'!.̸8zօ׿:M2bIe #o)?$W J|HJJwFCe];n [,L,Id-XxS!8yx% Ha3K.nVFc"|Ts`p*( RlPB0GUA ]tU75k{@ .'17'5fjƒ%CuTmO+hBtB^ػ= 61XJ@Р sآA C DG oae)f@g&[ѾX5cϖߘaBL=nb *!#g hۻ4S[O kL1"Sz00[@q澆 Vp6퀊p҄hW{sp}Ǽ 4-k ^d:4J0EK0ij6@c]LA7>pkN*1> stream xڽn_!/M83L_jmMcEYD(RE3gHdia~g92Lٽٹda .gg:󏹏#YXu[B 8ou:'J7oJeiUvݷ:`E Smv:&9nhjpXoMx Y$'M#5Ьw.Z]QWl/J@}ѭ ># !Lt 5l!̘w G"/")1v)*0}ɀҧOX<c&$<y.Z!R,T(aUsj>_DQ֕nE`⮇)cͶ4;8e}O`[Rf 8ꠘqnVC4Z ](g(CP1-5JsavSZICsۺ,= sY%o#oX@S ^qº=z RTw懛w f<48 [$yISK+x G MX7!(\HS? 0 p$Y?`_lq _1%l!Z^.(.\@OH`">ےArs|Wi<-] R1>$C$pc@ddC$0/!KD&X&@%fw0S$rIwuV֗viY(nߺ@d]`_۶h8X+}P+0onvLmPI`:b|BpЅ[Ȇ|H!bÞuX+> Qto@7ݺ€ f8ͬLX(=Q,~klʤK>&IDž9uIʁ +a kwOw(d%4]cY~{ڭr69`sM^7{Ō𱖄HǢ+V^S}h4=e 299Tg4EhLʣWo~}O1J` KLQ+ra$}E =ƬC֧큭a/@8]@8UTny:3? em]t.A"ﰭ2[Z8 BN!WfYr(тLWLJ@_lNi-dZ#3a̙D^s=/]Vu/ecۑnp2+Hfek;2(0є:}MV[]Q#@f񠒭{CʺPH0n \{d kZ^G.3 |sX qz[04k!sCv^rtı5 J 0nhPtQ4 qRy=20\%ېwxD1^ =90L"OIF2x=mO DRRHSVm]F0@h4 kІ4ov0~TX׵kazαe.}82)JH  ʀ($qӨ$ `!,4}&vǽ>>k|VDj´nYQR2 Gш#m[p#z+@ՏɊ`Vngy{ܹ}.PۄWص%3f) YjWn퉮I#"Kx2^,[׋Џ3^`evӴگ6f;o6p&W"0^؅lkޣkޣ5 xXTc""]qE/y" ze!<<Sϵ DꔭO endstream endobj 2948 0 obj << /Length 2722 /Filter /FlateDecode >> stream xڭY[w~ׯQJ.W)cˮR[Q-%mEMQ~}YZJÇ`wvv. uo ww'FҊw|niv |vȺKO]~<:D{9- Y=Mt'w'_N$NlOBX|EX 澷0W-S*йu{>t;KJad*-1R.:.Y2od8߭ӢxܚvSgeQuי}Zx@ "IYql/EYt,ks/t>v$5Ҏ<7Yx^\kY.4{š*N^}yp >s-B?I&[9wb_.b* .y^l̳<QP󮯇RM}!&>ݾlqӗV@}\i;"=3h72>c?-8$,jDpC"7HRdJ'YzW7IlU/wo 3zY]8)GsjN_?$bnhW7{Y'):MI䘔TqKJ:|-Ʀ#|3;Y(yΰ{W\ƍhmc0˺1N Rs*^|GT;aȨ9^h)2Uׯ _0'#iM{2о"{|Hi.p'fljRVgM@ۘ/"<ۛiH٬yZ+h#ooo/_QLճ(@ D.1mP8'z^<[6`s-țl$$MU$x*^hF="Ě6JūV-GvǮUPQB8FȁsrІ̒דN` dAd{n'CջŅdqH[t\L[d5 z!p@DR̤&\tigzpՍOm^ uDE*0O@@ږiI@ff9ܗ]D£锉59fӐi(;G"%y@ﮮ0qu&25\E'"V0 wILJ(P]{K9}z@LS/'Ij u[¸ :3U)@|XJ0w8dVeyn V⩆q >aj‡aC928BN}+n nUn:~q #?Q)3`g&4UC&3z-9DԚ4}sK"o)k$$jV vDz:H¦Q,+0:TR9k8V!gTڠMrvPǴK%lѯ:Pڇ(ayh8c4 e Y3T&q1w cӍ^QK"gM M09 N"5S!*z=pR>LuQkf6!tOo=Y*$R[z~LlN9k+9O/CO endstream endobj 2954 0 obj << /Length 2502 /Filter /FlateDecode >> stream xڝrFPy/t_]{rƞĩ{7[@ EjD/@ScN @ٔtYacnf gIEm>#瓹d`@uYwyxsM,R4>rhGENKx]8\饬roWMA̜ `SݯY%" 58.lǦr1e"(G`'UZϫ MF<̜ó*AuDL(0z$uSq,ÑH#7#N80"}Ϭݟ"tPøS"RvgG~_M;';t#Zp}(97#¾jwZsSxmF }ᔇ4 Zhu1s~W]@e}(+0ٛ -@xl EOί`fT) $HGWAA4qncv0 UrE%' &\kP6\G ^w>oTS\t*xk婭]4rt?릢 pztHɠSͣpR: _9[=*m{Dpg 7ZD9a,!bgWs g*?akj8]x\8τt;ڲb҃-&%o讯X e!@ -(dT\,';!)hu<.ۍIcmRMY)Y)GYi9 hܔ&DI$bc[rj=_LɊcaЎ1C| :O#ݜ[эz#Zg|AFe{77|[H/M!޸$,}NShFF_q͛Cfy}Wd|4CrEn-5SE?Uuu~Q'noWb#\W1!Ԅܙkۖx뇐1;ADhE^4y#nߍ1y<. zY8r]R]1A{c SQ'2Pj(Čtg4XuC*iE\ u ϴZn8E/ȼцBf;8&~LQzEݵb&L 7gkpˬr?pCF^beL!O]@8]HdM6h0|IIig?a?kpt0P=U+xꃟ$ABC Ӻ\,*&Eff:U'IbqPYG{◤ ѻ1Z|j>c~!*$"2(}@&d4jki7?` 9l endstream endobj 2958 0 obj << /Length 2277 /Filter /FlateDecode >> stream xY_s6ϧI*)Jԙ{Hio;vfEǚȒ?@(D A~l[Og?ξ1Ou"~&X~U]? ^_,#-_.o~|Gi]t} Z B\CV?]tf_ép =CӄԤ@Q^c!+{t{. eqom؛ZTi@X<,t~=:59C/眱l| p⣹&#(?j)ƪZCfǚ]Uioa^UGxW9CqD D8!"`mvfso)Wٺ49ɮ ^ eGAaQ - gr ;Wim`t|) . 0N_F\aF+,­D=\uG"onnoH[n' ɈTQCF]>9JCLZNZǢ,i.=]Ht^s'4SS߾dsi1($2\H'ٓ *+ڢw:Ȼ5C:0&TLL/T#"f sh2gKPA2h &w)t}!䰐.unG,׭ [Ip[V mOMm]#/DzTvP4lv[֘Os@ HN\0Bu8MrFTb*#RB'YL+!5UWUw~dӜ7jx EpH/4>?BH|B gd% }P2 2IqMzgyo{sW5s8šg6޵=XRk ޶v,k@&C0gw#v BG3babFn(@\s p@p3FH|6,5mQTMSyDjZn=q6.Ǟ06```z2 F Puw~6ks/Z2vYr.)ۢ@`rGߧHJN#kRV@쵂h ̓ c?_y<(OcRԏCa!(=@Q(1~ϗ[N+¡㡯I\"ꬑ @=bbPnMόJ0_>_L`}7oܟb`!t RO&1 endstream endobj 2962 0 obj << /Length 2332 /Filter /FlateDecode >> stream xڭYKs8W|+ <=dlԖ,)R#xv/I\DhEۅx{O$r$zI+dq-7x \'' tiI9^\k\D/'7W]\y$= a]d*r%_X\eݱgPVuYԛjXa?wzHpR$A@;?OdTyfHaMn$P\I׹Jfֺ-zkYsK^j6ӣ07Uձ\W8Pejefj5eS?WxmazWGzd.R䥩ZٵK-)Rc9H!P2ɝ8Z_VZ/}CMΫ頍7pœ›M%Й^h(4\}͜F979R]D,DAFtñuGy痍a>6o<~ڞbCn|gH+ u'+Y50.XČwD2/ndVsxgI蚖qXt^wJ>h-5 тӑ.Zv縬?rfo_()b;Z=c=LIk=Zܛ?IVsK(n f`Dv=aG΂,ʲ!mp$ &Nma7rjkIs0m$0BIG1bG늼:5z#-ր)ݴB} "=BP*qV/D3Q52:t:*^Rp@ sưrh#-38ѫCP@ ^js|J3a$xUV3zI""{u_ٓ6y 2 EeeU 209(0^yqqVn H@`d ,VDc.WM~o^Zˀ^ uVرCzVpKKi@(OgEE㦅$h OOfSnpAEՓ6}sҫpNӖ þiH6ϟ/߽=9!h=e;ˌ.?(lB׾9ݲSCޠʛkK,P/S)D`L0zU!V鵆JlBeNZpn8)o{>0z_SY7jwʂkVc?Bq3<]?mUz,OA[ smmBX\nb"F̢J ;Y,T?f  _W2ܕD^JoB>֖E~+SE_Y~;{},c/*LLJCBdYqHȨOP"I9˟-)pm`(6MŁGxrC, psa)/{,Ń~Vlbm`񔇜蓬ZMӖ?ECL <*>u4'xu,yX~xXnM0T[a0,|_(#l>MD  Ew p_@?^@(֎'wf^EuA3eU.ur:\?zx3Pk9;涐E!AvDpF3dn1WXׄȄ;ZxNZNBab$M9`b?l "Ui͇&wgz|q aiMU6_(BݚE׏P5o?""AO iej8y۾ _ nM+|RB"4u^BAK|oD__,F098X0Pޥ DByd֋z<ыM XmY ͎N@8}l !eSDLhb1##&p#p"l!=_ܟlROfT)I)^(/I ''Kzny!ȬCNO endstream endobj 2967 0 obj << /Length 2005 /Filter /FlateDecode >> stream xڭ]s6ݿB3PjD >;9wg+O(8HE$z?v %td}bw ݄O>:;yAf: l99 t2̲ɍ(i6UĽO?=D˩ӏs)thgNg'O03Q "9YOnn$&IzI$Su1> w}4fF7[cYmN^gx[vX) ZEV So!dִu0؁F;cq.ܖeX.:m^m(\n!EAiz3sJ_]9=mU7NiS6iWIf߸WӇT:ΑG[ L '5.QZ燼n'\Gt&,Vz!)N$$=.[ޙfn7Ouht,0|C~Gd;93)[k!0! !W%Kr :1J`D B)2}ՔP(jBQip͠N#.179>ЁeXʟM(.ߏ#aP #Sƺ oA5-o7nțׄSYm~9[v:"%Dv*6a̔N(I8Qho6H@MlbS Ny(QA+qya0GXqgvM#ܵV'm;iSm; r>yby-`g,e@.㮲wdK׸u= 73|:fNܢ~{}w"o=$$K^?GhlUG/>:nmKSmo?HpH6 cv7:/V0vdR켳zEd=K"j5C/w !#Ѣ]rg..g_>3""FBbq.WD]WP h͖F;qB0p g,2n&lwL栓hH]; 5ÙGjJ:iݴҎcY&SN sXѧ2E vX%J2Y1m*Tv|zAG׋ v֫Bdg}ئݵ`nxZ~޸.N(@!3=r*,BlݮH1ClZl|iuYcʬvhN8`6H ;0KȃqZ4[5dthފü-ٳ(涹zy"آZ~(+55..",zCfH̑~HTp>P2?9FإdJ/3sn6!jxxnp8% DcP)iO9$⒖u oHyG8g,S)#5BBQD.=X'"B? ::Hs.0%j"kY&@J#* z0Sc)sPPp@G h{N PCW.Emg{=cc9/$#&ײ+wS =2zc9ゾ=;GJ \G vcsVNU{I=RcHT*DLd40"?+Jwʐ{eEmڦTԜpcYe6fQ/!&L" J`pjH WcxhwGx!BGx>Ш#&HM]X2< Rma endstream endobj 2971 0 obj << /Length 2271 /Filter /FlateDecode >> stream xڭYmo_! Tb)JEs{E[ŒaekC{g8ޢn$GCr8gh;ܹ}!`_.ny)wv bJ g:;)|Lđ9W  ~(6!+A8tˊEZ%ey9ٜx{]eeSژvUY2~O(~0Oai~oz!ym6j2 n͞K+1;P`\XG8Dbwd.sSe8=pXo^<<՘qDfJIp BOy1$LC2K- |j Pd`byHYRoMIx=$BNZ/Y_Z+}GH-UVe"Y1oXNCIE *ƾ.D*^%8Lޙ^Y3}e"- 9Lu2]\_nro.:)>n;aJ2.̾l,^ 0N,q`f+k\ hoY#U%/i][kB84#vIFY` B2u3&xs~//&4|X{s~/k^Ebr**s?ho 5`ȿdotSL\ӾSN +}K;>dβ燫MSnWA1rc֗ bkv֒QʒTExQM$MI,Ӏ?a4s<~Z :;_3C'5sj,WjL8OmcB` eQU k*o5Wń ?~ u@6ə{~ژ]ɨͿ=8Q8Ka`v0*fJYL; m*ዾ|_u`P3!F1:@0hBb5Nɂ.zILF*.O&d|@U{w @<~y SD̂YmLZN XC(c;0q8T^\Bo Bnte! ,v@̡הNt#f}58M9!ki<1B,Y:=t!\vKTA aOchUY9Wlބ΢uUƧ&)ihhJ|ek*jCNZ,]LHXOÁ)wA]J~PW \l0y:h JOa%Pl3a"ֺ0ӗǫHak"w榅u]${KI|fVO@+osbl"z1.(jヶW<[Go~'5gC{H%4 !/X ;67U?R=w6krj}/ӹ_d6vCUO&.7X|K<1:fc]R{{;EBu#ѳ8LFENyMgɴ:[o*|ʊ'+_0Cҧ׷W7cSC- I@R%oۏV'T}C?AvrJQ껷3,evQA)H6>YKzm>n2<ӏX8օ #Pc n?,=@tCb*`l%z-j[Yh 5YlURӃX>:~5 IRpk;aK~ 1 SOT #[%{!C`b?'zYZ?@2VWC!a3{'PB> stream xڝ]s۸ݿBL陈! $郓8=Ǎi;w1E*"eG.vAQ bb>e$G( (F8Gbnrb%Dϗ.Ȼtu4H@ͧ&?]Mξph0 C̗Rf_~ F4 |KOs5'q9?Y dw0H03Dg9`;`AC I:B!]+M3k0mhiemnxaN-[< u5dYQI (݊84_J!i*@1_ *y,mYx02Nh4jţ'xtJd]Bij1 SUTYXcupmc:YZ[Y6s5ӯp#v;,}@ Ι{8l D4>?mR<= L:ZҿФWTop"p'T;Zh&F O t/T4K:ɯA04@H.⤪j[ZB=)&$8{zлgc`sdZfR˃N]yM!w`%D[zQ$w& "#-"Y)ƵT7[M`_Y3G%eJM.wVWJUWcTUPX;+cR~[ PhZd1S]}DZ 01D%푽k )Q/.R..E#{-MQv- d5ƇQu}pHlFIut`Am'(K׷)ykx5M\E3JM2\RaB!ʈӇƸ*JF h3ˡF=fr4NzCoYڃ.Kki@8GMph )I.6,:dCO}wUU s ~UX!|ô[g N7{tMQBـq bFY@9`ds@K=2qdeġ[j77 *7_!ٿ0 (Ƚ0ُ endstream endobj 2981 0 obj << /Length 2788 /Filter /FlateDecode >> stream xZKs8WtM@ld=xb2>@"$BHѿn4B'q feqӯTYCYPJ5[?yuxr.br',ͥի8IM{qn 60Ijwrیfvn&(et99P,P baO(OrDL4Sy~zWrr朇*imۗ_ " < ̽94ʺp7->NE5kP[ӳ;Ӏ)#&85!,\3ϤTmtE{,e6!#5<7bKAU-jVa鱪˺e+Zk4X'nVUZٚf^}5+*̄;s"FVNFL:#2ʸL*P=֍-ȍ0/lSzx_<;MJ;V&QauQIi?)O;9LՂh"LTi^l|Rc[ jV,OΚe笮3"!Sb:a0O1wָ*SY* TBr%¢c4דAjpꪜiLې~;h'"q-s3K?0(Y%Vqͪ- ",#G %rQo_ЌqgC9 ȪX.K7[7́H`o-*98ۦb1[[zi!BMMq2L6LosUqG2^Ok\}=^*cF"FD 8 )hܬlhɣBR4]>8k1 KeNGHug)60]x$|=lYR8!nQ4+TMl B%CoJf]B&Y4Bb6 :3ݨǪ,*:n[P} 5ZPx'o6`d8U)Cvz#=Kαw dZ'a^d lh¸MH, -Cnyp669f!K: _e#eMـinuPKv`$ ώ7 7R{]dҙuazy+Ѐʏ6m; ŷ=p}[}{ Cqw#Ile0j}A %v%ɽ/]˥,?b(t Ak,6G8FYh>ݾ4S=߃WeQdX,u`@kڇ*_zI-D# _}**Hܵpn o-2hejtxg;8C>4iNU]YveXoݞuUN!H!F8 :ANobIOnPjǾnN3@R @ݭmU};xX[CG }o8ˮis0}lbQGY jTuG5@\'n kV }b8V< Mۜ}׽CEb=l U(P4΋ܯ!v#,;65щ{z.qU\_g,/ ?ABZa -^eWHX$X9jp S,~IӧV++q2i<\% );EszǜGzӸ5r#1aGXSi8o-hU(*QOSr;Ў >3gā7' ;.tFO Arw'Ͳ0uB9(7ߝȬ>p#Oϣ,*yOGJQ4" #.<L\~tI/R%ZV endstream endobj 2985 0 obj << /Length 2188 /Filter /FlateDecode >> stream xڽrPM.t͊K|Rsk'Jy}HHb-ګ|} Eʌ'!~ۅxv:'/ ^6s.8pÐ/VιͷeywϗQ9ůz- /`Qh]x~fuǙL?0R7"Es?/<ԓYY-ˆQ.g8X G^0ar5mFď?Ar/^,}QD /ŁF=NpdgJfhj4>:r_}wtUO(ѕY,fNjDmvzq8ZY<&uk@T݉=j[}-)I?5՗/|HZɩ)h&ţ߬TZn6M_k eTTxoZZ@ʝJ*%bvE#Pb4D U2dwwpk裠2y4ekZ=VŐnj;͞a% "Wh|Rt* HiP;U[o?z||fXI:/iDX .X-c/1v [?EOS*#UPD#!f!18 Lw"ВD:G9+Xzޠpތ!b3LKԃŁ18A{)9Óp#s˼V39wp8't}d$jGxJU#1gs dzc\Ǹh+xÉ3:EP}_hL78ɬ1q̶;쇑r6|SkV,,@LDpuM_l'5 .,>G'c"Sp V'RbʙV֙-I2*,r񼶏 zk]J_Vۢt 㵶?fUJfRV H% 4$W]YSUPJMtX9,,6 GQ"~lAM!b;:W. ٟf[kE;( x}Y!f/ѨjQ>iX۲YRڤBCI&jr2 I,@h*Lhr60i[0i!D Ld"TEqf["@! L@6~2V+[_=^lִE_\;EmÊgbىFEE&2D5;e|g/<]wRc^@~+ށP?բ2hdqn#RÛfĆ}DЧ^џ;ЋMoc}̈́*ri4w8z32} 61!Ψe5@m.1vn{d/Nuuû)KdQA4 bQsH8@"HA.e!^I[Yr&IB8t>0"0C Ʉš3%K6m7Bua&qp$j/N7H۶ qB:I݈ -$p#,KW} _߿ Y^gm;8a]CwA W|Ũg#gCYM)RSs!e(K{(e<4/>e~1aL*)hfR=lo-C/&]9O(-#R7eC\qJD^"e[KUW mw׎`0LRHKltܺi/$EΛN@7m+"#2W42Wwihġյk∎&rV49H[7(u0}j)a $,q@[) lp@c}2}+Hb"3#s샑+X?,C*viBU5I/[;`ó.Dn> q@閬;nZ03ͿhQ&<~Maal5&i#Mi$>V+[椻aI0\;!߽5j136ygr+:=RSM:M}W|h^nkt%E&"C^ y;i?]u PH >O»W endstream endobj 2989 0 obj << /Length 2246 /Filter /FlateDecode >> stream xڥ]s8=3"֌(f6i/{if [tYr>@jń@i8'>ܝ$Yē$"T$䮘{uq{wu: "tž.~%4 WsL(.?O~>;LP";!Q*XMR_,<[$Bp5g@"x?CQVS_"LJE-ki]W Meecǂ F[:Lۖ#}k-/0%O?/>Z u=[{yQmyE`fuD FؽN8Ά$`&/:` Y`tn\wUq$ ˦ns:@0)&I :ġA#Pϊ}m2Gn:S~+OtVUc(c_ǁ`TY9>,-pʷVgݞuVq]?jmS$6੽A5A 22Y3qlTzc>ϫ;lCp.ʔᕰ^ `ih/۪\mY{Dhf _Y]Ar'ԓʭ$ݢvvPCJ CT!*32j ];gN@=QpJB 4rD 3R]zK\qV~P0KQW^O"#mz]zA5!`![]fTAA566NO*ݶN˜ jU$B]od|DȨ˄s:ͫU՘8E1:&H [,d'׵Q $V٦ endstream endobj 2994 0 obj << /Length 2106 /Filter /FlateDecode >> stream xڥMw6_:ш桇LMKs-:Ht~eG) f`G)fҗiYgYq,grvyIxr n2.>]g$ ŌvyijqLL $l=f%< -v'og3A<@/8$ \?*u3|7}s!|$,}Tg@0'hڝ~!\xMѴ Ƿ;[l\h}(b7TJ` JZdиjmU+0Vԏ.6 ̼R]m#e" 8fz^ /jVDyڛB%Usg|y !'tLblc6s{ UC( r_ml̒m2= A֪_QUsoFud,s~!_uUk0:ΝAQ7:5:qIgy0u,*MK_.oi^6JF%mhc<ӽXc!2Yt;D'/4C"YlGNIbT٪nt[UU_jU'Ǟ!NH2-t̳SV>d'$ٮgapAN0)ފv6:` Mcʣ*VMub䳜W𣲆btS]݌u{4;D{K2_mSMwQ3 )YB`)H0H(GdJ`1ګm/ӑ(,JS*n'ۮP8YR*){WE3 Hw^484ΗM$,M1^Vf-9AlJL4&{-knIZrd Ġ 6ob Ӏ}m"Ȯ(Q@ ڢn6=#+$s̏/}(ВeG>?^=w˖w%%5ai;4kn1@V+N."8HcA"Nت I8P$0ùY>զSbKо*,ϲo,|âG}>zg74SĞCSGBv.*e& XNqBN*&=ʝY0\ Om)H(K8?(YӨQ}2單U=,@gI݀yS:ܓ: KP15j=>MMgYHE=̠@PWtjckP%~e-"h]F1'L~ 'B{m(lq]ǔRwNSpWCuMz $'!^'4!H!Aڈc?'Ɋ|)EO6Qn1Oޕ@`_+01cݾSNUM]]Ԝ#]u5к߫)M|ILGV0kZ@v0'ּ\.Ya"hsdIGRؙMaZ ֙ x/ėBw#@2]İ8v-X$^xۺx9MB^u+>+ĝkSG:\o;Nz؈ |B`GP":\2u|Sm % g@TŸ rVr#b٘͑.:2VC#֘mZ|fڇtraz\q ?)< %y3 9ҷjUaDZ/px6cy}o2GV}N\G U#Rn ^01{|]/,x%Sy'RX}{<%E"&Njo < pkfBE|Scs fw3N{= :<8\Sa^?\-߭XSX8ZaG1ͥBG\!1WgS endstream endobj 2998 0 obj << /Length 2436 /Filter /FlateDecode >> stream xڥY[s~[IuILMdXΙsWNxQ`T9NF ,Xxwvu["\a.b0L|9zutGe$]go~w]gFL yջӻ''0u^$JbS|s9pE&G;\Q 0XܜvݱH"IYɷEvoO-c2^"uby""ZzF"J nEee*eTCc͞𒡈,5i遦"/:&nmeS!/h۪Пfm9h,kƲ|Wݕ[*SUwͺ\ N1$ ̠tRU @ž=I:νdGmX`<ٯ>C?o?ԗ 9CU"0³Ep"rБkȋ7\ OMaK} & ѕ 7PʰIb(H:c6-зĀ1[l|!!C;ȊgVr 8!W*O afCԲxoUA]0d2">aae⁑RnLh;d%!` @9QkloboH ȱ5/`z8[ Q,;od},co Hs, 4v֊:jF 2El@4"gW#CZՔAmÀׅ2ϩG]Dm&ʩ/34, {,,9 l:&;yfFN._= l6d`qPb}W7ljd]P,Q(l*LSG9lB$02X|XˇI67oLnͯF # k]w,Q3=3Xr9ˬx̞PA2&ziE)(!qMV}mZ[ ;,:֦H~sQ͢?s_gFok=81di1CrR]W}mzvnU]3s@aLP&|ch7KX- ua]zu#jyqq7W:i w&ت)F!#W{{ŜCm_LϓBJ@a.~By?M&O InNQ[[!S_g1zpe2\RNR:M"74KLMJ(=J%F!\Ľvb 剗0(D'p WS `})Yb s\Tؖ*9VQP/xT )͙ '!sxYfNF"O:I^\+k{m2ȢX&H8BM@&YZdfBGwQ-Gvu[&{_DԾh) igE@`Np@L 0 ;a+W 3޶r[0?t~w_6vK9|l}t]tAKZUgcH.o*梲P7_a]MFmevwW!Ej^ kf^B$B{cC4ggvGF0{wssu@'54v~O3N)ǽ!^O 5z\ߞ 70O3Dn:~2+Ȥ{$0gx= ui9˛۷/W\Nz {Tw݄-r>9k ;B$&iubhWHaזcmęowٱwn=q"LGDc8v* W6}UV~H>E o,/HDe8/Ezt|d$fo_tÁy|- endstream endobj 3002 0 obj << /Length 2306 /Filter /FlateDecode >> stream xڝY[o~ԇ҈pyCNOENPPJZ";3K2;\]9ę| Bϗ yZ9A|vuٷ3:vzls3a췉c{0t37?]Lu0N_= "C<ǎ͗d[͋YC_vℓvs-A$5ʪFhJ[jֲo=rk oS^jPze urUTMԆo GnQdq[5Q`iF us|3xzpm!"3Eܽ4viZ?ĝbfw"$ ԍ/*iVٚYbiEaO{(M,p5k;Q4dMۤnUЅ7(8fkFVmn{ bR{ 4R⼊ d!v CŶteV9D쯰Q)7pe6l> IRfT ߎRt :v3-%sPEA-Úă)}ЩHpj/$!nJD~l;cC'VmPM{VNkbwOiV2mZa*kچR33͍&BiR; +jE+r jU̍A5fWDwVlʥ ["gi*yрNa%~ !'C*3Sz՞lK3R@cVdA6D;肾H+rȕ )[KjûD PB:-^3Xf&&#-M9n1!JEAckTB^LNfl Y.F9Fcm1lF@{rVr\6!|0R{y\GFaH Cad(鄥Ң]vx3Nb^٭^Wh=XYxd 2LcbH7(x,_WU/AMjUNy<ɽarP C]zƷ\X]v3>S~9>q dgAWkώ,04J'~CX=eB%I,c9nlLpVmi|A> {su8L `Ia籥q8摊( ^ɘ #:zzsW+>9bdXGIwű ~_:Js7 n4 HaJ^m RR]= v?ENj3<8{֘XlCg ʆX 5F@G-=ҙk4m=|ZP;wY^auQȨ B{+4(+4;H^ &iIU?N{xyz~"U%ګ,HCJYB5&{Nٔö0OծjՌ]֪fX,+%ȷo7=Mf`pӷLk|ӏ%Їk@L ՓMHce[v^ /,gZEfd8{M_c? p#? _CgTꋦOWg+ g"tI|, endstream endobj 3006 0 obj << /Length 2386 /Filter /FlateDecode >> stream xڵr8aͱ3TMR+TvAq{FotCܹqɳw4ӡLID`Ji*s>gN]-/<pW}sz5-pO_.W ב )h痫;{<||s bI'?s'_Τ[uT Y$Kgu ǎYX[!|xܽxz \G " "Ms(2UtE]^[rDї10fXqwZX 1ݗ]}E%FN62(*dzЇt`e^MnWe9Q#V1[+bѣ\']!8$tlURwDM[6HM+u~`,onc5b`TIwMB v77M9|̏ЂN3/@rOQQd?k*1t+NfXIcf^KG@`&ʊoEOJ[hg:0d(1 l\A /([ O;X;MGuʔ<0Ba&}["W~B-)͍C}eF`t\I d^ȹib<5 s8eʓT6 캹1&{9|_D K?Ϡls&c#=aBG#~ 6Ya6SCpOui/r+rn >#-pq|!r ~T{IBCY3XE>u!uՇw޾_@zb @?q8PRKz_&q_j?M&%m˸bcbK &IJ;n; \SǍxĄ$\u坮..s8]RӲ9xsM|I[W7lf CyXd8!c޻4Dt4V9rP97LċО]ۺ=s&׫o~tniji_O_>طvmw CWYնy}njHOXCp0gD2OBfv?7O/}X6\'ץF>>;09IHR0sznf~͸rA! /.]+3ߥ=;p Lo j83^#z=Gϼ@FB<`9[9<_ޟhFXf߃mA~64,Dos$ ' ߦ*]JPiȤ ÿ8dQm endstream endobj 3013 0 obj << /Length 1399 /Filter /FlateDecode >> stream xXYwF~Wh:f{tN\;58~PA"6HH ~wݾppvM"*8d܇_/>NFrjԏoן.c_h܏Ғlx47w[?LF_= BB`?`k,m9WA1e0M# Fkk3fSF:nXJąr,i4Ng_5@DJf;Nd!Z:uEVI4cϬX%Y!QDǻDjD(EΏg˴C %SZE?OK!ْ'H.b~;(_fԼEv1a&9@Zي"#N=;ltϒׅz:1I$4b4ƃˏ˛k%"T }MgiZfP7_RBi^ &OKZ0]dEgp Ox OwѮ1)YLHYd "aDҜ{*i=+b-g2MTJG[bI?:q?S:unm"}76Hc̪..&&N)X ڤګ%Q4:#*2e;7@QŸNJ`ඤjB2so%G7.M~ >h] 1" _Q]#-yyuwo>(v-\Y+i8q[@Jqd@ǵ=nIxk/,{> stream xY[۸ ~_xΉURu)Lٴ43힞}%zYr-yɯ/@e' H|a!?_try&"AEAr^y c̃U?^߉:/~^,O0%߼?B ,H(vW!%ʳrQ8RЮwWCdB )O_E)`[,Va e.3ŪhA?Q<lBd[ HD`qP=(چx:k" gG~I}|baWRy;RLHkBc'-}M~ͱk8ЮC)5edJT7|<YTmrn0 T9 e7|!R`cSA2qqvUhpbZ9˦Ai 4^ {Z8ZG[9旆)XW]O-:X>t$2l^3oWlMyb䁖Y|f]Ģ LuUj袯Y8 g'8Qm ;Ha/ﭰ"s)^|hW==̰VH[mQ0vd+-}h|`+Xr8l   H4+|jӶ*4RǺ>vV;՛ w{ف4QUiM,]|EKU[>IU?\lwڠ锠Fsܭ 3 8t=~43Y)mQC~۶9x/{m!6oA㽱TBh~PHSuG}q z}kclvv~{8t@KWح&W*H*VYX92Ta Ъ3I"䑀LcP` {ٲchwf,&B\Q ̢N =j~6| lRB} |jʁ\!Vl(H3&<$Y[vcy[RÆ1y:44r"ⴻPw܌ +}vs?R&6Ci䏭ʋ$X _ḯV*Jo,H\:xY$x ϮR5n?9™pq C>\ܱfEDʩc#jzTwql?w= Dh% '3 #7K(NN#4 \18UXB6eg s29@cVZȘ-!vպO;|?|1`J)ܭEg+,X .VL" /wGaKmWoE\~Ơ :Uv6X 8vNuNV{+Pa#Ӓ)TQ{m6/]"#TbY!$t?Ѡ183Aa]CkkB'ȉ^s&PΣ|&LS\cP؆ƚ.fKa;w$lC߅L OaۼYgN崳g<-2~gG ( =ʰ3@oB^~`)ZO}]X*f`rVKWjE+iWgw#~~]r^ i%ٜj. C[N^l;=0ABO=!^;:c߇5sRXy4(҅?d\l )zv2PN v G.[rzuQ ߁~ʋjԡMGAu.Tg(Y<$p2yܢ nhO,>| 2j> ?z~$S>0kG2z>-ڴ:6ϥ)(O[o;y/E*3/'Pw$׷_h|?Kbs_ endstream endobj 3023 0 obj << /Length 2377 /Filter /FlateDecode >> stream xZKs8WrU+zΜ2<ҏ3U3}P,VE/@l+̞bAI T`(cY,d6J&tĂa6OON/Ǿ/cc?Nq&ϯ>Oe,`Pbpuu~濹z{/_N''9`A0Nc8ӗ`TQ$6zrFE]$" {R JF Xm/c7&Czb2y n:eEnqEˡ0<ɽ* I"OԷ ǷXAjE??wOpjRӮY ~1Vj< U}9pNe!,҇3.dbWt)kďPⷕdp=s/uO3{N<[Kf4N8}F8R|y>~X#bi~|"ge5) %1=C X%ZH`L|'Lpuuw'LOr e|> stream xYIwWbYurHXX3e"A,4JV^~+[3/FRWM<8ywo&IXй8`(nwvɀ [xAn~<{Oct].U()2l7wחZv'N, *O~;kÙJbIs( YㄏcGpD Y1..W>)`?;1| 1g]5Mf_g˪qȤ ,jn}hw%>+EVdi}[U/ YS4ƣZ?fY\pJ /ޣD/Za}]J|ğ5-r<IG ߉4BCwmCўZ'@wSn( RhGnZ&.OV_&Mor1 ݬS9CVOSi|e4}lяX,!,tܝ[`iW; ؗLCnEĉ'Kx6yY%C6gP_LQ΀B+s%O]eDu^8Km/ږjjP ԧm rfvCك"fPӳčl5!^ydXkK[Z ;qo_z$d;S\][5lèY;1pFEw,z0zu{?!3¶>F;aNmU(aZ5-=c9`q!|K]$0LD֟ښ&#iUDAy mUX (#9B}ț>n0vੁuRJRҚifrI_:7..P\ Pbg-хfa!C] OHl艮(0eɨsK $6liq{(!Kalz|j&3!0_"}i2}"-]w}ksU*Y(_?/($ -Fy:*qH7v-؂8kzXmnV*B)ULm5@r>f6ވBzyMXE0\qܛ)&蘃W<&-|$ ?6`'ImuWjvКGk*gh_ @HxUMRF0iI}zݾ'Gj AFҫ6R5uuǪH} ,Vh}klm!7zxOgz7,_R%i kQ@G:J/GjZE/LkqHT*=f@rt@=L>{uL+q {g $l /MB&6&ƦSchwWk' y蕚$-}]V0D 6 Lj)Q%98 +j?aA-O!>ṫ& w(g3VG}dk琣[)h^ftz:{YyQ;Gκ?\o.HK yKBjq6"T̠xͿ,5 $jP}{usYvTX6 endstream endobj 3032 0 obj << /Length 1718 /Filter /FlateDecode >> stream xڝX[w8~ϯZoqzK/{{vOjS Yf4MҤyd!|3h.GtdjӃT 7z[a@A}BwpnI. i<ũu,^ŀBeYqmPng\Jж-x&kȋU!O)O}$M;(fLCݖ;\[%f;g!YUAe?hMR/ǁTUr")&>]<d Qr76> stream x]s6ݿ'j&D佥ۺIVoM@ĉD"eo@Jd^b߻X@q Ǔ'i\2LAJ"H%#B >ozs9=D,ÜLD7yI7?]O"&,ǫ O黳&?MO}~b,3@$$O~9%Т, (#95)M e5)␘ LIsKI$Yxa~ZI/ [P$c$ Ar8s4/_pjw^(  Q,9 "Y ˺m<67Ͷ1v0" Ct ,T< lMթm]o;mn$΋禨*Ih}ܴUddC;)O>0Fxri#)(P$Rh L8w4eUَ99`:gROK<* /w8zYtuXiLb 7Nz>HI7*b IxS3BBo@:zT`5P躗}ڇkuRAK3?摐, NJhj0Z 3xkuQc=B%mo'?kI<˯^ϕhF<$3K~~ջWCh<݈Y6籂vPˠQa dwzvrz~GƩ2 XqQ[ix9܈iťrxf zMn-q֪%ǭ{3tIӬW#u{\!QayX W?_UUiG^V|R \]P^{ԥ-mmgIjehXwzؙ8{_uHgՈeכ߆?DGtSv ~BCy[嶃pS7՘=>XᑢgGI5pP2O%C+1M0Lܺ" F 7Ӻ7Xb7uWo^HGӵ+t3[O/3Uvua"Zk)П"#4ϲZ'o'D[,5 ɞ[-Ejs7MV3G5Bo/lIUM%ĠEG#[ 0Vmt KVNR$yi?%gp>DWmKQ+bJH|1Fu{@xEY4_6U[&uJ% GG Cn+Uֶ ,ZK l'Y/{U쫼rmej:.jEdz~4{oPj7j?ZDf|lrK0v76T9TʃWua[ 4~Q4uѩ2da]6c| < D`뱼n6f{f)_I"b/4W+F.ƺ}d~ l܇sᵤgp8^8^j+#w{I,vJ?;]=x0jYՏO_\h Vz L'WIL٨ 0ԗjQbv箵d?+]kwPiI`U[ٸ9"uSrG'U>Y7bNoR85}KSt١%s@ͨw5$DfTX|vtT%O LL@ݬ豴89IRQ[C*U=܍L9]q88AW&xA18=/;!x.ֺ=\1u.p.z|EBzqʮ-OQoZ#M#OL5-Nj@a1y/PV+mܪjܘʾcR ?=a ID%S> stream xڵ]w:=7ZגiCkCv}p@Ob\d|h^ozN>ܟq^HDi/H^ i~|<ޝ"a9W.i4pt(S@2hgףeraxyϓN8x4LX7?{aIa.zA0.zx]E=҄{1!=ZO u877##x=POβFpqV RA҂k:#ZNh+/ikiZd m~T+WW#ԋLqlPjs! gy <!d'yz 'oh%g+VZbVkr&3i-O~ ,%3.j "QU(\cD|jS^Q)?&)`|&̕ 0N0{9U)cj$1׊wIMQ SLS8iU En6Eì#EIBQ5fT8nd߽ЛH4Xj$(U .*/gQl![Te3E߃]-s sC8H')6rf'y v0:r䏲؜r,6A4 !HCG3d,0{*mNe8ȝ cs VeyNG0B6p sIuq%Dr`UBP8>S%F(nNqY{KnHœC W᠔TS]ݲ}qp#٨)LFg*U)}icbRFO! 7+rP\y2,~g0ml:@BUhϴL 6ΖXOv3ʍknMj[jBSnt+zI:lʱ͵~0=ҵ.p\C!׮ka4وrbVGЄ2d\qRVCpB<1$I~EマocKcgY(`ІF@buol +],PL7#"+}a`/y̕ksEPל0WЍtudTjEU _]Sι t1%_/2s\VuT+*t-Cw%kWvhϻ\0hmSf~#S zw;:IɋwtyJ9\TEM9u"<VY׏X\{^H*cPC0XP QwVV 9gMfU]-g!ƭ_JwYc9'M55f.uU(p$a<1! Pp!c;\emggR{f)@$L0I4c \n??M6*Wozpq4a0v2tNwr*)AKWY MD1B/LmC r sPtL}|PIҲD¹VP#56RP}:z?X%ۍtjCbq;x FWjRAЩK\0E\F颋A1A[ %RU-̽gj)eMo,}5+#%8AWp/v~)#nEB|G**J DלYŎa~[x<– *ݪ0xxa-,E~:噍xh=RgYHYDn=k{I,W 7,gy)m!ӣYNf67mOdt 6w݋#^S{ |0_9G9TMԴH}9~JâX/z?ƛޠ0ͮܯ$f)n{d`qP`g׮m,[cj\'ݺ=Inh?W^1pk&^m|h󷐏EcpR#9yoۿzOX=ѿy˿%AJCnGRGxѮTY endstream endobj 3045 0 obj << /Length 2454 /Filter /FlateDecode >> stream xڭ]s6ݿB>=fM"gnn<@mLH.HQ3m^b. 9ۣ77G)SLdg7DЄ$" j58{wz}sd#dd2xzO2XU Ňo7?]z 9SGTı룯lk?Ϥ0Y:{rYj8$MgJ$F)Ҍ%9X}t\'͵aīm|POx"{a7 Z_;;Q}1,k puղ% q.0*{2wt `dSټDoD(!]} LD@mńt,D{"g4a6 OӠy$>ؒ75 y50Ig$zv .OQ:Ta,mqxnˢ׸;+BP>py'ЉTDq斎UQ: Ymulև ЋjBS_@k(hm+{/Z #$ FuKʆ2|I ϣWdRvAbŻSadB(S C i)󋳳7'IJgp5OYX_=Q2_0^a|ߠ[voo<$B6خ\U= E}˔G^5q@2؟sk&„ 4c>kj5tLt'&Ƙ:c'KWQ$ 4Iv5PV+-h{'WB*ARuwe/.8p=`nK{~aX@"QTAadLUy u0q {s#cMUe紬p!+CB!<|\HAKw8]Lת'+y!Ac?&.$tQe9APve4)Mߟ-~P&niR; Y<#R/ lܦe!o:} ^3Si k= .^jyiVm1-^ߓQn0[k"WO]9365fΚ1cUMcw3#6;Ԍ{BagM;_Ʃymi*[YG \},-ϧu `BVSњ `2^?tܸڃ+ ?|DLt'MO!@7dEJ6;U.ch&fIC(Ga߶cnC B'ѕq-_ "Q8z-vLj{%u^Vkk_M#yph;T>B{z EύXl;P1/7ʢ710t_Th@D|}yEY*OI4BūSD>8/^h'ʖc~1={m]}¬22pyS#--ة N&ɧ0Yr3vS]K)oiT{VM]MO[$H;w=Qu C H ;<&f ^'[~ad7 endstream endobj 2929 0 obj << /Type /ObjStm /N 100 /First 969 /Length 1387 /Filter /FlateDecode >> stream xYMo7 /!JCV Hshk`$@Zθ3uz9)*i*@9$k ɚR aBGW*5kAD6JLH 9`]C *D 6C4!n:ìpA ;!w/E}n?c4$c{!p,aG:Le<:Ru`ڬv0e_ $fc[&dj* `3Xj(pal?]R+(4KAZMNoF21c_,̬xMDŽiW0Pf㯻p^͛7M៿wPlpEI׻} 7/Ot-\B^EP5fqu 㐖/_?7N{cCAXdUUb cdBϤ6_"/"l/A+6e\D'ǧ'TzOf'po͌: gF<$Ij|e"syNL`v24(#huA#hFOteƨ0ea{yI;7L$ 'rsښu<0eYwwXtF o/!8ׯI8zO$uծ[1^/fϱ ĉ5' >-?wqgj&0ݘJ\۱cL;Bcz B<=zu)& endstream endobj 3051 0 obj << /Length 2239 /Filter /FlateDecode >> stream xڝMs_Sfb-%=eSnl/v; K, @YR4&I_d5gg>$ &I(l7&aڞOw|Š/v|Ȑt7Ϯ7>=8=slqיBGvI9O1DPMx}O¼{&D^GGI(ŬI.o vYIMR:/WLQeG"Z*ݹYjyMx#N=0"j*d<.cub[ E;rSDZc'"kaaam0cٱ`<;-qˇOD@p󁉦)j[5d޷-/|!\mZOϪ1 }P֓:;cGyg-؟h,ێ / f_7V ĎN[Q n5u(NXT%2 c!@]|A3}-D¤4O((:d,PWױ~ө. ީSCnpq"u=d: `]!i B#MLe:okovt6ۤɗy kSeJj`*i EKYpUM%M&Gg1|WC;t^#/3B;qamyJVѵP-6Pmh郖D:Fj "^~kN:FlBec袱!:X Yf u8%AOq\ޠ,ɷEM?dg16AM/뷶 vy٘ON~Ivao.ZzqVje'z~'rfK,t3vzǭ(NP㏯&dž" /;͏A<]ȟLla(X,[/6plTgyztb #3Ne:dPu6kd;i7_+Ji MCKt;29 ZʙXqij(!ɬZ& ҞxHFo \]`+"3#tLHy / cn-+3"k^%xq+axRpA2ZkPS{aI:I<QhinMh7q#Lry<%0 7$^ ~Pd6s_N؞h"6ճ@X^ OǗv躃"~|nwUSտҠ1#N{@1M1 -fR5 Ax] q )\j#I+a$yϮ9t[5w24/,Y(dJ ,iŅ+ug.e6_Lѫi ]ޓoo坊s s2kk:?êU(]6U0O&h O=ŪZ5\7q!-nc싳%t HILy!u:#tu z&Ju85KD$(m*LQIP03z5:ѥN5ا̌PJ+K'h_dSaPF p/^~'985 !3 /s b&8_\`"J.Z endstream endobj 3055 0 obj << /Length 2115 /Filter /FlateDecode >> stream xڵے}•Leʖ\vIv.Y9J`@kM|}-cXϤ:ZV2ZZp~r>qIB/& +r_Vz'dnn|>O>^ P_O<{n/ 2d??=|s+NJkOaa'K82\[~ + ŲBR8q(û{Hb }L &5bNu$hϨgV!vR*u軮k;$Orr'( : XHCU5q#N><=ޣɮ *[Du-Xd: ^Wj&YEZBA۾jL\ tY}8]Mw^Z|rZ$8:-Z o[Ҩilsh{D0 Gx.KTҏr7?8Xj[.bIS;$[mQYayeeAXuZ;8\*0=!=siC/WLFǥ*hNSP^AP +uotKmVy6g}V޴&b횡qMXV_ęIҍ@&Ad (8Rm50U K Cbu3EΛtis&ևuv;"Ceѫ 2"i >D"\Y3bYjM!._@O!olmWҮa?qܑތIoIadnա D N G {v^jdmQ2]lTM/Dq l MVޡkQfeANWZ$v3H OfSRmz$1vfyZAAb%7y̪n]gfKa-;򍾂R֛f:xP 0;\dUd* 2K,-2,*ݴcP1ݺ,ASbwFS^0+b6t;Y0XRӬ ?h`R֔ Wԋ<u\h*4V w^9ž`dZP5axIwkz%X|b;c5>=:B&wM4ߦ( 3KLbGoD77lȳhǂJ`H(r @QK1ĈAr_K:qXH0aa'(l$yt  ^D:Ȕlv"BGD~l6_9|4st%EҸ>Lv}"A77\ɐr#ig;qv44#6K~)N*ͱ8|n)woys|.&֞klra4&oSY)&u%qcv|0'=?kn@sȿ%o%;dv4mg+K- /Xd21lш+`ETwH aru%5 mI> UO#_qƼ,ɿ~D$G5>LdS~ gWp2r|s•Ӈ{ VJ ='% Ax.?DHs endstream endobj 3059 0 obj << /Length 2097 /Filter /FlateDecode >> stream xڥX[s6~i'זnRoj)4}%""eHqөC\;O&|k%&XƓzp&U:IbPMo.>.fwS_FSlG1~t>N.S_(%$ ]Kwf ɋRd=w>Ya g$b2?;xߖ4"xDgrWs\.:oVfS0]ZkX[YB2LE릞Af0@IU%nEv*al,4 5z}(UUJA9`miTD4Eb5~K* 0mx_Ǿ˲;oTWT 67{ɂum}mpS:?"6v̢3k Ikτ~MI_UXf[adnAڶ6 Ÿ W@.x>k% 3 9YE_SLg2 u(԰Y{Jc:q:(|I/\p3X4/Yu]UC7i{mw&hͥग़ !R5IXhځ0fR>sc\Úw n2F鬐A++pItvύN@x &K;,M6s1K[C1t︂S\`!RѸ'=bRc;IML6Y҆EPk;}s{լ; m:. QS®PtpUN=T[W"[ [kc#Lo.4IѲ+\|%qÏU{DooϨG?~ m^ ?QsaWZA񗱍vJ4iKR"T=EE*kg5tOYy*aϏ5gL"ww}IBP[ٹXEsV~|9Ow7D̗^$mvq/ZĖ/X(/>3!$SBD )`K&/Їxf#\8T%-.Ţ;Xz?p<n~?b;LgCjw=#J"q.(b,R&D֓]gT[GX1;ak=Bz )nƒ+O ~' endstream endobj 3063 0 obj << /Length 2631 /Filter /FlateDecode >> stream xڽ]SF_3UXtDY[;Wu!AYr,!z{d'M^Pg_ӟc(]0;y>a$H4ףb@ 94LF~vtU8NӉ?!4% 㰉n:|ُ'WNG@k1ʖ'_98 ģWs9JJ 'aW8H%=%D )1}+UVYvtG.(9/d_ۣ)q{Gnz",&bcAȓARqtH&vAkhEA"3OZ,j Up0Q| _MMj7O2Gs}Ψ07dl_,c09uO`Xoe_T'3@(-.օpɸW&˭NJ@8`'}jt`_ $P3Z/@X> ./&{ڈyR*N9<>QJ|^rG Vx0ywy0a??v~rdw@d{؆}ށA$KWCᖴli*ܼ,G삍1Ot@U+d=bq5$;K6 P;J(-pY \4{8ڌ׼(Cnc~Oœ mAUkCݷR0Oϧ7l 6-Ou*y2?AoyHp ʵVS dj20Jzf,+G@~[5:]A"D1 JT!LVV) %C.$#`Co-vܱi>\>^zrv9=?MEEtblC..?MgD u Vc/XK)c!E7Pmw'#'#$[Z-^Ӗ|a suc*D6x~1A+ιOBvuFZS9(S8ٗ,[6e7ٔjȐd [V&2ʣ 6/zKbv"}.eaWT^lbav^Z A=X[z ]]lA|+׹mN_有 B`Ƥs[9`RVOL{V:]@^khxwWNku.Ԫ~\dMt&ȋy6O~s#* (=f:VkJg)>ҮPjl[ݫ99.[9$bD򙞷d"cv~EՍpH}of9 qkh+.oIC\{=އmdSr "禂6ҢxC]l+VɌ?Z`wV`U?"׳$|^>5®CO!oht; o'SgKFPAs U7avi.BFl^ vUab eDD_6xk T^-Rdh:(JU~$+WT?<:~+pܶP?((@۲•BF骖vt?\J mxOvXkZe}S[']a_&fUgy* nZX[Ym æ%7~"\gI̱ۗ mu})u "ݢXJL} fx3lJfNOY[8>gfzFN`6b+3!~Vz[6 endstream endobj 3067 0 obj << /Length 2319 /Filter /FlateDecode >> stream xڥvH=,~/0U`=Ӟt&I6̾ٙ9\y5^ׯTh&=ɞP$TBV#18H"' `4_&qp4 \|1ź|8>mVm??BqZW7ؖQ$] >fkn~?#٬NQ71Z#(:{ l4`DۖPlbHP #6ƾ6J\X\ωD0t"g64K,)oFZ\J4-]VLE8cZ}U*ݤWUU&G&YeϪKgjR'6, 2y r>Y++͓l4 & - )r€ffШ b^cG6رI?,߳ C7nM?kB"!G]3QGs&,9 Uz*tSgSiPAϕHKB2f$cȗH@AJPK"x{B؈ڱJ^HQʯIq5#(66 rݒ!,K*gc;&#GI$HrqI,_s9mF',I(4yFSѕ[ +]./Xj^so}o~]Bim@4ׯ:^9vQl.ޮӄP똜~ Ec\뜠x$LqߊV&/"OE>*Bqa gŮB ɉx<"]J`vTaۗ. k W'~pb`hvՖgcz$+vV]9[zwHͰ=ׯ6a~rzt> ZKmr(ɲXaTX):q7Ng, eJk8K8Ta:KwDćC{Pmt+t9ȑe^bq]bRk.1bL3ts%Ak+"<gijл8q7$.ڄ'L!3wq^ y!"5KO(h@Ɨ8=Ъo4q,mhkWA|lBxYq[%F rB 1-py[.oǪx`5(eTЎE?y @騦~5ʓ^))JZtӫ9Ei?6]ȢJmuWg:K]1^3=T]ZU:G5L>ibѵfLBĞaw_ݧWUO/,r.K ȖFØ2.]Qe%u nVa XtLɧ'⵵ĵ*d h7زSJߋot!lx" czl!d𥊇#FPŲ9YjFP\F, BL&gLBp =wL&rfqbHǸIT0fI@7-fd,iPp;IWK;d͡w%ᄟk' :6 83ni"`K:|8`#s`(Qr0ap5dq%Uմ-ڪQ7B**zxA:CmL_{Ф{^z@8hL~. C1Oe:>4l>~LJi: i(͆{t/q(@^M7vQң4jxv J N7f_V$Vr?O S "g@H'L |inQxk/N~~ 2+~~;*P'0eY$)ta{\+ĕ֏3.r% @gU8C $$Ja-!!L][8þyCD)%8?{el ꦠ)_~n ME[?AдqoQo l悱-֮tZµc endstream endobj 3071 0 obj << /Length 2525 /Filter /FlateDecode >> stream xڝv_7Spxg䵝ػJR*!CU6ܑ={g;JeR7|;I_87rm'TFjx63^@.:kNE_k k \Ėøxz!Lov0!H8y=O:uwWh깲tK2Eᝡ)uѰc3Fbt3~|{ŀx|Svu]V=v.\NdbǾ+wk^}6$oLt큯$W`EQ:2}6ݼ,/yO0al^d&mp]?syV5c 'pv;E )0fVcG7F`jdzy "살 צɟMɿ&0-qyl\&4o&:@v5|AX3G0uS.;f:HW~dAtd<= rsk:ֹ}2Ph/ӆ+rϨ.kN)@-[&|y7O Rp)6] ڼ/\?k1NA\7 N (BcB=s("SF`dGb㒴D" 5]]qqH7zJ|#u` ̐N@̊@&2t'xv=r!\BTNEr_5U;='~jlF7j^ܡU-֑x(G$u}Y0HT#ԋ=3JsNQJK=6BL"]h%a3AL f*q,͡HR5p7?:RRqѷ:{s_\F3)Su#w}ݿSOq*ҽfϱ? Ł_d>hRH#TaϤ)I k b©(/%l`$Y ٱB2hRs39U@l’b8* d?:Fܣkdj˘tWy(n1|gg~{tS! AJlO. tȸ#fDs 9-1 9|zmI A3DIBQn8po-[5I>mH=酛RKHQg ęqPXΨP$'539OU2uGD kI4'f$Ԅk,"rT'ZxϋQK_> /xi\32r=ucɉ\r9(埮t{N/Pc3qq;T0mԡYF~-&oɵT8+J _#O1+'j~) ] ΃p<<ۏ/w6پ潖3t8!Yr1J 3A-VQWyn[K|:{*2V].7$7gxYO߱_2[B5G"wp p NCO";+ʼ Dv^"˫xmE'iwg <&;<rᛱQ[bsVWB#/b+\=K[/zW/0*St|;%/uGܟ5'+9o> stream xڵ]s6=ӵ9}Jwt^foM٦cڢ릿eGٜoBHnzCGEXQ:_2FE>(btd%*(4IU]Bs'E\&S]:$ٿof?_y_ijFo~cnGqb$6oFwWR3q ZeNQa^!f25q,vo풾'[>2*QKRQ-X%/4! keԼ0SAPǪ~-w=@X3@Qpa$t`5*z ~n<@|vs[ՠ}<.3@hLpXW5M4|OT8eof-[ B8^Z.ۣVtLfCl݀7Tb_7 1D45߷0EjSs2!N&"|XH^PN䈃 nV)@l4pumKv<jW~.M7;|UFqX8}ȿŐ 8̓BATJ *vA|H~}P$/eXi[B]WL$i7;}ôkz0!c]k٠$t 'cdq%@j#"g^gG]8 )8EkXZ)$ ]\+&7GB.NH"CHDyG5F!;MUJry YҲ9~l֋}k &Ahn;J ݁~"r9N'P"'Rn8B)/B%q$j@|B,j%` v6_q=g.Dg$UtHbnoN$H4 )|&C,XCST')Xp\~\H˗hHfU)Ul^in.5yFpҒ`MEf9#ۊF=d:{RahtrdJi;Pv> \%QMѦ8wavQU#nȨ#بCHxf{.dr6,TgLO9sq,=egNhܸA^Vޖ"ۖUNՂsMպGzⱯs Մ tzٙ[~PvRV7)4ArSaU=D.ARo+AY Jq I[or7f`XMM)k2ˇJgw@Xx)tI*{&2 ai.ep+sʂ3\ zz$;M}f%ە%uzpKFؒvbMj,M1FHHJA,"wvQak`߱S%k ^}y.57&nuB߃]a _hFM18p4ORҽ+OKD.s_UW4Rs$ p6<}7 ԉf=FLj#D{y/|Kulz'˰#oe2)NL7٧ |3c<ϺW4awFۼuM!:>Ry 6ı&c z/ЊĚt7RH0;?9% endstream endobj 3080 0 obj << /Length 1754 /Filter /FlateDecode >> stream xڭXIwHWpzz؊񒌥7,ċE {_? $dM/U_3usyvt;IO}g4q8NSĹtFs;4ܝ=N]ǽt*i9D\M"λϓ C<|9;`ĤpCgО;ÓN7ma FBZ[Ri-e`s 草=;%cRMJ B9M[6,LcqY8K bRav|N*|,O * $X>ZΧ2)g%ptZK_$Q[E,M"=1+pnۓEB_/W6V-JZZxR k@a0LcQҳGPC#V7ly%%{cْEjʑ${cu@-T8dlC3]ZJpz/ T)o*^h:!@3`3;2,,8Lף fRgj JN|mzcLMF mZ>ܞ_"D W K*6:(p bUFnfDGyT@{USr,_/E)7D1*)6A)Cxhea1 ,!rp ad/Ӥ( ܶa|Ƒ!.{#Jg`sr6 m,Rܚj c1/i&@x^t.fk3>I+Xgv0`6oͅgMgU0W J-pm}s@*o"1KZO׃a""ijHIeP: |>&M,5Qs n^.yyڕ<>mad3d H 0摍'lɣE8?4݊$м5"Ѽ/agv`Z/wVsc|*d*$. "]5T3^5Dg3VC]/$t9foSU(UL 2~Mc F|ZbBƽMí_(8p̪߭*o#~T,EҰjnLfGr#K$6ļW3y8PhVBF-BŲbܰ {!5~&Y^.Ćzf+H]&*%ՄwF"ǡ!qdWA=[$o SեnILzSWVXEYt>wJ7'w Oy|óP  np!ݾKĕX U鴺bR +V]벪MT׃O" ъ[+YkNUj8:Eњ+|#ut%S|] l%/l%wJԑmv̻?%qRLyodz=QGkzau:i/𚀵+UnNUB=yן }}şR 4%pmeܦJ<(.} FW&3[MQ endstream endobj 3085 0 obj << /Length 2681 /Filter /FlateDecode >> stream xڥ]6}/Y3D}dۦvnnz}%D\Kޯ?iIL o\WrW~*Yī*"UBlu_XOכ L\oX} ,XzD#RLӧ?Jr}Q*8\ǫ?~YIң@ƒ>/>~a k8nm"7͂H$2v LQ23}_‘q,&+BJ8r˱A"ק =u7Z3_;ꑈsBm)pŶ1qp$Kˇ'1A+MpnA`&"KC.R7$Kaebp*ZB\9w7h4 L1]q0Peitʈ{%7)|NɛUg}`x $[F7c՘R` .yc|̟2 0$.z!]kAk EJd KmUN-ղӌwX*NH+jD1?.*"Tq*56q*p):_2, rt=40" y14]#KPV8ʱ%$/6BX`"dYk+<ݥ:?cą-`Ld~U~x!VȶPv2y`m#$i)LE(FnjB7[/1Y НLQӧ}RL9}Z|5M78A&m^Z>u.t2. •hYY"bNYݵh͒=,@ڒV_`]!oxB o48:\Mr٥+ݡr*-HF2ΦZ^rF9AԢF N bwCȜ躡% `?VS-] Io&nٮf"o\1nw/dqi}HcX e@ ]nѮ;%l )f P"iO+6"TT2[Z4&əx.jͺT&]D4kZ;y)y͘Ny; tZ3b|zBEA[5IWJ_{۝}l=xcyfA>kn:In:XHU ֓<nP(h.:3E ǐD$HD6M As%@X(XJ؞?>?<.xfֶO#Cc7 EҞ8*Q)>_#K{('@S.fi}=ZQK=m "}zC4^a) N`q6TR"rhj d VHın~ͅeBɟ 3] u|r]/'N:{9mKYe}>&{KmYOKDP>vim_vy?p>IECCdNh.l %kA+XMOٟBwUmGΓLRg)E/R* Ǩ~uNcr/69 #ChA(2.3,:} g$"8MgAגk`k1n16a[Ru m7\K(`ny&P4y6pQ)T`|g" q~ɣݎqz|Le}0dP_U/{&b2~GtcҎ2n:a7,7SKm-\TY Zp0+\fu=s0o7K݁{ C -Q/ӶMv͊3ǧ~@#2\#3' ^&Oah~%Md OrO[Uj KEQYG)&o%s4+\;S)@ھhKseYo}J|[/VG?_)V$CEŝ/ T!D -<É3_$Soo]|p Y ȉ{Q`Eue[~hM%S,ThhNcS?sL V~fѺ(T<i̿ endstream endobj 3089 0 obj << /Length 2028 /Filter /FlateDecode >> stream xYKs۶WpgL\I6+5uR7Fʢ!TD2ܹ<Zt+p^y@8X8x}?R(TEbIi0˃×?Lf.#*pHH<}?]4^F$&"};^\w~]| p?O$HJ7~ 0bi<MC3/ɀeI؈, $uD+C v S!쎻]Q6Vf5#p!˺Vo;GL:ZoudAC/(&3|co&@䚖E-vjTp "B8UM3.ITQ߇U1_!mgn2a\wnZB x3} 'T9ٲu] \-ݍ{0L=8\ّTۦʿF\tJ*ᗶPͷVn!j'VțZPAT删25!QkȌ"&جU5vD)G Zۍ/E2&WNN JY_ӭŘjbfʎ1FSӮϫɊ@[.8Ϛ 1b+6}4y]рe;ܹUdqʶX-&41=و@r ˝m4}o nݮj s2B[hU,$Fq:DާUbv5eg'^BHo=9k`K4bDR,#;޽D/޾y2u(u%2XU=p6vWʋ}5)y3`(L)@B>JR֯0bQ x="I"G{:תCC{febğP'CxScL2|r$bN #(WjW4&~I;`Lx { "X aFF_\FRZ͓ܻO)E8N56iпy$ T-wI½EVeQW bU9lȃ/Hw4c#Rg^€XxnGЦXW vSn )U}c*֭ft0LsP'{3FbciI`T˺QYbxJ]4vnglvcCKY[uMiGkT*0P(z$dF_0UBU91'}4GG[F vfab2 \YUwu*uᄦ}/-L:%d@[ ydF5uw R/r,Iol ̽|T;HL!t lU5 S}#Ѧmy[]P$a>> `P;RKVjk$A1(m3xhJmV:Bo&ə$sg(kIOdؔ=qL4:6y >|CSIG]Ռnwr@cS>D&1|WhaIYfh.v0i02XO) KH@I.Ђv,eQp> ¼" miR)t-Cn֍2|l+(rafa3 ϯ;;>EsPո^v0L}32}zpXx7A'U(:(Ʀ9q]1͚/v־ B' Fc+JK]͋SfRY6g57.ձ^ \i*.z@@:” 3U/b鞒8 D![TY endstream endobj 3093 0 obj << /Length 2213 /Filter /FlateDecode >> stream xYQs6~娙{Oj'gڹ&}$"U[`)< ]Xlt;bg?ޜ}*Fi*F7QBQx(e:Y>/~~]'FKyB]Nr3c).Fg9cdڢEǖ%a:%cgnUWHj y(b\wYW%I2ٙZ01$ogWN KGpI8fmu\)o5 &PoSakzG:u ug5RyQ 5wR1Af.DPҔ68LfùDJso{B1 v0|IPY~ #8!S^?jŦ6% F46~3k86\wL`_-v_ټ0ߗyS'3ga<< Σ9ZܹMU6YISR¬}Ѡ؛!W ٺj䰶k)i[ %):z۪ٜA޸i9((Cj_{(4 Xhy`'-c. ZuHSvSLf:wjw!aB%H}ޚEnM7ɹǼU /_5u/HiƢCyR_+Xjl[AgHQ* 'DD?~JcmnH)7o`*l5;h]=֕2<2 4Lqp;G;`C (8>b)M-lbؕgQTڹ3t^Lca \]@{ʨ|90,/;Zr!9z t#E*@1;d;o~ ikB3ݧs=Cz>lj}[@QAo0 S@Q~R]V'Ͷ01G$Nf xqٻ7aD9 _]|MHڢP+qo$f,$2 8Z]y!}"YefmNBFpz\ R2iB{z8#2m3&DhpGnhI/Kb_2dޚr`]Bߞ0d1H0mwLDm bmw61 ^6M%#Pe lPIave=}ۗ,"IT.ᒲdPSݯ =>ͿSCG7 ]>}Xs[E~ S{{[4k`Z,(jcg)` Զ//fHsw5+=zs}oWp(p>lx0fQD~3lEle~"!AHlDitɧn#R/ _0?|O+7[ŝ?|hk, xO?' endstream endobj 3097 0 obj << /Length 1558 /Filter /FlateDecode >> stream xڥXw8e/"%&n7Mdco@@y nilnjh4͇fF8pw#bDvΌ؞a@mϋij|1=LǏCC'= #j>'CDQn2_Y`<; c pd51Rh81c'9W绶0^_G˜;GJ2u2rL[>|R2`kQ!sD0%W_w$D9+! lFg9Î'v(JYoO'uQꁴ=yۻ|}6_E=(8_.yY\߳)<p^'W7ӛ;=TH {VCuBqh]C+HJ"JE6PKd:L*ҁ h6-/VR.$X'pgSga.MY!s>ֱ%H[kib ~+qz=bG m-@_qgT@\P"?o^p Ѝt7fǠM6&wC 4YU.>H 8fEHZ6= cUzɥ9/PŪӆ}snʟ7]y*qɨ̚I.Ν{.5Hכּvhкd!3G&=)`9E`RthuFllJ#(]Ak Ӥq,O>|] > t_o%BJ7*WJ;;Ne8!@7EpoJB$Nth4[4\AXd endstream endobj 3103 0 obj << /Length 2342 /Filter /FlateDecode >> stream xY[w6~[S%.$G7Vn'ٓ&!')_ xZnvO `nf@΃;?_᧘:1C:˕҉BFe|rr~7X1yAnzW?32 `vb1- $ CO}'_p:Gøp^he$4P?""N$5'|ojQL@6f"|20c7ө"$2-_2Ab+z]ҌoE.bpv^HbI̲UժiG@As_RM^>x$KV>/ bx\űu^xhdDlZFˀQw:&8riy5Ra䳎b$-XHY&w*mqB, {Vjǫi)+C>,BCPV: H ^CtJgFθFro3R#堣_u#26sn1{4FOeYWeyy٨c244 ]s3Yu"Ǘ]QG5ΏWK|˩jaѩH?|j2{,$Ѹ@_on>.o>M+jtߥnF4 mw#>`Ckn*3B-` t03&M`[暵0E c&r>ڂw9$ \uxxܜ`~Kj|01RIkTC>cޖ!'I}?䙞yW.q G{?V)D]E v?l|p2¢b5kXFĶh#%}#|)h䤈USӒQ YǁmW'H*Cqܣ-\Yga;ttr[LZFFYdV]=2ŗs 0MdLmu: J6{ldڹᒐS- ̊nl6\0˿"47¤d,nc`rf v@" q-86f HpܛĆ &me oj ' 3Sڥtiq6 mpCk$;x 0X QrX}/ 3y/c/Ph<ωO٤> stream xڽXs6 _"6ivIۮAiWY$ٞ$@J7z AA2ss^_]<q'8IIM?ܗoG\zA̿^,p_/=qB\pxގFwGo/nG]p09;0J8dyGLa|H.0~ gxKˤ2iF~36M#<~bϢw<֪lF֍JrV˼ j g-_qIA4(+Bnd5sQ;v!z>WF7X|iYe 1q~bJNԟI[ռW 5A"/yN8`[nRۅ$ժP|\Hsi/OS R*ZdmU@JO8y|r8i֫UUڂ-P +ghi }4i8vՙz-xA઩,i8v bvHMVZife2󶪑aG k(덚dYM / "sJOO;UBmH090}dN`LK>%F1 m` ~ ao E{˚nH7$53>kdBD)`[i UKP"^YS&UDf}l֦ +8a6q&b2YE:c3(,+$SwӎZUs!ubk2/%\0S%;${*ɥiIA-uikU @U2;0&<ܭmajyˮhR ˥ X䜻 (%-nq8D AvE0WW6[t3h_(40"PKA Q9@ڔÃ&$t_mUt8{mjf?5*Qo%[MSLuOwZ8|;$UP8ݫP~;3H{]6UЎtnUQ1cه*'zzkׅ}6UCS5I*+be)k Hu{Ft]9CW~ Myz@F]feiafRy98T#u ` CEf*Q00҃uz_f~pIQb5} 5P =+$:[82e(lc{ˏy2[0.gJXp~yd,ǾH~J-80>uBjgkS}BxXc3iWG&x@jM1L޷hxez!]\#?D/<[Ae B~( 1 PpԾݨ2Ӊ Oi;rv^g|,7I%" }Y@p@ UXXD ~Ihas]YH4* tvqj#%z@ʹU emf/|\O(o%WUڪƶbe_S'-F&Fa{"4 5KCG_^:-nrѓ/:lU:;4DјMʝMX`ט_|3!&8+֭L|j? endstream endobj 3111 0 obj << /Length 2077 /Filter /FlateDecode >> stream xڝXIwFWpx4ݭ=s"6;y&a~}Yv2@TZ$>xŷˋX b2,73G0r=ùnr> GN̆#?OɏȻҙNÑP nzO../ʢ p}?̅[Fr?| nSM6'rwĄhEyAPwX`z\3a{İ]SRy뤤;ڌ)ͨg.UM`5B(s:5&1J?xA:Cj#7)O-P1NjB;iֲOSё&v5tC:~JvWxiZmӮ, }nr.X=y>N:fA,^qa36a6I]BؙtLu ?GR9gC؆GWV8u>#;!J ݜ>>M^./L%P8z`A UZU]8p̩>` S"4"HPxI*C<ңUFnx9RJ@m' X'u,1!hPsVR&>QaF\n^NR1 (ʛa޴ XE|;Myx1g{?p/GmH^EF7!-cmN:ոn%ԾHWIsZPҲe h8C+Hc3  OH^ejw6n?t0*Zw[Sq24>?+qy$×"+j} ˭wqO- D# k܉fJQwY,χdX< 4 }121g*Flԉr /U~ܞr6*r9-ҭ qʈ 05|G b؎Ubή Tl9Ӭ`/0ї @Rvm+T~k ᠘+M&y !-El>g"m0f`5v✭Ɠx6ߘd/=A'2izX©BV`=)$ckl!OZp7ƭ]cJiEm`.9#aWu:]"liP4a@ hәP5.wP)U%U$5v&3~ޔ7=봪&~ʜYoЧe% Fl׍JzlV{q=\u?zif#g >L@qyM㯺,x'=F uԻKgU{5\0?,=|% RT| nqU7=ЍS K\\&c"wUmcڮ{UMWNV;`FϢRۇ{OyL~\(kGZ;`?#y?;I}nݸѵ ϓU?v67YþBNJm\e+JOIvJØ`HTU50y{yx67$ZX\'ڍ&ay!% ̕48`Q 9 gahkPC P6n車L(2@?x)H`~2D ?_KVu_KWkf5p6~^~UxH_ P@ǎ?-' endstream endobj 3116 0 obj << /Length 2402 /Filter /FlateDecode >> stream xڭZIw8We@gbq֤qY9P"-CjS@ EԌOPWd9'?ܟD$?H!'ω>|v.~Ga_?*EuMm|OP{}XUɬ*|eW@9\Yv,?*Voxʛ-c?l"^p40r-RǷud9; |0)߅)cSr9S)uQ20ۑvM\@L&Ӟ'H/;@5"xS(Ń(VcRMVЌ1B"N#B v9]]}5^ttC GN R :W5N-B15of I{ۜI~&FX]2.f  iiDSq|gk`nżqpwyҸx@V꼑MV5ߨGǸ:S >ESM{Ya(*-;yLڒ rѥY*Ų۔pء}aA8TN/1NZ4h jbDǷ:<4fh^4#Yy$h0W^P8qćZ 8Q9Pn("s[zy.ثk}`Ng8[L6/.5]=D_mjm10/EZCPγ\/}gU&!$w]Q;jH6~E?z:$#IZ'VUEZ"IO(B:#C):7̊Άg8| @me <7~]IjL\u,$i# f%T90>k|0 foBN.˯~^[QRw`ɮ)]e t{B3hafħl] mP}ԏccV }eȕÅR L/k}bۺ\ArX@5"^f>r#жh'#_p P9vL-MBHgx3sCGہMDV+OͰ k04b ERa $[D%[Z8# ż*(][ &XmZNmm2Z^f 9s|3msV?ZE 6zu[arjK]ר)8VC6PkmXOϕttC wǦMlolt7 UGQ \q]u-3lI\MځݏKŠJO]HPs9$y]c)!q<~YU֮- @m5k,akAVW%udAy:DsZT( ='St|jC&?ˊwUs9il7/\OYw]#3XpkM"Ϲ}Lզׅas’wf]ߏ@[`B[VaVwd%^k܄߮'Ζi4SFB:j8W4jW endstream endobj 3120 0 obj << /Length 2775 /Filter /FlateDecode >> stream xڭv8=_'L!ERSɴ4&gXrYXr/@$+igB$A$nn&f~9D? pvExu2fx>rsx%܄»<~9N\QqgW_n~>:9Hb&M쇡-G%f<G;r=FF+?K!Ī'/ ',' cbj;h1Ym}Slmb Mȟ@'qme固)㹊z/aRv(-gQmMmoe%Jdta%uWup?0|ʶA@vYvm%ĐW)W<~"BX%E'/aS?/2sVz􄸷@`K[7]UTw#, mNQ?,;%bfU47mQWS|OmC1(| {UlJޏX7h8h)*w^O;[w|KvV,Hz(leNdm}jkZ=GFj=eI-ch  NKph)\jVQgp(/EPdyC>gt  5p -*B0p6*0 8]/w%O w_Տy\L+KyÆnE dn;eyv5eN++*|T8X3t/rRPŴ%h>t,v[t֡ZRiC5}eS8>0񖤌5} f.V aoO"ɹBhWnpӺcW䱷<QWBX1s^ʣ} fo1 O|\"z:!=dGv.m j&heAb#UZi:~vZMce)7GٛU!AGcu~6"S!'(:KsuQRpya)ϨF GRͅѧ>7mm^ FR\+o2 }dWAܱܔ;N.xPB8]׎CZH$\vA3V {oi-e_Vs/_iz( &"BCjK\ sY`Iz$@M[_S^wyyv5$)X^ gZ!hZ { aoy~yG蚗+J)fp,CDj&䂵tHְk>BpOQ2&s"zX0 248 H'ddPA+w QUd&rmՖ|j$6~K􃔽B=SZɖ&5#QP8 0:r൲okgADZˡHK]^$B#I= ι(D4c}5-g&莭C?4m86{6A7zmƍ xiIrC=vCT$GnFiG+b ,t@ݕOXR,nʥo#|OC5(M=Y\n ![TgvRt)RpJTFau*wM(jalNmst*_eg( Fߓ.Q_ZdxӾF:}uUF} 7}g߇]}mvR_-0c=TL ϵ֩(`lxy0JQv !ΉV@uWP)NtM|Hp5՜1xBVw>ڱJ'ңXݙ M;L`$G7uw%v;Z&VeZ ][o$1tj٘W2mVD~(ж=O8 y}tn2| )gfqya9"-/kz طw.Z:0c FS!4Jiš9\v/~h0HMNR&KAFQ!sDttXLrU/'1#xMxZ],2WT(d'ȏٳ.f@Qxu+T'JuFpZ3<st'.wm1΄L(zLPü׽9o &RD*b`0W0/2L6ϾP;@CpHw$"T2 QӋpؿ $ܯDŽ>tmIN*Wҝ6uXz(~`BDfʊ/Gzz`ǰ> stream xڥYKsFWt Xeb1x(ۊשDZJj b(NB ׀i==׃`v? fޞB Htveʏx춚"L$ .~i".>\*2dR𽿺|?.pvy{י3~F߃Yc??*#qngqIA39Y RCihB(BY n̈3/tP/g\MZƮ}+n-hVܶk-]kM+*n<ø%TzL?qrW^Dqa1[G7zoAX0oKqaX6<91Urr5>N Jlvt4H!R2n@FKz׵o@ xeCm% ;Yx'pHkb(@_L|"±e/d?3PVveE3Wf*W 7fuegZf5vE[(˼OXƚJL9{(w̦@4@a$<͆{n.o۔K<$P&$tz^ʳ^@?5}Ynܳ5l "nYw}a#n4혗ID(넎l[R2n6x-y;aSI?ICL.Jj9;ֲ{tDO?W rr^"XC?J>l5b|Bke˽T܅xΝ(*|!l2gg|%A N h4CWZV˞Ƥ=\PӀG 4Sۆ HtWHh+AWBc)t`MN{⶯ˋbzsF νȍ,F!ө3Cv.'HUo4ݣkf) }_ 3rlP$a"r84ڻ|\6UgZ2Jnx?7 F86f1 WH }hܲgb_b'G"0-e &&fn1blamx B8i̜tTCLzەe+ Y.ԗր~сF>puR9|LA#K&ǻc+ϖ[xg0ah>MG9hkqaQCM]5L=AHă3j8 ~CNho2WDA;4˞)4<V&BL9̓(ŷ1Q(ܜ\~_N/7,JkqK>H{iŭGmoph:`CMTDI!2%]CX Ho$&1W %/2w7~΁bЪ#TCuۋ#p8S>ʋD+ZS" 5 4&&K anRm {H97X𡉽8`X[Ojǽi%I2CiS6kl'rɲ \-HFzJ m؟*6:ΜXk<%dT<"J>6f|U)eF8ZjQn"UHD'A8nk, B^:bތ2FE&;.z DT-HBɸg fd!zC;(M=囙P7h쫠lS.؊^RA~VSdx7.sQc0A@|(q }tMzu% J|] O' (<|E]Gq69foS$TٱʜVx6_0NdՃU^'+t35kJ ?9}p@Se}sZw5YN~AQ&SQE3yO/:q^qLw;(rcJ-`I8L.5H_#Q,0 9( ~zXvP endstream endobj 3129 0 obj << /Length 2599 /Filter /FlateDecode >> stream x]s6ݿB㗓f* =KsQ\}h>P"laBHqbܜ^~@nޞpsM"f^8E%, =M6u_n.K/p牳X;j"^KG" .Vէ7?]ޜq&w& C9~ݝeu$,=|>e.!7p#A4 sKcwVN"Rsb)_PNsvQ,v [y[Y29r#3p"7d2Wf?~ ] >|X<4_~Ğ&Nj(\81ѱp!<;(HƼX, 0b);VTQJmoc{5Votܚ[1Һn*vΰt4 I8)<n/fI9)C׉IVG @Wb'hR]nj}W$?H̯ʺ֛|teM;BsE#ѪF}ioߢn7[ȇp%Ƭߦm@[NowF"b~`n"#3A*Z^GW4 D#L@gEF/'y$?AD=O 1#1K)8 jH8+F ؝?;*LSٛO28dEz@V:#0/ӌ|t2%nO\~S$E:cm]>=$0;#:Ƶ$nO q(\}X?׼aEk) w'iAbեۇٴx&1'K?Vt$0g>gsVDFNe2Ai/;Jz*ȦɁ~6&ἪUrǩ+v9LO 0M'MTPACZ4$!db"MpA&!Fp"lIxR)"XMK7#UQT!BYQA}H.alk`gܓS.ȹ=p:;N(Tl6uIo*\ug?lW0IN7ثepN;[xUN!Ok#([$G$6GѪ*j&x6& wP 6=Vv|j>Ӟ 3+VkߗMq lɆ{ZBcc.#h yH|4f_3;c:lK_kۃatz7n=鹱Z7i34+EJ ZfB ,yY16^M sqwVIUbI[{]u5,v7#4QqUI'J)03 b~˷x3wQ mp[tx,B=~G.DQ:PTlܔ{nQ&m\2 AOL\gy WцAc[1{AyACM۹©F u0o^>SikzςmZ5辞4TSȧBIBQ-mi*^ C`%jOGGGkY2'HM)S%gbCRB "AT u 8i笳/WZM*0qLLYnoM7.vbO/`loYi~w#luWt{=V/]\T=[(my\ )'uӺkN:L=iB@OOf?~ >,H{;͉#z:y # nv)7}J{ybFUy3ޞN8 Epu8Wĝ?Z 3"Gl,1~tpCߚGM=,ל)^=׉ĴjYi䍹?uؾ` cJv ,<=ֺL R .$l* <[x ;L6LdjT"-JVԋQ:n_"Цc ֱqVֻ5 =>^N$˯C`I@wߣм;am3S$J*GIEBRQ$ӣKe(kݔiVz"gi{fۧ f\Pb`'z׍o- 8IۼlbZq̪dީ|&sxXCpfûՅ}pC-!91U endstream endobj 3133 0 obj << /Length 2173 /Filter /FlateDecode >> stream xr6-T!>IYgHnEAdo7i׸j"4FݠfM_}zc"&D~4Y'pLw ,Vߝ~iqy:CI,<7LkܼOgB1"~oOWpMDsc(ld{?M!pŹ[19EI#x*:L;j6Xjc@:iim@ )ШTfLrv8-wy5fy1 ,J՘MX}STr~F|NG4fi-v O v'/iUzwYTW=cDBؤ 4 ,@9c;ŀ'ѧӳvᅞ'I) R\Yo, d͈xGjO8$lR^AN0-p./4[5/*͑1 3## !S0 ]5*3*-MTpH(_t]ȘE#qz2NBɳ=f }|ޮ [[ BW=h٩ѳ ryQݐn3rO9?<ϧ g.B*0Z V/͇"iVg&&XZMpq͵9X{K6e w J*U;U#1u Yuz1UI݉Ot[B( X!Þt[gD ćt(6.a|TppB,7C;v#`)%7) l0=XoӚ,isKC]UJWfamh˾9ћ|Vg1jy\eż5Ip5$RfAO-.]9C`p7j||%Z2s%X0sI>Ắ(QcS0ÑS9P؈;B% -c4DPbp>n{;p!+ H 2j/u}&|ר[fqu=(n ċ p֯@GOǼ`3mU@5_[{x spmJul\`]|:Mi񜗧jD[Gmvg&mR^qƽ~S$TN!_ -)|#eiAlk` "؄}]|F6;jMMb!I ] Իh1kU-J{ZIUQU:QU{=P!F=kW -)smVkӷqm^ל^z\DʕyolAzsn&HfӈcȾ=ߚX>r2aFJZҔDL@d6%@}^ SZۈ c6mT_ݻڄl*s/a ^ \2{J#<]> jKS%NJ#9ns5/W ^R][]i0@}> stream xks6tZ(^J"n'g)$@KD"ex%ZNM:rXM'/&'?+(dQ%XPĹ &st@#*t: /?ڱף1b=ޫxro_NF?NE o8/F :Cg?O7u 1<FR9e?k!~:'#Up`,MR.0{@ȣA*ZM"ٍ}O%XYpHٙEjr,,N Qdg<ٮJ>r72),QD3p>UU[UUUʪjgcUB?LN /dj*9+b6,XY^j@Nt+=Tq8WkH[]Jow<#a?.,(ayv ̆jE҇`8H퐌b98o7Yp*p;kzvn_X7бKA\z z] gE6^Pw-j}s k9@-u>[Xa)/Ӆow|[,"Vr qL%JФ>G|PnXd{ptj@iegTaboW3  F Dv# 3Ë.ZF.\L&G//͂NJIď0j }(>-KI?M8,0*^ mX'fE3] | CK3slT,)!$<>?;a#yW$CnKF# eoG=IbŚ<_{,Ҙf_|`^l@~Y.j.Ўufsc*}z'el[Hqv=P=20[ ~ [Ə$<ֻRB4䵽J0}ٜ"N6fw pZG7Ƥc$b !@qfQ?u맡uR@Afat-ޝBZy{vdHHu)-]Hw4I,׷A{I+Q HFq f]N۽ $DN( B 6i0ov/-r=8d?A<KhؖÀj$52$7ֶٯUrrHO:WM`'灀z&V}G&!糛⻤ѕ=Nإ]@x9/'/)`wmGq;x-6v';@fpA'o㕶v|OZvt>V=~HkyI#ރOsɠd.tF} @r9EY_!ztͭ<"U4+E}}ѩUEXqeTNV.iU2Aksw*ȡQcZΦ-p=T)Jt]5ޮc$IgE脄h51ӓt-Q}j |3 #v`Y,^n ]QaZ@BgSxqG0u`IQlSɅ;c0?c(F#,zFWc}ܱTa); .yѺDIǣh o\Va%)gf١HW?Uc8[/eQn_&]5Kz;.ɶɪY{ xUKKczqhTүA^O=&( A8k]j]> stream xڭ]s6ݿ3!Kc=7=ǵtt|~/.g=cw^s'ߞ};s(Nq/ 9g~?!M{I$FJpKVb~+;t:O",m:y:$O})Rԟ'.g͉I$%䛬&XR@S}$G x(j]Vr% y9˫,f׻f8(}1yu[rYn^n4qcU@!K'C4UO0W}ѫוQ c?N^YsW愺##G5}w;Yi7̳ͦ冔F/A/aB҄엫l+7=! j>7bݮiG bZ5 \eMW$<ַe&׼cu`{`VUB;D4冶h˽j'FY5pGZ֣RPQ2׋m]nD5͟͟ZTea1@#uew Jwdsf:Ƴ 5r׎#8D4 (1n|ʇq2E)mh_hܝ>E"_M%l 8 eПPD}B(B9?qN|7M3p۾{?\`vzP8LKoN3).q3cmJv[YRaz>d^bOgB.wn>] ?=%=1# Eg( 9TI$D<y{ӿB jq<[谊B"E;\!dz==H/~ wK"ޗ AKMhJ; Qi%F.3(~4٭3()UNK*Bq]2iĵlihu\7 H'u'Z5Mu g݉#$]SWE7.(yz~>~ڮ?,G0 گkTDU' ;x.|/ZWE&alƭA~ fOvk.mB.{@p> stream xڵXKs6WHX(^I4/ǵd`9HE* ,HQ2;E\Ňhhfr1u‚$` bJxXq"e,Kbv3 O"EÏӫߧpzpf6Wƙ&<|1e8̦owbcbR"XnF_ w%& @|ۈв(bAN|(̛;pR˰kKEWJYj5@%"p*Lُ}D4HYޡ),n.Em"3u{eUNl c$" 5Y}RkFDR\}3BǢڸgZdu S\x?+]eaДi+z\nջbp+vN+ {3a[UfRWNbfI`%nmX!/7۷m_;@s[~~&UTeømU~P޺!HO9="P,նɫug=vɈ:l8pr䧹i{eIMC(Yh9#,(aB7";[$T:p^Vec2/޴L?٥ t(=n튈2F cN?? dG)J#]R35\̗o.=Lcn ٙƵ,d+Bє{S 5҄Nf-WQR!J@?2IX2) TFS2'_5 pl? F ~Y8wb̡*nXΣ2w_Id%i9SG_aSvjm9gz(m U.=0B7/CE;&v3|xr=7 cHLkSux*hh`QҲfQr" & ).gW7oo?] s*ń.m?ZYmw=T(]$\9`QP@m-1!ŵt-p}]#7Y700ti^B${^1 leEs1|˧Yѱ?r%> wծz٘w ݷ#T{ϒ9|s!<;ܠnjbyNxc|Ӎ0EU3`TDk(gY0 > stream xڭWKsFWpDUa2^sڊ[kّprȦ+UʏO$bY_1 -l] >EԷ2 |\[z/>tP hr?ڣ >`"O12GEZ]^|Yr9}0b<6siCˀά6q׎0Ex1l H=z U#FՔS)'髡S{x{QBK~he1t;u@$w0BLg|^,7Qh 6*643KIqul(+sJleVw'Q< [O=caprA 2!d5 c$6US+E<^>87nc2r<^E׷s .'3MdE}]jz]۾R~ X(f:~ۄb*߼H#{B=;|dqU9?[˼?PcyZcYzCDGW8qO8>pq\h,`Ulj뽢v]Wz+}t/`J1@#֔Vʠbn\6?% endstream endobj 3048 0 obj << /Type /ObjStm /N 100 /First 973 /Length 1334 /Filter /FlateDecode >> stream xZMo7 /)#6@HE.lH}v-fVk8\|JHYC )_\I SvAB RJ 1hk(xZ9RBm ESr *bnk(k(krIIM )v1võBRـ+߀Tb9plF[ L6B%3f6m+*CcIV4KÅܨ]*bL@.QRb,+*-n~i3;[ط⦹KrPTnTBfg z sv *$F};ܶ"Zbt vU P%BH'S*mĽR$I$H"A$=EZJ1aS$um TsaFr?JPi,1hj&'@#5r*:B -VeP&F62M-^-*$PVb3%e*D!|͂!K  &!5S/50+lfjV7pͨa֌/_>n޼iۛpqpC޺Dn= ${>뜟~I_(b~A_w*l߽ o?>m?Þýf~w~߉/]t-\eRe/֏w}MߜxRԘ[EԌ8 tdJR8MsQg~.dA[C3!.CGaHB}k:ֹ8x9lAǹ<aF洶WLtg]ٝ-M \K|Td8CF'.K)kSjljuX$MmLsSJ@ɝٸv3sUfb̔@CKqLZ*uVy5F?R bwa\3#C]72PS"uEcEUYdјvi4)RoFfy&gUKz:6C/G fܯS\GcY24iRWr%ُ.,Jg)E̘3@utNS> stream xڽY[o~ϯ0k-oͦ].bѱPYZr9pF(IS"\?b0.[]|>OBNVI$|ē(T1dM>nWwS//A(g_g?eK # D2f7_/W_.$l+&&0ԓ⏿$'0Q&&~`4 ='RQ8٥|s-8a?]/淫ŀ5w\1*KC۪nHTǡbxuM^Ml|O%QUq_"y󆦉&-'f]یzME|^T;[pv*֨RfRƞk)eFsrͨ﷭-d^pٲiȝ}Weݧc^aZk0[%c(?%nz[RB?j>vP# +EEGzgGuC-'Q%h>YC%#?1FwH{)%f+e.Ktx:mh[PQ{лgp3j!:eiQW4tϜSjil6:7$#GχhXu@<@Tߢ*g!q`RĞ;;|-vڎ8 -~t""ޙݤǢA]3x)ir)gFQρ|o0@0 ]Ԓk:hωi(ts9ށ䄢s/˹B|"ĶiRaE{wKmi:7Ju@N[6nnF݀Fmb׽T&_2y^LY.7!EO{s6,T$t;П/Vtk0\5p_ ZLpZC=> ;W2pO{ԡ_DQ>aĊlhkjѰX3*`vGG'{vexQ^ ݮ\ז?QKBjiR#I޽:|+=J=/7xK/R^A9JPOr}[|~JʬZX~;lsqx:pf_n>.5C-BcU+TS&sE[2`"βb_0eV54B&ggݽ&E:Ezuy 7l yApo{.bAf|+k2K*h,ztu:XzX u֊-7yRgW*Z'| aAٍ @GJ7VqK[mX/Gf>{> stream xڝY]W6WҜCd_=`oR~Nullò#XRn,4=̌f|fqt.؍/-ֳRYxltrv9{>sbxyv7>=[o ůGoGe3n#7l=o6KasEv&}R@;qHu?B$& tNpHԒ]Ұ˅8aV8vVP)lL,FC߫=u֨1 ΜE+uVV 2V'ݘe.4?wvFdWexU{GX:bZ̹yrVָ9z[9>taw ;YbZzpF8 =+GZ.PԒ]9/cZ_*HW}FxՃ(K` oн2R^>ɫ4ňC*YWp 4Lr#v'^ᬹMCduIίA>w.SCύTZwC&$fv(&j{2ʕ'ɻ=7z Z5Fc"4l؄<g-BTMNssoLFbatbNU:Eˈ@p䄆UY'|ٮuBo~1ſD3`sr@&h%*eDEtBHAoPkj[ݠ %H+;[H|8ot3$;*EVw3(:Jonn}q,b! ^yܩg ] tD"УB-cMUEP00@4tP)7EC8؂~y{unOP tWb)9]@.+|S&%ZtiavȝJg1d"w/~h)ir |JTL +w,I&ΛGd8dEKkD@:1 &ƙNd3~5\2ds̕Ns<" n t  [T|$Fd{`Ѧԩw( Ao'İRoO!oy`X|-AM+\ف0BMe!]7e &COrSAx|(dX:m+ i_cAZ FWВ2m3btںK<6*;@hN` bk#$iZ3AUŰʅE"S13>ԏ\ ^(:-B6T98!]r\^?1D0V endstream endobj 3176 0 obj << /Length 2046 /Filter /FlateDecode >> stream xڕX_wϧVћd7ͦkgi{!F97?{Ӿ F3ߌޣ'O?a k/"0ā"-sfv6ZFL:3ML>]/&SeLIu|rqnNj 7ԩ[m/~Mz9Iԑ8^C[\t!ύH3#T/ H3(+c?PPXUBinZt.2~ @ش5O\.U'R ڽ Dž:\[̠$Q0$CdYNy;".~{WL_`=pF>UΚ R0 "NA:!Eta^G"!NŽVO)AX<(*J/7l6 N!9AI]`n:)ǍF"> $U3a"L>?C/P@`$;-g_żxDR=1U98HFo&i" ,@sD t3fD.`ӆ.asz4!Q_9ԸXR?Uw{O݈JByѬmbyر Q8l]bGٍ=[aQ9ƾ7ȸ W/\p.z@¼%tXϦ|P# Ыm;5n w۷R?87 +qM%VjU4X(b&6cpp _ßSt#+$")0jQWx8n!\!Hg*oHzvt^@䟝 ~R"x(x uPÈ*P ɊPV4ZQ=zC"!kAڪ(CU[NR(8!.whp]ƋiG`W*;5бخd]Mɚ;_p[CFҔ;JE2sN,7T_dy)2j8>v'u4 hp?b=¥$MtSZtێ(qo|0=4ߩWU kC9BvrI3Rd?Ei#CE=4ë];(AeA8݁q&P G> stream xڽn8z.2bSI;=d :0m %Sn-qG>JXO7Ҿr|׋~I4btbJx8by̝oow7 FӗvH{r@bzNj?/(0:0 Em.}$Hgg07yׅ?V I8L'>IR՗|q^}p{}sH}޴h@ ;RY+mעEh-%BOR*J=˺~rFh8ж0&y>%$ XA@ȰYWNgxg}tb>v'K䷏W-"%$ Cd5 ʪr>wwU PUTme-ڢR,~' J h1dZ 2(̺hq;+Df~X?SDeV6SEwOuJ6-¥Tv_f+Ln[T]hf:c2类4j)V΄j=.h,OMzFe2N]#$/`{Sl|\BVUKr)ĥBu e ̢g$$M`7n_0ԚH%I) 5~BcPdv2Rf$iÂׅA/u{=#r>1R|MXPYN_\U eWr!7 gx~mUM7EѲ>06C) X"xbP?u@ A@\+oYraÒ2CՎɼ/O3SJ,˹dòf%VъN8mm?Y4)N!&u:7%YbNw@:`"Ol5s #3üݫzqa!%!;P ߾Ώ] ?T{F5$U L7sNs^^Z,ow9| fh :Á3 fhfflh ^<\I~f{?`@4};C{5P+\Rbcaꫪ0UpsɞVϬ,jP#vqҴuVIN4S-aft'~ʦ QQT/|Wl2jgn&5UGF|Pgbڲu!kЦao9|1M+G'-O/w 4T@A t.aVJ;=#8VzK욀E/wjj#}$UVKIAN]b'D"q!=F -{9UBFb:f_7  :$yb\q!+{\~t6^$n$z2Q"1!+r%˥gT=MFqFHu>RF0#Z3WMkOɐ3UYA#c[)72O%Ync>ݺw5n56pCX$X-; `m)`eQt$Z0Ks$Pj_"%Q6;FBժBQ9&3T; mD.G0\nCm6}1$X!ՊBf F0bnVZ]?&g(}S{4艹-uuS<^`oNgt2tqgQ%i/ (V`?bS췁L'87iH)| | Nc>Ȣ/k8LQn?v(諎~, ;eTv()hYE9m8=h~x@.`tfARզro}CإiEhR#dOPJʁ>lBݥt k Clr%b||v4A}4 ȓc 'Y{gjgpзY;Z+$A=wnpG[-.eBq:y ázN9\,&]䍗Yyv#B+s${ 21O Aa0"ȟ!$Bt<1/. endstream endobj 3186 0 obj << /Length 1829 /Filter /FlateDecode >> stream xnF_A`*x$@b{.;h(hr$H;9CJiG9G_umƒO.x`YHb R!(ȨDL%) :,&RȄ=j΢r6mA|I7Rj„ [A9(ED%p:ҲX2=MPE7>0Ӈ`B?BD&qnp|VI-dnLxfIi^LE(bs>5MzL+񄨱"Z"k!"HU csJQR`e[϶6f=3$}-Φx0?EL*Bat6FP0YyAF)0JHeaĠlfnb`dA16̳kJ `%f[?hP IGr*H="HDž>y8;GVy6UKʭ'5Lz4R@_}5i5y@!ζ;DnڿTO촊vVKo%̋I$-;(o`@NkB۶OTќ@\1ǾAjV-;/y3Tx;|K)Wλ >BpBe endstream endobj 3190 0 obj << /Length 1434 /Filter /FlateDecode >> stream xڭWKsHWrkԞ l(xkAXc[ KFɏ@j"ͣMO8x5y>^jhS|$.D1"y1|4b25FR۳޸S³W78U"FWד8xL>~^1: ,&)8fa{w"JĿb%%'#R ٣, ۄg`ݗRd?3S$,! +tD*A!Ͳ撚,pԔ M@}Y ATSuт˹ mWU8m*3i;Gnչi)))i<ˬH1Tc6JS֍/YE ˜*a~˾ƍ)MJf '8yA OHxRKI*gb AU.)5L)YtusoxSIź4k*gdzO$U#2[B8['gaڶV^ڸllz,*3~c}k_4쭲rgY[OY0U"&,Bxu)٪o2+9..2DCm)# `|ӀPD ($1ws )(Ɉg#ʢ8f4$ahQDn rÂ0nEawW'(p6D+v]e-ZRx*׾Zڑ`6XJ I൨?TtJ=$mu5f#\:*_"HÖ@fUe+W2*i?T &YCݻ%̦2C`IO|)IER=zÉBr5Wapv?ˆG8zoҬ'th8$VvmlpYQ>rk<9Ě׆8`8ko @ǬRi18~ޘ/r?-0ű#LE<.ؖVoS/; ح6bWw_;&mf:ݭ΍r9 *(G[PMגcXaѓd1g'6( /[h 7_ba(:❞bH}W yyChTHf[̠[غ|U,~>v'}=͚YW4ɶ[M{LT-\\89{sDq$* `mLК">s2.-n 1 I{$#Rihy@3ʄfxeKOv$c6{k.̌p^{čίno֍(WԳC.4+`/ j7'/Wj k endstream endobj 3196 0 obj << /Length 2463 /Filter /FlateDecode >> stream xYݏ۸߿BH_h̐"U@6kfp(ry-"K>KEp(J2CIp43ǏV\x\9˓( nAYgADL<-?|{r<,Nxoy3_Q &<H |\~ jy 8cI"'0S;ù T,Y$|jz4΍킧L \rcnC`jV",&MY+rE y̆r&?z*x %$\ʁgYպ)6ڣ[Ie60~֜%R8k(!XOu~OQ"Y|?Q(˝:N$~oֹmw_8Na.\!p3%$ ffgԙ?lFr *R,_\ϪD}y\mTtp[v3>ytc#(YPS^9gy.-U΋zF_ΒuP{;?HIwHŤwo7S𓇌 (Y}mu蒦{a+K K)"X]-\l yX5]6ϻfE6.<],ݶm:MŲזM9D3&qG]"|'^qv|$fduMQ:Nֶ>)^,n[Gfxv5̥Ydn]-LOڰ :9 O )}FWU|X,ZN, ȞEKMѺ=1np mgi6ݯ'3;aє;PTMYzi=#q3g"YF{(`dvh8 F)ϨXQC[ fb{z:l9l@83Ǽ9#\ jX9wUI{'!w Hgxo$fD%K 4KOa5 lP|,ML|d /d$t@hX,*)n܇2 ӯ{"V=AZiOɂ<` GПx:)`Js4uٛRйx&Qc6Stp(=^%:Z[`斆n<\E /^Dm[c] "-lh<KDp)qQINe)۾ԋjcK\naTZMiuۀT=yH3!B|Qn#_׺vJҥ!NI]Ƿ!9(%RX7)Ht$Q}A'nwFwe=Bڤ NsliL6ڤbڟo5G5-{>v1RFen"w=};0Fa!鎥$K1Wc3M0B ;2by@RP$ l@BH%9g#D5%,&gh3òYccY  @>+35]4hN.zT:'x =s؄o:u)Puv3attK7v)5@40;b t&a_{JDJ";!$K2wb6Iӣ˷ǫWi3gCpb#pW\ )>Ӏ"<=cœCޙB.~-9 $}a0QУF"ŴWP:S cgl\Feuxl >Ukzѓ 4NA4YF̾08Sc`ѠU7VvQdK5B%6&. 9S ݺ*dl (WPk.#_ig#d#4wAfbeC[Afs4@!':xux$S0gH7[(3b'+s&ۿ%SʥϢwTH>h&!bN Z( Kz[zkog̹u7V0@Kt+NR'3(:i\en3[{PwiWw(~S~[J׏q(C~l^2;F:ׁv`go6DG-;/;y`SMOAL?Jͯ߾~hC`H"έ?B endstream endobj 3200 0 obj << /Length 1886 /Filter /FlateDecode >> stream xr_QBM+$xi2㵝֭ͦv2 8ˋBP{s@ՙL;zpp799>\}m;Aʡ jb/G Kb\UЊ8 $x)-0pAy,ɜ{Y)2tm/#.ʦZRBhϘg~3"h߼iEx^[ծzjq@`E2˟ dV*#v;e8}'Mـ{iI0~I̕XUeb(0wF"X~ = ^$9("g;'Z1d:l8Am?t&iES4.PWC\$7Kz_G) \sz)Oty<k`%F4\ <SB(``Pd߱))i=rԅzc3ivI*=~m<]6T0q.oq+o ЮSx֊;hb|SЉ9h~(8S wmq߉~Qyd'rÙNдҾ%^`ۄuWyW$zΥ^=(2fU~/"g.< oUra4k= \[עY qQUyrGǞ 3eDE#O0JBbhɰ%hj?WNJߒ:'h= Oh95ƣ˯GAEQ[_b/ȎhR¹o>O0_7s潄sxHC~@g}íZT?J endstream endobj 3204 0 obj << /Length 2255 /Filter /FlateDecode >> stream xڥr۶_=Xyp$m긶23`8-"%G],OX..a>Y>eMgY~baΖgWwק ?=]Ds8|pW}xwKa̺N-O0 ͘%%.,Nz~ynSOje5 rvs牧p.HIxnnndM.dN}cnEj]"H%oј'o ٯ$!-%df>RؕO+7Vݓ\>e#ͺ99=g d%`gt\ދMٓp;}CcK<)eoBo4dMUɺw$9V2u=)btUmyx(QHR$1 [ es7P_E=:'^7kDՖ5|T\ܕxx(2pN%5B5 7 wpt(RkjWHV G #!/KiW@(ZJrlVle+_jݪYJd.6{ 'GfzDp+w!}z?=W7 (ǁS6B`ۂph;e’ ^4;ZtF4[`Sԏ  ,x A&oњ,Vb T _8-BIA#62m6uDMK#YoLwj)-m1Oܐ }U(ki)(b0&eWە2 =.Td;Ic@FHfe'q-pDAD.oʛaJ%ωV&J2-H|{Eˣ"P{D%M^C~Jlf=6FϯN:/F_sqnLtN=CmdW#ֿ`mSϯU·$х#3#r_Q!Ɣ$Byϙ(8hQ iy7WJ+ py>mR^NɠnÝܓ9TMwz]Uԛ^$b$壱 WRFRmg|=cvb=L0)1"BEo^|#r2%nA}/$eÓ-m;O]tu*ers$R #+@ C@M E<:BNﱞPl/}ǯxx="d\SX0M (mU˧CAZ6#m~uP&̯#EIM42ndQLsqDlD9]C370NhՖt:-wȻ`]ԻcϻtIb}, *Ѷ A1=}tyh䄹#&@Dgi3 }>d.$DP1аR@С0A4%l̊ S!AɼXu;#k eQkG$i](4 WdRSFuM U}Ns\[VS0GC^̆9 HjC8L f̝.]6E@]nŤp7VjLC>7aA"a0}JDz`9.. JehyП0Ciͪ > stream xڭr6jZHBdgr#7uq+="!S>T|}X"efZ9b_HG7W~H)g[ 0fQzܻ_xnq~2e1`29|Ľ̿|s}rn~fzqģ8 8 ^{?y${2aG!ww D#6$HRk7u DS;I(poJi1B;ۍD+!BOBBFOaB)CN,c g}U Ƽx2 пbl2Zjr$&b-2b~.Zh2цX q/6­݄&ժSJ">T[ jTi#9I}QmV/jQչEͮhW2kVRJ+Qxcd-1yQCz5ۦ,2 "sW:/2PO9EtX:k5Ǝwvv#89vv@" VlSYRD޾[L؟~X ~'S9T',[5Mŭصi'\.3,Q_S@z$bJZk.Wb_甅Ė~O YCL%k lji#rP:^A*nLz h#@Y N,ڳ)Z*Ѧ̠ECkFҐ']L<ԷWS.aq# # (ˮE3;(}\6=:Ř&:7~zjBRFHlHGR jmET>Id ]94V.ZbV A 5 B aBznFfa|&/X2n12!]ea7tloSw$&rjvV׃=mX\Byu~1w4{8*t1(׷?\k8rf0%?04m)xSyk4=(hYgf&ne<7dc-¶`$m#r#Nb fr€Ƒ+ ^Hm)zv,rA'# 7ڏ?G4r)q¼(l4)E.sNly` TڴmO2|E&ρ%ԃ&eеxٜB ޴ꜘ4&= P㸔&g ;oR >Qr טX^9uiiVtS4!0$Nɨ( B^VJSV@TZM ws64 ߆Kdվ,ӓ ^ӥ=/h m㈴P͸w.> stream xڥXw6 Эk)Yiָ4ŢcZRH@j]B ~>1ﷳ_g//5tc{󥗰PKbJy篦I u8 Tӫ?Pw=Ÿ6< Epjvnl~aEqyrcaSrIJF ٟgvwÙ<gI,0մ[nw嗗B^ynLL(a~2 گ٢^d6 N5vQ|pq;-LDJ{)P(@k6GuKUӚ,?i]="7ˬ+@2CFLGCUHB >oݶf"^ }UѠ׆nQ(E妷4h݄s')=&C0$ #z[wMw_,Ϸ/7[,$IRAHLٍZ8U8.np,LբA޴E]cѮP٘E1ary}M+f횆mR],qoVCgdHizHugCSw`a0DHZrW,j{4Wł,~dtFH ^2(`$5tPwA(n{ *L{B5 = ^T=0p9ȾtA׃Vp@h7Z[e^D5fQM=# «;Nb'7Bͪf b ptn0?p!'qj3~ֶހvlL; $J=AD;ϝJǢ,Qd@rN(Xh tq|o f HJL;樽^P"UCc;;BhUn {qdw/^O㾻=D?vEpս^.Gn0Q*3ǡ$Nq $GuoM0*N15mT}QS@o> Ɵ©.w Gc(LD!6)oa?OUHvm^~f+_L')lQ#Ev(v1kZF%dNs|Nlg$ }K7J=޸96'j3Pڞei`M~{yj. p5  p_YUYC]5>& +*; d"dd3t9T]뤃 [QֈuNEgڇ`6'?H"Xsr_j!XL Spyws9Gy3dq9 `qjpɃ,>O#|Qٷ(´m񲚒cáh# nvUi c=nW #0tnƼi 萫`3 C)G| } ƻTh47/fȺ8: ަ舌d`JHOd~";q.1zœǂi_HqC ? endstream endobj 3217 0 obj << /Length 1950 /Filter /FlateDecode >> stream xڭXKwܶWhW9Ç:6mړEۅx1鯿 AI9]G(yً3e$ymv^H(B/9 l˟/m׫G*b꿹zޭ2_Y,8wrWo/˟ח^q旳3P'F)cRo kx,d텑 Q(_y7g=V(Ilf$͜/7ׯm^2Z'p\8KPk ,>msGdwVJ*#|I>5:87п5.7e%ehC|AON"εz.h'd]˶SL% 6 %$0F(Q$S C)8ϛ-NZ;ʮ[o;cl"?K^^U('#˦'7FN4-'Z.uEiA̎A C’p 7Kdh7@|#irnQg"&IvWHTL0,g`ؗ#vRnnҸFCZ⬽Wr-O JEI<oZ+#oe5I69"h5>D%^¤4wL= f?Mp1ރ$/)7E K7{ΝE+k'I:1G&XDQq A}Q6\" X 5 +R" $I3Vb9P1":^ tk|8TeQjp*ƘVDQuc'2zB0"؟ CueG[ӫuU_yX?ZW"}N`< 9_U{p|[a柶?њھk εzDi [Rg[o{{}QBDOHc*Nӌ&OoC{f(L[WM;#$ˑHaZt 0lnRt9 CCGkpӷi:ى'@&8D7Զ=3ͭ#^6PbY-&!3, q6wS]DByLh^Of]ˆ┆!Ϊ **7[)ikO/V:dY8eا\*ID:U9$vwsè_~Ny.3ASz~FzcP@~F ttCCGmoUя jtƲv{ZwgU^K–Ó=^*C^?AC8*O,0f֍L*J. FwZUc*ra3c[ց-=، @A||C%MnoR+cmg>Ӏn2mܼ.՘>sżrz ;17D48'CGltXFWP8M:sz"T n9IsokөsUN]Q6K0r(;~}̳@ds8_ 0 ^Q&.1d)M3qlUi>t}5nPY207p,8z<SUJ7ﲣTp5)S@Wse}VН Q ѓ\Hݖ}gAugܬ׈뛷 &.ab@j{qbV¾f?zbs+༭ ks4MD*N ^\EDJBh,T3@Y m"BHX,4;TN endstream endobj 3222 0 obj << /Length 1911 /Filter /FlateDecode >> stream xZIs8WHUl\ptJ鎓nk*UɁ)VyXH-TͅǷ|[[k [?8[A,G=k|,ߣsa-"}b̡.9^g_拳g4i%>| =46RWLL@6T2yDzzx`-\Az)ya7h^u:w$P\(VsV}mDk7N)ȥb1Y*7ҝ[ָ$@{5n>0\ZCn\Ȉԛ z8!%2>)vē#eQ#gb1U|He?TSOzz~WO|'83GoX}>Uy*CjIC(8G'߯>->^j{vpDq@)FNjǰ]:SwyI^R cҴ~4Ҧ!jݹKҀ@W_01z?teeoz+ήx纕aO!7eꮽK[Y-Rݱ8軥6"Vp#F#ҨVzq@ƀcqK&$^ޖI]Lf[a@ <j.SJ$ KP\|П.`mZճo{>;C6VlhęK%~58'Cw ƀ)jWxHHW`0_%1,?<:)0Mw3!S~Xl6iֵdUɲK=Pi{mZQVET%2!ZCBIwz$Muﭡ鞰2\zj0;^۷0,y1u| gRd[ aͲ7+p Ǥ_ .Y6%̰VJ?f۪֭nB \܀鱦+*CvSHC8. '۳ \zTF䩏*E~q=PO,{G{*XŷzIӰa?M h݆QVẉ, KTLh&PT~&QNEt:4*rT&(?7"?ujtn+9!Է+|`Ly:2}(S2deIU]q_WAV[e)3rGDQlPL2,OtaKM=χ2⌺r`JC"vY7=qlxqBןqo:;Y'^6$ŚH-]|5Մ ȞC? `=G$@1nOWח?I'fF)Ze> endstream endobj 3227 0 obj << /Length 2550 /Filter /FlateDecode >> stream xڝr`UyWz^{WXJD"bpקgz$(=AOO)xZW>\}ΰ!FsxX/"FHs"Y<o~盐+r*MwO7߿ Y# n?.|7?owoo~՟W 8 ֝bX,WN+xaų۹]H%|q+oAm% 1N-NFe˒۳̓vfH-BƈQ ?ߥl"i6)Hʁze{(jK7Jy 1ϯ69FF]d7fJ5"ZƲinPNu^.yv Qy"5  bDdb5C"T͑ol9k)ND2ވ*Nk,1h&98P⼄A ZDztU/N+U[\} -|kMl6#+Bca}R쿡q(mZ[s6 Q Us+$<DMnlPj<*_Diu㈝H^F8Ztq ehDכ]ur g׿&#q߰;gX':c GRcCY9Y1k #1/66;#l}_ N.=zahn1 AX0]X0,Xy4YY{#7>L Ƈ [ހ`00RQ0Z`{>w "x$K:=|$rYM:͖gc4`mAx |N&S+ncm -q8jm\$A\7posGZcAP8rNO..&.)BxƟ bKV75w"T̓~ޤBi9[31A޼#E$ϯJ Ţ-;N\uȵW@Z3 mi~iŋ .b,:٦m=s-xNТhO.Nz'n> bsHF]Of=/_kKbM qNڒ|[.<Ƅsq5-xZv/vMX 7(=(MA;Ѥ_#=mS/R"ݧ*y%vBAh61f#Ԩ?f 2hlΠn.P J8ojEznߴU4ƒuQb8֩6BBgm"T fU,}#X *:)!][\C$/>d~ow{n ym틡Wmh{iӏ7hW ]-P7`IWWp>q|Pxoia23YmHMЗΜOC\Z (_bldLلd[2M%W'bb\>fER A]I *e+/rmUaP}·O,hMRBCamQXjO.1.={`V 鶄)`:F<d`Ǘ~^M}mRe86iXYWNk" z;k ~x2AS%?ҟ |``>̐^֛rv1~_9ٍkk*^pK7l؎H}jfkqq͋fE?:3(s`Ӷ ca/% 0=8P&@dw?bؑ?!}^ endstream endobj 3231 0 obj << /Length 2165 /Filter /FlateDecode >> stream xYKs6W@UE$H?fX٤6Ɂ&!do > dvDh6_wt񰠋ϾZ}yELbbY8Zߏlwrd $>p.c}u\P>qan?\].Zj}g ""X ƾ]P"`H~ H hQ :M$Fa4$,9%Ql5DoDzMFfWe, 0,V8* >|| %#ؾ:/oT쟇Pm&ɋwVl8{¡( 4<%ҥGQщBM 4]k9ԯϧ}?^9' C5 @y+X҉ NE2fW,Gg٪=h׈ 5۪-2l+|MvjPkeG5V: Kk]Z'f#h Dl61a,1I^˕`;%=dUZBY1M Pc.؂uh9#07j?23xi}AO%D}i:珚nEDK' :co ss̺ m=ݮ0nvUZO >#`>z*a@卶x6 Yi(kwp&('ǽRUV 6Ҥ6ҮGYM+ݖ{yl:46}TwsJ`{X>* [v}Ac:ڲatq/X֍.9O478}q\:>s2+U}%׻ }/Uԫ cUOWIq|J _(X5"SaVԆ9\Q_ϻ@ָ({Y'T*^)`Urw*.&P?k8CI:xd6 2-La7(Bi;:N>yeG1r@Q@0VۼQF(kΩ|./}a{`*sfaD4v!8Oͬ%[4(L%~ީ23QOj.3^aO~}ַ:rT:&@Uv> stream xXKs8 Whzg*._z&8YCƢcum)+u_ ArVm3="BQbYʼʋBzqĉȼɟt>xH0dv7Ĺq8`` (qfipq}7M.ob4]1zs&$܎>~^.]@tO. jV ԃ \W΂Z/y. ނDB&._쪢FT7(Սjvk‘ᐻW]Y;e[lt:pu&y DtL.o68'-:,UﳵfىÀp=hsC%I*;zam"J5eSsrK*vj3E QܚvŇr2ZtE^ )@ 'O9`ʝ++OC viЯ:Ip^X}7WtIdЁuҗZCmpޤ5+?\3w[UBS^vQ?c׮^+FS/EhUHP󵪽hN'l$)'څc3=n%!C?Q[/TVLU-"C=a!@% >/@]rW t %#z&'NgU6H棏 [Ԫi׻&+=58{5dFs^ݦ'h{2E > ԕ]dgߘP0*|)NGuʻI4!c(:i7x /UDzHi2̔[~)ID="@c;^bL" {\iMfT8<_/Cr|#Uܢ!.!%-1#mbSۿ" Mn1ҽ~ͭq@A~e'C^kmnHHr%cPhK):{j͋no6pzV ^"W\eyݛ0$qu1k7wA8z6χ $rХhV[> stream xڭX[w8~SH]mnܬ@ 9k H#i#KO3h.;^ z##L8؉#A E|vǗd6X軒 Phq7 %sGo'G# Ą'l6Żd1w@Aߡ݉aLr3wRX{ҽ8AIp|?"( G}Kkd>],>LX;  d2ceŃC8@Rep;tiR'ߒ*78XMRbRr8;#A, iZ鲩M 3pbWZedzZzVW-m,g rvgv~mE/n]R)WTYn p>IS<+g;oi5N!s"XG]@QAh2;.;=8&`@Ž Ҧ JJiG) RRZeGmyղNBי:*"Wdn *.0CzMB^_M/Q OPQ y(ۏדbnrpr}[:X}q ͨ jF&WyUCuleR-^׉j9YI.0u?Tu܌KU:o6.`&旙_I`]=E ~{m{7|v@Vl@ ،/3}z0,?B;:[~oC cjNPduk#xy~DM8 a=QQ7xPe+++g.?jrLZY2)V5:p.܉(~lt^l_Sz_`[m2&M4x6"ݕ endstream endobj 3246 0 obj << /Length 1230 /Filter /FlateDecode >> stream xXS6~_ᙾ8\-[ JrO0ĄLsRkINlp>ud{O+ <}|wO44ҒJo|)8㞒qԻ.ǃn@5Bb7;.σ\}- (3X#"CDS&Rzi/["{ubj&`Կ:^ w ӷ%GP_f9~\chztEw >|hQ9̎&ٽy}Mh{*W3NR0jFUpA뭒vYtRPCm[[N'My\-bp'&Z HljH !;|sӨu+l;i@Z/p|եЖF?A"ϒeڸc ^EB#a6r?l#O~lO)@ aO# 8&adu 906A;oF ",gqޖ EMuk~vQdOXIsjC<, P:\?oOd{SԲ7IGV?K /p%XoYQ7nr GuhvU ;Fa>F~_emX߲B(p}}w=RD-A` fOd3e,V?gj'r 1ś_.-,m-[{5ݭ wk{scK%urbI?L6r endstream endobj 3266 0 obj << /Length 996 /Filter /FlateDecode >> stream xXr6}W`$=1ycYM(N'U=ZdN)J!߻&)E`IbdF=C4G ;g MZgHj)b5h}Kxps\A!IM{]Op~հUw=~eiyny38/ߎ.w a).:kx|q #[lGyS0`2?s$Qp5|LBORž R+Uutj%a#5~2kEay\FƏ,K>k3qs9=EFg1aY,HB nO`VT;)=i'>NWfB8'M(`m{9%"+>O?/0[7 0,bwX+2MLv@O~^|; ;Z%;4|gx{8ńGKm<:+0za^egzDZ+Ba=](Qf&11l 0j?\=ob\ަ'MPd4\i]E)~hq.¬Fx$A07I]Z*@yJʜ.<8 $`9%Yw h7>j4A+=nv kdeNł!O TggᢽƤ3H%gW;b7*pŊ{ɅȀ,0Irl٧)S Si|̟Q}d\sJi=tɣĤOQf&>Ɨq#wLڅ-=A:] :qh]X *\}7~siǕ Z(Ė]bQm'aII5K e\W2NԕqZ9{5:_6L`DwݢQ 0T endstream endobj 3165 0 obj << /Type /ObjStm /N 100 /First 975 /Length 1380 /Filter /FlateDecode >> stream xY7 +DQ ,rhz(9 rئF"Hnb[Τ@/6yCIj\BUW|K 57, )c[ URGjh\hAY75h0p5_LgQPexc5dn>bqU,-X,W2SX}~rwg-/KanbMK1廡T-xQr:(iM )X2HJ ;eN;?(V! ԳC~M9H vA˃KdvDǔ pܺ?e_q?{XbnV0EiCC:Jh%W *oqcRBD徉bVI1dq Wn5AմQTXՙ$G $)ه6Xՙ@NHI}`dIK#>RE\Z!}^$Z<+ `F%!Z~ҧKϵeBlWHgCV?ۗ? Ld|FϪw߾}y/݄:]˾jF@9?2T.gn  m~& gO/MÅvX;ov}o?W>e ^cp:3wrfrBMi:f昴5@Nii15-&ub1SSU3nͭł3-&G18?hDb5ir(1%Z.)Zx'˵uaEKD9tzItѨo[w9;ikљ_j<$Kg? A0 endstream endobj 3304 0 obj << /Length 1289 /Filter /FlateDecode >> stream xZ[sF~ׯ '{LXv6W!5dOw"0Vr'!Xv;=@έΛAՉƎ-p7(s vcϽAc%i\{.]t59/_ˆ6p Fzcz)H!gcx{~v:l."pBPg4\ 36;VS:r0N3jeءzt,> @UڑS)L椛(Ni.?HwuZGKrxjmp ݀'^1!l66<;5QJ`H ,C^4+ y9i&[*NIp[(u7lqPR'A)U *dWee!ǵ)bHe*6W ^@rΈ1`,2Y5r\Xf8cޭ?#b>븂,oՀV-bt/i2x{Qu`3 fKs[j}%Ջܿ" r,>Gs`X[ Ru't]:x7P9y`rȮl3eeiLH`6/Aw4[)9BA nn],5PF.iY%AJai wN3YʥLxL`{.&='7FwU{AU[&i=0Ӧ-֊QԷ(r?B\ *V™poU(C֌jXHs7x5+3*lևt>Y|_]hIR LAmI])ެz%kSjY(4~~d0a](" )څd$kwMkR5> EFP@XV?=AODx G(Xє:)5E랩dͶL7 ǀO$fY!#Ku)PJ '/?}}90 f(LRۇX_o[.ޤ&pe ̥vZa6KP)}P5}Ud8Gb[xw>h@OM/ya|c=s{˄_4ǟȡL0/q̎:mi/U7< +-4K-2se[ξc5>@ b C=t7˂>0U#C+# |@Y€,$ }#EX- endstream endobj 3346 0 obj << /Length 1602 /Filter /FlateDecode >> stream xZIs6Whc!bzr'mI=LBBR^(DŽVIe=mxЙ;y5yv:9z)#`93Cp 4p><)@)eۿ<{w(_baN_DP[8+=~s<AwH#O>A'^;z=2v\Ju9&N`%\=@ s82)U]K?VE+?M/CU`J<"M#% E5@.n)Pލs OQa2oM(i]qj^6 e| ƒ֯j&QY:_d-]5AR7&Q )JFQz4k*JSæY VԺ.A,C߂%W3+9/7r6h'\ QaWiXr-/bteѤ/M+Wչh Hs.j=^;hP7"oafWyu{C6Ō KeTPzdBAJ_ExCC=ĒUg$َ9ma2ͻA[=]s6@ 6FeR&W21+Z|`:.i6ޜiRǙ ߵdQe gx!T]*7J^> VRKXW=.XS )ӑO 9Y֜G5C^}=-nF}2oMvuD߱Yt=wa3O?mSf)bL_vX endstream endobj 3301 0 obj << /Type /ObjStm /N 100 /First 974 /Length 1195 /Filter /FlateDecode >> stream xڭX6 W 4%Y6,9aovaIRْl >iJmgh{ّ5OgyV֛ M'>Wo{'7h4 iC$`oz@ݬxfvgj0oisxksI5_ m{[.`;<H;3\SaO󔰬 sXX{6,]- ,JhGX>>X=},}#@W%}Hu! 0,rXa-XUǤkO X=zF2C33S33$!$b1|G ERX!l g>؞Ŷ:[kV}؛sJ\$03bf9Cۑ5zԜQ91\rbFTcbrqxY`s0ԕf z9QꙗE3Ps44fx"sSS@Ѩx@H̆#zlP`fxijJCꪇeCD'(‰ E߿{x}Ri [Ipѣ㠪h^̓BEt!& >)"z*uQD۠Rh'vq^enԥʍ@ݫhYģ=7uZDSh'-<B}nnr-6p7/6莯>>v|sؾFzo'|qpQO?E/Ȑӧߝ>C;7_]öQ<52 -ItzIDhkwI|khJ` I"CQU*2z*2r2(Y%f2-2"v)iۮ2wu> stream x[s8_`IHSڦ\^{e2 _4?Ʈ2 Llv04^LO=g`QDaC`a˰)Ōs߸>slN9}ur8}'?" 1yd{ ;:}>{xrz>y?i$bË&s/ `w+#" x7sbڙٍ9x-lb|\KU] G+F3&6Fۋ0@00B6<.Z\\9*/_L$'ur04ȂF &R\ygb6-&bӐ< cdobluNBתw6jc *u=unƀ6k_ؽ4ApU7ldH(l&l_u!Mn5n!N-u)67Ck%ȸNh*mVlF!Hdd`HVh<Cd l^+t r|~Dw$\u7\4")3C <<- p7UYG0'0/ x,z \$ٝUwXEt$ n]{_쾇BR4!YǛ PVQԗ Ľ ŴaHIuf\ 96UU$q(&H /"-"2FW-p 601yKD?I(.G!v K+qƫcJҧ*D:8zd2^4&Y5crʐ`󠡊sk~-Bf}tKI0$9 $Z5AУ`UJo!2nm.nuLtl>XF6(>~wqV_~ȴ7%pɶZNX֠ukE|u5e!.n E[~*&OxO8دңk< CWm L =Bfuc:olӝwmpjYC X`0bŖA,t6|8EE7 I!t} .ćf|Ln[t\YCeϵi@`a $l[j>;"ө?ϔ^S~dC1E1Iwn<FxÓ@Dw'`MBi3Q-> stream xZKwFW̃ӕis7Mԕa$O0rlI #a[>!10~'Z3 Zo'7'Yp5Z0mnMlϓ/1phL~::G>?^0:||s 0Wo|ѧo'ŃfMhGI # Ρ{-m2lJ.g3kue@q  g"R;y. V ?/b\g e‹W`Dpm{m/_ /SSX GHCb-l)6\^T}  )%\e2ՈW>2Nmlr02elB\BچhGJgBЭJ1|(ŊM3ɧY,t*2"ovE^DVl 7л[bm K:P.uDi.BLi9$ N5 [ HĪw}$rT UTX _%ٽA@is|x10+n&j|(^]Ȅv 7XXjMXQ$S>"p0Gl~ڸy"lsjmj\,-9Z3jܴ= )trJYa`'}QZD9G^ш[ف.{J܉m(Wvp>\.e؛^+"]wň+jg'YQu;SJ)cj}}ly:]_]-Xjd1[ Pa:̫ޙH{Y%# hv{֯=JjKhG`|bC阃 ` bI*2_): ռpj>:hsҽnzvmW9uCJIOISf.Zc}K*}P+gs) jqRj0c&:{M9tS.{D!-<˥QT]TMwմ.lMeb3IdUH5zuS-UvߧVr{]KX^U(ߐAh>cʟd~lCʁ2>g؃ui3 x4)K"kXrઝ(W/:12ѥQ:nO.t-$QtV2Vgm!!6U2QwƋ *X[q)NL Zѡ7.p]q֪cgLGC%m 5'=DD|/w+Gg# $~\Kr)$m^Z7ꍈ l Fݮ90Fr~=$l.|]?2 endstream endobj 3396 0 obj << /Type /ObjStm /N 100 /First 977 /Length 1172 /Filter /FlateDecode >> stream xڭjG5}"1 Nj$ !` }N(VH:ϴJʩUniWTڒFMљTϫ;!Ή zxԻS 4X*clWZ vfj*9kbxšf*in!蕼2hHTXUQFFϚFgѷ1111*4vBci? ^Bck?*4Tb3"B4D;Պ1#l*imqAћѧ11H1栱h04kk+449~ςi~tt%QÃѠ2yg9f+ ,I}YcIxHTL]!K;- R[,Dj /%-{i1˖Xci1%4fG[tD:J, 4XF/IAwe4V-%dsRp|:t߰K&W^'Ǐ^5$+9HL]" ==kJcks%뢉 eЪڙih+W&9ؔqJEnU:up_p/,r==.Կp']o>|~L)ߝ??gwuƃ?·xG[ow?.G~:wuFNr..{ܣ\p23ɩ<'ڙc\.0WZpxˢy^8(`o\Ao]yR- +G+F-G+B$v+I܂NG^{>ۦ)xcp4_I.̻ʸ H֊Vvpц3R0-Pj ?*SJ5z*FOEߊY,5b\*qTM͂]fc`װY,صk5 v͚^͂]fǩ}cK~ƸoucO {:Ԟv}1iϐٴlڳd&z2LM{̦=[fӞ/iϘٴlڳf&z3̙M{̦={fӞ?iϠٴlڳh6y4vMM{.ͦ=fӎOaϨٴlسj6x5Ykr endstream endobj 3506 0 obj << /Length 1432 /Filter /FlateDecode >> stream xZ[s8}٧Mf)P]& Ǝ1 6O.ZS ZzGWYf3k483"o]tqti0) 0R.?eǁg?6ds0޿@Pl 8j͗g߂7^^< z=nB mP0-oֻCW[`XșE(`uZ{`a'Skuim/`aq # {8 &rDWYWCaHab\ t榙Lý(w}mM %CF!86ZS!PG2d Қի3×[cpG)29]-ll܏!(GNLFc%l9GNēu0h|A]OdV }r&ZܡZ7 sUYq(b$7ԛrqvl0!D %X0等@v8!55²buN-8ڨ2mб)Xk9 &2 f XfYp ؘCDz_wc+G 9*E,^ "#~gד, 1 &$t{gҿkHyk4Q탂@D-;{ptlg VA$r"E wLûMUT59Z DR\Se TtEr(h_Unɤô]j[ɓ>s(+˰VCa+Kl[moP;H) HtS͙ePEzj]:6؜u\9ޥX=F[]-::U8e.Qg%Q N/CZsr[K/\xj6h-zEčTh^4*4Z%n7%\GI¬}lv֤n97:HGAAFBMU')ؙWRr/ d{IkFz. =sUz-C9S/i]n'.QDė&JFӬ^XEE-i: Q4eњ3d3Kh"ipKdc2YAX #Y#'Ow25)]r$&<8J 2͑?,sQp,7A=TV;{:uٸxzgՇ;foyCJ!Uf+)(fV+\V endstream endobj 3560 0 obj << /Length 1802 /Filter /FlateDecode >> stream x[Ks6WhwF0ILNN4n'IH˜"er(6(@izMo tft>?8~ǐO0p]ᛟO>~>` 8P~<9>1|xAG!Ȟ0|/Ћo>;xz% `%,y!mG+?XWb2fT*K6BU@bܫU'g` (}R-_fh'5N*RnY\N&٬uQBA=ye ӺE}`wyTcExb[H%&훚[bI 6[ßQ.xԿB Lͳi3qb;M0vs8TIl! jLUFAij"G ]eW<vW12x! A4؅Q+x;hRx1wT`oK*$]tuyFe͏zu TJwy'yܪq|Cmf3%[q1 >  `n%IP7ڑ@PLq[Z7>3OnBcړ&7_Dx9'P\óF1O,T"KZC>JV1oLw|4}z&-ľ 6o ;K*s=̦o2]J"}h;um},!JtP\;JSvщx;l[j%޴y գ kt+=;Hڵe4!@W?-DF #UH/t0wu{A`Ԩ_hXhQ\g #y&US?UqD)p1̻i(6軍We6$yCJP'?a27ig`-84;j+]̶8c;SbꙬ#f6} Y^zFVyrF`;{cK׭BJM"&Z˝߅MշvX:xZlKMeJT>}8V.WXLݚjOX4G[{fwRҊ*R9^el*íMyfR?tR.z|uEoXw*}~(Tܢѡ>Pi}ydsFތs/koQZ}&61N0lmcҺOq > stream x͎͗TG r]?҈E@EiEHh&$x{݀RJ&-=Tr24Iߖfߞ Fb0f*ЙSNNl#&a9 9I-:ܓNGjbsѪ9^(4P֬iZ-xܫExEfMDrl9fD깂hzbv9yzNK( Qjhq52j4\A+ѳPPOϡƨC1FAY<?Ky:<>ʈ| yԚJkTDX4DuheRZ{f-kijjX jZNPeϡFϡeyXWϡF5i(CѝCɞCi@~5g)vMV9l?pBxZ}:)xU_5fkl5uxЧ-;iFtgoϞ &2-j֮Jtͅ-ܤs&;2jJPmm-涶d162MF}Jwydm[M=Ow*O2e؉q[*r/|/1$/޽>?t|┎oΟw7>_9*o l6p|u~xp=7}J JƵFcE{ٝaY> S~>K ׌70ͱР\7ۨ2~MX'qtt*\tWTyWl*TgلGd*JZvIrvO ^LJ{g J]7ީMeʪ477MX=ʛF Aي:>K+{+w+s+o+k+g+cK_+[+W+S+O+K+G+CK?+;7?uc]۱ŰXH/ YH/YH/-YDmVH/}VH/VH/VH/VH/VH/VDVH/VH/VH/ WH/WH/-WH/=WH/MWH/]WDmWH/}WH/WHW/WH佾Q2 endstream endobj 3613 0 obj << /Length 1380 /Filter /FlateDecode >> stream xZ[sF~W:/'؉3 MxdD,aI8v.0uab-wn9{VКZzz3h:SR@q̭PB-1TYu>y<8ұ1m:61pb ^!v'~j^[p{l9u:hݴ~-E$XZcQymQFD_Ϭ~\KWé\|KwIT Hw+8u-{}#~tK /s xC[v99tMI&둯;E? و @(je+I 1`؝a I E20?OCb7 vǗQz4C. ձznTb JSp(p F̊NFCWA0s3#"|Q>z䌾Ce:s0qY؉(FQYdd1ͬXG[c^Q=?& Px1lXI eF[ݤբвu/լ^t/aK#7M8nC6Rn<݉wKRӈ<${9vs!/Hp~95] TDD(t:<"#BUN^9HH7?Գ*Ŭjv!Ϣi?ɽQ^#פK^:qFQ0KQpmZՃv_rRQ_'en"g:1=lLE 1ls$"Mih47 9v8D_SF;Reiy}$$/sCä"XjLBJ/LMx)0&nMBJn` G7 7l3WۉjNyI<ɧnz,1'"6IpI7Z1@zD=,p[l&4fաtw!/]x#S3i?GaH@E@QET/ۓq)jo=:E)*$ͽwm"߫E N.l?ǃc|*z1IA9xd? })}4I]{N\MJF5*Na(ƒuiތCP䡻*vju;cm:r;7W 6guot ФG!84pdф'Gm\p'}bSqN\`38Onw_谾8;+()oֽvh]} (vWnݶ>CDmhC>ISd=Nwc&:6Z³`J endstream endobj 3659 0 obj << /Length 1502 /Filter /FlateDecode >> stream xZ[sF~ׯQ{gw$rqXiz<V2 @vݤ+@b%X|߹9gԁΫqD"G1wDžKJ3ߍGC`_q{|wǯFg_Lԃ 7G'ʵ$Bo|zvd97>~ t/ stѯns2%y~A]Q rK/i9z!C!K풩S<sq#΀芃0T%@CZju1krcFX>fm/uLa HT^ν̿T35WQVaYzV @n;Z*bWbzV! +Cb ɗj{XW>k~axr诳*"A˭df*6ZPK;,t, iʌrJsb]>""_5) h)џ;}*8TiBTq2׼:K!KӚJC,G. b,ǟ)/*uT}rZ[j{ZGLD '\ygUrK+>}/<, Oxn1[dW:2r T*wqC4 ՚-،u'^ܑodS|@Tz+8 'wv';X`01bI X 4"B Di$%(AH:e )iG+:l"ѡUg IH d>JBq`Jf||N8/J'Ez:2Cg[8`j5.p4{, 0+LՂȇ ߂ N}RZ*sgk7A \wQ{o1tkƋW6-J}[ⴡO>.\y :dt>oH&6[mOj~ 6RvR;&zބe4o-b)v%'^=J{=WuDM+7m"I(MSr6^~mTEVUGd +j4!hd욄[eLOvhG@9ʞyxWk~k&z9M :V2V{(X+߮34wn/b"ov6F,r8idz`gGXb F-n|nXv1ͭn0vTcyw"){O6g -xlKvɶi'j焋Fg$bͺ2JnUf5ߚ"Dק/Wjz P1UQ endstream endobj 3610 0 obj << /Type /ObjStm /N 100 /First 974 /Length 1226 /Filter /FlateDecode >> stream xڭW]7 W ,Ydh !͢m"R3%@=C]]#[sro廉GOj4- n3٘wVc&ؚмMVw[8EaP  n*3aH915Ѡ@J3(I,ObI>ťcҷaiDhaqV̱(XeڌC bń1kȎ"$F>D1cMjf ^9}'o҈! bH&_Cr^>X>Ĉ B !:1,!Ṏ=\B@x:9rk~!_lYNθCd(R,oe`^QT\9?6rMr~,jW#KĈ$C5&#g$(GDk@cqXb2G >c Sd1$cebSd!8,\/ N.K#k^ZeWW-ơ~NΆu`f}`헏]x5܊g)PDwF::{[YQ8U4K.swAcEfM6ёh^uet(ٻ`Ѥ=."zHwr澩M>2>ӟonu;ĭ/:QܶhޤvyC# W>|oo˛vzsz߾E~_gG|{9Ww_>}84t?}mo==pIG [Blt4fqG~ X"xh}Kyh^dV$h"3>ʌ'4Rvtq)3>Vڭ]CQFe\Dq9ʨe2"Di9h+CVDvyH'TB"ST>qr2{ endstream endobj 3706 0 obj << /Length 1489 /Filter /FlateDecode >> stream xZKs6WhA$NL㤉{r=$ A6D& AI' ~b_ f^3̼  Ͻ;=x 2xW߽s|p/1׋pg'oB?ڞp/w>>|{xwndiCHh#^NϠxz˕SO8cj>|X?@B7Fs].w_N/[ꟲ /HF助HR?vkQĒY^TrR&aM=qc["?D;j=PhRq%URE:P;'+OLZZ%iZ`c cEQR䫨ۊq>mƍ00~Ƶ}yq$\N0 ۴{\+Z#+՝lϺ1&Md^+哜`[i!@XEqӗ2ڿMe- }m68De*3m Շ/?O I;^˛HӪz+N9E-sUW͙ v,) 0Od&8p|W75DᎥ.ay3/dz; 1T( KVr|䓶 xp;K @-Kv>vWpZk/E&$`cmuhQL>E*z){*C^ɍ.EƝ!cu 8 cùrkBɊ]8IUoM%|.rZ d8]g+^%-1PXB(;ྸh:J*[Q=ةa&wᗾW+[Ue]ꌒQn0lḨp5n%#+V&PJI6js(s߷(~E, ϙ(K:nw)fyudC-7,}Y5@=lmy-aD{Zl 6 U#59{UtF-svʛ2}0 飼.ڥzпS]ez7 CާMoG]B%&wc`xUZi {d*7lE] _1 h̍ pt"]BScO{;*XzfD⻺A >,Q |X`k_-va&+b9= }-B]u&|׋Hg&ufH4I|o0( py\kQ;4~>@lՙյb7`L>EzeMӾ=R.3v8\%Bvҹ2-7`eQ.Rµ.<&O϶݌䮊M0AvR~[@**7^P-]\5jH|\^5]P>F9! D,Qb0;~~V< _: endstream endobj 3758 0 obj << /Length 1556 /Filter /FlateDecode >> stream xZ[w61~*!$ӧMlYfOYNb8O68 0Mm~GWgg'/98Ԧ֙o1lZquYG:~svv: <`:#z|/7Sn:yڎ5{c|'/N_n''gB !!.[hr~-O?{mA[r:M~ܕG1a\^ę\H=rF;|n7W +xjbo{|YP04Z6N60XKyJiͪvG2QY++Z@BOH_|yڄhe~u]BN3ċ|$eqk4 :fqi*NrfP{vҋެQG+oi@dH] zhqvt}Y2['q&FŗM7\Q!T\zKq5ZlFC)X\VU0p$!fEp/3l~m|$R(&gVzD/s`aT;R=$ӕO g*¯5_ako}b銉>7.Rwnd?3# P(.#{)CZ7% uu܊-by8 0+%{}tyUsK Qck#QIT bIX#~X \nC{G ط}צs9w{wZM]kM C~l }'d7(p)' J-ս.Aj9o{t+y9M򀯒$/2"'>- ō 8UI]w]F ? p =ƛBpSBld{0)w&(Y?%G7UeJγD ;]r|6lB, ªPqT#IJsXvQM$-XH6VJ_ ǚQq[?Wa?L\> stream xڭWj9 h,G6^lKJۋmC/BwXJRo#M64fݛز$)}rʩ)v. &k2hG5')$X<O|* FlI-ijMRo֤1i4pNâ+s=%q.: kdq_KaM,ybS|aU ÚĵBqGǁ}@X}M Y–Cc XB 8%TKK XHv,dRnI$fX|aM 4pRp_MRq>p4v8R"=be F :[Q?~_PP-lEF)Veڱi2ӎYb U ~ ko y[irX|N,{๲871Pjj6rՉbg{cX{ Խd{p{Tp`1_=z=p4(h[n~ZzִF8\\UM:u l?!- vO|es/?sZu/Zl*z/["lު%z+Ö[Bl*z/Ŗ[blƿ&[DoUoKV-[BUpKV-; oESqKV-;UrKV-[-D,2 endstream endobj 3812 0 obj << /Length 1480 /Filter /FlateDecode >> stream xZKs6W(wF ''qf7Mԓ0"$s‡LRE"MQE[o|ķ|^{IdI 9pb (P*k]vixdKp2`?}٧Ͼ[Lԃ'W['<dz͟{guB$k.FrDm62(#Q}K̥xj.>[l--A e.o,28GAܝN0!!@kxa*^i"`g"g~5! # k#(T/p@w~xr>YM#o38^ei$h0$ӒT8S%`민(<9Q+'<ޙJx `DC21;5pЫi))äL.e)%0h2^owH`Lc[{, 02Q<97Gyx71binbHl!Xs? d $]ڠ4sB2k$m\?*CWLrQ]~~8R*PaZ`k & e蛧 (ӹ\wI\QYԛܵK[0D׫+ +~t1CrT :ګUsg;H!$cU&e9$'6z/ a }fR+;AX;w[ϗ[zEqj"g@0K?c@ƈ(ZMƳZR@;jj>O}pMW#y{;,HVGو6%7#^/,Ʃ.*6v42Y!ۢt-jQ'u D-ъQgvaec[Wj͠B;uqQ/(p hS.Ic/Ϛ83GuܤM]|Nk0rQ,;n_KxIgP^UaXWbvo f@aka=V:JiTe2zC='."FԜ2CSEjSNheATUܪhPQԱ!TvEQ󣨧2R?.E5fܣSnLQ%TbAv]lckR7͌Y5Bvm+Z89f{iL-T0KM)ԠRh0?A7 X[fn&՟grW4s`%;l_%lAsM})xu:ۓ:_}e?IhS0r#֭|Q: @-Dd~ȤNE+]UوZ}^^E(B7L`!;fyҕ+zY-f^l:8W8#7V:e &̳6-,5q.s]#eX" endstream endobj 3866 0 obj << /Length 1662 /Filter /FlateDecode >> stream x[rFSpiu͞\96Ӻi^ k2 GNw %EvwWWo%$s`Xc@<.>mcqxf>%>;wIK= 0z-rgy" ћ+_vzjt?B#%k2]@[[:rnQFD?ϬO?F0ߣ=|KwBH%RIJf1_W՟ ˌ ~}3 PJ7^hfdlK)c=`$ UD`WAakhJ '\ˤY7LAQU̒.J@cvf̟9gNJ?erD~0myY8mܔ0pp0ڌ=wW ьY#k6&k bE7XR/`IU7l;zv; (_ GE.v+:=5SS7VsHU&j=IVbmAx]mRMRK83i~UFmupjJ@)*}Є0\],a2әI\Q3HK̀+!am=4/()uf M7eJijmGhϥl,ܽa8A`Ɏ|wf@r+'1WɗWVlե\Iz]jw!#UEcw*YD_UI[?#;xK xNva D(/h!-pƞ;O3-dٝ ҧҔ 0bQ[h\Nhjo;,L#y>+/|Ŭ`@*M9&Q.jBt@?,%j)4oB=X~i[;﷽k0̸uBxJ`i]XR3pڛ*B=%57X;z"vgc&$f|qp3%uu!r 5=lSv|͸ٳL 6Ln!?[!/~+z x3>:|aur3>V=5Iv V, YOvx 0$STBa&P:X0C/e'X9`bA,ˀj(«<f^K;PO"O=ˣOOvKN6ݞ4"ɑwFW?h&Nn`hھ(/_Os4ɕY+?NMWA{].2=.ݎʖys ^hjjSC 0r '=N9jꁧlê *_X?8t9s@(~Ϳr4Mmĵt0e{J endstream endobj 3809 0 obj << /Type /ObjStm /N 100 /First 976 /Length 1166 /Filter /FlateDecode >> stream x͗n\7 E(QY4w4FF:( v`;@K8Pd}Jʩْ}j>{:1S@GΩt5S- aFMr!pK-;5{jT,rӤ`-ƘfH=->5q.+fu %0,q_5WQ^uXkX݇CCC;X*rtrtqrt2*r ":*rL /ܬKn3 aI7mRS) 6a"vs!>8!GkßҦC}ȡ}ѫwˁ+bX19>|6 &fX,C ym*3E6٪^In}=,o`ۨWANv}Ű9f|J\,g.G}$% %h/rz0R}/1$fq֊L4V0zDZQqW\NWWt3qߤϿS҉m{Mw>|xwz?"$M iΙ]Ơvcn"۱UHe;v+s;d8ݛt1]4+Ig!;{4G۱uRƥ󌾾{JWW|3`/fq9pa#.O&_N緗Oox/Kd==ڕSlx?nnf#@cC:Uky=Ny~>]{px ) u3JF' IA!, FTy723Uٌ:&<:>7,$c7Vje7rcj}7r'@ 1ss6#d2ټI2`d:bnAfЄ؃kP> stream x[]S8}ϯ#Laɚ}-te-f+SفҲ}؊e@<0lٺ{l9w\`CNu'`0!9׿8>;DУXۃO_DWw{n925yqo?ǃNO'# չw 0b!w|5pKtnq^;Wx| ]o&$¦ayzWu*U܌ ^Y=Sk|Cb-~yѹjt%6W$i(2#J2)ǔGI.΅I mI C]+|.7 q.f&6Z$m\1(ճQ~cqnY>sBm—ոDW50Х%o-yey!uݝoufQ0KA(NA>8$1"x;WU.$,hI*u0q=b4HlBEv-dV7׭y44@2Kr,L\n+rZNMk]Sty JQ]3e[WA/rm~"A)f?~FZ12؛eY]SuUʕ˃u@@©7ŗ>8]0v txwv^~f)Uˌ0 endstream endobj 3972 0 obj << /Length 1543 /Filter /FlateDecode >> stream xZYF~:UnЌ4 66O5^dH%nX\" %a.pNz5|Oȵe3 ̦z9} !Cmҋ y}0v%N?sAQsrix2k1Ɗ~_HTPx~%At"er~7[&qQeE k|{y1}>^E1/hq nnUC2raJTcJe2~umް92R@\vj6X :(d *>pCdtY~}#sV>b)wPf#ipuPVAoP"u3d0cUS!*K\{o*HFh3\&iJIJM%OUu0yzR~rt>[ _^og$f;  L1dB(DcA/]W\62LRnLQD:ibK1:v"lŒXr7DCUu8cZDFK~4xD ,-€Q\GMA"Y95#XU5_{" 0>q2S~1HӉwm0+7qrGf!\m zYp%2_TTkk/Àx-~tSv@a(^cT ͚@Rhѱ"v- *gȃ EgT-C@)D_jї+oy[EցJZs@6Va\}Bu:IZ顦Q9M6y㦒7z_2 zOd.6|}ԲjDDednZf ?=-sl#)+yc _#un-U#Պm۞bc-S k7cڸ/^+(4G8!ܮK/j@ endstream endobj 3916 0 obj << /Type /ObjStm /N 100 /First 976 /Length 1166 /Filter /FlateDecode >> stream xڭ7 ~%˶ KM[!$9$]rXҡnl }|ҴK69F%[ذS1TFirbnHbS7J$=ؚ-.S3:fIM=2Ԇìkؚ&-Yr\ya+b& װ( _g7`5ρerՍ:W!G!G!G`{$|a-|ȁR u('ɱXEsup;%"^:p˰=$r`ً^CB-QKZI!G|rGXllC_ ,>L7a1{A ->,K%XjEBk5l.{=f4)a#V.˂IsV`m#`p$mT1ρZG`D`#rhm5KZcD#lo*E.m9JǷ~y> 헏=e~jTvҨآ]IL^=Z̨8+vt;vjc;fhMZݤvd}76!?egn2'!]]i뢗a'3p\AĐ&g; Ǘw^u:|qJ71>8>|{hݗr5]g88˦L6#=V >gR1nV0_`pcfsa ffrߍ_M4nPɻf:AMmuWRۍ Uٍ\jߍ\ݓ)P؃RNZ¹Pu0Y \#pdVMZ%\dm7p6R@,i \Lwoťt+6Wm t^ɶ)RmSx%fRMd+6Wm ^ɵ)RkSx%fRMT?G5ZKXi ycO鋘])dSzȦR&KQ6lJ/eٔ^)fSz̦R6Kq6lJ/ٔ^)hSzЦRMFk6*mJ/eڔ^)jS , endstream endobj 4026 0 obj << /Length 1594 /Filter /FlateDecode >> stream x[s8~_c|3VIh)muiͽ\.!&\M'Fd:yc$jӮ g'/ 3ljqlb[a`:g=;y7` O(GO:X'B/^=yx=pśO_<ޜX >|-t' uc h+ "9lJYG`әU~xko$( \@ o q_M/0֙'~ƫjB*Vj <iК6Nkۚd iO$? (= 7_lk XEä0< HFSVrr"@7r`w0*th& zS7ΦHL@0a)ll'r{d 8^V#JeD\H^ ƅ8Nj$uP0 8u R?%:nA *^H[t踇/Q?/u\xJІ=7<=f`? dP,ΧsEi0.sՉR)vG.$ xRq:H5*a fn&$nֽ4Io7y%`gbaxʚƸEY~ riO'`Ku6{cP+\n]k͔Nj\$Qݚ(^ygqMיm 5%$L9.SfyZ:M_ {`:uHM |1$n3D>dMOnFfk1ҙb؝%35kf5&L>G gF$q' :*^D]wH,oxsvb ;À\aNu\r4zI#} Dƪb}3jhfɰ3I33r6]F&@r$&m񰪢[ᵣ,Kmh}GSL1źx#BSQTE)œroNOZ)[ SH4ӣEncIP0vPk 5/u( y8m> stream x[Ys6~ׯ"8<96Ӹi> #Bj HH^&HN:}L кbl9Gaf-=e8_Yژ#6eo?^r|t;A󳗏#-O8.ʧǯN>89[|Z Z@ cZEw DGFC ѿC,{ua~#!dK xX]AuM*UWWxAx;uZ>b˰i_Ӯ}&/DQM Ҕy\ݛч$  ^/|\+6"P)ৢm{b4S2h P1OHX ?Il $o; 03D.pyjIWGxuQK HMDE%x`h DPN#pY QO"09eenqpұ11S~I #DSjz/|Ba. m %f& a!ډT=ĨeT޹Ճ _dTzxJSR C.x 3iɳnDWJf(v!(@7P>H4oqF\8uDh}?=XYVyXrbUuZ_pŽ(=<0 \:TgeGr-Nj6Mup 숺P]E[&!{w%r| Jfht)%M| 1%~6YwwUajXo]bHA*T)5>BI$}LF^ijХxD$1q˛ ٸ{eC";X=}je¤2͓ mxj8:/6 sN qЎ'?>5"li#!?ŒUYbE endstream endobj 4023 0 obj << /Type /ObjStm /N 100 /First 974 /Length 1200 /Filter /FlateDecode >> stream xڭ]7 ~]Kd,0BHh;d1R3efn& (ٲ%ʥ^nme{6|gQdfi*fHqfuhu[Qu{Vl1}􅃈}HMCFCHG0G5U?|(Ç26(1‡nj|̈.+"d"BpjDpijDpkjDGc4&\}QDHzi-"?[_6ǀ(~pcFjBynP3\n˛rzs\>3{x:??y-6uz}~ztaw=|,]JUev#DPz8 Q#;M<w= JsS0OZ=\L*T[Rf:$xSp$UnUFfEmIӡgVdIGV-l` dIu&b+"$x?Fx#5 Wvq[[-}lfgKv;[҇Ύ>nxadz[-}lægKv=[҇}ϖ>l|vq糥[-mLk^X&&T?;ɿ; endstream endobj 4129 0 obj << /Length 1830 /Filter /FlateDecode >> stream xZ[sF~`/r {<9&cit:x21"d+yꋌa|\,cnXƫG/6Rprfe1KϸCDCiq"W 1`囃 +["Ω\][J_w)8*u(.ޭaQ A-$UiM~kwFS&< ;?i7eMnĖz `WQ{4^bxMA!燹\Pq.LFʶKs `tXj5t%"M% + Z?/a8HN- ﴓ) "vf3tKbX%>,b@+R{ o>hLa^G1!Hwr븮u#T!lrx1>0ių$ZŮ>XjJcW/G`$1{6(]mb$`#mp}Pӆ2S+t{0)!H(Z ^.w($# ^b_ڹ lOg4YHA2*3>XAE86t=:g@O;T6}EOeP7<%?NB 0xhk_1cĴ;'IА-b/c2: DjP7aRUI7\Nj$ϻ:A:]݌XήiYU yT'K|VcmrQl嬶(X"@rj٧%ᘨ0Z+ $Hl,Z%Qss|Gn&EWRavm|cHG$.ƋE8&5$@[q&Kc:ԲeraNUAú}K q|[-1a&9exx2xOJ呮tՌߢOG=VVRh&6QfɍS8׃E#t%H@Z%:U:^z/I6o~i\kb7lhu6$9$**S@uX^1iN%Nj<%j߮>-%H*j&c@ztzт C.I{HQ8+&l ٸ|1B1*'ǧwx^ffpMR4+֜v0>ζ:*8x}~ϱwcGXwYr[gN*ƢdY"jllIְy܇Yil,f $-2f!6/ES*E$p'Fe-_%W~yǪ0Z&.ۊSƷW-(:6Y ̐v| n@L&غUf7T{q5t708L@V)6XȆ ڨyx;@g$6ElGd~YP2z?CDA<_v^&u@w׵7LAO4>y?l]A  ChouQޠ<3 endstream endobj 4157 0 obj << /Length 1935 /Filter /FlateDecode >> stream xr6`MKWA؞wTII;ޯDÞ~wB?KI*"-^(^""y-Vޯ߯_/(\ki_p;)2H:no._xq½G{bI`^[ޏ^Hl=Y̝cFb.?/cޥhH80!4,$2uί=,6 ;7@US+ŏ#l䔡pwYQ@WMv U}pf)[GRVEŲk n]חTv7&}ҵ $cb)&,w |j[A;0VZL,+o*`_ aQSnu$|nf6aCspٛE#FDT%G5dj+Vju!oamک,RMMT¢j+.pzPiO1jaYUff(s+?:U!Q@x{q<|4!yP1Ncx"#9I1&Ui VqD`]o-ۀyϖ[ A&  'SIb< )"Ȉ ai.+Qr? PHoMk zmGB3##ɑ) 8PbG"6d=M.0!dLE$y!0=E1}u邗F$fCqG<jޣf }CKH 3DTliME#!MK+ƣtreˮu_{= Q@&B:$ZvdZ ĥcq }14j5lI#YOfZWM =KDcl5u+зNtrI 5ƥN=$axB-u۸9wl߄Z+wWzIsOmftғqWya"ڨQ ]2CrYA]#bsV gz=a  ҿ{7 +po<%bl oOyk^fHG>VE@}Y %{4};U?l/4T3M7#ᮦ-Jzw-7Y}7u9u1Ҹq<5*UMLӎ=uriMe'+H"c5D6leK桉З8y;JqtY"ٷ%nf1!̍) <`"X1nj{ftwUC鎻{v_냄cŽ%> stream xڭY[o ~-h. qNĮ  ]|/9Ѯ֪ΈCqH#Gڋ'oO>|BĻ]y) ^PJ._^ߞx*\qW_N$Bq |π%D"'4E O˦6: YHV!08nt-"h,*z۴4/OvvMΆ]u_=kjGݮi{<AF@!U(@wk!l:uba$2-rxP< ib,6@D`P>tQ'em71O~3|[xg_{]WCc_hV4v]y(jMtcU99 WC]XaA0*J`almgHBy*_E, dSmopC)ʌjoІ|G䥾_zMDL2ʻJӋvsX l edaKAt}9.v9#H0ԕՇ1S &<wLp\Iۍ0 0S!//t,x " ČldM[-DƂ=i b6]fl`X j9t uLCxPe=K$"T?PܷS5+)3ceoE!BMLp쵵ht }VP3uj>qFFSx?`&aJhfF 廡zX 8;=ےn롵7$$)2>9rXQ| o mBL"'1Pv\}eUƩ_(F 1iяg~•ʘwj`g{ebs)"++ٯ'iil3^[}j@ƥ $ۦ8YuO #ݦ% 6mk]ANE B+} Hy9nB;Df"Z(󞒰Q[@-0=h6(r+lZ!(q_@vO\m(AC̫r[.US 1pRӪgW)M"$EOtj{0VZ{Z3f|ܠD4ɒdX, t;Ol_7oWtRPo[v.A77_pe[s[AN kSk5pxp@BG<Ըe%Vs:B9@5?'RP'<z3Lw3McR)Tni["LtgcyC{UeWzNSs|D(RBj74 9.sC1rrO1Ipty/6u;FRNB)"qtl+x({K5q($ o6lE9y("}_:7J f+ S'QG5jL> stream xڽYK6ϯ`BUY0^$i;YDZg6[@Ј1E"9ۍ)Cgk/B@_7Ń_}ssT)Kc7p&$0dZM~77/߮2aV(Oׯo7T߿|]į{}?n~zysJ<9QX?xPg }#"wW\qw~.Cd0$B;I`iqiʄ[RGw]w9Dk!XEvǕH¦Vk%U5,#a3"T"ٶGb|sr۶e}Y"f:UYg0eM7v۸y@p`& h";՞7˻ueS T=ոP1KsI*L*3|D(Ѱ#Ą)ذHT 3*6 I>X PȨA׫u,÷5HAӕ \1Z?\Ԙ-8QnbEeZg,xBJ7nm@Ԅ+MakJ5 ٷeM#?:?|(MYK'j&xXC{95D5afV 8s( dn& ]qhl[;eunڼ'eHC(8Qvv~n3_Q: V$[)>.H Y#^,!UFa7}6>^NH{ u"ߗ~!4qco<;͘d ϬNi4 0T>Q,X,]S z] B2.%҇ށ`CTo@C-#a8B÷/q f(萶׀d/&fш +jg\`mϼL犈9bt:ۃe?\qCYU<ϪR7۬YMFH۠%|M7tÖoܶ`ʩzYFzîgD9Lݙ0yv&n}--ij;9 &AI >^8A#JLؐἹe od5)RcA-X76.rmF@ʻW3H/{hQf&xRz]/ :.klMTqN^(4$@Q`%DH@;`L0M(elܭ4.Eb K쑘oZ) ^d:3»eQNf.8& Qi„?״XZYCz×g/+ C8p[vGInP\ƢI{Hl)%YoAWlcKy) T6fLCdx6 ̉Yv}Y\.:0O3f*Vzy*.?}RlrҢ>ߝ%n[ډIx(!!1SLAcPo]{R^!M$7s.KaJ :|TppA+,n˥lp 5B]Maq@l,=>8Sr p6ֶjjqk4!۔KqvY4@T;}>jԓ| p3=N돹=D q6 Q]Bjyyx 5~XCKk?pv i9tmc_F`u  9dEsRtCN05d#Pnħ*8Au,>[tZZaCOޟ0B*S81UKHOX_zCG8HNd`Paig-,V i| J G| .m Mw{_6}ڏ푨x5"o|Ra9Pڍ؎JW4E3 D1mj\Q3R /O<2+N!/hnzU+kph8km*s,S *`s x=\mSnzti*&SrUqV[@B`ʮU>M-.O"i 8 s,KH NMt$3P-6F]Z˓KPRfNeWW gTE|9y)|!T5ludCRm@,"T(VA|qW_ ᷬ0&Ə q endstream endobj 4169 0 obj << /Length 1594 /Filter /FlateDecode >> stream xڵXKsHWpDUaN8"$"B½yQ"Kԭֻ)Ijjpn X.eS9F}-^i[4]Mq6DLJ|*LDY'cτ"'1Ƽ>88 E@&v"sXED:lfH]_5 ϻ; &(da=>A*int/y|Kߊh`G(uggPĹ4brUiquv/{q¹rV*oowFﴳDFrxV=2=e).[ lҰ=Nmjyxj瞫MZt¼t=mz#NkmsPݎ8clbPÊ#D1|1Ҁ&pqs@E:߀sߔiQzSE޴0Bj8- YUe(Vzwwx_؂d_ve RC|3tGb1Dpg^֍N3tXuf)2 +,:,+_}2`{WCgIH##Ҕ{W֗/vѓ!dN[}e7);^;a׹WjLe@VCtlp_򘨎Y `iy 7ĸzӺ;g nmgSc?:{f^6i^dj7i[F5zhQLG]<Ӟ!6n5D';ڹ,e^7Cy鲻<ҲMTL=h$= !I8j0|ycF&0ǂvƳojm,\ F2GBcs^]ܦƽ䓴um&c!ick֟LBF.~~#=JM~Jz嵠(1ku F_U~x2 643r;FKN;  {m7EM/+reAv 7jtMQoq[䫼)+`UwWsu[? X_(:\W@O!|x0X Dn^- endstream endobj 4173 0 obj << /Length 1113 /Filter /FlateDecode >> stream xڥVKs8+\s2Uc^ړaBfr`&SmIcةd"V/w4EO!%f^UҋE+oz`φ~@C+Bxؽ~|5’R)6|pFt} g=GB`b{|^ g_=0 ?{m;E6{agLGffTV# TZHGꃑCC]͌ ;FHRp%|V`& F2 ռ Jʕ_FZ\Jە% s Q*#9j2+-jN"IDa%j ׼@TW& PDObU ,!uyibd%hJ+p:\Ϯ{3s8m|h@a?9gj:Eԕ]v>'6% Ɨ 6fi[$N\[޽S{CTbҋo6E%YgiVڕq>^fNKvNTf" IOnٴ[c0"Z9aorpFK]5/YڀX6lD?4iYD~+f((wF7st _ڵAZiM!U`˫kV-mU3 MNSE -da8 cgQWmp$N 1|pJGֺ LC]%6Kxn߀d3lm\Ю$J36-W~{Nznt~/Unmw-ވo?~ }G?y?]?FNq ZMLvepn|>? / В6 /+1$ax9iЅH@p8"v ̈1]kÌRd] P;\P-Q |~͇SԢ^-ߢt[ixA0ŶqA5|O֤ǣ)hNO'&f7 89+H.D? bӈvQ `IZ endstream endobj 4179 0 obj << /Length 2059 /Filter /FlateDecode >> stream xڭMw_[,.9$}=x'6][%́(D*$C4}' sB g.~yo"&X{I($R[/?.WСo\ǡG͌/>\=HRD2d|7jq,C/i[ξ| 慁4l)w2JuOS/ Dp~jXwWwȞơ72H$f[U;R(U#`%,\#}=RzۊPeeªeEI+e n IJ8xEmY]ʛFo.b{( ֬J-YB ˪V8!͎=wnsCpa$B29t0j+q8vY[Th4&N{VաMմ?RV5!TAW@m0Z2‰g &Jn Y&{)DwvwCV{ٖ{"LϗrBqSPl\31&xmzZQ$/ ȶME'|BQ1) ݎrfdt^r/U>b1Nr9#I%P("!ax}Fml#9 `eʧ((Rʋ/=r ^#P ٻWE[dbۺl8F_WA s~> 8U{*FOax%4Lb:ֽvqmKjw1Nu_EqCGT3 '{7"(:8Vr!k.{hPsmz=Oo gD8FSq`TG|lEH܂vOO ?Sϱ?ua"GHuGPҚ >p #t~c䣌~="._Yo_Qd Y? 4 ko`:п\\ k_~yNE%MvsW3*F_Gm G%r%F 8 k(6H&`ytXc^:ծq9R̶JQmÅcq kwkboEl IWy|Rdk-㮁Qᾐɉ~$k N~g{R>܎XU9ӔU3HvY%>tuޫLjmr !!'ȯR!Q˄<8,ņvK~4d殡/cGD~0gdaZޓv >m#7ci 9tť9)!l{  A2T/j]j1q7=A"Ȍג2to&t$@q)]8ő"163[yx(QѰ{ L*ZʷY+2iNU`)E4>iiPa" vk`(:6S'A%C;ee. Gi P'q4bwoqD1]aS_O0=9U,==;I8ߟk֐Գ^#AĿeuc)Lh!]R,9gy^Ab?KG endstream endobj 4188 0 obj << /Length 1250 /Filter /FlateDecode >> stream xX[o6~d`VI is0y`$"(˿C:I!O\Y9y?zzc'ҙ"Ϗ#gH+{I"Ov1}٥WBϟ?~_/>o#L#oMI5rRAQ[Nph@5Ν#dG0080z8PF#Qle=]?S/F3؋Nyˆ;:v'[-;-w߼5ϫ˘ds-3l7k󽐼sB*HɆ3<4nF[~}kш ^33`e'k[S5ˆY0 k9P.E]&_Fl1Xvʅm+JP˅I!G/hD"rXYJ[L9ѻTU؃+ ~ALj*.  A:0-Th54˺qad^'Y󀅅Y;3Rb؊Rr[V* {{^D/GZb<ؾ'0{^ h׋ǏCq`pAv^9~$!3U$͋2\˹^>4 z!e jΙzޫxuxӚTpYԀ/&k0bƗe}wDg%HTVhH05I ˰D\ГމcCLN[6Y{2+ƾlgw-bzQI$h>盾&%_o*X'8QSտY,P endstream endobj 4192 0 obj << /Length 1739 /Filter /FlateDecode >> stream xڵXKs6WVj& vrPbU:%d:YP Çwh=vE$vvA׺\7˓w ' Zn8>(OdcvZ}jݮ;v$#5DQeZ lKY/q8؁e WښOݭD֔' Ў[`;[d5,^ޜ]`{-SK|-rt|'zBer'|К:aS=>ժ懔i.zRE@Db84p|7S5<ǂ"H( wţGS/rhGOISLb !D{}kf1bU-2cф*y 3oqzRi%#E^U*櫂ӭɅEP4^EN)ئ|Y;8ā,ϿV:Q˞XZj^ `Qz| lYI_LPij@-)'CygR1ϲAs}8b’+-OuLM·ttc+FOhIl% 8qRh+)E:l%]JX2NT`%R֩T(3k !ɻ4[lҊaBkK_: VU5u'x*w쨟:/L 7|%O.[cejl5١#tf#' 'q3jQ*:eP3v0S\p`.2EvEG:gqaBu⴩xϜCZ֍A`b6AŦ1Axkf5q\a',^^C`ؘ%kR|`HkHi*d]j/-bwGUolyY*R1"M6*:PV5z7Ґ Jq(H0}ewN&>_\_JbL] kaSdMÞ0h^MwMi:DNĿjV7U/I1`[i5߼nӸK5AAm}iD7WW'ܬF @2ߎGm`B-djQ1Yim Jc{դAP>)M ŹB-,K\l9;UM!rI5lE-nꅃHS*~1 Clv>st5%3C)pR P%j\U 80"O8qf]+I.ֹZ̷}'ڸg\w왮6YdDwndסpP g ʰͰ&-Zݒ0ֱ8c#Dחؖ)O Xvb_t O*kATUGrCۤWKy7ٛ@cz,,sIb!T=ċ649̶-fqZqPua{ uy&1PJ4> ~?Ы` 9mن-] aȟn_> stream xڭr-`9^7%{kˊH'u DxPQ*@RLB4= ww]xV G3Y;!gRGNHyY$/d*}j6w?ή?>f;{w5%H Kw=|s9-~Z\q!@ډ" EȴM|D >a=v^y(SLgx 1~OD<lW?}K1ҟtUͨB&= |9PƃY>*dQi!&5omZQh}m{^.P-wpsu\k_;{")Ii&<ݟS8Rȫgus+PCu/8ش|\)X P˫7;O0ém4!)uf > Ӈa&"r?ڴn,>-:YA۷oM)Tp(ޤ|:i1Ƽ <ύ|0oUV)QvUgbIQpD %YydG0`;7L8 XIIZ>)y''>GGD>^/%Eac_, "O]Ǭ"AT[X5k0ߊ TSՇ0`8>ằ Jys!3DHwdR&.V+) &ܾ78r& `kitv(+շizm21(#ЂEQ?G%I2!u#2Ŵ>PelJ'jX" wAM 3hYesNIߖ[x&1FoUi>'`>_+cC [~o({S __vE0a endstream endobj 4200 0 obj << /Length 2250 /Filter /FlateDecode >> stream xڭY[s~ϯУ2]39w:˃lɱfeɵiʒdbQ -;OzO33AW^DC/ƛoo?΂HF΢Xϯ? ͩ Vw}4 oO.'(X^z_.JEko9W[O mRrn0" 5+'rhBzJ$2#a_}}k5pSa." c1ˏs #co0ϸ(;Hou"1S}-ulY㔳w xR`Cd{Rx\U#R#6"eP86),0*=d{]t4T)A$%R󺇆XMɝk$GZV" $t>[[رH1FLG"1 k܇ +6:̰TC^5JA`]QCfvv| ̬3f*ME"OYU(S "S&v.&4z^7RyxؑJ&4+zM[йyCz{@"N>_( 29m6PqvR^ 14]y0? @  o.v2q#ykW:o*=[n[,g`3AqܸmSeAaM$Ic+18^d<چF߷ѡv[,#}ΈP󋌤E 80w`.!p,GU}>tꀦpiE`|<;xx@T-31GA-ۢk)eDgyNnk q$>F3/lQY.׎@Bos^iAh @@se\L$~pVl}WyQcFB-M]K,<&p넧K>*Lfb͹j/뉭BGn_zwւ3PHjTAJd=J:U*3؊d2S"X6B5ƽCmg= ?:kzRTF06UrUɦWkB}$ %#;3gq7l3c8X"HCŸ`!-&jND}a_-2z_y+ͫvEwUswǧaĊw%`E? :F`:Fo]lw X]sN^}ut2pkKubKe$ e/__]_$"ׅf82eqǭmoM70^֎K ]ڮi) uu= BFM {g8{TgGPZEt7:`vWt;x)#z\ 5ЯmS`1秋PXy}mਖ਼ @kpŸRGYBʹШ @faGd_̒/V2Uq]g70ڂB io lTLjmA'P7$(o&*5`0alXHw"9"0]j M endstream endobj 4204 0 obj << /Length 2839 /Filter /FlateDecode >> stream xڝ]s6ݿb/':Qgqs5/^_&̓VzuJەdg @ȉ}~Y$@_x'')M#?Z,׋s4YđAXΏY^~8=CI0ww40),]ݼ8gyyi콅č"ȷ'?y~^xGrB醁Zܞ#xã$rpŮ$峜/fl [Mhq.!ٗuwz.6 ʖQ͚~./h"q Ӱj^b2pN4iZ^n۬%Oum4cusM4OR:+| }ؠ3bzߦ^`>UzQˎlݩ=+pЖI14ءUD0tQġ°H%bkv]!X))oVRYIƱ+6dݬD2mJ+ͼ@Ar%z>zF3? eGeQS;۲-ssoHs%ׄ@rU4xȪ{m5B0 ,M U/ r`, ք߱oy,Vw[U7 j2]s'lhz߯~3]+3T}OmCh w^xn#`I`ih Bca}&UM}- zBu@ Ϲ{sCaR=tƀNzZg}@-X,iBો\ k4,}!9Јc @+ Dr{WXzp#v`QB_óv[# Ay T YY$ t^hl&aabN@T@אHGJ@ l?:e@>ST0Tugףt%xvb:,.`zɺSZ28yA3 H5 Ȗ>rlDj37,U#X#"4eE̜lx.!KFV1BQҤ`mK=ۚGFMzwCm 0 魼K5+CN{DfرZ7'.YIAOӏI%Oؐ R{jGD5w=6 9!.ϥC[G!(}+ѐ'2m_vy)u*&4,j(YRkőYG;f%!ȃg[ԗuLq!!Ķ ¬@~n`q'M fG[=+4@{CKvjj6wjxum:>"qjn]VI>} (&_n݁/j PX *I0ZI`ybYg2GӳyvM~Z^Ȯ1#Ϲ 0`|-;ϗ0q,YJ_> Xp,[ z Z%@ LX=XCPG3#(u7V>/]\0HuhIl'9@!h9"ULLg=>7Ĩe>"wNgKX?L#yՆ̏~_֯sӜT1 h!n(]q|IմUaui+rLz4_[?`Wo?*`7r ԁo*bL endstream endobj 4208 0 obj << /Length 2252 /Filter /FlateDecode >> stream xڵYIs6W(U$fNtǩ'VW(et;ʯ_aCzL"FHs",֓9l2+M_~9/}>=  ]^}|fٷ3 kS1ZLV:Y÷'OT()\zhWXtEp-(e[-2eZU8~(5١A!LORJ5TM;CN_X9a|ECu2o< EO؅m<)='wbc -$sé} O1_1aQ]Qn ]gU0q!.1PJE ݮLyS)N];d7)DB9+62Av~Y t"%-.Ra_ػ6 )uߌa:$mݡ h:عq0A&<9F24pysDQ&4T#/.G8 D-׼|CG] T巪]hѣ ౲qplnG?)J\[UKODjŧpcݏHXP~CV6MV2h3q=FO#nu Y @eZΕ? *&K?^\]|deۊPrDV84$P<$YiKa";Y8xd&Mn,&i jl<$77A$-ʬ_C)oKRmqAM+FZ(qy]_>(|OƢ($4!Ur f>DrzTw Wz NT:=N`iT'cM@s+ roZ~+&;YȱE#@'sZ@ $m ,S$q{bJݱ181֍&qߴxc@֏7Ke7jjna5&lĖZeIXU{UYv$Zks4fʈnz3Q-7`aeoM}z/SU;J$ke.WSJX2W:[&L_&¢c͙m&Dj$8@>e!u?/^|P* mn:hkFTxC;uw(𱛼0-QɫA (֘!@ptymҲyQdpO\!ǝ;zóXyluZim@~{)`cwR44}hiFi< acsz -T;ǒ ȘƯ P/7ӳІ( Ӻ1wEu-1F٦$0cGf6gS3}q!z =d͇ endstream endobj 4213 0 obj << /Length 2027 /Filter /FlateDecode >> stream xڽY_o6Ї%E^ E.qi%%'~9#Ye^Dp4CΟgh<9y?e6X81٣rő*~R׳ $P}G]cϝW:&)wgWoHzV]13_og^,_8wnGqn%3Y^Vk֟q_J$+&EHIUk"r cnj'3Ag m>WX*VqB,\}y>d0="r%,'N 3\ G|,7YպxnȈXIbHY/ ,6LʨY !9`@Cbue+I HȾ^ޗaV~-Qd,:ŷ'Y F > 0\ |m&,7M/ɼ_F3Ƒ3vG!} %jjfR0;,h;SOٳ.C 8"~w#~/Qb&–<%#Pz y|Bb7d1/uV׺@lƇAUQHJS $tQ'uV *7v0Q%*Wlot]4HO釄Fp:۷=~oﶀ{G{.ӹ'}Sl)J12ƔA ÷2*`\LR-U#I5Lm#|RBPeH1,|^\컥vk/YǶ,ujNقNN=YZ6AJ(To ]EY T46U? J2%Zp !dO-g]b(8E,G8勦i8p !˳u,p>!$Mڷ,H4Mi > r:!%(/=}  " )&sgq$Nm |+%qWKюEr6f*O^-(/,ԝo艢ƙIt$D&]Ya&w ڭh¥ڔ0Dq.lYDK:cXM8i9} T;n-ȴ@Oc$omj:'hPٞͤ^_#0(9_H6Og7d㘻uS0MT=z]e$kp жY>|A:_]& rҴeÓjݘb>B(o4hn I\l^͆ivOPd, bKnJnB~v+ ^2L&l-8Wq‚%J^>-B"Ҁf?`#&OQÃFJ$dE5`R \_YjH\0xe( l̘@Ob!I{\|·Zl[[045<]ŭmVjM\7 2L>*h*}' y؎IWiݮ8p5jj$y߮ N($P9̗#3C+;#c>'n:Dn!S%,=EY=NU waL%%/ . KW{$ < y($FhdqD#s~|ӡD12qAdȋ_(,.^pe)Ldh"_rֻh$yj.YE@ޭ!b \7\TMS' ^ ˿v*ةQ%2͛gֿx1W{Z9* /BF$u/odA$}&çw/`JE|wU"K( endstream endobj 4126 0 obj << /Type /ObjStm /N 100 /First 969 /Length 1386 /Filter /FlateDecode >> stream xڵXn7 +ZI0rh= 9hڅQ;YWc_< )=ROԜjHġ?%X\ԍr+nX 29Rv#B88;rs;X[ _9R`x`TBSL`&'!јk.})VPK>V|q} x"!sc YӴ+bHVPcѨ!F>ٸi:} T'1׹є&$0RdȢ" !Xqr$waœhyf:FVX SKccx ԚCS(unA)JsGuP7<^ ZM=ٚ[ BR{ZR{ZҼયQရ{?SZ<4hH*31bi` pI>!*k$*/,X;Op_6< U`I A 6,%>z6-!5t߆~ƶw1a\٫WN-b;ItѭFj g-)GѵR}E}S}gAtJ!chj-2&EKR}3Ea5EE( D?SѩƦQ<M}Y/ny\@]a-?ߟ tB@'o\닰yr"-~m{^߹|y|{$}on lQq}D[8sn?+v*[zRl\%aF6-Z$Z, (AJL:Ol1/"j<깠x3XҠg6hBbXۨg)is(.%c18N%*1p=W;zf6mi1,UhѹlIŵF?[ʼZ]qU9n7zْqIK˟Ih[-p{25H;x1|ѻF|XZ͇UmSepXg+U<Ou=O|lgp| -TSyxnyumͫjR¿ү??[{q{5mdE̩g] ݧN^")t_;Rc+6hKL endstream endobj 4223 0 obj << /Length 1828 /Filter /FlateDecode >> stream xrHP^"ClUHĹ4Ȓ )ߞYPE3iIعvs:x:>ሇ4t&S'"g>w&=~~t1]=`}}tYrC8QwxLw2O.߼~& `1 C`s10 `kFyҸԘ>?o*ӄ"Ǟ^,R|SU$/wOe2̚Umu7碶ng45pC[M#2MJ,O{mEnQמ-*/кz+ifh?ZtiG%^Af RLҎ-Bk+Om Yb>:331 ',x6iQ+QmKgF7@ėw2Q"D`#QBŪ Gוd2_e-+xkgK"`Ķ:=\Bi(n oivQ°ޘg静ebLl<n?RkQBڨ{,P)$vVܞ&M8*)тҌE&WŜWxq/*'$ГKjWJB(#ʴfԌ_{O <"pd)H=@ʸX$z4+qvomA*Q1Dm& P!3ʰh*}0D>g š8zDvN߳w# #فcKd:AHz"$P5tHtܣu'|M ݖ X{`-[YRŝYue-ri"EAD !If0nFݱ)xBL-*j{QfĖj,7@\nQWd1S[wkItyԞYR^w^uP(p[f !>(s R&1'a9ձ&/^Hݗ$As/D-JA endstream endobj 4233 0 obj << /Length 1582 /Filter /FlateDecode >> stream xڽXKsH+TQC9! `0փ a53, VF3=[փ?88> 0<"|e}MCzhx>F_Ftȩ=3ʀ1C7܎ތ?瀀|lZ"g2|}0bptPz y.ul pӆ0FǕxarcxvy2O>)5k؍-2仮&>.sz%b=z'"WtCs](U^dHLd|Or)•H cZ]].'SҳO(,]UA`HLYnឯM8;Ћ}VV0ۢC,EnҤmpR UwZV$TJTF~$+G>GpD׆^Pv2.]$?+j=~5Ekj(_ R`Ƕ7=ڐ ar1*uaQ2R ]^ͣ-=Y4 h;* YD9e } h]BTuI@jBs800ȡ:a~NFL3 F&+^nzvgY!c N aAPk FӲ3m)8Iy!Fv#;z6Ն΀=O̵~{^7.aa ?yv uQ5xqQ~ˣ5h0x_B+{8#nvEE=bMۃ_$T+adb]M:ZH?ƒҐix~c7>,EObVֵ^^:E:EGv8҇ps>xvW٘|f1?]zp—c;JWwEpB_o ^|Wr7Y_M"cx&}tj{} `BcO%sRB_BgJ/Cuy{r*ΑZB endstream endobj 4243 0 obj << /Length 1390 /Filter /FlateDecode >> stream xXK8) V5ټt;vG4+h~$ {{zfKI$#ycD"Υ7[z?k?!%a/g37K> y(7t=%$o? co8# H3(Xao k=,=h!C!g0μin!G0C!8F$ #!kMM-Ң-ű Ei  # B C 3tZ#ɘŬ>S"W,.SdN ĉm1Ge\e."Rs4 {`2䇈- Ð;A(z3^Mf[K5rCxUJ̠1/0Xw{#̄;r<0I!-hKJYi>,(؟YEʹ/(*~`KQn tF-yQ?,PVzLmUYiC+~c% co|IjafX`sr,dfiy9.Z S(+V(Ɋ|#N Vn&Uk(Cqԕ GR4 yT$Bh!ި zș0A@wRp÷/̴/wg"PXQ8*ihFϳtQ/71R ICļ|]: UX=Ѯgخ$0ay ?sU79qd5pJױtJ +5CT;3cX(ٵk`*Y;1gm.ՒǑzڔ J g|^2#OqVmD,TQ6$u3ߧužI][C]7"uMkhłw/z|xQ ayn@6Ĭ}ߍ7 Ţ~@C?_L^c endstream endobj 4248 0 obj << /Length 1836 /Filter /FlateDecode >> stream xڭXKs6WpjBI؊4H9%9P$dHq~}RGL.,vv{=DD"obe^ĘfͿa620(?_}dF7)|Fncb2ý(^#2X =kʕBBFa\xӋ.#pš {^k[ީoL맴xVOl,9#ba-mFc~j`lfmɼk^zۥ"E=ܯVvaMQ~ФIiVR+]Vo1ah\TJfYIk"O6J3y'ES!{eN!ņ嗛'wvlcR"fW1UDSDΦ*ۀ{t" 9]4_$h$;_ٵ16`zƈX%eޘ]M<`('Y&Z69LNjY5WT`u!WlѸU֟>.nz@mJ+HA[lenǾ'+%y"me= ^`N&3#)9ɦ5NR<ɗGY_:4L8%4#̨ _# Qł(¢Kۈwk=j'rrmsJcAows ( aVY:Nr([Z3#b պ-_8}b"p7?({c&q,ɏɊUb|iQ/#AiGU aʀ[H,u~Z*8JL(o%so}z:K2YFO\WuH0 tg1C>i-̪+-W)+*ȲZ69?Of{Zfڝ1oyU*h6n|\3#XtP4@ψ"X.Uę۾C񝇾): լd`h8 DPQmkE'Vn`QҘWr+:,\.A4 H}nMg97(޵0Hӕ,pۉkN6̔ ;b>@j[W3eK% ڹ^HPkcTKq0g4CMCb8!9YPJ%D5Z!;/#- ܚi)~=+?<$(ɩ.!=BTkJ&žVL$2AA<bw(҅bo]Llhd[A_/\ I|fCLb[f30Gh9m(l(f+ xNy1-ߏP* M[Z/AmW%U}4/ Lw%L;]uߨe s~V#5E/]Z]`&ߕ1O9tu8xTѥ<*v%!DDg ?IU!=ucf.V+f!Vu:xtEQ=++'7ˎD#> stream xڥY[w6~#}NW퓛lD})']w)%{s`0e/ϫ70(" 3z(F0U=zϫ_LƑ!Ko7Fkâ0YL\/.oXz~u(ċ ~]Ąԃ/D rW Z @9#L 6_ڪ*;w`v# UYnl+He>eijd;(]$Z30F WScqu u!% {gk#{X~tí=K8- $n.j_@ 'l秊H_\hvث,]Z5@lv9v򿊺qfaKNJyF6gg*X-sro$E8vf A/4XalzDlHM0IXN4*H9pwzO]. W~=ٗws DE2 ? [؄%n\HO 02nvt{(vtg.G11cbJShOZA+^rn lmږ 9tgOF{@ O F"Y|3 B,:8)_hgkdW$EJRQBjMnO. 'ѧnpr_CWHHCmtZ'[y^ܽ.I,ܥu27r$ӁܷEy^D[!=%OeKPB[6( vt㦎R hvޟH$D9z"9v" 4vOAv; >o>RAL.H Q|I4c|{3pQ컜nƥHR?AUvEc^7XRlӲȰ}tC94: O \Qn(S. wB gZ.]"(BHȧ@uB8s@.S@SC3@J(;*3|Yk?-u\b"0@5# ǯ9UAv1"H1i16Qm[/MdowNȓMTD Ju>~-~8=s1@Vu]L™A<"4фɋˋCaianLp(4G,!1y H 1ǐf>Phm·Dӹұ\>WT(bNY|QAzZU%-}Uk%Y) ~G\D@(K\:~>H7T* Si /K1,՜ 6=_$K2`~A)IS39;,KahERu/B}?Ne*bmwTTzEhGWOI&9ֶ]ٳ~Ps*˜ºp(uO{9||m&$9<7o4 6xRŽai 5(ra:٪OR|} =Oמ]Wɞ4D(D֭֞"ppu&bZMO,% endstream endobj 4258 0 obj << /Length 2052 /Filter /FlateDecode >> stream xڝXKs6WjK%!xNxcj29mBHHgr 1g?-[YbW!ҌH!#8Fu[|ES[HRE7^|ۅWwWPnHh}{F퀽hw{G{v<X/HjR"Zm~Fk%DXxm$SAR)`^Fwg=C匉%:#%w5r -.)NUʲ~ G 鷫֫TvDm`yo5^v*lj8_J~E]UgᭉQ%LA8=<"QI6o jj )]Q8phS#; 1 C3p:Jf;5NVn`&ΛZ7eĊ 겙Obaaf 7k_g kڬͷy6(q,vTqL(LX+i(WtjQ5]YWۛʶu! H&QF}%rQAA,ﮮmw5 MIH^5f; 3?]߼ pz[TEB*;\?`*dG̾+C{q )X)J[@Hg@_s  #,=.Gnpx^B*CR$D>K/קg/1̀/s}p,bKqܽVSS43w!'ef$}wuwvylI RBLnvh3H*DbRjR aq%!5c˒D}[E`hR B%vs=[o2K omQfjZ_8Hf $!%xdC1%+7ll7A )Wc+ ( / _0L|[ޖuAƗeBB7԰^Xl)WRתݿ&JF|Zʹ^ Ipd\TSh ga Y CA7C\³AT`8lgN$Pt&ӑ9w Nо ĝI-xA;byttFM \@^u6 8hI(NNj2Lv<ȼq:  @{I%$p^uӻƐL[lW)HN& ^V$lrWhY( }ڧZL@ *V]$̜Uzj̗ PK״SRL|wا<6XB&%l ?#wЮohy͠(怵(gWi}"5zde`- >Wp S^^Tl&T[Q endstream endobj 4263 0 obj << /Length 2650 /Filter /FlateDecode >> stream xڽ[[w6~g#w'qͥwOO}%"U )D A8p5 4ҒrDQHRĹ.˳wOgTPә8|}g?wg/?+ToNngZKn9)zsC{r~y 1F,O> 0b0 g΂'?oI'8BDo~vg*EXn *-Y9SbU}Jnp0W9vW:+lHJ44v*puxZU"ϓ $#ҍAT9BL4q6andZ%@ZOO̵<`Ls9DA"kJbCvfMNaJۚy{'Ϥ)6UZqތ= /vТbsv̼a̪$qb;r!}2"ٍ Wm2/M-X/oZeӺ=KVx6Sͷq KO@icy v)tVMݞB|PID1}na݄B;47>zjz@OB0-f(@q@ [%aȨ4aP6˻!^j`<%Mh(Ck|"ή-Lh=ܮ y7IH'ylB :Ơm{w+ֆ"@F6_̇HOOyu>W٭* X볧4Uؼ̋frfiu # |>N)yH.vJ-M#l:pf\IQƐYHNc&@X<ˊ[^z&dUN;jLHh/>|$P 88<vH&$z5i:_?gKaO=έ| $/>s~yb!ɘf m$<^yrkiXz"gq3u *DdS}+eZvL[[b5&=Ri:swP!h zm+V"Hh^N^OyԀmbr(OQ[5=0DZkd_fݔ-rvSmgW-gv[agjQUhȒQ!~QS!_ΘH^yaGڭҍkiZ3jmg|Y^ms緞-֥y'ta_^BÅכ,Ng˶4>pұ6 gTkaQlEwsm;DҀCTaN @Ͷ\& bj 31|O'fYA$LPZ5G,"$]!ݑ3.ǦO&a:7̞Ք:f4􈮀1Yٓ {,?:{VIY ЏNct'2UqD4"wA9)H'ptLc#տ?nq'ys_`=>k@ޮNGuC #ՠ"G,T)G􈞀i1]ۇF`[ ,Y+4H#{LDeO4 {?6ܜ|*6?ZJ1?"]A)k6*q8N p̳+^$4}qYgKeQݜ}1WH#Lxw'KA읺C -+*,uďYQrL QQ)i0YQ4#)#(0ڎH5RxD=߼G<) tmG`)bJWN)7nl޳|^ew?ᇇWFs핰#Lkw&= t,Qbe ܎"o4*nחaw7.H$X7$i`l.Y]n܌SS,Hh "b.+zjs=˗`F=6]^m2wٛ-#>uwnJGݕok[CZnX>;jwH}~as/Ѐ?;I ĸwWy |*Gr endstream endobj 4291 0 obj << /Length 2204 /Filter /FlateDecode >> stream xڥ]s۸ݿBs/gBH%9;$ӡIH"N|X"e:v/">~+Zlٯ볿B%X7NjT0j.ˏ%Qy(^>+,]4S޼8r}hA=D!"ߝ}- }BqIsW?Ϣ12aGD*zV 0%hp͗E.5.wZ}akq/ojsflj3+PvаvaF,bΩ tBq_;e!D% ^i`x/ZvJ#.-H,^^K\ȪmskԲjhtgUx-ʺcIeE]MQ[5z){0竦3-r( HxRX6fGJ ApuN5D$IH1 $|1"tz( QkwAwcSX<ց%<l_hDRGiJi0XKlurܻd95ǵT\47cy v,7^A1"HL'~\P #jW ŽA/@wS|$ BqysX:a=!?wEBcЩȉ(2f@*4}7c* .qRayF$3"SqPE$h "IRxCS3bERF@[ -2i3'2ax :6RF(He(L\ "T^4 }HˀBd$o"_C} éd1?'H8'i` /oW]Wn捘ńÎBuVwuzv]BpN aY=ls.I!hד2@y8"u^AiX )F&tNB=Mljߊ%Kk[<[3 ɠUANizˆU fMl ^Ql☧|Q;O|~[NgYʺl;0KzQ>p WΩфrVp>lF)>GI$ᇾq{"O6Q$I?ī! ;+_7 (SXAM*`$rF,&PΈ \7Kv|1fT byό8R4rKpʪ_vǺٷe;3?*?` »!(H1*XG6!aVXJo_05KFG04Y܆󞆦)^!jO4{;-fj `OI|QsʃmoH1Of 344!n6s2w={Y`>H]c<|BTʦhl~0Vi[҈VURZIOHv] FuA+*kf(eζM}{q+"MAQn"&@LC^Ըl]uT'wH2 :]X: q{2OQw:!f9*9`QGa'ɹ9YTcј=:ޱ7XDR1ܖM5aҖ:\c4K\ո7I :\kNlf)nUaBҥ|Yo$(p `siqfH#6J׊UDT7ioȪY3$ԔV霱\7i(T sh9;2F0k|N I'$qv|-4~׿P'{X%WtpZqn~\9Uɺn}_Jnizu.lʕfV)zvt B 'xp@RԔ1EជTHK#┭ ՐO endstream endobj 4295 0 obj << /Length 2088 /Filter /FlateDecode >> stream xڝY[s۶~[ n;yd(8Hw &ڎ$pX,燳w`\<B,b2!_]2RH{yݝл?9)J,߇_yYF$Lh_0gL= x?@ge~b[^W]/SC I+d` [B7X)_ Tl#Q\ <X|Wp@E2*12IU@ &gPKVz/hc5I>g"vmCugL$ұHqáƮzB yߟXDO$r0J0ֆql P:ø7;|]"_2{ A>cwfp,UovHm=}j13,j~$8_PB@;Av0M_hDRYJz[m;<~Qp6SԞp\-v'Yhe]b:d.r^;,2(Tpugq~!\քU/6S3j hMW;Kp!݅] \yk//9dhFx+A |彇"n4Ma=斆s&<6JۮC]Ge`xӉ0,LE0JdȬj}xǬmf#2䯧g,:b."А*; l7YfKz'!DxwJ۴'q=ZAPMgG!(娛e0,|6է?^]]ߏh7/o vzLWCH~,QLzLi_6^BS THAǕN,t8ukʭd~DBl!wMD(yNF=4 W#==,ƛ;A7Io *sUntfS&JtpT&wec0"ip2x>$\06>&]m t/f Z o) \i#U4HJ6V!(Gt=ܣ*N= b䅾G+siɅ\` .GjKǸڰ6{Nqqݩ8pP.@iGH4gi.۪lʨڏ3V{$6-H<}ͩO?S:{]RÐ( a> 9M)  c<例TkYWC(MڬRשEx+ꈫ*l Jʷ?pJh@Mv`6& Y"C@Z Xl endstream endobj 4299 0 obj << /Length 2907 /Filter /FlateDecode >> stream xZK6ϯPMm5ULiGTڳ%R#R"R3qh5ЬÞ `q\|}s쵑 #LƋ"B+HPhm7ŷ?޼zw `i*o~ʄo^WؤRWoxus˅k쯉Rj_|,rXne=/tD]ct!DfB Dj(}IzjXJ@ٝזl;;ji[֞}]d"bN>sPM (z婮wgE/SMekNnv/b@T.V2i=i'l>ye2=ikwP$.,膝:im&"Rh?ΉIzimm})2_~]Y{ E${;H&p`M-oOǬ+z&JWRE"I 0Q֜2>HR4ߕYv;k]q㲵,ovnz9v[FJUUszu徘0H(0|m-~T{Tcྷ43RZ f''Herї-هbS!9czjU<:qgC0J̪:gDdWQe ՘^O\N:0ëj!~c 0K_%E*HOjRm+Y[~v 2ﲲnmMWMF,JZW<ǎN-Oe|FfҘxA~ustcvؕ0pJmQ` h *- 0mŅS(.ᥨDDOķPi{P7p2Lמ2'x_V];SFzrWdaGt!y^eđѳ{gt(mw%0SK0މƘD>ql|9&D6A-h)B EiFxq U"tk@ uRf0*+υB+=_|I}b !peL1M<>O޲ZPs%ѧ"__?L̄ꟃ(xtLk+*:$zb_6M岗 3ͩ'j鳴Um2PSZUg-$P7ES9#!I F,؀ R)  ~(&}Xm"4"ܣ;?4Ԑ<,f6,sp:d8`Uz3 %dԫ*ɗXR!̀G=hlbFU KfݎLL(/lN:ƻ̒YOdb\f#' &l%ᜍ$!˟hٗ0edpǤ( b~8n--`e:1r:puFѬ`"jHQ2 9َm #m A;(Ne[壛N˧י@?EۊD>+Vhi@YϜu8Z.?u91"nC_+t2GNcy PE,02DC/?‰T3MCBHܼf*͝# 00n;6RJWYP辸fms_`J4] ~EB-Y01#I" jhUa4E=sjrX2Z)yRCAnE C2$s[b+aZ~"=luL"bBp8 FZ8Lր0@+ߡױ tC=BjT0Q|b/Wn~=KP(/__/lU`(0X446|4i^|C_eU2?wǑ0!UCVε >+K?N|vgaӏi# yo,'1JDt[/sy|0ח׉&L;  Y*TF*)_JpcD:SjA&#t V &)V+P*g2al 4とSkP(ڊeHӋ]CQĀk6PkS!o&2V}YeG;jnM9]C'DP8(J>C'l*]^Vw1]vGn˃lN҅Ǎ颎3W;hLBޜ Os-pAkFB5[杭dp:" Ξa] |%fki˜‹V2t6pB%FDI8 ѧ!_jmvgU?Yy#1ufhBBV_ tڱr_=daB=cLBrU30ʸ6 e>ې1^4˭tokV  A}ZܼN1yWߋ2+Ҷ%+ʃP#~Bü`IVE%4ۗvd8՘XDNSu/Ǻb]kaCVJxhaxj3j^GE{ oh_OR51kL~y>2UTѣM$%4L{Ha*ExNPhV0-0 x藉^ xHl5~XáTvJCƝ,\ڰZY[paio߿z&TFˈT&#X(00.  endstream endobj 4304 0 obj << /Length 2850 /Filter /FlateDecode >> stream x]~/D[O$Ʈ{wnI@kTDʊ=X~}v<}b ,@E⛻?"YfBe"0&[]{~sTQdra՛2Sշo՘tt7=|{_.$,.dL8֋⧷ᢀ0tvxE[" da"dP ٝm{734Q,T?GZ{J2"4'iZ}islDon0@:dJRJEMxrr ڭ%|o+q_ eӪyY5N 4 >/x$U}'4bdByu $,|S<`ͫ{z 'y!OI/ɝi-Z1aZ :.~bg: +(K3#nڶv@۹t>I'؝rcn7T2#Bmի0[G> :wb}<Dl:LL%E6ߵRG]χt|Y$qUJq}%nʹ6V<4^2< JִV˹j)B]Җ{;pHUӞ 2Ė$1rG uQ ?Ʈg jt1" Zxzˠb 9 IM蠓Y 5qQw0+~_ޡ'XrN`_.9Bِt~]ϖy2g$e5Ii ʦ=m&rc7RsBĥn_w.μ5v)CYU-UD$ag# ySC?qP57  7Ǐ^C*NoP481ў w7U!c9htdcfD=:S9tf '餞+X)~ټ#ȃ݊hb_/HܚbUVsUq|} J0R;l'샎s\D"A蔟I!j: ?D1 mM 7Ï$n. BI -sβqY{H=ܓB$sP}W 䛕+*&N|r$}r&\Z9E˥.KHm}hI&))$xfN iٝƧSW u<$V}Z }LH̰P*U4vdZTI뙪H0$ N,Fe|9B}Ǘ' /;\dؼ܌1"3ri痥^Vt]%3a׾lRjm!IZتPg'upucyPس/&ă"Zr"-9<1ӧĸ9k9._~FȬy5ׅp9FC}k}<6 8/P/ j .> stream xڭZK6m@̈"ž:$ i$3dDȒ#qŪ^t{2_*isyTnRFAyob)қ8 ؼïOooRq #?دi=j"𺷏}{駻7OwIa0Q6SO_4\qiC%B]mv3+gPHR>Cm}@ԏ6[)E;wthљٴX{.CY[gSW ne$|5PgY5vp&X؃ڶ.r_kE~$bP6 {Cۼʺq4"mi$JDI.m-әndߴpPkNb*/Of@)aGxf}k\iX J8FQ Ӣ9e*90wn5RHحx.uNPnՇ/VH@u@Tʩ*z|ݛo]J>.]؀Y+[qO`V2C3e"Ihƭ E HFһqd6~e$/U2؆:v3q8FleşŢR\,,nȚCֱ@W'!bf{yVC䥶S,\`^OM6d3YLer\(FcEets`k{^VcD)U}FcTg(Qv( Nɽ-f_\:] ͲuV,H&tgU~:$ٹV(a/ώi~A§<֐s/^^vnZHHjB)gVH+ӯ5N}3=(ux-(:EcU73!uuB 6п/mbSn6oo9X4t:&y0i1nbwO~y6ĵYˑQC!1FYJ1AEȜTw7n?ļJw8{PjJu$"ic>h I<0l ϣeMhDP#q>ZF Hե?nL14a`weP V^^ giOnRJo H0~ؑaml2-pBe]26jB`-"AC|: 't GȱSC(PY#T1x(CN G\9pÉvY{`㡀 cgfPy/Y}*jDFaTݨ["Z,q>!١_ eVyE.QbH8Ȍ D0lPj 1DX[dY-g5WJl>; OH{%\Tc;U&CHm۲lk[Ts<=}@yjIP*#H. NO}wЀ9> %+Y_(".C{\jKUPsDŽʜ`dYfʓ Z+hua52]J {sC8H6,A;0v!EW( \LI fl0rU-v,ɥ#?;!B*X]Ee5 ߑiRNCQwie tť;A?ż3@wTk 8Ȃ0n >GB%z_R" m?(|_c Rk8=#?G-zk |(ţkު氂,r|N;Sk+6/3,/] Gp >pٿ W4*!)qB;-9Q@d0`8U+@\zD`5^5g;'_bk77& !qlj.~ JAmU%}~ ~iľePźVy6E hܨ"iwUxc "( ?Hս-Un@*Z_)*M endstream endobj 4312 0 obj << /Length 2385 /Filter /FlateDecode >> stream xYKsWL%T% $*'y؎kI>:P$fe>fДRirȁֲJr"B`m7_]~' "v$&#˜ޛ]}{{sG<yx?\8RD7oo+c ,Ywwo.>]6؄8xl & >z8%QWۋ.#zpB !!&4 0Jt2lvZtgĈDpz7%pni]){EHҕ0T$MSkZf)gJIvU#Yl B4_ b^)iYCJ*PÑ,lPˆQQ~P"|Y SaӗA9~ xpSjalQXXN]܌pVO~% b/Q$޶pRW3; KfWYc(3KA͇eIEiAN^ZEx*S0>y1϶W) id7l"cT~$g?Mm'=r ae b6Y%(!R꣋'"I튼ш*^N豔G@!?p^#_-ؿ+svZq=R~4&kr3ΞĂ>fϣjܥCnTiԌAƈG2LHRF_3 (Ϝ):.k-`C/ɋ^N陱'xB3oC%tKٍDzpe'gzV4{,FM 8/:0s--YofmƦBBcVVCe4r8ݯ2Ur]y;*^ x;PqZ9{fv`s1TqhݰS ڷ!#zD1+,<ש\Ds}=z*4$At*^pcgA?npCd{?X UWTH#נ $!tu0S njWCvntWnRm6Vzw+unXND8 B T]YwҔl,+-+Wϗt!qP<$q-U:8pAdRC7VF[WZH]8)l' W4v 8ECOR/ SJ9HJK RʖQAu6"ÇԿn<\$ K=RB1l.GPæfw OD{|rLjp#sMoҸZ:8(Js9Rw=Wh(P!r'] SU=?߾).(!tS7R-17~Ț1u)XR<᮹؀UU.;\}2Ϝ݈Te0je'SkvÁ:]N77TIZR-xΛ .ġNځ@{kO2wڶTơfrp' -R-i|p!^SCXc[OޞF6>w~] 3 8ѤO]̡e]}0U{taHӓ6QTD$bSn86شDbA/ / 5FPo=UJp80z^ļ.?Bԕe> stream xڝZKsFW| Ue"`dOS+kik*!1p в<($ẈT_.uVYYmW7wDVAe~yrp؆_g^2^]4T޽}On.{pmR5qXkVjVa`t (6A?/)i4!=4afBU?Qi.G|t}TܷJ'~'o_`oKne罀umNjw;E> u?ڦw v@RAY}[9*0(Cym:;;E\V;qG#e@jxXKxz~{ Wظ;lS{0ؽ|Cמܠ(S~cџ%Q0&"9pb391U$ T<pƁM86ۂ)9ɦ-`FsvmMQqAiy3yNgs_$g3ρELxG{.l6΢3͕Gm6&AhOޘ$N]1|7^oP珼XUcQAI#pM{eyȻmjXC]cfuT;?LyAmnz65!;FQ;w1hZx,e0xRc8Cxm9%1SA 2tea1/TiX=ȴ+wҢ{t^ (0. gPxq"UTb%t}ddth,D%I$ }UPBi2JP4TVM @ ^G:ku {@>g:kTq, 6$c7pHN]k atX{^Nl"u5}f듍K8)u^t+Nkj,r5l:8žYQJ>Gӡ~-E9Ƨ>ʀxXY4 Pī $B|rV@\zF^x5_Bv̙wZvXJWK+:;S塄i!B8x,>'}y/go;2mVW~F 8vj)K@@@XgY@|_\B>4v5XHiy;L s6[g(aӅeB$ s?djX!EFxRf բt%wo<цM|܋K|RMsN-SDhyu%khQ^>E5$$e^c,`K r>y(XYm0Cg߀y$Rf0YbNU*Z )@IC.Ie Z8 n~vőR0]qMٵS0cc x4П1 ){ggc{#:peC8Q ,Ng0)$JjKciv~moUQᐋENǜ-_`Gˊ2"ZT lv|73!_QOy{ MW+ kZx3at)<Y]jx)wo|VO5XjV!V-)e*šgwvjn]rfJ׿~ @=8jJ _t"~U3#0]Keⶲ%`3+T=})}-̈ᶏHwO-ޓ?-6?F!XL]ϓ.Q|nX]5 D;B2-gh:!EZ7bD6!ܡT~ B# ERZ# "e`[9'#p|CMD})kwK6 =1, VξzwaL{uYe^ll%(>/Yh2P®C(gvޮ鷏̖4s>I$LjhJ*T}9OUHb56*%׎MT>GK_J'Sm7q%i=qD8%XjNdW?c=s,45UөOTl8+hßuF_66R0i7=xs0W#&^x)\ҿ%(TQf;8׃ &RLPf*L; i9Y endstream endobj 4320 0 obj << /Length 2111 /Filter /FlateDecode >> stream xYs6_f" ~)1h`=]w9BpeJѦ&|48ʼoi2j?i~ -M5-0QU4մg]igLGNgΥ._ KR:NFqhkL * V<iG?齛om^z~L Ҩ4'0D&<ț\Ȃq{Mqr!U:!iFAj[6pvQ&Μ~2RVFJиn_2WJ\!*NY;(69*i@t;l§(#&'"vQ ڍn@4~wMq)clxe7I(&>Rg~m&i]T).~y1EOS䙎@w0 hPgX SMNEiy&Bf4kLTg&ܥf>a*<{R;ډ8 ) bZqUC5e5p\1|(&C R턼xLV8:U ::;PGmSŁ0bcbeNRG'*SlN-(m۹wKd&c/4y=؛}x_ʯqAc|Ђ outݮۋ>Kg&3B1#:P+ͺq4IrWM+RX0 (pLn&_.^ZSj{ݛo_>(m0@TM]L<_[.Pܤq ݻ<5Yݽ_N >-EpjjԅKM>_ HM~<8-Ә DNf>I|Ot(Goڃ*ErBYd\oh?B,> 4y'R}>.}{ML#2yv˱tc`oPO!t{E r<(tLQtӋۻ(~˭iQǭ`ꃮ\N6^(H@u2#$ٟ Hѡ^!#kf|!bɳ@fVuI endstream endobj 4324 0 obj << /Length 1493 /Filter /FlateDecode >> stream xڅWs8_#$> i/4%C ׂ_Zi߮D={"8Y_\OSO[oYF^q[Wz}q<}] GU+ib)V;eNج`.Xy%_EbّWPJ|fM"1Y!7e";_Ɏ7ɔ( ~NGƲd5p|vQoI8)'7[;b2f²4:uqtQ+@ȝ$HЎɱ8KPRA-Ä7+ ҭ; {0ރ" }q 7:~,8PX*CZ|m^Ҷ 2"K:FNFW09 7s[} K{}VjsEӮtZǺ/x:,i, ])1 BWG:WvB4l6lRƈ^yTW=ɕi4NBumjنMd}/mnum캝p8,2䌢|UheM@=TuM$C, %^B}GJ/a ܩu1lAY-slg9ʩ0D{`.1ڃÇy1jU;\Fov7 qm#h % ;NⱍŶ‰$͉Öf'u=zm[^sbgl'AA5OJ7aspG s ɖY>0/bw(?&X~% AGi!HFOD=UG{ƻ-Mm@n l ^jw(" 1X ͠zLUXr. Wβ^m" ~Q8wdSqZ&`-DwlԜ.b xYa0k%E籧]'_ &d2QXHt+ݕ\H䙈68(QNAW٨sVS%P,$ȳUyGnc/5M!W$ $9 uX 6poKx@CiZ@Uu\2;{N|'Dwj`:wz:zs9sPLw~'ExӐ 5> Z~*zY? XׇN7]P\sxD m ]6 ;d#C"3ˆMbrNlY!uכh5q2)z2橓K]^1]KS߯zŒn7x|a"+`#fw!#|_\W.!"[Ab&f endstream endobj 4220 0 obj << /Type /ObjStm /N 100 /First 971 /Length 1362 /Filter /FlateDecode >> stream xڽYMo7WP|Cȡ |+95r0R؅Z nBi^qfqr )e RFCfQ '$KvC>?GjG, -c?ɡR`x CBSR 9%4Rw5donH1SIJ V`>F!H4$u Gj QC Jh xl('R@R% \5D4OU5 #'2rXV} 9 Ö:'F.n^c ,@fX=JE|ܳ8TC;( kϥ"F>14R C %Wܺ. 1Z3\3xER Ϳfk;]QW$GAIHP|qGq]04-RМ{ @8hg"X.KT]ZǕp`KsMqؓkQ&d[:`aԽ`nԟ,0Cϥ),xCJ*apPˋ͛pK?1ش/?x'12$1A+c +-c}Jrv6eپJ z(ug{]\o}m훫yG}?[<{{y .(wۇ/O}/w_õMo}@{8ӞA{d!P+桢M ,)v%fL3Eo c#Z#~C=MLe/r7ΨdQxxJa˪JPQPo)CwޥfW-q~D/#g_lJDSne;t5|[y]8wHCc?%d6(Ͱah/U^Z羛2t_:!O)'8+) endstream endobj 4335 0 obj << /Length 1911 /Filter /FlateDecode >> stream xXKs6Wj< 74r9ٱ[}!V$1!A=oݤf$KNF<>˂{EPala{Yq\x7?{n}uU0,8]%?ϮHz{>](8Iy{\͏_q̃$/@GH<IiɇO̫G;֋(H֍w} ;D"=΂,)eO@xĂ ,4dq q"ڈVir ĨFtE_23 ] ;Vt"sƦjIeQ'b_ 7S@jQ;a 8-;:-[16wq24 (PDR- :f8(b z"|oT3q e̵{e%Q9%|╕rk Ԩ 6 %h0Zu[4}۹.``@_`Ac#fSE\TÁ=s?;k,;i$TA.[,YA#}`s)=AՀ2YU`L/vU[ qՅE.84%"9O)|5 `͵3,T;üpӒkNU&9JCV"G#yeºv/ FMFKH>ʞZT$[r8yak,# bH '{=UOX6VUEoq'oX ?i`܋Qw M՛F?PAZc9EyVLyy~W 1_2"a|wqfT @ [ll( utRVl._ PDpsRq| ]c4- 9mhR*@vΪ>"7cfK @ 6 WzbE+LY/eZ-/s ~9/.;NfaD!1E<=`3>4;ip>]q endstream endobj 4347 0 obj << /Length 1963 /Filter /FlateDecode >> stream xڵXY6~_^ƋiЋ#a-'t~7c4f`4ohLyL)pP h$^w/__'aH$QQ`fhH(^xk#Oh8^(x Bt-n~!) b I)UP=N͈qba44^\xcµPBe] WAAD(3cdbS{i^f>/8qeQ5β+n#ߎu[cӨ+;ȼM|<<:Ruxușɮъ7@Jbo fN@ƼE3vnEJ,h8%g"?cF6FCX1>^I % @d?*yfHh-nT+,wq!(e*paaU 4>BySW09=;O,"VIƟޢA~ba9PЕ.N? ݨ&F P3e; RW4m|%>JYX̕-6*7Q"PzTEs *"F>ʺl΀gkJ3 gP "b"$?<>pf?OqNVۮkqW:5фrۦ| d+WN `@DԬVkm0˵dJ ѧ}Tk$F^7*}1B|,!o$d]HPbz."<qk]v.YX:~ΐg%G!,kt7quzAƧ OŶ@(MڎK!4 Eo/lxtM+L{u.[ں.%mnXՏM0UCd707v2Ի|ED8xξl&} jVV-TU0@'A?C=0>}y_# ǰAOBLTB SۭY6o]~ l+Ɨv_tPD6~y8۸=5 uGkeϮZ)$ԍizNF94?;_c z[@<)bSp0FjaJ endstream endobj 4357 0 obj << /Length 2138 /Filter /FlateDecode >> stream xڵX[s۶~L_@&H&3 YPJR_v,tO{^X,v@{wur>=}*܋9iődJ޴79eGg9}Mļ'b!`5$~&~ӏRI :Z@Żl8OO~;{bu( |y{qƮ\z* XKor ߷Dx8LL <,I-nN{槒"JL&VޭˈE51֙<`YґMDP3 R{/7^j@YǽUoz?m2>]6D(KB!y ]u&+$ ;o20kQ^W_9T$#]v2mW:y-ny  "ƕ|p@$j2+t֧blipdn5OBl=G!vP,74o*w MqrU%\[:oێun{ϧD*׽Th!F,57 `*.Cx[᛹Zj`6Ȑ((mu0 )]]d=^`0ɼͬ+fS}9+,^ TJadGE,\ya#0Ӻ" Ipu:Yn4iqEdg6)rP݁t^fO~Ů'PC67Hƒn0Ub| HKZP@vrW hjq赂*s՛U):1` e g;àM R.loE$'T+`^ܞ m[LkኑPW`DnЋ ^TL={0 f([D؀ =H5 'Rƃ#Ud,Fa{G " g5̸1V1Y gU((H'ęm! (P>P5Uxh-˱}8z=B |I.A2߁4Pm>3|%Xt̺nxxa|\]Y/'LJV$.S6zDqtWGE}ﲊ$ :ZRy ~P4({|y3!jIh6,Mdžn1h3h;SN NCIkָ:сk ԑ)X}6ki ~s 6:?ޖ!U H6KӶ;u7r/no?\.?4;"v]H`u;~!~yzqw* 2ž)?T'HG@4#(U#`uC6;z#bP"v"uX?Oۓ z C⿓7GYW ڔu $%*KU}I݇B j:Aom@ڶ2H[Rdou&ߦV^sOy0۞GU SVUZz({&.T~Ao6 8?<ʭ endstream endobj 4368 0 obj << /Length 2194 /Filter /FlateDecode >> stream x]oFݿB{CpjusXaE$^rI;ί!E9 =pvvvvbOg/Wgש~l-p? *.^|D»H!^ RD4 ׯrauNCGI2:qgW$P?,}~ _QV0R~*ٯgb Q GPORV] /o3״ԗ"~ƽPr<8M.:ZuיjO-9 s|{{Kо)\̚ò/Y~>:PmR. 뀏JYR;]$ oq4[R'@Q ]&*6tkEM_CjKV X$y1ߗ ) 6n @YRx00`z4ڛ#~rz%U<2⾁b?3\rx^"$kq}[~Ϗ;]o Uߙzץt!@|?_a.7 NNWuAao[|.;r?n"  U*:g( NP)|VF[~m ;Q*6L/ }A ciU|nNMG@{tt*ahmI:YKkոP;;.F]n5  =za^6ZΞmG*d(>Q?D$ҠDހУ{""#NӒaCQڥN&}P\nǻ0X~Ci5P+jAsQ**(%pp*mL)pbuf\_XfQ r#94/14S EMx 4WUN2-ˢc:YW _J,"+@^?Ή݃چ5@LmPc߇;N o:{+B1#@M=ei]5 $k&` gg]&É~idߴ* tY02U>I_E&v o]sJ'LPP+r ҅L4hǃƴр^Lo> cKЗS9> z8Ry>cǞ4afkG|Nx&r=/7Gr# ch,7F/NLYOxjHx/( ϯr`׷7opvw < Y?ccu⁅ıɍN' b  pKp|22<=P[E$&2|6 .XCY wLDY+253ĭSf(@!u}n+3]Nyg.9rm6fYoA-R6'#ӹ6l47J暷Ic]@}KO9o3:(ւ|H:dS_TAT3XGK!$;L._*5T(I*%@t"2H2!I endstream endobj 4379 0 obj << /Length 1993 /Filter /FlateDecode >> stream xڵXYs8~`ռPU<f+rMv7$)Îo7%$Oh6FveʝK#?rVNl}!cŇ7 b^X\Ĝ k5H^~%|$ؓ"&)h8,prqw aEpɗa<Sf Bᅁp'8aH3/S#gC8\0/I.N {ܪCWW1gaDG-T7Yop0lH'\x wx,}?<|1@Ui>JuնzY(bwqFת!,)V5Jb.fWF٩Nk{Oۺ*[/4wR͸:09ƍnI]2 rfEժ>uIopI1~{o8i>V}Y{EQYy.*,_P,vߩ ϳweCӒtk/xW,AuȬ0D 5HeI!}C_K]2π"dשk5|=|/(;>\`ed, j[mF"ij:T#]kaQ>%|!O#Cۉ-'Wj$`.͕@S¸]{xҸI.ΈW)[%ihkiYY#W xwD $Rh3 a7i#O7Fb "!q榾euM(,q$'DvH!(<ֶ_Vr0X,j1\ˬ( JFbHB /?RSf* Hswcl2""z`g۷o|xi"Nbx^fHRnZ+Z3{6vqIДSyYç-5,qg׬9*d[dpPÁѸ*"sj{M2oETKFٖGP֧rf^GXT~0p?з)&]3wUU~.rLV4v;͙Hwk`qr&&w0:a9!ex(ti?T1" 2Ϳ!v%b*:Fž'_*+(1h ÷:lѹc|) bXE6x6ĕu[DpƄ I<-_q!5pm P GuO!GBıP:@AQW;"ޣ&f Ϙ ;P..G#aL#L$pO޶#^}%}mN몁}>jۃ& {~x/bZIh^ڕ=Ap(GF>0ý) lzl;Co 4؉4ߌ\$PXG7#^ h(Dm.ٜG>RN^ endstream endobj 4388 0 obj << /Length 1974 /Filter /FlateDecode >> stream xڵX[oܶ~-P)yrMuS--ѻBw3W& pn9y{j{M.ϓ qwN*(4 (ʝmw߽[_]\Xʋp߯7kb^]oV S)ABLrZ7?^bu,:"gh m,8[o8 !9[g~Nq8{#s`$N~@3q Q ?+Bg9{ 400TKJ8^"HFS_##(ƃYD~yAG$ ^qޛ\+/"vZhlWi^^m.7[TUOJf.|kSmT5f}v. eĩխ|<&$ yc-ڬ @'1 ݏ:5† dIgv_ $4k*Ṯ?@թ4Bhd-M2͉{A"q0cv8ZSٮL.ڝ/Q<˨DAB@D>dCl+X?)5kڐ7!7u"5|$oٍUې,er+֮N޸|NF/jș>1H е͠} H c@vBBGTRUQLGf:$S:So9(k*/zR$xokF}^?@T{rt[TS~E;Xh"wo;,e)G:0]MI;aopjcCIKk؏1H]"j+䩈@ 3M2 {ޜX&$(FUCK p@Gl .K<ёAÂh$5{D݂]0jOM = zy7:: R#Qɬ٥߇{+MG@渊.Oqt,-k@%_sГH c4؏sHe /5/oX1'L;яhi`O"$k@If.ZrQ'@Aq.ñ\yώn׌w,'6nb X26^SS5ޯ$l#܋wDݫz8b;wu=uט LK_DB#6G41"˪0ŀ#j8fjn.5`oY# VN7ojs Av ^WEp˓Ϻ'8m2ֻN_xn1=o`}OM"p2NyZ :to?Ҵm1wӌ@Pl;1)}6n) :Ik8l5M=9)- ^!Ⱥe9zd8x һ9 m{Fֳ彰N`-BzFwuuFH탸$BVH4Ei 9un^;bp2E?G'@/|7p>,4u+' mC50 vb)4mB^nȘf+߼l,n~5\OZ5;=CGn$v0*t;> stream xXYsF~ׯ@9/`FI$EZJ208D˿~<$$: g٫Wtr?Oę/TA9iQ;{wy{q b3/}ysy~wIow3OCdzWobv?,:"g9hn6?pr~‘{O)6gSڏCXٝ'C?B+gYx$/c ?WZCIkUtgA|r` :BY^_tDz..ip{VR[3̣nvDk]||vٴ<ԝz]3 nF"qo呮UёtoǤ>ޘit43(Seif  S( M}'49D~.oIFҽVo/k>ɥ2wkShO7. m4 Cqc3ڪLotrB }1?j?OʃqWilQx5,Ŷ5Ƴ~~ŧ4:(vtHT4bMu6ҽja;_%rwjȄȄm4o^x}1jQiZ+`Ө_z.uћ<LIkpNP}խ&, ipPKۭM&rm>w0КytD ]4,}'Eܟ&?zXL}M>HqDgr bLU#q/& S z*ik671[†iu]y<*RcaPQڍx~"DkMcoK@/,Vz0zG:_Z{UJ \ѤJ2C#.T[0 M/(d\ =3FBHVۼɓ")4ȡ4ۺ( 6sx:⇉Uk xy3Q &0UO$k3A|l`T r01oF r$ވ%Y BD FANEl@{ݓgx?-V"|B&vH245lr? 2K(XPBJ0u *w,S͡X34Ο >3)$ VV.R[n7zw ? -tap,0E42lA:a'U O(`D*%\\ Q7@j|le+t ,\N+F9XS#FoQ=ObZWUA)v˱OvX=F X8rXi䟑Xh*3nӏ0Ub)ȬW7OvpUKmN%X4Nrï=n ix#ڦO0u*xQ(8GYc oV2oS*f69X&3O&PDO/ endstream endobj 4411 0 obj << /Length 1057 /Filter /FlateDecode >> stream xVKo8W؋|ʗ(N6Edkc@-1Q=\=⤿~vbb=i8gfHm<]NΖw)0{{/!̋9 Ke? Aiq>[̭f9_LLck~F7pvu~Z~xw(a$ a0`d|`@G%!˪ y9ࡐ3"F\ztX 80ңRP&+uB~Jߴva0RbbI!/ RlظbGsyV LB  #LH|a֢:SHh+.wwY [5h3auSGvQm5}!pfaŬ]sBˏ:V/pLE6prOF~`ѯ/t+ "R6WD/˰>^ Be $`طj'R&^((պ|m>ȶSMm2ysTsl:P#(Y 1{UNB> stream xrܸ񮯘BL dKj˖KJ3H,qY>קpFT$j@݀v!EL7E*g4A勛b;:<۱/c~,9!/?ߜ_Jv'߃_x{qyv旓Y4" r B<_B!(uIbQ헅"UG jq}#1D-BqE10W"rťL >³ -"ʃ0 BZVb(Ȓydk E, |ޙWSb{]n-ԭ)no{}ugB0"0xH0Q$" `7f~TbK2b`xsʓ3+ٖ ׽zk?ӌvUE|*#gNCJ(-t6@#XV0>D22A"Ԯt ,x_۩r3AFbFc㕹t"a-`>xki6 A"](|qO%s)S)}r#/+ZAv k6KLɸKwh|[<.Jn5?$w^VqKrO>{i{؀rPt F70HT(=7pu|AΌزߖ"'}ۜ |kAŎ]B#d]Saē{CA<(H1""J@\hC#MKy(cyL*7"I{tm7s_i^s8X [4 hإtY{AH bws"ҽlPA 3ք$S3emvk > MofFX3ms;}pu$5t{ s:$?Sx5â0-3A,Y1)0!q!H!PRzׯ#jҪ{ޢjLN,N3Uƛa4jwE)9.!</MngkOl(Mg-sʼU3iG:0)(A%H}Nεlaz޼~۾3cO>P)&"^> stream xrF@U!  ^#S..+aG!0$QگOtHJlRNOOOCY;L8A,VN"<J'OYɛg7o9uȟnهٛ7?/f+DHA[~y;[*GRH)(MAF#p@<.pbr!w(uzq:p{a:{Cudz .cK%QvbҌMqѓtiic0P ᥬSxAmi-'6H|Q/+3KA<7/A\q>Ǽ~6iU$o˦N\TLZ+&Q][*t||Q)sz.5lV+ٖ;߻(hkj.{=~vKM$u"Mɷ~P t˿@:L3~]y̏7Fؐ:6l~-8efGup:24"t{.^$bᘬ}sgw&#M3K(Ȍ.5s ؒ f:ӝ)QLmHcGrRiUohՏ5t@aBGA .to$MN,$B7i-uD$Etwއ <޺ҪZΓˍY=&K1G^opYg^8GHZ pT]Uve g7H!ԖڟWIfH+ , #b H<4+=#|CFVSsizB-聢.* eBP/SCX\SCnyQ.,F7"nHr^]B?jMU5-*q0-"/w.ZpP#~0u]Pe޿°z>cf|'@r4rWN* W1 v~>M$P"jpQ ,iMK`o[bFPmM-6"& jb_3GA!ho5j~cC$}¥U7_k l 3fAS3u`b1%0ٸ#>@Z1î\G UG8XWSBFޗĔMvoogBSO~0i֡&2AMŐe$AXj'jw u׍$A:\ h0k[`sLno;W{hDwLꉑn0d_#+,ܚ'NND7S0#$t̃n _2# iULyDᰑBʘ l1}q{u>Qkzr103;(, 8A._OHL M$\+;xm<d"@6π#E˒bdV" V2 p|Ԃu~`否5XR`b(%EwN!2"=-I"Nk=5GwUBR)> oVu=*wBYOd#o(;Q`h\+.GS[434-cq1ۧ#hsţqPo\ ۼxq8KxoMVoJe#J/68*ͫy U_LK{@/?sA( xܳ;()zoV&b@BtPM)Wö$\ݫoxO 4/mN Uc#k곏?_yUɤ3x@[.ͿavĨ@:)}G{Le~D&dȎMz!ZJV|_( =?c<ڳ.|?{yn5T11Xp s\QA4r@v2a3XE#/tM7Hg_] _]7!= dB ?+e> endstream endobj 4332 0 obj << /Type /ObjStm /N 100 /First 978 /Length 1300 /Filter /FlateDecode >> stream xXn6 +D =lEnmEEg dHR=i&KBOI=R'o%LDCԪS%5X!pIRBMfJ斔̜4VFQ FJJ*$%VKl' QaHVE(BAaC8e^aY,PXCaY-V(,w+`X!lx=Ua z4p"wu]KGGfIN i*$:K$%C52XV {˝+q;C6OV+$:J5H}8FC'TbWn p= p= 0DFJH{.g=#@C=Ö4o˾ pceԇ.8[NG IF!:$`GbF:v:tâ8,yH9Q*֢$ %6V0$L;qQS@D'bSf4Ն~[52` _{ɓ# %p뫻tq2]Zl\yw^ib.}4vG]FX>^yݷi~^(Ј2!"_a70Ach<9LGh*PkhsXRk(5tsԖѭ"ܖͲ)}TTUlC#/1X&jʨ/^=Wok`upabs4%0Z85ld1j%u p[0Ag)jEz>-ZegF:2?54)!WԎ z6>Jӎ?sap Rh?ӥ&`b/f2Aeċ<u?QgӨ)}}߇p'Њ#f54&Ϫ5tKy6vbp=:d;WXʺV'<8|\ƪeihpK`BB`]J]q'l.I6<*e:xwg>Ve}2Er6GMml@/+~8_ŕ^s~K8>{L<|6jL#f-5{<ˢa g cu5pհlϤ&>$'OԺ.njwYEx]o{b?D;MNxGOlʇ1#& endstream endobj 4448 0 obj << /Length 1757 /Filter /FlateDecode >> stream xXK6ﯠ*%@TNkˎvSI{`@C`R 慝8 ju<꽼xxv0/!IDrŔ( axܻ/߽[\}6/l.(/,.oHy\nj3<4Y^}nfϮexE2"d:Z@.ˋO 8F$QĽl{qwO^{pYέ NDa]z\COH~1adsJd\qҮo*bVJ[u9'0N<$(C#ޝoUz[nWW7H} Mn,p!/ÄYD n.^4RAQHUO;eϱ93qej婥IX<ܥ._L1(K(9PVc _Ter.:Aw/w\S/b"9FI.ǔW,g 618oSnȞpΤߗv#P,}t+eViuŐ)]VZDЏ8l*)!nWĉƥ giSYolk I 'ծ0j@YdE9,O-mh II3GL;$1+51ܦ`D1lR 4AG:ԍ:,a-!Si$qSrz<mgB]:l#E]-/-k !V41vpP;ta=m#lUW+;G&\` 򜚾rϬLq=\ƺu nj= 9ha|TɊ~[E&Ą#przI4"1;ɧqWd#3GR{YӝcDX`ܐ/) f8 ܵL.à7\HF 鋑!|̫BVøXL'7TZVY Nnݸ1Tݬj\cd`8m[ʼnhMuZc%u28:,gq_% Y럨5u2͏'6} h(8,zD ¯_` r{y;=7g(ԫiAWReDX4~/\x,o? k R&!Yۏ-xŶBx`uGY7ZQyJGv(ZՍ'Ƅmef 1 l©,&:5` LunXp%;Z(m~̕95L܆im>]䱹c8N!` ?GPxK8%l"'T?qXu endstream endobj 4460 0 obj << /Length 2335 /Filter /FlateDecode >> stream xY[s6~/lONbw:L,Usp(aN;Dv. ~<{}we)2*3w Q d$epW/^:4ϣ< "^ͅʅdsy>eq$"Jxt n&Xpvqwq F"2T⠆8Reu*J6=,>D&4(Yf=춦w= !TT sDJG)k"(wצPRQ,qE$w=wۙ(Bk>'nLuצZנfYݪLΣnZ{Moۙi$3sLYŠ n*=~T+"tW춧YvXXui4u{9Ekv|5* O%!9Oj[ =+Qc Ex7fHJZV7=*:ZK5 %)PؑE-0?Nδ[g>ԯC*pN4Ae>q sQFE|p漮eօ^4m3l)z.s;͒E8ɢRӝ\ viuabNmMIN%aOUm, Tp\qAd0\{JG閊zu0qS 3 P0x%Bݠ @MHhHv XM-gcDP.Q"d@h z]#2BJ1VsFdmgB\-ǗB{  HS(1Rjk)UCzHBh* 13.ζro u\^΁1eόF VHHܛ#!j"GDz'"=P! B]Uf399$H'>=h=[3#nQ1^c 64\*^賜0փYI Y, p@1KW )+oJA\#Enђ u5k, DGw~ {pk6%mA_6%T&'e@O@ǭ{I6 P!H{No8R QW-Cs(.mCMGVHF]TeEB=ԇ"Mӟq_EͶ+|t cS'BY!pA._KU=[ tIҚ{W+"{$!.J(۳>o*,JTk'h*0P++ (c΅9`Lj_T1><3_G%9'QQy)(ʋp91`pVfԄ%H{|WȬyؤ܉͒NrUT~h|F}N-<}I[rMJp0e>M(!,*P8_z|Jo6 `3s:y޾U~(ڴ-;P zۇBOjȟ_s'4γ' !TRo A*KEJBfJ⨸ɸ<ʓd:* endstream endobj 4471 0 obj << /Length 2478 /Filter /FlateDecode >> stream xڭYKs8WfKUE 77'Ǒ: FRp$M ._Zb:L(l{k0:> ̭>K --r$l/1ugcnVw,w%vWzF؊mnT/EźL$'r[n}q]O9Т߻x5m|F1 5)k4 IM3n`{={vHeѴDњFU 9^jZ5;| Jve;ϽҏR~}:X< hz!磎s?I!ǪpОQ`mccۙZFH(i^eQn&DbCq9) {նECi4j,'PB/9牮 n4y_66ON¡„ 0cdD&b.4*ۘB߀ k{YWh1YY4MyvC~siJb8("`}\aMIAp+D5ڔ'׺>?YAHdz+tk.I|tr\*&Ulp'|Hf~l?ρחnuKZ|"~XQ奠D!3@ 9&4(s"PD5uAmAq7~i F\CljXwWH\a~[ go^=BF)(jhߚ֒g4nt;U߿3U'ZdQvtO(T۴&Mw[w|5?Y ymw_^5BȌeu8 J&MkcM희rD*!j %b{A0P҆QIoR6*fjtV&?"Udm;Q(pYI "T{RvWߋ#<*N VKS*А y5f89#e9BLp]oeb?Wf<[ V*I2Ԏi=ĀM9: d++| b'l^@*wsPCyu?|- d~cP^'0wHf1 \;NDp{Xt^ N2wo}o<ꝩ?<*H{1#Ѵ=H^27ֳ 7ZNţpn98Iϑ%=$] 5P8ȃ6\ Ξb02Y8wt`1'|#Ɨ, 7YhDH̀J-R|% dx#gL4_Jղ5PL/ v-MECUW3bo_~DKt9!=0@0)V+Bsk9KMWz/o;a\jl[qI(-b{3j8j]^sAMz֏CI6a&xb2=d4GbCO70Ǭʏm^R^b, Oܼg.UϮlt&c0^?eӋJH89mGR̠wղw_M>-W8rQu{l:^pW=~Lf@71oU5ȜZ#J϶ S,ӚGㆧI0A등+7LR ?TDGY#tVoKHp+ |ew9)Tجr=_bvo;!huug4Ry.@W㑗F98:{dyQĜl_,K}#>kA J X>FLMq S?q?4rN/ J~ 8»z*TO endstream endobj 4479 0 obj << /Length 2594 /Filter /FlateDecode >> stream xڵks6'Ib;4MS[s17 IS‡.%nI `[{{qlq2^Ix &aE(ӷo/ޜm6c? f1 Byqq=sr+8I x^9}\zrE\D, @.g8` IWld^ s<o5DVĴ"D^[/"Lg]$f@:QecnL@LihzT{ K~'cw K SrY] YI V6֕G5XIwX!a=B&a&_t\}YQ󓴌 "bPҷu41D1JWׄ1iX_ܫֽڧA6fTMTP FD0cXnh-!A1%*ꡩ2]=Ev}GJvֆ ,/\\f`R )5аzSy_z2vmYB#zCx8yUϯem*F@S5oB|;XOa0,Ke L a-& pFF`"_gؚR_"|M4D!v5upN8}A޶,RU_P1壬2P%;&lZʮӝ^^SC2n`[[0>iGt3aRVȞnAe AI uU15`IyjkG`"cfFakkgbߴ7eG&?f9!;I^f YnIBW! t#.  ,aRK34ԒӖr:8쮃;M4y q:[,MM[yׁ[M{EtUq1:/6]e[o8:.iչAJ&{(\OBv4`'R[=L φGbXn,Cd::R ͔~l!{4(խdDԠG &"h C5(B(0wsD~"ȸ%/GxI'F0#` mRRvñ^XYٕt% XATPo,/2| Vٗ[VB:m1A/~ OI!Zb](Ys' W3O_VѢa yM+vxWnf:FV*dž) q ^;7#QD5EYPы0(vW Ađ"xLWl,lVpd}:>-VBov>I8jI;k69F̦TZA[{Mn 6) cՑd&TwVmR #V{л %:`T+-Fʡ'ր/uiI ҂\ƿa$lBe`D`lxw_MZ|lSQ?o0gA*$ }ìlƁ- &S1 endstream endobj 4487 0 obj << /Length 2386 /Filter /FlateDecode >> stream xڽY[o6~RJ"OnfvM4!i:=7j&}"yxHGI9wr~:쇷vR/ȹ]94q un {՛w<_r/E{}撉W^ޜ/<<vr͝]9to`$Eh/LR40 ,8=Lr uxQd|sr Q8Ah00Я_ϔhB52ES&ub$!a9I)7ۺm:_lwā6-aql[7{K2OS+,%^_7Py .TF=7RX{ +CկJ6.L<(u?ٔse~2'֌V(@O:P$G+/SrxX4K7N9r UeC3 E;ptS{cphK`),$_HǮ?V=P`[a< _"gBXAB`x͸sO`= JI:ضP*%xT6NK9ծƞ|*F6jTEg&V\w6{OoT,ysukB(l@g0ﹷm9vf93pd;'*g%ZF Q[覤]BaEDA!NJJ |) $Ů,`*L=UCdY(ݢ(5No%(Ƒ<)$Jj=i8i(&I[~8uf9EC1[pj(F|e{H(VW"LײW73=g<l5ZJqt=,22ȵQ]G"n-P2XN<͓$mH8$?bۗ` `a[bMխ! %(yRr+aew?u/nLrnH;8/3Qдh=7% Sg}/N!*&اSsp޲6‘#oE8Iz/=hd-!4d4g , 30Z=܌*6| 48u$Nj-M>Qͅ[`фAjdSo QfL1CW!)9)O>2N?+̡8ooɯ1`~l3- ,D5% TF( N(⛬&ѧ(G7ζT#2EFBY\R29žp]o_w!!ȎjW'<<&It*A~* 2eUSa!jm-jxĺɾT~DkV3p}T}o9Z 3QtPta?|6%$9l0xNjWE)M BH-KDX0w 揣w% \ y۶/ArY8} Tg|^;D7 tJ]'4ұR_{"80H4|>Η߷Zvzx٢ l!63Ry;*[7hD8NlĹw耙 ڦ~  <?=ƣ6Ezl7Yؙ)~2ȪJn{P,;,)WCo-4(ùSzt@Q ޼D:܁|%"˘O],}?ԑ)bu9B8q;tX|׿zDr$~_Bd Q2 /Z$e'ט-P= Gh6Pi'ˏi@>CΠ&u,! endstream endobj 4494 0 obj << /Length 2241 /Filter /FlateDecode >> stream xڽXKs8W2*bGTdmL%9$$qC 3~MF^HjtlśT8F2r'^'Νח-2so }߽^]߬x~Y,D`kjzś$8"& hL~l>z&`0H9gaT8v B允vܜgI9% =%+KR')CŸhezht..4ži"qq}J["C =lhɞţXT(z,[y2B/UH_.*QnӊgVrfCOKÐ? i. Eixk/cTo7]KVWT~^]OLG#iE+xQ^D(:"tɊO/B8p_5:]GshJQ]j T[:D0@ihTxC0cPME]'?7uK#A<^"/%¡x>x T SKϺ/r2[pHnØ?ӄ8D!r ja;DӒ98p@'\zZհeOX< ODqP9ρ8qoMps1iSעɴUghljւqEY{:=яPCs}Gv&`("2:*h Ҫ;}ǫo3aꮭq^w4OoG UOJ·0[`%?Fف]Yɡ2/~]-/eDiJ$a$Y,lu^u?}-Z5nV/hR[87-ϳ.6鏺beyoFHuNBЙhѮy:bIޜc'yI8-փS?\kx/S |Q|"NHW /_~lXUFn'っ*Ca&UmY!Х>v"^Q"-;eSEv*]Cϗ|Hpzm$$N *cm 9$YxI㩭 /ϱKX2 mTCJQTslz-Ѷ횜'"[C5`DG=^'\.W1?l+?T uPA o̻Px9 ! (' OA4{*9Cq(*|t`4Xʚm=@"͈1ʰ&|Dm<㵤aX[8<rREEE;p1Ga{Ɖ=MB.qjf%h?hbd@L@D3mS~=%,x}uiNE?"a0)X/gte2wkKE/m($R<vplM2L6Ѽ击)GU/оA%pRȗ/s?G{Lg" o՚jV̻LYhYE궀@BAޡJl1@&XuQdP 5uC06suqC%=`ؖ*Jq,֦z;zԀ+"iCU.6Go;x~ɬpGY/}{ԧi0dmo )`Ak@ rEU0]t"eϣ.z> stream xڭv۸_ I"ONlo'u-ݳI Q%H;w.Drza0 fs6pٻ"AlaYAe5]^}܏л4 W+F~yy8#GPDHA;|<u2 {>qu=OH *%&J3?΂"OBc|Q1'3D"|@y,qzgfs=I3Fjųc7 O2NAwp,ԟGsOu<4G|lUe]AG^VcZQ p" 6l/a(WiS֝QE<~ەQgs{K&C""Q|=$@$ QC5vlQ&=CIq ;(_ }Vcc7`' =9aU--&y 0 eGlFڝzm욕n_0Jҝj~Dýb`t-#<#cCi"z"8 0" pnӇ^+9V̽xݚ-Y{:`\l%4UoQ ,7 kyTiRɪ0^ÍQZf[AT8o ߌƯZm/Y0(ӻ`%Yrd+*d$`$s=#.?-m5902@TNyΫyoլT8ۼy“証儗S<8S"lbU JBp0I,BxEɋ. <%YD'为f; $Ђ{SDN^pd3AM6㜲ߞmjNi&̚ oR|׿m%Y'@~ P:jg󆮟:d=WH{n^ɒ/&'nڰV}A@Ԉ  4^%B+F薜PjzU=BrտprdPzmQ~6ܻ _7b'ؕCr#kM嶅5ai s.Ew7c70(K8$bUqĞIK8Է-4vq뀯H`}ڌmЮu4]I̟N]k99E.(0f^7#%24Ls]^|P;x8%Nl`N /iJY{W$]@ %[w#pvd ؂S"~` j4 OHzv)~7{..;q)F `l4LI 8kn@lF@28qyLv?)%p444Nfԍd' εt,4MG_ت$ذα{BcmUxt*h7(H]Qc'8D$ARd͟gDo(ln  2hNbQDs endstream endobj 4508 0 obj << /Length 3068 /Filter /FlateDecode >> stream xڥ]s6=ӗ*#R{Oi7{6nҙδ}%VW]KJdڶw H`﫯nrTֶ&_Y=J0qG Ku|dn-COb$z5/;ݷ]eܩ k$̓QPp”s 71X4w:ְ2oYH5=]UԼ`c}c2>F1X5txbҎd+%p Tr&B#nLW nRy^)MYI4~m*i jםn|r"i ݜ#2=9 Ox ut":N#8ͯA=[=?g]TӰc+`0N;CBB5bOaT,1 SE,i@ehr5iyCm:3M۠ŋ%wґ$ޢ$w{E# py \$%)5]Op7X"z.kf P>y/t?1L^g"Ȓ obqLHMM@EQP@K7 8γG {W )?/CTiYQ{qpo;*~j#}q"T9G/^BW-9ݒ]7Nt2 #훎9v\rqe'#cFxR{< ^{cnΥڣ]L9TQt4xN+n1рfy U<d@;,-N9 c wh^07|G inG@N:WCb9\iLmx'tG :wWmS4Ր;&yz>]K}P5@0"bַ-ؗn ;˅GݙMy\rk)D\y=$LQZbN 0슙qW ^/S ۈq0*vP ^R'r< zo0}8ή_,KаɯBK<F?Fa(l"@64*z pq!;8y0JIcg5DS+DF T)<#z}WhBMb-G%f@ȇqC$F>kps0{#EW.5q|ɠ)=(52Ӯ롰ѥ^PlؔP< GЅvP,? 2wk2I c[?`W%B> N2TrGHvb0qT6 -I`DFS f _;1/] q's3s`*x-Ib*'d,>46qB yAڸg{2=9A=OU)TVТ Y'*'MW]AwA ->62I/%Hr])(aHLQ!sβd{" &wNML֡jtN cn8Poxⷀ\CTN! `P4KMF")_Cp@S5Em[']6 }q/Yd IPˠtӘ萖f!B¯RdKv=#vbH?T2]77\5~A!_XѸ?Ǔ1̅ nq3EY 6 ʮ<:\~ Ѯ{o vxʚ'uQ&RI\Yy7x>pY:p44LĘ/`F-n^Sxsf_JR.ym#Q QO! g;O]Tv65xbsBz*P&ړ ^GG& (W|uPG#' sv|!-H`a{u5->DZwE C~sC=NO8r38~'YH!JdA7ω;9 a{-px8kP*&=Ȃd F{42.}a&> stream xڭrF`ULIqcf(,mnV׭l@JNR`K㎖q7GKtTZ[? ]#Q1 vZuQ'v(">[ j@b޸ɲdHvN8yH!#ogO@Ѝ̬{B{)X`=d9$;m1w#AƱO:Ce(AAZɜMCuuDcF奵|uEjR4EYᄂVP' "(\*$L Dd=H *4>x\aze9[tgsEG%5#"YcDѽlv2A&j! USNC"g+s{D5 RHu+IHc _/c8{!c Arf,{\]UzOs ,NZXvPeq188:F1v=X0G~ F;B$J2 /ޚST%g/m uހ=')h8Q Āb6,"dew {T!fk#< ' gJX  zHݞ2 @k+ፖreq$A+꧅i)*=PHBcKUF׍ݼZ_&sI0jΔs/Dt`Ә-(j[n -:\FaP|;*1ɞ Kf+-}=,(*ќU E`J/o|ndr!"= }\FU`N 3:.Ltߝt};v͇rc)GfGl|)j/.zջk"L)܊#Towl H= u"kt$NhB/ V&^(@6MکT^x49"&ŘVs5OO6٘5Bݫcu~TB?'oоR^uꘅx2ch5VU3ds<3j HC:SLK -~LiOȑ5&z~w2ιKRHT(:N?|YO~ pMc5ƛskQzW["T(, t\Js?ɢo`v; !nQ O >( h;[s{*2iU.GQXqbBǓ`JܯkssV5+hs|We`O~4"Lf/;fˏfhk;k=j0D$kv3~' ~Pb)2qCcm[|ƟI,M`_~^ة;x[NsTxwV@_W6T>i^s! endstream endobj 4517 0 obj << /Length 2894 /Filter /FlateDecode >> stream xڵZs8_8ӘEkw{IoӦ&3mdu%W([v<~({7/g^$r$bIE/NFo/_v>o\Ozu:^ݜODŽc|Bk)8-mήn>Idu0TGo4w9ϙǚ5%Q<'X.4H)<ٲ?@ZO~< I -7c4cjfNTSR[ =n<&OGi]gwsy}CҤsSͬ6YU^<]fuG(j=r?05 b+-q):cPQ U2~:g%aBqB K7a3g?J]=òE#*ZV8PVВ±cc.oY9u<.Ms,獩yl:d}U9CuW0TقZ/n5Q|nMԵp"-:/O" 7pyOxɼ[B7<(ionrmw-}i"EEDOj6Uz6f2Ͳ`)y#Ee:{Gbg*tW5 \pMZ5u!^!$ 3hjlI䁼5x-ڦ,/c! hnUMNPEwن%b^Abh]Т'Km"nc}<33n,O9/(y1Tgwfg?upvQ4ԏPIgվ55V@eŌJ!@' c|>X_@bUYJ&7UډךxL=!e Cɇa MLZuIC+ǞRQx1Q/xPb`ahA3<AdL|0K[U7 6.HjjzNFrmfg0-{jm[ܣRrgEBn{Ձӄr>jAאCO/i< D{fa!2f6X8h8ap0_fζ6DpICĭ1;%mUI\x` 㓬,'HTWJvś'곩 1D  ,)fn(8k3.pS}u7EaUSgsgVqfh LǗնunVsmxlM$x?Ot%zM)f]~to,ԅկr0HIѫ0Be+LatF".U7OJ7Z'JJ8lTzWkv5xl&s'cR3,x4. T+$pp8$md5ЉkrƩ0L'D8f05ayϘR4z Rz6f+$/WH^*6U63^6 Լ{H+(TԱ'^#> stream xڥZYsF~ׯ`yU 003'ŖR!{%6Y#bH  Jo3 BF,p1, $4=RL2ݞ$j@H Y* ˭*Ns5 {xyd[$boԝ͂ߞ̶ٖ;Ľ:ra(*8\gT u(7ó o{eq~ mU-ll UU9_1( &.6ƭg _62oךHy^뺰6%癩@ҙTצ/,&,0A ͩLi=#Y3+$`q@w( DEך-(Oo 3ݫ{Y"wSnLuye̓A7ϟ;-M 7$ s Y!Y'Y;^VAa[%FBȁ%{OlXinMUvUe*؃ȕwcMSW~0i]- +(2J9ط4ܕ]-{Nfm(xeX⨯i'ݘy-8q0 x}FNF=1#Cx]M0fd:h8PNڌ&^x` GZf-щ{NT?}{]ǯ@;ڋA]9[rDwAiֲG,&avzAؘzpV]Օna_%X 8=7ʽG]"$"#rbSʗuDp2yx:dfm@9deli#BEcAa06' )I%f BZg)Hud_7u5[ h1`Tj|Ì8"fu=__ziֈL'VJ?c2 B.ܛg/O橝< ,=0֢0`EF Kj;ݑLny$lF jۥkL'bLdvBnbmrfBw@ynct[`k|M q1. t¸\U\#KĝtINd}5sZ 6;$ tYuW0tWֲ;,0I nJxU\B1ߊ>;>%*1ꉩ{M阡NjCv%\M. >jD/S1[rι ]e{{Q=x&/E"‰3XLлnI5 "{[ACD{mS$c'd'Xxc%.YR URpY&knՀţ;WyKñUS' 쓣<@sdTS =,vO;_\ȴG3TBG@kD46 Y7^~g]RiSRX\5o,)QzE.2 (U+no1ޛ߯ߜq;Kt+rOCk:?x:%[)CANe1m/8= Ef10'4 Sj\bKFRdV20JpPIl["e\"J_59p-k1 / #Hb͔ 'V,@;qid%d)t!fX]5_]nw>wTtg%6[\6;޹0 {n y p2Sy\7U3~, 89הUr5694é4F?3bzstesW}Ck gjBja 3zm{4rIN9HE(- {=>TľV=$h+P AxhG&q#5q$gCB*1 uOTaK1%Ω80Qyq㆛K$6%(y* d? DTn*' endstream endobj 4525 0 obj << /Length 3030 /Filter /FlateDecode >> stream xڥۖ۶}ByuƖMJMc 5E*";Pn `0W0F臫gW߽(y&rJh&|4[>z۷70k1 && !ofؗ*($$4{ ۷f?~.N"),Mq &߯$P#Kg"IԨ\}--`Q Tr3b%H\W XFdbp@d9kSV ֨5R@zcT#Us*ȼn,3y,EL-Yu滆9fǤ͒p4[}XŚXz=`nyaX7_ԟ \(g}8`$ '(>qg=HHv;,K n@#Z^"KWs[mk QWBweSӱk:]sX׋2J%TMYp( tAo"DW1n*ZS/zEM ]V<dC]4o j`$٤ޢ5\˖:򍪲{N

OY9\S&%^;C+߬u2e9E 0I^<6l0jV+{*QľE1vHifjm FgͯuK̍i]u-.3 S @Y՞. }NWd2MD_9ZZJ0;^̚ HYQMil tUQxr/S01nϷ"wDoӉN^{5a{77$tN@2eNcObC8KؚcY*!@kؓsZ)\%2Cx Ysg)m]"MrD5q),h+@&2kڌX;X=a')v4cl(X* 9? Sp&1S1Rʟŀ LJJmMA۹X@44(HJIujR9k%T4@3ڱӥ #/y+Ӕ[Zz㾎xq&\t`,:[C4+J R,UE(Vk_2.p6tY vkҦ͔LKN(Hh("P,z*CV#BoB J)TI~Ze Wf"Os# МU)`zEs ^E@NJpKA&Yg b!YOU%*f<,!!Α!BW>z3FJm׬vz~" ˆ*11k75s󷟋VʡCGnQtFX?ECǟJu~7yߞa%5fa˘ c!*yۻon1smS8( 24 851OB"[AD%nZCXg7hÅHX1ZAYMe@e lg  G^%B(QY%3>К]e"- bܕHҲ)tEy4c `eom$?zYAr:UP&QaR9UB8ܮL=:kBA9?^ʭ+[w)r8&X=qi-0|6؏Ҕ ` ),d:B!u&=}L UH,+?t=*݃Pڳ}Ҧy޿J[WSٔӢ/Ԁ;,Zr_& qo_t~Ei#rGȻ~Mk1 LySc~ el!:2^ 7 Fyu/cqSgQp=78"_ g` ظ`?M (^TNIE#0tT4YL5v$r4Ԗ^t1LșZyFSxɑbz:+[n7$(~0 E` 9!4lyAARmG+_%&"\bLd sCyuw`EXaZJ麵,yehq߯"zBB"͜5UB wI+pKJB:SaMY ,DeHvog,;f\`J*yZ7p%D\B$Vڲlm!Cy rI LM,y ^OQ~8lC^519|-d|1)_d@.Jc_&ap+T.@C*t+; endstream endobj 4530 0 obj << /Length 2732 /Filter /FlateDecode >> stream xڥYYs8~Py_䪈C<+9-ϤQ)$)R!H+_}dz';~h'?뛓_ejyYē$ K'IxaMnW^lDw6|zu93?|9>)( eq$}bŇg_o~]iʋ t$`6CNoN('j:J8֓bs?Y@߯е#$jr}_,[@($Ѿfb/An3崭L'ɴk&fD:mT:5]JGg~tL5}d鼝ݙy{[idd#ڸŪʴgIV`ŏ˶l) (aJl*Zw2QMNffQ,&Ś\8]&;[fUiSdljcM_ؾmh,uwF$FlL~T}@--Դ'ii֦v}A]+qQ&qTX>G:(FoQ,[6&!Tu1=^ pv3:3lŹ1bvFvߊ0&%xׁԢWucErfWfc<TMM QwE'[7m ~TҦ7BYޑ@֬ޞlmU6e >Ipd|4`:(TR;Mu:f坕u)TNmLzq*NHr7nck'(ft%jz ߕMo{ڐ/{#U@vox/[V2trGh]YAc.2UZ 9MP]u?+ii6=`]UQAy],GB<=b$BWHM1y{jaw~ ݙshZUVGr 0%"{_ YZQ)E;{]9TSeYf4m"Ύ`U~6IʶxVHP^x$$ n&^ܰ/e3↉f+'*h21̦%<{>ݚ ۯ֣b/""vN 8[3Ůě8gz{/ Añ_\ںj Z 3T0Gwkj6sI# {qȝCC*|?ڐRT,<*0|Q*W(>)(AQ4 U CdA>˝ro<8`ftxD  J+3BHHe|.l|l xi/IHgU @ahp{op$l65aI^z;ˆ|8hjAqxA|Hgf~&frۢPE>KA+t;A~;Ǫ D`%("`U:F%s懏ϻXLlD*$Rk(?bSJn{[МEQ&ܑid3@͇dPE:.eƒ* WI1g7rOf);^4`idl#[0|1+ˍq2M^ ˍ=b:f1o j/XgıvJQ%j4h8b2EwД& rĶ G#_|rj>;H3~$[8.Jc͐@*@X 8py 5KyXUMo*gVFz2[)' ]",@8C]<9mHW 1$sWB~bb$uyzG7#~gw9[ȥ%.yѿ|/Zs^o$;Z,T<*"8@ ,%{ Dno#؀69R, {}d@Ѹ> stream xڭX_۶OIjI|qƵݓcDA'QBVO]R"e96yr, ޓz?]X\]˃at dz>75v,Qޗ$g"0tK"T裬qjUUuׂTi "ȓ8br42}j<f.˺x>n&} #C|i= Tfi]]ϗfyQ{P+M|i}M<ʶ?|(T@ͤQ%\EWZglRhg]MEWo+4|s2KK-ӽ` {״s8G!r(F wp|Q%ds)}O*# <8b~"@k\[2D[\08Ny:-k쎕Tgiv.猇L6ס c HHn%4.)HbA*9ѵ3_ܾ#^;g7>l3>">EJԐcD!2F0CE(932UY⍾TU@3(q#mTchܶvumժsױL;AnejVNI iJ` DkU+ C2I2 W~c؋bKI e$?АlݹoSJ B 9?*l 848=k~|~` /΄7M)qGcKPY+K;Lԅ.O=!027 rםk>acySz^E{4 <={48U9m_v?"jx%c, $ݷMo~bix>:l6tvm+_:h @.K?y=/?y{( d,2w)g> stream x3PHW0Pp2Ac( endstream endobj 4546 0 obj << /Length 2453 /Filter /FlateDecode >> stream xuX[s۸~ϯLfY:oKM&'NwgN<ѭ" Yɨ n>yo/>|JYǧw0QbϾ;?~;}IH.8tr\: b[5\Yt>(BKj+sjژ6pYb(̡n!E9p  *S5C5( R{M3 Ŕ CݪȡYQj_SoUqIϧojX>S%D"?NfmS SPyn5d݀Gu]e#ƽTa!71xNid4MOs]6+Ffv{ 79F9lMHp*PfLm.\k\Nz"v)Ѓ5HtD2N 8K*D 6("f}[<@ҞYѱnH@0.|c~7.۰QZ4 endstream endobj 4552 0 obj << /Length 787 /Filter /FlateDecode >> stream xڕTKs0Wh44a4AD`[ƲY{NN^RkkQb5]1bE^d6VL+<Zeփ}~w7\|u^ę,ύx_!{X7o?Wsiqv'Ϲ#_nHW<>&$|+-&OѢӡ, IryBO[@c←ۧ$aCڙ4S5uTH=zQmk^g2B18v|h2CosT}qЖ@CKkC3GJZ75fmHUN1gnBu C,}Uf6H/7ȍ iOXLDŽ>&7yXx֑>pN#RT(֢®mJQ{<I4m`L!Jh0ꖆx2~]m ˑboM'hĦ=$WՁm=PC2)oYo7ʤ2A^*D٠4%d* ?Q6Fӈ؋@qPb@RZu.ި%ֆƀLXz'+tTՕyc6=SR#,8^2n#6 ocQe*4J (PZ,#HCkJ> stream xڝr8pIJsk<ӓxjgL۪ؒGIAђTmE L6`p_i:WA*'$~I&~f5L\~|AxM^Dz_Pޣ^OEFWfڼZOe>o˺0#B|%*(vү+k9Ѿ!!XL}ZqL&a*WWz1ʏ'm_X ,pY,cr%B0!s{W*|j"1X#pG* H@K/.4~B0/Xew M@l?2cFi_4d\$@xRǸ] Վ+m\E,]\`q豂kwl71=i Ya_;"t˰1ڒoPQX'N>t| @7@ܓ;/"O;2q^ԕ).ټ0 ayKA= e!eJ?.qIyEb潄6>yPR)X=`}q]GCU,kC"gI O Oд@O_@SoL`8|P@em*dF4VvƔnlPjeU:f ~~\i2ę A_L#ɫE-0W.=ttɾM?90HU7K]"#S0H"fTg @h֖.CF1+̅Im*KA h MDl bUXJ#}y|c7G)-`1ka"wPzW& Mn By-+ ?*`کzT%v8o8l^ +Ps*(w=PY92 S(t3(sKrԃE4%IinJxXrXm\9P&[5c 7𔉟&n̗;=܋QzaF1\]8..;]zzU`D8OV})I3_Bs /*: !~MdnIh|HG}z&|I LG}:rz/@X 5_#+ ZKF4[zBm7(;l?՚ Xp60e4Ng,uപ[zSi.e&{w/zTsW)!%.'&7ߙqWm6I gܢ=ns~9Tʮp"dϓ8;㯼F`S6{z@i{(1$z%4abc;i c0yt?.{mzC+ųJݮ}6z(nqCP9, &+i8K'r? #G <]f_oepCJFSP^B|f>XT@N endstream endobj 4445 0 obj << /Type /ObjStm /N 100 /First 976 /Length 1428 /Filter /FlateDecode >> stream xYMo7W^Cr #hhkjj$Y7{ۚ:ó|%#gbDH}*R5U@`+B*x> ٫&DE6)rN&l2`0r1EtU"#U\mX! j!1dːR );C9b"& >W\D(q {'b]{%* :&ƻPuR-E(W]2gRX k CXNIu]^8eq>PM/hzLpA JRFR Z){ }+ ʉX%W A:`mi2"R%6L4FmeHB Ni\Bs@r01̩`%)\sR1\ L3Ȱ(`$Gj\1j;t~|:5"8@%&-dHf9:YcbJl)4D+ {8ZG':*:2Ϸn7(I ^W'95G{1-f \,7W]?Wj+Uݯ'sYz s5>%d`Mb3 jKZSk !̍:Wڇ`3F6dG;ͯb*~aozQRڰɆF,n Bo&' L,eR.O„LC&$̄vi蛽 6Ft(hFlSmVɰU9OoUah{A7FW7062w5\%;VxrJe MԊ&Z+7 뿳a#pGr6&V˸Th4[kv#oFb;ή[I (s^O&bKyC?Rd Ì&gLm;LNv}q#H_Oer}): n L2<, t}͛ }`npHqzgk-c_52=,L2{GT;Mʬ;\.W0zEBzfbFYs{$vq#ʵb(fl_XK\:7ewҽ=~?|.f=?X/Z.Vݏב{?Z4# endstream endobj 4566 0 obj << /Length 2014 /Filter /FlateDecode >> stream xڭYv۶}WZģoqĎ+IPTEʩg@7> 0fc QSHI*/^UH8W_^}8l0#b3btIɼds0va`[3sq ڹr; `gv[ ֢:.nY5{h,7846o. f8qFogؿ/6wY6F;! YYa,MZ|>7˲Hmma&N<21rB_dW/tg 4iΈBL(oNB  NkJ6|x A$ba- иltu\ggFMibFPBQFH#p)!LLnȸE(`Kˌxp,W x8ˍբY: @NMcH襪ӍlKǻY4dSAYww嶬RWJսE`y@nFB0߲=KK':߯U¥!/(L~-|!M0jM"6Ki{l(7ۺz M_KXkTJ)A@:L#* J m~.7UY4МZ_5r};D^b邘p꼗"d1ukJz<Ġ*go( 2VjDHCV*|9JBx ˻}6oA=]n&{50Ah_g"$wF|9hiU9/F.&"]?+s#qԸ _ȝ@>9v>n6;?Ép`:aYUӢS@^:_qf"=Ѝ I_\.G{mK2D,rHwhoν>f23IrX-N&!bpS )dCm~L|Wv:<fI/t3E4ρ^j(r(WqmzKxnU2(X%㤿%E /-7ۛc iL* O΄J᠟b}&W~Cpᑝ " XUγjS`8EWcΘ:!a""7mMFtM[C786&qMjx11( (A|bd-nd-!ߘte,7KC;Ύ^Wy8ڙc@F V aI 9s,j6wv$ƶ9~iu0@ j^Q{}pyl_7819Z&ܸaMOh* 19`AG;}RCiaeBSbA}hߨ<ⴒ_.v%p= mNH2n]m'bt}h)ú*MLYȉ#BN3p^2h!wI3A+սxZ&Ƶdq)(h[V'P K8;*1Wn\,)51k#2)Xwm݊ Ӡ>S&=݈ Ev0)2"җ&d]2`}[FKhK~yuoݛV HQrŤt $ p"O!/a?0=0vK < ;]7ׯ0MJ-J̓w1=Hﺒ̉=@(C&^1~^{ʅ~=̏씣Sc.27rn /8\Хxw}ob>|'^RÕܯr6'0*w?EDF endstream endobj 4590 0 obj << /Length 2083 /Filter /FlateDecode >> stream xڵXMw6WxiiT}ْ$$)!B;g:  )3^}`H+]Yzs?$<]\=]z/BQHCq=Ry=-tۗ%Ì]ٷ.=ҬH[l.~=X$fCgN3zv0٧rvK`2J۝^5fTmTVegf᫼U]Rd~uIo+J`ywn@gyq DHRP4+L-]RޣU& Ζm^('wF,F~R۽J#MZ_.D KBPvwQ:Q&b(ymE u$8DX@LIXٰ١F6 v#ҿwǼ(UF(3#w#8;Y[Xd$iWǨ@77;(Z~_K, BBمvO?ԍbsƬZuo1`&{lIo)r;N>j=rU^푛]V47L} zpa9extJgAH) /ԟ令X'ef 4Iܜ$ۨE8 njbKW;p'9 ;BQ RA`2(hOUGX(GwO[Y"Yi`E{9:ޕک!}4=koyaF!~NSjq+ |=ުӔ5U3ӋM.HtM4RbLDǁ^7|W1ۉ'eI:y48w$ڇ𱦄&R$ "ƹ'I,' r jrPZBADAc=J{>E?NTV5n~nkǵƀL.A,ZɕA&Igd6}` qgU{=s!|:$Z,xU|*W葽gBeXZz%^isݘm"y~5xAKv/ɢ7R!Zc#!@=4_,IPDk۸-~v45GV]J+v %DyU*+3ܒ3swi>y>(DS4lUǢVaP"x(,¡zK0vEN xpFâDp_`Z96M,ѐYa7Rjx b3֨6+"Ngl"a佯2*p J>_BP AL{sUTV2]yxډ|sाư7ҍ8N7&sƌL(M*g^5h6+|b\!wNd {n4$#H O`@H_Hc,..(?0q7h7 mxᯓQ`WehXtKq5vm3 ;~0D4M:Z=3a;;fq&UM d)!̛1+~d^U6E/k AVhX GBã̛pccA XlB,%&_̵J!8jP{5WC G/&'1pSw߈7xF#ٗ@[πp|?~70*Wڷ"{E2_+EB[ 㠡_shտrÑUOoտ@.unvF'hso|7u#\uiDN<겍SҔmS׷5^/d't{X>cv4ǧ%Zu=%FXρ  :S[`|SXODB;#}g;~RP?'vWT: ]FvSQp[` endstream endobj 4613 0 obj << /Length 2192 /Filter /FlateDecode >> stream xڝYv8}WUkt͎sq۸;m׬N$bp|]_gKϦg\ 2HpG#*Q)}1ߌ>yrrwaFnggG%lޞ}G{=ˆAr;A::veo`E.?ԝG4 ě!X6˸|Y{8'y =/F/W?V711ץI$Jp߶.̷z&1˷q]t\Vr04 A"+4D<:ac4mlcE1 6zѻ;'TxȌ&_?9)21a&\NC^ۤJw㑥30?-SLs aD}&AbG,d&ނ) J!})ߖywaKo rlK?4B՛2⬲UڢT^, (zgmrYYiU+]^T(cH5,TL8an]_d"] D}z_VCu(i=ڤ>?21`Ab)|mk-u^SL[5,]Wp3p_0o%wp ǻ7P]G#N >eX $4NvE$8r@ _D6IqZCN>1YMq 5s7yCz4YU '1` L' ~q Āqp떩 QH lOn?2({[T>,wMDqAO1 ӧ 0 .M&K5޵-h޵9+[4.2 ?BO >pEeá:_'Mfĉ)>Rvlv@IU=CG}jr[ @<;7B`l4LM'Srˤ"*3Dk,SjR%˭j`3U[}ᓠMPqBQG ^u6瑷2k}ioK(Vv ٩/(e+' XC{Շ Q,CHx@|kOx@`6* ܴQ-ƛmE=@ lB"ނ ?$ B RF:Jaeu,kaWI]%l C }ъ~!i)1"#E r=AC}CX 8^{J E+EA\<7#(7cJC伦WaUz0Ȝp^$6Śuʊ\B]Y\v2Ў&Zf}Á %bAJc5*^br66𾔦j8`^*2UތVyJnX( y`@5k7B ݘ O$$)P !΋o< ]IބYޜymGF8I A DP՗l^iEґ|B@<F}nY}eע3Wr'+ю TV\ㆂY:Y؞IG/O0?z,@˳ 8p>h_f endstream endobj 4637 0 obj << /Length 1900 /Filter /FlateDecode >> stream xڵXɒ6WHUY6QHHhXH8ק(H*'Av?~M]\>^p EiL)qSy<.Oof$:xqxSq@S1 _p#&W:Cg0΃Ox߲y,c%yVhL#^+F-6uGy|<)E$rG} =g8pFc05*]яvI`9:+VvX4.2+GVv4֍ZJ)IBܤgM%T 44cmP0 1cBPExn6&XL;X>ȭ4e1aߐv K/p AvSb7Pv{Dp0|Qys_ R<oUV/N8QgPĬlʪ2ℓ8a''*{#@I{cλ_F) ezE ΜsEdRgGb\C des؝ѷV =gAtwWj \d Y7.ֵPqIL^m{`7br2"2ׯnw~? .W*e6}zȖe8eKQI:CwmTyVx" 96poɁlH)1"!N2W>.כ\!t o0?3].Q9J>᭬,yn"4 ?Qnv s5 V0vA,"V{al)ҦP8Ȧ2U*y x 2~BQ_Y !ӫJ~}x%3GeVlꆜNWvbWĩj$Ijw;=";t;m=wl0Xeݨ8WwGMi$j2˄viZىtmaz u}H_4l|NM Q堙E ebF4 \i"7BAAگ(IH1F =k&x5j/޲aq,PF߃qS'e#a^/o} ]͈Ol Fl|v`1'!ۿA _~`%Ļ_0>!.+SAtД~)zuX:͸w8.a՗ Sj5 5'>_4\Vԕ]E!ѭWB;_s gaP4V;~!:sl2(7io~sPuiBu3rhM_~"r4ay Tz}Gx4ěs^|@v]bY@qإnaiY:4$H=L ֬F:GA\۠8̳ƯDE|^o/ׄ%irmXvOf!#(廏(Ь"B endstream endobj 4660 0 obj << /Length 1241 /Filter /FlateDecode >> stream xڕVKs6Wpr)=x|&[ĵSI3D|(|Q} 23^bww3\~N$|"h{QHQ$r=w7ɗ?^fuOOr}D *! Q2/GO['#[oe!03o1{mf488ɐg0Ħ8b!\8]vź6id"bs*3* PBVF9.\e[]OӤe>Zuwj8cwG2W81C, 7&"·qXXH/U0撺 evU;h2Xr5!$H Khш ϧE^r1@j67nKk76wMC A,$I*s s/riO׍mFp_a%E1Tw~y 25vV4EK赘}9]gb3QdW0!q O:?W J³^ M+ =}~j3$r.fW@?Pv=tr1.\4C؄7v֍i'1 Go1ǡ']1pipc(.o @mQO+`@=I"ɺim*&I lkcoeY˴e•&J'ϊ*~1+֌u.VB?.G@u/ʺE0^ѻ.'-{rUƬCWk*ry6eR˪OE{AP f81BS1QGMk)׀U"ӼDK:z[YF-jMA!O*Yz6TI)g~[dEꫡPrmv kUPh&XI0_rc}07-lūu ,eY֐-r#elk#mҭ]4W=4le#. ⰱ(Zj ejrRI#`9Y%i\8<qxM9BlMeU$ީvђQA@perxHH5oݾR=2!IBDݔ2|5^ Ay~mϢ5m1Uж y Qoo\yt$rf!eHqg9 endstream endobj 4563 0 obj << /Type /ObjStm /N 100 /First 974 /Length 1259 /Filter /FlateDecode >> stream xXjG S̎F&&VimM&]J v }~5!nB`I#io5j'1*o.$P-K0 K簳Yz|ъR|_(X b!2zAXg©^&/,s]WB(B½#eaȮЁ_P3&<$x6 6cE0yYiϮCZNx:k~ Q&Kǐ($)Lt-δtInt/݄.p3PV!3!}` .l[X Un]ZcpP:HZdd<"e4 XpQIG XBH_ @p$)jXpQlpyxx3bxv ]guX.^M!FqFtb[P[8Et8EG^FsɪnBB9 gt3#tkΎ iܻ;QD\v)1Lf1&f̘Cwggr߆~S{T;WBŮ>}nſXhSm*:|~}uW݋>XF1t/ -79ܕ>ߕ/ۿ1ۘnp{K?].qƼrP] xN|IT 1VOn I9׆H+1n~g\mH ~IYyKhO&G$i߸vOhCM$[AN&DţEADKfhvXp VOio@?=JbM\=$.Sˎ+n c|TJW|'&"us(6Tz$NO֢Y%ЄZ`'!^XԲyTg%KdžmaM渔!-1C<"7cv8|MF̢ K}oX<\bI4( f u'.2[>6MؓfR{>s}fȆWB2~ endstream endobj 4672 0 obj << /Length 2096 /Filter /FlateDecode >> stream xڭXo6_!T*H}j^ka(u+K$; m)^!92A|w?]^ցR" `!EAB4XV/O8|{M:,?ԏo`Xx$~뀣p sK% )3\>J(_$)8MDYʗ;[w߻(1<D㒅;Tv \pw/*YyHKBe%t?r QcNPu{ò$RC)-Oݚ-o9e&bY#9FG<@oHS˲pM;M 4Q>yuo0-b{= 5G $oE=].#@ޮC؎BPkPHK25hMG8÷} Ǵ,4%8Z\'܀ɶؑl ٷb7ȵbɶW}wBt]-!wpG7g )%V0 û]9.¤"ۡ/N0Y_$=9L+j@E˵c1K9STlv%po`,N΢cp8@<%H:ɱvdYhZ? {;~iRu*E^$^U;|NqT{Ы- /sTWyːځ QЋOVDL=RAdH!$0 w 5'ŹBMR%RO# !hK2zV / fj"7'T9P`SmVLCBM #uEnjy HzQ'Fw#')D:9Ķu5h7L6R tk5.OW6 q#S{RNHt.<:_gOW!W=:;.!`-1\~D`rߓvtWz)ÓexSru}{6t=ܺvh`2A jcΓހ0i)37a;W3|I^pYA a׀j+d!wZ|w+D8w4 @_HPnw]Cm] VW?4f.s_. S#y,q_o(| gY,uu@=@'Fs~Qr!ߞx:ޚOV_ki1f9:,\^hﱖks멃:)f|vYQH߶gXÍ5`@HUixu> stream xڵ]o8=B(A"E}-mEݜEmae+IoȡdV y"=$g=rŇ s~/?(I$}ٷ_>8aQ rL?#H@7i—r`~3{Mş PRw1 CdoaWKf '"0/ſ/Pq H$=LrNIXIgLp\ue֪TmSdmQWʰ>'1PHѠbty0*_˙iJ]ȝϕlqnf,vsBᎪ_ٮ1dՖ{0\RnZ㑢Bp2.c6cL:9(" p1BDɐw?~G{1WKᢳ*69}^D-̋jͭ5wƅ'Y];?ho{  Q[\/Nn۴I[Yߣ2m#zeO 'xZ ɼ zuǹ < Q8@ (zղX\d>[ڨF{1t&>EDC e% #+#>Wn #@#%oh>cgϹc9RL "0o/d@  rLLAk0PįM|a8Sgs{ aH hd$L@o YL iArH3HcV|&ٽ< BåNcg ln_ㆀX] /T4OqDP Q`yȂR4Gh3ت[U Q~؏)-pbРB,ߥyǏY*-~t)w(|D죚~b3::ޔlK]XEhuw-0KcQج GP q)Ƅ8r2V fฝ@DhF)ͷʍj h~ @ދOb`*^MN{\2ݕ-DљzL.FjMPS J$ENʉhEk= ˦Ȫ59H 8H&BPcu=T3NHR&$[JT0.w oZMa@ݏ'ΣxcL5zs-X!#[@O/>i VŦ#Nzs%Fu]nGE@fɟZ:98Tؼn tm7QbM,.t|! l 6jmH:?&l!)b|L:t-m*K0.h# "-;!LF/,'eg[Ki 53PC_eY?[R '-B.;)meBbaX 72fP0kF>1|X2s,"uw( u5byA>#\1NSوM+~ƚqJx9BV6V:3 g4TX$;})`d` m]͍R!š,]19'Qd6gJUY6nؑVmrTX: 4TRN,QvsWո%=Hc4>{3з> stream xڵX_o62XR(){JH;Yb"Pl*K(>Qu BHңއѻy)IE ٝ3ЋE@0f zr|qqz~r":9!S?tRR\8]_NyLKF?F XR6G {ѣ3;^qw5}DяτSk?ZeŲff}32[K$~jriLq$#iYj#WJ> a^Y¬'e'MeY#IVq#)j"o+Z6FG+MsSwUQT;mSgugGdN#\j]A?@ s0GXyw?=gvtcV(Fav]Þ߹0+hҁWn°iTfm©Cڥ(Dk< dOS] S AXL~-Aj)#1O$! ZW )BxT3"!}iӌ;>q 4AJ( `:^k [[O23HLBgXbʑf&9Bf?J1n '*_6cKJ#BzYJ;͐XdZɲf ,vdyCZM#VZec-^х˶ECKD6F,:ˣhne}-TUE'"HLd)$h}StX<]+'9scl-C^恘Z/V |(mrtܛ.m7 {څ7C`]hއo.]T,̷[[[:Nzgs<TUS;j }ڀGl>@cAAroM_`)UUhޠ{ۨF**Z`ZʙIRaܮ2>g6;ΠV~r}}ZTdz)\idC O^.$ ̾ʎ _ A 053504jTu[=):陎 10>4լK$hÉ]I,gmR_Cǎ|^&EM4Xca.*{VN*X&23uSo-/#sX,pX @ss[U EN w׿$6ٴ~_*eR08 Sqo:AJI̹`hD@PEO]P endstream endobj 4705 0 obj << /Length 2021 /Filter /FlateDecode >> stream xڵXݏ6߿K@ԇӦ-\mp4ؒ#һCpd+}p83LV`ś21,d_fdH?ɢnn8iޛ5Q2}?o/Ù_^F,l[ Mc T̏n/Pk5wwZwY\| 28$ۋwI sL?'˹DqQⷋ46?\NCx9i+;ôyTMMbSڌx5L%&"IեF1lhhީ=*G^"{ kٵUmXY+"5fSe4Vu7n5r6ҺW6bonp2Fi -,dn/}^iHC֤ـQzҦBCϺ+e܎a3(KE1i RkYvYY7~۫_L!sfxj}E_ۣj< |$d xcvQ8{ >CmpX JUieMe,0Lݗ>6ĻlrAM08jPE~E:FO(!l|8]O!IwSߛNg=m||˒C Z7Vu$끳SWVjEUTCN!A2 c'J m]wT9,Vuw5y>bP&~nr ;T}T@\U0ṼZ*_nIB|`wqf@GnOjLwS!VUݍvJ%4 #W0 x0t#/ _aW!}Z:~T%~̞ ~dk3LRG6ʨ#y_͔݃}97^<( #pl Xa!\(R׹8HDy]@0{$ZGcAZ (ڀno\7P)`Y!>{ls lBQEhmXF@U3ǒ:e&R [`o4t*H5G+pHIGk(1}V{:ןi9Y=e6O{|`ƳIgt68;"Kޝ؛y7 L(.xlc"L&/y.:?=@"aaj'5U endstream endobj 4709 0 obj << /Length 1852 /Filter /FlateDecode >> stream xYo6_!{嗾tIlC. Ebb!Irw䑉m2/`xGD+z?x0/!ICo~EH!(Dě;?$Y@58y//Φ"z*X$Bk %F#"i:=Qy{z(z{ LR9I /[;^u?y$>KOR\zo~ݣ6tXl$Nly;e:۠+Xc0rH{'_EYkT:?@W,.5Pz0<*iư5EtڅB!]-7ciT'?4qQd [&O{+c?V^dsmk4?sU^{|Fe{JڜXn6&3\Q-,u]QZOmT.Wn1/Tȟ1NQQQЂ6Vk.l "KKneSٷZ.ڎ[׶z`|˶yvvDgH|L !2LD" MhlBx2 lP/a@z G12 N Θk?֌s/Bǂy3)IX`~TDE, |eR,k͑~2hkmVYZM?e>l4AlU*.S庨_Y\ ꯷a0̢& -bu9`iں}pS8͔ClZ۴7:Ȗ@ 뇭.[)eD` \=6Aex;l>H q>­|On4 Ź&OaKn3,/mr1][j<^[܌1{}=@dx6xo ޻;x!R w>(x2{`[$ѳdn0O<s\_;k<37ϝts/0r~2 aqYtZT#/,^7ntl3O x!!錅&Ï/M˙ endstream endobj 4719 0 obj << /Length 1263 /Filter /FlateDecode >> stream xڕ]o6ݿB oaO ).MǙ$W4/߸WH{xQq\{O3Nq3E :Bg9tYZ#ܭ[ q7EV3UTfMW*K(8cǬHvCյջ~!2=+Dc#F||$*Tű 孎Wm*Vdj 5V[7F6 mVSX It;UT_9TIWzv5y ^8uV}eكAo 4m=?7ȵ`c G{ DWscTnleCd`42miva&#Oo6TUnj66pnN;/ LDkʶ<q=k;qtӆcϭ^m]ǨʠHxWX"H}Rqn U5B/]zã];@!'u `Jki)|&]ST4"9]S i.g!z J+va1!P egA<YWPTO $!Bg;vLNԗ endstream endobj 4776 0 obj << /Length1 1406 /Length2 5932 /Length3 0 /Length 6894 /Filter /FlateDecode >> stream xڍwT6҄RDiQC'ދt$!PMI)U@ґ"EEE{oedgfywyP@8 HA AHi8M,lB5"@$$ Da$wPGB±N% pp{ wTpc09] ' .@C y##bQY~4cwg@]+OkN#ay@0p XB$4`~J'g"W0C!H/hpTq8~ iqw%~*!ahVp٣4kVA)\]H>e#ܻП:#QHw6p ? oI݀pO_NO3_o4 'E ?o,a} !`8 @`Ax-@ C!] 5b!mC{|ZSQ  `a< ?uGgf?$?ԅtKF+GYWwE\\~?AA:( 5֮8A H vV \H=CGP̙$5ȟ{8ATC CT8@vb@o0Avp_ "Q8Bг/PpD  P/r {Kp'0I9UV*0{ Im [SUFm 33JT?tUux/װz 9Cc&/{ܚn$zj&Y&IA)gmIWux.b;-m ,wM>45AVv$p)2eы&3W~doyCծou?I:v\޴ɝq6> JWLFMg4`M:S>:kkyMw,xa1ͯ'sVٷ5>$e> _̙}qSa #™Af"")W>^,0Ƌ)rMUD" 53>iOBkaUQJx} E+^WToU;Q(I {ֳhF[eK]a{l1vDź9ϏwZDQǛM4.]'+wMdA7Xwd=MQWੁHd/}w_.C2]`ăae=yjG_܏/? \{բ۔3V疝vG1u=e߽oәWZV:_!oCۚ24K >mEЇxN)oN؂HeSA_ 20-fEbo6NTir0`W_N47Ϩ$ұ;mޙI)>fQtcݲ 8ZiH+Xv V&lþ^֏c΍.s6V4wsV;Cޘ9J1~p=2'D7ԨuŞ<㗜2pM@Yݥ…ワurWkrx-JBM[m5V ^'_Vrov-vЭ$TH%z] ;%Y,6pv\zb-;-SZL5,}nۑAT6.⢵r7yݕ. |zAN} !"Rݤ ?9aݻD2rL jx5"rWC,BjL1}" }j#sS%8 Fa8.?pDw3D ,lpp}ryպ:y"u]b%w Wf^Ɛ? }1dzuqzPHo sU#nlCyte;]U_eU[Puxge}(NʺS~cW3ղ.ӾhQ|̹oh~IU5%w'JAJhyN%u.U H@ࣘB!h Qėfzsofbʹ*.->xOP%0mnrY,b`ЉAVeܹڿYwvL[X%N˱:Kr+ ns@: abVX.2fu˹o$MBKh\V'p"&qyg/鶐Jz.Ty< Mta^|[T53ڰ5ҫy]9df=9{3$8ǂ?3hRO^wžIXAdrxz=nvK7ز65;<,:V}FPm_!!1gό2zgw~fL|ǟklà}O.RbklڞჰK+Ex96TސXκ٠1?xvc}J;^!N?IS9Ӽ=#Ճ^y^l>c1'? ڙTr~}i"d85 '1FwcU L&_FQWW@nQXO_8ygwFU&ڧb^Z>xѝo>SNv&2"SF~-mug"9gh$&iI৫Ԕʲja|ؠP8\5kAL0jÓy?ugNrw&Ң|#TMvݺo (ڑ_2{unyєՓ\{B5rV~&_w:(9 $eho©fN%\>eڵJZNc$+nCϷ'_kdRR+6q׼PWq^[6'I!*Dkr3[ߩW\]XŁ&q*Y!%Y ?Ɓ߰k͙NW8u[GlB~JokR*I 涍SWɰPC0"J)|_߰4|xr}QrĩG_!+ ]8@7OR%x="Kj2]o8W7!(%cX뇞j炱!ԛz!i#:U,ʹ a0]yOosVRΓTnE+tr]KO!ŴZN׿ze،<<^^a?4td)>:d|Ǚ<7pO!2;ZjJ뀲 *^2,x1&<٣ؗ9ЀaI7b" *5̖LMsdKӠ8ךܵ``Յrf%7SPd+gj|{_7x_KX G0~m[hh*&Hgk\kYz[waAUX-aLMd67l)|ml͸TwO|]M3,* ᱶXoLVԇNlkcni{[K;JdG69E˥d (5 c%۬zԅ˃[\katgD vo)7pnBCgNOVGPC9W!Y\ IjyӠ]r,yf,v$.qJ>fR߲2m Knמ`IY7*em_oW ~Pu+=)5$]{79yc1{7)RkWGM@*)CDshODeIۥƊ e4O<'-3fn_hKy5> ~H7wkfysn󥆣Lo`QXUh{ƣ/³L/mt[PV&&`N Hbo$u1i^ύlz>f~O)V ވ9 gnrՓm2]:R}^6wy}' zHyZ0Y:Jk˯2+rSʎzB2TSeW#a,=knBCZ]Xw:٥;Js#*ef11#I.neVpLP gQ48;utk efTVӹjv0”<'"mD͍`%zzQ1h%*.EPy>ΠAl2+.\k8!C/ۋ5Z&FKXJDHygf0;K;e4Ë4{mN01ܚ[!r,MѬδG {ĠYpi)q+@ҍKkLUJT<ꖤ r<I[V__|+8e<QCǚW$QOeCl[=ddW$kУČ l0>6)j%hb\!{o( S"!:aB+>R]iJT|6xޮШ&(d< "./Y99Kջ;Ԓj˚_&scO:柊Q:)N-I}ZQ&{MbxK9CEWBqHyuY'`[53зDV[0|{$DNLܑAI7{~K}P_zo 4P30mҠZ#Rx>ZZsf!w w d+FUGo4Rr y.04vBOK+ kݭ' /sXrϡ+ 2>(f~h<ҰUY+mAT M8xD)p;Ys!%W0ƮFaI?W'=E@KSJq3IC h\uh%T6e'g'rJ$mjnLv񅦁-|ۤZ5-?&H=>=ú9>LmlksIGtJdC._?j+)4/y c9q(*?eM6BRWO ^^37B}SLBsԨz^ftP#F]+ re x)G? 9m5h=xi/`g?.Ƌ1&X=י@Rʽ1P)61xa?5O$9#jSە7~ڤx5Q*vst/~ts0srGiKD%GhِWЯԓЈsc SYɦW4z"(n*KEs_0.xƟ޲N>cyeG{,: YMU~OE]5 ;{\c=A^.(0*{vTDMߥfgҏɀ{'*I u!d+h#g v铲.ƻ5_)w< phUq:M<}mA^O=̒KP r!~V%3a؊ '3qyM, huE]oM),&:A> stream xڍx4\ڶ Z}Nޢ1#ft-QK z-Z |y9oZ{sݞڜl&H'z&V" D89Mah8o;9 C"dqDcljh Px1@DBFDRDA 鿁H/@ wSsqEc} yiiIဲ vDzhW" 0)x\hOaa___!GEW]c q~ ;z@&D P9LP00„x#!^:` xBu6W?ѿ`#p080BG/#;8N e#3P`/'%(+ fΪH"՟ 컿uG }03ޞf=o Do  %$E=vUی!8 @1c@aP(^ސtsE$"8h C;; Ɯa'~}uga37 k_N((* JK @RRgCG؟>#VE٧[?Ka.7A`EL!?;y?~G\o4FzH %]=3㿽hG.F Ci Ά04/e778 1D`0(|1O]YWF:O9kJ̀Ƅ(ҋ˜(/Er#= <{[L0F=b3&Lr5-U! g3H:1xQ.- ؽSoYQyfؒ?BsTQLyЇ*pQ\&@Ie=zK@X%k:dUHo!〙f:,Ų+w7 s>u t[d=oraLqQ!aG${Y)[S-l}B+(rR**構ɇgJ/M^S3Lް~èu'CaQ;nkW };)mCɹ"f!TA'}:i\dk Yz0)䧾.-?SC*M!2xMKxA83AGΓVЖo"6g7) אc(+edO-[{jzmxVW*[)Jg_X^ۋxV $󛦧@^X2g%`|XφjKm*EK`8-P^CEFC'n6|˱OBk?V{DoUDT O'iHx6ͯ?39=dy+ܪF󽮠a(?0hW`GMJ8Nfn-#~4:MBɚl#ۢsd%Oi "+j|k̥2޿c9_oJDO:d/P8D;ONIo)kaW7.R;kk"}213nWƬ:?L)n>ҪiPN)lȝtRO GYIj'\[:%CT&YR~ݡXff=`7*h3l"I|$"$.H3xLu| Ps}w"Q9;|bp% V=_^z:T"ހ`ANmwy5Jsf@Z;{CeorH% ,}:x>>=sn9W-<3y9+2pښo.f#1jd*mX {lv楷IQs5+z()z&5{ }|Jⵋ}qפwlƪ.﷧dG_@2?N~Pt39s+n";w{O;G,P<<▛Z~>'M( KS9K)2)+VZa d,cd;u7ƞ t|\'zQ 5?y܃8NbII!sSÆӁ$||TeD2S/JLOEtJkj^ǻ)!`D52ދ{Xea9sγyR^1?̭[j߄yziT~mXe0m}^ Ɲn6y7cnYe׀Pgl~SY,\ym /9YHIǟVY fD$TKKAr+ϺY).TgI1 dƮ0\]yz)@ 7&JıPyk]N{tNV< R|+ΑkX8^d5ߵsP.=Gi4#e}|Ws(8hW\hp:U\,b=YFuҍ>:V{_k>~d~[cJ Ǭ2EZb @YٞB0u ڦ_hY^Cg܏ D=y G''muk%x8+:XA\J ׃+mS.:LF9.8S3|$%f"ݝe bc)+Uu~}}˳^H'bFgkrj}{#ߞ5a"^;Qsc$ɽA3ՕM1}]kTw`*-}ܰ`b4wGGtN[uC$A5<0gF\&Yw|闔*Oh4=}j$޼֡51dlg5KO*@CM‘96jeN ޡAӅbMyCM6#P-B˰k1"sw;Vs8⑅/ܭ Xu8#H6,Y,)MN;&cA/KMÚE}rMz ka\%U᪶bii, t9Ωӈ4)7ě^ćzÜTqۑt-噗 3aEsIdاޚ:.Yd{4^3=zQNDpP=Ha L$}dfJ~/ jgy?yvm5kK B C{!%kUekdo4C>O7-JPrY3'͑0+>'~{y‡$uxz>+H*[\TuaZqG<;`.'3xVIJ춄zK*F@sK2әF_]P 9A*p(@8ŽI4e >N"=Nvrr $57' ɤ׎tIW/HX0wgA39﮽)j! zOcZj~UGW4}<9H#*эw-NiGKӬHvKo<U/*СX߈>ZqZbf򔫉5e2)F+7o4:«e8 W 7"}'Al:bqvS\5@yd=@o5Q{a߾9PTxeTjKЩf\xP׼1y;˔Iqj+_/r(\$#7ƢZdp}s.֙l?C51%E}feRi:W?vzim;-{.aLGMe 4EZn3kr/ADO-КAtS5bMQ{j[yl'f9p!"K?9 D)_P9PHW8l+>-!p`֡d/RƯϙŸK]wzǰ?gq{Ѱ),}5%u>}qw6G0Ar[܅(qeo߫=X_Ե+<<ٶlmٻoݍt#~ zH,3769ϻ-iuq|.:\tB^IK-vg%ԤϷ̴N9֢(o2}c`uȫU@m ׾wۇh j΂"Y6)S W!֫>w_A@xOb)8N sv_oB>SΈWoK$- Y]}~ ie'ժzJ]sWi9 d5[a]H@R:;Q3i+/w^Yށy!aRR AD{KN hB+wv7>4O:6FEjZ\dDUQ5>]rv D(n4o4v"fC|*?ĈtR> stream xڬePd%{㮅CR@N7x.;K_?;q58gg^2WUq(IELL,|EdǾaR/imQp3V|:׊Z߆b<ܝRQ5,!awz $w/ĤxtD7hNEmCo,9;J9yz1p>??4ŝ y?jm6Iiu1 0_Y!ѢZLMRV6uo+VH~jW8Cl* 8hY/Zlm (tmr!)GM{K<$ZnUJOƢG}8g;/dM.?N+y;daw2KU۲,Q;Fi]򍃮›`,~z2c`ԊN8p4mRn3a{-m݌tSC3:53P~ELy|mcp :|1"|!{ʏǧkKUEI$1VUz{ډ*`'[s,MA:F$'퓖j5}ft邞xqd"Y[gHS0&tO1HYz-oyj29f:͟yH]O[<ga{s@09J^IUp$#HYM?WJA7o'#M\b D:"ַPTNٻ j=0ԏx5v=uϑG*&oj0(? ,XntmE (bϥa 4&ptpB*̃ Js v`rBQ_p0<|Oq^*Oe O0kLơ:pY. ˖{m`˽ ?P/.biȲ~v9Ȃඍ~mE'qOܿ+DIF|]Rub5| ᜝.XX߉r5c|f|Ysx'Ӷ_r% g)hʲtaݯ=`Eѻ鷬#SO$0כ8߹c: Uw= Qo@pDQiOO&L(idU0 $t}6V}HT%g="ɍby=ǭ i֋ $7[FCi-C. OW~s=ٯ8 SXun?tC~|˼SpZGU M 1EɓKR+T1q>C 녉6oB9&7ʻNG̒c5xȵJF5|v6>*6Ix `~dٺQܚzNP#pҚGIйȸF<!q݂@E{;g02'-T r4l:;~z!2is'7z X G}yI~ͳVةVwj_[0TWp A4_VlBJI'XWG(}ueXF %H!#:h)qCXF5RIs-z/63x& +d(<.{g Q%g8rndlW#"Jntes灁Ϣf:BLP 0*'qTnYtٮ D> h úVfw)>M얯5gU\ <=@.H?xb. kU}u0X#6VdV. yEC<E@7^%`QʐR9%B 02oqUjX:lgvIG^UMG87Ƹy\F^Rw[><5AdRSs0ہdR0NH< U}ywdUl_;ޚ2.M\<2\iv=Cv ܏Pmri•2T?=/r_Fk )@a:^,E[m<Y/R%=S ^qkeau&b?nl>ldT Z0  "=M* :N.,Rd/]b|q?oԾMNݱB@_eU:+,&VJ-aZ)xNZ\;iIT|nwM>@NlYs@m)}ϼAdy%"Y}:'dr,=ڧ<ݟHQmfSJx)M$ۊTS5^GXiol< kU;5ɨҺhɄK݈e֘@-UтQv6@Ռ^6#t+D…IrZâ]Ki8UB(;MLCͺ*˯>p`>n;'p`冏P`3S'p砢}s٫v-ߌ&fW(w%%Zhhɏؚ"-ў|ojA&-?<Uoè ڱBěoYx6A(3=zh b)ZY~edd,prPƿl` yח[=Vfҭ_j@0m7Ǯgo-ogZ;dƎZ'@V !5<6kUX;>. EXFh2G$O2 !\A}BKĘ aHq汅wof%9x;w,; |W~sfA2u4ӕ_0n g d/d|h$Y Wb`w{"Bjk}=a-Jbښ)qOڦ+j2:&f&y4}YYL\ .o*+k7B-Ӷ$\'Q gi~b%,H&}BeVh[*=Vzۛb/ ԩ8 ۺw }^kdR٢@HBX4ߘ yS:l^)gj Įi0<gmKV{n`nQEO߀6seC AO(D8 )Xnܽ &á *]2@HAn ěf2eo=F "%^q~kD7{&y5cŮ*?Mx/D)5A)JEKThL~\;mt3-PN]dWUSD5Q[_J:1dJv ͐I\e '%d9;Vbn`.a>m@掵&cN 8-J38PP?wz7u|*EE;Y?j84Imh|i LiaF!He|R1C]A##{p&ܻW W s: OqZǑ:;ZU^dA"@~RnfXzrUpWP^MV eEK^D|n%Tͅ6>es@ZDzVEVi|14e(+lwtyy$$\|j0욑_N2$F|o$QkC؜3bB3 eBzdqyFa{:Wrƽ/ (bz?'V36D $pDzJPXL.5=Ag7KqAN 8 Aʍ~vHfj6JD(R͝B{)6U$P,ɆDi?lh]&jŨÃ>L Xn&[;s!{RM%jG`maSV7 ,YxWvKɞ2c6*|4B$8~FO+ymE_eH٥w&H0{5OPȯ3N6v5^Gb ֞AuM=ϔӹfioYmu*ң-6fj4>7nYmsdzX&VMikv}-x}6Br*}`4m%xbG|c3U+Uyeie GQjٺ>TF瑼u`p O.&+.Mj\\ f!D$Lמ^&1 -ȏEcI~O#ݭ F b\bxJwZ^t'F}-t=<=Sλ~LUC԰-a'7n?K NL3V']T%OfLvQWIxzS`6u[աyVn͞HJ,Ԗ]+=K.'ծU]RLZz4fk"0^+`ԙ+Eiݮ-aZM,ymaiÁm:'n}%K3>@e 5/;y`7 ץ;i$\`h^2?`ЅDL`1k.!`MwIdL@Q,<^LhVU4j̫aߖ@ܙ7}kxƱZǞ>|V բ3cmqDjp$f/C^hCX^wFŃĭؐ6 ݫ4#2v# qQA5glk4ըۧҒ ԶgٿC5W!|5F^7u?Hr5dLzqsP"3JIOS7S۲kxrzH躔_-Cyv Wnhb/]H@*ܜ>MEBjȂ~ջ_OT٬o",M馒kq#-^R]G@bh mL z;YSC([zb7o#l) $vi)GbxI|ͅCQgs(rCILm&)DTN.1"Ѱyqm ևv/\qSseȵ?NjBxSˮY.$dFQIM|YVUH%,PQa/ddMٍYrXEO3jEav'U[EX.XLN JpĀw$"Y q*Yq ‘vj{lQ1kC#5Ptk:q}LzӶlHL*S<u' Q|\ J;OT]-EN>II,cqq2VE:^7gCw'q>0/NeOh2r@Nu2gӔ;^ʛ&}Iʈk]KKy%N,ZR(^#2BEIEFĒT"=S'CBjxc1n&^Pd=G\8}|S1EYz}InІI[@$r,*$jG9emUDzyC.%,Xլ/X#voדd'ů!-ρ?ZE%B)$;g.:vj {\:> AMġnG~BJyT&xׇ4:ח;z*rJ "(3u8铪<K^.ڐ3)>.}I9؂.t̢֬[ƏӺƍr`!6;ɲ.sl~gs׬Y0E]l(`5rݞQWơhJ$P`y>=|R-wD<9}P3bG,A0qnyrsӀ OĖ}81_]^m_%'Y~YIXݟ&m0*_V8&/i.hAVB ]}Յ2 nI3cw8Ug(ieCrpin;&h!9X%V-*C-|׊+F_jn(a#&Hx)Y[7PG!ד*0u&nD J|g q _/퍗tŰ3B-Сq+"$|C/D EMNlJc=ĔZ )7Ye&.r5O+ {Z.ofѿKxgRpiZ;Z2X2* :&Ki$pBn(em,GO fKjw3ɥV~!e N2]kmEuuHOe@\QI&du$Sة5D>y!.9daH(ĵ!|mOg3Xl^.;fҼ(⸽o7kr3طy((*ːf5Ć0D] 'gc,zAsd}!´+M)Udq>؉3[6 \ykp6Cl9dI:ء(1t$ Ya̵`S6ӕmbpIocz+/nCq213@y|lXr fO&?dİj'q]$jDy D:lۉ-x00S Qt,(2WD(jONY?`8a/i6(~K3qB(K\f1Zs/81OaL#E 7T3~k5Y&>\$ňLP_^#b.G}MJ#EG-[,,qWΰSYǠ<+={%@xr 4 AL EMvצVS48UŸ,vbClcw3$u}SMEg9e$dZbtazw[Zrmt Qy*Z[ 3َڜ !s8_ۃo=C`2 ~ :bd@ǹʎBN53TGo"6!l;R-xϵ!.كwFE9[֜u֟MfJ.UtS]T](8 ޗź+SAv0"۟jY@Zc;mvq %XaV拉 L_WFîۄR:G2iW~ͼuX;οB)ΐU2G\7yy_G %SwV'˜ٽnFaVVȖm<8flXW)!LЧxG8Ԫuf␹8C!]b *0v̚29+&y> ccCeɐU흓5^E \/}X9Dd+YE)y&%tjiϗYj2oc%W]'S[/?~3NV;/[ c}\) jpP wH~'e\1mlS̥Axuʁ|417R(N].CT#4Pgqg'K#򂥂*1V8TS[D7+Q'ieodvʝ ZC$MXqdyٶmQk+xaEpZZ؜pVJVfybC1lx~Y0+cԷby$+ܪ|OhmlP~W{J >KY{ ~=U*L& y `19,oT"`wLFv#^B EkZ"(wjQo غ1z1>"]L&5vP m,Nw=Be[ζԺY V"=BmR!tHJj4 gwopPG*eSթ,[V8 R!&(zDiWZ|25oⶂ́2<[̶ecC{_ʍ_91|{eџ.IC`rExg nIÃƈkL ܂j٢Hjp˨GeOKQ3- K [hFWIsMN7g9dEo13B.:Ff Tmc7]'}dhL]ЋƝ/UpOeb*"0 _0Hx|ά9Ar藒mYە~Cfu8T| 8/>A*}Z!%׿:a1!7IR>gMQ-SNS$F>#FɬZ|ϏUC,xиq~tn4El_2Q"#qaj7L:NMޕ&ZѠ0dOpQL8h ;=s/2Lz-]R+TcJ ߫~.;iR1YV6df{"A~^ZіɡQϒ'B8^찔ҡeKD'&W[yTqC#O ,|i^ۯv#Hqҋm]Mj} Rc<pq-ɽGKT1/^E_&Ia2#z79>`ڀd;AɥU0n]) W;UzI;:ZAt 1.!Dž_F6NrW4)`:18.i4ױ~͗E n$vo83@;~yXjsbq4iU\IE|6WZ2k"(h4ͳ)W- wYɭ4TϘ3TmגPm2. ^;!7rao0lJߋaI 2SRXC41PG82T5uIĎ9 qh$d: ۯg|I̷־/"Tn"qA)Sx8+z{]1'._@CZ NEjߒjmd cA1p}J|, iAҐ>ErPαTġ`-?ƐDE5[XǨCVU+ lhͤNs F }+#U e>%N5()l7GOji)vt13B?6|py57J~,zk nKZ ҉g䫧#2t Wd6) 4ӧiQO"; SW^̓~Ѥ́O8ֵNHX!ޖs{;tяs*#Cn ,v @^w[1,S|ֵHX//gtaֹV$V!{d$7K1ՇyI϶W2a5'EYvVPJhWKL:ѣl׈ '8J Jm-oR(4q)j`VFL[0Eh=Y_?9AYŻVrѕh=P?6'vbS -wuh$Z_ b +/ś7Bb ,>(]~ Ap5owy]C iy#x{h|Rz=(>wXTT$$B,8@*%#(`#zE0o-{2Kێ#wcqX]%͍gNW!$^c֏UgugeCG80C+{PJTduԧ~gb"lFhF1<)h@~r_)ߞ V ΁5 ڎ0 Ut\wZۄгȑC sv'kjTI+ G~f,6Z E>F)J3lVȎPſFrSM>~%k|].2\^PVp~9Oay|B1Y#Emi^$k+fi 3P#DZVMl_w`{9S 9VcXQ8?2vϞuQܭO\1c{)ț$WjdzC(|VYH'h ԓn2bh+w+hA 1%>]+<&ΛDa"XJEDAܮs^%x>8%+ǃōY)1KqgtoF}h e(3wϹ-I{`$+sa.l~5h"Xք\G]+!]U t- t:P ehE#~ Ǟb}DZsE$IS& }iloC9xWpiĦ.,mE*8V51mܾAlLlp䥕.ic5n!+qVp?9 w?fn/D`\LcG^/T֒8XqzxR;W e)]^*_hu5 S ڨ\'5T!.ń- NEqJo\C4my37HҿEE&jUF^ REw2Ƈh G-ok:/ vLXg7u$cWZcƎ{οGU5"d`BR^Nɔ}u auϨS@%}?JM9/2"3UDOyػTG|'.$gxUlO{5] mTAB${ʨZG'aEft*ƌhi7%T>D=Dn&Nf` qo?p5}x@ Bsӷp: ^HX~$D6<ŢC\+ͣ3(mJ`S^+@1:`zס4Ho}!zBPe13ki{D>x@+/I[RoKUkRxCz̜]6,u}go;F7,A\wd1!idY=5i{ȣ]xQ h]ڱK9ZꂞԮ'ߍQjij ջn9L!jN!ܗܞ6_~盟zi LY )FCnu'Aʋվ,^~f7&ŽN ~ \tcq8gIb*bC5kRU_/]w ZF{\JAڵ Edv,JZryTUŲF"vOĜ!ru.vZὶK:9gc{[: ^gd(63+k<׬;BT=k,4.Ky٢EG[IǕ.9yiqp#;~&\ȌT/կ;4VeI*?kRk_YCXOS XNs"q9:ЉJW}a>^GMV$7ԩYJvq,15*Ũ:<3|YEnZ2c9mۍ73_k8qAd)žn6MB E6[M{$BK:-}[aeƽ4/*{Q2"HEO˳@`c 6f#`xt* B'aڼ:X~t]w]^~6xnbѽV\,b[0Q, 'x`ڠ)D {IO}\h͜8 9 ucWeE"Iɥ#S_S`fd^ScղZ ߘ{xX&ď=]|̑,0 wH=R,`(qgOA֕^)  7s> $^|GpIs4@&]I0gIQ b%x340DyUkI_Z7/e_85yj'~>Ưn%1Q䓲K 춢JDk j~_H/tf3Z=yh뗷=m܃2ܐm$^hM{6Fl5N`TQ455- :+US^jېnu:璶P "5 I_um|YTo.jtZYq:nBt=j{# !X|O8]@v-~2+ճѧ` u'޽u lükFɾvE烛ݬ.D~gG'=L9Jqxl]ЕXDr̺oRy yr76\Oނa2UT# R-s^&ղEx#:%b]s7 eO({݂^ZUY$$Vk/5eÂM`B{΋*26:f<m#%2n*0Q,QMgS{#_kK®ȧ4F/cFA!=fM9:He&jlL3#HU]k_bOOn.svA$!8~sX$-Sn\ðzy=i`SSbe2RDp̮u3.E^3k'5ѽ'jX続5fA6ra̬WAirq"n+UEJ VU*@>ro2܇7UA])0w? Ti&k Gc^J3ULiY$kmD\ *5:%!\hԏ\0Gm4*ܲ X&GSt!7ɪ"6,H_0b%53X7YL2ɊZVƛÐjAz, 048e({(Bπ]dh΀j $ y/ΘMgLM=U5XTiS1hƠUO&j+#zũك׈q T2 d-%&4:X1$5A.vR f[v3'-=Q6d/:=YY5&hY|Spw9__9*RDӦ  "W?BtaTj~)i8c+8p,IWBяwIG^}eio-6\2FW3MdgL4u%GpeZ3{DmeMD]|pXc5A7ˎT#Jȱ>n q hG4]N|}6Vyy!)M>2G )opT\FtW1y/ẓ!I^`$q9 >{^f32Ȝ߃ߐ\mx&Ӊ_5pY ++  HLcʾQ&V3}ڧ\2JWuHC1ZLb#s۾Q|yA6z0PpGj.?Qv?Ua;UGzdDFc^k_#7o3%r.z `g*4.Gh!ͯ GW2I¸|L*5٧`S[]i;pb@bƺ2XR@] CNE|R] 4"䍢{`Zw է7虼.f\=y'Vx)\atpsQ0jDV~:[=tD%lYG;$8,刁S1_:Cn1$\zq' c=;d4a14@f&T3Qzxm_1DqrZMضn<р:u >2uA24Ng[}mWARN+$7z.4 !aۭ./)$0Xe̋Neo8@ PuV;~JI[u pQ7WŶM􄌏S1p` F.}O/nc9esw} :=uJ%1Ϲy܄/%)Q\l=Ssz6Z  #.ʷ0a`;Oc2^!rR? ZY>7|*)!ɝlj1 'Fc,o49̸jEBB'$KCp*]g崨Fj~3H$*Mo3X &傿#,ɳ VrŰG<KK<J#wo*RdKU}Me?.f0ؑM#㠊F/ d`4.DCp-77rݫ.{o?Rk3M`WϬcl cĹk5ɦN2Kb$oZ$|heљOam, j=Bؕ'7ة}?3 ΁rn*p~Ęۺx~ȋuͫoZ*yGZ9M'b<;bL;)pV~"+UWRқcQJPrfvO:aG&Z\_ u1yܯ*O! xߨ|N}vXQo\Z'L3֒U6/*A2/1ֻ[ue0"n;LKkg\\fRF>[F=Q餶-ߋ5>bx91 ss;pWƟu+ Xyg1P :c$n '^gg6*eb3 0sIqcY>abE[u+ <ᡭ0&*{B:[֊ߕy lUY,|8|bG_42gbx }- endstream endobj 4782 0 obj << /Length1 1624 /Length2 12121 /Length3 0 /Length 12966 /Filter /FlateDecode >> stream xڭwUT]m- nwwܝ!;Cpfw}h~`d_ANN&΀_$_,?`CdWJc4/c a8Yڙ+z#AWu'eodoo5o hc÷_"mg0CnbOw LAv6S%e\-4?{%N-bc`d1X2-3 1]QH"wLv-a`aedIh`fdQjv@GK;GW.3a&vchߑ3IKHvߚ_?fYn4AuGDbd0rqٙ\,>ǿiXu7rvt0323>|u7q;_3ldg1f% 6qqt7#x h2 J\=8.b}qjA/-lc$[=X6T)\22IY, e, if"NFRj%OCYӰ( FTJ~J>uc,dgUXԤX"ckCjRwg~^C+#V wE'ܹj.[`I gB`:s2r77N$yHy>}az1XR&UIŔn\Lܥz^C˗m-k)Df>/VW xzwLx~XK &1yוϳ&`L4ղMgw;H/|o:uՎ]m79Ԓ#(v9>[֧\,S-dNIu3c`A1v\'@{(+HkIRDv/8AX栬ʳqle% 24d(54q BNdmxQ 8ݝ'0jL?`X&Z_\ }|"Hf A1$K[^'T܌lgSEKRXDΚyg[$;#l,A]!L_Rj ?}S1D-[…P,VD!aԍLggu_0*e`x&i|P,+: E ]`5U}k\)QFI і=KY9zp{IjR>Uu4P=qX@yzF㙋֑{f- O4#dk7BaW1;|@ӧȓ< ,qZCp|&Щ0|`|*[jlSS(攴Ȗ!k&wA(Jp;W^qJ-8XiU &hi5Yѣ?/hÀ/f` $cHʖ|nUzmDg0D웢cg DwRuz}xA:GT6g[ Sܐ*wFu/Z.JYR{3jiTQIpgJK\s%ZJ;;?їh}M,wG6& |TiҒ؆RwTF iݪI15+M)b:UGҋ6^MG;n~_z=8k1/%d: ]O0I*!5f }&__n֩a;/R* fK07>o~/9_Ct&z{Ñ]`S7y+ԚHXVBڟi25a|MOp?MNŽY3# f MCSFs5k|`$q#chBtwma"5.9CWaᮋa6B>Qΐ\k~IVGHI0 A8}Ã-<~V 􌝷~⵿/Rid5 a. FXUФ;J jT>#Mf$%j(Rpg,:<6$tf7-kL Xj_+&ZϜ'%,a@TALnDZﱡZ?~h^!osB=<_H"(lBS6$941%plX#IS.^\)dVR\kԃIsn?i\4hY6aǐq.G)U9cNoq˯g݀ Z徥xt":e9zD#̨0n"G"943Gn#D|F;9%hɪY5-r|I_H${6pe<&Mʔ}48a9(w7t/.pv4A̡wdRDد,r]/LTQGGX_V[~\OlMVeu \|p&Cړ.pD$vjдg BGV̷~=a1Pf&;oqUl"5xK=}ύ:J?i~ 'J鮨Po̶>蝊r'. q-[Sa !(z7^?VH!).iª9M q)qd3χ~BRK;[eQ?K)DzO=zg'QA [45z ޼h?.676*8 *n]Jdoˈi_d|Gԃ[?SL¤ڳavʋ+ă ':aO! \ h9qˉޫ`]^X0PGM0o7l}JtA.h^ R _oݰIOذʃʨ6H# >e $Ss8 CIr?̘`.MgylIx{|,RB N,M ~~mm}lwU9 1m}t|י7{KDNp0ln:L hܜKʇ˭}'+W:X7!'Jj=lP.2pE݋MWųjR@P*H$H0rPk2t ]t>2vW EzǸEL_O\)UiM-KZ?j腼WWtXᰫկ RMo,B cn2z~A, עc{U(?O!D gVaa؆o/ 7po)vUP|bGgT.P x&OJdSx$ܔ;c<+K 8ڈ`R}w Eb0 LRQ8#-ep>Vߞt B5.9ʺG״hdO1Jh=2&w@US"oɟ4Dfocӎ)حh Ə^/ҝl^͒"G1o(JJZ$OՑxU\F ^AKq|&| TZq 8J/@XfHΤSF&Sƥ  8PFW+⓽>S7~RYK+RNj>H Jmrz-@,{06&NU(U1MhX~\PdHg'Zf凂YqT6dڜ -!ˏc[fQML6+[טXB%=Ȅ Mz'w^f)7x lJI&RۭHƃ΅u&5Rq%;Z^^j^_U!c䘃JbprR <42$J5m^p*IA(ɸiB;j ?QFRI4gC(RP>L|$WŅxv飷J\c!]^Cи.{^1Gʢ5}ɾޑJq僺h .!xEM}^?ß`Uw2tƶܒ8'iL>|L:XАﻘ໿O4ٗ:cRe;یs(C_i(ЊlMߎw؉X42}oԣ/P#@r|a Q|dHxg1մʂu7֒Aт(*벇ЧT^,=.!%;a~0cBОE' _3|=wGOJB|[|H7޴ޱE'Q]׹_'Ӫ>;%Y Vf{ӒB{녓;kޝ gՍx0}G~lse{D_",74qjLUKp;f[B8Wa G1o%NTjqT 3X9.-a a;4[rE]Z,茌qwzdq#*iAڷW3 _O~-}hPC(e>71trw/+Au9|` casv %(,b>!f x!sA{8b*pD}X}?^E;LA mzjADɻ/:8'ḥTcB|?[V6?.m\ 4.`R`Q?!WtF[:k'!-9Eba̴B` h_ u)`gV./a }g9AKڔO H 醍Wݭ-oXS,t:lYZE,> GEKbn%Kb_Uuba3(+kF3o_!M1< G.;\wNjn <WUh \b-eYw .Z!B"I÷/fop-^PWUeG<?Mp̖!]P҅qprEHR=u|]7?w] '?~C+eZ=&\rݛX'Ztz'ewS+i;&S[: ^iH5QLZ`8jfcNT. wI594fOy,Yo%F@㯄>%]|o`0$UZ :MS9"뷗'"zgn1EF-nnx8qy!1L%-4aVlNNӴ90q t<e>&P3گfz.h&S2:"$ҭ5܁aV%M;?r--9EOf {x = jHT#{W)")Y5?¯1nҐmk` bCt|2kʎF0DcBLX en&EPuan.M|w`E:/J"},I: Q0,SưM:5u Π;BY<ʓbDl/a;Xr/}ׇm3~|F8$ZC^=?Ud}9|rO%g6<'} <)xB:(<5@|ݜHRqFAk-CY:n=}c%%SIՂV7&n P6)5mNGc!l)kr<@hv)#U㰹Б;mq~`WVO,6,0j,!XEL n{p&my5} F =YM閕(m"B5^49]N+ox`4#n?!MDZ1Ale/۔SsG?%/C"<4dUmiUuc@ֹ3M% (#IK{g-o7KU". 6̬Ń?F*?riXZGdveQ0t \vJ,%MliE@S=IBԪ xl.V{-O 5(ef:"6#XɈwU1 "_I Nj==)NI5·_G8_soRڵ@#p'M&D}ZZ ,MRE4Vñmh03>,WCrA:1>LaߢOgv~SU>/ OdˆBIpz .[ *(]PHrGX~e~#8aeO8Grü R}P.+-Wi-1tFHT(%eFxP1mI"hK 3P S0{zmN:j t&<߷r}~=>X\Fj^\zo;L7v?e/BFCէg=Fasj]˱'*C҈+̀):&/w`{q[yPj,%5_vjn=uDZ.<6C7Yl?/ ,:j'`ЫH 4Ɖ5YIOdVGa2'ۏZRy m--1\Jw&yy.B6d*,떠Ե`\7$ \j:2щ:?b{j7а1{3%( c ySL31gRI:L"B7k LAòƯTsަ)N-677ȽE@t`޺GKz?k߶ȚM0*(b$oFeghRŎ=|ѯ5]/ICE`5Ѡ }͵߀SOmH>;MWu!Kr0~'T QU`@ <)0pr= J!j0ͤf Zɭ&"dG*UeК ;-)9I1hCGޙDqC6\~ޞ}Q%1F楌af_wZyǶZm_!A1"op 4CxmC]-ӥ~*D Psp3t1 /]]T))% ^cm[;wsPɅ80`=Ce&bI~ʸS䫡bŨ'`g8 9}'"E MB=8fo1;uwcs[šz-MkGMX2#\`8wJVPO-)_#Ʃ:SL1E?||)BY=l?e{+M{ST;Q6eu&}Rd_{S"';۫0]z*zWB؄X -;=iqSu`ۯFE^ kP/4{6T0{bC &qbB#t b"MHDD;nJ p?P wC ^2P"UH CK9? 4լct? ^ el-+5ƀӜNETĨ)(u' |q5xLo[I|qW<4sfq2E W0֕5v[-5*g6xc,Xn<! d*@`Ty׉ -~h7y-MQ~Cf|S1;>M<8ߐMƯML,0^vP ؊\o\eQycN%.z~djW %|臕hkDrXB2%Ѿ=( 6d ';Cr~.!OXnߍxcσ}Twܾ҆MH: YGÉ%!/mn:%3*<,\%Δb؆7{ڼsB'mBC>)3+g3&טOpe iixPGY1$QYDM7NbYPFJ]Pl~{4muYij0]*r-tmkG,7c7 /r^x`eM;U8P쓚?s463=[[IIj2A[WW.bNZGt@mj=b+ y3ts(m3wgl jSe0R_k2Sъvg~jPF։0W42>#^jʳ(ߪVy. 7Ƒ~PHʬH'`Sz.>rB4fįr|< i>d#s}Aj̀A$}sl҉Kli`WN ңH} ]^"Jz堤nL(sIIEk=%;]ONsHR-6EɉPu=, ՈղyGN@XmkLZ*I~MX3KTjpMӿHFA,De"wi21xb,;xz}].w 2p?/(thASP{E=Jx6'^7X\:w%[:D14+X[ql3zIn$XWo4e~W)1h`H_KjH$+ǽebIY42aSS\.}VN=`Əj38#CcnPl8==;\M"eofo'|vWYo86%7WU!Yg9jwѶ/ltWjiM&Brnu;ٿ#B1 ~9Esx{:=$\E؜jS}> stream xڬsto&v*tl۪ضNv:;ӱmI'ӿ3ggQk=Ƶq{?U(HT9%]Xy Vv&n.r *@ 7_!3^ ĀVV @@ICGGL&^beaupڻvT@- - TPHƶ%7[+S)H0wp0u74ƿX\G_7)=lg`p6wW? ;+!Ggvu\\]L]*I;OWKcbXUZ9Sҿtaj]]@ObfV.^cstWn.V=half tq gzcGG[y;`5gcaol +{8Eo܁j?3C7 c3{[/IoHˌ}$7PB oWKz+09?;cnlgep'#j-o'L`nlSۛmW3 ,EfiejcO9ڛԙĤtN_]ռ&?Kw0_0DD<> o +o@nCYdf??y/0f̊_ԦnY׍[5@'nu/:=+õ;oxRL|8̱Q0ơ' =r6ikρ h/-UO*u0ɠ1\3zAnBYpwRYt33M {a #iZwN&sʤ'ᡞ[Ⱦ||)g$ɮ^Fo\|!(Um~Cߚ} GsXPd*a/I4L71N a`)8hvZ1M aZ-87=?9_(lv>;agM lƎؗ.VylK%˲Z 8i_Om|XC$-X3cɪSV޽DQ+}( ɲpS6Q˴: >R#'n=.ւ)h"H^J+~J“r+PL>D iWUbu<V~ֱ")ܝ/`5 9"GjjMW BcSqd$KPot~=m"G&N&@IyqӢ)Crї(WR?3j)9{6FK-RfH7KjkNiU(%^!|D-5o;(G$PW(Qu]ޜ,D)\3go I7+= M@I asTG-w/QvNSM-i齵/Ba"!/Iq>E#e%.=e\%O)H^"WZBTIA査Կ!Y v-2ǯ&bK47[aLJXmߎ Bɫoq.%$h&<øJ0Yy`ɹ*"C3 %dZC')I(q|0ADEnrp'Z0M\*@%B[kL_ 4?W+-$O\ĥ$Kg"#@m";&P<_,QRCa*[F)jܹ=K6AX:9~jpm)~RX}+yA `=*\-zy>+h٦Tc'f'SHWz`Ĥ2!]`c`x~6FKہv^-IZ!Za ,-->|µ] ?d"On)bS#5>wmCv^€gLA%TəYOHŋݺ| hj<Ġ'uDQ)r۱d6pW'6Q~&oSxS"8f$13t`b()qr6l%X>(0NsћuW~¨/#p2O Vv&; ǩ}cHط'H_mp:mi6*K ,"u e w48; 5^ 00;OS~ĘrQP3&ĞTJ'#°Nkg(X!!jh#B"IKF󰭰|rg<BP~Qyb+ac6o+(-jjւ1 |h_*yBm[8+e5M:]QNmeS F{u?yjCZ0DG qT=aF;:,@u&CeCQl5lg6YTVUu$-E)PЂWSiS.  ҒqE22NJ #5ꁆ<|ƫ*Nw<ыmY%u՞Y.M.*9g5*zxFs+5xB$קtK: 6R=6Ŏ:t|2 O.,s1vPȗd/'4`)qg$ӽ,ZD[qݢ3=kkaW߿_}Z7 :~{@vl~hq\uFZ2#G4\zoc^wb'=lvJ<`nu3j#Z*uRXZWyXA٬6 Ŀ$ P-P!ϽHx1s&$ h&E鼔&,P5I&hdy(;"p,)'3-:MV>PY ~Y M ǵjV6G*.kfȮ%k_[-G_bay]?_þLJJݍ֌雞GTd,`m_vj1Ag(4.|+qxvu('d*XtP@p+{ACR,bz)jm"c/`蓉*͞.FбCt5'DZר0.lhҌA60dl)\"LRH UƐv>tJi(Dg,@aI*X&K>ZL%- i1M\ ڥkvEl"=¹l_w(ƀ@OtWZ0.Q!e 9M`8f2czi]eWH9޶S3nZ V#c z;/1NSUE+ZjH8]dDRMow_yegY8<%g6Bh6?Pd?pLK,&.N+ij[Vxdb#D|4.}z<x Jn|yMްgǐ}^.:o"||GlBG V> Av?M@nKŌ"vRʯvQCG;1̚Fn;. BU 4rr~$J/jYRz]<Z>2s-e)#+ =PL ?y f/?e^/h.`hiFD?(`b-^}w NWݖRLVGCJunx"#[sܗrp|=r SU)fΈ}3IǸ|1]}CJUgKo0iPBY'Ȏ1ށ\v@C.QY~R:+cK_ p,^qgjNDKJ6jXTdזz*ҨɊ\uxs6a4H zB7ᖔUk0 N~(ףl?,о+`!*nF&#^f./0m@?6y p9rm!`I!Tc%4cVU"׺کF]Qt䃦 ɜni`rRLaR#68B `s?lc̽v0@d E,S5{ 'Q~gU&C=N8pM>[ h7褠H8o+ZDVnAI'|SUleBj tDsetw/i,욗cI#Ӊp+_y>lL^V2!C_UQa& mz.UWRd a> SAス_qO[RΓ5GN݁mydBp~PiҢ O6O$7J_09$Gg#d&C?b8:J Og`v]ћGy5\`J#8!{Œ %f[SO/ޛ0ў3N+*O]S=`W}df V3呤֞i1!c \zLPky@|^os+$wqR0&NVǶuvɦvMjVR[>aAuR~W@_Q?ToN؇tH# Aa$v'D̓󠇧4hʏM635PJ$f9SLGPOf:- i8Ҥv×5kǢRlZ;P`\=cA?佚$ajg[#e{lj+Ai^҈9K#D],hUZiVVnγ1+ud)oĻQ)*$knfb¸Kd;s^c#vzPwZ1 3jm? X룼P-sd "Mk z~Ttxw <+IG[yMRhgA&{m=7tN1'x߇HҹOLM3^XR7F-=Sl)\8VGԻen?`K?Ndھk_t"ĿY$\'8مu!LDVD+~,uy'@+  T}N+.&[F|8DcFJ a~YB^JXݷ-(v<%@KS~]NL)=錚jٖ6g[infI=u ZWRMYf93v#tcRw;Us~E:BxtaJf:kLOX*sp°ưjPD4$T.uӶ)f"$綊EaqCA1[\I (}8fa{s^7%"L1r]iI.7I }PXcO|yWĵSȚvžL{x?n |pc)37*8,`وah]G D#".'ACMfӐlJi_zT&p.nZ+]w}kNzݡcaa-=o\^\C[s7f4 غ $"lz`)<3ٷV70aU_H^ßn3yYϭQol_ [ IalZm$=]~eeW5ސ<1$Ntj-SpdJGBAi!{-Y%`s YN+=w;c={^R "CpΑt^AڭWC<f]7+Oզ*H:aYѵ kݳr9 !cZQblpv^;ЛJ]nxeŁ ۲=dKOB, c䁢:6kmSQcgu\aVT@aԷ$5?|Q? .4}Q'c=}*lSq5'&2"hE$u1n\:ڑi}]+K+!FayB>jcxT6Q9湥" ⩘D8m"٧W)Ee(iG`zJy、oqTU-opҷ$^d4Gcm,6RlEw]+;Y;#+-[gy3 I*zjQVPu5X`'Yt>԰W^>kM_jH]]xZH}޲?CrY4&=kN0FxH{K3 we wtLvgo OkΈh:|f'}/9G~edKUX{e=<!N̬nmυVIֳ?>;D;n i=,޹jDg_Rlr ӡD3h}}^gKx"]-1xVv[NɗQ4 ZK{@ҭFUu_>pn>hRQL,Y`쫵~WlnCpv6 g&ˤL5_drsOJ/A!t,q3jљFr${j3L ut]08*T@}!zjT "^E+ak4ˢX$QflyxaIНñJ(0zAdWWJ.,A-R]-iV8 3]:zF;v1 _]#΄jF4X2E! 7CO!{՝wG~gئ}F>@ 4c%>o;/: ,N'dkB,J4؆n&ni\H xkiej95lcVczsq[H]tqDjJA 0xO`n2BO1eʌ&;MҚ9U\gxN5.x6vm{ĦC;RmN٫&x5 3}2qg?qg0&Dc?^*GF#sܒ 36!('M4fm$?K"4D=9[K{KO toth爀WgeYiN2^kk ioʂ!ŎKWʼn  b3%D,zXE&Wd#kQ3Y\!lpɴzI>ti!l1H뢑66Ov4n(;pv{I…+c '7{$uy s^[Nf{ztAH|P|Ȇ*^-9Q'zkWTrw8fFe`qAc;tjr504L֎7 E5U{FzFEA̫r9G] .$b/pb Nm{g+, q 92v!uPpE/|qYUMp&ӝUj,ăZ1>+E-E\s].Y}HE45[Ì3On>s:bOǴkyCcCp5tN]byrm>f~}k|I'"kcIkUmO& x4u%NN꭯2}2RsӾ{RhDwV'_S|_{D i!GI^;q:1] "|*}, <\ G-g564p2Pv1)ḯ]Q^ c7åz*YDS6d[v2K_|,Զh>Fߙ?;!3R?fFrTHwiZInE,=μZX @(M.K 1'5~IҮ}cO%D/ٞAmxՓ2\tlIc<7zk7geb"`WM_]-.1P m.LM{1-kN@'nU T1\p 8+7.[A< I*}[z ,2c/ l{FL踳TU1zJcy<%/Hc.P?b ߗ޷(b~#\1(/`;Bs̘:#m4G#b'L`a~"PPΜz-qRDǦTŃQ#\l: k}d_aQieg7PR^ȵUUؚJМ7:N!c6e Kep/:H3Z7!BY=.t˵g땬 njmpγ]T\t׷XJeVb9%EsXuVG;T uKe_S, z=~設}}="JI{_JÚ W ;xi?tՇk8B̈-Qg }/4eg5LfU$KedU嶂j";7}xcb 0Yp.09mqɫ)c%+DT¶ apH끒uwG:j=Gk:5P9)<%:=|0նSIHWnXϿ*{T'8Gq 7[ ,HJ $;18넥}~=J1"3/Fݸ.7E-,:Q1$\S$}ן}&| ـfu6OqlYޟo!+T0>k#nm5]JS[- wm辀}?(SBak6*8b]?3w32&ub? YkO$EiEDb@QEO%uo(WqH+6wsP?]RO\#;`T@4}b"a?vgژ ."b;)V{c=6W0;״X7z<`)< "~3CJnmiv!^V؞瞮RRj(m `nԲJqUmXx@ χ\:Y؝1CD:+J(+gBڵm$"v&Ffr + ^O^@89mtDMbpgqC-cgY%lA>m@ۄS@V5vc$"~a}'9FेlUf`p97̿80N <2&bcId~9o$Bu+@)82VDvNo*բϯI,ƚYӢ> DhV:  -Jw-#jYaY6Ɂvmp&O!f,4.o.fƒA= /$DL3U vd H1ֹP ^@.85F>Ls +,Ne䮴:NrK==;G;ʸU5[P'MR#t j%xɱ%~l-.=YhJY%^޻ sjSņ(omo}MG'{W4}G-'P||rhxૣ3k̋UYLF<lƥ%PgW=)He`(` 5cG]H e1 b$g x Tfm\Q$k5-*a?5!!bt`ٶ&Mc\bxhfOlwϏޞ`݀{>'^efg,+k80l)>4!6Aح \:Jȱۋ1K.nJ)w[:Ntb~8CIs+ܐu*]N-ަ-o헠~2э1̂ QJ x;i?fV`xj,rt}oW^HKw=D)U$TbU-] ȓM,$EdK[|6U0xļ[LD\?]f[Zem]bIWT5ڄT5": ()SlCC T$4ХpK2,1XO񧆴T'|jZ9 Y>VuY4]V#pS/e B؟ ܋7PqKi. s60 "]#PzKA L*>WPJ9,Nr(76P~i݈%DCg3EJ KQb+:x^QkhFe"P D!}H[8TB䚾NfHW) 5R˜5 S髉6 wQ4Dp~ұe57dx]_J4'Vܶ_6j{kbx6^>@  !5#'T칅E9Q5Z9-FqOy(cE2OXǮgMcO`gb2܋O=˺+{+#dTۯO]f\#Gh) WekTl6. y+#ՑveyuT;@fQ8who r2n^8%vV>67R;^`}a"4McW񃤾xK] Nݯd?OOqazfW$5ľe&97@5GCԇl W6 <Z-هT"֑n2$ƧpWy F0 At xҕ2y8h_tg2F8O|jkc٭_4@P%b~S֒--(SR،qMV(Ua)Z2߹HЋCi VŒViUF $d4c}Ld M*nM+cd5Kv5@7dF¦RAx$fu\Q k_;#H du au {iAf~hA*QMp?&$Fn} N$x?mƱP4?\y<bPA!#wu4NCd10U^ﰰuD~4pwF"y[Ёhy{cq,3 [=-q}J bFF >~k\D?lGݥ):5ddoPY{xTQ_zPU+&ZY3TxDa;#Kto늭7t5S%V&Hb;/s5\D۬Lt lG+Ο.X s֋yx ğ,9D@T6 Rsa bu[|O\AzwrXF41/¨kBn<|W %n#(X.C)v;bSgJ@yv2wZ*vGSۢh&w;v[8aLQC0'o adkǪ-{ʶժ8Ʃj QFS 츂η4pIΙ=m:gl:H|X͔JI5GNӌ?i&Aob]c\_A6X\9{&]fR])ɹE grUlȲ=z:ffeF-ֱY^VѾ/_D "4  u)XCr#ye"͍B&ׁELU]pUx5B w^Mbb!2vm{](;4k$k՞%}h399GBiy>*nC~ w׬Q$[$hW]/7TևvIE3Vq̩˽˧hN$)5enVЗ9rɦ%%No%hS*1ĹW-O.nJC>bctşSPv߭ |N`G?m= We,(J6|KC\} r#]rc?+ ͕Vj`Hg{ȯ>+IS袧gxI-]'eVy cЉM։wt2W%o7(n *LćjɿRU ;o5Sc?RhnܠB{VH_U#F92ߠUlwS*o{HO=3I"tzSi:,tU/ɽ2ɤp"e so⊪V za$$(KE%|땆 7|ڡ#,35PXBյƓ*{$u>V֤EHeUu>JJJLJBw84Z[юvd&cuF0u$K1L endstream endobj 4786 0 obj << /Length1 1630 /Length2 13279 /Length3 0 /Length 14127 /Filter /FlateDecode >> stream xڭvcteu Nl۶mĶmURmvRz۷oqϚkͅ36 1P΅ oik,go'K 4wU0ؾ8\,D\ )@h`f0qqq}!;x:Y[(Ք5hhhe`OOσh\,3K @DAQKJ^@)!lZ1Z휁T3{'?{;S˿Zs% 08;M,=LAg3 \v&6nfwAN{#Ͽ,]6f_4q _"egf`b៘Q3T02;0ۻI L''5//}wjqWy#? K疱gl5/ wG ?\ E0tL0[:[zM-]L,fF6f]dcico_"ڙ{xm%e1IYS&z:FC? {ؙt,V'o\,=:L?o4bv&meO_~4kzM7 JR3<)>PҠZPmUaVB8t~ M}8ڋiCѓ KB՗IAsȠ_\#jQvBQpwRIY  *-?$>\nWQഞ[l "/YhPREA٣-h!$PmN#~S3rF`\zUŹ6pnNƏn 4KU]7&N@܍XְO7"4(]Qғg 6"WBSp?^7ʏő^: i458&&WwJutlNku:Fȁ^HK_.2=n-/` X E~`*p~evg_d~6z1oen G)rau <;"*9NO=h@EP⒯J8Ѱsm9}L9nL9[qPOV[keWߊB.[ *|j:lg+VgpILR6V^1Z C)}F<_O TDEn(,LJ5+ (5I^Vn֓& 9G-!H|)!'M |Njc6ۊi ^`xzɍh|ˆob`,yr ]Տr['KoAXݚO@ZGFt "VmT2yC^&X 9WGc*x[h">IB K>rڃ  44q%~;ҏ`aIIZSu*N`P2-7YчmhIݰnw,a(W0xs9r\Šf2ݢʂ~jPcS [4Xn*B),8JC"u}]$?C3`@\J:3gJ:ir0R;BA Ui|JA"ƅpL䆤*kj/l#09BS+xGm (w e/JΉ7`G2 sc^7lkh,rIn\A?A?={iw & cWùD'L+'<`[Txփe^GeP7ɫ[ߑqlMB<>A?a@慬v'-)Hc4(- U.Ocqh;M% :HD0.aXwu|]fI`tOdv`9l,|JSkA>MM?dcQjб$X.#9BCLeʋJZJ#v[ipgl`|8YDxCF$LHCv*X]#L&)dw N3pTS+/)b[ic|Y ۾yH⛨^X)Q_(67t}@gפ)C5aBTNxPtS => O~ xhE 1ǁVCJl@o@2j9/YND,'!j?bW-^2Y=/ا@ϕ~VU؆6430z]])F PUG]}+.e_╬û3zFer" X˕Y CV]ۛ߄ .ls/u=uuNv#E,L7||$*zHGMF/o dzg>41tMnTȧrCC # I9и2%M_ d7l Iw';I.욻>mm1/x_awPEF˞J'4Q +;L4iP/: ߆$#C_bJvretkiB`#PXU=@n=n(#J+dzZVy0tǗ=nŤ-2j"4.$=5>oҺ1@%`>iJ@TU=]G"fų]tnۨI4>ֵ]crB)>2VfILz)9o'z|H^2'vn5tmK,$ 5g;`M,e=o3u2=׏^!0 ;k|ReUhors@a"FL(TMS@EV ͌ DdO5d_.5{]6 ̡@E1)ՅXffy) /g20@/GlWyWKlkXԠFa>ʃf+Cy>oӐ GГO%k; v`zE',B[O!٨wOo{&"Uebz2:IʟN\\(AID+"iOM : v ݧWmT(R^cuF${~>Lv{%l>޻>KxKzIysNC}B4Gk54h{'Њn0Ղ lqe7= Q+ ʲfGFW|._M4 g ճ:MivJD B~`7i;szZ$^#>aS6K;wD0#t焆9i# / `Iun0' YZ{v*t=Uu#1Hџ_or>|C"̺J#^,sֆ7~'pO!;Q8Q%BUX-FHl~"wwƪ{D@̒EY_δ_$67BQ5'tJ+md7"Kb5f ex 8-97 #^ؙqpݠeAGS0S|~r5DLR]OZ:1&:ab 3r8۱}%[y|sNczp$krc`0aNȯ$jYP0>b-RJ οh$N7 E4]3/.|KOFmVgϺ@hMַ_;ugIFگ)fi, P̿ep`n÷* Z]Vv$~V,eR-g(@pht.@PI,B;F։1P{Pz1Vt]bZ;^R(N-]Nx( 4B.ɝ~[{S$>w΁[@tR0+2V<seX{Tx/i/kf7{ Lr o{CDs;Q (Spd*FB+-EVh+}ve#YlsL#w`JLz\D BY}.>|`8j.d ]U7wSV(]geK{,j(wzZy\|;oB5Pל=rh'rO+[6AU_+ H\yyabH4y0h~Յ@foFQXH崡!ؾ]!r\ gzƩ;@B$waQV͉DQd%A 3ץf־Q4}<<_W1:X{>2P:8#rqA먟E2 v)4Xf6(nM^q0E|Tç]?PYhq9#&-k;C<=Cs=6)hO +SKZL{ pSӰ!k le{̵Pw YɕJȴɴ,|+=D%TJMWPWPK%QPZ_;GrKS夷%ښ 8@r tGI㢐S?CFUGv0 0DIRݕ4?,ز,eݷu&;c,`ew 3OGUO ƬL0|=(~>.UoZ6Z3I wJgfzu Aݚt|Ɨd.Dg8>E"垅+@zJ=b$hM W a+p{)mF~l # PcI͒H[+$5-#Fz7?rJ,{~ZU8ϑ-ak;ӊ!MTɝ(SkzӮ!"0ϯ_%z‰Myw 8ӥ@r-0]1Y4,@<܏l=Ƶ3]%_HĻJ;pV~'޵!p)\XV13m&vA"8 UݏۢۜMx[#u˘`(,Z5HAX枀]1&fq7JCV*H.j ~Vj: QtH[<:HӰm€`LiDLϪݟg+RL,':ytoTJxC+kћ-?r|W ۽nfX#ge*5h%*&y'A6~CW=ކbf~& (79#=1>5v!^^$d#^)=-h¿8oI:-hJj+d@l(Ҝd|{9VN44a2CZB_>bɳW2,PA[jI}XY=l{)KAk7BBS{,mT=4(8Gxmf@ڽ\ln8| 忠Lԭec贎&j4rnS#0$yCycngiObTg$7T~,+:&$Q(iX=0P cC>~>+0h#M8=*c>/&6>!#i%HNUkYq-ti [t#㌯4Q|(y"kխUl T]ƑTZQO\ 2QPao.Lݥ4g} hA!.ɧ/~z̴퓜kP]p+rhyK?ւvvݲ7@ P'QުP\Dr;ʍ%De9Յڛ zH:CI?G뚥|$2`76b BxβI6" ݰ^LTR46(ؠQ˧%8jO-ƵrVYqؾ2y4YurtPb&Ĵ]d쳳BlǮ4g/$qp# i'=ɋ:Z \ ف7_$Q1ѭOf4)wMבSNP@,h6qKrpTK>ve(Tcϧ53`$iɄ4M".#^t;hFż@&FԓDj }W},s>ğ1v? sF%@8<^^$HHȼ6_Kx^w\zR I܃Ez(]Da Sr?84YdBi `^c@0؆F+ʿD.p۔Y3n"rYk'ヘ&`'jjSEnG=SB|˙Yퟟ CaÛ*}>ՑhDIf ]>H=Yh86[xʂ%Kd14ݗV8I aX~ڙ{R1ƔBh8TQM_Hue^ô,7GU Fh4l[yȞ>I)Bke9 qÔ6ұցw"$1tBxp{^Gш2r)`LJoҏW 0D.ok0zGv! UrENއ9)mO\l5S7Пg2f;q (%dhx]as>ʛI`?%Y``˴^s.sXun\^AU̖1콓BO DDʲVj7$/2AƇ0P8]b*g/Td; sJ xnُ@P[a!Qb:DtO=9)q;I'J z*XI }3oeQ(g. C fS͠c=VD`dO V)e`YFʒ}Fx2ʄmO#bǨA @qm65$M C$k">ncxdc:TZKޫ$x-ЬM{}bfE#" W}UgR{w^,5Q~4Ȏ*now zZ{.Gt&ӹ36uǔvytBFC3e0KڝΣ><`&,ܑQ^5u儽#MŽ3se ;qBi:%nDG:q4/ͨ6'ѭi|a'gHDB"1 E/zr.J?B>`eWԇOdڔa%Z6|.PzG !2êO3BŦD&W1}TkpSj7T$um3o/=SJPn\NJmVx>yP‰խ߂Eе2?jN2d9snN;?%i߉SwG*18Apϯ.N:;as`k(o ϣdS7򛤡`Ø >I~D‡}UsZ'P,RD>]{,2;ޠf-}W<# l,7i_38Wb%?A 'yM9WutW:g{]Uuߚ'TYQZBt.boO!~ڎ:?uz^\urt[V J d{#EmE:)ZG,@)+¯~^fAc홅V IMy#)d$uC-Mag*!h'DRV.5⃣1l|$R߻ҭ*q`{l FRԦU"'ʇFE.sԆ4)mӹ$ӧ_;VgXѐcof]N.`g_TJӾQaCltJI_,E!ocAvO fpuI_*N` HT\R&C憫[H2r-AsPo@*v=g6.o ~R giɵ{adrYڃ:4v*ww=N:qMq.XmZrl';Wl>}'WY"nL֛2JՃ }W !fDZ mPƋlΰh{Aɍn Bhx7tpgnF6KT8ԧjdE3?eIiJ§9Ԛ o[ oٶu 1Z: zI[%4)PW=N؜bEC3ieCԱ靾a0x㏘ ˙Wfc޳i' yb><@?܆%H~IUb&$pT[l ""XGJ^'̦RGE3ǜ#8l=%[d?a=DEN37 E18 . )٭OCvLIWI9EkVhu*]CRJDD;ZNiZu99wr8W*:O*f&_EdhB?5RV ĨP~ODX`2,]A[=L~(9NI㎞a6QcKR}nFFO肷*goHjtma4m Mtzt93vhBX׃3yUxVMp _Ro>ݢXи`= nUIcX{xIp =Fac.kEKdA޿r;^bz掟D`:W`7 j(8ߣ~-G1AI;>Ё]oc$3lߚq" wޤQ{7On@!5%fɓ S?Baa?fG,Hq 'Pg*1j$?ޛeDLn—rLY f>I1)Jk(K(m&rqoS8Bi$5Jy"h3'>5ZJP=ez izcDn6}2kfݘN6#5/@=si3< `P.G"$$' !`QͭNXtB#9"u]~ )Ea[2- B>Ii;VED"lJCkiv]8zBsi"&zɍDqm B1}`U|!ftm"ZF܄A&.Ds1r\yi8A^?tIڜ?6Ͳ4 t[yUMDbM_82)) a|qO/Kbŧ[ukBn10 ?`q(|j#Z_9.Jwero0$ߙ L͂Ue!MffyĂ{k0p䏜2[ ax϶?G. endstream endobj 4788 0 obj << /Length1 1608 /Length2 12338 /Length3 0 /Length 13167 /Filter /FlateDecode >> stream xڭtUTݒ-.5ظ;]`A{>=ZfլUdJ"@[c#+ @lmjd#(jk9))@FN`[q#'@LllV^^^DJ @IKOO_!ct\@Vv wEUd@1E%mi):@ dr0(9r`#`j`bkU#;#h2_r1@`G``d'[w߄l#}`JN&`;'{V%qt27r+# 5}ښ8U߾wwrs+1;Y~sMlcO  WwY'Uodggmۿdeʄ=A1tO 53$6V Y=%2ӿO-W#tR0~,q1_5@M?O NFm1{F$ T;L{]rۀ޵FVN񩙃M,mj:. _7ofUe1 ݦG)nN?ꐷ/ QQ[7'#+7;x9x|,ovw/06&D>Zem߯<= ׂ iN5xC}=PCvjy~Uݾay ^[^vdvGzpAgykT(iǚsr:\,*Eϰi(\?١t7@`S%Q v_g P~6I:"Ktr7t7yqeL$3ez zWH~7e9}CqXMA m&WUQcnD3#J"NX{p4W`,eV[;3 Vs^|#xq-KQVױ!ֺLpj8Y?QB%:<'K:+R]C>-Bm9ųH>1Bm:Oso}M^s0+7jQ*L{n5ӽ"64Evrfa15к Hh4,^Cwo9߬#j~p-i aH"e$͚nc`+Obcy?:)vΠ^(l鸻Qɛf‘VRgG|^'6P.;vz+_b*sĨ!l!k o /(0n>b.ي򰴭lqh]3xD:veNB3гbl_%"gmX&{ᢷf;E=ё.xIǼƽšWಸi{=γU5 q}QVM}SߍI\[lzI㵿Ft0+jB@+й<͠/r9 WLX&/o;Sb3b>|Wr֧Wp3b FIwB_3iwf㚘Fm\<z;;ՅY SdQ n~TpF;'cW5\0eڷd )fbŮ9-puD&:^bVԁi_x%n,$%3%<FrC .K7Z\7n9^X6nM!C%5S:)GS$xς4E"{KUۓ X8#jraqIf)E͹ z~ "}C[h+zZh Iee$Ft➹d^SLw^»`\CvN^[RNe+QDL~ķj !X;!+kF/];/zt++YD`mjPJMk/Dh+0&B+72N.WL>!\Z#ڧvX|}菍=S 3v !#fے99HI"v"85MƪDA7\D07v@fz$N{Mɴf/z+sU=hUFF XO9+ݿS""1$/֙PYУ әD4vL}ʑ3&/38ti%F>MȩqtFC xͷsʾN1ha%Пo.eN5) 庥f"7CYQyM]K{l+EC1KE;N2czQwJ):麝`m 7h4M{lJq~+ceMoэHZG+0`T*K"KGUpY"gDw{?v>0tnя=Ã_*VPXȝ`Q >PfQ rJ?uRIhyBpэ=/3ycMa[zʬwhZkR87Z8Xt2 ezH=A d}'Z\ }]Kp(1]579piwGm^uː~YoiⴡȊj߂ $R3s)YXOK/+m۪tp&p('| Q2burnjoWhC {*/?[2ь 0EowՎuľ=n{`fߏm" `rە.*K5Ĕ'>ZtHޣo\Ƥ(2Vyw?$;O~Y ^?eԽG(od_zaD婟 w+ӸdRL7HTI$Q,3𜖤pɐ$֠34[1x>P'ߖtXEe,ft7_3VAС9r$Uv /hh"hP DcnT[ǫ8Î!{Ҽ_W/gT~i YĚY$iqXII?Ns1P9iNK]w-F{f^) ?^.?Ɏ$y% a)Vbk>;uK}2+>/3 M\*|]x3Zӟ^ \\yPX?5U„a*a=QW12~2w-L2#˴0fBt5ZP#\Lߑ8#zZĀVP4J/jF PVQb[KLnQV6Wv|ƁfK5JJ#ҭ.316Ȯ? BlÅ-@N;%& I;/C0?1:%$IF)WJÞ @0t{az'^6曺Q}*=q3rÀH(1xv.fjT1*[&%eq7S\Eb&M <;c8nE*iWf^')Ǥ8taaaiԡ')}VY cOhgj.`*9DCSd:ejcMg  ǎ>2iZh!mC30+PʏӽU.$P?)pD81¡΄^9a~"1߱:cPN-ޚ[4pרZhS/cr},I ļ۾BcDnq1kNfml Q̑ugR4kt{Uy kW \D>όT_zEWK>T!(=6w8K.Ui)]@t0sIk2Gt_.%ؐ#D^O{'xݶ,tZ>O[Td*/y!-5 Y䑼>af>$Hl]Þ{u֊FLJ5^y ~7сEt~Fr|F-D]a}i\ XuUlBOvB?}U8MtWYHF"iԸ@ъ\|RړbD -8Y(t΄:q?,մOGLpƧnx 0)) CM")k!LkeaeAA ](qfz~RTgM}3d+2TtAd7FYӕ-4ΠCs~=I|!ƘLLgWMO ̭{m%wX4)Kb)}B̵fϡ4v"e`[(֝(voηQUS$ >H37$&۝ouwew|an?Xhe',) xrV u™x]}qxA4ND41`>%01} &hW&Clt\O+ B 65ijB?;Z@R1%K|)?eҎ"QEYGтӡ!fU-e_k*|W9]h*,1-Qs $MӵW8$EaH w G~~_V{QUw6'2wZ*[P\aaoqxcQr]x,[yn N<@pP*7iL j.9/6 iwDE!Ϡ0k4dNY7H:ϴ lSt;Uu:JENW j+עI HܚoGYy=?'-o1pa`Qz-8dB%׶ A-2\LD7nQc׭vvB)G>6ЗھeLJV{pw~920Z`_v xp:ֶm3o&bú*tLR6v;㓭 F5tk7(]&֐c0FFsyȘzel(J6qU P"?nkG^r8QS|lp5 lT<63y4nMa,-ZPACeo`oe|Xݫ{(_jstw$ߦ_@< pPϑ% yW0*YTk3y6n^?^w4YJlc0yS\ JڭlS~ 1q| rm9;~I\l[„u'ү\ )%KH@ZsI̙(lŔg肋%+9SJ ެ/mۦWʝ\~ÇgƎfB 0֨$k^ ΋qtx)c=x. J4 e೨y#K i\PB׵іNok Up~0l `W(9Cxv#.zJaXQ{"\YeNxYta?Oe'd7iAﵬ?h?ў85QgwLþŒӠ1(~އT) ^[o 1Si`"֙ -bڟe(ϘSB~Clx=և .bxJT$喃1|B*QU<8T:Qe '!wb @cL4Z1vc%ӓ@ %=ϒx|GG2 H~XMN,@Ô;ސ\xw9e"3btd8=1^Py ". 4ѥe,b܎q߆9lc?RyccD/|twt1͓0*~P9*ykAaim=Q#U@A nrH6 ,?}~J4&j"Lobsès_ {vҀ^ :py-@33E/U %x8uF^8Os$Mf0zevl Adgp/7҂ ;q%H^:|+t*/~==GHml=m}XUrUd cʟ<[yY[To?W[%G@~KL yZɦe; _JWV8T)Ե/,b|Uv/|oxsd[1%~ 3K/]_p;A5,@VXbhoy-Rɗ&v=kB1~YznY߈I^B}S0s{ɸ*@ B*Iz yk)Ra+S,|(E5}4ݙ+bRr&z\mYF~GK3U[ qrɆ8-1lYUˢi*yqϋ@o츩-X';pB8]xU׎ʱ$T? y"ۮiY Q99+j&aXe㙸DBsc ~w(~ ӔlY=wPISXy(QTȈXeߙ?,?ӝ;/Fr˓?XQ^ q6>pw\4(ט?9!Pa 𚤓u^CZ`6xJ-$0:$/T/2 P=t=PEo\5&8}HA$J 词b'^E$wu4l.W"6y# 42`\!NE+UdQ _[!tJ[ WR۬mY:;LiTIm_w [ԇ5`GIa^p!HD!)M9zW@(YIy|841d~̆*Pk^c艜N+;Q54jl"T@%7HqcAig ְl:يvB Gn%Lq3'KXtBgoroef"-jgDPOKP$Oڧ g9@frI;"CbwLJ#5[ y\W ٽ~E\; ?R lOZkuFU>j9vɥSUJz焐sxx>M* qs {==?/_ ̩Q%ek M1 03xUIzA{-,Av'p[ǭa* )]KXƝ|kDЀaql'K?C*^Wp'DP9gk3S!Vau gyFXy V\q9`"iT0Yl|#yНzUCjoPu':*j``U(( sM x OڎAz"杺3$"N^A&ΕzY+qB ^/P>ut ja QPXZ*R@c);tE+9AHG2rEIZ| "[)W] `0# %҅a,ds3{S?=}| #\9|EbWl߻x}QmDXƗ='\Q.!ty}r+3H;}D'C#>our׻ DF-:?5j|g?%٠Һ ]zWՆ!3pi-5^VC&p\a4t/DpM`Ж0^Dt892=ݾ[A'M%61uˡ"@?QjD׼/^HfOқW4ZAH$QX7YUuFD`N:>X evL'&H.Ee_CF9PaU{_mV`Cݨ{a\X&FL}MV[n3QS]H!^ -C1TW2DaWQF# LBjΣldݍUS/93[d?{(D}P82RKUDZw4Fw U $nqXj&D a%ؑR*e=\b!=NY Wq1_jb/A\w 'C.^ a%}buIC`ϟEH+yztŕ_>{t|h,o93-6Anm^y&㘥83k]@뗨N$tT*VeWB:b/ ݖM J]a,둟Vj 4a0:SvVjB`\UqC\Gӵ7Cr)2Yg3U1wtxWSG sA4Xgؖ+w*uc"V!r de.٩_ t7ɂw7b훞PcoCD2Njq;'0pt懯T$LRc&[,"4":0?62ĿR6M&P Ģ&B"d^ܘ"כdsws{BMOdjg.˅C_PL̍.5B&&z؆筮e2t෰D)n#G(G/ `99"|w / M>5_ETd K?k-$u.ysc{'gQ]σ",YNdyx9̧5FyŬ\UN!:*kN whvO2:j+of٣ph QO؁[פ-I@g;`<|"n*#L:ȭda-.'sYDpPۈ.wRc=Vѣx*|xOm,$mmBa`Ʀ 4MҲ{GBȺZȋ§A,fCeUƻJ5j˒ IG2\Ϥcm*6{r!6>a|-=PB|y뿩VV0 \ pvV `YnvzA dE/%-` 1IhqO+nڿ>6 *|_BoǥW]=; S\LǞ)<w}fq_)J9t/*ps6'FZ{ױ3樂hWj]?$0 >dH5 FZ/nÍ!`@m 40s5l 7XeG WOH \]pڴ#^ڂWĹ!Mocm|#Y0w-3 G"ٜoҕFv:dS~c'OP$\<Θf1Jb1 Hb5=(:+?;V,AHR13URp{j])i#h&D{|SF(Y+8lX%7oc2TYf1WN<?S#v}g}~0$.J! ._Y&|V>zVtԊMPjS]dȹ;Xa5=Jh/ᡳMe#,!I:v]Γ-4(ᄘ;A]vSQ]ps=s2hGXuZ;(AKC,nH^oFv18p/FLcѣ9A~ZyʛVLfH뜓>kfՏG@&ZဟO?r2$:@_ y Ĕm=05T r?Qojr @ST!s /}*eqJJ9$<ޝ+!v/i (l罽!i8fv,=To0>N]ѿlJdOp"X}٬ba}ޔwRbyvK]}AwS7Hy9?׌ۉ;QVBc(T< fWFo2`C~r\7J OQP5g&6I% &Ni*b^v|ij:wzj{~ f;;xH|V.}GKr_8#:SiV ["W &yVIiᚤ^`A_շA`4ťU#TIvykoiy'^t%{KsGDQI +ߪ M w,!` ><Ƽz̏_yxYW'dR["ҐG4UԊj4Xŝd#ʼnLdᤎ[nL endstream endobj 4790 0 obj << /Length1 1144 /Length2 8937 /Length3 0 /Length 9708 /Filter /FlateDecode >> stream xuyeX]-V\ $kww@)PܭC@qw(P(-N99wx^떽Oi59mV`8̝ (P@<ܴ-a*Z`;3bdԁ;~&d]8LױZxPH3*p@ ; {P0] =\n";+@ wj鳲sXȁ v0w+ӳ"v}.X [Ky_XݝEm-- \>([:AavNM р[ua6q` wNb=o 0k fvͿhkW}Ag<{֢7T^t<^c%8!p!;Q->GNc^Y1-|L':!Q!#15S 3`?er3_paaA#OM^#'@E1 :XFp9a?jb}r=T7WnZxG:v_;ZndkӦ{}]ovLh4_kRC=͇J潅ImEb'D9)s'O͘P94*(w*E,^+.+U 1=2Th|Zr=xoO:C"`W/ KR q15d=溔Ǎ.kD3΀vL ھ\I\eԼmm"-"8"N/v'0w5^"YAM4C~LcO-V1$Fv>︴G`ͼGsybϙ-B8F)^\m@PICk:oq\QM?ւ:|PBf^~o}j?fH",ؠ+H8K[]\\L}gffHjq>!Le{ :4.2 76k#7O\0Y.L,%,~q[0iH_uŝ*s0BƷM"4pdc nK}F[N'.hrl=P JBX:nvQ E$ܺ6"5/1ZF׭~0sۖ"[γ*VEiY}2‰7-v[9Tԍv_ŝfr 8}!$q$\-'Q˭#[ =*eMܩ:FkK&2VJbrd.п96}@mUf2H[T9mʻ< \JO)Sθ"t(pߏ }yKqrYuV~XkяCetIb* \aܵIہ|McyѶk)懔h)F@A⩤݁]/j<ġ{ZxIqi4gHG1aw!60#m`_Sfe dz/"ɟ+ yf۽k p$LF gA۷|㇚˔ZӪᣇU Ǘg rXfd]{tt"h@M+b#:EDlZ,SKK!k69ׄ _Bf JZ#3*ӹ QdQxѼ?xsqWv ,+4'0UC_\pztg:u3F]yTO²⨚vJ \" [xTigk_%50j i\\ii'1Jba^YbUxvKݮ;M[J - NԓC_[{1M4 ^u*WRs KMhe6 4{NjIHq!mb895g3 E3;i40̰ :1GZ&3Lڧp`;TSiQ-QVwv齑YI\ (Ew ż&AY3Ca};;B|_~o_0y#?o򽚭Nq-5t568R~RٙhLxzfNÁyH`jv\ϔ_yj ,)'D5v "d3@d rJ6EW5;|S3V9]S0X`E۟k@Ϗ2H89~6TM&5'&4LUR27ZX٫9 H.3*UbږqsFia^0+ċnjFfw}tVبm㌲XDXʫ&uex07/sO0Qe,Lm)+)[ZWE@ڹ E7Gଭh4ԣBسH ʰ2y=qUH>=sY<=c}ɱ6D27q8x[*u{+Ғ+o;f[ PW$ru8ҩzD-ͮa^ש[HmHRzo'v0c, P.3&KJNLNJRw⑈#zv#rJ p e}$y&q[6%;l,'jc~!%&L]siG8/SVD: 2TBKv*񔣐@F}d1Jwv^֍z'_@*q1oS PP'4ok8󧒎PP_Xd;ƳYTRFmxWkB FDEirXu 0q!sMS=$UUW=U$wL„xm@CznЉϲWǹ- iЂ+/6aQ;7 =`OVN%5VF,&oLԯ`EG~m|5)( Yx+:kgSqy]n ETiyFN5V,•~Ȝbv8Q(#gw򂇐~7`Cravy0MwAxdjyRClO <Ƌ35 ohv2N(W";:G93X@6B3_fЇ"-UQ'2Tǝ_27&TeAԉ@>MU#L+c=]n($iI]J[W֣OHD<&f< :0p n\FdBF3U25Kz4BV&6UP[?r aҨ8">%[ |_(KD 7D~37̚t]^Poʑ0sP@*-ځyȦ/h0 Ek G_ܾ'GN JEQiwnL.syw֢[EǸ d0OcS跋 &KRq$؟;%XBg%Ÿ+1' u۩7=4ta z1}y?_;aJ~D:m]h8k02=Jmp|Qc,; *kĴJvێ3 khŁfk:ꄻŢ܂ܯJ$H""3d|6E|ʉE *]@A~P ^љ{1ÝOx}vY-2fR ܬ"Њ4ЕwYi#Yo%ϿI;,h-/o!Ɲ↾U}n8,,,~Ma+PP"_${8+[Lrnu}nOVQ"ZNǫ_[~QB1 Ѿ]N˻}y!T~ӄ|G(U:9wTX\svI rc2|֪ qK3 l}INfQaz =HлH '| GS`NaƠ]!h4I~1<d̥Wt)B* 'lNP D-qc+(>6pP8>jG7ibpL;w+i\Hd'99b`"4!Y-&,a02,FoVվ[e'Ԏ~0Ŭ$C# Vxu+<-PNfŔ}?tB|M]q1Yz5eN؊!$!G\{[s=M [2Y4Z; *UʡK)Ezw%r)Ñ, bL#=kG qeΆw=Rk&H͠) ~qc1]940da(a6(#di x!%\qGr~\l{h9(5C ulLSuӏNLTUHՄduE. I1`ɠU(!6i`Gazz$:Od9/#n] y7\p߀|LR%*?6ĉ|1lFb9EuILydV/|>^kwLC4\#x~JVgW7gD)a:mԓB'!5ܪe(-*:㱤r:|1זQ_dHQp>SBa^%,sǒVGO(Tr*) ˹?EO"{  G4H8yN/1RL5]ux,䎇6x:gOW\]lTAmW˲w383Ÿ$Aa@_e0Q^j:VC=>tFnzYQ'bZ lIe&v+:]0QߠJ䯟gޓH^7|ӯ_ruRg7:B݇ Pдm'1%pJZ $U:=f?4qY%LAbu}xM`:<6#yfV]d3$Q^y8Q>'Y,]e%Șq_BwR|c\cv$%ߛZK\v%Gqdxx=su-h~'qPޖ`=&9Ur6ch~b 3X;ʜ_9#aZ/!,݉FB[1Ey'|t KrzJj%s{t֯m+0RzScM=-[qxFBř(&̫0AebwY8lNfbj;ta}7W!f8j\%x<TǏXB;OrVmT4m1i.kD~O.TQ-')?(I4_Q8)yz23/ċ>&0hUYEj?ĽĈnUL}3qT6\{ Ci}>/ӥbƜ.v>nvi|liy䇰#sfokl ~b0ʶAPlԮS&xDG0o@IÃBYr;=pKVhrgM4 4?vdR-~4Zk%UqEspjxЙV6}y@S`19[O~Qjez-6ZRy;FqWջGqM8E-=ަ*wȿFK>,&ii6:B!ozhi6BvYv)wUXOW8piJ->oIKѩ)Vf/{Xr9qJ503m9]usw9]3WB9̺zZJp ٔ*k63kq1K]< xjHn(WҨt_rFx+ODafDNo-߀aޠ7c7OĂlep?GMkTq;l򶯱b* ů=nݿr#5J2O Ω\^]qdtK\:nIJ FgZ#u@ endstream endobj 4792 0 obj << /Length1 1177 /Length2 2517 /Length3 0 /Length 3257 /Filter /FlateDecode >> stream xmUy<[uX&:c*[5fYY07K(lՍTlm(!(jD;{{<s~oZAEQJqxH:s4@HeսS!i*am)\gpGPFpn! קz0,t1FySf 3L"Ap,?*MX9})gUX"FGLyRpU kXwL|p7i"z!0yvb1t=4"iӨ'zhSʔ^%?#= [ږvKقmz\2S꒟`<]%G N8Od_[<8pˍڞ;\jl1>З(˩ :o,S]w69ZC0!2Ҧ'/T~rAc7 A_أ&o6k?T,4p2MqœǍL90-B?oЏi W/}s NޓzO#L;n@1`0%o/92"ApX 8.VU{' ֝5| $9gn+ rJi]sow>!QU\L9Y=]h5+,:k¨U'-jՖ4oB:T_dm?C)| V ̖ ;u]4-?.vrhJw=k9J]Gtx %L̊FC#,1ǻ_ |%/~Wg)-Rnunw7h(>r-ELZ߾!cϝV*$xtLQTePnj]+jIQ+CHt|-ӷN'S[0CϦuR$[@Զz] u'*]RV)G Ʒ]*<.`odA':ȾO8+༿j$V;? @f2SaZhT|~Jy9P}mٽ5\i/\+i79νC:ΩUZhݿbEHNQG4D2Jf^axVsgiJv曷rkcga͞ LMW+u_WU/:.ܝh6K9]zbH-/ =~{g9zjgYb乆y Bű>Ectp1Mզ9w[{V+8k7:ذ.* >{vQigzO'cמ,[ d%V_eY^[-j$UݓwR&KcwE#&Мۓ\Y6c^hP=ۂ:7/J{5*Kh焻g&J7+{^tBӋy(03zDan:뙑_DU5H{C?kS`b:Qy&sRp~KI?p7̸S:f`obn}}^ES# }KA[9+ΝhoѺh>b!e\;LN*4tFLš0ܕ5yv F "lܸ5jWi%C13SkS[VcFS-^bO;uFqM/Dױ0`{OkV;5 au֙H_zf^ ?1e]mA` 4E=D'܆󤨮>ґ7Qaiϖeq7<[E ƲLTgAi{^ipE5x/1srjOO v]5qKU^qy\ }cNz in6wAPjw Aj%nP*e-L endstream endobj 4669 0 obj << /Type /ObjStm /N 100 /First 984 /Length 3114 /Filter /FlateDecode >> stream xZ[S~WqS[hT˒ $M ˑ\ף S礨A{ZuGtGW8IWeAD aD (+@@K߁aC& "o(=&A.aI*H6~d *5mې`NBmiub@ŁdU wDYPFfh6@AJ|E653b%T ^H#djPRq0\c )@lRzJ$ )i<b HP Td E JE4lehfTRRMC(Ĝjh+OAJL @A a hlUrD@ሞXMA]AOTNV1f<ܐVk t KDCĽPR 5"ZbȒF=x96s I!4,9+(XmpB(ȩAO-GKHrsH~.rOn{ sM(`HxUH:g~{(ݓ[8P:{ٸ> ؞ߙ.PاR@j12'i^N/E>:I1\lbJ)H vNY>He}0ξ(4h{B/J۲ᡆ(Ex޷OY̚>ۋ9r&KXbBU_fFjwvD ^] Qx>_ lk< D]Ls/ӈ;?"4)e&(:7~yv9ld),v> >ΆyzK[>US48IOiWY^T3.?%Az{iRtzQ9& .8^SAV]WU̾J ]>tY>,EB{[igQ:ɲb8^Jd@x20 Jt&48ʊ&lW 0 E d|-RN)Y: F~^c`|K%dc[q0s2LxqnA“>&bOSWP y3HtDk708'i$hjjӺE\aИAep3jhTsH7P?ogi@TF45^ZKxC%4.<k-<yy+mz54 ."wz,ݙ(]&9[U¢ eS5M*C S4&CrOߜiHG3wg}+Ӫ0= &VM{ :3hŝy珸Q7VXu:jx룃G竏vn}Sk&ͯ_Bp^?Nm}u5c?f9M`R{4Pjݧ>m&muO]ӭb/]#ߨqo9zDʈZO_Q؊\vr#ޚl DTޜVHPB>lٔ]gzΎu ADI2E!+HYS[mn:I]~%@&&%x:W̱N2y^Ό` m /p5AI޾@m5K+!7INoaIgoCNOJMM½|OO_`k'mM`! !}~4_Qz5+ήz_a6>F@Nv"ޝ͹6awǞ%!;b/KvN){bo;v]$Q2<dit.l1dh),`ܲ+v5lkvI|ܤc6da؈ݲ1)+ 1^Y2tL؄>x%M?A +P&OSV|،Ɨb)>/+Y,_N߼bECTZZÇsEj>TzQ91Av{+==m#Lz*2\ӳ!9NgpQӆC%!M?:1u7/k@߉n+:+=uԊnz9/ v?Gj,ת_N^> stream xڬzcteݶmRmvRqRmضmbb۶QI*;sy{nḿ>}εZ{+( :330T M,dM"@Cg ;[QCg @hXXܰ;{G 3sg jZZ[ y'@hmgou ́S k @D^ASRN@%.   .F c`j`lgkbWkN '{ş41/hc`0s4u3g;_M&dh'3OUolnWm'?nH;cZ tw`bdom0{Gi8Yؚhfhb trOlڔOMc?,la*vfM\s:= &v),7D_EyO!= Zw_ ௛lhca?g:'Ig?5#?N,܁& SC?SۮjktQA虙çbnaleښ'?MQEER\^Gyg?ى-Bsx3Y?|Y}1{-kh̿+53k(;ښ^emGտO{@c%;c`uXC}?BKU kzw+ jCx><hG~bZS}H{ P6):8iJ2գ~-lkq0N(*镼ALu:Bz'u-G'{G5NkDnA+<;H:y|칁=͉!5M9#Nv0pk4xqeO(w'R>9=b'@\RWK65sDe._~I?( !Tɯ7>:]A7 $;oƧ&N&1yG9NhB]ۓvv>`U8NW RtF~38WN:ÆXU_OF-sRr. `>x[m];MItIg!Tf~Xt4;Vܢ(ueQ*8TJ/ϒ{΄NHR@m|`(sV 6TaX7%gh::YSTw$OQ뤱821Z{y3tˤp>,V !yLy !{HoCqÄD|OV]%ƶ1[xLep1_ Dˏ/+E} ˆ̠hժ~VHR=+y_:KLhk#F0_/vBtwfWMQ(s3Iu9FF$}V)'L8#0,0D Gŷc&TZ1_dLp_+ kқAk%*ҚUuBk~#Nv{?u.XkI_X&12ۺI..YiO9Q7WO{\F+.C@;hcB -lWOu$7KPwO}F!yQ\-ģ|N5%lv9k ._]#x&ҏC&|jHU@ "+ aW婶^[_`OH< z}Y]k=mL p닙0 kD gj혩W,$&Dۢ%RHmsc45kwiqcadIkZA?>KaJ\5WQp1Rm׶|]7+ `ů چvֆoO,8}@!0pGƽ1YbQ@ʹ!HP&UꚲQ˜bEoš0fdPA/? E歵]ލkTN,.X fm0ña +w+p}{C&b$%I ,j&l Y'lH5}"hX[;فjJO^ClϴyKʢy׍Nrq't٤&,,kF"Ą-K֒#FZERHh^5C":q~i-/-2wVNMLQ-sZ<^#5`U]~]0.1Q(DrA_Ax Q1ox,~fR3E3tpO̧ZY)$V?,Twcݠ@,Ea_{ۄH&$=uJ jY;">v`U!UKBx YĒwmR̴_w;ȪOh*Oy/i7|~XOwG܅}g~LS^KT۪u2;lxߓ+eqI\ZRȰZcJ/TG?RDsyJdBE5AW,WH٠l#t$hsj#+qRؑ1~S:)®~uvjp5r~4)G1-+m_xA#`㵳\jsU)p͵Cȹa9L{cΓ@Ph{M-ip)-Tl.gi°X )A#aff݌C -璞iZO勄^ ͝Eb'sRd7?R_LCEU94\6iN@q|On 85$Av=o0pEȪ66nX{5&W2bR3Px:\pkAbWxs-+1 T'N=X99s[ .C܆d%G|f-G7ک$M2YDaLRxM %,>kJ$~v#[[)("!UH6LH2KLaz4Z ֬_\ Z)m0Y+9+pi#M3:3|0OgNˏ`88ljl2Oi lSE3A}WC"GLIhXq6*@ueTk,a+2Ν 3xE_4i"zόq{հ4Cr#LAtS$kArWz엣coeT[:Ȅs\XDW햺ԾOl!O_Hofegyw YijuLp}g!.!}3ȑ*L'mƿ^EͳL[)rcR^6l2DF.Qӟ8s6%N`j&Χ/`Ș-7c,Ls@e n3H_Snł!V]:[s8AQz_BH,C]ϟT(*քahmla{ͥ ' ; OG ܴr TC#0 O>OВ1E&_] 0c{*T0Ƚmi-= yz!JdWhd@xEa3Tِke$9`jP]"clh=iy_Bk؁.S  ƆJ[H>$}Ir8Y6S\Q#CP-YԔ/JܦνC ;/˃Վpĸn GȰuX€k;=G06ᔮw9 x M<5 uR\<)sԌ5|6Fy Cn\ie8iCY 5RyM&wZ\Kd9x0(_KP>epk-ދplHc|Byg!CWuW3{iF#0~RvȚDHWCNԔ1>.iduĢa͐In:}hn:%Yjz+0NyiǸPM Լ\{ձO%xd8m"q%@lA鞶GeǸg>>II[_WߟA:^2'$_7 '=l2'sKQx'8ԫ}w, hxXړ,mjvI $_k@y?5l_ȟb WK2hPc|:$+PU{Z=CZnS] Xˮfdyқ+z47S%Jq^h$LcuCtDe28NbPYk/ 99s\2E0巅,1!9{=ʝB :0YS688د/*a)}8/0إ쩃)!ssNjHpMd) k*JfrqJ+S-ݚguRb? m 9yXr۾8jQCQ"Ԣb:#}+7y3/{V4827=E8L5D-PZ^ʏuċDZU=Cro/aS v!4\rT ޯCw+-pKZH;h^174,,yzlQFcpH7h#}'xm*`M stCGr(٩&~//}7nw ҂^gf@,}qFx+BIe3, 9SKr¹\*` x4Z,iwdzVLfE9WVd`<_TbV"mC?M&cRv8~r^hP)2Escs:5v~5$҇e3id-ڴlaup^n15Iu5/ Qdd9h7>yaXCRc5n7.)˨?7ėO[w ILʏXOMpCaGZy.'R4jV$t/N剕%:o-Vh#-,M~^ .MT^1DA` ds oU)N#X|j ?%۾"TݠnSWצewԀ jܙh"~º\~ ]ĵP[BE,,3#J]㟡ʲ#$$vsDTIXo~k(9U/L>nlM@7-reYAP }@cTz< )LNBW\$L%dl/J.^e>XiGѬO݈-B9d#I2꯰S^IY외%xWaNgmVX@;ܳX6ܻfklm| {aT;窢oqᴳQ:%£%ۅf]̊Ŕk)$RT]Ff+ wy,a)Bc)۹GĕI]Vww%,X.gJ1ZAm)"HwCz={2hÅhs6y  n?13)37lٟh7y_zMHO M6QǙgMO_.[:Y׋OwmzK^E^P xE:$'w 2ZZfQz(J_CNT12Nj VfuܧNskUxvHtt &Ӗi=?"bEbz1l%KFXYu|$}} Qr-rY&q*$5VbOYϼ/#<ٯ0R.|Hmt >Iml|I `'+bbX$à2 T1HR*)x?f53[bCo`%&O@J1*9 K|+zR,yE EϚ`4UzQ}}4&' C*dFY5m&t\ZP_,krL^(L9iC"Y;̀tyw_O-hu_tRֆᤁ; ʟ[nO;{?!x~:Æ+kNGs$=%-Yt+po"rxjd;%ЊgC0YxQMuU?N'3ʅ9АPn˺̮S6ϻ  K<-c ƆE,>?T# +n6蛻V]qHwHh[Nb{~"##`&G-̱ ] 2\`/W? > vE췘36BI? ܡ6jDBq WDAC?|Fa_h…La"lhh{un"泌rnu$;E!Bb۹e8wYbP۷PU\ I`m%vµE)EªV&T cbY3i51WE6 \06,Q@;4 <JdJSDhrGElFj`BI&iLӀF{2\pT%v4TnG3o{ضB>PNs6}4Ncs6h!*.Ŗk`i0B,e&hw52cњT\Pϧ$Mm TKS~n)5phbQD'އjn-5=QAْϸSU?}I9|fJ}LKE+I^H>"^Tl9]W8#<쥠}/sH hu,!+^ИV$1-lK5kĘb%`q*FWAgV 2eU 5,E%=V"U9HQ\HI;ax3EfWBކ |%u9U3Lɥ솯Ay0)lbJgvhJ"|NJS<1E 2m-,wMO?NEʎ:Ii%NNVC֫1R~ kӿݳPM+7wYv 'Љ:;jG ?eS[loIryTH)]=ʜ"IHAxi*< #eT{tAT,[>#s +%^5Uz(ًR^'A[͍úMXQ3ѼMC+nMH?LR5V 5kO*~ 3ͮhxKjuE=>VP y!j>z0% '%fJ߀L`=&i+qT.r@Q0eGY%4 *Udyя!qEO<ѶW~LjSq+z  ޛ?{CAz8Elj>$&R0 EH'{.Â#M>)P8Fyo $ -x <\4L{xQnqZ5.e!dS l紞:gmUP5 fXp|U߉\ANW7q9VR*@@ͯ׻r2:#}p(I1F|E'Du]Y愁@}$*[&h({"_of NdF̛syL*]~/wEX)y~,$e_zmV!OPX( ăn# M bY UC0d2!GrYY"-꒧6dI%(@) QY ASQImg[=`Y&VO c:ڝ~}*.1SO ޯy&Mۯ 4U9P~Vp౪xZD1H9cq1|`AJ &m^oNqtN'5w9FCtlT.{Xnn9_ro3b*JhDzRe~Ѿ[]}ZӞS~dbbe;IJEpS)Q|ǃdKj -< B2Qw*q4Μi?1oxR+iU0Tox|h +l*B=]P"˖r%ǙVRDcz¡Ku) Sd\a)2~* `m*y0ejivXKjZޒvGƐ3~FBSo;q&4>,x@B/b\4haU:WފdADZ`p&%ch¾*H^=H$=j0' -?)L+爞d#jʄv-D@R~ͭus]I? )fGI&DJp_)m3sFw0YQ:(Gr/a' eǩO1弼W6Hi a0ޏ}%|px|jO㞌Lg\OCMW9r"?%d<aiv!s%0 3ZYL/4L=) C\Ҟ>U*^#q\vMx.D?LCNs'?cb8z&L߄lgǏ?={~Sfh|pS3fLEONnE@BK=!=7/nFL2^t ~nk{Ȋ_M n7xChʓ߇]ĬJdr)L5]KSTw3b{{ ZF^]f$Bpި] L%O*S8yI{޸+&ᡱ$4wNB} %U2h^ߠGudz(PW.h_rYLI EQ] YM c2/ L]u&-ʎQfVgf/uSl2#f.ܧr{WHavou,j4\.WSL_Zn4j1hv#iNgYAaΣb:;iiD_&珮|v) /*ηĀ@y%pxx iTtޜ"Iܛ|k *;d>bk?v\ ;' ^ mMM=?A*͏½#$\i JȦDžh]|?TB~I|_ l9u\@4;}uTPn~z!x _;|Z6C{xXxT-gR ±:z:" $F/]DN*( " ͱGrhҩcXni `v 9QoȊgT&<߻C:$ iW(\*%S3fNGuq pv4Bnlb8U@' >H9AHj}jؓ QJZ\~%dnxXe%.(1 t [JPE[b/`۠#Hn?rq,zǥgpF$Zϫv?#}YP8@<.mt'n|wG 2vMޗӷc|]o RKnL;=2b8 yBq}M#3B֤P+ QP&]DjH{49B6=|@kŒֳv &:w]pGۣvڍQ a-"mYh3%e=4ޤ7s M]謻vmZG'cs?$D᥈7/,d)li8{7$ R̩/(&HbA M#svxpw~rpHL${d^f O%1#YQS!P+)O&@;ca$8#Xc= PwSQf3bx*-YSB!1`HlʤlP_V'הi+rm5-)Ywz肘މR"N >|jSTU֬#ܘ\lCp)x&1[9873!'22~ҡe~ /=hKn x"JQM0qk"]Vg#D{!F TD櫼"pl>-~ꪱn>'!Ȏ#8)c+ .}$jPll={E?>\c6?aׂUMf Bo%,kB5ۖ*cՃ.lfL5S 3 I%cõ20}AazeG͡.Jޱa6lw~q9Rq2֝*s9w6I6L(@U*˵b@\@r? ˆeWȪ (aЄϾ !\ JY OXo?<}I2tFqH*j:0~ȉTMm]f)ӪPIRi Glpl%uM~BB_yJ–WĬq}v i]|<%>!vQD3_\Giq5bB8<'D3" O˜RP_q9[.A*S{ SR@mcpOyO쬦8 %4h|Oґ4-7>Ҧ3 O<fk˞&E%89h3(Me!jyM?+9Cŕ(ɨҪܜ!V\zKH12NH}>}֓t^aa120s ^i09_rqlOg[1 \2-M'Jۮ7.cRWRUa٢D,nƇk=Q"Nk;Fb5}\j:ipi{[<8E{ڸnB1,H?gD-B=幠޿"T($^ʶU,N跜ί a+B4"Djɦ럩O8B*962ԤF@G klə)ޟϴ-E`kQVw4PC9z.1[54FLӛ^#T鄻y()[֧E0 \\7.vN\V!T,z@̤PGr=]n?4 ݼ0YnЖ׿Yo(z:彆vp!q6яR黎8bURFm +iԉ͡Fcx-&"9 2N>_Ÿ~kH~nHHE1+ϓ|ZJ%^rپU\i"%=[2ݟpo" ;u|R Jy.f ;-W8R @@6KOoUIXhK/e tRaYZ&]L\5F} \vM~[#Mp4*>I'U?x`[2R'EՠfXArƬϾ4O)DΌQԢ9aYp Ԏ: a3OP2h| q]ڌpgʈ} Y6 /ߟEhӏc;ܻSW?ĉ3]'0$nAԈaf,kDxn c\p1ͥ`aCWb; S0.2nDw=ģNg"GSunT-V)a\f{! oD#rl"7gbҐ.yz}敝n롐oPZoT>Xb;& ^Peliv~wĨ-e:J)/F\Asx6hOg1ƖH>N-6.O7Who\bאh yszDLb ijC}5$Ŀ8I\+$MTP.Χ&=㌐Ra )~"Jf*,R8dZ,:Mm=s-:“黒e {pw6q`~˅AE,˺44Fd&3-/>Q^[w$,Z? shkwE|rg嬡sY ul7*Laΐv/ʃxdmޫBpauuۼo褸ݺ?hlc)E(9ٍ\hÒȏKpMilN8n܇:-#wي9$c()E}) Yxý:@b | CSDŽ'Z&vvP",Q"5 !P؈{L h{hW\U̿fV>D5~XrAfic@=:j_GuBZw@wʐ4XgzfK%MˈW`Ϛ%҃F#Jtrd׸%%}0Qf6]weA\[|0kUpeg( WĂ0Y};|lfz;^_5Jh>/$vm)FL=), 0/$] [!wظ@P0TGZLmSL cWW`}n %E:(̟kfQ@m7!T㒊T 'Vҟp/EKb!00 00~FH9yXYWGCg*ߩ<SEm,_f;mp)9#V'mԛnpڡ/O"K^΍r52`\#JDpy?fGFO$t&7Q^r.IQbkw*}`HE&S*z6>r?A.AV}8yiaCӒa)ꟕjF"0vo&RPq/5jX{, `4s3m=؍c='Nwj0 VQU0|POiƝBw]oZʎSz| 5~sMk g'*iO-X$ &i'0s;9goI8LRH|BB{ Z>w\.albJdj!ܤZK0y -Oi22]c~zv̒beG hoKuo ̥YJȎ[iW'_B0lK8X  Ϸ{h3j]prS2?Wr3KOzA,Z || sDPZ.]ۯ88զt.w3F;k>Iދ _☄D_נng *~:`9lPc1ǝqG.͛0*~r#3qzOd޲}֠K/~Iw `&Ft+`q"Ƃ6I[s!qR7vԭF XL/z}kh^꫟@m0ʪ8* kg,`B*ihlBV4}'Dd9bs Z9|XV"KT%hMwWw܇ѶgKWcoE5rL_G'՘>]*,5Qp\pC'傳%ya3XbeSe!t#!n0|JRW!}ϗ9ү?Lh+!HU;`ΐmpQT^8\bpU/Yar_ݝ[T=ZlC7hp/8+VRTh~knL~'VRJ緘"<[箾}vH}wQ$?iT%=8]w>!JoMB)A|V97YyǂUyܢ@:R,Gް &ww7X?pVf F>J.~Yo8Orvr4:`nJ uZy<#q8'4uІgT|+T}HFG\=MA񀔞U(6;p%'!e+\.-zkՋvSfY{jFTΘHurV*3h@av}!pK$7DTjCGkN v oܟE1@(<#!t)p Q<% T_r%4;IL602e+hQ*\c;fH$9yͶ3`wiUwp5DXZ~,a ?>\8Uz9n2-mA3<[s \ЦRDFuυgXj8P 4(PƓWAW*/8QӉ1XBaWco' `i;ڳx$[Lcip{ⷹ VyW|QM"+Wl"2.&žtER2.!u<]mbdv9CG 8Sw%󫐇#uaBǿK~b[=1dXYD93NgF.9e䖎L'(obS Fθ ^!?Lec%$"DZ 9|bػx˜a)f穏cZ |hēkdht|'jTZ! qN:Vsg;$^vh5䜾(y$>`oP>|jyގAj H\PAPfUT83`1w%߽JCjGdL_tǣje.q dǷ w rܾϝB({؏)l=h5JcB4 'WS ,ūDHlO ;(sA+MVY^4='ѵ,W/?jbQ*)}beQj:/&DM4JXjX)W14/\M[׍1Ǭ989KkNNLA0ńX|_4zrA 0t6QH[)|"_MC 8x>yVy,z |5`h$'p@$4h+,?1I2 bNcC۳!fCd,ªhlC~n~GV^Qb_<|J>-7f4rqK)㇪ʂzh ',CW\M1Zl&1KzFQB,p5uErER:;ʼcVWzfJ,&0x?8*; ]m1 Y2.v9((p5V/KxUB*GX\79Es ^\Grbg,Fqs:[K}6>uy9(q> D_ǻi ( .3 ]pk*P?B3Wx~(t])\mpPQZ:/wvvzG4<̟#ꓲN!OK/ņjdj4˄,))%c#KlSRAra~] ?e|^n "ve͚F &6”(w@Nr]~ZK,"7Sc'$W'Z$U^0Bz>T۶V,!;;#ƥ. IIqe4AF)R& ߜv@  X%@X{fJb_#M8KmiP' zd7ʃj͵QKpG HмQ D)(J v_|3&gE- ߽fŸ ~+:7X>58|TI*4Z\2~g;]!&vE,(0yY~&_@jOI7Sw#\# -m ԽbIKexH<#eW1 )U7l\17YuKB}!sz]8sR~aLkb('.-I' (1DZ@(9慇*,f6*oA;.h]Z, ֹ0D:]NM* _]ޘ- v ';g= .tQ<|iQ<9R`lBޅ H/]=L/c od޶҅s;$q_1F&He琶Tj* b| XSgt%5fR+.1UO:<9'tLǧ~tR;}%!9kxoV% T-N=ha)))E(vJCҊ AD(n= R5m..de!x~n´+hk Q7@w/;)E xv.JlLP@8l|t'bJ]^̡ͥQ zesx~ 0ɝJ-/: EL .RfRGU1pq]xC06PpHqJ Y͏Ze}514ySk?v%F]CMgCOӌ"DVs,^Y4/ !pcYc.D,tɬ>[x%STnծrugjǗxw} []ƹ'T'>73hRk]N}݋SI >BH@: V10ԍ#d^jvD:ICYn誰ڍLkzL|$aM5 tz%"n`ieiB|$|6|c^>[&TFصg$NhirfrUVǁRX[j& ҳU,gZf0^|?Mmp> stream xڭvuX6 ҩCwK4HwC 5t#)5HwIt#4ҍ(%~{ss:g5gk^<0irɀ-!087@_P hoCոdG 6 :pC@~~(6@jm>rqpp`1j 0?~C 0#:Pm += e`U(A`=@ AA+ `9?r?rɸW'A@'uXaP G/AN.#+uj+n }V`G۟iQ8 s!?,!0 7W(_ 8.k H;_:9{?5@{+nl>ǜ cnk( Ϫ|nN!.5ΰ=a^0 G2nGm>rߩ5xcj?s:@'4bQ!~( ^ѿ"ւA6+c{( 8ѿ 7L iwCK<,{Ut5Z{r:CuG?de=>\|.^LT@߿@ ` '? Q6Gퟆ?0qqk!O{~$b@?*oŇTRWX]mM(wø}̾+.2{Tq[we6a`h_VQMx Fu,oi\0\20^8H >0'^^ uDޤx$$O٧K{q9ݣ] &aixҊrhlSC5 B7-. hfve|'K8^^-@3eP d{. I>ںHG81<26i)=ݩx:xճR< vݷGl>qVuñC1*?2oy=Yh`7B`t\ͿK= ~ȖR8NGLlN}gPP|&z멫+{r="fjJY Z qyLڱs*3 pdLPea/ExP!2My:e>8WKٗh AD7JkVxsݹmm\vn- $QFXZBIkl ^|eUK|VGEaߠDhհأJhڝcaf (R5}4*uP?#Ky);`k2d9&UaV! m;y.Avr_%T$>lre{'r()P<\ġEhc9}p^9YsyI :_R&/\ - J-h@sȼPS/SB}B)_mCLo+5/na_M0'EUqޙ::3Ӷ⸋QggtD#knl̈́'TO"0MP aFiߗKٗ+~+cgFV5qUћ҆c;ʇؘHq7Eitr( Jki:ՅQ:&=zJ%E{W07$4{)&0d5{njYѲ|_|SC ",wX~Nf7|_xIPbiجYs†)ugk;-]  џ=eC :k.abrw)o3ȟL/FrMD#g2c`rG};{Ӽr cid9ej(gNs_blHݫѭE1nN2N@UeZʧ2=[~i<OE*~YY[ե;|Nn2񭷖;`$FLk)V&Enyݥ9&[a0%>:C "7,܊aFX %9Ѹ_֕[[^H^H1*'n;MĐ @SӲUP|y WE[c yI=&~AHֽ-Ēߧj/ΨA>p"M)Ad[]';> ޵E̔y|ؗ#g<4ϛz-iPdjpa~ѝ _IbxLa>[{ >|:}x2/C^fEtWn;ag9DiH i ՠxΡ֩A^2iGhqG9(ְqDA6:r4.Q^acxJ"J6a#ggOu R'_s3W!f?Ưc=DԳ=Hn/7`p׫Vzi'T֖> UjSv&#/^_5tlaK/ѻԴ}-rbˈގEx 8;ƄCp]Lx6fXR:t4i KN$=7aZ[YTa?=+~)CVcp8?W!qڼsRnMcwISݶM#꾼t\@9ʗ'%Mff6z<2Yb•jLQ ,)iПG)HX&M)A)dlݝ|<8a@ f\Vgg{o](u綷F#J==XN[W'2~~vf3JDyu:bb@K_L}%Y\ը>GR1Fgӑ5P)J%-p`"+mumfc5?Mc]oĄ⦔smdҘdLεY$.% bH_~Y< lbG'LZI^Q>N ,3UF[rYB>9 xȮD['; :_~'if$׽Da+DT!S[l^>dnc2Ixh%IdfEsxrETJyJ1O(G^X~-ڏ۬N{)u4Y^׺QG~yƲ7U> g9M$3i_`X9Eݷ-零EU .Z&{4) vWmW玐wcW1U ^Wnjһ$ГԯGxtu,H,%|)1zYUȳ8q\T:s^4SDLO˓%13%]a&s|# $*8z4-"ˇ&Nba]wsz Fɯv =[UA8Bj4mGy)o}CW7`K/xǃg!D(-Oذօ' #L}9^vM3],]D@3(|:q^}g@bmȆ˲9˅[ST%ac(tXJa$-`Q73ϱFGib} 1"?$H?]dlj*v#pWX oTT؈J}[Uv؆iE#;Ӑ!BRǹ܉Dϣ3RU5m:6I//qAJ)p$ìO#{£g$xU _xq%x1."Eަeme}tam?$G`@f 7q0Ѥdg3M1Uxm M٠UwQeͺ$DV:̪\#BqNt@SY*w jiU,nQU鑦Z*ӔyI/ݡYN:rE龬DA$@z)wO'@r+: 76 C|Rv#j{ | D+xsEۛy'X{?zֳmm}Ղ؟N .9d=j}[#&d[xu3f5edNMod;T%n-UŹTF{,V=1#ϋ4E() 'kǥ4VJdH=];MƬ6/Vm֦vIu^X/$X-tf{Ǚr ɨy'XZŵ&@oj[ \0 }(cfiwIMVOa:g!tۧ'Mf&, Y118QO? 0bnS;W>mU'T^>$L^'9[k+Kf4gN%~o'QiQì]O?16{ B:z𮑗r iVdϯ*Tv3y/9w_cZu\9v&PknbJT<(d>V_'gxECEC -#{j&ݎP$NiGc3Y; 9,,v7l'@58`=^gkђ D]npy^>WMwd@(w=Y- _3Svd52v*.k7ڡۈ|c&?",c72NJ5ȓj4xA N٘rO`oщ7DJ'2;W(R4\PB80~1 $>{0~eQ\o392qt動O8tO3sg:AafS{$Y kfOؐw誰fǽPg,9X&ui&gd@w`N&׿ɟw"?`5o,R}C4ruԟ"P\ukp}Zu$׉߹S*Mɇneƙ;$Ľ+Q1JǗ_VݐF[?LV+ &ZС@ߺc)Q<8CV>*{fNG zyL*L^r95ˎsKD(k+=#Ǝ&_0Vd#yW8vu[ܓwEo@YZ>_Vז+Bӄ>vVVk#//Q3$0c,` eUQ JzI’j~#O*ṱw4ų6Ckh>IgWҜjfLD{ex#J8rٽScWWILhMq5-sSe-zmU5aKX O08",ةnA䲯|ȀaݍOхOSͽI5m6>.F+<;epZw~$'d)Qâ7&>n3 !b ,x돡#mȔTJp/Q rZ|'~{q7å e̮BL۶3qTxKMe%N3LyMr4 )/?Llޓ%pP#}M_tV<B5se]cyWVIQ 6!YeQY9q7+jީVD!ɘOmH9Y FjVloYg}OlwofUG>ŖP0;i1TU--#zriQ2U.y`F%וLʐ;;c v /Gp a8}ä́SK_WF1We !,+Ӧ~VHB-vE~E&okÊ \K[1^hd yMaHR(tC@Z*^ |ٔV x9 жk_-Une϶뾐U`F0V~jQͨҊ!zGUI3v"h?rR˽Iω,)J+6Ui1m)SM% G\RBi, 0&wf5 ң:^sV}0iܱͥ;CZ$i~ t]& e4RX:Òc_R_Eۋ cG1bf^Kh[ϥV0W0Qý~<҅3O+M,eΉ|mB鄠^ΨB7V]z)ַdZ2utrS@= L>b(GlQ nڵ\HTQ*"1 ,sqs"WF9VCԐ.kWak^i^=5[ADs@C 9Y% 9l͚rľ4`pvS UL 'tΐ =<]ҙȔb3\ѐL𧨝s$-)HH( }c$=׎aU6x9y(BN;e WG~m YOF?+ endstream endobj 4799 0 obj << /Length1 1630 /Length2 6111 /Length3 0 /Length 6933 /Filter /FlateDecode >> stream xڭWg4j%z(A{^F c!D DD j-JE zsw:ucfͻk 'D@tj AaY 0*ƀkHS a`H:X@!u( * !!=|Q0g o/_u$ܻ #=ܡ59 `\' P3Zih5 Pu]``( 8!Q~RA@  ~C`h3 \`䗀k &"45ԉqa~Fîa{*7vMsb@0`~r 0{- C8:P8՝Ap^àp'A`ungD׺h#?/0o(w ϵ P'!$:%6eܐ# ?2p9q^p;;zh^ŀapOO R[|=A?0 0`~ݭv3n(@@DX ~?!(O׃\X̔߿}[1;>/&UUO@DJ v-GDXJ #&o& `>aAaa_OAsFB~ \ڿ ` u=߷ο I!r)i0 6"xaL"<)q8/ 엽;qûLjJ~f`iɡW/ŷ"dW@j"oB]Mz1OwNǡE 8"VU%MyֽCݝM-L|Ĝr M_KSo)tiEa3 f"F;FQ:6aqÓ 8D(Hлi6=3ׁ;M5&?LΨ4~{-`tBq"emp긎8G^ajچ]lؑD Y~gSkS/8FłFm힯dif1IKu]f.QJȿ}\ /v8Amoq̓V{gkj<0J)) ,3𓞑=? Ÿh!4>h;wbί|.cCQ*ߵA=BK1՛,iGqR!oQc~4:=,Q)."ጤ_=G}P`9↢w\Zk$T[sJYCe82$4uC!d8$r~1PzgHktYEN ASP rMvyݴ)uͷEv (qv7šbت``O!0<[i.'sMZRc}Խ &z xV'LzZ¶/̱2X QFEO˚jV``w˺{IJRxQ͋ū;뜫W-z/Sl)`%ir5HWfNX-o! ?w+v&'mZ2C(z&2ar?+I%TP=@'ő1߯,m(,lWdBMдQ:<$-#H_4*dK\ԿI.GĹhR*Q}>`)_v/Pors[ <c1s٘ Țx3}OFo>f# А ѲWqR=,!NJPK!vmnm.y0;SdvOh?[m1vVάQA1ڂV/t$KJ>AH}ςf.Jaԓm[x*Y&_@Qզq+0+Gv>VDŽq/F f;#X'kJs9=tvOn:?:XVl_FKUqIߐ~z*:Β"3\D|#EsJ=gL?ҁ= wM4# W:y@# +($izMdUv 8wp=Bx"/AZK3"vopeT; zRWnUC<#Ŋ[-^0]8gɍ)ԏt֡6ѱ;| ưD\ 1=4cܒ-Un7fq &)W&,J cmdui[}$$kH38E`TNWe[ٺ57,x,~R7cz6 μUPڗǎK|WyPV&֤=jr1{!|J@-mZM hWgnDytEPeb?_}dBXTz2˟wb `*%O×x4jH!xƾcL FnTWR&=ч1F&v5._}ފn嘹vtx2{g!E7O~xg#Nd.o< .Oz/B|\hVtBhxN9ꆔJu! XpnpƙEܫۃe&jCڬU|񕚯)ܷQH̭P.yO(FxGSW}&@jYԟ>啛8I$%R|:+cي#>6{bPL8W &_" 6?UfX,;Bz:+- l{]irJ(4]mM 5c||C $4_0U'3KZjO؟笴m?Dw˻ep6ք 6ouU,EoLO~w`rv> ?Nҙ }(3];0 وK|FUbݜĴ\AO}n.a{Ar'AO5Z%G ELaΈ֗<= ׻o_%l߱pc{Kl" ~Į"lݏJoEi2>D.;=l,_4,=9leiHp(3P8-I,uYT=5 8s ~{(⠣{ϱaD* Z7:@&YqAȗI~#Nphhx2- R5(3975N)bbҶƓEg[u>4fjL8E;z1*<煯NgZ81\_H>?9~\ug3: ʋv~9QLpq0v|oFA_>(w: %XLֲHV9Ԭ!- ͷ,6sݦMNGR_lPE7g]!G{pG(>9\3.*Vb=%)ehUA&i.NTUnbҊ(ͻ5d(_ GrGPS ׄ_7^w 9(2P3͎l.J 7LG$ j䦆A-ץґä[[?Ys`@ 6@tΐΝ#~ոYdbU i xsk 5:%Sx@7:oxp)EwGr8>k-Xl>7X%G }# &iysĜM)H\e$T5t'&})]z(uf7OdrD?VWptZ5鮓 i#ɶdJT|)BK%gG"Nume}V% ~DJG |q1h%:hN=,y.Քbȣʮn0733'J<`O&\7Io2QW҃C<խ!F"<}Nx),eFzMȄë*R_A?J>/ KoOe&w#֞R[U썪Ò-& ҢJ7?s:ގ6ۙ6'{()>۩3Fp9)&W: ,dz$"uvmPfHY8]j}9k8E2Ml͌W2BȳMrn֠N 2@̝飰2較d{nYu\lk#"GhyXh&2"u*v~v?ޕ}x"G)MU7[e;*S\1'7Z~)}?ndVUxe .`-Q\9w|ڴWuیN}X.5yQ\1)(ܕJh3Cc%a!\Z9?qƼ?u$.ur=UuEf,wC=C;,I!7<5Kht=6xjFG,d2 m6{䂇{qb#)u\fwn~bfVcN<$+ 1d2Âۄu,}!E3r6]AK:_'͌y{4=ۘc;E("i@~Es ~"NxɟiNRQ!߲ӿh.?c=lN{ǩ%#lU?AE(%kCIn͐Q![wxq |1gI#>jw2㕍:^%]5!zB9pH݉V"Fk 4EV]s?YXO i̼f xoB£ۄXEOot3WH|ٲ OJ HHUC<$/L \΍QKVL'14ITY S TG\t/_*=*nHKX'cf,sjlOEpl* bp>Xw%[6H?TzIQ*T w]͘)n`n& !ImzTw!l>_UvnZG(#{XOωm_.$sUM%ÎmUYc~__OrJ28.MPXJ7Yn 5Nk/ː5B.dcHJ>̷̓JŴ4W>\Ɔ2'\<1.@`ݚE6"M ^:jAu^2˸2‚K@2.1x" Jl*7B,cFgҊ?n׬IbO^^F<o*uE<9'1R;V.W_QO|^x$Ћf:qF=p,Ue%Y7I{k]3D*gcԕd5Q>&@BuHЌcqIH:<\wtU8C[Hڂ}p+T-}#G#1hLQ˭(o8\&fE%֕~e2뮑RЉ cВ Cjfjt'v?k <c}Vzпg3@{9lX_7 0O [&;aT(Jg0> #~EAPB~yҽA# KV`_=V1!4pVGKB+;0IUa7"ߢߍU]% pkգo8<;m}(M^5 ^S%e~\NoNsC]no>/Bf endstream endobj 4801 0 obj << /Length1 1616 /Length2 26375 /Length3 0 /Length 27210 /Filter /FlateDecode >> stream xڬc]%\f,۶m۶m˶et]m{Νug~7?rDٱ#vd$%TP472sec*+X*YaHIL ],D ]L&Sc ldinAIMM_BF@/FeSS) ,))'Sڙ:\l,2ƦvΦ3{',v&LK`pv05 3`dh.K;cWKo__0{ggc'K߬ "bΖ{&Ʈ/_3\FKgCϿ98YKL LlL;U'FO.Φ6ft0LsmniCϨHڙn>7SDP%ahbog 015w@2;HD'kCښ w @%cEZx{?Hm_9h,faj`bl03ۧv&N6vZFS423J/sz1iqeYN7N.*RdM!!{7-#cbp02 _kYC'K߲-|k`DMeC;? ][uSSSc%{c : ^FСPF€_tMS\_mgRT#6=WĔ}HdԇAzep1 2`Zl jJzxSNPϔn$O~i qhM@uEgdI'OF{npsI 1R]< X_;+2bͷ}@waƱv2+eS}cw\,VᬝshJ`u6;󋨊͜FJz}ڠyR7GP.\<%f&]䔊{LW^=#:AԘr44H7N bF-kL"Q%~;ai7նJfku&Ա@^vٝ[C7-eќ@4* 1S1񚕝%"cˌ_|uDs* B|{T(b,g]<πE17U0}^c`7޵= o V<C،.\˔ky;(+"QP?3ҥux#FkWV 26R 4fC;yY5$l{;Q\f] d$}y-o3#:'ߟ<+ }5Z]VpIG{- ;2`%]Ӛ| `Ϸ?MkGaq 0ރm-~5/ 6 \j:v֯LSZDekXuE;ut<=uu$;_aby{9ڄw0bЋldE9y%*h]]<ߢ=0s,951[uur+NvD]q-\b}~qѸ 7s{s-\Hhߥs7 2ON+VJmwSV Џ =@vBzZ4B/PZ02䥙..X^gbBeV ~"㻖mR3gnm-P Wi7F F*U:e4aFwe?,_OJُj-y/+AF,[_Gs8ObEZOVOgt`-!:f5U9]_UƳS7qyB"Q@5Z$ؕ=pw[?|ծϘXǵe bCyHmpҜT="T*۰ڲݤw.@_g zn͸ֶ3;m"F'q"!`Px`OH#Za<3vl*B D#$JAqWʖ&ju8,`_לM$XW::\ä,Žu+O$nG-j®<^,ʥCx!cFGy]rv9p˹\=GOxaԋ#HGIo(Aȷ6un>%=E)ܞ䪧!@nҘ&B!9OUܶfИObP+Lxw`J"%@tþ=dleպJ~(fdKQw>Wq2=d- Vɨug3U T5,E `TjXzNZSXYVU{pY5+ns!SMeo::Q ֚:l^jPpſ >p '@.9VRWĔs\a0^['p KM*b[˹@! `8KyǴJYo ۔ųn}s?9=ȧC)FY4%9>K֜(=(za'4u cNs"6GRxs  àm kBr}{cϼk0"+xXH0. @>7T|N ms~` 6 įҏY>bj+rH0gNxYP=ܵM!UB?"قEkF(JD\W`$ˇ(6PKޚվbp0Ӭ|Sߺ~G>.fͅ3~?jDg;d$VqF*Eڊ("f?Ħ٬˯x < WnSd9rFt.)$T?lQawe&, b~گ Y;-U57bO֢"*=Y6x!}~F\S T݌E̻Ёϴ$K{rGEtK 7A4rh\=$*GKY:cHrfj ~ĭ`[Wydz@6#(%M4"ݸHgŸHC c_ݪ/ =3s- Ί@Cr4%u`<0 ~K >雃ndLT5vMg|<:fT0[?`pKiP@ պR}򃸻5Sf+EP<~ōՒ+j-6܏pځs)McRjiJՃ5=Te`{g2߈k ,5ЭK_QDXω袭)Ջ$b*$`N[K*G_@GWy=V>PyN R JQ\+K?jyxՕ&3~ GJ+WD^ևڎ5tGE"x%nT|"^$:rq]f`(&KpLFz>fޘ[9E_*A8[!fMs + B Xw,8J¼b@%ݤ7YV[Jٙ:2q9Ky.(6k5{s3D\'rcE=!;N>H6l7-{}}~Us9O: o!䅨'(W/[@ROs6܌lh(jg<hu!,)ߧgF"~*yLzu7#[F"L{rbzMha2+3HE If6/ o*6L /$t'(cmX5޸ 7'9a<Ӎc$Q1 $ټ^,&հ=!+czWݨ4da\2͵b6ϳzC\15qN0˓ȠZy*^Xŕ'ge)"fL0_k9LiTj?Di"DsBӋ!mZIn+<;ZUz{.4,+481zz[]̄! -<+"XI%z2K-iSӡCWeC=xvԉ'0S,Qч5q0pq V6L?GeB;[iVlDGf\p:#r)9ؐӉ]FCr}IvñTA2-hIB{ao3yyꏟh#Z W PD+}dgv+iA_r X[%Zh}f\S7aCZ-U^ͧ-I#LJ-`N9`"[ %sBiI9chƮe#ReF]=Wci"Fn<bC}SmSg;8pŴ}{T:"Z=ft f Ĺ ә:+i.?LGݹUij7\rO΍ Ucً"(K*؂n湪-.tNh )Yc[/:kL|=Y&84ڙ ;8gq`ܞ:V0-tBM1ǪJL`|w~lz|Sa|OƏ :ˇc-egۊ_ 7cѱ'ҟܭֶc 3o aLJaIyKp '2쁿2H4FK*(2)<TC i֣S=s1SpRs&3lq?u9q 2r4➙b5R5>a\K*SxՏ7n",aߴX{|O^]ñ'0=(}+1oII93_w߳q4uµjv񪿢+_M (f2 /: Iζo91,;ASŁ\n:J6/ZyvWZytp=E;.ʌ Ghw^b,{b'ttIR?OVDüqU`n𲆲xޅڣhwi$\7<Ɠ޾?6,|l#aL-mRyp^9|a;}zښl/)AgNqT _W οfC̺؝"B_Cw36F4D5PJV/n$ nt _}kZ"t&vS&FWztK}_`jʆDLL;Qj#E!u =|3 ʲ0nNJ+wTS=)Jʳe3s7xYJgg !W*Qޟ+#KA4W6to ?R5X:lnL/Eh? 'R 4_Tн7z @W1+Wb}&ͤIF"dR;BA k]߮)'sQFn5f |];Oh\В4 A~ǿ,k!wGƯJ|;7abb*TgwVz);alpçU:bEB}"\(/uV 1 l34z`04˗;a_-ݶ[s򵍔Htpo8ION--mpfUvmwɥFvjytCƉ0^ksIQK`iqٝxY!sdHYW@:X;9^~S׊mQ$GNĻktCќc;r M@jKb &ijdٲL |+t%\HæШi޼Fxh Ѣ}[[?C>B)8Aj5I~ mv8c_kI?S6<+wTK m6UM`%vՑA+6I gQX+toA{DKewFkRX>d5?Xo컯b@ f(#T:2zd(Eʂ^F'Q8j.'J 4AJ; -$2?}Ng4D)E$B}CTei:@Qk7b ~] &MEUfvWdPSr+ l'&<0}Mn+ q}3w⃸s&3vPO]?ivL|:v7*lYֺ33,Wo[֥>aNpiuk.sX:%G7_7U=4C!N*dCq1Kl̛֥IGY^"12Cy5n`Bqeе("HJINU+[DS/Am|n9Nzu1@xjݣ P"lmCҰrpenx9IKv!Қi Iby^Ats\4 v qցǐĶb֦ Dե)@7ե.\ W\TGED8ucbm)L:`eƶ!>V99ٗнG L%Hois+A;姷u'], -vWWk6p ./o=O=WՃ qN*g:LeǸ,q]Tȵn @]H9]Tݽ}S m1D¾MI0 6l޾g8o0LJ4጖ 2l`8]NQttnj䲁9- #Ne3?m>nYtrHIʧM'D!?VUHlb>yچ{G?s*Cd8xh.*G- \͚(eA642N-5ATn}Gyp_]'M cą&>#;khTz&>ҖiՌ/U6G^gKglBxHܢ7O^=),ł4MeV$TpZ7G..,&g$`<8=p4qԲ7(Oc_B,u|$v LX 5];ƌk1k߅d0_V|U"-ZZDmjff2{EW0B[~WZC+ &W!aFR602HcbWG9),x悈sAVJOmďzx+L~ض'A)|p6/'|1>SKv.? Цn&X\1Q-;!tDaA5rd k.T[o,2L9<.#2'd{Ef~Nf?BK+DNվq7,xH%=O{[T;B#UUBO`#]{uW C#\w!qmz= Gw&}/3\w UFHVyXƌ+AXhA*2ˣe4%v:Nnq|<H-uVb&MJ@ߨv8UtJPNgw@,yGK 8BO5m/J3: J.K 7(V(#ÎŤXS ^6wܯ_ÇPT?D9w^"vw^˝pvB]MMT/حpc)F"^< GN0 *2b+TVwd76'g?BkN~ i'Nu3CZF}mQU 42d wBۚ@h3hAuB~?Z0P>xBF]<-jh' qeXkɌMiuJF'qfȔK9$ePQhO >`JDx1_>3I[TNckkUT)e v7o:*vTq\8sOfl'_}<6Z)i]>7Hya m5Bҙq0 Zog4 +<(Oʅ%Ӏ2^^pzb+?b~zoA Zli'ƥ]5)9 ɍ=)KFi$zW{0V5cQB:7lρeH4lnde}`˟jWJ]n^W/؄Nṇқ~%2k(pt KH| F~-*1L)2.Ni@|K=g +]NfGE5(Q_~r{޽?mRE8ƻ1SѤrAe*׶_CpX: RJNA \(*zLvelsJ*&Q,ծBlb@gIpjGb_*gIRX-4v~=.P#O|^'; ڣ@iy|Y-S9<%|H$72ߍa^jDd|ឮ4'>z`[g@gTҵ @{eNFlKfػgZ0unQ_q*a'/]x4s-uw=(剕AN-R8ح\(C'datL [oAтD}:Hdh:i t$_B2OR҉e%]e &!߄g* D[I`z4Y^ɶu[)he}5tɟb5]5}蹢X)!8^}xhbҍ#sQQNH.11e GtG!طy3ncYo*z0b;_к[oMEBDT EQY t׹pʰ6<OU.yT'%".xV4@w[+ʖx>:,358$]TXSB5= 燠,;z_ EpUaaz&=>-#8nlB]ʁ%g\_G&藭T}k?];ds=\+JC74blϊuJK9<þm=N.XQ:f~bouuqƷ)j)mj꤅դNZ;,kBbxM㜖ҫHmoZYoP|gr'9a,}|EY99h3DHI wߖ1N]Ӫ}֨"n#&. JR,b(u5匸T6Pf'i5drFs1Y3/!WՎuqW*]mַYl_IZv`C6>S_s<6TR263ڿFsĜu|%hۤI4OK[; @_Y7[DiUE9H:_-&)џў(E~RLNҜ { _׭)g,j VKD<Bt%,FUc/{=8P;9&zcs&4{'/HLlNdߦ*-aҦ9`U`ywM3ק'7~F,X. gl%q mw޺Zv s0K~xPf>Ȋ˒eaniVn ohI osϊC[ oZ?ōBv|rcP2N] uօ5]s:4Qwuinl]X潱BU[+X[U:rtҸ@:PH@#^?o4iz;%4oa][Xj{XW[GJu,>`Om\a*XE~`xʩt5VebHBpݠZ=0o -gi[' H4L5&Yĺe*Pz!٫΅b̾}VCMj$ơqwIPKU=y 7[]̍d+řwlR~Ţ~mJ}gpphݒak)WN Y41Am<4kH{1T1%{ʡRX͐ci'e5"⨢_L;+յ a2 B3wC,@n9M ,;HS5LfM- & r>G}z( FPm0D{lʐ sGjkP7kup;K66gB.^3am& Z|nϔe?`qRܢgA飹R<@Ԑ_9 u%Ed)*uI"`qi15B)S7pLr5P(T6情L6X R+|LqC;-1)7Ut"ΐ,y`cAU7S8PfLDx\Il4@s !7~kz؎ c`#ƔeȠZ-6:Ya#L?=`ZƜ7Tcp%r`.9pzS牑c}xB62_-6oD[4/#nO)uYzFJ:OllŁ5M8Fp*zdI5S(NϿ,ۼr- Q,G`EզF>: g0Lb$;|Pp5 ~`deOv{ /ֈC1]`hfu]o͍ h&.~28`ϗQd7ge1r8L6C6EO! M;|ƨN`o_Zj])?Af W9H5Q0DvӤʴl⊎jx_ 9B ۟nôƈbxֈ(K~'^ݖmh#l:m̀fgrs(8I.LV9hOo #en-ޅ8[Y߀g9Vn|gLGT jEg:AEe79?\o*y#K̖3R<?M4~3{-Z!C(ú sub"fyJ~wBr- Q{E Sv͌&*,1hc $&8Tx{\=#=T* R2m1Wkn)F"Âj{N`OUSp yGYkHbe8^^ޟ,p4cέ7QmJaƨƊÂݥIz2膥oVnȦl 7.\FtV?+rEon {{j矪h8ǥ*@],x{3Y5EN&[PV /h8kٯi}:xi=/ّ bŻ)΢mdiGc_PExݾ n}"Nht2mJ3 !_)9#6dϝd0hPS}+]}+O_ I˧12#j7 +m %H*<,e]]ۮC.DyҖdvZ0o5u-'ĄUh5$P.D3'ںq)xІ6&Ui4k-zٚbjy MIxw}SlOha`iNeIIT^_c0CPZH΢ccuս:Wa#ԥʭE2ݰMb&V_P~64jixלjFyAȯ/>:?~VT齾3\,ߴ'c`tnV*Di!QP}S)\OJ.6:z6\9p&M&zQ qgIftԽRmX%_[~dQ{:  >)ǢX)/YS-)VP7*Sw{Nt&7J. Dp.RjEN%8wDf5Gט $":?MN^L>'3!/5HZE"6ߓvTߌgR$.*Qa"1^!n>gh9'AQyRwxY+58C9w 6-{R##OߚnQq*&2"W:374>HifC*UX'&CR)^M.-m(Rތ0C AYtE`6JuS,Rvm{pXϵ WXj_B<|r`jիٰ_ &$u}g<@kq:c&;4=$7o+2V}_m}.#hA0&BmyLu}  ן(r@%0**Eq\(9`.caHy h}Y8bm@-g,9/<cvHЛ_~?S 7]Xn- \2C")qY:gc ĕ1K?@ $\2[xL5Vs; ڼ;ܳ-2k3j(wj2^Ar -mu>$eYӶycM#y!LЫ?nb0aBur[Jo{ɖyo?ғ'Fu IjzG%YRD 0yQ~D%S(n,8bĵFB#)ԝ{O)OJ8aDc:z"YTmX|7[fKrNv%7b`BD}f0>d$4NjNU|Xc#K $9~HJ̃eyڥpi_rh2fǀ.C)UIX!]9RԎ~!*a:NB; _mBp!'f/7;X۰>Fp-1aʘ`}Ed V3Բ )W{ܬdp >y4 ZtkF@GdQRžS FO+ ))E!' 4"' c¿4we+AzC1b=OcW"65n$5]-Д5|mv%d?ͬŦZhCv%y/\4AC+-uNwqR l 6RڴS?"v ?-Z,w9pCd oU&ԁŠ"K] 1~PZR\B ,e+!?LG%)p Y ޮ\V?[lhY?T-!eR,?^]" 3f6[f2#  JvsJpS87cA t6[=V :ɬI{q8BMv&,fUwbQ04؁xE%U$G?e aTZ4&>6aܺ1OFg{H&n(&=v7! #KN4K3ZЩs[EcVdM=o9_||fjvWG%Oߣ^Nˏa :G [+. ,Go$36R;♭i-tSFO 8e 훊-"\8`S_^@ _[ܧ|;\ț}C94ƼM56g m& nwQ3˙pH݁6u<ھ9g1cƮͬt}m[[G "f1ލP)PNz>䯎^\D R`+=oW LZ - !(Wl={WFFiݸ[M]tU_#C>[1 ad7~ 4ʡGf4GZ:!ҥj}pxP+>qhi1 'v՞g15BGf2ޯg(_By`Xx/@5JߕxnԘ]Z2{ w劏n9-1 ,#oDh&tbm,*2O+QܚK9sZ˚4%'UuђJ(gRJ~=R'55XbcwU3?<d_|Ķ=C˧ʬmԳA0ݟ (8{]|ZLnT* -#Yi|04ݶ?:̩VQHK6ϴeXU{IW'U) :,u=*@8k]wկ͌!UWkԏ8ۢCVvrܣwr'ȷ uE-7ܜTʼntUa?qG,W'*Igd[`&zKZL|U_RYW]bݖSmpdE3J`s~ V7X Cŀ|UQJ3ʔ2U0s ގ'_2\|=~4"<. #sc͈1XAǨG뚸2Ia)kU-IT&Job2Vkw 'Ɲ,b y{! ‘+Z}- w-! 2!b屙#C,TZIN^; R;-h19:iDr6|$iBQD݃ >rr&gCܼd2JTd7Oy.>:];r)'C]KP6,=hbN}IIDžvlwMB ؙ/[a'`f2 W:Q̷Q)Zh袥:;$.ǭ81l&)ӄ}MuKRW@(a Ki%k> +aݎN׌Ëzmsኝh0L45Oǜ´;I]SG^0ҹ(Х}s_'#ޮ_&1 7#j^ع %;sFpROz##DO\G2Z/.shzz{ NB,$^d& '\3 ?w-*6LdO&NIzhkEJmw8oD\S^a#d,hSQ*\Gy$™Q?eLJ3^:PRq?3p욌!f%U􊃚ӻLKrtMG!m:"p^Py<EQDRm1{lv"9l+~[X/2> ލH8U87Flq mU_XTQ&E&b'dR#]q;yhqHyѷy.lV|}? a:Y_"[JeǔTj8}m3pM= lgi^tUl¬J[?<\:a|\WQO5F/q'*gjƓD',:]TаpwI[[i8%hYPlٷwlDl%2umEģM 4h+"naAUpC6mx%`>ȳ?K$ԉ0_|asFhry`8Xe.6^4L3KҬNٕѸF-25۝f(Y7 o8Q1«ছ@ `ax(ԃaq_)O.jF\ǐ7[颇UNY\6K9œM8y1 MXӲ%K)xnT?|MBPUw^KmcP5IhQp;s&9&_'\Ð `SαGOc&N2Z:}i'Jh  $~Ъ.dIHL,Y-,6 <a!i,ԪuyD*-6\ԴXXďOI6wNަNg=*̔7)4/{ɪ"Gӟ?V^ l藄G,呷,TJ7Io%@)UXKbD ZnDe3tQҤ[".E7KPx}xúˀaD]&rI)˾PC;ZiT$,ʢ=SǰW,MiQG4:> stream xڬzsxߓn 'VǶ=mcv&mNlMl;vrۻٻݻuzުSoyɈM쌀bvtLU%uCkkC ;:%;C_3#V PDff@@?-<daf hmgouK ́S k @X^ASRN@).   .F c `j⟭9tÀ@ Z={o.&njz)99;;Z;fU: dؙ43vgKE -l@wr&Nֆs%wW.NfY-hfhb trK> =m/ hmJ7fp &. fo&v)ߔ7DDy4[]3 LLwe /mP)*K 4x olX<ؗ>ŰI^Plwp2~K?Su Ψv3W?sDOZ8>bJE gW/uŒ1iXnH~QZ 5ڙ 2o nD%_[*Ao/՝RG? v{x-Lo]뻩=m. t~D}%r,"YU@wxhk o֒<5~$X;>fz#`b|$)m{BUP߉6Xijx^C'Bv֤767HF,=1hK9@k:P>cDQ%Z _OUZJC۴.*ȓ,b f+w,)1UUNӶإFRK68̒^ wl#'uM2;8~w22ǛxV6Z і}>SQwDFQ;>є$'ng;1~>i k"W!w#C~(`.l`50 ̨wcBRKWl 2Y rSK=\4k ɠAgN UY3$pK UN=Gt9#_TFB$0J-zHBGT!^LQURyED7'apc{%naOkȥa-Y}7G붨d 7JSRjU`U?_vKbG!{'m[XM \* ,2TK~&˦2_zY;yH6aHSB 3CouLtʾrϰ8i2Pxh1?lp,Jrj0KJ+_;}!$ O{*/:nHл`ʑ/6A9'q9lCR@^%0/ؿ&@7dβ8Wx:0]VGVN>>@΄A w<ÔO^R8;d w1l\rZ1#ˀN'A2 p|0Yau9[ٍ=^qu: (|t93^-Y E~rM{H! `/i|~1z3ymNcf$N#=ֱt+we E@uRqER}#6fX8DPו?\ ,]0smJF4ՅO6ΰQ5ACaтv^'r8 NF<[j ä1Caƿ]0UZɹ_u>uApp?K9o*V'Oʠ)'OU'(,aؙ~"2AAx2b|E~$ԾݢjTP{׹ǑeшxVral?Ϛn0`C6&qw= H/1%.fz aٿ݆Î~}QΧ i2ښj*\M^r1|7 ڒcvG2J& q) 9ٞ1_w3$qV b4p T> d %PSױP *' ~&ڵ>.ץ7}VNMu;JN53;^0XoP'g {@AN:")=7욯6EѠ 5sI1笍4\A8:^vAlOB- ]H-A9g͐X?2XլF?)wN3Tבx;Ij"sXkp82[)tmjȲ&P>ASj>f4?LCF,gPMQU`R$dP.>g kH s DǡƱxNL$9N=@nP0Av*fW(OT+㗰}4tnrFLbL{$0XLE4Mx>vnж7'S|T#wq~t~ #1- eg7Ez3OAY=A5ڛ ,nF|PM &<}N=gMM.P]gX&:9/W\%Ug`IBj@V)S<-b*i3ǃ# `_B8FƼ?EO\dar(LNw>(Sk۬ p/DMi7>ņ?lЛC)N7ԚlK˘\N/r .7j̷Kzo2l\tHBJό _ܮQ{o'K )E$@Ts¼dt P0{Jl~Z,<~};)hI䳖BSu-JxUry>xV\Sێ,s8o8D,!M? }8\$I51`HWx`y :ND0j&-;˚{08ۙ?ߐn۝ͤТI~Z y+RnFƗɸCYu\w=j[6cgO܅\ʄB ŨHpLF EU~asqLA9| 2RJ٪c_9KYy{D3g1LO<B8sTUܝ%iuX+O""os >iqL7zt!2eɁ9}nBx#.az[ͨqū@& -];d(!D.5Lܬ~D 5D9k 2=YRINTؕDF{pO֮Zw1&ATgi8tkVOi %/♄ _+ZdT56`Oe]#kиWZJx?'?Z^H/{/%0~S5bR# ]ѮC|Z=􇣴@bEs,vj 8qUOBjv=snE6?5sbL87']ݩV#C/Zaaˆ( F!̼Ļ(j"bdžA*M9M>rYr̻F]wÄ"-8]'IPT8 Ѷ+;(<&֋Vo2 &6g'-Ӽ Y]Ǒ|A&6t>>QKN=U }QA"AkDE¹Jp!҃b-boM?d6kGQa".VFz蓑 X=j 7WdPt//ZMI]ƛsgQ_JU]^4kXx.4Z]:DO/nF?IR|T?_Fa4.8 h%D c3$^Tm`HFS~h 9^%S{FW\beL⎭X4 @1PK3ͦ&li0ďcJmmy{ǁln\;Ym xLJ) PZ(-t-XXvoPChjNk:mmO]MR@PgmY6#Fq_ 2Tm}FCKGI+'[.\B&Co>t#*oY-d0;@@`#><#NņetF\f ?>F ȒX~Sʧ :eEvCGP5ſv>'8+D;dVYOEN[zi^`t8Nv?J1_E8zgB[(_;4љ+-B|+ Mj@K2~{kg/8Y$#V]ݮ0)Dҝy=CQnˋK`%685H#~cwG>Tε, kPyW$xI W-ډErXK<$t,c߾)s[ꌢ#I+#X^8sx`]O@d_o]+e'׺\&_*]GYCy'ͅ}~_ڝTDnF{B8=).ʕR,7jo;7imA˞umi˺#Ѱ4Ghyڎ-by/!R,fRje;{ސM`-%LI8,/i~rANԒ*.Wd+S,>[> /GKtW?f>Џj@|=H/d^.TQ۱=ڄe _`x+!kG.GO)|?h 7=;Gzv>nq\cVXF 5\э} kA>iRæBW Yv0:#8<_ |ʜXŨZ1ZQ5;EQE+L%*6#\eOxLwCƥ:Ey WT3g5Gip2֧.vPZP߻VMvoHElAr"QKn1N" aq,JEcYJPzQD5K"ͳD碻p_ߓ7L6jctSjf>v~\?3 /`j!Da(6Or㻾=Sh@~>2p KV[&\ q$7-ox}%fC1Do6:'׶E@cRA۸(IXu>dd6X:EU_Z6?pg4C):r`kSɮkP^ci bLuV`WD*ʛ Wc@ˣgXg 3Ņ7T}T1$dc<8F =[&nVߤP\AEjldba}JdJ<{;z$Q;C&Pp2wQ (0TTfY҉t=>eg$ K(-;T %~Ae 7*ȃ- hdnc *)ޡh] *ПS1هz2?^6lZk ӡ0~aSZJ؋5C*.]oFM]IӥB7 `tlίNU6z^%JPUrզ鐥M1MX){DZ0ِҔ04c#KpvM^ 4bd.,\XWnZ4e#%*x'MmW\SrJԏ-{QoDɟ[Fc3̬u;|lʽM[H_B hQoq P duyfǙP .iwGJ؏,2:$-wgO:< UvH6NXܨ7+)ӛW&N)aI|Ä esWݷㅠe^-:j쵞@iHAhu<_y LX`ZDsX|Rvtt#~S Lz wIE\ҁ+y6y+Nl0zK=͗J#goxT]U 񟾼CA>cA];yCOqP!>V۰([sQC+]r:] %^. Ss 6SFh8C~J2qr{O%{W A<~<|?X?{6CLf\Ńİ~Pj -[CюHR^T&;k{5ښ'^[ 1?OK8# (tH PiUkUlIt,6l&i c] %e $8Ź=Vcߺɮ:ɓ찉s#YaT=:𥼰8BѓcaEq6^Qb. -pLeT ^d^ w=>PzFB \aԞoR$huE_΋}C`J !g+,؏@v&?XXe fv ժR񋅳;|[S@eđZu~~RЦ#uMc)xA>6!t SDNcD9$Npρov 'x63aP`{+= rI: 㴢.k'xF] {;u,pNE*k|zz@vZ*lpvӍg(ka b tZ(/sGǢrccCʢY[![yOFA=FShތBl~R$4¼aՈ՜33QTy21m!b\"ԈBoħZjZRglq4]F TNlO'lObBu/qT_޽ʵ{bjpi<"gPH_;ipx):kL:)D:4\ izWZ9gg8/lB:)nbC9'k̃3:,﷿[+u' G3J̦PQ_=6p $ֿkiY*91فŊTw1;̉#%嶑7!se2d|lNM$ Ej!4=lXEBnyu[,H䤺@J*]Nb'LY=LDSpIԯӣo8hGpjF& :n |Ŀi6hiUhK kNzegˆ}v*ӾX̛c$Y3ymmN&Q7vǟOLW)2,2M^-S4{\5. k=|$f<EeO*gMA:ꂀ=YCCuBMk% #)U(]9QPu,⃕ό8϶hA37< 2f)JkRp6d@fY[8hnqwcGx*"Gjn;zt(yxfb;BsK9b>4Hr^nMc]q}dNdx--!n)祸[n .ֈRp^C.{ 9qF8rDf7ܢo~ڟ{ j3nz%ɈΞP5+㱜jsjy, T$u.1U }HVQ(V7ʋQ~c&-v. M͕ƗfL6WCʄ"RNUҫ/q]ʆ])ښv=&a? a2&C>ĕIyvFe}B{//A5@;=nQN i Ĺ.aD$MZC6B+ƙjȢ *XDg)l9uTOf)P|P}' c#2p|{A)4Ңyh5<4nynhd/ழ!p9rݫiVh&?+*/u:),(+Hw^ 9EDfeN nC(}mS tI܃6gy*d,y Vsv 6C_ʦFYat6ſ4Ł&?5ZBI)a$1r93S l^.=-ރk3Cm[s{R?gRFY=<'dk5sY|Ybb QȢV$*VWM @' 0Jn C jdR3+{z#(\f9pB o4 V7)jo Qlu9/)a`*6O,fJmƍD1ʻgW31Tk~ o˟?A ><84lT5ghccX9[ls_*YPxUVRM6lקeҁJS^>΃dʫ e^%bd!O(;34\GI=ƲaAΐ݅XY-ado#iDw(;L )aXJ?q]vKlٴ`:iݚO]o5˵ml#T[#zVI ?-#m dh_mmHr,C" ^.KICr  G9"E.sO[bFwK69&2o> gc_GqKx|*dk(ej|5˰\I1V{~n j }5C#gϭy8+3)/moکJV|gʪR`/ `ࡺhDO* ꥤYe0qEI=0E쟤7dM3ԯd!EbN0|Vvث~9+O,/UfP^.yjbKļm¼I@糌ejhs}-$CJHـtvShЖNYK/?(S˴GZ/Ͽz\ŵ]P꒘d1|nlEmx,-U*Ntj(zbDw?Βf|Eu[ق<O%t^ё 6@}S޹O\e}1>(V /ks 4Fs1HmH77wa@з@Fw4j n˪dKF+'H0,U醀 $"0=q]fMڑGd4SqF=U8HJs 5qjDϜuRUt-0:4LtӃ ;t7˫>X˞TZvQ3ZVnF& Z;8+TH/{3 WB&cdwv?W.34Uđ7JqyQc*Xl.WT mOO*I6)')`e,w Xb%X.j9lә!ZusF]5b0 z/ryjSތIH`Ж~g_3Cb5+4bK^7Nø#e'2`'fzZtH-h.>d\!ZE<|ȶ`ޯWH9y垎̲g` Ѿc0a;->Dd ~8}*_-W,SC[gm KF-cO,6)vJQcx4&e`!Qqoa:tP9D5mp/%* ]c-R {meHȤ/b $g&6K4 C ͰV࢐wj8_yk뢴\l+qűdj2SyǕP²Cmx,_JT$F ^.?9&fiֺDؕs/-CM?/?k߰ڝ%ۨ!!E__N3k1_+J;8jz#N*KibΜBiљ_T8SU Ju{ @lD`T.b%w,z2jF$CR(;wh|\}iCǵqBXD:΄xknNKu9S+55K;kl`. ߚMT܋',ϒQO0M~)uOҮU0jdq^z[!DVV{?IM;rQf~C1E?2w} ݡ83M8) ߓM1xM ?4#NY5  쳙A6۟M`o'5#p^s f SqDqWG54K9 "՗j@ Q^!y;GcSԎEoUM (ZTn5-ՃZG7Y0|q0m Ӯ%{@/ TԬ\ij^fZ..4\ލg6ldzG\ͤ!xLϭBM:Ӑ)*G7xTFͦD T4'6ns hOĻe%}ϮzBH—U:Zp(>R 3Q3fORC)V;1k5$8i\ "k~kߠm/k\#q*Cx?ycY@A;bu٦3q*{.Z x9,p^ZN Asf"Ƙ36ms[!Zw9FM="~gIt2ۼ<~8C2ĘegIRSYQ 7Kbs0MV6q%X5#}#vEHE_})H2wQZX@~+c[,򉡍@(\bY_1iڸJLxe@avU=^M-Fsy,e:~)B4Ģ Qˮ^Hp& !>+"WDOܝL[MtZ-C ʟ*"Ӽ^?zLkO#X>dvn=lZ33[ƃ,Dܳ5=Ve@db_%y+QyȤmpvz,$LxZ޹^3++{crs-71FkrӟFƆ V>L3zg3 H?8 (9_]~MHqThQE^PY"VpjAGWu)9fX" 6Sk%jp_MoxBp7,'~BwQ@*Y9U zKу$I\yi- xpͿ""USo^"8/J;q-cTy!qjOY-Z5H l>$ 45wR@>UP/":ٖ$Oz.1 ?̷ :m`5ƣ2|$2>5Dc( LIIlvT6T|6^YSȷ;.҈oErgOVJ@/fbcW /ߩcSpyX_tdnmׅ}9kK`zT8>Y[řjy~{<j|~-5H$<^9Є|aU+i/1̔h[vx* PN$X M  {ڪO1focߥ1,|Eq:l.Kcw" Wf}7y[BH+cI{D PKhUv}ƑtVa,{BRY$(@}6hZ,uGi@(X@49'M.5["G #rXxRSġ7Ɍp"(OZ|TrbMDjڲ}i yt}MvJq(d1 endstream endobj 4805 0 obj << /Length1 1620 /Length2 20209 /Length3 0 /Length 21047 /Filter /FlateDecode >> stream xڬycte]fl9m۶+Ɖ]m۶mURmUl]v?{M<Ϝk16+ #3/@CUK jl +怣s67v:؋VV @hi ACGGL&P}p7up3w fnp2XmbJ:2Rj)E "Lly9 ` Oi.D\GsS_7sSsTGsg;g`ll? [8+!Ggvu\\]LQ%?]fn/_ZWc X&3Jho-l]\;Y'__9]]m-XX4uhϨ[8X-7ssDM`fnǤ7$e>(o!?r+GtU43?clSWO#fOWw.)> S=/m a)kɲި$-MNS<59$&`M@LQ{Hy<PW=m}ȶϟB^(dDp{{wQt2720iy/>71=1ZxLGl 67UǬi]7X*)F(a߄uO:QX.rs`.OP|mylS& (P iǂ(S4w3{2`_ubj\fpBGo D`קͭ)O"Km6+.E#8VO>jNDzQ3#Dnk4}Q i ~m)[Fi w>9sӺhf>DkPŁ49s"N z`g"ίpss9Iakysp& + B8s4:{ XI?]rK5>p!e1qyj&sƯ09ŵ~ A}v7Q70#b 0X$zUPIS$oEP peTNR zε_N9a$qM#wqk?I3492# d=opm.mT%U1EہDt3чUTl?nIW5J,@]x|@ hW$-p ŸEbz(>Ç^>pp]"ԝ{VBB2Tpwr8 i_<$k8ʸcl5JːN=plakaiXF8rrޚ:kO:Ǚjs&. ʐtɵOMKa&%I:g#cxai=ӵ WLr{INe:ssNyW5o EaD,C;%޵p˨+'v{0ys!E O,Wf~aiڸ2R+(=s*~ tӫTi /,9`wD C T:ka(TB \ey@XO4}?deP>_$ lR^՞ܫ$<7=:^6־x9i|.HC-.C%Myv;VsRüL;̂mQBV~GƏҕy NT!v@N0%u#m*CVF Ŭ^T. zTÐ3OckӉK\'g͞`Ĭ04P%Hp1j)9'F,k}4X?ģQY3^dy9yP|4ۙoSog85JZ;??G]ǡ~e:@ @\o$n&7[l'c~(!^m™Fx\`G1خkGcri:fNa5*KlQ1y M=͏f'ז737;pΌ.ˇXc`T[ر#o4' ;2_4bl;lk\))n7Lr\tBgy3nR f2j؃>c[9G.dAj#p~IJoU?eaW*}ksR($rDF%DrC)>9X%%>U/5B*J=]Gܵpwe8K"}}FsRj;`XGB1)2s[JG $6- m He>3Sx '-Q.Dg% ~͙[1&EJ_P1 ʴ6xqG u۪,X&&'0XsGYR6oe0e3'`CU_1f+Qgf6O:AOTuPjy^f2dC1ϕ}:Bҫ.x s-RX}T)!ʓgS#zOHY͜HHEa)+EaO*DI3|`:7^;q{[= #`mФ $r= BR`!JP(i̴` Y9!vQVMYeS5>xi$X.vl(̝jSf^&s[@p*&٢ J@VDg=}zx9{W`xLzV*qhzHG i6°O=2.qS&wdI*d_+mEg3u xn4 ]Lf 0r분YwC翔H.L`;ic5 P?M|U-\}`_q׏Un7T y7+4[U}ՖCV*CQB&De3* Ʒ)K% {'Vry0~ObCᷣubͨf32AEֈ6~eĖ2y&*ArB : Dkwh-"ű VTp4sr9Gq8Տ_o'7FcK\h J_[U`pލXyo7B(sԕM8T@E_14%:YpѦ-wԚZy"Ϥ &gaQk^<\f\qXEl'2)MZ)+|5P[-?e飩SR2ahBroVRr?ڱPt`/ `M_?R=D=)ޠƶr۫HlQd>y ]q92ɸsCl+ 9Czp.vi?>uMGɌ=p,zN k9 }'&at:")+㑙@uwu>Ow\:^)!ovyǩP=in/ z>CpcRJNdl=V8pDnX5ltlj[i,_(mh+_Qrhp&ީq t0h6Dws6%_/zz4JL[X&LI |>CUM{]%ÊH ϘYhi:T0y@BӴ`Z}ՓDp&9$ hM×4Ĥh;X~BGtԯ6(5Lӽ,ow3%o2F-ȂBAg"Ιʃ_d*{=nq淚vП#K+:јI dm̥6ny.I6oVGݯ/bEcY|ɿ XPvؔz(;:, ]Cq ;3FQDNn/oݜE =K~sU>bMD?#rw6c-F9Xs-*hT AduNadgd{M*FO5ӀywZBu_9!߼A)W޼LF=Q/z':8>?1:N(tΙerApmCїF׉9\WRH.|02K*hOB1&P9վQt5ؠ$*:*Gd T T#ʕ^EcVjInb: uQrz=q2ATdu"s@ 2um#'#*WR(ߝʹaNR[(6\ssr@${,⾬#aVŋzk^f䧶c: q>8A/*Sy\5-pӣa%*G-ݦ.͆ W7XiTg ay__ Ķ Q6wfЃ,M$B0"DOAtVȡqKR໸{tB+ B=(lonS⟸HDۢ86U8 א[34`v Xs82aUm4]vL<㬊&| p([ \I? [ ؂AS{M|<3 ŬT4k0(a<,㓾ҁჱ+U4F2,H^IVUg[}\O#{s4-IiSB8_RWk+gtZ"P>Q|[u޶jNAFY:Z[)&ۅ[(R`w8%9$uL6Z86&y#zaDI(xߖ+3SF~/[uA2a.jWk{0IC!_N *~]~7.C|Nc4jAp<1#b.~s3ڻf+њ/Suo\^l%LY9'sI y:GrZƟwۂM :N/"8% u07I"O%B\.y[ 1OtH ERYd zYld03X: B#/$b"r>hm褩 ;>]R*?k^ hV>n\<'\[5'GCmf& ¨xMϿ?:tz+^ %o)2܈FEN%k2JW"=lJD?~m"Р`-ܨ2.LѠ/=Q_aS23ް]fA؂δx) 7Jeqi~ :WF_D ,㡱>6Xo%] kun<UnBfi(0RiX8OG?EWU␝TY$n=`,IN:TwojۖPIY{KUq[2TDm s:N5C''Fi⛙nͣbؘ1%'SLvjƢDҀ@J2!u6{;HCS_3Aa:0t8 /.!6]Fʻڐĉ⍟=UτBA4y.,$ N#[OGIi<~Z1K>[Co>G ($ẍ́~~ w>Ysv#z |EUTw8+ !AΟ+ZHq2.ʫ2'x~"/9P .sQTt$&_ԸYN^idjї5䈷?4}0d!?og9Gx0 R- ́o5 n#dyv1p&_n0SV!y'H[V45Ց~_޵V~n|P#zeg~.tzƒIōgҝ(r O?]Xi,dEu$+ODFsh ,b5뤬&HPYn\"w Sa+Hmp%s@YYQ{9~9638tIFT=X9!i m#47D\++<]2d +Rhg) ut.Lrk[D3LPt;@aylj`[ABV{<:(qYE2׃YgJzDiqsʖr^qZNKd<><_iWM,DloKZG50KgA鳀 &2#tP !g:rZx ӣ&#S̄-i ’km3c9[RNzYC&v4Ul! З &?Zwe)[VY^ޠTvF&ux\-HqBâ"ijH9@Pkrw{+.rYlOK=ӂLdI#Ds~q.âl;YTv"gyxJ`N'xrj_fSaYgowd f~~DuGp%TA'? mj9O['?kkV/ us+.'Ls<6UDF4dT1*x*)\4me.5 Bgem3ѳ~E gȻs0nL)h heK0b)qz>M_|\qk/IQfv%y r8WE3? [Rw;QG+Af:atA[rBns긾mo4k;_7;]5i@7K}~Kݝ ºU=)~v(F'0d5i^CApL,/BL9 ݗ++p[O;vmK"Pglyi)GLBO=T\x2%ĖW+>rf*FB>_ Z`rrWu:r[>Iĭ| m|S+Dt߸gx~kfz ]w'VqՀl?6*@!0]K|Um]}] @UTٵaȃZ+$ 3B PdRccvĀ/*{S:fC! )W(6Ğ1@] iDz kPYLdjL%0Oዹy lx/ \~7Hfmulc)䉯y[ti|·rc3j7\cyZ o6d7^3UFIciGkCGdp] |68 ";v=ֵr閅P)9!+O-| :qghg^#m3R MTl@i ru)G|Kºi;?ZF$tԄLe>`T9`΃bf-7J% -/}F|h(rByw,d!y]|$7Ц?P` YCj$j:)'s81܍iBۊ05qÎ}=L_Dd,SRjCZ/iHUh^yKw\?A7"1#!0,s(Z& kG")lב,F’^|yfc99Y{h !|ı>ƚ=% 3Wibݨ.vׄq`m!޶/\(1&q,h%ȟ|w%Ɉb]\)YvUhߔɑ]-8llI:JFPRu7>8po8ɘL2fHF基r Ex~RHm%Nhm?jZQ+K 1]|he TM3.9KWg ]TtOUly;{Zr ܞpݻ ea3ox>nyOlhH U$.w|WR{WN=ژyP\kAt"ĺtWeHQI0z.6!C$0}qFef%#T@kQxaGCL,)k, $ԑjj|Duq|g/cżhPE$Z2fBl(vd퉀>QqA>I`؇P@=&U ]S3eu`ع!#;-ʈAi%ݺ^eJ6dD}k0L҉8J+^#63(';5_(*^Ĝ(tU`O6'f `cyzf,mYF،o:[Ǿ<ڵA旙!)њÝ~Ql^Y-͠ucH֐H-+Psd ~6,NsLwVs9Gz>Fv2 8ydel@[~W9dy{ [’V게ť:5&F D}[#jI~^W@#ZL wb93wZ&u,Դnm6xX~6BޢosUS]Džyse,ݖ~EJ2#nH|&†O3ʝOǣMsEe[UBL!<;뒂PxPhaj(gfé>>e&f KH΄v!:hʢ*R/áU X5!)ULG+қ'/"*FBOdƝX@PTɎϜZmiT4ZFe nQ:5Ytq+8tWB5tvzdA!))^-vS4vkXAYsu2;8S7U# gzfa@h~|6 x N_V,k GJ(4LVO`bN-vLVjbya`vw!JoD]\*#3^/F{\R9=X"B.{x gsZ }XiE] ޜ6, ]9:nzF wT6dL fqUL=M|.x ZY3]L8C1-`m Fly D,Fon"ïh5k p+kpj+cr 22nj饝U#EFLH0!İo*WzauiXmXhI, "J`UIEځ|Rw吨bBƜ̧޵=~@vS.YSuY<f3<*!A>( _ @*5c/|쇯"!)=+Kлv2ᴱXN v`Wvj?b,1ΉM2ݚB M=ħ wOOF'iu|jXkݒTeLk֯_2nk,`Ě\^3ɋqiy03,u]#2TBlJ St_Sjjb^cg;E L %75]P~gbD毪H๕*{ʭ%i[|'QUnn\և{!h'6e.(|/,ƕ7[E|[ , t'o-/zzJ씣0p >P%Vh8 3{'47CN裁d%7~H%?hϽOWԷ3=͸:nSG~vya3t,\-n E5jEBPJnXU-^yu #UtYBp!rW(a )G]3j XS:Qx{&敫-b3z1U>@Ckˑ'/wwM!)~"lk ~t]QAg;M yLN 81Z8*nR2C= ,0g* U?Ǥ/`ΦO)[Nߩ:c݅c=j }j>:G{$zT){:?/AΡON]US-hQ$^pMI2 [pKu'+ $rBm#}_gqwS}\߈C-z䦛2wįif6* j붷U)+NTB :~"FQP ; ؃حIG"i7t?ԚWV]4dPL Ka,Φg }{iل,Gݽy5`@hN>J:UzRty$7Q N 7p ՃT؆2kf5my߸S35! /"g SOMIKb?/N\]So%[:tr G#S+O$?A^-M~9ÔūȤ§I,%9j~+F(cVpXgwVʆ/YpF4avTPp:/5)~xwcb߸mLu2-?^4@T 1v٭+x1|.#=[p~AZI]7VekL͊#s}S4cCAd[S%4FVeO>SC$qvF4/p *+J(mVG /vKsi;2ŋ9-lBz$p*І9wȮY8t#ޜaw:Ow߾L),-62$> 紀MJ/A~l G$U@sH+'(PЫXq 1a'b>>|Ø$c"ctB]GSʯzfٖ0;W9{:HI;P[@;#y&^2cj7뎘0*l=_a4gNq&@*ڢt~ S q/w^lz`#m*~ZZUjɰݰvg}~xMe^Y.ePOF"qڔ) 9I?XupKTD#+*0"K`pPpURct[TW~P/rI'$"B̖U2s w4u0pg\-e_(" ^O[xķc7mW.ez#pK-k= H5H%V @74ϵUhes"+s#xe !2C1XaKval"]*AY.x5u"9"}fg%r۠s)ٟ%g-GfۛUu7Ɓ7ON c)ԾZVd&Ҝ3^2'C,C P)e"(WD9Cܱ- Yjܸmⱇ^ֻҔID}{ю1R2V7oZ,_<Mәx=(O2n5OWCr(\BET2G@iqJP`HeoHys>=AO@Z:3  z8WowֺYhgC=}S?|NIee+(UnY(!(RD㶛y%Wck3Bb'gh خnď^5MHl:y_;udtcOSsҎv|X ďkGY6v}*x [*);<+O/P)7!υQio#ubLx ;sq P`im_.N"'J Hg˩C@2:vb4J0%l>@d)ŦpюSKIc*?]\sIc<0av#2-Mj Ԙ!CU͛ƒܥ0+*>e|%,H" ^„w ΢Σ@;q };LD w(HJ&C$=p. =+&2SAـ> kIU$TwȩbG%|PVO 'cҬ,p/~:y"N1*/R: c v:z(fn]tbUjl)4 2\jǍe_$ pH%W>7t49d'&c4O3뾁YSȻhUH_ A;M}<ŠZ!2"ɮDCS'jF>VvxHU=gD[ᎁW ) a;Fm;/efXFMbeN{C괓[B~Z#i*zW8'7'3/["n [k‰KMp1 1g`e2GudTܾ;$Rb5j8u()b%Wt6F=7d79.'xj cHEgx^b~<}JkOe zKEBy ǐ.ꠑMqBrn3G@TEy*|Wb5IQ$bc*њ"ۏk2wޥ@˸ 3 N6~A秕kWlTL %fɒP]]&)p<>g*^eL|֖ܲ&Mݛ_ 3EkUfJCI3ۋw1AmlGh?Q -p+HZT|Px|x ~#?k 6XF\y>0َ5b&cN|; 2:ʚZ1B+I13jg⻱ Bv9aSsA2=A2lչ^ B!)PkFZUtsMV=K) im?G9^@7_{ itkLzE5#zѶOĐ6_#%e,~ "@~yҼ>P76? \K9n` 5ol3A pD6u†.thM܃W9U ?_tTwD}؈W)Yc ckЈdfZ{w3rc&v9@nP)(~&b췓n uu: nKu"ЍE66D“<BLvURE#_`_JJg80CJ5J H`$4  z͎W~Y)1oR/"kCl~fCI4-#:aQU0K.jsyE6Gђb` Ѭ9Uo2wڰrv!p8ȖDko7^fL˗L6ˊ`ƇV׳ɴu /pnIKPdq󣓃LfEI+QWz Z5@kdpTs|!{ $̦ZFcf뒥 "5H\$] @?|] R+ :JّMW-;-1>J  |Bp! =1^]po;;)@'l WsC"ׯ.} Ѣ6BLrD&n}(aN |I-ZI^&7]^ŵr,F\A#桰ʽXqfؓF'\-RT')h;-$cyz]҈ k!-C۲2HU_4a;Bc B2:Ex{A)_?2UnME9\KpD`(TcK 픬!j`=3dWۨYmv,,MuCZmw{=(+Ԁ t{@g?ء,Tnl`i_) D}hf% T߳U{ V\7\O,DI?&RMzKz[^^DEw@mQ#/0Cdp"A4H-.i@w~К> ,LC{U_?:HRq_e\XP}Tz ~wŠhnStעKeJ| eH%ziij*k4@Jui4'q A|K~^բ')R4ٌoP&[7XuOl>rbH7kPŻ3r9!!]C{ |C_N-G+bJ!oEsb6M `7YII󑶣`P38zϨk{ df3j 1}l tuRk+)^n,-LFY2LWhKЍ+mZ;|F#bJvhUlaqLݜq?UhɈDV0Я[\k|ӉBݗjҳZtO7l-PގTx͜ &^QW{կ4o/s8ՇoLnHfN>,/%0'o!1OҚ (k"I[@gʂ zs7U1,mF5eƤ 3 |~fjIm ig֎ ! &A@ GS +SY}͸FD{:P 8~Q[b<.qOFnk:C懹z7vwcU2*K(OL=W5YU&eBWCRo.TC5"v㛏juY={ zc ue$&,$G㶪VD6+He"F'!l 4MWX 8$mLV-#մ9Yme8+$NОQ[aS='A5<ӳD#8-p<cy ІB͇dU/*QV7 > stream xڵ[kO_1*WKZHHؐ@x$YV+cd236ÕܞS>]À LA"](i}P޺$B+y' m](QPho1Qv @KX-J .B/C|BVP|V(P@ & :YSXe,G)zČ-򦈈┇6=jNc&ZdB u#D Wr10>STpz "  0: (63^-F40JH E #) hi젡0x)!]:1cu4xoHP_(-#,rN侩e  ch1FSUh 괩:0RjeURaa=QX(iJk+1$bLDŽb$1xL(S5QOIRXV`M#WJ圊]YhA;YMPTU鶈!E1U4:: kU*H !L5w0JnC#0G>WiĒCUPb0Lx.A%UYA1"et2݃KbLSÉ%U_;]Yphܩ/ow9;| t'wvF??_`Ȋ9#^Nzp tnmٿl o/؟v,dGLO)Zn):nrZK;bWŞx#ފ}x'{A#Qq*'Y|sɴ'_Ew*.Eu2NnPqWʫi 0!{rRT֊rxf݁([q%{)j4kq=.h7?nʡb d"nP Rwq9l]9NLѥ&6Mˋl(=͸,Ozq)S#)ǣT1?XSǝ~{R}8?xeg^ zRQR%r,x7xtd#ʄ&nb_ jAŇ&>z}mpxKObx\VS)5~ ޭ\D7~\H?nFw?ˤrTR'Rpv{s=܎eɴ醅~UT߲(6(_=].ݵ\E|?I7Q\&HSro6 񧳣b:'FipP wʪpo).ZMdLSqY&Ъir唽F5FuU"dʋvWp?35뉲- AZQJ"˰.yQ&ZE B*L.L3edr6-eWn`#IurUUr*&>'wHamk6vԯ"cZQBxJNK_gbZ}M8v2R_v߿/`sS%4DܖuAsrz3Ig aYwszz'</~s^/pZ4$%CL#-!yC;thŠf@0³juzqvy,Ɲ<~`ѸǢT^xO?~"O+joimIͳ`^ݶG2msy{EۨIYoiZD0P |8Y2Ϯ >O|,L ԮO?O:XdXg,v_/EQʳnN~:JoyHZ/ͮۍ#D:Ο Xp!˟ }fD/ HI>!,lޔϟ*a0f0K`.WY(ARKR[/簥A|ȖEz?U, r]<$A%>PO c ʬfJXR(0JM IyPJNL(hLlJOJyGBH^鼣*=jӊrO !WP-3TCGe`p$}^{"I4%p1B 4b#Yk)m -p36Py_VY1g&XON"W+x$  TG ,b&PވÕl@EjR-C9b"-|P07D[-4sJo%HRc <2k9wffET+{7%$0P;k%!h*J5\]245͖(`5Vl /@9i 3P +mtG4Ҏk+kʳ3D m³@&5J/TD& ^f\-@quEUb"*nYbfGaG"9ioZ@9r%nnQ#@qiGH T((X6͊[FG C+ΓLRFRӂ|$؊ }3gӉ? 36PѼ^Bl4(b(\Cw4`@^(o<+搪VP"+Yf (M'URP0a/@961 xe ,'q<<_7&/J &b>@Ҟ䆋H AQ*%XknYM^QB-PM>6qI,׀n?x1T,@gT`OCe!2h q C(D-f.jaIA͈5 B$6P-(\':`G+"8cra-Pӹx>Wk439ji: _?UW:^^oM>T|Ը$d;`\݊r" AU|#uHg!"T-ջci6Dm :F1) A`x=1rfXa?s)6]XZqGZ^y__>UՉBdukR>e˚9!Ifi]ul>RcL7 m*0+hν|ɚlib$t[g&M5R}e_[2ei̽tw4.7deYi5ȸ叚q MMZbS{(tM!k  PQ( ?]ۤI endstream endobj 4821 0 obj << /Type /ObjStm /N 100 /First 1034 /Length 4957 /Filter /FlateDecode >> stream xڅ\]oF}ϯcu Iv dE@%֎,9ίӢ,ꇹCauթnvT:mw/tg :k_)@ ]/\].|, 6UK%p;aUgT|E BWАu&L6R/ )vΒ߁M6w6):خAbqm0ݠ؆cm8 gBMэwm`ٮ˝g\ ~ҕ)6BȐ.64Z"E6|bL.) B2 .ExOMJleF]}(42(!rh4HNjfE4Pti[^29Ars`|c`"5 fL$f2jFV44%])Y#6%t9ĥ"],5&KhO%Y|Z&k>dN&k>[N9AeN>)萐*5J65O4n&tL#$kIQE%YY)YKdhi, _5%k1LuFee*3OL)tIsIag' kM_wmϻ**Ku|rc?U( ~yfUh@ƀn<7ƀz4f@u@:i@?41̀1 xqx:P 8oGyڟ??ai{::{(w#<_^ҚRS%iޭ-x J s滟c#L|vj+25W9HKořےV$n >Oy|>6&,i/b:o߷~_܃.w \yuFEC]`s3H$F!7 IH"$f`ur|e]W뗞 k5HPlRlt|8V͑x]/]Umʤy쒨WXm^pؑJPcoo~a=Wc?TY||>9d#o;k/~uyZ(~N?-n{ؾ|4xoe q۞$quY3a/oOԡrSeC>3UWrS|RSyba"waV=l0Ow6@n+yS|k 8q*/=fi<E7b̈E'5^.n9E=Ki $t$Pp+M徸nk,%Vrd՛Yl0Kl(55[ 81:8,Xa"'f.s`j:DMk})2< 4.SVK6|%GUKtdnKB%Gq8KiX"fPӹ ku%Gt4ɕ\x5Kid ԔF6֧Yʨu-&s*>\WrdۻYl0K*$=8?5Q$~*eӕrsnlfQ}I>"ƃ;`otޮu#>zSǛi߬jG}4qsǶGWC~_n:{2Qe)ɍ廇SEm$4 ǖ́[E\MƮ\82j'5C ۆ >1ۮ< =[tY|տal5t{r}%ԟ/}奋JCݢG%BOӻȐ)Z$\Gf{|ٞ·vM3+M/1̜v޽oc1x2uaXMgAJ2ڟ >>Ъv19ȏO5ׂm!WO>nL}>]o#V99V}p\'w5.MI6?~ܯvR?ŷɰC/?z9v(emT4d,W~̭O2;K}g$| o@B6LjjprAHx=t2 Er֍Z=vS)'&UC!AЬeC`ѹ*;q@Ck4d* }8ħfF3L2ȟl&݄gexg9E&i_SClmM IE7D6wf/\38G̀b7S4.]j.'J4,㝑APvycHbP"&]Qcns[D~m"J]N@M$0膅ڢMix8SW$p(F1",M&F+^Bs|BOzxaLe#6d4}9a#?Mi[$*E%S%ze̡ oHߧu YΊb6c&bI8N'4h345'(N~4YqId=Ί (qX%k]Dfj!g%ʅ8+I^/Nr[MHl&f:sX !7 prV _&f_,/ҙÚѣmrKP9 '9ELȭ3"Po@eP3Cө]j.";bg o ]|='mK:rٟA7ڤ˟5Ӽza|#".0>9Oy'9">Y_n2@9`9?NVt2:^Q\iJTon.'q"H+a+VP}*gZAπ_` @d @ ( 軌ܢҹKHqě/7䟍XF'U0d\S{0@w\e0%tq{^փ9EKwIZ>KT E-TAXM "W_dT`% k$]S1#_J.DM,jb,e k,3ksfap2E'G/ -6颅l-edEq ":Ÿ n -h$[u?nu֭Nr!Sj5z!6"IZ:Ϥr0!Y>hl[lBRmE[Wg9h,m]?u:]+S6&E$N9 ZB)E"f'*1 Ն]BR^BT4e$cxkgZ5/$ͻX oA Pˠhd2F\Tt#F0`Eq2rX19A۸T[lX1n/c89x'#Do5f!6"~.ed Q2r$c[TBl1Eci]V;c1Xjnxf9RiWˑH"]DFisX#S['i/V%XJN"fe÷RSkõ}8S\o+bܵrɗgz, BMWT}<3̜˪/L+.<3Wc0 w!VTtF 0 d8i><3G6-$[<3ot@3z9xfZ/L+5D}l5v!6"^BaP(f?>͕9Bhe ll ϵf)` V?oG}_iLY[%\=QC{.k_#D¥HԮa5 "> C{._H_"NAV,k3 +۸T[l'{D\eJrڕKj0gӠ[C{._I!aC?Ԯaϱ6-$[l6rFrJHNC)yl It >PI endstream endobj 4916 0 obj << /Type /ObjStm /N 100 /First 1050 /Length 4276 /Filter /FlateDecode >> stream xڍ[$ +:>H_`8pj8 9o4[/yh<[,%>]gh3F>kfHZ 'ZjOjnd~[O: oK,*mT.3Ge5G?2r ]/[>2oI7IJX5P=vY|K˛zZz~M.ik׸;9PktDL}|zjW4O&W(gz7Xk>ךye@dj}p C}1r)h{6)yiMPWi<5DXɚ|\wwhFM}m4Sa=z heEckR/߰i,?k4wŒ5kcXѼĶM<nk$֧V0m$i-Vʦ(hwE 92Vkd+.%r g=zr/s5ZNMW8q5ZP-?DVBvGYhbnkfE2M3F̨Fӵ|/߮_?߯IZk/q `tn7*ƿßa׿ӟO>q55:r#܌,k?g7b<<}sy#x$u:x'̟ |>Y79 ns:,fG;nzׅוzFnԈyVw?s=9:O_ 3Ο?k܈79͸.bqS!Q壘~'\OhOq9Os9_>w=͸.?󷅇峅 m V.£8,-<o f #Tl' >[x)|1ڭ\V_t5<] -V=_A)O*Ĥ|ʦ! 7٨ Ώ8adaԆ |ܖo([| ftngwɍ9IFkuњhnf&[Y{^;nzx{CO9};k?>t τfT /y 8747G07,7ǂLy&!v'Y]riJ@ʍ ɚ6dh/ٹ'Tڐ^T3{Βe,Y6e]6ɪe;OgmSJeij u0@]6L]wjԱ r0uq':>Ô UiCf&3j4bXmpǦMT k|X0 e3]60eCRuِkUmV-ۦ̨m3Ơ;;0{t "r[fk@tNxS;K;Og!鬊hsֳ>'LU[ώ̹@ڄ3ҷL[Jg[&*edl94}hGy 47G07,72`3j ؜&l〳#L5!$?)l *0T_`S:)p;|1=MNM#M|V"MAM3MrR$vuS(0QLa(GY;`N=EN$$eFIv%)[a.ܒ_)K,e;;pRZFv?~,9e){ᔥl`S.Ҍu nio_cP-lXǠ,e:] ٬1vydiP ue)).^npM)ĩ6.=ږ앻v8 >B[w6 jC5ȠϮA~NmPT|L Og+}T [PÜt?&U]،:>ôwHC2jӝԍAm:mkX5?O0!a0*]q]㻠' x1g *~^. *~ ~<7q#,d]}AӇ ~ ǰt{B;_}AB.b62x`@V/yxx!یrOV"NDZ}CԳVw10uTmqRݷ1OЂ &f~e_6њAK1fGKy4QBLeVvܓmzpCowN]N? P[bwFm{<=ޣv0.K* 6;L'=o} ;Ogv՝a3j3؜Amqw:`N.7gLٗ0uL7tSdC{w?awx;mm >x3^ItNľ0QPٙ27b9G􎛸"1#!ovx}Ͻ~ٷ7:0q=e[n.l>,=-rcAf6nu 7Jf=C3F|c#q$ɼ6dƸHş+Ͽ:>Ôlr=6~cc[)6m}^TQ%3HK֍#Ê[q=V-3c+za XGajt5?t*mN>NUXER`^@g/ltb/R\@g/ ;x/|D-ӊiŜbNtZ5'*:{ tz:` w') :Hq:ċ:Q+N^Щ :tzAQ( .NGϜϰA(ĉ%tξzUQ,.Qu>stv9 :;tFAgQ,.3#l6:@gToQ,-1NE}Ϡfl،M`,492@n l ]xAY sd:ȜrP1ڙ(/R`./ 6=`-}Y­ҳ5 t4 PI' kztX+kda=ʳDBي<y:@g+C] :[eX &J 4@tRS :tJg< &J 4@t蔂NGXtJAUq?x0Q: J'謪 :iJOYI :+0L/ :c((+ֵScE:5֏TO"IY챢w hXPw X;tjo`D5ggؠjN챢 X;O`֎\ +3+XAtB:ҟZ :dg!(߿9{:acVIkEw@ Vto˂tSc~?X;%}Ϡfzhz=V4@ƊS]I!_Hpz Z=V+z>Li(}'%6,zVANJހOcQ>MOcqZIGhXz Z=V}Ni,*"NJ33lY4+VZ]XQ 465?+VANJQcդ$~gg؁ :;-^+N],-tj#jR5=~twA'=~tSEBЩtjE3Q_hxVd=^t//J{A(J3*+D*Ŋ PEW2A - vA䨞w2 -0TwZAchqy}> stream xڍ )\fL,RI 'R H)G:j眫ÑEYnqk_#օW,hW/j|_պ}կ6c}5/k=~Xw}[[ Wew֭}wvHXu\ݗj^}Z}x\=۝OXW3w}~܍vͻˍik aF:X>z\ak^1A+bvex0ʀkW<^qUW<u5{.;|m]'vW&͠\>ץJ 2oxf\_ u;nzYRYݼyz[XD˶fz j}ɶz[۳l6m8ۘCV*l'WBy 5DmfΝc[|[fX.WƵDbmQYYlR|;Pzˉ[Vonz[;jv4[UG[ؽu_uKuir޾/}]zRe_Nu9֥j~F[-etl=Pe5n 3՛Ju jm;uzu/Wo>vF@?ß?~?_B}56뛱8іFѸ8`C?ß?+&MO/Ý(`ܘ07IhXhkz6~}%5_BK׸~ OqwMÅ~Яq5QA6ׄo)`MO3_A?3_A?3!7iz ׯ}VaҀm7ݹ-]4O&M_Gqɻ07PL~ܘ0>~p w75ܲA3׹~vq[ h5=EkЯs uA37~FF Co.x*;\? a(d|0F~"%Y81G,3?AmH1 :aIosn:t-F~n>aIms2]q'ep|}`Ma5X[[X;MX5>=с. ւur+V##QH!'VH,!'뵡VY&Тvk9lYBNQBNQBN<*űnGG 5Mx[μV!'%XYQo9 9@9s9s' =DZ< V9C S Sȉ=ڀ`zsԬ(7RT;] 5|r rH2@|(7R }HSTwTw:F͊z(O=OUmѧ*SXQZo)@E?Wl &E"HMʶ:R)IwSؓԂ`O :` 5Y.Zl &$5gaCjA4/xR%wRwZ}fbð*A uz :`(KC)R+[aT{6]xvKC*;-b8e= 5PPP0;U&{#zJ) 0p248MӔ5> 50lzJ)jӨ܎Qn|0lzJ)rӔ8M9l)SYQoـ=5=%޾`OM!'HM fa 5*lhǰFQ أ6 = 9;0@jJ6c;(JzJ) :0jJQ˳dEJ @=PO):NSj NSjNSRXQZo@=CRPO T`ρ{NڞBvS80M p[ i39ƙߤgu`Յ5aZ iԘlLcL7&=!&=*ܤgYSo oТv]ANAANAANA9I7h5~gr 8L9a 7i*0)x@ Zi>s39nT`SrBNq&Z&Uq&r t9:pCN!8-tv&89: 5w)wU[)Nx&Lw)Ёw)Ёw)Ёw)Ёw)NxT;;o <\Zp&S-N8&D(1)K(b 1ĂbIB q61i z 2jzb1< X[zð|I!6uclj`! ayzl/k.haU0Ģ V(XPaR~)i ւXj C`!Z |0i^z 12 :bTC,@!:`Њsbm  XYC,@!x:`F9H D1q 00 q(0G #RX幮I CjP0)HRP幞BD/ AABl'"NLs=t_R/:b 'Ǔx-_G9$7iz [q|sHmÍ0~ACCCS>Xc/E/E/yb(Ap<kzDSa<{OrS\-Sv5= !%zN #+>)?\Zq4=Ep=L~@:贛nv`MCB|vs[4νy>XS{Яqk\o@?|MŜ1@O׸~5߄~M5L Cdɝ,3.߄|囐ϸ|oB>O&qIPϸzPyPE%ˆR9IXⱠ5fc0~H~耟)]?~Ͳyz'2w@[{VO5n3؂˥f~{a{et-o_6x^O{c ͗ô]%_6vw9elWlmg{a/&q) Cs<OO{a]Amwڞ෭7|A+I|v}O 7|&شIb1ސϪ~Wp/'ڽ}ݙL$W<+=JȚkNB w(^ Fz7pߓɫ7h0Hfʃle k]BU\r>6`AI;jAvzHxy[ׁ̓ G0Y6$dd{ec,/6/CU T$|Set,*TzjdD> stream xڅ[- WlSYQ") H6p))bC y%F+ j)~ݗ2.)%>}5P.k5?-#*{~jW^Ev_e4zjkψ咎\n#?ի(]LU{vQ1_X9⟭vDٝ-H̑[LthrxΛȈ.;kze9@|˪Z:qޗߘM"ryS4gvyGɮ^ Fk͵~uӸDcGaud&װYF}k. ̘PV,uh%@ظJl %/:S5*1vc/5Tby=fc6q=clU)I+ Q:!Whz#Wl Ws5"XX魹Hs BXec6uBXI0b62b6k2vYd؈lb6a[CX- GSV;f5e;f\s.7Ğ<cQcǘmh10b@xn|DB&Mʷz?Q~4ziĄ+ tPʆ" ~?F~z4rPC\#YH"Ɛr/Hh ̶g *0gDhU> ">!k&w%rX&TLD!3$mu{G Y.Q[b6WDG"~_GcW #,->'kg! ͠0H Ж2]㒅9ZȅAH2 ̋g mPI!@M@o(կՃ^5zqZ%Kp?JieAdɽeE'DmiPLI['Ơ9SeWgdg!Z ,SzT@əsFaS999ele sgOM Du@Π]5:S]S3TT]3`cP4]v3%lKo2x6{)dRBK|W Di qZHeej@;-s2˸)3%lKo^]WW!CUyuZXwu ;ЋC@*q^]E@V&UtKyǽiϸDy,Ar^ρݍDؖsrUtOwBpB @2o_o;D '4$KmrXcGlfDe=($Y,S 1WQ{^RsX&D,0Ya'DlKLg:9,%7S&K-0YjBO yUSd)Kak/L&KMY ۽5WXm5jO,OgRB0YZ"L-WVdkډV"LS*Ti0UZ"l[!:wZY4E&(D2Q4ELMQ* [WfD*JehR*TJ^`E_}l}=:[żxvA#rmKuzqhOA}%6KmvJdggC=DؖH@AiÚ=A ,I3aIo_}Z#6[#B 1^^He l4o?v'?mٔ"5T<sXy'e;>uk]1w0vXy'XdVIat}FY.QbyZJ{1%Vތ!{^FyVޘ,N),dwƷ='X&dw& 3YrӚƖղ )]ٺ+#,\t%y^4qMŀ̰-|qOp}tJB v+\?) ʼ$xTRt6=/-9mM[TIOU fh!Nxn˴eXqaȕڀ5i7!WRlB'\e生lCT)DI8 gP4eںu қ_+I}BBj*ŮҲKZ-?Cؖnj0]}etWvLc^#=Yֶ3%ln.i+W}}r o4?su X[Mϡf|VPd>?sb9=q,&c}xYSs0^`ŻXX R" X+ 9/ݱÊ)!'` 0AAl-[eHeE V!ؠU6`r%F4wctb%roM+ysOTpppgeqH,jW@Ahw}?u6l6ʬSBT@ D)8ƠhB/M >˛FleGy#hqߧ osߧ o۟T-;xx!?-ơ<% 9Qˏ7Ms#͈>wH;6a#/ l@68gKؖ4n}F~ҧoU٧woĥu{]uoyFwX8(_+A=fI葮atS;@`98 Bؗ)nK=mzbupPjCjCOv[V>Jg A:KVZw<'< /I7|+oeTViö?t7 =҅~ ˃" UQX9muzbJ FЯp*_~v[MBtp`1^נp4,3=mzb۠pЯr\*|y]ϣЯrUBSWXl"d!_)k/KO!_)kCY kPq 5A3׸zx }=oz gO|gO|(^LcȖG?G~:3֡$ -3o';C?gE2pbUl|' "v!8HI.\ZU^B_ ryAPK-'Dr .F;4\e:@xpț|f<λw!z- ze,5-O^B>"$u72*yAWy.8/M%) V_NlaG삮]Uq^ "Kvr)r^Zd-*KvAWy.8/M%)?=hx=AțB?^ *kvAWy͎@_ 4E󂦈vbzb]Uq^ *΋vAWy.x{]CI.Ehlj/.m-~ _v 2}W*9B?- ]A[7 =҅~ KU -E!h7;%w2ߐxu+JX^Wn8q}k @]=PZ @9Pn'q+wٵLx0([\(+]-ƍ'W\$v@%Pab\0nrgjIԞ: endstream endobj 5219 0 obj << /Type /ObjStm /N 100 /First 1043 /Length 4868 /Filter /FlateDecode >> stream xڍ\˒;+Z؝$WDG,z;Q[kk\%UKNJʄz>djXU$+AUnЪ?xB(UʫʗU_u?ɯFI1I5Vp_q[֖V8J+ʔW^QMbAZ n8_JK@6*|ONy>rIڞ[R|)JZN,jGVY-"%ÎVTŜ4 jRVPSkOQ qUxb~sZ5&˫7U+`7Uko\g KkvӖ ϒ"ZԶx^~+"8j Mz+[(I 8X !U1g!*iSzg)* /L qtib hLz鍤V7A Ȱ +%P!-++Ps?P&;)1YdTmBFJ5֤4(^X)%A>$&ZAҌHHM$?1"[Si޲OSz˹h2.8I VdXRFVZCY魪VAsVJO \??qv<~9|\nOY<ѥ'e)Ւ "ttv_O+vf;\].]tu:ru`xYspppmaT]V'##/-طb}K/vNF^{`d;( ܕAYw%wP+@)ݷR/+>2J \+*WrU/_刕pXvV:auXò ewT0}3#3:auXòUquAÊ%<<9X:auXÊa wo"^V|d&V\58̛F_m7^ulݗc,X}eվ_߿nvO'֛4mjA-{zжk\(͔UȮ ^{_ww @Oog+--C_ uuo Y߷~|vyhbjV^f :# W)!эp:N ƸPa~8luSxګZ7w|6:"ߚb+ m}l4WQ"sWYtZtH㬽9ʷ7֛[I&ashZW8벪k81O(e%|U`ԛ*is0Gf2;H_2}_~N4ȷΐC.' Ot Xo۝N|9źoa&.]YRvv3\lu6/nc\"/bmЫ۹f}\tg'2!wl'A+='Ǡ #vde^owRu+dLSyqDﴌh>.'{nzoMWil}Sre250v)0bKH{=>Kldc5r~iJ02l]0&$^U[Er r\tP4`s`s8F\9e-cUl9˽}B0D _-L8w̞,Ț`ʉ5yF2w@YHRY-X~h[ 3Uϐ5" `*o2*o![[ $ʔIE6cl[,v=8˔7 fQSL{07Fe&7&+o|SS8_; Ӭ`$+o׋LyKvm-%;XyS"2 >LE0lh,IBӹ~s6JmWi֔<ҟ v@҄kW7 "唷 M -B,=. µ`\?5F φK d'W?%Yg\NenzH?׌,+[Af,`XGoEffJ!ُ.ze\os?! `6; hFz3]Xѐ^KZY&XqnR/c#ù^f xE:Ncnz%3+xnց@Dغcovh୚7\5v-McNNg|F }k0VɀB6YuoԂ>¨]j2p,Af,l5TD&,4x3)P 1\; '.C/Έ272Lx,t%=xDR^~ԪW5Y逼ZR fP0B| #"+dqN0#? v`lI#lˁ7Eo&y"J]ͬ@[(A[(A[唶8r<0^Ũ\+j6 2ÐfM5h=h%:3Y̌cfCf\cq#mlDծ D|3`fDKn:W؜ D Mn5d7, f O=[fb۽nͨ=D $; qlj+o- P3WkUf9t `V\ݘ)_FTM5Rfjϡ5YgXۣm!3n|C3\j7|iud LenͲ#VE8ѫ5G;5ǣ kXۣ6 3.nZP*و@0Z05f|.D^">L9>Qٺ[L&m/#+YDJٵ_{&+Yuw9[# "&L (hf-,D='MH 04`&+S-"eMȤQT8[ISf̖!MDfȚ$= 6Mg='M84,$-E}l> 5lLFD9 AuISN漞4tAf[Dtb!{Ot5gxMzx3'Ll%7zy 2?.CC{ܬqh5s@072:M'$BivH'bk<{=CLvكfuܡL0:M$K9f5mՈ3i+ASM4b6ӄ!svB@6g3]qw?A\*Md46B`Ul.Ѭxh S#tSey>T^w墽JԼ 9Bb˛rnj'.C{l'^ FwY c<d3~2xP؜_\ _6e_1lxW:y#*>#)xWʹqU!A]51٫:wC<~?!~(m%cܼ~5NzUtl~9%a8b>>lv/ЗF_cW_y[j nY~2dQ?ܞDʌ9RsUS2yo3b;m+~GwBo=@_}L2H$_-3˖Awy ݡ:c|"t Ɍ>8{X^,mXV|d8_}|gMӚ9r+r0 JN;K N˖k&A Sff 5ȭ*Jh>?]"qKuY _pԨS`NN3gcn˲GD\7/KS_*S8-~t8c/pJS>8~])>sO.L!5_gFt |T endstream endobj 5320 0 obj << /Type /ObjStm /N 100 /First 1032 /Length 3761 /Filter /FlateDecode >> stream xڍ[MoFϯq|ê, d "46"K$O2[ғEv!f{E.Iw1uK]`oR.#>E#٢QEJ;Sc)8wr;N,rKdQ2;\KKθ9rU:Ow<%c.cG| !yG:.X$]d.TR1x\c(c9t\O$bׄ%. %C14'cNdH D(ve7./Bh9T2ٕeO")FKvu9Ec9:{;!2)t®;qE&L (wa$$Z4rd:F} DsB=d#Yŧ6kmǍ+US٪,fI%}G%CHCr%T4ͳ%Fւv_Q4J\nS4ޘEӺO+SbihzZ*aNJ5T4NZ$*g- M(RU4ǽփm'b>x̓iI*wPt l]TU4gK[qEbO?._}ϻa<=ve_&m]­V_8%L) ïա駙[=I/i5k^.ۥ=炀ZHåz[yK\kkmvHoetCz[㈇QiY\1_|);"*x"?}@ $Kͽ缄о~&~]1KOn$j&8շ\n?o\jޞ.Od#|J72 +@ʥfMHp<,nۥ=,vpM@kxUb9ez8lCyL6oq]Ȇ|on?,z3+A4wI3z%{wzz*LjmϏճyz"!a4a,MqoOM-_ʍvZ_+\Ya= E'zzX9  NAa;tP0AUMm_eK x7?ß-Ӿs9TåŨ J3h.n2N@9oֹ+ǻǃP$:TP3d %*ӥk UKL^5T.hYB.`?'2LѾen]lk߆qqLcBzAPo.1Jq[Ov r<'駣 Z7)d>0 6}0<^7|G|.W&L5INڏ*WLtK^57!ؼe |᠇?VY!Ԩ+&)B`F4׈X޻B%(#(#(; 4!ʳ|Z@ Fg7Pô(Z™, epXÊgQӱo[*Z >+Yqql4ƽv5(O W`y?WqlC|Wgk_Fc>Ԡۖ]0^J-%W>\](mmK,حn%LiEט0kYK*حn%ΖL>IטPUp[J"ghV-jIx Uf'46@ V-<[C"5p})[ Z2nv+m͍7Z"Her \eѲП,7'Հo2WrX#" /! ݪ*r5*AAکnFMIQfbtU ]9dځ="5:s ̡3i F{H!#|p[UVjt %hKH{||Cljr e2,*TUr{2 r.`68BQ}Q90 Aj\ 6NY#7P45@#L2S Ls,? I Mo"hd!nbd֋ma,uhv@o_ H(wAlOR.5"A̖`4#hl| EFM`9V D(ES",`i;'c+0g9S"X+Zi7qԪT2)BL`4i[1)Bܔ4ur㋤EbJP+ů5+Ik#|Ô >JQ퉳c>\(0~r ~ u! @\4BAs`& e(+F 9ABQ7Å.hF0Rm B o^48a<@FͰb3`2g`+y3 hk1QcVʳg~]nf:p0c$70:_2 zg/g+y`K< endstream endobj 5460 0 obj << /Author()/Title(BIND 9 Administrator Reference Manual)/Subject()/Creator(DBLaTeX-0.3.11py3)/Producer(pdfTeX-1.40.16)/Keywords() /CreationDate (D:20211011193115Z) /ModDate (D:20211011193115Z) /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.16 (Web2C 2015) kpathsea version 6.2.1) >> endobj 5421 0 obj << /Type /ObjStm /N 39 /First 377 /Length 1240 /Filter /FlateDecode >> stream xڍKo8\"  n23*ñ@-<@ϥN,FyChٔTQ$HQQXţpʖWnAQDJ#Jr!B}jǡ62(Vff7(:) 1t0ÿQT: :FC)K|"fe =26,+LrL-J6$C~.EsOI dmJj"u|Wܠi~aoS?%Dx–:>Խp4E<~T7OUjG*8A a!kłM-;$w9=.N=R;vH09\{xSGj=f#YSg,#Gh tނ/!B!R0<䅐@#&/"G/G""tD#W.nT#S! A0D~e댁Cg F!t~Z jrL4k$H-ɢ_ <6295578161D93FD10BC55A46BC1C1CA5>] /Length 12898 /Filter /FlateDecode >> stream x%ytco^iU*վ}W׾H04hpOtC:@#X8$2z9ҽ,]]]Z˥Wv#յ ^ZEERXj|CwJ,l/vb$Ћ>c t_o2!$CߌˆB׉gqY W.rJj(bc6b6c bcbvcI:./IϞ^MY/ZFlVrqGq q'q c838s8 K+kxǸ={S]At~[$b?N4 : ﻻzF{<,D Kй]dbaO/o:=b@7YTgQEuY0,&ɢQ|QdQ%PgQŅ~u Wx {p$tn9:h-*l9\Cg2qmh[(mh[(mh[(mh[(mh[(ʻ(Ѣ{`(>ݢv-jݢmْ쎯A|%6^-:sKG(`MX:?{l!3IWRm.EKRm.EKRm.EKRm.EKR]Ż}Sm=E[OQEuZiQE)'_'6eBRonvo_jcBÈz#XEHa1e<[eXX2 F3ؽ`VG m݁δqӽul?o϶{m؎؉]؍=؋} >;888881 ]_w+=K q mrl\]!tة~ү\m؍yt~^<:72`%b+Dg3X :IS cрnO#&o@&}.".1aSatAw?oEXX³kcV_0]W|](b2݄Ǿb+a;v`'va7}؏8C8#8c88SiYzFE5zpWp ~=<# mI_Sc\F_%^5޸)LƁ WşbR7dOO?';tM32IW`Փb^&a%a2<2ژ| d1)IYLOn gNƟB EL*bR4IS4}!|㍵1ImLjc1> <¿3ä@&1)IYLbR4K!ιcŤ,&e1)IYLbR8;!cTĤ"&1i[|-t0IL`ä&'M[hI%V"tW@/?Ϸ%Zbh%)-4ْEK- $В@[ Zziy+hQ.Wqe-- -e- l-E̷o o]w@K-o-Cnrː[RD@K%-mIe-3otˤ[g1 ]^Zպ4^5I e-Cn[h[qfԒY;HK*-#k=ݫ3ޟ e-o|˻@[2Lw|c1dއm\t ΐG<, v:fBWb a9\y XuX 6l ݗ6;݊`\; {w=;oeq,tw'piYy\E\U<ĕUK^uMm=b <  ި풊k_ox>Zݐb/īod~D.] 5WrGb_d8\|LlvT\Lq2aWbDqUƊ+1aWb®D1rEؕ+1a/b^Ą {"&EL؋1a/b~Dqo.`b,R˱+ kBl]xuc6b6c miO|B}6>\O0)U %@Zi %@Zi %@Zi %@Zi %@Zi %@Zi %@Zi %@Zi %@Zi %@Zi c]~Ӧ6M?miO~ =Ső@Zi %@Zi 4ܮ!hH!hH!uEא@C 4$А@C 4$А@C 4$А@C 8Lא@C 4$А@C ~Ѱ7 ށ7 a w _~z~J!hHJ!hH!hHa 3owøf8z~|CmFC 4tAC 4k[C o =?;ދ"h<=q,bh;xzq6fk=2o~Ǣ6;&no\J*qt{WH?r bݡ>c oB(lHaaga bDeX _+Va-ք7q٨ť؈u!qo\qػ)./6l.֐8q%8&ߏ!qaU\Gpp $nM\{pCθGե1 +N,NOegppB['ڋ˸orpwq3$;x{!#<#0'&jӱ!< +{jڍzA\&ސxUWӺմ|!ĵ@bAH|q2Pb, Lu (q¦7^Ybz46$?iIMfYWHjZf;_x/m¦2-=W㊽M ?> M nZ\ǡдOC>Ӓ>!M iZ9ʙVδr5} ҴhV]0>L i2iLu~z7=JU2iLd:~O].Eww6.D==  oØ,Ƃdc\r, ~+]eNVaEOƵ+1ա~c\6q:lņqFlƶ-؁{wa/'7nyN4Nxc88z&㊳8Yr p%/*zq -=<#<e.= ^^ "6?ټU^Hy!rjACyEWS~K^/yՔ_Fߦ[_Wǎ6/b5 FCR'*ɫ$Xy䅔UWIސ^ $/@ $/|x1+R"/hɟ }#>Rm䵑F^y䵑7 סK /򦟏YA}oE/J^*y䥒J^*y䥒WI^y基$+mAqA-ARX:1Equ%/V }>eXuX ؈M؂gx۱; ^~AaQqIN .. :n&n6.>!1bf/3xxxgDVWY]euU|ʊ++qg 5g}0+J ٥PSv9 >+*y̳f5g?zW#<}?.{35ePSqxC|C\O / o!gZ Mf=H@9S<o'?|!^͔J%L9S !T˸B4SZԔ,m2D>SϔJ{j4?o")IMgJ>SRʔJT2e(SCc> ?]ܔ|3%)󘊏J>Sϔ|3%)LgJ>SϔT3ujRΔT3u9Ttm\7~'-܅"bwB&zE|LQ%11)1L=ŵԫ|T'^z/^Rԇ_.k?;vÇhIƸ!1OƵB|dϼ}"Oj\oG\KsZ$I:t,&XLұc1Ib$I:t,&XLұc1Ib$I:t,&XLұc1IZ=C > 8v9?).7ON"088pC3If,(;_ mx{ʞ9Q2IG[=C/k^9qN_/}?o?kr|J~oU+gc+b6۟7!w:L#0E~2Hǝ1nBk0n+Ce0qYj_7 0,ic\0b\+qE=.Sɸ"o\#?fC1"G忎+C0p2 dTx<.͸"τ?)g\9͸,/{? ^aW7=.fvBf}E\q?| i\*3ԙxqx꜋d#y" WǫsI6z/P\=adc qI6慁ߊ9ޓt' ).P#?0yq'S72oA$/Z}apOǵ s'wmOq( q J69O}M\&ǀSaLM %gqYa\!07Pq) ~eܬ?J6j{29Vt(XQNJ75tQF1dI^A?z`~[\ևa Aēb^#,Ƣ0+RX%a&.[VcevbM߉FweӸlv`K|[{3 6Y`oq>a _+{qQq< -X)E CK6ƵpOp) W\U\uMm]}3cBØaWĻ0tՅXc bcVbVc F[۰;{ppGpp'p0ӈ 9t?0t q qWq q7q qwqO / o!>W@A $P@A $P@A $P@a>`_X\{O8 xU $P@A $P@A $P@A $P@A $P@A $P@A $P@A $P@A $P@A $P@A $P@Amp_'vV_0a|5tPAAtPAAtPAAtPAAtPAAtPAAtPAGՅn ^<`!!XoeaͧXXXQ:l&ll6l.>!1 )4,3|,/2*:n&n6.>!1)9^%^5-=$g$@F d$@F d$@&IYO?3/ }7U1dĐCF 1dĐCf b$@F d$@F d$@F d$@F d$@F d$@F d$@F d$@F d$@F d$@F|;1Li| t=sH #2H #2H #2H #2H #2H #2H #2H #{9$P@M5 $P@M5 $P@ͻ@M5>&ޕ'];xU5 $P@M5 $P@M5 $P@M5 $P@M5 $P@M5 $P@M5 $P@M5 $P@M5 $P@M5 $P@M5 $P@M͠]f;/Ăw AM5tPAM5tPAM5tPAM5tPAM5tPAM5tPAM5tPAMiуzч~ `CHb0 0a'BHz.,2, *b-a=6`#6a3`+a;v`'va7`/a? 0(8N$Na qgq;~*:n&n6.>!1)9^%^5-=$PJ(I$J(I$J(I$J(I$J )|ۮ+)I$J(I$J(I$J(I$J(I$J(I$J(I$J(I$J(I$J(I$J(I$J(ItPJ(I$J(I$J(I$J(I$J(I$J(I$J(}Ѝ$Ћ>co#mķ.omo#`W%!AmIƫ˱g4~mj(|+}#`p02W_U0 F|U*U#`G]:aA0  Cqq0N!04㲳8 KahژE%nfjz-Ý0]q]<0_e OBⲧx!9ɸUH._QMކq;h>DwH~qWDHgB>τ|&3 L#?! L,C*$6X YL,ɋiMfB/XXRĆqr&29$eP΄ N' LgB>T P΄&C4B8Lhh$2{&44qRʄﺚ˄"&.c!e[!e&nH/x!j dqHeO g!Oe/C9.뼿42&$7.{ LHATKQ52oN/_U4KS/M4vMSfM4Цrjziši )?B9Mo7M4uvTNMMrSNSMM9M44ӔT{NS ]!')ri*B/˧)|iʧ)I/u RSHM!5RSHMQ745Ԕ@j2k;USSaMo7MoAMq54ӔTӛLS9ME4dVi-)}j_08B/M/M4?I{  j1A !a|W#axğ]EHa1`)o+;VbVc Fؗo5 _B6lN>1 ϳ&pGp'q< E>gtӥ8?V+pgegq\\vwե0|W\vW_+nOt\v qf㲇?v:ϸ1bH/>׾_ puW⊷xo3jWxg:5d5ͨiFM3BҌf4#™hhFC3Ќf44 V@93ʙ15a>|fd6ʙQΌrf3lhfD3#jf72La_y͌hfD38 ͜Jf3syhcF/3 Y̼F'?^,f2ӟO3w!1m<f|ft03$0y/\3r&v U XOy/Uxcɟ$|xVO14[_=P X-\ %*|cl-Of,~K1[``K7z4.~c۰턃c{üͿB*c7E§;*.1_RItNf#Ac_*o)WK<Ӯ_ A8 1ww.nu_0SCcW][c?c")[_y񳱇pԘcw̙uc<0K/üw/ ~aJKo_0k*^zKW҇0QW .^‚RwXoz‚?~#oKQ|>>>~C㹂G/*O-[EW^zE[Ee>$_xEW4^xEWlȻ"+Ȼ"+ȻbӨl+Bl+z蹢犞+zb 셔+Ğ\)+p%JlWb+XVZiEV$ZQgEaVYdE9VXQbE%V̭bns[*V1Ṷbns[** *6ͥbt6ԡNWr6u(=H}1$1#XEHa1`)a9V`%Va5`k [ ۱; {qqqGq q'q c838s8 K+k[;{xGx'xgxxWx7xwxweζK9.lRζK9.lRζK9.lRζK9.lRζK9.lR<7x DRywz])w;.̺3RάK9.̺3RάK9.̺3RάK9.̺3RάK9.̺3RάK9.̺3RάK9.̺3RάK9.̺3RάK907x'եTrR]Yr]*oαK9.夺Rywz]u)絥cr]9v)إr]ʉv)'ڥr\is)ͥ6r\is)ͥ6)Υwjw_T6 mmo|6 mmo|6 mmo|6 mmo|6 mmo|6 mmo|6 mmo|6 mmo|6 mmo|6 mmo|6 mmo|6 mmo| ~:FE1A !a|,bRX%XeXXUX5ZzlFlflVlvNn^~AaQqIN .. nn ^^ ˝7CY\6 le/|_6 le/|_6 le/|_6 le/|_6 le/|_6 le/|_6 le/|_6 le/|_6 le/|_6 le/|_6 le/|_6 le/|_6;_3/AC?0!$1yB,B K ˱+ XuX ؈M،-aXWXؽO7l endstream endobj startxref 1114673 %%EOF Bv9ARM.ch01.html000064400000065040152530214170007171 0ustar00 Chapter1.Introduction

Chapter1.Introduction

The Internet Domain Name System (DNS) consists of the syntax to specify the names of entities in the Internet in a hierarchical manner, the rules used for delegating authority over names, and the system implementation that actually maps names to Internet addresses. DNS data is maintained in a group of distributed hierarchical databases.

Scope of Document

The Berkeley Internet Name Domain (BIND) implements a domain name server for a number of operating systems. This document provides basic information about the installation and care of the Internet Systems Consortium (ISC) BIND version 9 software package for system administrators.

This version of the manual corresponds to BIND version 9.11.

Organization of This Document

In this document, Chapter 1 introduces the basic DNS and BIND concepts. Chapter 2 describes resource requirements for running BIND in various environments. Information in Chapter 3 is task-oriented in its presentation and is organized functionally, to aid in the process of installing the BIND 9 software. The task-oriented section is followed by Chapter 4, which contains more advanced concepts that the system administrator may need for implementing certain options. Chapter 5 describes the BIND 9 lightweight resolver. The contents of Chapter 6 are organized as in a reference manual to aid in the ongoing maintenance of the software. Chapter 7 addresses security considerations, and Chapter 8 contains troubleshooting help. The main body of the document is followed by several appendices which contain useful reference information, such as a bibliography and historic information related to BIND and the Domain Name System.

Conventions Used in This Document

In this document, we use the following general typographic conventions:

To describe:

We use the style:

a pathname, filename, URL, hostname, mailing list name, or new term or concept

Fixed width

literal user input

Fixed Width Bold

program output

Fixed Width

The following conventions are used in descriptions of the BIND configuration file:

To describe:

We use the style:

keywords

Fixed Width

variables

Fixed Width

Optional input

[Text is enclosed in square brackets]

The Domain Name System (DNS)

This document explains the installation and upkeep of the BIND (Berkeley Internet Name Domain) software package. We begin by reviewing the fundamentals of the Domain Name System (DNS) as they relate to BIND.

DNS Fundamentals

The Domain Name System (DNS) is a hierarchical, distributed database. It stores information for mapping Internet host names to IP addresses and vice versa, mail routing information, and other data used by Internet applications.

Clients look up information in the DNS by calling a resolver library, which sends queries to one or more name servers and interprets the responses. The BIND 9 software distribution contains a name server, named, and a resolver library, liblwres.

Domains and Domain Names

The data stored in the DNS is identified by domain names that are organized as a tree according to organizational or administrative boundaries. Each node of the tree, called a domain, is given a label. The domain name of the node is the concatenation of all the labels on the path from the node to the root node. This is represented in written form as a string of labels listed from right to left and separated by dots. A label need only be unique within its parent domain.

For example, a domain name for a host at the company Example, Inc. could be ourhost.example.com, where com is the top level domain to which ourhost.example.com belongs, example is a subdomain of com, and ourhost is the name of the host.

For administrative purposes, the name space is partitioned into areas called zones, each starting at a node and extending down to the "leaf" nodes or to nodes where other zones start. The data for each zone is stored in a name server, which answers queries about the zone using the DNS protocol.

The data associated with each domain name is stored in the form of resource records (RRs). Some of the supported resource record types are described in the section called “Types of Resource Records and When to Use Them”.

For more detailed information about the design of the DNS and the DNS protocol, please refer to the standards documents listed in the section called “Requests for Comments (RFCs)”.

Zones

To properly operate a name server, it is important to understand the difference between a zone and a domain.

As stated previously, a zone is a point of delegation in the DNS tree. A zone consists of those contiguous parts of the domain tree for which a name server has complete information and over which it has authority. It contains all domain names from a certain point downward in the domain tree except those which are delegated to other zones. A delegation point is marked by one or more NS records in the parent zone, which should be matched by equivalent NS records at the root of the delegated zone.

For instance, consider the example.com domain which includes names such as host.aaa.example.com and host.bbb.example.com even though the example.com zone includes only delegations for the aaa.example.com and bbb.example.com zones. A zone can map exactly to a single domain, but could also include only part of a domain, the rest of which could be delegated to other name servers. Every name in the DNS tree is a domain, even if it is terminal, that is, has no subdomains. Every subdomain is a domain and every domain except the root is also a subdomain. The terminology is not intuitive and we suggest reading RFCs 1033, 1034, and 1035 to gain a complete understanding of this difficult and subtle topic.

Though BIND is called a "domain name server", it deals primarily in terms of zones. The "primary" and "secondary" declarations in the named.conf file specify zones, not domains. When BIND asks some other site if it is willing to be a secondary server for a domain, it is actually asking for secondary service for some collection of zones.

Authoritative Name Servers

Each zone is served by at least one authoritative name server, which contains the complete data for the zone. To make the DNS tolerant of server and network failures, most zones have two or more authoritative servers, on different networks.

Responses from authoritative servers have the "authoritative answer" (AA) bit set in the response packets. This makes them easy to identify when debugging DNS configurations using tools like dig (the section called “Diagnostic Tools”).

The Primary Server

The authoritative server where the main copy of the zone data is maintained is called the primary (or master) server, or simply the primary. Typically it loads the zone contents from some local file edited by humans or perhaps generated mechanically from some other local file which is edited by humans. This file is called the zone file or master file.

In some cases, however, the zone file may not be edited by humans at all, but may instead be the result of dynamic update operations.

Secondary Servers

The other authoritative servers, called the secondary (or slave) servers, load the zone contents from another server using a replication process known as a zone transfer. Typically the data is transferred directly from the primary master, but it is also possible to transfer it from another secondary. In other words, a secondary server may itself act as a primary to a subordinate secondary server.

Periodically, the secondary server must send a refresh query to determine whether the zone contents have been updated. This is done by sending a query for the zone's Start of Authority (SOA) record and checking whether the SERIAL field has been updated; if so, a new transfer request is initiated. The timing of these refresh queries is controlled by the SOA REFRESH and RETRY fields, but can be overridden with the max-refresh-time, min-refresh-time, max-retry-time, and min-retry-time options.

If the zone data cannot be updated within the time specified by the SOA EXPIRE option (up to a hard-coded maximum of 24 weeks), the secondary zone expires and no longer responds to queries.

Stealth Servers

Usually, all of the zone's authoritative servers are listed in NS records in the parent zone. These NS records constitute a delegation of the zone from the parent. The authoritative servers are also listed in the zone file itself, at the top level or apex of the zone. Servers that are not in the parent's NS delegation can be listed in the zone's top-level NS records, but servers that are not present at the zone's top level cannot be listed in the parent's delegation.

A stealth server is a server that is authoritative for a zone but is not listed in that zone's NS records. Stealth servers can be used for keeping a local copy of a zone, to speed up access to the zone's records, or to make sure that the zone is available even if all the "official" servers for the zone are inaccessible.

A configuration where the primary server itself is a stealth server is often referred to as a "hidden primary" configuration. One use for this configuration is when the primary is behind a firewall and is therefore unable to communicate directly with the outside world.

Caching Name Servers

The resolver libraries provided by most operating systems are stub resolvers, meaning that they are not capable of performing the full DNS resolution process by themselves by talking directly to the authoritative servers. Instead, they rely on a local name server to perform the resolution on their behalf. Such a server is called a recursive name server; it performs recursive lookups for local clients.

To improve performance, recursive servers cache the results of the lookups they perform. Since the processes of recursion and caching are intimately connected, the terms recursive server and caching server are often used synonymously.

The length of time for which a record may be retained in the cache of a caching name server is controlled by the Time-To-Live (TTL) field associated with each resource record.

Forwarding

Even a caching name server does not necessarily perform the complete recursive lookup itself. Instead, it can forward some or all of the queries that it cannot satisfy from its cache to another caching name server, commonly referred to as a forwarder.

Forwarders are typically used when an administrator does not wish for all the servers at a given site to interact directly with the rest of the Internet. For example, a common scenario is when multiple internal DNS servers are behind an Internet firewall. Servers behind the firewall forward their requests to the server with external access, which queries Internet DNS servers on the internal servers' behalf.

Another scenario (largely now superseded by Response Policy Zones) is to send queries first to a custom server for RBL processing before forwarding them to the wider Internet.

There may be one or more forwarders in a given setup. The order in which the forwarders are listed in named.conf does not determine the sequence in which they are queried; rather, named uses the response times from previous queries to select the server that is likely to respond the most quickly. A server that has not yet been queried is given an initial small random response time to ensure that it is tried at least once. Dynamic adjustment of the recorded response times ensures that all forwarders are queried, even those with slower response times. This permits changes in behavior based on server responsiveness.

Name Servers in Multiple Roles

The BIND name server can simultaneously act as a primary for some zones, a secondary for other zones, and a caching (recursive) server for a set of local clients.

However, since the functions of authoritative name service and caching/recursive name service are logically separate, it is often advantageous to run them on separate server machines. A server that only provides authoritative name service (an authoritative-only server) can run with recursion disabled, improving reliability and security. A server that is not authoritative for any zones and only provides recursive service to local clients (a caching-only server) does not need to be reachable from the Internet at large and can be placed inside a firewall.

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch11.html000064400000130335152530214170007172 0ustar00 AppendixC.General DNS Reference Information

General DNS Reference Information

IPv6 addresses (AAAA)

IPv6 addresses are 128-bit identifiers, for interfaces and sets of interfaces, which were introduced in the DNS to facilitate scalable Internet routing. There are three types of addresses: Unicast, an identifier for a single interface; Anycast, an identifier for a set of interfaces; and Multicast, an identifier for a set of interfaces. Here we describe the global Unicast address scheme. For more information, see RFC 3587, "IPv6 Global Unicast Address Format."

IPv6 unicast addresses consist of a global routing prefix, a subnet identifier, and an interface identifier.

The global routing prefix is provided by the upstream provider or ISP, and roughly corresponds to the IPv4 network section of the address range. The subnet identifier is for local subnetting, much like subnetting an IPv4 /16 network into /24 subnets. The interface identifier is the address of an individual interface on a given network; in IPv6, addresses belong to interfaces rather than to machines.

The subnetting capability of IPv6 is much more flexible than that of IPv4; subnetting can be carried out on bit boundaries, in much the same way as Classless InterDomain Routing (CIDR), and the DNS PTR representation ("nibble" format) makes setting up reverse zones easier.

The interface identifier must be unique on the local link, and is usually generated automatically by the IPv6 implementation, although it is usually possible to override the default setting if necessary. A typical IPv6 address might look like: 2001:db8:201:9:a00:20ff:fe81:2b32.

IPv6 address specifications often contain long strings of zeros, so the architects have included a shorthand for specifying them. The double colon ("::") indicates the longest possible string of zeros that can fit, and can be used only once in an address.

Bibliography (and Suggested Reading)

Requests for Comments (RFCs)

Specification documents for the Internet protocol suite, including the DNS, are published as part of the Request for Comments (RFCs) series of technical notes. The standards themselves are defined by the Internet Engineering Task Force (IETF) and the Internet Engineering Steering Group (IESG). RFCs can be obtained online at:

https://datatracker.ietf.org/doc/

Standards

[RFC974] C. Partridge. Mail Routing and the Domain System. January 1986.

[RFC1034] P.V. Mockapetris. Domain Names — Concepts and Facilities. November 1987.

[RFC1035] P. V. Mockapetris. Domain Names — Implementation and Specification. November 1987.

Proposed Standards

[RFC2181] R., R. Bush Elz. Clarifications to the DNS Specification. July 1997.

[RFC2308] M. Andrews. Negative Caching of DNS Queries. March 1998.

[RFC1995] M. Ohta. Incremental Zone Transfer in DNS. August 1996.

[RFC1996] P. Vixie. A Mechanism for Prompt Notification of Zone Changes. August 1996.

[RFC2136] P. Vixie, S. Thomson, Y. Rekhter, and J. Bound. Dynamic Updates in the Domain Name System. April 1997.

[RFC2671] P. Vixie. Extension Mechanisms for DNS (EDNS0). August 1997.

[RFC2672] M. Crawford. Non-Terminal DNS Name Redirection. August 1999.

[RFC2845] P. Vixie, O. Gudmundsson, D. Eastlake, 3rd, and B. Wellington. Secret Key Transaction Authentication for DNS (TSIG). May 2000.

[RFC2930] D. Eastlake, 3rd. Secret Key Establishment for DNS (TKEY RR). September 2000.

[RFC2931] D. Eastlake, 3rd. DNS Request and Transaction Signatures (SIG(0)s). September 2000.

[RFC3007] B. Wellington. Secure Domain Name System (DNS) Dynamic Update. November 2000.

[RFC3645] S. Kwan, P. Garg, J. Gilroy, L. Esibov, J. Westhead, and R. Hall. Generic Security Service Algorithm for Secret Key Transaction Authentication for DNS (GSS-TSIG). October 2003.

DNS Security Proposed Standards

[RFC3225] D. Conrad. Indicating Resolver Support of DNSSEC. December 2001.

[RFC3833] D. Atkins and R. Austein. Threat Analysis of the Domain Name System (DNS). August 2004.

[RFC4033] R. Arends, R. Austein, M. Larson, D. Massey, and S. Rose. DNS Security Introduction and Requirements. March 2005.

[RFC4034] R. Arends, R. Austein, M. Larson, D. Massey, and S. Rose. Resource Records for the DNS Security Extensions. March 2005.

[RFC4035] R. Arends, R. Austein, M. Larson, D. Massey, and S. Rose. Protocol Modifications for the DNS Security Extensions. March 2005.

Other Important RFCs About DNS Implementation

[RFC1535] E. Gavron. A Security Problem and Proposed Correction With Widely Deployed DNS Software. October 1993.

[RFC1536] A. Kumar, J. Postel, C. Neuman, P. Danzig, and S. Miller. Common DNS Implementation Errors and Suggested Fixes. October 1993.

[RFC1982] R. Elz and R. Bush. Serial Number Arithmetic. August 1996.

[RFC4074] Y. Morishita and T. Jinmei. Common Misbehaviour Against DNS Queries for IPv6 Addresses. May 2005.

Resource Record Types

[RFC1183] C.F. Everhart, L. A. Mamakos, R. Ullmann, and P. Mockapetris. New DNS RR Definitions. October 1990.

[RFC1706] B. Manning and R. Colella. DNS NSAP Resource Records. October 1994.

[RFC2168] R. Daniel and M. Mealling. Resolution of Uniform Resource Identifiers using the Domain Name System. June 1997.

[RFC1876] C. Davis, P. Vixie, T., and I. Dickinson. A Means for Expressing Location Information in the Domain Name System. January 1996.

[RFC2052] A. Gulbrandsen and P. Vixie. A DNS RR for Specifying the Location of Services. October 1996.

[RFC2163] A. Allocchio. Using the Internet DNS to Distribute MIXER Conformant Global Address Mapping. January 1998.

[RFC2230] R. Atkinson. Key Exchange Delegation Record for the DNS. October 1997.

[RFC2536] D. Eastlake, 3rd. DSA KEYs and SIGs in the Domain Name System (DNS). March 1999.

[RFC2537] D. Eastlake, 3rd. RSA/MD5 KEYs and SIGs in the Domain Name System (DNS). March 1999.

[RFC2538] D. Eastlake, 3rd and O. Gudmundsson. Storing Certificates in the Domain Name System (DNS). March 1999.

[RFC2539] D. Eastlake, 3rd. Storage of Diffie-Hellman Keys in the Domain Name System (DNS). March 1999.

[RFC2540] D. Eastlake, 3rd. Detached Domain Name System (DNS) Information. March 1999.

[RFC2782] A. Gulbrandsen. P. Vixie. L. Esibov. A DNS RR for specifying the location of services (DNS SRV). February 2000.

[RFC2915] M. Mealling. R. Daniel. The Naming Authority Pointer (NAPTR) DNS Resource Record. September 2000.

[RFC3110] D. Eastlake, 3rd. RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS). May 2001.

[RFC3123] P. Koch. A DNS RR Type for Lists of Address Prefixes (APL RR). June 2001.

[RFC3596] S. Thomson, C. Huitema, V. Ksinant, and M. Souissi. DNS Extensions to support IP version 6. October 2003.

[RFC3597] A. Gustafsson. Handling of Unknown DNS Resource Record (RR) Types. September 2003.

DNS and the Internet

[RFC1101] P. V. Mockapetris. DNS Encoding of Network Names and Other Types. April 1989.

[RFC1123] Braden. Requirements for Internet Hosts - Application and Support. October 1989.

[RFC1591] J. Postel. Domain Name System Structure and Delegation. March 1994.

[RFC2317] H. Eidnes, G. de Groot, and P. Vixie. Classless IN-ADDR.ARPA Delegation. March 1998.

[RFC2826] Internet Architecture Board. IAB Technical Comment on the Unique DNS Root. May 2000.

[RFC2929] D. Eastlake, 3rd, E. Brunner-Williams, and B. Manning. Domain Name System (DNS) IANA Considerations. September 2000.

DNS Operations

[RFC1033] M. Lottor. Domain administrators operations guide. November 1987.

[RFC1537] P. Beertema. Common DNS Data File Configuration Errors. October 1993.

[RFC1912] D. Barr. Common DNS Operational and Configuration Errors. February 1996.

[RFC2010] B. Manning and P. Vixie. Operational Criteria for Root Name Servers. October 1996.

[RFC2219] M. Hamilton and R. Wright. Use of DNS Aliases for Network Services. October 1997.

[RFC8906] M. Andrews and R. Bellis. A Common Operational Problem in DNS Servers: Failure to Communicate . September 2020.

Internationalized Domain Names

[RFC2825] IAB and R. Daigle. A Tangled Web: Issues of I18N, Domain Names, and the Other Internet protocols. May 2000.

[RFC3490] P. Faltstrom, P. Hoffman, and A. Costello. Internationalizing Domain Names in Applications (IDNA). March 2003.

[RFC3491] P. Hoffman and M. Blanchet. Nameprep: A Stringprep Profile for Internationalized Domain Names. March 2003.

[RFC3492] A. Costello. Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA). March 2003.

Other DNS-related RFCs

Note

Note: the following list of RFCs, although DNS-related, are not concerned with implementing software.

[RFC1464] R. Rosenbaum. Using the Domain Name System To Store Arbitrary String Attributes. May 1993.

[RFC1713] A. Romao. Tools for DNS Debugging. November 1994.

[RFC1794] T. Brisco. DNS Support for Load Balancing. April 1995.

[RFC2240] O. Vaughan. A Legal Basis for Domain Name Allocation. November 1997.

[RFC2345] J. Klensin, T. Wolf, and G. Oglesby. Domain Names and Company Name Retrieval. May 1998.

[RFC2352] O. Vaughan. A Convention For Using Legal Names as Domain Names. May 1998.

[RFC3071] J. Klensin. Reflections on the DNS, RFC 1591, and Categories of Domains. February 2001.

[RFC3258] T. Hardie. Distributing Authoritative Name Servers via Shared Unicast Addresses. April 2002.

[RFC3901] A. Durand and J. Ihren. DNS IPv6 Transport Operational Guidelines. September 2004.

Obsolete and Unimplemented Experimental RFC

[RFC1712] C. Farrell, M. Schulze, S. Pleitner, and D. Baldoni. DNS Encoding of Geographical Location. November 1994.

[RFC2673] M. Crawford. Binary Labels in the Domain Name System. August 1999.

[RFC2874] M. Crawford and C. Huitema. DNS Extensions to Support IPv6 Address Aggregation and Renumbering. July 2000.

Obsoleted DNS Security RFCs

Note

Most of these have been consolidated into RFC4033, RFC4034 and RFC4035 which collectively describe DNSSECbis.

[RFC2065] D. Eastlake, 3rd and C. Kaufman. Domain Name System Security Extensions. January 1997.

[RFC2137] D. Eastlake, 3rd. Secure Domain Name System Dynamic Update. April 1997.

[RFC2535] D. Eastlake, 3rd. Domain Name System Security Extensions. March 1999.

[RFC3008] B. Wellington. Domain Name System Security (DNSSEC) Signing Authority. November 2000.

[RFC3090] E. Lewis. DNS Security Extension Clarification on Zone Status. March 2001.

[RFC3445] D. Massey and S. Rose. Limiting the Scope of the KEY Resource Record (RR). December 2002.

[RFC3655] B. Wellington and O. Gudmundsson. Redefinition of DNS Authenticated Data (AD) bit. November 2003.

[RFC3658] O. Gudmundsson. Delegation Signer (DS) Resource Record (RR). December 2003.

[RFC3755] S. Weiler. Legacy Resolver Compatibility for Delegation Signer (DS). May 2004.

[RFC3757] O. Kolkman, J. Schlyter, and E. Lewis. Domain Name System KEY (DNSKEY) Resource Record (RR) Secure Entry Point (SEP) Flag. April 2004.

[RFC3845] J. Schlyter. DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format. August 2004.

Internet Drafts

Internet Drafts (IDs) are rough-draft working documents of the Internet Engineering Task Force. They are, in essence, RFCs in the preliminary stages of development. Implementors are cautioned not to regard IDs as archival, and they should not be quoted or cited in any formal documents unless accompanied by the disclaimer that they are "works in progress." IDs have a lifespan of six months after which they are deleted unless updated by their authors.

Other Documents About BIND

Paul Albitz and Cricket Liu. DNS and BIND. Copyright 1998 Sebastopol, CA: O'Reilly and Associates.

BIND 9.11.36 (Extended Support Version)

man.isc-hmac-fixup.html000064400000010663152530214170011027 0ustar00 isc-hmac-fixup

Name

isc-hmac-fixup — fixes HMAC keys generated by older versions of BIND

Synopsis

isc-hmac-fixup {algorithm} {secret}

DESCRIPTION

Versions of BIND 9 up to and including BIND 9.6 had a bug causing HMAC-SHA* TSIG keys which were longer than the digest length of the hash algorithm (i.e., SHA1 keys longer than 160 bits, SHA256 keys longer than 256 bits, etc) to be used incorrectly, generating a message authentication code that was incompatible with other DNS implementations.

This bug was fixed in BIND 9.7. However, the fix may cause incompatibility between older and newer versions of BIND, when using long keys. isc-hmac-fixup modifies those keys to restore compatibility.

To modify a key, run isc-hmac-fixup and specify the key's algorithm and secret on the command line. If the secret is longer than the digest length of the algorithm (64 bytes for SHA1 through SHA256, or 128 bytes for SHA384 and SHA512), then a new secret will be generated consisting of a hash digest of the old secret. (If the secret did not require conversion, then it will be printed without modification.)

SECURITY CONSIDERATIONS

Secrets that have been converted by isc-hmac-fixup are shortened, but as this is how the HMAC protocol works in operation anyway, it does not affect security. RFC 2104 notes, "Keys longer than [the digest length] are acceptable but the extra length would not significantly increase the function strength."

SEE ALSO

BIND 9 Administrator Reference Manual, RFC 2104.

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch12.html000064400000047250152530214170007176 0ustar00 AppendixD.BIND 9 DNS Library Support

BIND 9 DNS Library Support

BIND 9 DNS Library Support

This version of BIND 9 "exports" its internal libraries so that they can be used by third-party applications more easily (we call them "export" libraries in this document). Certain library functions are altered from specific BIND-only behavior to more generic behavior when used by other applications; to enable this generic behavior, the calling program initializes the libraries by calling isc_lib_register().

In addition to DNS-related APIs that are used within BIND 9, the libraries provide the following features:

  • The "DNS client" module. This is a higher-level API that provides an interface to name resolution, single DNS transaction with a particular server, and dynamic update. Regarding name resolution, it supports advanced features such as DNSSEC validation and caching. This module supports both synchronous and asynchronous mode.

  • The "IRS" (Information Retrieval System) library. It provides an interface to parse the traditional resolv.conf file and more advanced, DNS-specific configuration file for the rest of this package (see the description for the dns.conf file below).

  • As part of the IRS library, the standard address-name mapping functions, getaddrinfo() and getnameinfo(), are provided. They use the DNSSEC-aware validating resolver backend, and could use other advanced features of the BIND 9 libraries such as caching. The getaddrinfo() function resolves both A and AAAA RRs concurrently when the address family is unspecified.

  • An experimental framework to support other event libraries than BIND 9's internal event task system.

Installation

$ make install
    

Normal installation of BIND also installs library object and header files. Root privilege is normally required.

To see how to build a custom application after the installation, see lib/samples/Makefile-postinstall.in.

Known Defects/Restrictions

  • The "fixed" RRset order is not (currently) supported in the export library. To use "fixed" RRset order for, e.g., named while still building the export library even without the fixed-order support, build them separately:

    $ ./configure --enable-fixed-rrset [other flags, but not --enable-exportlib]
    $ make
    $ ./configure --enable-exportlib [other flags, but not --enable-fixed-rrset]
    $ cd lib/export
    $ make
    

  • RFC 5011 is not supported in the validating stub resolver of the export library. In fact, it is not clear whether it should be: trust anchors would be a system-wide configuration which would be managed by an administrator, while the stub resolver is used by ordinary applications run by a normal user.

  • Not all common /etc/resolv.conf options are supported in the IRS library. The only available options in this version are debug and ndots.

The dns.conf File

The IRS library supports an "advanced" configuration file related to the DNS library, for configuration parameters that would be beyond the capability of the resolv.conf file. Specifically, it is intended to provide DNSSEC-related configuration parameters. By default the path to this configuration file is /etc/dns.conf. This module is very experimental and the configuration syntax or library interfaces may change in future versions. Currently, only the trusted-keys statement is supported, whose syntax is the same as the same statement in named.conf. (See the section called “trusted-keys Statement Grammar” for details.)

Sample Applications

Some sample application programs using this API are provided for reference. The following is a brief description of these applications.

sample: a simple stub resolver utility

This sends a query of a given name (of a given optional RR type) to a specified recursive server and prints the result as a list of RRs. It can also act as a validating stub resolver if a trust anchor is given via a set of command-line options.

Usage: sample [options] server_address hostname

Options and Arguments:

-t RRtype

specifies the RR type of the query. The default is the A RR.

[-a algorithm] [-e] -k keyname -K keystring

specifies a command-line DNS key to validate the answer. For example, to specify the following DNSKEY of example.com:


example.com.3600INDNSKEY25735xxx

specify the options as follows:

-e -k example.com -K "xxx"
	      

-e means that this key is a zone's "key signing key" (also known as "secure entry point"). When -a is omitted rsasha1 is used by default.

-s domain:alt_server_address

specifies a separate recursive server address for the specific "domain". Example: -s example.com:2001:db8::1234

server_address

is an IP(v4/v6) address of the recursive server to which queries are sent.

hostname

is the domain name for the query

sample-async: a simple stub resolver, working asynchronously

This is similar to "sample", but accepts a list of (query) domain names as a separate file and resolves the names asynchronously.

Usage: sample-async [-s server_address] [-t RR_type] input_file

Options and Arguments:

-s server_address
is an IPv4 address of the recursive server to which queries are sent. (IPv6 addresses are not supported in this implementation.)
-t RR_type
specifies the RR type of the queries. The default is the A RR.
input_file
is a list of domain names to be resolved; each line consists of a single domain name. For example:


www.example.com
mx.example.net
ns.xxx.example

sample-request: a simple DNS transaction client

sends a query to a specified server, and prints the response with minimal processing. It does not act as a "stub resolver": it stops the processing once it gets any response from the server, whether it's a referral or an alias (CNAME or DNAME) that would require further queries to get the ultimate answer. In other words, this utility acts as a very simplified dig.

Usage: sample-request [-t RRtype] server_address hostname

Options and Arguments:

-t RRtype

specifies the RR type of the queries. The default is the A RR.

server_address

is an IP(v4/v6) address of the recursive server to which the query is sent.

hostname

is the domain name for the query

sample-gai: getaddrinfo() and getnameinfo() test code

is a test program to check getaddrinfo() and getnameinfo() behavior. It takes a host name as an argument, calls getaddrinfo() with the given host name, and calls getnameinfo() with the resulting IP addresses returned by getaddrinfo(). If the dns.conf file exists and defines a trust anchor, the underlying resolver acts as a validating resolver, and getaddrinfo()/getnameinfo() fails with an EAI_INSECUREDATA error when DNSSEC validation fails.

Usage: sample-gai hostname

sample-update: a simple dynamic update client program

accepts a single update command as a command-line argument, sends an update request message to the authoritative server, and shows the response from the server. In other words, this is a simplified nsupdate.

Usage: sample-update [options] (add|delete) "update data"

Options and Arguments:

-a auth_server

is an IP address of the authoritative server that has authority for the zone containing the update name. This should normally be the primary authoritative server that accepts dynamic updates. It can also be a secondary server that is configured to forward update requests to the primary server.

-k keyfile

is a TSIG key file to secure the update transaction. The keyfile format is the same as that for the nsupdate utility.

-p prerequisite

is a prerequisite for the update; only one prerequisite can be specified. The prerequisite format is the same as that accepted by the nsupdate utility.

-r recursive_server

is an IP address of a recursive server that this utility uses. A recursive server may be necessary to identify the authoritative server address to which the update request is sent.

-z zonename

is the domain name of the zone that it contains.

(add|delete)

specifies the type of update operation. Either "add" or "delete" must be specified.

"update data"

specifies the data to be updated. A typical example of the data looks like "name TTL RRtype RDATA".

Note

In practice, either -a or -r must be specified. Others can be optional; the underlying library routine tries to identify the appropriate server and the zone name for the update.

Examples: assuming the primary authoritative server of the dynamic.example.com zone has an IPv6 address 2001:db8::1234,

$ sample-update -a sample-update -k Kxxx.+nnn+mmmm.key add "foo.dynamic.example.com 30 IN A 192.168.2.1"

adds an A RR for foo.dynamic.example.com using the given key.

$ sample-update -a sample-update -k Kxxx.+nnn+mmmm.key delete "foo.dynamic.example.com 30 IN A"

removes all A RRs for foo.dynamic.example.com using the given key.

$ sample-update -a sample-update -k Kxxx.+nnn+mmmm.key delete "foo.dynamic.example.com"

removes all RRs for foo.dynamic.example.com using the given key.

nsprobe: domain/name server checker in terms of RFC 4074

checks a set of domains to ensure the name servers of the domains behave correctly in terms of RFC 4074. This is included in the set of sample programs to show how the export library can be used in a DNS-related application.

Usage: nsprobe [-d] [-v [-v...]] [-c cache_address] [input_file]

Options

-d

runs in "debug" mode. With this option, nsprobe dumps every RR it receives.

-v

increases verbosity of other normal log messages. This can be specified multiple times.

-c cache_address

specifies an IP address of a recursive (caching) name server. nsprobe uses this server to get the NS RRset of each domain and the A and/or AAAA RRsets for the name servers. The default value is 127.0.0.1.

input_file

is a file name containing a list of domain (zone) names to be probed. when omitted the standard input is used. Each line of the input file specifies a single domain name, such as "example.com". In general, this domain name must be the apex name of some DNS zone, unlike normal "host names" such as "www.example.com". nsprobe first identifies the NS RRsets for the given domain name, and sends A and AAAA queries to these servers for some widely used names under the zone; specifically, adding "www" and "ftp" to the zone name.

Library References

As of this writing, there is no formal "manual" for the libraries, except this document, header files (some of which provide pretty detailed explanations), and sample application programs.

BIND 9.11.36 (Extended Support Version)

man.rndc.html000064400000116731152530214170007143 0ustar00 rndc

Name

rndc — name server control utility

Synopsis

rndc [-b source-address] [-c config-file] [-k key-file] [-s server] [-p port] [-q] [-r] [-V] [-y key_id] {command}

DESCRIPTION

rndc controls the operation of a name server. It supersedes the ndc utility that was provided in old BIND releases. If rndc is invoked with no command line options or arguments, it prints a short summary of the supported commands and the available options and their arguments.

rndc communicates with the name server over a TCP connection, sending commands authenticated with digital signatures. In the current versions of rndc and named, the only supported authentication algorithms are HMAC-MD5 (for compatibility), HMAC-SHA1, HMAC-SHA224, HMAC-SHA256 (default), HMAC-SHA384 and HMAC-SHA512. They use a shared secret on each end of the connection. This provides TSIG-style authentication for the command request and the name server's response. All commands sent over the channel must be signed by a key_id known to the server.

rndc reads a configuration file to determine how to contact the name server and decide what algorithm and key it should use.

OPTIONS

-b source-address

Use source-address as the source address for the connection to the server. Multiple instances are permitted to allow setting of both the IPv4 and IPv6 source addresses.

-c config-file

Use config-file as the configuration file instead of the default, /etc/rndc.conf.

-k key-file

Use key-file as the key file instead of the default, /etc/rndc.key. The key in /etc/rndc.key will be used to authenticate commands sent to the server if the config-file does not exist.

-s server

server is the name or address of the server which matches a server statement in the configuration file for rndc. If no server is supplied on the command line, the host named by the default-server clause in the options statement of the rndc configuration file will be used.

-p port

Send commands to TCP port port instead of BIND 9's default control channel port, 953.

-q

Quiet mode: Message text returned by the server will not be printed except when there is an error.

-r

Instructs rndc to print the result code returned by named after executing the requested command (e.g., ISC_R_SUCCESS, ISC_R_FAILURE, etc).

-V

Enable verbose logging.

-y key_id

Use the key key_id from the configuration file. key_id must be known by named with the same algorithm and secret string in order for control message validation to succeed. If no key_id is specified, rndc will first look for a key clause in the server statement of the server being used, or if no server statement is present for that host, then the default-key clause of the options statement. Note that the configuration file contains shared secrets which are used to send authenticated control commands to name servers. It should therefore not have general read or write access.

COMMANDS

A list of commands supported by rndc can be seen by running rndc without arguments.

Currently supported commands are:

addzone zone [class [view]] configuration

Add a zone while the server is running. This command requires the allow-new-zones option to be set to yes. The configuration string specified on the command line is the zone configuration text that would ordinarily be placed in named.conf.

The configuration is saved in a file called name.nzf, where name is the name of the view, or if it contains characters that are incompatible with use as a file name, a cryptographic hash generated from the name of the view. When named is restarted, the file will be loaded into the view configuration, so that zones that were added can persist after a restart.

This sample addzone command would add the zone example.com to the default view:

$ rndc addzone example.com '{ type master; file "example.com.db"; };'

(Note the brackets and semi-colon around the zone configuration text.)

See also rndc delzone and rndc modzone.

delzone [-clean] zone [class [view]]

Delete a zone while the server is running.

If the -clean argument is specified, the zone's master file (and journal file, if any) will be deleted along with the zone. Without the -clean option, zone files must be cleaned up by hand. (If the zone is of type "slave" or "stub", the files needing to be cleaned up will be reported in the output of the rndc delzone command.)

If the zone was originally added via rndc addzone, then it will be removed permanently. However, if it was originally configured in named.conf, then that original configuration is still in place; when the server is restarted or reconfigured, the zone will come back. To remove it permanently, it must also be removed from named.conf

See also rndc addzone and rndc modzone.

dnstap ( -reopen | -roll [number] )

Close and re-open DNSTAP output files. rndc dnstap -reopen allows the output file to be renamed externally, so that named can truncate and re-open it. rndc dnstap -roll causes the output file to be rolled automatically, similar to log files; the most recent output file has ".0" appended to its name; the previous most recent output file is moved to ".1", and so on. If number is specified, then the number of backup log files is limited to that number.

dumpdb [-all|-cache|-zones|-adb|-bad|-fail] [view ...]

Dump the server's caches (default) and/or zones to the dump file for the specified views. If no view is specified, all views are dumped. (See the dump-file option in the BIND 9 Administrator Reference Manual.)

flush

Flushes the server's cache.

flushname name [view]

Flushes the given name from the view's DNS cache and, if applicable, from the view's nameserver address database, bad server cache and SERVFAIL cache.

flushtree name [view]

Flushes the given name, and all of its subdomains, from the view's DNS cache, address database, bad server cache, and SERVFAIL cache.

freeze [zone [class [view]]]

Suspend updates to a dynamic zone. If no zone is specified, then all zones are suspended. This allows manual edits to be made to a zone normally updated by dynamic update. It also causes changes in the journal file to be synced into the master file. All dynamic update attempts will be refused while the zone is frozen.

See also rndc thaw.

halt [-p]

Stop the server immediately. Recent changes made through dynamic update or IXFR are not saved to the master files, but will be rolled forward from the journal files when the server is restarted. If -p is specified named's process id is returned. This allows an external process to determine when named had completed halting.

See also rndc stop.

loadkeys zone [class [view]]

Fetch all DNSSEC keys for the given zone from the key directory. If they are within their publication period, merge them into the zone's DNSKEY RRset. Unlike rndc sign, however, the zone is not immediately re-signed by the new keys, but is allowed to incrementally re-sign over time.

This command requires that the auto-dnssec zone option be set to maintain, and also requires the zone to be configured to allow dynamic DNS. (See "Dynamic Update Policies" in the Administrator Reference Manual for more details.)

managed-keys (status | refresh | sync) [class [view]]

When run with the "status" keyword, print the current status of the managed-keys database for the specified view, or for all views if none is specified. When run with the "refresh" keyword, force an immediate refresh of all the managed-keys in the specified view, or all views. When run with the "sync" keyword, force an immediate dump of the managed-keys database to disk (in the file managed-keys.bind or (viewname.mkeys).

modzone zone [class [view]] configuration

Modify the configuration of a zone while the server is running. This command requires the allow-new-zones option to be set to yes. As with addzone, the configuration string specified on the command line is the zone configuration text that would ordinarily be placed in named.conf.

If the zone was originally added via rndc addzone, the configuration changes will be recorded permanently and will still be in effect after the server is restarted or reconfigured. However, if it was originally configured in named.conf, then that original configuration is still in place; when the server is restarted or reconfigured, the zone will revert to its original configuration. To make the changes permanent, it must also be modified in named.conf

See also rndc addzone and rndc delzone.

notify zone [class [view]]

Resend NOTIFY messages for the zone.

notrace

Sets the server's debugging level to 0.

See also rndc trace.

nta [( -class class | -dump | -force | -remove | -lifetime duration)] domain [view]

Sets a DNSSEC negative trust anchor (NTA) for domain, with a lifetime of duration. The default lifetime is configured in named.conf via the nta-lifetime option, and defaults to one hour. The lifetime cannot exceed one week.

A negative trust anchor selectively disables DNSSEC validation for zones that are known to be failing because of misconfiguration rather than an attack. When data to be validated is at or below an active NTA (and above any other configured trust anchors), named will abort the DNSSEC validation process and treat the data as insecure rather than bogus. This continues until the NTA's lifetime is elapsed.

NTAs persist across restarts of the named server. The NTAs for a view are saved in a file called name.nta, where name is the name of the view, or if it contains characters that are incompatible with use as a file name, a cryptographic hash generated from the name of the view.

An existing NTA can be removed by using the -remove option.

An NTA's lifetime can be specified with the -lifetime option. TTL-style suffixes can be used to specify the lifetime in seconds, minutes, or hours. If the specified NTA already exists, its lifetime will be updated to the new value. Setting lifetime to zero is equivalent to -remove.

If the -dump is used, any other arguments are ignored, and a list of existing NTAs is printed (note that this may include NTAs that are expired but have not yet been cleaned up).

Normally, named will periodically test to see whether data below an NTA can now be validated (see the nta-recheck option in the Administrator Reference Manual for details). If data can be validated, then the NTA is regarded as no longer necessary, and will be allowed to expire early. The -force overrides this behavior and forces an NTA to persist for its entire lifetime, regardless of whether data could be validated if the NTA were not present.

The view class can be specified with -class. The default is class IN, which is the only class for which DNSSEC is currently supported.

All of these options can be shortened, i.e., to -l, -r, -d, -f, and -c.

querylog [ on | off ]

Enable or disable query logging. (For backward compatibility, this command can also be used without an argument to toggle query logging on and off.)

Query logging can also be enabled by explicitly directing the queries category to a channel in the logging section of named.conf or by specifying querylog yes; in the options section of named.conf.

reconfig

Reload the configuration file and load new zones, but do not reload existing zone files even if they have changed. This is faster than a full reload when there is a large number of zones because it avoids the need to examine the modification times of the zones files.

recursing

Dump the list of queries named is currently recursing on, and the list of domains to which iterative queries are currently being sent. (The second list includes the number of fetches currently active for the given domain, and how many have been passed or dropped because of the fetches-per-zone option.)

refresh zone [class [view]]

Schedule zone maintenance for the given zone.

reload

Reload configuration file and zones.

reload zone [class [view]]

Reload the given zone.

retransfer zone [class [view]]

Retransfer the given slave zone from the master server.

If the zone is configured to use inline-signing, the signed version of the zone is discarded; after the retransfer of the unsigned version is complete, the signed version will be regenerated with all new signatures.

scan

Scan the list of available network interfaces for changes, without performing a full reconfig or waiting for the interface-interval timer.

secroots [-] [view ...]

Dump the server's security roots and negative trust anchors for the specified views. If no view is specified, all views are dumped.

If the first argument is "-", then the output is returned via the rndc response channel and printed to the standard output. Otherwise, it is written to the secroots dump file, which defaults to named.secroots, but can be overridden via the secroots-file option in named.conf.

See also rndc managed-keys.

showzone zone [class [view]]

Print the configuration of a running zone.

See also rndc zonestatus.

sign zone [class [view]]

Fetch all DNSSEC keys for the given zone from the key directory (see the key-directory option in the BIND 9 Administrator Reference Manual). If they are within their publication period, merge them into the zone's DNSKEY RRset. If the DNSKEY RRset is changed, then the zone is automatically re-signed with the new key set.

This command requires that the auto-dnssec zone option be set to allow or maintain, and also requires the zone to be configured to allow dynamic DNS. (See "Dynamic Update Policies" in the Administrator Reference Manual for more details.)

See also rndc loadkeys.

signing [( -list | -clear keyid/algorithm | -clear all | -nsec3param ( parameters | none ) | -serial value ) ] zone [class [view]]

List, edit, or remove the DNSSEC signing state records for the specified zone. The status of ongoing DNSSEC operations (such as signing or generating NSEC3 chains) is stored in the zone in the form of DNS resource records of type sig-signing-type. rndc signing -list converts these records into a human-readable form, indicating which keys are currently signing or have finished signing the zone, and which NSEC3 chains are being created or removed.

rndc signing -clear can remove a single key (specified in the same format that rndc signing -list uses to display it), or all keys. In either case, only completed keys are removed; any record indicating that a key has not yet finished signing the zone will be retained.

rndc signing -nsec3param sets the NSEC3 parameters for a zone. This is the only supported mechanism for using NSEC3 with inline-signing zones. Parameters are specified in the same format as an NSEC3PARAM resource record: hash algorithm, flags, iterations, and salt, in that order.

Currently, the only defined value for hash algorithm is 1, representing SHA-1. The flags may be set to 0 or 1, depending on whether you wish to set the opt-out bit in the NSEC3 chain. iterations defines the number of additional times to apply the algorithm when generating an NSEC3 hash. The salt is a string of data expressed in hexadecimal, a hyphen (`-') if no salt is to be used, or the keyword auto, which causes named to generate a random 64-bit salt.

So, for example, to create an NSEC3 chain using the SHA-1 hash algorithm, no opt-out flag, 10 iterations, and a salt value of "FFFF", use: rndc signing -nsec3param 1 0 10 FFFF zone. To set the opt-out flag, 15 iterations, and no salt, use: rndc signing -nsec3param 1 1 15 - zone.

rndc signing -nsec3param none removes an existing NSEC3 chain and replaces it with NSEC.

rndc signing -serial value sets the serial number of the zone to value. If the value would cause the serial number to go backwards it will be rejected. The primary use is to set the serial on inline signed zones.

stats

Write server statistics to the statistics file. (See the statistics-file option in the BIND 9 Administrator Reference Manual.)

status

Display status of the server. Note that the number of zones includes the internal bind/CH zone and the default ./IN hint zone if there is not an explicit root zone configured.

stop [-p]

Stop the server, making sure any recent changes made through dynamic update or IXFR are first saved to the master files of the updated zones. If -p is specified named's process id is returned. This allows an external process to determine when named had completed stopping.

See also rndc halt.

sync [-clean] [zone [class [view]]]

Sync changes in the journal file for a dynamic zone to the master file. If the "-clean" option is specified, the journal file is also removed. If no zone is specified, then all zones are synced.

thaw [zone [class [view]]]

Enable updates to a frozen dynamic zone. If no zone is specified, then all frozen zones are enabled. This causes the server to reload the zone from disk, and re-enables dynamic updates after the load has completed. After a zone is thawed, dynamic updates will no longer be refused. If the zone has changed and the ixfr-from-differences option is in use, then the journal file will be updated to reflect changes in the zone. Otherwise, if the zone has changed, any existing journal file will be removed.

See also rndc freeze.

trace

Increment the servers debugging level by one.

trace level

Sets the server's debugging level to an explicit value.

See also rndc notrace.

tsig-delete keyname [view]

Delete a given TKEY-negotiated key from the server. (This does not apply to statically configured TSIG keys.)

tsig-list

List the names of all TSIG keys currently configured for use by named in each view. The list includes both statically configured keys and dynamic TKEY-negotiated keys.

validation ( on | off | status ) [view ...]

Enable, disable, or check the current status of DNSSEC validation. Note dnssec-enable also needs to be set to yes or auto to be effective. It defaults to enabled.

zonestatus zone [class [view]]

Displays the current status of the given zone, including the master file name and any include files from which it was loaded, when it was most recently loaded, the current serial number, the number of nodes, whether the zone supports dynamic updates, whether the zone is DNSSEC signed, whether it uses automatic DNSSEC key management or inline signing, and the scheduled refresh or expiry times for the zone.

See also rndc showzone.

LIMITATIONS

There is currently no way to provide the shared secret for a key_id without using the configuration file.

Several error messages could be clearer.

SEE ALSO

rndc.conf(5), rndc-confgen(8), named(8), named.conf(5), ndc(8), BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

man.named.html000064400000044015152530214170007274 0ustar00 named

Name

named — Internet domain name server

Synopsis

named [[-4] | [-6]] [-c config-file] [-d debug-level] [-D string] [-E engine-name] [-f] [-g] [-L logfile] [-M option] [-m flag] [-n #cpus] [-p port] [-s] [-S #max-socks] [-t directory] [-U #listeners] [-u user] [-v] [-V] [-X lock-file] [-x cache-file]

DESCRIPTION

named is a Domain Name System (DNS) server, part of the BIND 9 distribution from ISC. For more information on the DNS, see RFCs 1033, 1034, and 1035.

When invoked without arguments, named will read the default configuration file /etc/named.conf, read any initial data, and listen for queries.

OPTIONS

-4

Use IPv4 only even if the host machine is capable of IPv6. -4 and -6 are mutually exclusive.

-6

Use IPv6 only even if the host machine is capable of IPv4. -4 and -6 are mutually exclusive.

-c config-file

Use config-file as the configuration file instead of the default, /etc/named.conf. To ensure that reloading the configuration file continues to work after the server has changed its working directory due to to a possible directory option in the configuration file, config-file should be an absolute pathname.

-d debug-level

Set the daemon's debug level to debug-level. Debugging traces from named become more verbose as the debug level increases.

-D string

Specifies a string that is used to identify a instance of named in a process listing. The contents of string are not examined.

-E engine-name

When applicable, specifies the hardware to use for cryptographic operations, such as a secure key store used for signing.

When BIND is built with OpenSSL PKCS#11 support, this defaults to the string "pkcs11", which identifies an OpenSSL engine that can drive a cryptographic accelerator or hardware service module. When BIND is built with native PKCS#11 cryptography (--enable-native-pkcs11), it defaults to the path of the PKCS#11 provider library specified via "--with-pkcs11".

-f

Run the server in the foreground (i.e. do not daemonize).

-g

Run the server in the foreground and force all logging to stderr.

-L logfile

Log to the file logfile by default instead of the system log.

-M option

Sets the default memory context options. Currently the only supported option is external, which causes the internal memory manager to be bypassed in favor of system-provided memory allocation functions.

-m flag

Turn on memory usage debugging flags. Possible flags are usage, trace, record, size, and mctx. These correspond to the ISC_MEM_DEBUGXXXX flags described in <isc/mem.h>.

-n #cpus

Create #cpus worker threads to take advantage of multiple CPUs. If not specified, named will try to determine the number of CPUs present and create one thread per CPU. If it is unable to determine the number of CPUs, a single worker thread will be created.

-p port

Listen for queries on port port. If not specified, the default is port 53.

-s

Write memory usage statistics to stdout on exit.

Note

This option is mainly of interest to BIND 9 developers and may be removed or changed in a future release.

-S #max-socks

Allow named to use up to #max-socks sockets. The default value is 4096 on systems built with default configuration options, and 21000 on systems built with "configure --with-tuning=large".

Warning

This option should be unnecessary for the vast majority of users. The use of this option could even be harmful because the specified value may exceed the limitation of the underlying system API. It is therefore set only when the default configuration causes exhaustion of file descriptors and the operational environment is known to support the specified number of sockets. Note also that the actual maximum number is normally a little fewer than the specified value because named reserves some file descriptors for its internal use.

-t directory

Chroot to directory after processing the command line arguments, but before reading the configuration file.

Warning

This option should be used in conjunction with the -u option, as chrooting a process running as root doesn't enhance security on most systems; the way chroot(2) is defined allows a process with root privileges to escape a chroot jail.

-U #listeners

Use #listeners worker threads to listen for incoming UDP packets on each address. If not specified, named will calculate a default value based on the number of detected CPUs: 1 for 1 CPU, and the number of detected CPUs minus one for machines with more than 1 CPU. This cannot be increased to a value higher than the number of CPUs. If -n has been set to a higher value than the number of detected CPUs, then -U may be increased as high as that value, but no higher. On Windows, the number of UDP listeners is hardwired to 1 and this option has no effect.

-u user

Setuid to user after completing privileged operations, such as creating sockets that listen on privileged ports.

Note

On Linux, named uses the kernel's capability mechanism to drop all root privileges except the ability to bind(2) to a privileged port and set process resource limits. Unfortunately, this means that the -u option only works when named is run on kernel 2.2.18 or later, or kernel 2.3.99-pre3 or later, since previous kernels did not allow privileges to be retained after setuid(2).

-v

Report the version number and exit.

-V

Report the version number and build options, and exit.

-X lock-file

Acquire a lock on the specified file at runtime; this helps to prevent duplicate named instances from running simultaneously. Use of this option overrides the lock-file option in named.conf. If set to none, the lock file check is disabled.

-x cache-file

Load data from cache-file into the cache of the default view.

Warning

This option must not be used. It is only of interest to BIND 9 developers and may be removed or changed in a future release.

SIGNALS

In routine operation, signals should not be used to control the nameserver; rndc should be used instead.

SIGHUP

Force a reload of the server.

SIGINT, SIGTERM

Shut down the server.

The result of sending any other signals to the server is undefined.

CONFIGURATION

The named configuration file is too complex to describe in detail here. A complete description is provided in the BIND 9 Administrator Reference Manual.

named inherits the umask (file creation mode mask) from the parent process. If files created by named, such as journal files, need to have custom permissions, the umask should be set explicitly in the script used to start the named process.

FILES

/etc/named.conf

The default configuration file.

/var/run/named/named.pid

The default process-id file.

SEE ALSO

RFC 1033, RFC 1034, RFC 1035, named-checkconf(8), named-checkzone(8), rndc(8), lwresd(8), named.conf(5), BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

man.dig.html000064400000122446152530214170006760 0ustar00 dig

Name

dig — DNS lookup utility

Synopsis

dig [@server] [-b address] [-c class] [-f filename] [-k filename] [-m] [-p port#] [-q name] [-t type] [-v] [-x addr] [-y [hmac:]name:key] [[-4] | [-6]] [name] [type] [class] [queryopt...]

dig [-h]

dig [global-queryopt...] [query...]

DESCRIPTION

dig is a flexible tool for interrogating DNS name servers. It performs DNS lookups and displays the answers that are returned from the name server(s) that were queried. Most DNS administrators use dig to troubleshoot DNS problems because of its flexibility, ease of use and clarity of output. Other lookup tools tend to have less functionality than dig.

Although dig is normally used with command-line arguments, it also has a batch mode of operation for reading lookup requests from a file. A brief summary of its command-line arguments and options is printed when the -h option is given. Unlike earlier versions, the BIND 9 implementation of dig allows multiple lookups to be issued from the command line.

Unless it is told to query a specific name server, dig will try each of the servers listed in /etc/resolv.conf. If no usable server addresses are found, dig will send the query to the local host.

When no command line arguments or options are given, dig will perform an NS query for "." (the root).

It is possible to set per-user defaults for dig via ${HOME}/.digrc. This file is read and any options in it are applied before the command line arguments. The -r option disables this feature, for scripts that need predictable behaviour.

The IN and CH class names overlap with the IN and CH top level domain names. Either use the -t and -c options to specify the type and class, use the -q the specify the domain name, or use "IN." and "CH." when looking up these top level domains.

SIMPLE USAGE

A typical invocation of dig looks like:

 dig @server name type 

where:

server

is the name or IP address of the name server to query. This can be an IPv4 address in dotted-decimal notation or an IPv6 address in colon-delimited notation. When the supplied server argument is a hostname, dig resolves that name before querying that name server.

If no server argument is provided, dig consults /etc/resolv.conf; if an address is found there, it queries the name server at that address. If either of the -4 or -6 options are in use, then only addresses for the corresponding transport will be tried. If no usable addresses are found, dig will send the query to the local host. The reply from the name server that responds is displayed.

name

is the name of the resource record that is to be looked up.

type

indicates what type of query is required — ANY, A, MX, SIG, etc. type can be any valid query type. If no type argument is supplied, dig will perform a lookup for an A record.

OPTIONS

-4

Use IPv4 only.

-6

Use IPv6 only.

-b address[#port]

Set the source IP address of the query. The address must be a valid address on one of the host's network interfaces, or "0.0.0.0" or "::". An optional port may be specified by appending "#<port>"

-c class

Set the query class. The default class is IN; other classes are HS for Hesiod records or CH for Chaosnet records.

-f file

Batch mode: dig reads a list of lookup requests to process from the given file. Each line in the file should be organized in the same way they would be presented as queries to dig using the command-line interface.

-i

Do reverse IPv6 lookups using the obsolete RFC 1886 IP6.INT domain, which is no longer in use. Obsolete bit string label queries (RFC 2874) are not attempted.

-k keyfile

Sign queries using TSIG using a key read from the given file. Key files can be generated using tsig-keygen(8). When using TSIG authentication with dig, the name server that is queried needs to know the key and algorithm that is being used. In BIND, this is done by providing appropriate key and server statements in named.conf.

-m

Enable memory usage debugging.

-p port

Send the query to a non-standard port on the server, instead of the default port 53. This option would be used to test a name server that has been configured to listen for queries on a non-standard port number.

-q name

The domain name to query. This is useful to distinguish the name from other arguments.

-r

Do not read options from ${HOME}/.digrc. This is useful for scripts that need predictable behaviour.

-t type

The resource record type to query. It can be any valid query type. If it is a resource record type supported in BIND 9, it can be given by the type mnemonic (such as "NS" or "AAAA"). The default query type is "A", unless the -x option is supplied to indicate a reverse lookup. A zone transfer can be requested by specifying a type of AXFR. When an incremental zone transfer (IXFR) is required, set the type to ixfr=N. The incremental zone transfer will contain the changes made to the zone since the serial number in the zone's SOA record was N.

All resource record types can be expressed as "TYPEnn", where "nn" is the number of the type. If the resource record type is not supported in BIND 9, the result will be displayed as described in RFC 3597.

-u

Print query times in microseconds instead of milliseconds.

-v

Print the version number and exit.

-x addr

Simplified reverse lookups, for mapping addresses to names. The addr is an IPv4 address in dotted-decimal notation, or a colon-delimited IPv6 address. When the -x is used, there is no need to provide the name, class and type arguments. dig automatically performs a lookup for a name like 94.2.0.192.in-addr.arpa and sets the query type and class to PTR and IN respectively. IPv6 addresses are looked up using nibble format under the IP6.ARPA domain (but see also the -i option).

-y [hmac:]keyname:secret

Sign queries using TSIG with the given authentication key. keyname is the name of the key, and secret is the base64 encoded shared secret. hmac is the name of the key algorithm; valid choices are hmac-md5, hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384, or hmac-sha512. If hmac is not specified, the default is hmac-md5 or if MD5 was disabled hmac-sha256.

NOTE: You should use the -k option and avoid the -y option, because with -y the shared secret is supplied as a command line argument in clear text. This may be visible in the output from ps(1) or in a history file maintained by the user's shell.

QUERY OPTIONS

dig provides a number of query options which affect the way in which lookups are made and the results displayed. Some of these set or reset flag bits in the query header, some determine which sections of the answer get printed, and others determine the timeout and retry strategies.

Each query option is identified by a keyword preceded by a plus sign (+). Some keywords set or reset an option. These may be preceded by the string no to negate the meaning of that keyword. Other keywords assign values to options like the timeout interval. They have the form +keyword=value. Keywords may be abbreviated, provided the abbreviation is unambiguous; for example, +cd is equivalent to +cdflag. The query options are:

+[no]aaflag

A synonym for +[no]aaonly.

+[no]aaonly

Sets the "aa" flag in the query.

+[no]additional

Display [do not display] the additional section of a reply. The default is to display it.

+[no]adflag

Set [do not set] the AD (authentic data) bit in the query. This requests the server to return whether all of the answer and authority sections have all been validated as secure according to the security policy of the server. AD=1 indicates that all records have been validated as secure and the answer is not from a OPT-OUT range. AD=0 indicate that some part of the answer was insecure or not validated. This bit is set by default.

+[no]all

Set or clear all display flags.

+[no]answer

Display [do not display] the answer section of a reply. The default is to display it.

+[no]authority

Display [do not display] the authority section of a reply. The default is to display it.

+[no]badcookie

Retry lookup with the new server cookie if a BADCOOKIE response is received.

+[no]besteffort

Attempt to display the contents of messages which are malformed. The default is to not display malformed answers.

+bufsize=B

This option sets the UDP message buffer size advertised using EDNS0 to B bytes. The maximum and minimum sizes of this buffer are 65535 and 0, respectively. +bufsize=0 disables EDNS (use +bufsize=0 +edns to send a EDNS messages with a advertised size of 0 bytes). +bufsize restores the default buffer size.

+[no]cdflag

Set [do not set] the CD (checking disabled) bit in the query. This requests the server to not perform DNSSEC validation of responses.

+[no]class

Display [do not display] the CLASS when printing the record.

+[no]cmd

Toggles the printing of the initial comment in the output, identifying the version of dig and the query options that have been applied. This option always has global effect; it cannot be set globally and then overridden on a per-lookup basis. The default is to print this comment.

+[no]comments

Toggles the display of some comment lines in the output, containing information about the packet header and OPT pseudosection, and the names of the response section. The default is to print these comments.

Other types of comments in the output are not affected by this option, but can be controlled using other command line switches. These include +[no]cmd, +[no]question, +[no]stats, and +[no]rrcomments.

+[no]cookie[=####]

Send a COOKIE EDNS option, with optional value. Replaying a COOKIE from a previous response will allow the server to identify a previous client. The default is +cookie.

+cookie is also set when +trace is set to better emulate the default queries from a nameserver.

+[no]crypto

Toggle the display of cryptographic fields in DNSSEC records. The contents of these field are unnecessary to debug most DNSSEC validation failures and removing them makes it easier to see the common failures. The default is to display the fields. When omitted they are replaced by the string "[omitted]" or in the DNSKEY case the key id is displayed as the replacement, e.g. "[ key id = value ]".

+[no]defname

Deprecated, treated as a synonym for +[no]search

+[no]dnssec

Requests DNSSEC records be sent by setting the DNSSEC OK bit (DO) in the OPT record in the additional section of the query.

+domain=somename

Set the search list to contain the single domain somename, as if specified in a domain directive in /etc/resolv.conf, and enable search list processing as if the +search option were given.

+dscp=value

Set the DSCP code point to be used when sending the query. Valid DSCP code points are in the range [0..63]. By default no code point is explicitly set.

+[no]edns[=#]

Specify the EDNS version to query with. Valid values are 0 to 255. Setting the EDNS version will cause a EDNS query to be sent. +noedns clears the remembered EDNS version. EDNS is set to 0 by default.

+[no]ednsflags[=#]

Set the must-be-zero EDNS flags bits (Z bits) to the specified value. Decimal, hex and octal encodings are accepted. Setting a named flag (e.g. DO) will silently be ignored. By default, no Z bits are set.

+[no]ednsnegotiation

Enable / disable EDNS version negotiation. By default EDNS version negotiation is enabled.

+[no]ednsopt[=code[:value]]

Specify EDNS option with code point code and optionally payload of value as a hexadecimal string. code can be either an EDNS option name (for example, NSID or ECS), or an arbitrary numeric value. +noednsopt clears the EDNS options to be sent.

+[no]expire

Send an EDNS Expire option.

+[no]fail

Do not try the next server if you receive a SERVFAIL. The default is to not try the next server which is the reverse of normal stub resolver behavior.

+[no]header-only

Send a query with a DNS header without a question section. The default is to add a question section. The query type and query name are ignored when this is set.

+[no]identify

Show [or do not show] the IP address and port number that supplied the answer when the +short option is enabled. If short form answers are requested, the default is not to show the source address and port number of the server that provided the answer.

+[no]idnin

Process [do not process] IDN domain names on input. This requires IDN SUPPORT to have been enabled at compile time.

The default is to process IDN input when standard output is a tty. The IDN processing on input is disabled when dig output is redirected to files, pipes, and other non-tty file descriptors.

+[no]idnout

Convert [do not convert] puny code on output. This requires IDN SUPPORT to have been enabled at compile time.

The default is to process puny code on output when standard output is a tty. The puny code processing on output is disabled when dig output is redirected to files, pipes, and other non-tty file descriptors.

+[no]ignore

Ignore truncation in UDP responses instead of retrying with TCP. By default, TCP retries are performed.

+[no]keepopen

Keep the TCP socket open between queries and reuse it rather than creating a new TCP socket for each lookup. The default is +nokeepopen.

+[no]mapped

Allow mapped IPv4 over IPv6 addresses to be used. The default is +mapped.

+[no]multiline

Print records like the SOA records in a verbose multi-line format with human-readable comments. The default is to print each record on a single line, to facilitate machine parsing of the dig output.

+ndots=D

Set the number of dots that have to appear in name to D for it to be considered absolute. The default value is that defined using the ndots statement in /etc/resolv.conf, or 1 if no ndots statement is present. Names with fewer dots are interpreted as relative names and will be searched for in the domains listed in the search or domain directive in /etc/resolv.conf if +search is set.

+[no]nsid

Include an EDNS name server ID request when sending a query.

+[no]nssearch

When this option is set, dig attempts to find the authoritative name servers for the zone containing the name being looked up and display the SOA record that each name server has for the zone.

+[no]onesoa

Print only one (starting) SOA record when performing an AXFR. The default is to print both the starting and ending SOA records.

+[no]opcode=value

Set [restore] the DNS message opcode to the specified value. The default value is QUERY (0).

+[no]qr

Toggles the display of the query message as it is sent. By default, the query is not printed.

+[no]question

Toggles the display of the question section of a query when an answer is returned. The default is to print the question section as a comment.

+[no]rdflag

A synonym for +[no]recurse.

+[no]recurse

Toggle the setting of the RD (recursion desired) bit in the query. This bit is set by default, which means dig normally sends recursive queries. Recursion is automatically disabled when using the +nssearch option, and when using +trace except for an initial recursive query to get the list of root servers.

+retry=T

Sets the number of times to retry UDP queries to server to T instead of the default, 2. Unlike +tries, this does not include the initial query.

+[no]rrcomments

Toggle the display of per-record comments in the output (for example, human-readable key information about DNSKEY records). The default is not to print record comments unless multiline mode is active.

+[no]search

Use [do not use] the search list defined by the searchlist or domain directive in resolv.conf (if any). The search list is not used by default.

'ndots' from resolv.conf (default 1) which may be overridden by +ndots determines if the name will be treated as relative or not and hence whether a search is eventually performed or not.

+[no]short

Provide a terse answer. The default is to print the answer in a verbose form. This option always has global effect; it cannot be set globally and then overridden on a per-lookup basis.

+[no]showsearch

Perform [do not perform] a search showing intermediate results.

+[no]sigchase

Chase DNSSEC signature chains. Requires dig be compiled with -DDIG_SIGCHASE. This feature is deprecated. Use delv instead.

+split=W

Split long hex- or base64-formatted fields in resource records into chunks of W characters (where W is rounded up to the nearest multiple of 4). +nosplit or +split=0 causes fields not to be split at all. The default is 56 characters, or 44 characters when multiline mode is active.

+[no]stats

Toggles the printing of statistics: when the query was made, the size of the reply and so on. The default behavior is to print the query statistics as a comment after each lookup.

+[no]subnet=addr[/prefix-length]

Send (don't send) an EDNS Client Subnet option with the specified IP address or network prefix.

dig +subnet=0.0.0.0/0, or simply dig +subnet=0 for short, sends an EDNS CLIENT-SUBNET option with an empty address and a source prefix-length of zero, which signals a resolver that the client's address information must not be used when resolving this query.

+[no]tcp

Use [do not use] TCP when querying name servers. The default behavior is to use UDP unless a type any or ixfr=N query is requested, in which case the default is TCP. AXFR queries always use TCP.

+timeout=T

Sets the timeout for a query to T seconds. The default timeout is 5 seconds. An attempt to set T to less than 1 will result in a query timeout of 1 second being applied.

+[no]topdown

When chasing DNSSEC signature chains perform a top-down validation. Requires dig be compiled with -DDIG_SIGCHASE. This feature is deprecated. Use delv instead.

+[no]trace

Toggle tracing of the delegation path from the root name servers for the name being looked up. Tracing is disabled by default. When tracing is enabled, dig makes iterative queries to resolve the name being looked up. It will follow referrals from the root servers, showing the answer from each server that was used to resolve the lookup.

If @server is also specified, it affects only the initial query for the root zone name servers.

+dnssec is also set when +trace is set to better emulate the default queries from a nameserver.

+tries=T

Sets the number of times to try UDP queries to server to T instead of the default, 3. If T is less than or equal to zero, the number of tries is silently rounded up to 1.

+trusted-key=####

Specifies a file containing trusted keys to be used with +sigchase. Each DNSKEY record must be on its own line.

If not specified, dig will look for /etc/trusted-key.key then trusted-key.key in the current directory.

Requires dig be compiled with -DDIG_SIGCHASE. This feature is deprecated. Use delv instead.

+[no]ttlid

Display [do not display] the TTL when printing the record.

+[no]ttlunits

Display [do not display] the TTL in friendly human-readable time units of "s", "m", "h", "d", and "w", representing seconds, minutes, hours, days and weeks. Implies +ttlid.

+[no]unknownformat

Print all RDATA in unknown RR type presentation format (RFC 3597). The default is to print RDATA for known types in the type's presentation format.

+[no]vc

Use [do not use] TCP when querying name servers. This alternate syntax to +[no]tcp is provided for backwards compatibility. The "vc" stands for "virtual circuit".

+[no]zflag

Set [do not set] the last unassigned DNS header flag in a DNS query. This flag is off by default.

MULTIPLE QUERIES

The BIND 9 implementation of dig supports specifying multiple queries on the command line (in addition to supporting the -f batch file option). Each of those queries can be supplied with its own set of flags, options and query options.

In this case, each query argument represent an individual query in the command-line syntax described above. Each consists of any of the standard options and flags, the name to be looked up, an optional query type and class and any query options that should be applied to that query.

A global set of query options, which should be applied to all queries, can also be supplied. These global query options must precede the first tuple of name, class, type, options, flags, and query options supplied on the command line. Any global query options (except the +[no]cmd option) can be overridden by a query-specific set of query options. For example:

dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr

shows how dig could be used from the command line to make three lookups: an ANY query for www.isc.org, a reverse lookup of 127.0.0.1 and a query for the NS records of isc.org. A global query option of +qr is applied, so that dig shows the initial query it made for each lookup. The final query has a local query option of +noqr which means that dig will not print the initial query when it looks up the NS records for isc.org.

IDN SUPPORT

If dig has been built with IDN (internationalized domain name) support, it can accept and display non-ASCII domain names. dig appropriately converts character encoding of domain name before sending a request to DNS server or displaying a reply from the server. If you'd like to turn off the IDN support for some reason, use parameters +noidnin and +noidnout.

FILES

/etc/resolv.conf

${HOME}/.digrc

SEE ALSO

delv(1), host(1), named(8), dnssec-keygen(8), RFC 1035.

BUGS

There are probably too many query options.

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch05.html000064400000014025152530214170007172 0ustar00 Chapter5.The BIND 9 Lightweight Resolver

Chapter5.The BIND 9 Lightweight Resolver

The Lightweight Resolver Library

Traditionally, applications have been linked with a stub resolver library that sends recursive DNS queries to a local caching name server.

At first, IPv6 introduced new complexity into the resolution process, such as following A6 chains and DNAME records, and simultaneous lookup of IPv4 and IPv6 addresses. Though most of the complexity was then removed, these are hard or impossible to implement in a traditional stub resolver.

BIND 9 therefore can also provide resolution services to local clients using a combination of a lightweight resolver library and a resolver daemon process running on the local host. These communicate using a simple UDP-based protocol, the "lightweight resolver protocol," that is distinct from and simpler than the full DNS protocol.

Running a Resolver Daemon

To use the lightweight resolver interface, the system must run the resolver daemon lwresd or a local name server configured with a lwres statement.

By default, applications using the lightweight resolver library make UDP requests to the IPv4 loopback address (127.0.0.1) on port 921. The address can be overridden by lwserver lines in /etc/resolv.conf.

The lwresd daemon is essentially a caching-only name server that responds to requests using the lightweight resolver protocol rather than the DNS protocol. Because it needs to run on each host, it is designed to require no or minimal configuration. Unless otherwise instructed, it uses the name servers listed on nameserver lines in /etc/resolv.conf as forwarders, but is also capable of doing the resolution autonomously if none are specified.

The lwresd daemon may also be configured with a named.conf-style configuration file, in /etc/lwresd.conf by default. A name server may also be configured to act as a lightweight resolver daemon using the lwres statement in named.conf.

The number of client queries that the lwresd daemon serves can be set using the lwres-tasks and lwres-clients statements in the configuration.

BIND 9.11.36 (Extended Support Version)

man.ddns-confgen.html000064400000022224152530214170010553 0ustar00 ddns-confgen

Name

ddns-confgen — ddns key generation tool

Synopsis

tsig-keygen [-a algorithm] [-h] [-r randomfile] [name]

ddns-confgen [-a algorithm] [-h] [-k keyname] [-q] [-r randomfile] [ -s name | -z zone ]

DESCRIPTION

tsig-keygen and ddns-confgen are invocation methods for a utility that generates keys for use in TSIG signing. The resulting keys can be used, for example, to secure dynamic DNS updates to a zone or for the rndc command channel.

When run as tsig-keygen, a domain name can be specified on the command line which will be used as the name of the generated key. If no name is specified, the default is tsig-key.

When run as ddns-confgen, the generated key is accompanied by configuration text and instructions that can be used with nsupdate and named when setting up dynamic DNS, including an example update-policy statement. (This usage similar to the rndc-confgen command for setting up command channel security.)

Note that named itself can configure a local DDNS key for use with nsupdate -l: it does this when a zone is configured with update-policy local;. ddns-confgen is only needed when a more elaborate configuration is required: for instance, if nsupdate is to be used from a remote system.

OPTIONS

-a algorithm

Specifies the algorithm to use for the TSIG key. Available choices are: hmac-md5, hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384 and hmac-sha512. The default is hmac-sha256. Options are case-insensitive, and the "hmac-" prefix may be omitted.

-h

Prints a short summary of options and arguments.

-k keyname

Specifies the key name of the DDNS authentication key. The default is ddns-key when neither the -s nor -z option is specified; otherwise, the default is ddns-key as a separate label followed by the argument of the option, e.g., ddns-key.example.com. The key name must have the format of a valid domain name, consisting of letters, digits, hyphens and periods.

-q

(ddns-confgen only.) Quiet mode: Print only the key, with no explanatory text or usage examples; This is essentially identical to tsig-keygen.

-r randomfile

Specifies a source of random data for generating the authorization. If the operating system does not provide a /dev/random or equivalent device, the default source of randomness is keyboard input. randomdev specifies the name of a character device or file containing random data to be used instead of the default. The special value keyboard indicates that keyboard input should be used.

-s name

(ddns-confgen only.) Generate configuration example to allow dynamic updates of a single hostname. The example named.conf text shows how to set an update policy for the specified name using the "name" nametype. The default key name is ddns-key.name. Note that the "self" nametype cannot be used, since the name to be updated may differ from the key name. This option cannot be used with the -z option.

-z zone

(ddns-confgen only.) Generate configuration example to allow dynamic updates of a zone: The example named.conf text shows how to set an update policy for the specified zone using the "zonesub" nametype, allowing updates to all subdomain names within that zone. This option cannot be used with the -s option.

SEE ALSO

nsupdate(1), named.conf(5), named(8), BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch02.html000064400000015770152530214170007177 0ustar00 Chapter2.BIND Resource Requirements

Chapter2.BIND Resource Requirements

Hardware requirements

DNS hardware requirements have traditionally been quite modest. For many installations, servers that have been retired from active duty have performed admirably as DNS servers.

However, the DNSSEC features of BIND 9 may be quite CPU-intensive, so organizations that make heavy use of these features may wish to consider larger systems for these applications. BIND 9 is fully multithreaded, allowing full utilization of multiprocessor systems for installations that need it.

CPU Requirements

CPU requirements for BIND 9 range from i386-class machines, for serving static zones without caching, to enterprise-class machines to process many dynamic updates and DNSSEC-signed zones, serving many thousands of queries per second.

Memory Requirements

Server memory must be sufficient to hold both the cache and the zones loaded from disk. The max-cache-size option can limit the amount of memory used by the cache, at the expense of reducing cache hit rates and causing more DNS traffic. If additional section caching (the section called “Additional Section Caching”) is enabled, the max-acache-size option can be used to limit the amount of memory used by the mechanism. It is still good practice to have enough memory to load all zone and cache data into memory; unfortunately, the best way to determine this for a given installation is to watch the name server in operation. After a few weeks, the server process should reach a relatively stable size where entries are expiring from the cache as fast as they are being inserted.

Name Server-Intensive Environment Issues

For name server-intensive environments, there are two configurations that may be used. The first is one where clients and any second-level internal name servers query a main name server, which has enough memory to build a large cache; this approach minimizes the bandwidth used by external name lookups. The second alternative is to set up second-level internal name servers to make queries independently. In this configuration, none of the individual machines need to have as much memory or CPU power as in the first alternative, but this has the disadvantage of making many more external queries, as none of the name servers share their cached data.

Supported Operating Systems

ISC BIND 9 compiles and runs on many Unix-like operating systems and on Microsoft Windows Server 2012 R2, 2016 and Windows 10. For an up-to-date list of supported systems, see the PLATFORMS.md file in the top-level directory of the BIND 9 source distribution.

BIND 9.11.36 (Extended Support Version)

man.dnssec-dsfromkey.html000064400000027473152530214170011501 0ustar00 dnssec-dsfromkey

Name

dnssec-dsfromkey — DNSSEC DS RR generation tool

Synopsis

dnssec-dsfromkey [ -1 | -2 | -a alg ] [ -C | -l domain ] [-T TTL] [-v level] [-K directory] {keyfile}

dnssec-dsfromkey [ -1 | -2 | -a alg ] [ -C | -l domain ] [-T TTL] [-v level] [-c class] [-A] {-f file} [dnsname]

dnssec-dsfromkey [ -1 | -2 | -a alg ] [ -C | -l domain ] [-T TTL] [-v level] [-c class] [-K directory] {-s} {dnsname}

dnssec-dsfromkey [ -h | -V ]

DESCRIPTION

The dnssec-dsfromkey command outputs DS (Delegation Signer) resource records (RRs) and other similarly-constructed RRs: with the -l option it outputs DLV (DNSSEC Lookaside Validation) RRs; or with the -C it outputs CDS (Child DS) RRs.

The input keys can be specified in a number of ways:

By default, dnssec-dsfromkey reads a key file named like Knnnn.+aaa+iiiii.key, as generated by dnssec-keygen.

With the -f file option, dnssec-dsfromkey reads keys from a zone file or partial zone file (which can contain just the DNSKEY records).

With the -s option, dnssec-dsfromkey reads a keyset- file, as generated by dnssec-keygen -C.

OPTIONS

-1

An abbreviation for -a SHA1

-2

An abbreviation for -a SHA-256

-a algorithm

Specify a digest algorithm to use when converting DNSKEY records to DS records. This option can be repeated, so that multiple DS records are created for each DNSKEY record.

The algorithm must be one of SHA-1, SHA-256, or SHA-384. These values are case insensitive, and the hyphen may be omitted. If no algorithm is specified, the default is to use both SHA-1 and SHA-256.

-A

Include ZSKs when generating DS records. Without this option, only keys which have the KSK flag set will be converted to DS records and printed. Useful only in -f zone file mode.

-c class

Specifies the DNS class (default is IN). Useful only in -s keyset or -f zone file mode.

-C

Generate CDS records rather than DS records. This is mutually exclusive with the -l option for generating DLV records.

-f file

Zone file mode: dnssec-dsfromkey's final dnsname argument is the DNS domain name of a zone whose master file can be read from file. If the zone name is the same as file, then it may be omitted.

If file is "-", then the zone data is read from the standard input. This makes it possible to use the output of the dig command as input, as in:

dig dnskey example.com | dnssec-dsfromkey -f - example.com

-h

Prints usage information.

-K directory

Look for key files or keyset- files in directory.

-l domain

Generate a DLV set instead of a DS set. The specified domain is appended to the name for each record in the set. This is mutually exclusive with the -C option for generating CDS records.

-s

Keyset mode: dnssec-dsfromkey's final dnsname argument is the DNS domain name used to locate a keyset- file.

-T TTL

Specifies the TTL of the DS records. By default the TTL is omitted.

-v level

Sets the debugging level.

-V

Prints version information.

EXAMPLE

To build the SHA-256 DS RR from the Kexample.com.+003+26160 keyfile name, you can issue the following command:

dnssec-dsfromkey -2 Kexample.com.+003+26160

The command would print something like:

example.com. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0C5EA0B94

FILES

The keyfile can be designated by the key identification Knnnn.+aaa+iiiii or the full file name Knnnn.+aaa+iiiii.key as generated by dnssec-keygen(8).

The keyset file name is built from the directory, the string keyset- and the dnsname.

CAVEAT

A keyfile error can give a "file not found" even if the file exists.

SEE ALSO

dnssec-keygen(8), dnssec-signzone(8), BIND 9 Administrator Reference Manual, RFC 3658 (DS RRs), RFC 4431 (DLV RRs), RFC 4509 (SHA-256 for DS RRs), RFC 6605 (SHA-384 for DS RRs), RFC 7344 (CDS and CDNSKEY RRs).

BIND 9.11.36 (Extended Support Version)

README000064400000067517152530214170005444 0ustar00README BIND 9 Contents 1. Introduction 2. Reporting bugs and getting help 3. Contributing to BIND 4. BIND 9.11 features 5. Building BIND 6. macOS 7. Dependencies 8. Compile-time options 9. Automated testing 10. Documentation 11. Change log 12. Acknowledgments Introduction BIND (Berkeley Internet Name Domain) is a complete, highly portable implementation of the DNS (Domain Name System) protocol. The BIND name server, named, is able to serve as an authoritative name server, recursive resolver, DNS forwarder, or all three simultaneously. It implements views for split-horizon DNS, automatic DNSSEC zone signing and key management, catalog zones to facilitate provisioning of zone data throughout a name server constellation, response policy zones (RPZ) to protect clients from malicious data, response rate limiting (RRL) and recursive query limits to reduce distributed denial of service attacks, and many other advanced DNS features. BIND also includes a suite of administrative tools, including the dig and delv DNS lookup tools, nsupdate for dynamic DNS zone updates, rndc for remote name server administration, and more. BIND 9 is a complete re-write of the BIND architecture that was used in versions 4 and 8. Internet Systems Consortium (https://www.isc.org), a 501 (c)(3) public benefit corporation dedicated to providing software and services in support of the Internet infrastructure, developed BIND 9 and is responsible for its ongoing maintenance and improvement. BIND is open source software licensed under the terms of ISC License for all versions up to and including BIND 9.10, and the Mozilla Public License version 2.0 for all subsequent versions. For a summary of features introduced in past major releases of BIND, see the file HISTORY. For a detailed list of changes made throughout the history of BIND 9, see the file CHANGES. See below for details on the CHANGES file format. For up-to-date versions and release notes, see https://www.isc.org/ download/. Reporting bugs and getting help To report non-security-sensitive bugs or request new features, you may open an Issue in the BIND 9 project on the ISC GitLab server at https:// gitlab.isc.org/isc-projects/bind9. Please note that, unless you explicitly mark the newly created Issue as "confidential", it will be publicly readable. Please do not include any information in bug reports that you consider to be confidential unless the issue has been marked as such. In particular, if submitting the contents of your configuration file in a non-confidential Issue, it is advisable to obscure key secrets: this can be done automatically by using named-checkconf -px. If the bug you are reporting is a potential security issue, such as an assertion failure or other crash in named, please do NOT use GitLab to report it. Instead, send mail to security-officer@isc.org using our OpenPGP key to secure your message. (Information about OpenPGP and links to our key can be found at https://www.isc.org/pgpkey.) Please do not discuss the bug on any public mailing list. For a general overview of ISC security policies, read the Knowledge Base article at https://kb.isc.org/docs/aa-00861. Professional support and training for BIND are available from ISC at https://www.isc.org/support. To join the BIND Users mailing list, or view the archives, visit https:// lists.isc.org/mailman/listinfo/bind-users. If you're planning on making changes to the BIND 9 source code, you may also want to join the BIND Workers mailing list, at https://lists.isc.org/ mailman/listinfo/bind-workers. Contributing to BIND ISC maintains a public git repository for BIND; details can be found at http://www.isc.org/git/. Information for BIND contributors can be found in the following files: - General information: doc/dev/contrib.md - BIND 9 code style: doc/dev/ style.md - BIND architecture and developer guide: doc/dev/dev.md Patches for BIND may be submitted as merge requests in the ISC GitLab server at at https://gitlab.isc.org/isc-projects/bind9/merge_requests. By default, external contributors don't have ability to fork BIND in the GitLab server, but if you wish to contribute code to BIND, you may request permission to do so. Thereafter, you can create git branches and directly submit requests that they be reviewed and merged. If you prefer, you may also submit code by opening a GitLab Issue and including your patch as an attachment, preferably generated by git format-patch. BIND 9.11 features BIND 9.11.0 includes a number of changes from BIND 9.10 and earlier releases. New features include: • Added support for Catalog Zones, a new method for provisioning servers: a list of zones to be served is stored in a DNS zone, along with their configuration parameters. Changes to the catalog zone are propagated to slaves via normal AXFR/IXFR, whereupon the zones that are listed in it are automatically added, deleted or reconfigured. • Added support for "dnstap", a fast and flexible method of capturing and logging DNS traffic. • Added support for "dyndb", a new API for loading zone data from an external database, developed by Red Hat for the FreeIPA project. • "fetchlimit" quotas are now compiled in by default. These are for the use of recursive resolvers that are are under high query load for domains whose authoritative servers are nonresponsive or are experiencing a denial of service attack: □ fetches-per-server limits the number of simultaneous queries that can be sent to any single authoritative server. The configured value is a starting point; it is automatically adjusted downward if the server is partially or completely non-responsive. The algorithm used to adjust the quota can be configured via the "fetch-quota-params" option. □ fetches-per-zone limits the number of simultaneous queries that can be sent for names within a single domain. (Note: Unlike fetches-per-server, this value is not self-tuning.) □ New stats counters have been added to count queries spilled due to these quotas. • Added a new dnssec-keymgr key maintenance utility, which can generate or update keys as needed to ensure that a zone's keys match a defined DNSSEC policy. • The experimental "SIT" feature in BIND 9.10 has been renamed "COOKIE" and is no longer optional. EDNS COOKIE is a mechanism enabling clients to detect off-path spoofed responses, and servers to detect spoofed-source queries. Clients that identify themselves using COOKIE options are not subject to response rate limiting (RRL) and can receive larger UDP responses. • SERVFAIL responses can now be cached for a limited time (defaulting to 1 second, with an upper limit of 30). This can reduce the frequency of retries when a query is persistently failing. • Added an nsip-wait-recurse switch to RPZ. This causes NSIP rules to be skipped if a name server IP address isn't in the cache yet; the address will be looked up and the rule will be applied on future queries. • Added a Python RNDC module. This allows multiple commands to sent over a persistent RNDC channel, which saves time. • The controls block in named.conf can now grant read-only rndc access to specified clients or keys. Read-only clients could, for example, check rndc status but could not reconfigure or shut down the server. • rndc commands can now return arbitrarily large amounts of text to the caller. • The zone serial number of a dynamically updatable zone can now be set via rndc signing -serial . This allows inline-signing zones to be set to a specific serial number. • The new rndc nta command can be used to set a Negative Trust Anchor (NTA), disabling DNSSEC validation for a specific domain; this can be used when responses from a domain are known to be failing validation due to administrative error rather than because of a spoofing attack. Negative trust anchors are strictly temporary; by default they expire after one hour, but can be configured to last up to one week. • rndc delzone can now be used on zones that were not originally created by "rndc addzone". • rndc modzone reconfigures a single zone, without requiring the entire server to be reconfigured. • rndc showzone displays the current configuration of a zone. • rndc managed-keys can be used to check the status of RFC 5001 managed trust anchors, or to force trust anchors to be refreshed. • max-cache-size can now be set to a percentage of available memory. The default is 90%. • Update forwarding performance has been improved by allowing a single TCP connection to be shared by multiple updates. • The EDNS Client Subnet (ECS) option is now supported for authoritative servers; if a query contains an ECS option then ACLs containing geoip or ecs elements can match against the the address encoded in the option. This can be used to select a view for a query, so that different answers can be provided depending on the client network. • The EDNS EXPIRE option has been implemented on the client side, allowing a slave server to set the expiration timer correctly when transferring zone data from another slave server. • The key generation and manipulation tools (dnssec-keygen, dnssec-settime, dnssec-importkey, dnssec-keyfromlabel) now take -Psync and -Dsync options to set the publication and deletion times of CDS and CDNSKEY parent-synchronization records. Both named and dnssec-signzone can now publish and remove these records at the scheduled times. • A new minimal-any option reduces the size of UDP responses for query type ANY by returning a single arbitrarily selected RRset instead of all RRsets. • A new masterfile-style zone option controls the formatting of text zone files: When set to full, a zone file is dumped in single-line-per-record format. • serial-update-method can now be set to date. On update, the serial number will be set to the current date in YYYYMMDDNN format. • dnssec-signzone -N date sets the serial number to YYYYMMDDNN. • named -L causes named to send log messages to the specified file by default instead of to the system log. • dig +ttlunits prints TTL values with time-unit suffixes: w, d, h, m, s for weeks, days, hours, minutes, and seconds. • dig +unknownformat prints dig output in RFC 3597 "unknown record" presentation format. • dig +ednsopt allows dig to set arbitrary EDNS options on requests. • dig +ednsflags allows dig to set yet-to-be-defined EDNS flags on requests. • mdig is an alternate version of dig which sends multiple pipelined TCP queries to a server. Instead of waiting for a response after sending a query, it sends all queries immediately and displays responses in the order received. • serial-query-rate no longer controls NOTIFY messages. These are separately controlled by notify-rate and startup-notify-rate. • nsupdate now performs check-names processing by default on records to be added. This can be disabled with check-names no. • The statistics channel now supports DEFLATE compression, reducing the size of the data sent over the network when querying statistics. • New counters have been added to the statistics channel to track the sizes of incoming queries and outgoing responses in histogram buckets, as specified in RSSAC002. • A new NXDOMAIN redirect method (option nxdomain-redirect) has been added, allowing redirection to a specified DNS namespace instead of a single redirect zone. • When starting up, named now ensures that no other named process is already running. • Files created by named to store information, including mkeys and nzf files, are now named after their corresponding views unless the view name contains characters incompatible with use as a filename. Old style filenames (based on the hash of the view name) will still work. BIND 9.11.1 BIND 9.11.1 is a maintenance release, and addresses the security flaws disclosed in CVE-2016-6170, CVE-2016-8864, CVE-2016-9131, CVE-2016-9147, CVE-2016-9444, CVE-2016-9778, CVE-2017-3135, CVE-2017-3136, CVE-2017-3137 and CVE-2017-3138. BIND 9.11.2 BIND 9.11.2 is a maintenance release, and addresses the security flaws disclosed in CVE-2017-3140, CVE-2017-3141, CVE-2017-3142 and CVE-2017-3143. It also addresses several bugs related to the use of an LMDB database to store data related to zones added via rndc addzone or catalog zones. BIND 9.11.3 BIND 9.11.3 is a maintenance release, and addresses the security flaw disclosed in CVE-2017-3145. BIND 9.11.4 BIND 9.11.4 is a maintenance release, and addresses the security flaw disclosed in CVE-2018-5738. It also introduces "root key sentinel" support, enabling validating resolvers to indicate via a special query which trust anchors are configured for the root zone. BIND 9.11.5 BIND 9.11.5 is a maintenance release, and also addresses CVE-2018-5741 by correcting faulty documentation and introducing the following new feature: • New krb5-selfsub and ms-selfsub rule types for update-policy statements allow updating of subdomains based on a Kerberos or Active Directory machine principal. BIND 9.11.6 BIND 9.11.6 is a maintenance release, and also addresses the security flaws disclosed in CVE-2018-5743, CVE-2018-5745, CVE-2018-5744, and CVE-2019-6465. BIND 9.11.7 BIND 9.11.7 is a maintenance release, and also addresses the security flaw disclosed in CVE-2018-5743. BIND 9.11.8 BIND 9.11.8 is a maintenance release, and also addresses the security flaw disclosed in CVE-2019-6471. BIND 9.11.9 BIND 9.11.9 is a maintenance release, and also adds support for the new MaxMind GeoIP2 geolocation API when built with configure --with-geoip2. BIND 9.11.10 BIND 9.11.10 is a maintenance release. BIND 9.11.11 BIND 9.11.11 is a maintenance release. BIND 9.11.12 BIND 9.11.12 is a maintenance release. BIND 9.11.13 BIND 9.11.13 is a maintenance release, and also addresses the security vulnerability disclosed in CVE-2019-6477. BIND 9.11.14 BIND 9.11.14 is a maintenance release. BIND 9.11.15 BIND 9.11.15 is a maintenance release. BIND 9.11.16 BIND 9.11.16 is a maintenance release. BIND 9.11.17 BIND 9.11.17 is a maintenance release. BIND 9.11.18 BIND 9.11.18 is a maintenance release. BIND 9.11.19 BIND 9.11.19 is a maintenance release, and also addresses the security vulnerabilities disclosed in CVE-2020-8616 and CVE-2020-8617. BIND 9.11.20 BIND 9.11.20 is a maintenance release, and also addresses the security vulnerability disclosed in CVE-2020-8619. BIND 9.11.21 BIND 9.11.21 is a maintenance release. BIND 9.11.22 BIND 9.11.22 is a maintenance release, and also addresses the security vulnerabilities disclosed in CVE-2020-8622, CVE-2020-8623, and CVE-2020-8624. BIND 9.11.23 BIND 9.11.23 is a maintenance release. BIND 9.11.24 BIND 9.11.24 is a maintenance release. BIND 9.11.25 BIND 9.11.25 is a maintenance release. BIND 9.11.26 BIND 9.11.26 is a maintenance release. BIND 9.11.27 BIND 9.11.27 is a maintenance release. BIND 9.11.28 BIND 9.11.28 is a maintenance release, and also addresses the security vulnerability disclosed in CVE-2020-8625. BIND 9.11.29 BIND 9.11.29 is a maintenance release. BIND 9.11.30 This release was withdrawn. BIND 9.11.31 BIND 9.11.31 is a maintenance release, and also addresses the security vulnerabilities disclosed in CVE-2021-25214, CVE-2021-25215, and CVE-2021-25216. BIND 9.11.32 BIND 9.11.32 is a maintenance release. BIND 9.11.33 BIND 9.11.33 is a maintenance release. BIND 9.11.34 BIND 9.11.34 is a maintenance release. BIND 9.11.35 BIND 9.11.35 is a maintenance release. BIND 9.11.36 BIND 9.11.36 is a maintenance release, and also addresses the security vulnerability disclosed in CVE-2021-25219. Building BIND Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler, basic POSIX support, and a 64-bit integer type. Successful builds have been observed on many versions of Linux and UNIX, including RHEL/CentOS/ Oracle Linux, Fedora, Debian, Ubuntu, SLES, openSUSE, Slackware, Alpine, FreeBSD, NetBSD, OpenBSD, macOS, Solaris, OpenIndiana, OmniOS CE, HP-UX, and OpenWRT. BIND is also available for Windows Server 2008 and higher. See win32utils/ build.txt for details on building for Windows systems. To build on a UNIX or Linux system, use: $ ./configure $ make If you're planning on making changes to the BIND 9 source, you should run make depend. If you're using Emacs, you might find make tags helpful. Several environment variables that can be set before running configure will affect compilation. Significant ones are: Variable Description CC The C compiler to use. configure tries to figure out the right one for supported systems. C compiler flags. Defaults to include -g and/or -O2 as CFLAGS supported by the compiler. Please include '-g' if you need to set CFLAGS. System header file directories. Can be used to specify STD_CINCLUDES where add-on thread or IPv6 support is, for example. Defaults to empty string. Any additional preprocessor symbols you want defined. STD_CDEFINES Defaults to empty string. For a list of possible settings, see the file OPTIONS. LDFLAGS Linker flags. Defaults to empty string. BUILD_CC Needed when cross-compiling: the native C compiler to use when building for the target system. BUILD_CFLAGS CFLAGS for the target system during cross-compiling. BUILD_CPPFLAGS CPPFLAGS for the target system during cross-compiling. BUILD_LDFLAGS LDFLAGS for the target system during cross-compiling. BUILD_LIBS LIBS for the target system during cross-compiling. Additional environment variables affecting the build are listed at the end of the configure help text, which can be obtained by running the command: $ ./configure --help On platforms where neither the C11 Atomic operations library nor custom ISC atomic operations are available, updating the statistics counters is not locked due to performance reasons and therefore the counters might be inaccurate. Anybody building BIND 9 is strongly advised to use a modern C11 compiler with C11 Atomic operations library support. macOS Building on macOS assumes that the "Command Tools for Xcode" is installed. This can be downloaded from https://developer.apple.com/download/more/ or, if you have Xcode already installed, you can run xcode-select --install. (Note that an Apple ID may be required to access the download page.) Dependencies Portions of BIND that are written in Python, including dnssec-keymgr, dnssec-coverage, dnssec-checkds, and some of the system tests, require the argparse, ply and distutils.core modules to be available. argparse is a standard module as of Python 2.7 and Python 3.2. ply is available from https://pypi.python.org/pypi/ply. distutils.core is required for installation. Compile-time options To see a full list of configuration options, run configure --help. On most platforms, BIND 9 is built with multithreading support, allowing it to take advantage of multiple CPUs. You can configure this by specifying --enable-threads or --disable-threads on the configure command line. The default is to enable threads, except on some older operating systems on which threads are known to have had problems in the past. (Note: Prior to BIND 9.10, the default was to disable threads on Linux systems; this has now been reversed. On Linux systems, the threaded build is known to change BIND's behavior with respect to file permissions; it may be necessary to specify a user with the -u option when running named.) To build shared libraries, specify --with-libtool on the configure command line. For the server to support DNSSEC, you need to build it with crypto support. To use OpenSSL, you should have OpenSSL 1.0.2e or newer installed. If the OpenSSL library is installed in a nonstandard location, specify the prefix using --with-openssl= on the configure command line. To use a PKCS#11 hardware service module for cryptographic operations, specify the path to the PKCS#11 provider library using --with-pkcs11=, and configure BIND with "--enable-native-pkcs11". To support the HTTP statistics channel, the server must be linked with at least one of the following libraries: libxml2 http://xmlsoft.org or json-c https://github.com/json-c/json-c. If these are installed at a nonstandard location, then: • for libxml2, specify the prefix using --with-libxml2=/prefix, • for json-c, adjust PKG_CONFIG_PATH. To support compression on the HTTP statistics channel, the server must be linked against libzlib. If this is installed in a nonstandard location, specify the prefix using --with-zlib=/prefix. To support storing configuration data for runtime-added zones in an LMDB database, the server must be linked with liblmdb. If this is installed in a nonstandard location, specify the prefix using with-lmdb=/prefix. To support GeoIP location-based ACLs, the server must be linked with libGeoIP. This is not turned on by default; BIND must be configured with "--with-geoip". If the library is installed in a nonstandard location, use specify the prefix using "--with-geoip=/prefix". For DNSTAP packet logging, you must have installed libfstrm https:// github.com/farsightsec/fstrm and libprotobuf-c https:// developers.google.com/protocol-buffers, and BIND must be configured with --enable-dnstap. Certain compiled-in constants and default settings can be increased to values better suited to large servers with abundant memory resources (e.g, 64-bit servers with 12G or more of memory) by specifying --with-tuning= large on the configure command line. This can improve performance on big servers, but will consume more memory and may degrade performance on smaller systems. On some platforms it is necessary to explicitly request large file support to handle files bigger than 2GB. This can be done by using --enable-largefile on the configure command line. Support for the "fixed" rrset-order option can be enabled or disabled by specifying --enable-fixed-rrset or --disable-fixed-rrset on the configure command line. By default, fixed rrset-order is disabled to reduce memory footprint. If your operating system has integrated support for IPv6, it will be used automatically. If you have installed KAME IPv6 separately, use --with-kame [=PATH] to specify its location. The --enable-querytrace option causes named to log every step of processing every query. This should only be enabled when debugging, because it has a significant negative impact on query performance. make install will install named and the various BIND 9 libraries. By default, installation is into /usr/local, but this can be changed with the --prefix option when running configure. You may specify the option --sysconfdir to set the directory where configuration files like named.conf go by default, and --localstatedir to set the default parent directory of run/named.pid. For backwards compatibility with BIND 8, --sysconfdir defaults to /etc and --localstatedir defaults to /var if no --prefix option is given. If there is a --prefix option, sysconfdir defaults to $prefix/etc and localstatedir defaults to $prefix/var. Automated testing A system test suite can be run with make test. The system tests require you to configure a set of virtual IP addresses on your system (this allows multiple servers to run locally and communicate with one another). These IP addresses can be configured by running the command bin/tests/system/ ifconfig.sh up as root. Some tests require Perl and the Net::DNS and/or IO::Socket::INET6 modules, and will be skipped if these are not available. Some tests require Python and the dnspython module and will be skipped if these are not available. See bin/tests/system/README for further details. Unit tests are implemented using the CMocka unit testing framework. To build them, use configure --with-cmocka. Execution of tests is done by the Kyua test execution engine; if the kyua command is available, then unit tests can be run via make test or make unit. Documentation The BIND 9 Administrator Reference Manual is included with the source distribution, in DocBook XML, HTML, and PDF format, in the doc/arm directory. Some of the programs in the BIND 9 distribution have man pages in their directories. In particular, the command line options of named are documented in bin/named/named.8. Frequently (and not-so-frequently) asked questions and their answers can be found in the ISC Knowledge Base at https://kb.isc.org. Additional information on various subjects can be found in other README files throughout the source tree. Change log A detailed list of all changes that have been made throughout the development BIND 9 is included in the file CHANGES, with the most recent changes listed first. Change notes include tags indicating the category of the change that was made; these categories are: Category Description [func] New feature [bug] General bug fix [security] Fix for a significant security flaw [experimental] Used for new features when the syntax or other aspects of the design are still in flux and may change [port] Portability enhancement [maint] Updates to built-in data such as root server addresses and keys [tuning] Changes to built-in configuration defaults and constants to improve performance [performance] Other changes to improve server performance [protocol] Updates to the DNS protocol such as new RR types [test] Changes to the automatic tests, not affecting server functionality [cleanup] Minor corrections and refactoring [doc] Documentation [contrib] Changes to the contributed tools and libraries in the 'contrib' subdirectory Used in the master development branch to reserve change [placeholder] numbers for use in other branches, e.g. when fixing a bug that only exists in older releases In general, [func] and [experimental] tags will only appear in new-feature releases (i.e., those with version numbers ending in zero). Some new functionality may be backported to older releases on a case-by-case basis. All other change types may be applied to all currently-supported releases. Bug report identifiers Most notes in the CHANGES file include a reference to a bug report or issue number. Prior to 2018, these were usually of the form [RT #NNN] and referred to entries in the "bind9-bugs" RT database, which was not open to the public. More recent entries use the form [GL #NNN] or, less often, [GL !NNN], which, respectively, refer to issues or merge requests in the GitLab database. Most of these are publicly readable, unless they include information which is confidential or security sensitive. To look up a GitLab issue by its number, use the URL https:// gitlab.isc.org/isc-projects/bind9/issues/NNN. To look up a merge request, use https://gitlab.isc.org/isc-projects/bind9/merge_requests/NNN. In rare cases, an issue or merge request number may be followed with the letter "P". This indicates that the information is in the private ISC GitLab instance, which is not visible to the public. Acknowledgments • The original development of BIND 9 was underwritten by the following organizations: Sun Microsystems, Inc. Hewlett Packard Compaq Computer Corporation IBM Process Software Corporation Silicon Graphics, Inc. Network Associates, Inc. U.S. Defense Information Systems Agency USENIX Association Stichting NLnet - NLnet Foundation Nominum, Inc. • This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. http://www.OpenSSL.org/ • This product includes cryptographic software written by Eric Young (eay@cryptsoft.com) • This product includes software written by Tim Hudson (tjh@cryptsoft.com) man.dnssec-signzone.html000064400000072266152530214170011332 0ustar00 dnssec-signzone

Name

dnssec-signzone — DNSSEC zone signing tool

Synopsis

dnssec-signzone [-a] [-c class] [-d directory] [-D] [-E engine] [-e end-time] [-f output-file] [-g] [-h] [-i interval] [-I input-format] [-j jitter] [-K directory] [-k key] [-L serial] [-l domain] [-M maxttl] [-N soa-serial-format] [-o origin] [-O output-format] [-P] [-p] [-Q] [-R] [-r randomdev] [-S] [-s start-time] [-T ttl] [-t] [-u] [-v level] [-V] [-X extended end-time] [-x] [-z] [-3 salt] [-H iterations] [-A] {zonefile} [key...]

DESCRIPTION

dnssec-signzone signs a zone. It generates NSEC and RRSIG records and produces a signed version of the zone. The security status of delegations from the signed zone (that is, whether the child zones are secure or not) is determined by the presence or absence of a keyset file for each child zone.

OPTIONS

-a

Verify all generated signatures.

-c class

Specifies the DNS class of the zone.

-C

Compatibility mode: Generate a keyset-zonename file in addition to dsset-zonename when signing a zone, for use by older versions of dnssec-signzone.

-d directory

Look for dsset- or keyset- files in directory.

-D

Output only those record types automatically managed by dnssec-signzone, i.e. RRSIG, NSEC, NSEC3 and NSEC3PARAM records. If smart signing (-S) is used, DNSKEY records are also included. The resulting file can be included in the original zone file with $INCLUDE. This option cannot be combined with -O raw, -O map, or serial number updating.

-E engine

When applicable, specifies the hardware to use for cryptographic operations, such as a secure key store used for signing.

When BIND is built with OpenSSL PKCS#11 support, this defaults to the string "pkcs11", which identifies an OpenSSL engine that can drive a cryptographic accelerator or hardware service module. When BIND is built with native PKCS#11 cryptography (--enable-native-pkcs11), it defaults to the path of the PKCS#11 provider library specified via "--with-pkcs11".

-g

Generate DS records for child zones from dsset- or keyset- file. Existing DS records will be removed.

-K directory

Key repository: Specify a directory to search for DNSSEC keys. If not specified, defaults to the current directory.

-k key

Treat specified key as a key signing key ignoring any key flags. This option may be specified multiple times.

-l domain

Generate a DLV set in addition to the key (DNSKEY) and DS sets. The domain is appended to the name of the records.

-M maxttl

Sets the maximum TTL for the signed zone. Any TTL higher than maxttl in the input zone will be reduced to maxttl in the output. This provides certainty as to the largest possible TTL in the signed zone, which is useful to know when rolling keys because it is the longest possible time before signatures that have been retrieved by resolvers will expire from resolver caches. Zones that are signed with this option should be configured to use a matching max-zone-ttl in named.conf. (Note: This option is incompatible with -D, because it modifies non-DNSSEC data in the output zone.)

-s start-time

Specify the date and time when the generated RRSIG records become valid. This can be either an absolute or relative time. An absolute start time is indicated by a number in YYYYMMDDHHMMSS notation; 20000530144500 denotes 14:45:00 UTC on May 30th, 2000. A relative start time is indicated by +N, which is N seconds from the current time. If no start-time is specified, the current time minus 1 hour (to allow for clock skew) is used.

-e end-time

Specify the date and time when the generated RRSIG records expire. As with start-time, an absolute time is indicated in YYYYMMDDHHMMSS notation. A time relative to the start time is indicated with +N, which is N seconds from the start time. A time relative to the current time is indicated with now+N. If no end-time is specified, 30 days from the start time is used as a default. end-time must be later than start-time.

-X extended end-time

Specify the date and time when the generated RRSIG records for the DNSKEY RRset will expire. This is to be used in cases when the DNSKEY signatures need to persist longer than signatures on other records; e.g., when the private component of the KSK is kept offline and the KSK signature is to be refreshed manually.

As with start-time, an absolute time is indicated in YYYYMMDDHHMMSS notation. A time relative to the start time is indicated with +N, which is N seconds from the start time. A time relative to the current time is indicated with now+N. If no extended end-time is specified, the value of end-time is used as the default. (end-time, in turn, defaults to 30 days from the start time.) extended end-time must be later than start-time.

-f output-file

The name of the output file containing the signed zone. The default is to append .signed to the input filename. If output-file is set to "-", then the signed zone is written to the standard output, with a default output format of "full".

-h

Prints a short summary of the options and arguments to dnssec-signzone.

-V

Prints version information.

-i interval

When a previously-signed zone is passed as input, records may be resigned. The interval option specifies the cycle interval as an offset from the current time (in seconds). If a RRSIG record expires after the cycle interval, it is retained. Otherwise, it is considered to be expiring soon, and it will be replaced.

The default cycle interval is one quarter of the difference between the signature end and start times. So if neither end-time or start-time are specified, dnssec-signzone generates signatures that are valid for 30 days, with a cycle interval of 7.5 days. Therefore, if any existing RRSIG records are due to expire in less than 7.5 days, they would be replaced.

-I input-format

The format of the input zone file. Possible formats are "text" (default), "raw", and "map". This option is primarily intended to be used for dynamic signed zones so that the dumped zone file in a non-text format containing updates can be signed directly. The use of this option does not make much sense for non-dynamic zones.

-j jitter

When signing a zone with a fixed signature lifetime, all RRSIG records issued at the time of signing expires simultaneously. If the zone is incrementally signed, i.e. a previously-signed zone is passed as input to the signer, all expired signatures have to be regenerated at about the same time. The jitter option specifies a jitter window that will be used to randomize the signature expire time, thus spreading incremental signature regeneration over time.

Signature lifetime jitter also to some extent benefits validators and servers by spreading out cache expiration, i.e. if large numbers of RRSIGs don't expire at the same time from all caches there will be less congestion than if all validators need to refetch at mostly the same time.

-L serial

When writing a signed zone to "raw" or "map" format, set the "source serial" value in the header to the specified serial number. (This is expected to be used primarily for testing purposes.)

-n ncpus

Specifies the number of threads to use. By default, one thread is started for each detected CPU.

-N soa-serial-format

The SOA serial number format of the signed zone. Possible formats are "keep" (default), "increment", "unixtime", and "date".

"keep"

Do not modify the SOA serial number.

"increment"

Increment the SOA serial number using RFC 1982 arithmetics.

"unixtime"

Set the SOA serial number to the number of seconds since epoch.

"date"

Set the SOA serial number to today's date in YYYYMMDDNN format.

-o origin

The zone origin. If not specified, the name of the zone file is assumed to be the origin.

-O output-format

The format of the output file containing the signed zone. Possible formats are "text" (default), which is the standard textual representation of the zone; "full", which is text output in a format suitable for processing by external scripts; and "map", "raw", and "raw=N", which store the zone in binary formats for rapid loading by named. "raw=N" specifies the format version of the raw zone file: if N is 0, the raw file can be read by any version of named; if N is 1, the file can be read by release 9.9.0 or higher; the default is 1.

-p

Use pseudo-random data when signing the zone. This is faster, but less secure, than using real random data. This option may be useful when signing large zones or when the entropy source is limited.

-P

Disable post sign verification tests.

The post sign verification test ensures that for each algorithm in use there is at least one non revoked self signed KSK key, that all revoked KSK keys are self signed, and that all records in the zone are signed by the algorithm. This option skips these tests.

-Q

Remove signatures from keys that are no longer active.

Normally, when a previously-signed zone is passed as input to the signer, and a DNSKEY record has been removed and replaced with a new one, signatures from the old key that are still within their validity period are retained. This allows the zone to continue to validate with cached copies of the old DNSKEY RRset. The -Q forces dnssec-signzone to remove signatures from keys that are no longer active. This enables ZSK rollover using the procedure described in RFC 4641, section 4.2.1.1 ("Pre-Publish Key Rollover").

-R

Remove signatures from keys that are no longer published.

This option is similar to -Q, except it forces dnssec-signzone to signatures from keys that are no longer published. This enables ZSK rollover using the procedure described in RFC 4641, section 4.2.1.2 ("Double Signature Zone Signing Key Rollover").

-r randomdev

Specifies the source of randomness. If the operating system does not provide a /dev/random or equivalent device, the default source of randomness is keyboard input. randomdev specifies the name of a character device or file containing random data to be used instead of the default. The special value keyboard indicates that keyboard input should be used.

-S

Smart signing: Instructs dnssec-signzone to search the key repository for keys that match the zone being signed, and to include them in the zone if appropriate.

When a key is found, its timing metadata is examined to determine how it should be used, according to the following rules. Each successive rule takes priority over the prior ones:

If no timing metadata has been set for the key, the key is published in the zone and used to sign the zone.

If the key's publication date is set and is in the past, the key is published in the zone.

If the key's activation date is set and in the past, the key is published (regardless of publication date) and used to sign the zone.

If the key's revocation date is set and in the past, and the key is published, then the key is revoked, and the revoked key is used to sign the zone.

If either of the key's unpublication or deletion dates are set and in the past, the key is NOT published or used to sign the zone, regardless of any other metadata.

-T ttl

Specifies a TTL to be used for new DNSKEY records imported into the zone from the key repository. If not specified, the default is the TTL value from the zone's SOA record. This option is ignored when signing without -S, since DNSKEY records are not imported from the key repository in that case. It is also ignored if there are any pre-existing DNSKEY records at the zone apex, in which case new records' TTL values will be set to match them, or if any of the imported DNSKEY records had a default TTL value. In the event of a a conflict between TTL values in imported keys, the shortest one is used.

-t

Print statistics at completion.

-u

Update NSEC/NSEC3 chain when re-signing a previously signed zone. With this option, a zone signed with NSEC can be switched to NSEC3, or a zone signed with NSEC3 can be switch to NSEC or to NSEC3 with different parameters. Without this option, dnssec-signzone will retain the existing chain when re-signing.

-v level

Sets the debugging level.

-x

Only sign the DNSKEY RRset with key-signing keys, and omit signatures from zone-signing keys. (This is similar to the dnssec-dnskey-kskonly yes; zone option in named.)

-z

Ignore KSK flag on key when determining what to sign. This causes KSK-flagged keys to sign all records, not just the DNSKEY RRset. (This is similar to the update-check-ksk no; zone option in named.)

-3 salt

Generate an NSEC3 chain with the given hex encoded salt. A dash (salt) can be used to indicate that no salt is to be used when generating the NSEC3 chain.

-H iterations

When generating an NSEC3 chain, use this many iterations. The default is 10.

-A

When generating an NSEC3 chain set the OPTOUT flag on all NSEC3 records and do not generate NSEC3 records for insecure delegations.

Using this option twice (i.e., -AA) turns the OPTOUT flag off for all records. This is useful when using the -u option to modify an NSEC3 chain which previously had OPTOUT set.

zonefile

The file containing the zone to be signed.

key

Specify which keys should be used to sign the zone. If no keys are specified, then the zone will be examined for DNSKEY records at the zone apex. If these are found and there are matching private keys, in the current directory, then these will be used for signing.

EXAMPLE

The following command signs the example.com zone with the DSA key generated by dnssec-keygen (Kexample.com.+003+17247). Because the -S option is not being used, the zone's keys must be in the master file (db.example.com). This invocation looks for dsset files, in the current directory, so that DS records can be imported from them (-g).

% dnssec-signzone -g -o example.com db.example.com \
Kexample.com.+003+17247
db.example.com.signed
%

In the above example, dnssec-signzone creates the file db.example.com.signed. This file should be referenced in a zone statement in a named.conf file.

This example re-signs a previously signed zone with default parameters. The private keys are assumed to be in the current directory.

% cp db.example.com.signed db.example.com
% dnssec-signzone -o example.com db.example.com
db.example.com.signed
%

SEE ALSO

dnssec-keygen(8), BIND 9 Administrator Reference Manual, RFC 4033, RFC 4641.

BIND 9.11.36 (Extended Support Version)

man.dnssec-keygen.html000064400000053677152530214170010765 0ustar00 dnssec-keygen

Name

dnssec-keygen — DNSSEC key generation tool

Synopsis

dnssec-keygen [-3] [-A date/offset] [-a algorithm] [-b keysize] [-C] [-c class] [-D date/offset] [-D sync date/offset] [-E engine] [-f flag] [-G] [-g generator] [-h] [-I date/offset] [-i interval] [-K directory] [-k] [-L ttl] [-n nametype] [-P date/offset] [-P sync date/offset] [-p protocol] [-q] [-R date/offset] [-r randomdev] [-S key] [-s strength] [-t type] [-V] [-v level] {name}

DESCRIPTION

dnssec-keygen generates keys for DNSSEC (Secure DNS), as defined in RFC 2535 and RFC 4034. It can also generate keys for use with TSIG (Transaction Signatures) as defined in RFC 2845, or TKEY (Transaction Key) as defined in RFC 2930.

The name of the key is specified on the command line. For DNSSEC keys, this must match the name of the zone for which the key is being generated.

OPTIONS

-3

Use an NSEC3-capable algorithm to generate a DNSSEC key. If this option is used with an algorithm that has both NSEC and NSEC3 versions, then the NSEC3 version will be used; for example, dnssec-keygen -3a RSASHA1 specifies the NSEC3RSASHA1 algorithm.

-a algorithm

Selects the cryptographic algorithm. For DNSSEC keys, the value of algorithm must be one of RSAMD5, RSASHA1, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECCGOST, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448. For TSIG/TKEY, the value must be DH (Diffie Hellman), HMAC-MD5, HMAC-SHA1, HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, or HMAC-SHA512. These values are case insensitive.

If no algorithm is specified, then RSASHA1 will be used by default, unless the -3 option is specified, in which case NSEC3RSASHA1 will be used instead. (If -3 is used and an algorithm is specified, that algorithm will be checked for compatibility with NSEC3.)

Note 1: that for DNSSEC, RSASHA1 is a mandatory to implement algorithm, and DSA is recommended. For TSIG, HMAC-MD5 is mandatory.

Note 2: DH, HMAC-MD5, and HMAC-SHA1 through HMAC-SHA512 automatically set the -T KEY option.

-b keysize

Specifies the number of bits in the key. The choice of key size depends on the algorithm used. RSA keys must be between 512 and 2048 bits. Diffie Hellman keys must be between 128 and 4096 bits. DSA keys must be between 512 and 1024 bits and an exact multiple of 64. HMAC keys must be between 1 and 512 bits. Elliptic curve algorithms don't need this parameter.

The key size does not need to be specified if using a default algorithm. The default key size is 1024 bits for zone signing keys (ZSKs) and 2048 bits for key signing keys (KSKs, generated with -f KSK). However, if an algorithm is explicitly specified with the -a, then there is no default key size, and the -b must be used.

-C

Compatibility mode: generates an old-style key, without any timing metadata. By default, dnssec-keygen will include the key's creation date in the metadata stored with the private key, and other dates may be set there as well (publication date, activation date, etc). Keys that include this data may be incompatible with older versions of BIND; the -C option suppresses them.

-c class

Indicates that the DNS record containing the key should have the specified class. If not specified, class IN is used.

-E engine

Specifies the cryptographic hardware to use, when applicable.

When BIND is built with OpenSSL PKCS#11 support, this defaults to the string "pkcs11", which identifies an OpenSSL engine that can drive a cryptographic accelerator or hardware service module. When BIND is built with native PKCS#11 cryptography (--enable-native-pkcs11), it defaults to the path of the PKCS#11 provider library specified via "--with-pkcs11".

-f flag

Set the specified flag in the flag field of the KEY/DNSKEY record. The only recognized flags are KSK (Key Signing Key) and REVOKE.

-G

Generate a key, but do not publish it or sign with it. This option is incompatible with -P and -A.

-g generator

If generating a Diffie Hellman key, use this generator. Allowed values are 2 and 5. If no generator is specified, a known prime from RFC 2539 will be used if possible; otherwise the default is 2.

-h

Prints a short summary of the options and arguments to dnssec-keygen.

-K directory

Sets the directory in which the key files are to be written.

-k

Deprecated in favor of -T KEY.

-L ttl

Sets the default TTL to use for this key when it is converted into a DNSKEY RR. If the key is imported into a zone, this is the TTL that will be used for it, unless there was already a DNSKEY RRset in place, in which case the existing TTL would take precedence. If this value is not set and there is no existing DNSKEY RRset, the TTL will default to the SOA TTL. Setting the default TTL to 0 or none is the same as leaving it unset.

-n nametype

Specifies the owner type of the key. The value of nametype must either be ZONE (for a DNSSEC zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated with a host (KEY)), USER (for a key associated with a user(KEY)) or OTHER (DNSKEY). These values are case insensitive. Defaults to ZONE for DNSKEY generation.

-p protocol

Sets the protocol value for the generated key, for use with -T KEY. The protocol is a number between 0 and 255. The default is 3 (DNSSEC). Other possible values for this argument are listed in RFC 2535 and its successors.

-q

Quiet mode: Suppresses unnecessary output, including progress indication. Without this option, when dnssec-keygen is run interactively to generate an RSA or DSA key pair, it will print a string of symbols to stderr indicating the progress of the key generation. A '.' indicates that a random number has been found which passed an initial sieve test; '+' means a number has passed a single round of the Miller-Rabin primality test; a space means that the number has passed all the tests and is a satisfactory key.

-r randomdev

Specifies the source of randomness. If the operating system does not provide a /dev/random or equivalent device, the default source of randomness is keyboard input. randomdev specifies the name of a character device or file containing random data to be used instead of the default. The special value keyboard indicates that keyboard input should be used.

-S key

Create a new key which is an explicit successor to an existing key. The name, algorithm, size, and type of the key will be set to match the existing key. The activation date of the new key will be set to the inactivation date of the existing one. The publication date will be set to the activation date minus the prepublication interval, which defaults to 30 days.

-s strength

Specifies the strength value of the key. The strength is a number between 0 and 15, and currently has no defined purpose in DNSSEC.

-T rrtype

Specifies the resource record type to use for the key. rrtype must be either DNSKEY or KEY. The default is DNSKEY when using a DNSSEC algorithm, but it can be overridden to KEY for use with SIG(0).

Using any TSIG algorithm (HMAC-* or DH) forces this option to KEY.

-t type

Indicates the use of the key, for use with -T KEY. type must be one of AUTHCONF, NOAUTHCONF, NOAUTH, or NOCONF. The default is AUTHCONF. AUTH refers to the ability to authenticate data, and CONF the ability to encrypt data.

-V

Prints version information.

-v level

Sets the debugging level.

TIMING OPTIONS

Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS. If the argument begins with a '+' or '-', it is interpreted as an offset from the present time. For convenience, if such an offset is followed by one of the suffixes 'y', 'mo', 'w', 'd', 'h', or 'mi', then the offset is computed in years (defined as 365 24-hour days, ignoring leap years), months (defined as 30 24-hour days), weeks, days, hours, or minutes, respectively. Without a suffix, the offset is computed in seconds. To explicitly prevent a date from being set, use 'none' or 'never'.

-P date/offset

Sets the date on which a key is to be published to the zone. After that date, the key will be included in the zone but will not be used to sign it. If not set, and if the -G option has not been used, the default is "now".

-P sync date/offset

Sets the date on which CDS and CDNSKEY records that match this key are to be published to the zone.

-A date/offset

Sets the date on which the key is to be activated. After that date, the key will be included in the zone and used to sign it. If not set, and if the -G option has not been used, the default is "now". If set, if and -P is not set, then the publication date will be set to the activation date minus the prepublication interval.

-R date/offset

Sets the date on which the key is to be revoked. After that date, the key will be flagged as revoked. It will be included in the zone and will be used to sign it.

-I date/offset

Sets the date on which the key is to be retired. After that date, the key will still be included in the zone, but it will not be used to sign it.

-D date/offset

Sets the date on which the key is to be deleted. After that date, the key will no longer be included in the zone. (It may remain in the key repository, however.)

-D sync date/offset

Sets the date on which the CDS and CDNSKEY records that match this key are to be deleted.

-i interval

Sets the prepublication interval for a key. If set, then the publication and activation dates must be separated by at least this much time. If the activation date is specified but the publication date isn't, then the publication date will default to this much time before the activation date; conversely, if the publication date is specified but activation date isn't, then activation will be set to this much time after publication.

If the key is being created as an explicit successor to another key, then the default prepublication interval is 30 days; otherwise it is zero.

As with date offsets, if the argument is followed by one of the suffixes 'y', 'mo', 'w', 'd', 'h', or 'mi', then the interval is measured in years, months, weeks, days, hours, or minutes, respectively. Without a suffix, the interval is measured in seconds.

GENERATED KEYS

When dnssec-keygen completes successfully, it prints a string of the form Knnnn.+aaa+iiiii to the standard output. This is an identification string for the key it has generated.

  • nnnn is the key name.

  • aaa is the numeric representation of the algorithm.

  • iiiii is the key identifier (or footprint).

dnssec-keygen creates two files, with names based on the printed string. Knnnn.+aaa+iiiii.key contains the public key, and Knnnn.+aaa+iiiii.private contains the private key.

The .key file contains a DNS KEY record that can be inserted into a zone file (directly or with a $INCLUDE statement).

The .private file contains algorithm-specific fields. For obvious security reasons, this file does not have general read permission.

Both .key and .private files are generated for symmetric cryptography algorithms such as HMAC-MD5, even though the public and private key are equivalent.

EXAMPLE

To generate a 768-bit DSA key for the domain example.com, the following command would be issued:

dnssec-keygen -a DSA -b 768 -n ZONE example.com

The command would print a string of the form:

Kexample.com.+003+26160

In this example, dnssec-keygen creates the files Kexample.com.+003+26160.key and Kexample.com.+003+26160.private.

To generate a matching key-signing key, issue the command:

dnssec-keygen -a DSA -b 768 -n ZONE -f KSK example.com

SEE ALSO

dnssec-signzone(8), BIND 9 Administrator Reference Manual, RFC 2539, RFC 2845, RFC 4034.

BIND 9.11.36 (Extended Support Version)

man.mdig.html000064400000054405152530214170007134 0ustar00 mdig

Name

mdig — DNS pipelined lookup utility

Synopsis

mdig {@server} [-f filename] [-h] [-v] [[-4] | [-6]] [-m] [-b address] [-p port#] [-c class] [-t type] [-i] [-x addr] [plusopt...]

mdig {-h}

mdig [@server] {global-opt...} { {local-opt...} {query} ...}

DESCRIPTION

mdig is a multiple/pipelined query version of dig: instead of waiting for a response after sending each query, it begins by sending all queries. Responses are displayed in the order in which they are received, not in the order the corresponding queries were sent.

mdig options are a subset of the dig options, and are divided into "anywhere options" which can occur anywhere, "global options" which must occur before the query name (or they are ignored with a warning), and "local options" which apply to the next query on the command line.

The {@server} option is a mandatory global option. It is the name or IP address of the name server to query. (Unlike dig, this value is not retrieved from /etc/resolv.conf.) It can be an IPv4 address in dotted-decimal notation, an IPv6 address in colon-delimited notation, or a hostname. When the supplied server argument is a hostname, mdig resolves that name before querying the name server.

mdig provides a number of query options which affect the way in which lookups are made and the results displayed. Some of these set or reset flag bits in the query header, some determine which sections of the answer get printed, and others determine the timeout and retry strategies.

Each query option is identified by a keyword preceded by a plus sign (+). Some keywords set or reset an option. These may be preceded by the string no to negate the meaning of that keyword. Other keywords assign values to options like the timeout interval. They have the form +keyword=value.

ANYWHERE OPTIONS

The -f option makes mdig operate in batch mode by reading a list of lookup requests to process from the file filename. The file contains a number of queries, one per line. Each entry in the file should be organized in the same way they would be presented as queries to mdig using the command-line interface.

The -h causes mdig to print the detailed help with the full list of options and exit.

The -v causes mdig to print the version number and exit.

GLOBAL OPTIONS

The -4 option forces mdig to only use IPv4 query transport.

The -6 option forces mdig to only use IPv6 query transport.

The -b option sets the source IP address of the query to address. This must be a valid address on one of the host's network interfaces or "0.0.0.0" or "::". An optional port may be specified by appending "#<port>"

The -m option enables memory usage debugging.

The -p option is used when a non-standard port number is to be queried. port# is the port number that mdig will send its queries instead of the standard DNS port number 53. This option would be used to test a name server that has been configured to listen for queries on a non-standard port number.

The global query options are:

+[no]additional

Display [do not display] the additional section of a reply. The default is to display it.

+[no]all

Set or clear all display flags.

+[no]answer

Display [do not display] the answer section of a reply. The default is to display it.

+[no]authority

Display [do not display] the authority section of a reply. The default is to display it.

+[no]besteffort

Attempt to display the contents of messages which are malformed. The default is to not display malformed answers.

+burst

This option delays queries until the start of the next second.

+[no]cl

Display [do not display] the CLASS when printing the record.

+[no]comments

Toggle the display of comment lines in the output. The default is to print comments.

+[no]continue

Continue on errors (e.g. timeouts).

+[no]crypto

Toggle the display of cryptographic fields in DNSSEC records. The contents of these field are unnecessary to debug most DNSSEC validation failures and removing them makes it easier to see the common failures. The default is to display the fields. When omitted they are replaced by the string "[omitted]" or in the DNSKEY case the key id is displayed as the replacement, e.g. "[ key id = value ]".

+dscp[=value]

Set the DSCP code point to be used when sending the query. Valid DSCP code points are in the range [0..63]. By default no code point is explicitly set.

+[no]multiline

Print records like the SOA records in a verbose multi-line format with human-readable comments. The default is to print each record on a single line, to facilitate machine parsing of the mdig output.

+[no]question

Print [do not print] the question section of a query when an answer is returned. The default is to print the question section as a comment.

+[no]rrcomments

Toggle the display of per-record comments in the output (for example, human-readable key information about DNSKEY records). The default is not to print record comments unless multiline mode is active.

+[no]short

Provide a terse answer. The default is to print the answer in a verbose form.

+split=W

Split long hex- or base64-formatted fields in resource records into chunks of W characters (where W is rounded up to the nearest multiple of 4). +nosplit or +split=0 causes fields not to be split at all. The default is 56 characters, or 44 characters when multiline mode is active.

+[no]tcp

Use [do not use] TCP when querying name servers. The default behavior is to use UDP.

+[no]ttlid

Display [do not display] the TTL when printing the record.

+[no]ttlunits

Display [do not display] the TTL in friendly human-readable time units of "s", "m", "h", "d", and "w", representing seconds, minutes, hours, days and weeks. Implies +ttlid.

+[no]vc

Use [do not use] TCP when querying name servers. This alternate syntax to +[no]tcp is provided for backwards compatibility. The "vc" stands for "virtual circuit".

LOCAL OPTIONS

The -c option sets the query class to class. It can be any valid query class which is supported in BIND 9. The default query class is "IN".

The -t option sets the query type to type. It can be any valid query type which is supported in BIND 9. The default query type is "A", unless the -x option is supplied to indicate a reverse lookup with the "PTR" query type.

The -i option sets the reverse domain for IPv6 addresses to IP6.INT.

Reverse lookups — mapping addresses to names — are simplified by the -x option. addr is an IPv4 address in dotted-decimal notation, or a colon-delimited IPv6 address. mdig automatically performs a lookup for a query name like 11.12.13.10.in-addr.arpa and sets the query type and class to PTR and IN respectively. By default, IPv6 addresses are looked up using nibble format under the IP6.ARPA domain. To use the older RFC1886 method using the IP6.INT domain specify the -i option.

The local query options are:

+[no]aaflag

A synonym for +[no]aaonly.

+[no]aaonly

Sets the "aa" flag in the query.

+[no]adflag

Set [do not set] the AD (authentic data) bit in the query. This requests the server to return whether all of the answer and authority sections have all been validated as secure according to the security policy of the server. AD=1 indicates that all records have been validated as secure and the answer is not from a OPT-OUT range. AD=0 indicate that some part of the answer was insecure or not validated. This bit is set by default.

+bufsize=B

Set the UDP message buffer size advertised using EDNS0 to B bytes. The maximum and minimum sizes of this buffer are 65535 and 0 respectively. Values outside this range are rounded up or down appropriately. Values other than zero will cause a EDNS query to be sent.

+[no]cdflag

Set [do not set] the CD (checking disabled) bit in the query. This requests the server to not perform DNSSEC validation of responses.

+[no]cookie[=####]

Send a COOKIE EDNS option, with optional value. Replaying a COOKIE from a previous response will allow the server to identify a previous client. The default is +nocookie.

+[no]dnssec

Requests DNSSEC records be sent by setting the DNSSEC OK bit (DO) in the OPT record in the additional section of the query.

+[no]edns[=#]

Specify the EDNS version to query with. Valid values are 0 to 255. Setting the EDNS version will cause a EDNS query to be sent. +noedns clears the remembered EDNS version. EDNS is set to 0 by default.

+[no]ednsflags[=#]

Set the must-be-zero EDNS flags bits (Z bits) to the specified value. Decimal, hex and octal encodings are accepted. Setting a named flag (e.g. DO) will silently be ignored. By default, no Z bits are set.

+[no]ednsopt[=code[:value]]

Specify EDNS option with code point code and optionally payload of value as a hexadecimal string. +noednsopt clears the EDNS options to be sent.

+[no]expire

Send an EDNS Expire option.

+[no]nsid

Include an EDNS name server ID request when sending a query.

+[no]recurse

Toggle the setting of the RD (recursion desired) bit in the query. This bit is set by default, which means mdig normally sends recursive queries.

+retry=T

Sets the number of times to retry UDP queries to server to T instead of the default, 2. Unlike +tries, this does not include the initial query.

+[no]subnet=addr[/prefix-length]

Send (don't send) an EDNS Client Subnet option with the specified IP address or network prefix.

mdig +subnet=0.0.0.0/0, or simply mdig +subnet=0 for short, sends an EDNS client-subnet option with an empty address and a source prefix-length of zero, which signals a resolver that the client's address information must not be used when resolving this query.

+timeout=T

Sets the timeout for a query to T seconds. The default timeout is 5 seconds for UDP transport and 10 for TCP. An attempt to set T to less than 1 will result in a query timeout of 1 second being applied.

+tries=T

Sets the number of times to try UDP queries to server to T instead of the default, 3. If T is less than or equal to zero, the number of tries is silently rounded up to 1.

+udptimeout=T

Sets the timeout between UDP query retries.

+[no]unknownformat

Print all RDATA in unknown RR type presentation format (RFC 3597). The default is to print RDATA for known types in the type's presentation format.

+[no]zflag

Set [do not set] the last unassigned DNS header flag in a DNS query. This flag is off by default.

SEE ALSO

dig(1), RFC1035.

BIND 9.11.36 (Extended Support Version)

man.named-checkconf.html000064400000014672152530214170011223 0ustar00 named-checkconf

Name

named-checkconf — named configuration file syntax checking tool

Synopsis

named-checkconf [-hjvz] [-p [-x ]] [-t directory] {filename}

DESCRIPTION

named-checkconf checks the syntax, but not the semantics, of a named configuration file. The file is parsed and checked for syntax errors, along with all files included by it. If no file is specified, /etc/named.conf is read by default.

Note: files that named reads in separate parser contexts, such as rndc.key and bind.keys, are not automatically read by named-checkconf. Configuration errors in these files may cause named to fail to run, even if named-checkconf was successful. named-checkconf can be run on these files explicitly, however.

OPTIONS

-h

Print the usage summary and exit.

-j

When loading a zonefile read the journal if it exists.

-p

Print out the named.conf and included files in canonical form if no errors were detected. See also the -x option.

-t directory

Chroot to directory so that include directives in the configuration file are processed as if run by a similarly chrooted named.

-v

Print the version of the named-checkconf program and exit.

-x

When printing the configuration files in canonical form, obscure shared secrets by replacing them with strings of question marks ('?'). This allows the contents of named.conf and related files to be shared — for example, when submitting bug reports — without compromising private data. This option cannot be used without -p.

-z

Perform a test load of all master zones found in named.conf.

filename

The name of the configuration file to be checked. If not specified, it defaults to /etc/named.conf.

RETURN VALUES

named-checkconf returns an exit status of 1 if errors were detected and 0 otherwise.

SEE ALSO

named(8), named-checkzone(8), BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

man.dnssec-keymgr.html000064400000040124152530214170010760 0ustar00 dnssec-keymgr

Name

dnssec-keymgr — Ensures correct DNSKEY coverage for a zone based on a defined policy

Synopsis

dnssec-keymgr [-K directory] [-c file] [-f] [-k] [-q] [-v] [-z] [-g path] [-r path] [-s path] [zone...]

DESCRIPTION

dnssec-keymgr is a high level Python wrapper to facilitate the key rollover process for zones handled by BIND. It uses the BIND commands for manipulating DNSSEC key metadata: dnssec-keygen and dnssec-settime.

DNSSEC policy can be read from a configuration file (default /etc/dnssec-policy.conf), from which the key parameters, publication and rollover schedule, and desired coverage duration for any given zone can be determined. This file may be used to define individual DNSSEC policies on a per-zone basis, or to set a "default" policy used for all zones.

When dnssec-keymgr runs, it examines the DNSSEC keys for one or more zones, comparing their timing metadata against the policies for those zones. If key settings do not conform to the DNSSEC policy (for example, because the policy has been changed), they are automatically corrected.

A zone policy can specify a duration for which we want to ensure the key correctness (coverage). It can also specify a rollover period (roll-period). If policy indicates that a key should roll over before the coverage period ends, then a successor key will automatically be created and added to the end of the key series.

If zones are specified on the command line, dnssec-keymgr will examine only those zones. If a specified zone does not already have keys in place, then keys will be generated for it according to policy.

If zones are not specified on the command line, then dnssec-keymgr will search the key directory (either the current working directory or the directory set by the -K option), and check the keys for all the zones represented in the directory.

Key times that are in the past will not be updated unless the -f is used (see below). Key inactivation and deletion times that are less than five minutes in the future will be delayed by five minutes.

It is expected that this tool will be run automatically and unattended (for example, by cron).

OPTIONS

-c file

If -c is specified, then the DNSSEC policy is read from file. (If not specified, then the policy is read from /etc/dnssec-policy.conf; if that file doesn't exist, a built-in global default policy is used.)

-f

Force: allow updating of key events even if they are already in the past. This is not recommended for use with zones in which keys have already been published. However, if a set of keys has been generated all of which have publication and activation dates in the past, but the keys have not been published in a zone as yet, then this option can be used to clean them up and turn them into a proper series of keys with appropriate rollover intervals.

-g keygen-path

Specifies a path to a dnssec-keygen binary. Used for testing. See also the -s option.

-h

Print the dnssec-keymgr help summary and exit.

-K directory

Sets the directory in which keys can be found. Defaults to the current working directory.

-k

Only apply policies to KSK keys. See also the -z option.

-q

Quiet: suppress printing of dnssec-keygen and dnssec-settime.

-r randomdev

Specifies a path to a file containing random data. This is passed to the dnssec-keygen binary using its -r option.

-s settime-path

Specifies a path to a dnssec-settime binary. Used for testing. See also the -g option.

-v

Print the dnssec-keymgr version and exit.

-z

Only apply policies to ZSK keys. See also the -k option.

POLICY CONFIGURATION

The dnssec-policy.conf file can specify three kinds of policies:

  • Policy classes (policy name { ... };) can be inherited by zone policies or other policy classes; these can be used to create sets of different security profiles. For example, a policy class normal might specify 1024-bit key sizes, but a class extra might specify 2048 bits instead; extra would be used for zones that had unusually high security needs.

  • Algorithm policies: (algorithm-policy algorithm { ... }; ) override default per-algorithm settings. For example, by default, RSASHA256 keys use 2048-bit key sizes for both KSK and ZSK. This can be modified using algorithm-policy, and the new key sizes would then be used for any key of type RSASHA256.

  • Zone policies: (zone name { ... }; ) set policy for a single zone by name. A zone policy can inherit a policy class by including a policy option. Zone names beginning with digits (i.e., 0-9) must be quoted. If a zone does not have its own policy then the "default" policy applies.

Options that can be specified in policies:

algorithm name;

The key algorithm. If no policy is defined, the default is RSASHA256.

coverage duration;

The length of time to ensure that keys will be correct; no action will be taken to create new keys to be activated after this time. This can be represented as a number of seconds, or as a duration using human-readable units (examples: "1y" or "6 months"). A default value for this option can be set in algorithm policies as well as in policy classes or zone policies. If no policy is configured, the default is six months.

directory path;

Specifies the directory in which keys should be stored.

key-size keytype size;

Specifies the number of bits to use in creating keys. The keytype is either "zsk" or "ksk". A default value for this option can be set in algorithm policies as well as in policy classes or zone policies. If no policy is configured, the default is 1024 bits for DSA keys and 2048 for RSA.

keyttl duration;

The key TTL. If no policy is defined, the default is one hour.

post-publish keytype duration;

How long after inactivation a key should be deleted from the zone. Note: If roll-period is not set, this value is ignored. The keytype is either "zsk" or "ksk". A default duration for this option can be set in algorithm policies as well as in policy classes or zone policies. The default is one month.

pre-publish keytype duration;

How long before activation a key should be published. Note: If roll-period is not set, this value is ignored. The keytype is either "zsk" or "ksk". A default duration for this option can be set in algorithm policies as well as in policy classes or zone policies. The default is one month.

roll-period keytype duration;

How frequently keys should be rolled over. The keytype is either "zsk" or "ksk". A default duration for this option can be set in algorithm policies as well as in policy classes or zone policies. If no policy is configured, the default is one year for ZSKs. KSKs do not roll over by default.

standby keytype number;

Not yet implemented.

REMAINING WORK

  • Enable scheduling of KSK rollovers using the -P sync and -D sync options to dnssec-keygen and dnssec-settime. Check the parent zone (as in dnssec-checkds) to determine when it's safe for the key to roll.

  • Allow configuration of standby keys and use of the REVOKE bit, for keys that use RFC 5011 semantics.

SEE ALSO

dnssec-coverage(8), dnssec-keygen(8), dnssec-settime(8), dnssec-checkds(8)

BIND 9.11.36 (Extended Support Version)

man.rndc-confgen.html000064400000026026152530214170010555 0ustar00 rndc-confgen

Name

rndc-confgen — rndc key generation tool

Synopsis

rndc-confgen [-a] [-A algorithm] [-b keysize] [-c keyfile] [-h] [-k keyname] [-p port] [-r randomfile] [-s address] [-t chrootdir] [-u user]

DESCRIPTION

rndc-confgen generates configuration files for rndc. It can be used as a convenient alternative to writing the rndc.conf file and the corresponding controls and key statements in named.conf by hand. Alternatively, it can be run with the -a option to set up a rndc.key file and avoid the need for a rndc.conf file and a controls statement altogether.

OPTIONS

-a

Do automatic rndc configuration. This creates a file rndc.key in /etc (or whatever sysconfdir was specified as when BIND was built) that is read by both rndc and named on startup. The rndc.key file defines a default command channel and authentication key allowing rndc to communicate with named on the local host with no further configuration.

Running rndc-confgen -a allows BIND 9 and rndc to be used as drop-in replacements for BIND 8 and ndc, with no changes to the existing BIND 8 named.conf file.

If a more elaborate configuration than that generated by rndc-confgen -a is required, for example if rndc is to be used remotely, you should run rndc-confgen without the -a option and set up a rndc.conf and named.conf as directed.

-A algorithm

Specifies the algorithm to use for the TSIG key. Available choices are: hmac-md5, hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384 and hmac-sha512. The default is hmac-md5 or if MD5 was disabled hmac-sha256.

-b keysize

Specifies the size of the authentication key in bits. Must be between 1 and 512 bits; the default is the hash size.

-c keyfile

Used with the -a option to specify an alternate location for rndc.key.

-h

Prints a short summary of the options and arguments to rndc-confgen.

-k keyname

Specifies the key name of the rndc authentication key. This must be a valid domain name. The default is rndc-key.

-p port

Specifies the command channel port where named listens for connections from rndc. The default is 953.

-r randomfile

Specifies a source of random data for generating the authorization. If the operating system does not provide a /dev/random or equivalent device, the default source of randomness is keyboard input. randomdev specifies the name of a character device or file containing random data to be used instead of the default. The special value keyboard indicates that keyboard input should be used.

-s address

Specifies the IP address where named listens for command channel connections from rndc. The default is the loopback address 127.0.0.1.

-t chrootdir

Used with the -a option to specify a directory where named will run chrooted. An additional copy of the rndc.key will be written relative to this directory so that it will be found by the chrooted named.

-u user

Used with the -a option to set the owner of the rndc.key file generated. If -t is also specified only the file in the chroot area has its owner changed.

EXAMPLES

To allow rndc to be used with no manual configuration, run

rndc-confgen -a

To print a sample rndc.conf file and corresponding controls and key statements to be manually inserted into named.conf, run

rndc-confgen

SEE ALSO

rndc(8), rndc.conf(5), named(8), BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

man.dnssec-importkey.html000064400000022346152530214170011513 0ustar00 dnssec-importkey

Name

dnssec-importkey — import DNSKEY records from external systems so they can be managed

Synopsis

dnssec-importkey [-K directory] [-L ttl] [-P date/offset] [-P sync date/offset] [-D date/offset] [-D sync date/offset] [-h] [-v level] [-V] {keyfile}

dnssec-importkey {-f filename} [-K directory] [-L ttl] [-P date/offset] [-P sync date/offset] [-D date/offset] [-D sync date/offset] [-h] [-v level] [-V] [dnsname]

DESCRIPTION

dnssec-importkey reads a public DNSKEY record and generates a pair of .key/.private files. The DNSKEY record may be read from an existing .key file, in which case a corresponding .private file will be generated, or it may be read from any other file or from the standard input, in which case both .key and .private files will be generated.

The newly-created .private file does not contain private key data, and cannot be used for signing. However, having a .private file makes it possible to set publication (-P) and deletion (-D) times for the key, which means the public key can be added to and removed from the DNSKEY RRset on schedule even if the true private key is stored offline.

OPTIONS

-f filename

Zone file mode: instead of a public keyfile name, the argument is the DNS domain name of a zone master file, which can be read from file. If the domain name is the same as file, then it may be omitted.

If file is set to "-", then the zone data is read from the standard input.

-K directory

Sets the directory in which the key files are to reside.

-L ttl

Sets the default TTL to use for this key when it is converted into a DNSKEY RR. If the key is imported into a zone, this is the TTL that will be used for it, unless there was already a DNSKEY RRset in place, in which case the existing TTL would take precedence. Setting the default TTL to 0 or none removes it.

-h

Emit usage message and exit.

-v level

Sets the debugging level.

-V

Prints version information.

TIMING OPTIONS

Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS. If the argument begins with a '+' or '-', it is interpreted as an offset from the present time. For convenience, if such an offset is followed by one of the suffixes 'y', 'mo', 'w', 'd', 'h', or 'mi', then the offset is computed in years (defined as 365 24-hour days, ignoring leap years), months (defined as 30 24-hour days), weeks, days, hours, or minutes, respectively. Without a suffix, the offset is computed in seconds. To explicitly prevent a date from being set, use 'none' or 'never'.

-P date/offset

Sets the date on which a key is to be published to the zone. After that date, the key will be included in the zone but will not be used to sign it.

-P sync date/offset

Sets the date on which CDS and CDNSKEY records that match this key are to be published to the zone.

-D date/offset

Sets the date on which the key is to be deleted. After that date, the key will no longer be included in the zone. (It may remain in the key repository, however.)

-D sync date/offset

Sets the date on which the CDS and CDNSKEY records that match this key are to be deleted.

FILES

A keyfile can be designed by the key identification Knnnn.+aaa+iiiii or the full file name Knnnn.+aaa+iiiii.key as generated by dnssec-keygen(8).

SEE ALSO

dnssec-keygen(8), dnssec-signzone(8), BIND 9 Administrator Reference Manual, RFC 5011.

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch04.html000064400000374550152530214170007205 0ustar00 Chapter4.Advanced DNS Features

Chapter4.Advanced DNS Features

Notify

DNS NOTIFY is a mechanism that allows primary servers to notify their secondary servers of changes to a zone's data. In response to a NOTIFY from a primary server, the secondary checks to see that its version of the zone is the current version and, if not, initiates a zone transfer.

For more information about DNS NOTIFY, see the description of the notify option in the section called “Boolean Options” and the description of the zone option also-notify in the section called “Zone Transfers”. The NOTIFY protocol is specified in RFC 1996.

Note

As a secondary zone can also be a primary to other secondaries, named, by default, sends NOTIFY messages for every zone it loads. Specifying notify primary-only; causes named to only send NOTIFY for primary zones that it loads.

Dynamic Update

Dynamic Update is a method for adding, replacing, or deleting records in a primary server by sending it a special form of DNS messages. The format and meaning of these messages is specified in RFC 2136.

Dynamic update is enabled by including an allow-update or an update-policy clause in the zone statement.

If the zone's update-policy is set to local, updates to the zone are permitted for the key local-ddns, which is generated by named at startup. See the section called “Dynamic Update Policies” for more details.

Dynamic updates using Kerberos-signed requests can be made using the TKEY/GSS protocol, either by setting the tkey-gssapi-keytab option, or by setting both the tkey-gssapi-credential and tkey-domain options. Once enabled, Kerberos-signed requests are matched against the update policies for the zone, using the Kerberos principal as the signer for the request.

Updating of secure zones (zones using DNSSEC) follows RFC 3007: RRSIG, NSEC, and NSEC3 records affected by updates are automatically regenerated by the server using an online zone key. Update authorization is based on transaction signatures and an explicit server policy.

The Journal File

All changes made to a zone using dynamic update are stored in the zone's journal file. This file is automatically created by the server when the first dynamic update takes place. The name of the journal file is formed by appending the extension .jnl to the name of the corresponding zone file, unless specifically overridden. The journal file is in a binary format and should not be edited manually.

The server also occasionally writes ("dumps") the complete contents of the updated zone to its zone file. This is not done immediately after each dynamic update, because that would be too slow when a large zone is updated frequently. Instead, the dump is delayed by up to 15 minutes, allowing additional updates to take place. During the dump process, transient files are created with the extensions .jnw and .jbk; under ordinary circumstances, these are removed when the dump is complete, and can be safely ignored.

When a server is restarted after a shutdown or crash, it replays the journal file to incorporate into the zone any updates that took place after the last zone dump.

Changes that result from incoming incremental zone transfers are also journaled in a similar way.

The zone files of dynamic zones cannot normally be edited by hand because they are not guaranteed to contain the most recent dynamic changes; those are only in the journal file. The only way to ensure that the zone file of a dynamic zone is up-to-date is to run rndc stop.

To make changes to a dynamic zone manually, follow these steps: first, disable dynamic updates to the zone using rndc freeze zone. This updates the zone file with the changes stored in its .jnl file. Then, edit the zone file. Finally, run rndc thaw zone to reload the changed zone and re-enable dynamic updates.

rndc sync zone updates the zone file with changes from the journal file without stopping dynamic updates; this may be useful for viewing the current zone state. To remove the .jnl file after updating the zone file, use rndc sync -clean.

Incremental Zone Transfers (IXFR)

The incremental zone transfer (IXFR) protocol is a way for secondary servers to transfer only changed data, instead of having to transfer an entire zone. The IXFR protocol is specified in RFC 1995. See Proposed Standards.

When acting as a primary server, BIND 9 supports IXFR for those zones where the necessary change history information is available. These include primary zones maintained by dynamic update and secondary zones whose data was obtained by IXFR. For manually maintained primary zones, and for secondary zones obtained by performing a full zone transfer (AXFR), IXFR is supported only if the option ixfr-from-differences is set to yes.

When acting as a secondary server, BIND 9 attempts to use IXFR unless it is explicitly disabled. For more information about disabling IXFR, see the description of the request-ixfr clause of the server statement.

Split DNS

Setting up different views of the DNS space to internal and external resolvers is usually referred to as a split DNS setup. There are several reasons an organization might want to set up its DNS this way.

One common reason to use split DNS is to hide "internal" DNS information from "external" clients on the Internet. There is some debate as to whether this is actually useful. Internal DNS information leaks out in many ways (via email headers, for example) and most savvy "attackers" can find the information they need using other means. However, since listing addresses of internal servers that external clients cannot possibly reach can result in connection delays and other annoyances, an organization may choose to use split DNS to present a consistent view of itself to the outside world.

Another common reason for setting up a split DNS system is to allow internal networks that are behind filters or in RFC 1918 space (reserved IP space, as documented in RFC 1918) to resolve DNS on the Internet. Split DNS can also be used to allow mail from outside back into the internal network.

Example Split DNS Setup

Let's say a company named Example, Inc. (example.com) has several corporate sites that have an internal network with reserved Internet Protocol (IP) space and an external demilitarized zone (DMZ), or "outside" section of a network, that is available to the public.

Example, Inc. wants its internal clients to be able to resolve external hostnames and to exchange mail with people on the outside. The company also wants its internal resolvers to have access to certain internal-only zones that are not available at all outside of the internal network.

In order to accomplish this, the company sets up two sets of name servers. One set is on the inside network (in the reserved IP space) and the other set is on bastion hosts, which are "proxy" hosts in the DMZ that can talk to both sides of its network.

The internal servers are configured to forward all queries, except queries for site1.internal, site2.internal, site1.example.com, and site2.example.com, to the servers in the DMZ. These internal servers will have complete sets of information for site1.example.com, site2.example.com, site1.internal, and site2.internal.

To protect the site1.internal and site2.internal domains, the internal name servers must be configured to disallow all queries to these domains from any external hosts, including the bastion hosts.

The external servers, which are on the bastion hosts, are configured to serve the "public" version of the site1.example.com and site2.example.com zones. This could include things such as the host records for public servers (www.example.com and ftp.example.com) and mail exchange (MX) records (a.mx.example.com and b.mx.example.com).

In addition, the public site1.example.com and site2.example.com zones should have special MX records that contain wildcard ("*") records pointing to the bastion hosts. This is needed because external mail servers do not have any other way of looking up how to deliver mail to those internal hosts. With the wildcard records, the mail is delivered to the bastion host, which can then forward it on to internal hosts.

Here's an example of a wildcard MX record:

*   IN MX 10 external1.example.com.

Now that they accept mail on behalf of anything in the internal network, the bastion hosts need to know how to deliver mail to internal hosts. The resolvers on the bastion hosts need to be configured to point to the internal name servers for DNS resolution.

Queries for internal hostnames are answered by the internal servers, and queries for external hostnames are forwarded back out to the DNS servers on the bastion hosts.

For all of this to work properly, internal clients need to be configured to query only the internal name servers for DNS queries. This could also be enforced via selective filtering on the network.

If everything has been set properly, Example, Inc.'s internal clients are now able to:

  • Look up any hostnames in the site1.example.com and site2.example.com zones.
  • Look up any hostnames in the site1.internal and site2.internal domains.
  • Look up any hostnames on the Internet.
  • Exchange mail with both internal and external users.

Hosts on the Internet are able to:

  • Look up any hostnames in the site1.example.com and site2.example.com zones.
  • Exchange mail with anyone in the site1.example.com and site2.example.com zones.

Here is an example configuration for the setup just described above. Note that this is only configuration information; for information on how to configure the zone files, see the section called “Sample Configurations”.

Internal DNS server config:


acl internals { 172.16.72.0/24; 192.168.1.0/24; };

acl externals { bastion-ips-go-here; };

options {
    ...
    ...
    forward only;
    // forward to external servers
    forwarders {
        bastion-ips-go-here;
    };
    // sample allow-transfer (no one)
    allow-transfer { none; };
    // restrict query access
    allow-query { internals; externals; };
    // restrict recursion
    allow-recursion { internals; };
    ...
    ...
};

// sample primary zone
zone "site1.example.com" {
  type master;
  file "m/site1.example.com";
  // do normal iterative resolution (do not forward)
  forwarders { };
  allow-query { internals; externals; };
  allow-transfer { internals; };
};

// sample secondary zone
zone "site2.example.com" {
  type slave;
  file "s/site2.example.com";
  masters { 172.16.72.3; };
  forwarders { };
  allow-query { internals; externals; };
  allow-transfer { internals; };
};

zone "site1.internal" {
  type master;
  file "m/site1.internal";
  forwarders { };
  allow-query { internals; };
  allow-transfer { internals; }
};

zone "site2.internal" {
  type slave;
  file "s/site2.internal";
  masters { 172.16.72.3; };
  forwarders { };
  allow-query { internals };
  allow-transfer { internals; }
};

External (bastion host) DNS server config:

acl internals { 172.16.72.0/24; 192.168.1.0/24; };

acl externals { bastion-ips-go-here; };

options {
  ...
  ...
  // sample allow-transfer (no one)
  allow-transfer { none; };
  // default query access
  allow-query { any; };
  // restrict cache access
  allow-query-cache { internals; externals; };
  // restrict recursion
  allow-recursion { internals; externals; };
  ...
  ...
};

// sample secondary zone
zone "site1.example.com" {
  type master;
  file "m/site1.foo.com";
  allow-transfer { internals; externals; };
};

zone "site2.example.com" {
  type slave;
  file "s/site2.foo.com";
  masters { another_bastion_host_maybe; };
  allow-transfer { internals; externals; }
};

In the resolv.conf (or equivalent) on the bastion host(s):

search ...
nameserver 172.16.72.2
nameserver 172.16.72.3
nameserver 172.16.72.4

TSIG

TSIG (Transaction SIGnatures) is a mechanism for authenticating DNS messages, originally specified in RFC 2845. It allows DNS messages to be cryptographically signed using a shared secret. TSIG can be used in any DNS transaction, as a way to restrict access to certain server functions (e.g., recursive queries) to authorized clients when IP-based access control is insufficient or needs to be overridden, or as a way to ensure message authenticity when it is critical to the integrity of the server, such as with dynamic UPDATE messages or zone transfers from a primary to a secondary server.

This section is a guide to setting up TSIG in BIND. It describes the configuration syntax and the process of creating TSIG keys.

named supports TSIG for server-to-server communication, and some of the tools included with BIND support it for sending messages to named:

  • nsupdate(1) supports TSIG via the -k, -l, and -y command-line options, or via the key command when running interactively.
  • dig(1) supports TSIG via the -k and -y command-line options.

Generating a Shared Key

TSIG keys can be generated using the tsig-keygen command; the output of the command is a key directive suitable for inclusion in named.conf. The key name, algorithm, and size can be specified by command-line parameters; the defaults are "tsig-key", HMAC-SHA256, and 256 bits, respectively.

Any string which is a valid DNS name can be used as a key name. For example, a key to be shared between servers called host1 and host2 could be called "host1-host2.", and this key can be generated using:

  $ tsig-keygen host1-host2. > host1-host2.key

This key may then be copied to both hosts. The key name and secret must be identical on both hosts. (Note: copying a shared secret from one server to another is beyond the scope of the DNS. A secure transport mechanism should be used: secure FTP, SSL, ssh, telephone, encrypted email, etc.)

tsig-keygen can also be run as ddns-confgen, in which case its output includes additional configuration text for setting up dynamic DNS in named. See ddns-confgen(8) for details.

Loading a New Key

For a key shared between servers called host1 and host2, the following could be added to each server's named.conf file:

key "host1-host2." {
        algorithm hmac-sha256;
        secret "DAopyf1mhCbFVZw7pgmNPBoLUq8wEUT7UuPoLENP2HY=";
};

(This is the same key generated above using tsig-keygen.)

Since this text contains a secret, it is recommended that either named.conf not be world-readable, or that the key directive be stored in a file which is not world-readable and which is included in named.conf via the include directive.

Once a key has been added to named.conf and the server has been restarted or reconfigured, the server can recognize the key. If the server receives a message signed by the key, it is able to verify the signature. If the signature is valid, the response is signed using the same key.

TSIG keys that are known to a server can be listed using the command rndc tsig-list.

Instructing the Server to Use a Key

A server sending a request to another server must be told whether to use a key, and if so, which key to use.

For example, a key may be specified for each server in the masters statement in the definition of a secondary zone; in this case, all SOA QUERY messages, NOTIFY messages, and zone transfer requests (AXFR or IXFR) are signed using the specified key. Keys may also be specified in the also-notify statement of a primary or secondary zone, causing NOTIFY messages to be signed using the specified key.

Keys can also be specified in a server directive. Adding the following on host1, if the IP address of host2 is 10.1.2.3, would cause all requests from host1 to host2, including normal DNS queries, to be signed using the host1-host2. key:

server 10.1.2.3 {
        keys { host1-host2. ;};
};

Multiple keys may be present in the keys statement, but only the first one is used. As this directive does not contain secrets, it can be used in a world-readable file.

Requests sent by host2 to host1 would not be signed, unless a similar server directive were in host2's configuration file.

Whenever any server sends a TSIG-signed DNS request, it expects the response to be signed with the same key. If a response is not signed, or if the signature is not valid, the response is rejected.

TSIG-Based Access Control

TSIG keys may be specified in ACL definitions and ACL directives such as allow-query, allow-transfer, and allow-update. The above key would be denoted in an ACL element as key host1-host2.

Here is an example of an allow-update directive using a TSIG key:

allow-update { !{ !localnets; any; }; key host1-host2. ;};

This allows dynamic updates to succeed only if the UPDATE request comes from an address in localnets, and if it is signed using the host1-host2. key.

See the section called “Dynamic Update Policies” for a discussion of the more flexible update-policy statement.

Errors

Processing of TSIG-signed messages can result in several errors:

  • If a TSIG-aware server receives a message signed by an unknown key, the response will be unsigned, with the TSIG extended error code set to BADKEY.
  • If a TSIG-aware server receives a message from a known key but with an invalid signature, the response will be unsigned, with the TSIG extended error code set to BADSIG.
  • If a TSIG-aware server receives a message with a time outside of the allowed range, the response will be signed but the TSIG extended error code set to BADTIME, and the time values will be adjusted so that the response can be successfully verified.

In all of the above cases, the server returns a response code of NOTAUTH (not authenticated).

TKEY

TKEY (Transaction KEY) is a mechanism for automatically negotiating a shared secret between two hosts, originally specified in RFC 2930.

There are several TKEY "modes" that specify how a key is to be generated or assigned. BIND 9 implements only one of these modes: Diffie-Hellman key exchange. Both hosts are required to have a KEY record with algorithm DH (though this record is not required to be present in a zone).

The TKEY process is initiated by a client or server by sending a query of type TKEY to a TKEY-aware server. The query must include an appropriate KEY record in the additional section, and must be signed using either TSIG or SIG(0) with a previously established key. The server's response, if successful, contains a TKEY record in its answer section. After this transaction, both participants have enough information to calculate a shared secret using Diffie-Hellman key exchange. The shared secret can then be used by to sign subsequent transactions between the two servers.

TSIG keys known by the server, including TKEY-negotiated keys, can be listed using rndc tsig-list.

TKEY-negotiated keys can be deleted from a server using rndc tsig-delete. This can also be done via the TKEY protocol itself, by sending an authenticated TKEY query specifying the "key deletion" mode.

SIG(0)

BIND partially supports DNSSEC SIG(0) transaction signatures as specified in RFC 2535 and RFC 2931. SIG(0) uses public/private keys to authenticate messages. Access control is performed in the same manner as with TSIG keys; privileges can be granted or denied in ACL directives based on the key name.

When a SIG(0) signed message is received, it is only verified if the key is known and trusted by the server. The server does not attempt to recursively fetch or validate the key.

SIG(0) signing of multiple-message TCP streams is not supported.

The only tool shipped with BIND 9 that generates SIG(0) signed messages is nsupdate.

DNSSEC

Cryptographic authentication of DNS information is possible through the DNS Security (DNSSEC-bis) extensions, defined in RFC 4033, RFC 4034, and RFC 4035. This section describes the creation and use of DNSSEC signed zones.

In order to set up a DNSSEC secure zone, there are a series of steps which must be followed. BIND 9 ships with several tools that are used in this process, which are explained in more detail below. In all cases, the -h option prints a full list of parameters. Note that the DNSSEC tools require the keyset files to be in the working directory or the directory specified by the -d option.

There must also be communication with the administrators of the parent and/or child zone to transmit keys. A zone's security status must be indicated by the parent zone for a DNSSEC-capable resolver to trust its data. This is done through the presence or absence of a DS record at the delegation point.

For other servers to trust data in this zone, they must be statically configured with either this zone's zone key or the zone key of another zone above this one in the DNS tree.

Generating Keys

The dnssec-keygen program is used to generate keys.

A secure zone must contain one or more zone keys. The zone keys will sign all other records in the zone, as well as the zone keys of any secure delegated zones. Zone keys must have the same name as the zone, have a name type of ZONE, and be usable for authentication. It is recommended that zone keys use a cryptographic algorithm designated as "mandatory to implement" by the IETF; currently the only one is RSASHA1.

The following command generates a 768-bit RSASHA1 key for the child.example zone:

dnssec-keygen -a RSASHA1 -b 768 -n ZONE child.example.

Two output files are produced: Kchild.example.+005+12345.key and Kchild.example.+005+12345.private (where 12345 is an example of a key tag). The key filenames contain the key name (child.example.), the algorithm (3 is DSA, 1 is RSAMD5, 5 is RSASHA1, etc.), and the key tag (12345 in this case). The private key (in the .private file) is used to generate signatures, and the public key (in the .key file) is used for signature verification.

To generate another key with the same properties but with a different key tag, repeat the above command.

The dnssec-keyfromlabel program is used to get a key pair from a crypto hardware device and build the key files. Its usage is similar to dnssec-keygen.

The public keys should be inserted into the zone file by including the .key files using $INCLUDE statements.

Signing the Zone

The dnssec-signzone program is used to sign a zone.

Any keyset files corresponding to secure sub-zones should be present. The zone signer generates NSEC, NSEC3, and RRSIG records for the zone, as well as DS for the child zones if -g is specified. If -g is not specified, then DS RRsets for the secure child zones need to be added manually.

By default, all zone keys which have an available private key are used to generate signatures. The following command signs the zone, assuming it is in a file called zone.child.example:

dnssec-signzone -o child.example zone.child.example

One output file is produced: zone.child.example.signed. This file should be referenced by named.conf as the input file for the zone.

dnssec-signzone also produces keyset and dsset files. These are used to provide the parent zone administrators with the DNSKEYs (or their corresponding DS records) that are the secure entry point to the zone.

Configuring Servers for DNSSEC

To enable named to respond appropriately to DNS requests from DNSSEC-aware clients, dnssec-enable must be set to yes. (This is the default setting.)

To enable named to validate answers from other servers, the dnssec-enable option must be set to yes, and the dnssec-validation option must be set to yes or auto.

If dnssec-validation is set to auto, then a default trust anchor for the DNS root zone is used. If it is set to yes, however, then at least one trust anchor must be configured with a trusted-keys or managed-keys statement in named.conf, or DNSSEC validation will not occur. The default setting is yes.

trusted-keys are copies of DNSKEY RRs for zones that are used to form the first link in the cryptographic chain of trust. All keys listed in trusted-keys (and corresponding zones) are deemed to exist and only the listed keys are used to validate the DNSKEY RRset that they are from.

managed-keys are trusted keys which are automatically kept up-to-date via RFC 5011 trust anchor maintenance.

trusted-keys and managed-keys are described in more detail later in this document.

BIND 9 does not verify signatures on load, so zone keys for authoritative zones do not need to be specified in the configuration file.

After DNSSEC is established, a typical DNSSEC configuration looks something like the following. It has one or more public keys for the root, which allows answers from outside the organization to be validated. It also has several keys for parts of the namespace that the organization controls. These are here to ensure that named is immune to compromised security in the DNSSEC components of parent zones.

managed-keys {
        /* Root Key */
        "." initial-key 257 3 3 "BNY4wrWM1nCfJ+CXd0rVXyYmobt7sEEfK3clRbGaTwS
                                 JxrGkxJWoZu6I7PzJu/E9gx4UC1zGAHlXKdE4zYIpRh
                                 aBKnvcC2U9mZhkdUpd1Vso/HAdjNe8LmMlnzY3zy2Xy
                                 4klWOADTPzSv9eamj8V18PHGjBLaVtYvk/ln5ZApjYg
                                 hf+6fElrmLkdaz MQ2OCnACR817DF4BBa7UR/beDHyp
                                 5iWTXWSi6XmoJLbG9Scqc7l70KDqlvXR3M/lUUVRbke
                                 g1IPJSidmK3ZyCllh4XSKbje/45SKucHgnwU5jefMtq
                                 66gKodQj+MiA21AfUVe7u99WzTLzY3qlxDhxYQQ20FQ
                                 97S+LKUTpQcq27R7AT3/V5hRQxScINqwcz4jYqZD2fQ
                                 dgxbcDTClU0CRBdiieyLMNzXG3";
};

trusted-keys {
        /* Key for our organization's forward zone */
        example.com. 257 3 5 "AwEAAaxPMcR2x0HbQV4WeZB6oEDX+r0QM6
                              5KbhTjrW1ZaARmPhEZZe3Y9ifgEuq7vZ/z
                              GZUdEGNWy+JZzus0lUptwgjGwhUS1558Hb
                              4JKUbbOTcM8pwXlj0EiX3oDFVmjHO444gL
                              kBOUKUf/mC7HvfwYH/Be22GnClrinKJp1O
                              g4ywzO9WglMk7jbfW33gUKvirTHr25GL7S
                              TQUzBb5Usxt8lgnyTUHs1t3JwCY5hKZ6Cq
                              FxmAVZP20igTixin/1LcrgX/KMEGd/biuv
                              F4qJCyduieHukuY3H4XMAcR+xia2nIUPvm
                              /oyWR8BW/hWdzOvnSCThlHf3xiYleDbt/o
                              1OTQ09A0=";

        /* Key for our reverse zone. */
        2.0.192.IN-ADDRPA.NET. 257 3 5 "AQOnS4xn/IgOUpBPJ3bogzwc
                                       xOdNax071L18QqZnQQQAVVr+i
                                       LhGTnNGp3HoWQLUIzKrJVZ3zg
                                       gy3WwNT6kZo6c0tszYqbtvchm
                                       gQC8CzKojM/W16i6MG/eafGU3
                                       siaOdS0yOI6BgPsw+YZdzlYMa
                                       IJGf4M4dyoKIhzdZyQ2bYQrjy
                                       Q4LB0lC7aOnsMyYKHHYeRvPxj
                                       IQXmdqgOJGq+vsevG06zW+1xg
                                       YJh9rCIfnm1GX/KMgxLPG2vXT
                                       D/RnLX+D3T3UL7HJYHJhAZD5L
                                       59VvjSPsZJHeDCUyWYrvPZesZ
                                       DIRvhDD52SKvbheeTJUm6Ehkz
                                       ytNN2SN96QRk8j/iI8ib";
};

options {
        ...
        dnssec-enable yes;
        dnssec-validation yes;
};

Note

None of the keys listed in this example are valid. In particular, the root key is not valid.

When DNSSEC validation is enabled and properly configured, the resolver rejects any answers from signed, secure zones which fail to validate, and returns SERVFAIL to the client.

Responses may fail to validate for any of several reasons, including missing, expired, or invalid signatures, a key which does not match the DS RRset in the parent zone, or an insecure response from a zone which, according to its parent, should have been secure.

Note

When the validator receives a response from an unsigned zone that has a signed parent, it must confirm with the parent that the zone was intentionally left unsigned. It does this by verifying, via signed and validated NSEC/NSEC3 records, that the parent zone contains no DS records for the child.

If the validator can prove that the zone is insecure, then the response is accepted. However, if it cannot, the validator must assume an insecure response to be a forgery; it rejects the response and logs an error.

The logged error reads "insecurity proof failed" and "got insecure response; parent indicates it should be secure".

DNSSEC, Dynamic Zones, and Automatic Signing

Converting from insecure to secure

A zone ca be changed from insecure to secure in two ways: using a dynamic DNS update, or via the auto-dnssec zone option.

For either method, named must be configured so that it can see the K* files which contain the public and private parts of the keys that are used to sign the zone. These files are generated by dnssec-keygen, and they should be placed in the key-directory, as specified in named.conf:

	zone example.net {
		type master;
		update-policy local;
		file "dynamic/example.net/example.net";
		key-directory "dynamic/example.net";
	};

If one KSK and one ZSK DNSKEY key have been generated, this configuration causes all records in the zone to be signed with the ZSK, and the DNSKEY RRset to be signed with the KSK. An NSEC chain is generated as part of the initial signing process.

Dynamic DNS Update Method

To insert the keys via dynamic update:

	% nsupdate
	> ttl 3600
	> update add example.net DNSKEY 256 3 7 AwEAAZn17pUF0KpbPA2c7Gz76Vb18v0teKT3EyAGfBfL8eQ8al35zz3Y I1m/SAQBxIqMfLtIwqWPdgthsu36azGQAX8=
	> update add example.net DNSKEY 257 3 7 AwEAAd/7odU/64o2LGsifbLtQmtO8dFDtTAZXSX2+X3e/UNlq9IHq3Y0 XtC0Iuawl/qkaKVxXe2lo8Ct+dM6UehyCqk=
	> send

While the update request completes almost immediately, the zone is not completely signed until named has had time to "walk" the zone and generate the NSEC and RRSIG records. The NSEC record at the apex is added last, to signal that there is a complete NSEC chain.

To sign using NSEC3 instead of NSEC, add an NSEC3PARAM record to the initial update request. The OPTOUT bit in the NSEC3 chain can be set in the flags field of the NSEC3PARAM record.

	% nsupdate
	> ttl 3600
	> update add example.net DNSKEY 256 3 7 AwEAAZn17pUF0KpbPA2c7Gz76Vb18v0teKT3EyAGfBfL8eQ8al35zz3Y I1m/SAQBxIqMfLtIwqWPdgthsu36azGQAX8=
	> update add example.net DNSKEY 257 3 7 AwEAAd/7odU/64o2LGsifbLtQmtO8dFDtTAZXSX2+X3e/UNlq9IHq3Y0 XtC0Iuawl/qkaKVxXe2lo8Ct+dM6UehyCqk=
	> update add example.net NSEC3PARAM 1 1 100 1234567890
	> send

Again, this update request completes almost immediately; however, the record does not show up until named has had a chance to build/remove the relevant chain. A private type record is created to record the state of the operation (see below for more details), and is removed once the operation completes.

While the initial signing and NSEC/NSEC3 chain generation is happening, other updates are possible as well.

Fully Automatic Zone Signing

To enable automatic signing, add the auto-dnssec option to the zone statement in named.conf. auto-dnssec has two possible arguments: allow or maintain.

With auto-dnssec allow, named can search the key directory for keys matching the zone, insert them into the zone, and use them to sign the zone. It does so only when it receives an rndc sign <zonename>.

auto-dnssec maintain includes the above functionality, but also automatically adjusts the zone's DNSKEY records on a schedule according to the keys' timing metadata. (See dnssec-keygen(8) and dnssec-settime(8) for more information.)

named periodically searches the key directory for keys matching the zone; if the keys' metadata indicates that any change should be made to the zone - such as adding, removing, or revoking a key - then that action is carried out. By default, the key directory is checked for changes every 60 minutes; this period can be adjusted with dnssec-loadkeys-interval, up to a maximum of 24 hours. The rndc loadkeys forces named to check for key updates immediately.

If keys are present in the key directory the first time the zone is loaded, the zone is signed immediately, without waiting for an rndc sign or rndc loadkeys command. Those commands can still be used when there are unscheduled key changes.

When new keys are added to a zone, the TTL is set to match that of any existing DNSKEY RRset. If there is no existing DNSKEY RRset, the TTL is set to the TTL specified when the key was created (using the dnssec-keygen -L option), if any, or to the SOA TTL.

To sign the zone using NSEC3 instead of NSEC, submit an NSEC3PARAM record via dynamic update prior to the scheduled publication and activation of the keys. The OPTOUT bit for the NSEC3 chain can be set in the flags field of the NSEC3PARAM record. The NSEC3PARAM record does not appear in the zone immediately, but it is stored for later reference. When the zone is signed and the NSEC3 chain is completed, the NSEC3PARAM record appears in the zone.

Using the auto-dnssec option requires the zone to be configured to allow dynamic updates, by adding an allow-update or update-policy statement to the zone configuration. If this has not been done, the configuration fails.

Private Type Records

The state of the signing process is signaled by private type records (with a default type value of 65534). When signing is complete, these records with a non-zero initial octet have a non-zero value for the final octet.

If the first octet of a private type record is non-zero, the record indicates either that the zone needs to be signed with the key matching the record, or that all signatures that match the record should be removed. Here are the meanings of the different values of the first octet:



algorithm(octet1)
keyidinnetworkorder(octet2and3)
removalflag(octet4)
completeflag(octet5)

Only records flagged as "complete" can be removed via dynamic update; attempts to remove other private type records are silently ignored.

If the first octet is zero (this is a reserved algorithm number that should never appear in a DNSKEY record), the record indicates that changes to the NSEC3 chains are in progress. The rest of the record contains an NSEC3PARAM record, while the flag field tells what operation to perform based on the flag bits:



0x01OPTOUT
0x80CREATE
0x40REMOVE
0x20NONSEC

DNSKEY Rollovers

As with insecure-to-secure conversions, DNSSEC keyrolls can be done in two ways: using a dynamic DNS update, or via the auto-dnssec zone option.

Dynamic DNS Update Method

To perform key rollovers via dynamic update, the K* files for the new keys must be added so that named can find them. The new DNSKEY RRs can then be added via dynamic update. named then causes the zone to be signed with the new keys; when the signing is complete, the private type records are updated so that the last octet is non-zero.

If this is for a KSK, the parent and any trust anchor repositories of the new KSK must be informed.

The maximum TTL in the zone must expire before removing the old DNSKEY. If it is a KSK that is being updated, the DS RRset in the parent must also be updated its TTL allowed to expire. This ensures that all clients are able to verify at least one signature when the old DNSKEY is removed.

The old DNSKEY can be removed via UPDATE, taking care to specify the correct key. named cleans out any signatures generated by the old key after the update completes.

Automatic Key Rollovers

When a new key reaches its activation date (as set by dnssec-keygen or dnssec-settime), and if the auto-dnssec zone option is set to maintain, named automatically carries out the key rollover. If the key's algorithm has not previously been used to sign the zone, then the zone is fully signed as quickly as possible. However, if the new key replaces an existing key of the same algorithm, the zone is re-signed incrementally, with signatures from the old key replaced with signatures from the new key as their signature validity periods expire. By default, this rollover completes in 30 days, after which it is safe to remove the old key from the DNSKEY RRset.

NSEC3PARAM Rollovers via UPDATE

The new NSEC3PARAM record can be added via dynamic update. When the new NSEC3 chain has been generated, the NSEC3PARAM flag field is set to zero. At that point, the old NSEC3PARAM record can be removed. The old chain is removed after the update request completes.

Converting From NSEC to NSEC3

To do this, an NSEC3PARAM record must be added. When the conversion is complete, the NSEC chain is removed and the NSEC3PARAM record has a zero flag field. The NSEC3 chain is generated before the NSEC chain is destroyed.

Converting From NSEC3 to NSEC

To do this, use nsupdate to remove all NSEC3PARAM records with a zero flag field. The NSEC chain is generated before the NSEC3 chain is removed.

Converting From Secure to Insecure

To convert a signed zone to unsigned using dynamic DNS, delete all the DNSKEY records from the zone apex using nsupdate. All signatures, NSEC or NSEC3 chains, and associated NSEC3PARAM records are removed automatically. This takes place after the update request completes.

This requires the dnssec-secure-to-insecure option to be set to yes in named.conf.

In addition, if the auto-dnssec maintain zone statement is used, it should be removed or changed to allow instead; otherwise, it will re-sign).

Periodic Re-signing

In any secure zone which supports dynamic updates, named periodically re-signs RRsets which have not been re-signed as a result of some update action. The signature lifetimes are adjusted to spread the re-sign load over time rather than all at once.

NSEC3 and OPTOUT

named only supports creating new NSEC3 chains where all the NSEC3 records in the zone have the same OPTOUT state. named supports UPDATES to zones where the NSEC3 records in the chain have mixed OPTOUT state. named does not support changing the OPTOUT state of an individual NSEC3 record; if the OPTOUT state of an individual NSEC3 needs to be changed, the entire chain must be changed.

Dynamic Trust Anchor Management

BIND is able to maintain DNSSEC trust anchors using RFC 5011 key management. This feature allows named to keep track of changes to critical DNSSEC keys without any need for the operator to make changes to configuration files.

Validating Resolver

To configure a validating resolver to use RFC 5011 to maintain a trust anchor, configure the trust anchor using a managed-keys statement. Information about this can be found in the section called “managed-keys Statement Definition and Usage”.

Authoritative Server

To set up an authoritative zone for RFC 5011 trust anchor maintenance, generate two (or more) key signing keys (KSKs) for the zone. Sign the zone with one of them; this is the "active" KSK. All KSKs which do not sign the zone are "stand-by" keys.

Any validating resolver which is configured to use the active KSK as an RFC 5011-managed trust anchor takes note of the stand-by KSKs in the zone's DNSKEY RRset, and stores them for future reference. The resolver rechecks the zone periodically; after 30 days, if the new key is still there, the key is accepted by the resolver as a valid trust anchor for the zone. Anytime after this 30-day acceptance timer has completed, the active KSK can be revoked, and the zone can be "rolled over" to the newly accepted key.

The easiest way to place a stand-by key in a zone is to use the "smart signing" features of dnssec-keygen and dnssec-signzone. If a key exists with a publication date in the past, but an activation date which is unset or in the future, dnssec-signzone -S includes the DNSKEY record in the zone but does not sign with it:

$ dnssec-keygen -K keys -f KSK -P now -A now+2y example.net
$ dnssec-signzone -S -K keys example.net

To revoke a key, use the command dnssec-revoke. This adds the REVOKED bit to the key flags and regenerates the K*.key and K*.private files.

After revoking the active key, the zone must be signed with both the revoked KSK and the new active KSK. Smart signing takes care of this automatically.

Once a key has been revoked and used to sign the DNSKEY RRset in which it appears, that key is never again accepted as a valid trust anchor by the resolver. However, validation can proceed using the new active key, which was accepted by the resolver when it was a stand-by key.

See RFC 5011 for more details on key rollover scenarios.

When a key has been revoked, its key ID changes, increasing by 128 and wrapping around at 65535. So, for example, the key "Kexample.com.+005+10000" becomes "Kexample.com.+005+10128".

If two keys have IDs exactly 128 apart and one is revoked, the two key IDs will collide, causing several problems. To prevent this, dnssec-keygen does not generate a new key if another key which may collide is present. This checking only occurs if the new keys are written to the same directory that holds all other keys in use for that zone.

Older versions of BIND 9 did not have this protection. Exercise caution if using key revocation on keys that were generated by previous releases, or if using keys stored in multiple directories or on multiple machines.

It is expected that a future release of BIND 9 will address this problem in a different way, by storing revoked keys with their original unrevoked key IDs.

PKCS#11 (Cryptoki) Support

Public Key Cryptography Standard #11 (PKCS#11) defines a platform-independent API for the control of hardware security modules (HSMs) and other cryptographic support devices.

BIND 9 is known to work with three HSMs: The AEP Keyper, which has been tested with Debian Linux, Solaris x86 and Windows Server 2003; the Thales nShield, tested with Debian Linux; and the Sun SCA 6000 cryptographic acceleration board, tested with Solaris x86. In addition, BIND can be used with all current versions of SoftHSM, a software-based HSM simulator library produced by the OpenDNSSEC project.

PKCS#11 makes use of a "provider library": a dynamically loadable library which provides a low-level PKCS#11 interface to drive the HSM hardware. The PKCS#11 provider library comes from the HSM vendor, and it is specific to the HSM to be controlled.

There are two available mechanisms for PKCS#11 support in BIND 9: OpenSSL-based PKCS#11 and native PKCS#11. When using the first mechanism, BIND uses a modified version of OpenSSL, which loads the provider library and operates the HSM indirectly; any cryptographic operations not supported by the HSM can be carried out by OpenSSL instead. The second mechanism enables BIND to bypass OpenSSL completely; BIND loads the provider library itself, and uses the PKCS#11 API to drive the HSM directly.

Prerequisites

See the documentation provided by your HSM vendor for information about installing, initializing, testing and troubleshooting the HSM.

Native PKCS#11

Native PKCS#11 mode will only work with an HSM capable of carrying out every cryptographic operation BIND 9 may need. The HSM's provider library must have a complete implementation of the PKCS#11 API, so that all these functions are accessible. As of this writing, only the Thales nShield HSM and SoftHSMv2 can be used in this fashion. For other HSMs, including the AEP Keyper, Sun SCA 6000 and older versions of SoftHSM, use OpenSSL-based PKCS#11. (Note: Eventually, when more HSMs become capable of supporting native PKCS#11, it is expected that OpenSSL-based PKCS#11 will be deprecated.)

To build BIND with native PKCS#11, configure as follows:

$ cd bind9
$ ./configure --enable-native-pkcs11 \
    --with-pkcs11=provider-library-path
    

This will cause all BIND tools, including named and the dnssec-* and pkcs11-* tools, to use the PKCS#11 provider library specified in provider-library-path for cryptography. (The provider library path can be overridden using the -E in named and the dnssec-* tools, or the -m in the pkcs11-* tools.)

Building SoftHSMv2

SoftHSMv2, the latest development version of SoftHSM, is available from https://github.com/opendnssec/SoftHSMv2 . It is a software library developed by the OpenDNSSEC project ( http://www.opendnssec.org ) which provides a PKCS#11 interface to a virtual HSM, implemented in the form of a SQLite3 database on the local filesystem. It provides less security than a true HSM, but it allows you to experiment with native PKCS#11 when an HSM is not available. SoftHSMv2 can be configured to use either OpenSSL or the Botan library to perform cryptographic functions, but when using it for native PKCS#11 in BIND, OpenSSL is required.

By default, the SoftHSMv2 configuration file is prefix/etc/softhsm2.conf (where prefix is configured at compile time). This location can be overridden by the SOFTHSM2_CONF environment variable. The SoftHSMv2 cryptographic store must be installed and initialized before using it with BIND.

$  cd SoftHSMv2 
$  configure --with-crypto-backend=openssl --prefix=/opt/pkcs11/usr --enable-gost 
$  make 
$  make install 
$  /opt/pkcs11/usr/bin/softhsm-util --init-token 0 --slot 0 --label softhsmv2 
      

OpenSSL-based PKCS#11

OpenSSL-based PKCS#11 mode uses a modified version of the OpenSSL library; stock OpenSSL does not fully support PKCS#11. ISC provides a patch to OpenSSL to correct this. This patch is based on work originally done by the OpenSolaris project; it has been modified by ISC to provide new features such as PIN management and key-by-reference.

There are two "flavors" of PKCS#11 support provided by the patched OpenSSL, one of which must be chosen at configuration time. The correct choice depends on the HSM hardware:

  • Use 'crypto-accelerator' with HSMs that have hardware cryptographic acceleration features, such as the SCA 6000 board. This causes OpenSSL to run all supported cryptographic operations in the HSM.

  • Use 'sign-only' with HSMs that are designed to function primarily as secure key storage devices, but lack hardware acceleration. These devices are highly secure, but are not necessarily any faster at cryptography than the system CPU — often, they are slower. It is therefore most efficient to use them only for those cryptographic functions that require access to the secured private key, such as zone signing, and to use the system CPU for all other computationally-intensive operations. The AEP Keyper is an example of such a device.

The modified OpenSSL code is included in the BIND 9 release, in the form of a context diff against the latest versions of OpenSSL. OpenSSL 0.9.8, 1.0.0, 1.0.1 and 1.0.2 are supported; there are separate diffs for each version. In the examples to follow, we use OpenSSL 0.9.8, but the same methods work with OpenSSL 1.0.0 through 1.0.2.

Note

The OpenSSL patches as of this writing (January 2016) support versions 0.9.8zh, 1.0.0t, 1.0.1q and 1.0.2f. ISC will provide updated patches as new versions of OpenSSL are released. The version number in the following examples is expected to change.

Before building BIND 9 with PKCS#11 support, it will be necessary to build OpenSSL with the patch in place, and configure it with the path to your HSM's PKCS#11 provider library.

Patching OpenSSL

$ wget http://www.openssl.org/source/openssl-0.9.8zc.tar.gz
  

Extract the tarball:

$ tar zxf openssl-0.9.8zc.tar.gz

Apply the patch from the BIND 9 release:

$ patch -p1 -d openssl-0.9.8zc \
	      < bind9/bin/pkcs11/openssl-0.9.8zc-patch

Note

The patch file may not be compatible with the "patch" utility on all operating systems. You may need to install GNU patch.

When building OpenSSL, place it in a non-standard location so that it does not interfere with OpenSSL libraries elsewhere on the system. In the following examples, we choose to install into "/opt/pkcs11/usr". We will use this location when we configure BIND 9.

Later, when building BIND 9, the location of the custom-built OpenSSL library will need to be specified via configure.

Building OpenSSL for the AEP Keyper on Linux

The AEP Keyper is a highly secure key storage device, but does not provide hardware cryptographic acceleration. It can carry out cryptographic operations, but it is probably slower than your system's CPU. Therefore, we choose the 'sign-only' flavor when building OpenSSL.

The Keyper-specific PKCS#11 provider library is delivered with the Keyper software. In this example, we place it /opt/pkcs11/usr/lib:

$ cp pkcs11.GCC4.0.2.so.4.05 /opt/pkcs11/usr/lib/libpkcs11.so

The Keyper library requires threads, so we must specify -pthread.

$ cd openssl-0.9.8zc
$ ./Configure linux-x86_64 -pthread \
	    --pk11-libname=/opt/pkcs11/usr/lib/libpkcs11.so \
	    --pk11-flavor=sign-only \
	    --prefix=/opt/pkcs11/usr

After configuring, run "make" and "make test". If "make test" fails with "pthread_atfork() not found", you forgot to add the -pthread above.

Building OpenSSL for the SCA 6000 on Solaris

The SCA-6000 PKCS#11 provider is installed as a system library, libpkcs11. It is a true crypto accelerator, up to 4 times faster than any CPU, so the flavor shall be 'crypto-accelerator'.

In this example, we are building on Solaris x86 on an AMD64 system.

$ cd openssl-0.9.8zc
$ ./Configure solaris64-x86_64-cc \
	    --pk11-libname=/usr/lib/64/libpkcs11.so \
	    --pk11-flavor=crypto-accelerator \
	    --prefix=/opt/pkcs11/usr

(For a 32-bit build, use "solaris-x86-cc" and /usr/lib/libpkcs11.so.)

After configuring, run make and make test.

Building OpenSSL for SoftHSM

SoftHSM (version 1) is a software library developed by the OpenDNSSEC project ( http://www.opendnssec.org ) which provides a PKCS#11 interface to a virtual HSM, implemented in the form of a SQLite3 database on the local filesystem. SoftHSM uses the Botan library to perform cryptographic functions. Though less secure than a true HSM, it can allow you to experiment with PKCS#11 when an HSM is not available.

The SoftHSM cryptographic store must be installed and initialized before using it with OpenSSL, and the SOFTHSM_CONF environment variable must always point to the SoftHSM configuration file:

$  cd softhsm-1.3.7 
$  configure --prefix=/opt/pkcs11/usr 
$  make 
$  make install 
$  export SOFTHSM_CONF=/opt/pkcs11/softhsm.conf 
$  echo "0:/opt/pkcs11/softhsm.db" > $SOFTHSM_CONF 
$  /opt/pkcs11/usr/bin/softhsm --init-token 0 --slot 0 --label softhsm 

SoftHSM can perform all cryptographic operations, but since it only uses your system CPU, there is no advantage to using it for anything but signing. Therefore, we choose the 'sign-only' flavor when building OpenSSL.

$ cd openssl-0.9.8zc
$ ./Configure linux-x86_64 -pthread \
	    --pk11-libname=/opt/pkcs11/usr/lib/libsofthsm.so \
	    --pk11-flavor=sign-only \
	    --prefix=/opt/pkcs11/usr

After configuring, run "make" and "make test".

Once you have built OpenSSL, run "apps/openssl engine pkcs11" to confirm that PKCS#11 support was compiled in correctly. The output should be one of the following lines, depending on the flavor selected:

	(pkcs11) PKCS #11 engine support (sign only)

Or:

	(pkcs11) PKCS #11 engine support (crypto accelerator)

Next, run "apps/openssl engine pkcs11 -t". This will attempt to initialize the PKCS#11 engine. If it is able to do so successfully, it will report [ available ].

If the output is correct, run "make install" which will install the modified OpenSSL suite to /opt/pkcs11/usr.

Configuring BIND 9 for Linux with the AEP Keyper

To link with the PKCS#11 provider, threads must be enabled in the BIND 9 build.

$ cd ../bind9
$ ./configure --enable-threads \
	   --with-openssl=/opt/pkcs11/usr \
	   --with-pkcs11=/opt/pkcs11/usr/lib/libpkcs11.so

Configuring BIND 9 for Solaris with the SCA 6000

To link with the PKCS#11 provider, threads must be enabled in the BIND 9 build.

$ cd ../bind9
$ ./configure CC="cc -xarch=amd64" --enable-threads \
	    --with-openssl=/opt/pkcs11/usr \
	    --with-pkcs11=/usr/lib/64/libpkcs11.so

(For a 32-bit build, omit CC="cc -xarch=amd64".)

If configure complains about OpenSSL not working, you may have a 32/64-bit architecture mismatch. Or, you may have incorrectly specified the path to OpenSSL (it should be the same as the --prefix argument to the OpenSSL Configure).

Configuring BIND 9 for SoftHSM

$ cd ../bind9
$ ./configure --enable-threads \
	   --with-openssl=/opt/pkcs11/usr \
	   --with-pkcs11=/opt/pkcs11/usr/lib/libsofthsm.so

After configuring, run "make", "make test" and "make install".

(Note: If "make test" fails in the "pkcs11" system test, you may have forgotten to set the SOFTHSM_CONF environment variable.)

PKCS#11 Tools

BIND 9 includes a minimal set of tools to operate the HSM, including pkcs11-keygen to generate a new key pair within the HSM, pkcs11-list to list objects currently available, pkcs11-destroy to remove objects, and pkcs11-tokens to list available tokens.

In UNIX/Linux builds, these tools are built only if BIND 9 is configured with the --with-pkcs11 option. (Note: If --with-pkcs11 is set to "yes", rather than to the path of the PKCS#11 provider, then the tools will be built but the provider will be left undefined. Use the -m option or the PKCS11_PROVIDER environment variable to specify the path to the provider.)

Using the HSM

For OpenSSL-based PKCS#11, we must first set up the runtime environment so the OpenSSL and PKCS#11 libraries can be loaded:

$ export LD_LIBRARY_PATH=/opt/pkcs11/usr/lib:${LD_LIBRARY_PATH}

This causes named and other binaries to load the OpenSSL library from /opt/pkcs11/usr/lib rather than from the default location. This step is not necessary when using native PKCS#11.

Some HSMs require other environment variables to be set. For example, when operating an AEP Keyper, it is necessary to specify the location of the "machine" file, which stores information about the Keyper for use by the provider library. If the machine file is in /opt/Keyper/PKCS11Provider/machine, use:

$ export KEYPER_LIBRARY_PATH=/opt/Keyper/PKCS11Provider

Such environment variables must be set whenever running any tool that uses the HSM, including pkcs11-keygen, pkcs11-list, pkcs11-destroy, dnssec-keyfromlabel, dnssec-signzone, dnssec-keygen, and named.

We can now create and use keys in the HSM. In this case, we will create a 2048 bit key and give it the label "sample-ksk":

$ pkcs11-keygen -b 2048 -l sample-ksk

To confirm that the key exists:

$ pkcs11-list
Enter PIN:
object[0]: handle 2147483658 class 3 label[8] 'sample-ksk' id[0]
object[1]: handle 2147483657 class 2 label[8] 'sample-ksk' id[0]

Before using this key to sign a zone, we must create a pair of BIND 9 key files. The "dnssec-keyfromlabel" utility does this. In this case, we will be using the HSM key "sample-ksk" as the key-signing key for "example.net":

$ dnssec-keyfromlabel -l sample-ksk -f KSK example.net

The resulting K*.key and K*.private files can now be used to sign the zone. Unlike normal K* files, which contain both public and private key data, these files will contain only the public key data, plus an identifier for the private key which remains stored within the HSM. Signing with the private key takes place inside the HSM.

If you wish to generate a second key in the HSM for use as a zone-signing key, follow the same procedure above, using a different keylabel, a smaller key size, and omitting "-f KSK" from the dnssec-keyfromlabel arguments:

(Note: When using OpenSSL-based PKCS#11 the label is an arbitrary string which identifies the key. With native PKCS#11, the label is a PKCS#11 URI string which may include other details about the key and the HSM, including its PIN. See dnssec-keyfromlabel(8) for details.)

$ pkcs11-keygen -b 1024 -l sample-zsk
$ dnssec-keyfromlabel -l sample-zsk example.net

Alternatively, you may prefer to generate a conventional on-disk key, using dnssec-keygen:

$ dnssec-keygen example.net

This provides less security than an HSM key, but since HSMs can be slow or cumbersome to use for security reasons, it may be more efficient to reserve HSM keys for use in the less frequent key-signing operation. The zone-signing key can be rolled more frequently, if you wish, to compensate for a reduction in key security. (Note: When using native PKCS#11, there is no speed advantage to using on-disk keys, as cryptographic operations will be done by the HSM regardless.)

Now you can sign the zone. (Note: If not using the -S option to dnssec-signzone, it will be necessary to add the contents of both K*.key files to the zone master file before signing it.)

$ dnssec-signzone -S example.net
Enter PIN:
Verifying the zone using the following algorithms:
NSEC3RSASHA1.
Zone signing complete:
Algorithm: NSEC3RSASHA1: ZSKs: 1, KSKs: 1 active, 0 revoked, 0 stand-by
example.net.signed

Specifying the engine on the command line

When using OpenSSL-based PKCS#11, the "engine" to be used by OpenSSL can be specified in named and all of the BIND dnssec-* tools by using the "-E <engine>" command line option. If BIND 9 is built with the --with-pkcs11 option, this option defaults to "pkcs11". Specifying the engine will generally not be necessary unless for some reason you wish to use a different OpenSSL engine.

If you wish to disable use of the "pkcs11" engine — for troubleshooting purposes, or because the HSM is unavailable — set the engine to the empty string. For example:

$ dnssec-signzone -E '' -S example.net

This causes dnssec-signzone to run as if it were compiled without the --with-pkcs11 option.

When built with native PKCS#11 mode, the "engine" option has a different meaning: it specifies the path to the PKCS#11 provider library. This may be useful when testing a new provider library.

Running named with automatic zone re-signing

If you want named to dynamically re-sign zones using HSM keys, and/or to to sign new records inserted via nsupdate, then named must have access to the HSM PIN. In OpenSSL-based PKCS#11, this is accomplished by placing the PIN into the openssl.cnf file (in the above examples, /opt/pkcs11/usr/ssl/openssl.cnf).

The location of the openssl.cnf file can be overridden by setting the OPENSSL_CONF environment variable before running named.

Sample openssl.cnf:

	openssl_conf = openssl_def
	[ openssl_def ]
	engines = engine_section
	[ engine_section ]
	pkcs11 = pkcs11_section
	[ pkcs11_section ]
	PIN = <PLACE PIN HERE>

This will also allow the dnssec-* tools to access the HSM without PIN entry. (The pkcs11-* tools access the HSM directly, not via OpenSSL, so a PIN will still be required to use them.)

In native PKCS#11 mode, the PIN can be provided in a file specified as an attribute of the key's label. For example, if a key had the label pkcs11:object=local-zsk;pin-source=/etc/hsmpin, then the PIN would be read from the file /etc/hsmpin.

Warning

Placing the HSM's PIN in a text file in this manner may reduce the security advantage of using an HSM. Be sure this is what you want to do before configuring the system in this way.

DLZ (Dynamically Loadable Zones)

Dynamically Loadable Zones (DLZ) are an extension to BIND 9 that allows zone data to be retrieved directly from an external database. There is no required format or schema. DLZ drivers exist for several different database backends, including PostgreSQL, MySQL, and LDAP, and can be written for any other.

Historically, DLZ drivers had to be statically linked with the named binary and were turned on via a configure option at compile time (for example, configure --with-dlz-ldap). The drivers provided in the BIND 9 tarball in contrib/dlz/drivers are still linked this way.

In BIND 9.8 and higher, it is possible to link some DLZ modules dynamically at runtime, via the DLZ "dlopen" driver, which acts as a generic wrapper around a shared object implementing the DLZ API. The "dlopen" driver is linked into named by default, so configure options are no longer necessary when using these dynamically linkable drivers; they are still needed for the older drivers in contrib/dlz/drivers.

The DLZ module provides data to named in text format, which is then converted to DNS wire format by named. This conversion, and the lack of any internal caching, places significant limits on the query performance of DLZ modules. Consequently, DLZ is not recommended for use on high-volume servers. However, it can be used in a hidden primary configuration, with secondaries retrieving zone updates via AXFR. Note, however, that DLZ has no built-in support for DNS notify; secondary servers are not automatically informed of changes to the zones in the database.

Configuring DLZ

A DLZ database is configured with a dlz statement in named.conf:

    dlz example {
	database "dlopen driver.so args";
	search yes;
    };
    

This specifies a DLZ module to search when answering queries; the module is implemented in driver.so and is loaded at runtime by the dlopen DLZ driver. Multiple dlz statements can be specified; when answering a query, all DLZ modules with search set to yes are queried to see whether they contain an answer for the query name. The best available answer is returned to the client.

The search option in the above example can be omitted, because yes is the default value.

If search is set to no, then this DLZ module is not searched for the best match when a query is received. Instead, zones in this DLZ must be separately specified in a zone statement. This allows users to configure a zone normally using standard zone-option semantics, but specify a different database backend for storage of the zone's data. For example, to implement NXDOMAIN redirection using a DLZ module for backend storage of redirection rules:

    dlz other {
	database "dlopen driver.so args";
	search no;
    };

    zone "." {
	type redirect;
	dlz other;
    };
    

Sample DLZ Driver

For guidance in the implementation of DLZ modules, the directory contrib/dlz/example contains a basic dynamically linkable DLZ module - i.e., one which can be loaded at runtime by the "dlopen" DLZ driver. The example sets up a single zone, whose name is passed to the module as an argument in the dlz statement:

    dlz other {
	database "dlopen driver.so example.nil";
    };
    

In the above example, the module is configured to create a zone "example.nil", which can answer queries and AXFR requests and accept DDNS updates. At runtime, prior to any updates, the zone contains an SOA, NS, and a single A record at the apex:

 example.nil.  3600    IN      SOA     example.nil. hostmaster.example.nil. (
					       123 900 600 86400 3600
				       )
 example.nil.  3600    IN      NS      example.nil.
 example.nil.  1800    IN      A       10.53.0.1
    

The sample driver can retrieve information about the querying client and alter its response on the basis of this information. To demonstrate this feature, the example driver responds to queries for "source-addr.zonename>/TXT" with the source address of the query. Note, however, that this record will not be included in AXFR or ANY responses. Normally, this feature is used to alter responses in some other fashion, e.g., by providing different address records for a particular name depending on the network from which the query arrived.

Documentation of the DLZ module API can be found in contrib/dlz/example/README. This directory also contains the header file dlz_minimal.h, which defines the API and should be included by any dynamically linkable DLZ module.

Dynamic Database (DynDB)

Dynamic Database, or DynDB, is an extension to BIND 9 which, like DLZ (see the section called “DLZ (Dynamically Loadable Zones)”), allows zone data to be retrieved from an external database. Unlike DLZ, a DynDB module provides a full-featured BIND zone database interface. Where DLZ translates DNS queries into real-time database lookups, resulting in relatively poor query performance, and is unable to handle DNSSEC-signed data due to its limited API, a DynDB module can pre-load an in-memory database from the external data source, providing the same performance and functionality as zones served natively by BIND.

A DynDB module supporting LDAP has been created by Red Hat and is available from https://pagure.io/bind-dyndb-ldap.

A sample DynDB module for testing and developer guidance is included with the BIND source code, in the directory bin/tests/system/dyndb/driver.

Configuring DynDB

A DynDB database is configured with a dyndb statement in named.conf:

    dyndb example "driver.so" {
        parameters
    };
    

The file driver.so is a DynDB module which implements the full DNS database API. Multiple dyndb statements can be specified, to load different drivers or multiple instances of the same driver. Zones provided by a DynDB module are added to the view's zone table, and are treated as normal authoritative zones when BIND responds to queries. Zone configuration is handled internally by the DynDB module.

The parameters are passed as an opaque string to the DynDB module's initialization routine. Configuration syntax differs depending on the driver.

Sample DynDB Module

For guidance in the implementation of DynDB modules, the directory bin/tests/system/dyndb/driver contains a basic DynDB module. The example sets up two zones, whose names are passed to the module as arguments in the dyndb statement:

    dyndb sample "sample.so" { example.nil. arpa. };
    

In the above example, the module is configured to create a zone, "example.nil", which can answer queries and AXFR requests, and accept DDNS updates. At runtime, prior to any updates, the zone contains an SOA, NS, and a single A record at the apex:

 example.nil.  86400    IN      SOA     example.nil. example.nil. (
                                               0 28800 7200 604800 86400
                                       )
 example.nil.  86400    IN      NS      example.nil.
 example.nil.  86400    IN      A       127.0.0.1
    

When the zone is updated dynamically, the DynDB module determines whether the updated RR is an address (i.e., type A or AAAA); if so, it automatically updates the corresponding PTR record in a reverse zone. Note that updates are not stored permanently; all updates are lost when the server is restarted.

Catalog Zones

A "catalog zone" is a special DNS zone that contains a list of other zones to be served, along with their configuration parameters. Zones listed in a catalog zone are called "member zones." When a catalog zone is loaded or transferred to a secondary server which supports this functionality, the secondary server creates the member zones automatically. When the catalog zone is updated (for example, to add or delete member zones, or change their configuration parameters), those changes are immediately put into effect. Because the catalog zone is a normal DNS zone, these configuration changes can be propagated using the standard AXFR/IXFR zone transfer mechanism.

Catalog zones' format and behavior are specified as an Internet draft for interoperability among DNS implementations. The latest revision of the DNS catalog zones draft can be found here: https://datatracker.ietf.org/doc/draft-toorop-dnsop-dns-catalog-zones/.

Principle of Operation

Normally, if a zone is to be served by a secondary server, the named.conf file on the server must list the zone, or the zone must be added using rndc addzone. In environments with a large number of secondary servers, and/or where the zones being served are changing frequently, the overhead involved in maintaining consistent zone configuration on all the secondary servers can be significant.

A catalog zone is a way to ease this administrative burden: it is a DNS zone that lists member zones that should be served by secondary servers. When a secondary server receives an update to the catalog zone, it adds, removes, or reconfigures member zones based on the data received.

To use a catalog zone, it must first be set up as a normal zone on both the primary and secondary servers that are configured to use it. It must also be added to a catalog-zones list in the options or view statement in named.conf. This is comparable to the way a policy zone is configured as a normal zone and also listed in a response-policy statement.

To use the catalog zone feature to serve a new member zone:

  • Set up the the member zone to be served on the primary as normal. This can be done by editing named.conf or by running rndc addzone.

  • Add an entry to the catalog zone for the new member zone. This can be done by editing the catalog zone's zone file and running rndc reload, or by updating the zone using nsupdate.

The change to the catalog zone is propagated from the primary to all secondaries using the normal AXFR/IXFR mechanism. When the secondary receives the update to the catalog zone, it detects the entry for the new member zone, creates an instance of that zone on the secondary server, and points that instance to the masters specified in the catalog zone data. The newly created member zone is a normal secondary zone, so BIND immediately initiates a transfer of zone contents from the primary. Once complete, the secondary starts serving the member zone.

Removing a member zone from a secondary server requires only deleting the member zone's entry in the catalog zone; the change to the catalog zone is propagated to the secondary server using the normal AXFR/IXFR transfer mechanism. The secondary server, on processing the update, notices that the member zone has been removed, stops serving the zone, and removes it from its list of configured zones. However, removing the member zone from the primary server must be done by editing the configuration file or running rndc delzone.)

Configuring Catalog Zones

Catalog zones are configured with a catalog-zones statement in the options or view section of named.conf. For example,

catalog-zones {
	zone "catalog.example"
	     default-masters { 10.53.0.1; }
	     in-memory no
	     zone-directory "catzones"
	     min-update-interval 10;
};

This statement specifies that the zone catalog.example is a catalog zone. This zone must be properly configured in the same view. In most configurations, it would be a secondary zone.

The options following the zone name are not required, and may be specified in any order:

The default-masters option defines the default primaries for member zones listed in a catalog zone, and can be overridden by options within a catalog zone. If no such options are included, then member zones transfer their contents from the servers listed in this option.

The in-memory option, if set to yes, causes member zones to be stored only in memory. This is functionally equivalent to configuring a secondary zone without a file option. The default is no; member zones' content is stored locally in a file whose name is automatically generated from the view name, catalog zone name, and member zone name.

The zone-directory option causes local copies of member zones' zone files to be stored in the specified directory, if in-memory is not set to yes. The default is to store zone files in the server's working directory. A non-absolute pathname in zone-directory is assumed to be relative to the working directory.

The min-update-interval option sets the minimum interval between processing of updates to catalog zones, in seconds. If an update to a catalog zone (for example, via IXFR) happens less than min-update-interval seconds after the most recent update, the changes are not carried out until this interval has elapsed. The default is 5 seconds.

Catalog zones are defined on a per-view basis. Configuring a non-empty catalog-zones statement in a view automatically turns on allow-new-zones for that view. This means that rndc addzone and rndc delzone also work in any view that supports catalog zones.

Catalog Zone Format

A catalog zone is a regular DNS zone; therefore, it must have a single SOA and at least one NS record.

A record stating the version of the catalog zone format is also required. If the version number listed is not supported by the server, then a catalog zone may not be used by that server.

catalog.example.    IN SOA . . 2016022901 900 600 86400 1
catalog.example.    IN NS nsexample.
version.catalog.example.    IN TXT "1"

Note that this record must have the domain name "version.catalog-zone-name". The data stored in a catalog zone is indicated by the the domain name label immediately before the catalog zone domain.

Catalog zone options can be set either globally for the whole catalog zone or for a single member zone. Global options override the settings in the configuration file, and member zone options override global options.

Global options are set at the apex of the catalog zone, e.g.:

 masters.catalog.example.    IN AAAA 2001:db8::1

BIND currently supports the following options:

  • A simple masters definition:

    	 masters.catalog.example.    IN A 192.0.2.1
    	

    This option defines a primary server for the member zones, which can be either an A or AAAA record. If multiple primaries are set, the order in which they are used is random.

  • A masters with a TSIG key defined:

             label.masters.catalog.example.     IN A 192.0.2.2
             label.masters.catalog.example.	    IN TXT "tsig_key_name"
            

    This option defines a primary server for the member zone with a TSIG key set. The TSIG key must be configured in the configuration file. label can be any valid DNS label.

  • allow-query and allow-transfer ACLs:

             allow-query.catalog.example.	IN APL 1:10.0.0.1/24
             allow-transfer.catalog.example.	IN APL !1:10.0.0.1/32 1:10.0.0.0/24
            

    These options are the equivalents of allow-query and allow-transfer in a zone declaration in the named.conf configuration file. The ACL is processed in order; if there is no match to any rule, the default policy is to deny access. For the syntax of the APL RR, see RFC 3123.

A member zone is added by including a PTR resource record in the zones sub-domain of the catalog zone. The record label is a SHA-1 hash of the member zone name in wire format. The target of the PTR record is the member zone name. For example, to add the member zone domain.example:

5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN PTR domain.example.

The hash is necessary to identify options for a specific member zone. The member zone-specific options are defined the same way as global options, but in the member zone subdomain:

masters.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN A 192.0.2.2
label.masters.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN AAAA 2001:db8::2
label.masters.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN TXT "tsig_key"
allow-query.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN APL 1:10.0.0.0/24

Options defined for a specific zone override the global options defined in the catalog zone. These in turn override the global options defined in the catalog-zones statement in the configuration file.

Note that none of the global records for an option are inherited if any records are defined for that option for the specific zone. For example, if the zone had a masters record of type A but not AAAA, it would not inherit the type AAAA record from the global option.

IPv6 Support in BIND 9

BIND 9 fully supports all currently defined forms of IPv6 name-to-address and address-to-name lookups. It also uses IPv6 addresses to make queries when running on an IPv6-capable system.

For forward lookups, BIND 9 supports only AAAA records. RFC 3363 deprecated the use of A6 records, and client-side support for A6 records was accordingly removed from BIND 9. However, authoritative BIND 9 name servers still load zone files containing A6 records correctly, answer queries for A6 records, and accept zone transfer for a zone containing A6 records.

For IPv6 reverse lookups, BIND 9 supports the traditional "nibble" format used in the ip6.arpa domain, as well as the older, deprecated ip6.int domain. Older versions of BIND 9 supported the "binary label" (also known as "bitstring") format, but support of binary labels has been completely removed per RFC 3363. Many applications in BIND 9 do not understand the binary label format at all anymore, and return an error if one is given. In particular, an authoritative BIND 9 name server will not load a zone file containing binary labels.

For an overview of the format and structure of IPv6 addresses, see the section called “IPv6 addresses (AAAA)”.

Address Lookups Using AAAA Records

The IPv6 AAAA record is a parallel to the IPv4 A record, and, unlike the deprecated A6 record, specifies the entire IPv6 address in a single record. For example:

$ORIGIN example.com.
host            3600    IN      AAAA    2001:db8::1

Use of IPv4-in-IPv6 mapped addresses is not recommended. If a host has an IPv4 address, use an A record, not a AAAA, with ::ffff:192.168.42.1 as the address.

Address-to-Name Lookups Using Nibble Format

When looking up an address in nibble format, the address components are simply reversed, just as in IPv4, and ip6.arpa. is appended to the resulting name. For example, the following would provide reverse name lookup for a host with address 2001:db8::1:

$ORIGIN 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0  14400   IN    PTR    (
                                    host.example.com. )

BIND 9.11.36 (Extended Support Version)

man.dnssec-checkds.html000064400000012047152530214170011071 0ustar00 dnssec-checkds

Name

dnssec-checkds — DNSSEC delegation consistency checking tool

Synopsis

dnssec-checkds [-l domain] [-f file] [-d dig path] [-D dsfromkey path] {zone}

dnssec-dsfromkey [-l domain] [-f file] [-d dig path] [-D dsfromkey path] {zone}

DESCRIPTION

dnssec-checkds verifies the correctness of Delegation Signer (DS) or DNSSEC Lookaside Validation (DLV) resource records for keys in a specified zone.

OPTIONS

-f file

If a file is specified, then the zone is read from that file to find the DNSKEY records. If not, then the DNSKEY records for the zone are looked up in the DNS.

-l domain

Check for a DLV record in the specified lookaside domain, instead of checking for a DS record in the zone's parent.

-d dig path

Specifies a path to a dig binary. Used for testing.

-D dsfromkey path

Specifies a path to a dnssec-dsfromkey binary. Used for testing.

SEE ALSO

dnssec-dsfromkey(8), dnssec-keygen(8), dnssec-signzone(8),

BIND 9.11.36 (Extended Support Version)

man.dnssec-settime.html000064400000033644152530214170011145 0ustar00 dnssec-settime

Name

dnssec-settime — set the key timing metadata for a DNSSEC key

Synopsis

dnssec-settime [-f] [-K directory] [-L ttl] [-P date/offset] [-P sync date/offset] [-A date/offset] [-R date/offset] [-I date/offset] [-D date/offset] [-D sync date/offset] [-S key] [-i interval] [-h] [-V] [-v level] [-E engine] {keyfile}

DESCRIPTION

dnssec-settime reads a DNSSEC private key file and sets the key timing metadata as specified by the -P, -A, -R, -I, and -D options. The metadata can then be used by dnssec-signzone or other signing software to determine when a key is to be published, whether it should be used for signing a zone, etc.

If none of these options is set on the command line, then dnssec-settime simply prints the key timing metadata already stored in the key.

When key metadata fields are changed, both files of a key pair (Knnnn.+aaa+iiiii.key and Knnnn.+aaa+iiiii.private) are regenerated. Metadata fields are stored in the private file. A human-readable description of the metadata is also placed in comments in the key file. The private file's permissions are always set to be inaccessible to anyone other than the owner (mode 0600).

OPTIONS

-f

Force an update of an old-format key with no metadata fields. Without this option, dnssec-settime will fail when attempting to update a legacy key. With this option, the key will be recreated in the new format, but with the original key data retained. The key's creation date will be set to the present time. If no other values are specified, then the key's publication and activation dates will also be set to the present time.

-K directory

Sets the directory in which the key files are to reside.

-L ttl

Sets the default TTL to use for this key when it is converted into a DNSKEY RR. If the key is imported into a zone, this is the TTL that will be used for it, unless there was already a DNSKEY RRset in place, in which case the existing TTL would take precedence. If this value is not set and there is no existing DNSKEY RRset, the TTL will default to the SOA TTL. Setting the default TTL to 0 or none removes it from the key.

-h

Emit usage message and exit.

-V

Prints version information.

-v level

Sets the debugging level.

-E engine

Specifies the cryptographic hardware to use, when applicable.

When BIND is built with OpenSSL PKCS#11 support, this defaults to the string "pkcs11", which identifies an OpenSSL engine that can drive a cryptographic accelerator or hardware service module. When BIND is built with native PKCS#11 cryptography (--enable-native-pkcs11), it defaults to the path of the PKCS#11 provider library specified via "--with-pkcs11".

TIMING OPTIONS

Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS. If the argument begins with a '+' or '-', it is interpreted as an offset from the present time. For convenience, if such an offset is followed by one of the suffixes 'y', 'mo', 'w', 'd', 'h', or 'mi', then the offset is computed in years (defined as 365 24-hour days, ignoring leap years), months (defined as 30 24-hour days), weeks, days, hours, or minutes, respectively. Without a suffix, the offset is computed in seconds. To unset a date, use 'none' or 'never'.

-P date/offset

Sets the date on which a key is to be published to the zone. After that date, the key will be included in the zone but will not be used to sign it.

-P sync date/offset

Sets the date on which CDS and CDNSKEY records that match this key are to be published to the zone.

-A date/offset

Sets the date on which the key is to be activated. After that date, the key will be included in the zone and used to sign it.

-R date/offset

Sets the date on which the key is to be revoked. After that date, the key will be flagged as revoked. It will be included in the zone and will be used to sign it.

-I date/offset

Sets the date on which the key is to be retired. After that date, the key will still be included in the zone, but it will not be used to sign it.

-D date/offset

Sets the date on which the key is to be deleted. After that date, the key will no longer be included in the zone. (It may remain in the key repository, however.)

-D sync date/offset

Sets the date on which the CDS and CDNSKEY records that match this key are to be deleted.

-S predecessor key

Select a key for which the key being modified will be an explicit successor. The name, algorithm, size, and type of the predecessor key must exactly match those of the key being modified. The activation date of the successor key will be set to the inactivation date of the predecessor. The publication date will be set to the activation date minus the prepublication interval, which defaults to 30 days.

-i interval

Sets the prepublication interval for a key. If set, then the publication and activation dates must be separated by at least this much time. If the activation date is specified but the publication date isn't, then the publication date will default to this much time before the activation date; conversely, if the publication date is specified but activation date isn't, then activation will be set to this much time after publication.

If the key is being set to be an explicit successor to another key, then the default prepublication interval is 30 days; otherwise it is zero.

As with date offsets, if the argument is followed by one of the suffixes 'y', 'mo', 'w', 'd', 'h', or 'mi', then the interval is measured in years, months, weeks, days, hours, or minutes, respectively. Without a suffix, the interval is measured in seconds.

PRINTING OPTIONS

dnssec-settime can also be used to print the timing metadata associated with a key.

-u

Print times in UNIX epoch format.

-p C/P/Psync/A/R/I/D/Dsync/all

Print a specific metadata value or set of metadata values. The -p option may be followed by one or more of the following letters or strings to indicate which value or values to print: C for the creation date, P for the publication date, Psync for the CDS and CDNSKEY publication date, A for the activation date, R for the revocation date, I for the inactivation date, D for the deletion date, and Dsync for the CDS and CDNSKEY deletion date To print all of the metadata, use -p all.

SEE ALSO

dnssec-keygen(8), dnssec-signzone(8), BIND 9 Administrator Reference Manual, RFC 5011.

BIND 9.11.36 (Extended Support Version)

sample/etc/named.rfc1912.zones000064400000002005152530214170012027 0ustar00// named.rfc1912.zones: // // Provided by Red Hat caching-nameserver package // // ISC BIND named zone configuration for zones recommended by // RFC 1912 section 4.1 : localhost TLDs and address zones // and https://tools.ietf.org/html/rfc6303 // (c)2007 R W Franks // // See /usr/share/doc/bind*/sample/ for example named configuration files. // // Note: empty-zones-enable yes; option is default. // If private ranges should be forwarded, add // disable-empty-zone "."; into options // zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; sample/etc/named.conf000064400000020627152530214170010542 0ustar00/* Sample named.conf BIND DNS server 'named' configuration file for the Red Hat BIND distribution. See the BIND Administrator's Reference Manual (ARM) for details, in: file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html Also see the BIND Configuration GUI : /usr/bin/system-config-bind and its manual. */ options { // Put files that named is allowed to write in the data/ directory: directory "/var/named"; // "Working" directory dump-file "data/cache_dump.db"; statistics-file "data/named_stats.txt"; memstatistics-file "data/named_mem_stats.txt"; secroots-file "data/named.secroots"; recursing-file "data/named.recursing"; /* Specify listenning interfaces. You can use list of addresses (';' is delimiter) or keywords "any"/"none" */ //listen-on port 53 { any; }; listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { any; }; listen-on-v6 port 53 { ::1; }; /* Access restrictions There are two important options: allow-query { argument; }; - allow queries for authoritative data allow-query-cache { argument; }; - allow queries for non-authoritative data (mostly cached data) You can use address, network address or keywords "any"/"localhost"/"none" as argument Examples: allow-query { localhost; 10.0.0.1; 192.168.1.0/8; }; allow-query-cache { ::1; fe80::5c63:a8ff:fe2f:4526; 10.0.0.1; }; */ allow-query { localhost; }; allow-query-cache { localhost; }; /* Enable/disable recursion - recursion yes/no; - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; /* DNSSEC related options. See information about keys ("Trusted keys", bellow) */ /* Enable serving of DNSSEC related data - enable on both authoritative and recursive servers DNSSEC aware servers */ dnssec-enable yes; /* Enable DNSSEC validation on recursive servers */ dnssec-validation yes; /* In Fedora we use /run/named instead of default /var/run/named so we have to configure paths properly. */ pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; managed-keys-directory "/var/named/dynamic"; /* In Fedora we use system-wide Crypto Policy */ /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */ include "/etc/crypto-policies/back-ends/bind.config"; }; logging { /* If you want to enable debugging, eg. using the 'rndc trace' command, * named will try to write the 'named.run' file in the $directory (/var/named). * By default, SELinux policy does not allow named to modify the /var/named directory, * so put the default debug log file in data/ : */ channel default_debug { file "data/named.run"; severity dynamic; }; }; /* Views let a name server answer a DNS query differently depending on who is asking. By default, if named.conf contains no "view" clauses, all zones are in the "default" view, which matches all clients. Views are processed sequentially. The first match is used so the last view should match "any" - it's fallback and the most restricted view. If named.conf contains any "view" clause, then all zones MUST be in a view. */ view "localhost_resolver" { /* This view sets up named to be a localhost resolver ( caching only nameserver ). * If all you want is a caching-only nameserver, then you need only define this view: */ match-clients { localhost; }; recursion yes; # all views must contain the root hints zone: zone "." IN { type hint; file "/var/named/named.ca"; }; /* these are zones that contain definitions for all the localhost * names and addresses, as recommended in RFC1912 - these names should * not leak to the other nameservers: */ include "/etc/named.rfc1912.zones"; }; view "internal" { /* This view will contain zones you want to serve only to "internal" clients that connect via your directly attached LAN interfaces - "localnets" . */ match-clients { localnets; }; recursion yes; zone "." IN { type hint; file "/var/named/named.ca"; }; /* these are zones that contain definitions for all the localhost * names and addresses, as recommended in RFC1912 - these names should * not leak to the other nameservers: */ include "/etc/named.rfc1912.zones"; // These are your "authoritative" internal zones, and would probably // also be included in the "localhost_resolver" view above : /* NOTE for dynamic DNS zones and secondary zones: DO NOT USE SAME FILES IN MULTIPLE VIEWS! If you are using views and DDNS/secondary zones it is strongly recommended to read FAQ on ISC site (www.isc.org), section "Configuration and Setup Questions", questions "How do I share a dynamic zone between multiple views?" and "How can I make a server a slave for both an internal and an external view at the same time?" */ zone "my.internal.zone" { type master; file "my.internal.zone.db"; }; zone "my.slave.internal.zone" { type slave; file "slaves/my.slave.internal.zone.db"; masters { /* put master nameserver IPs here */ 127.0.0.1; } ; // put slave zones in the slaves/ directory so named can update them }; zone "my.ddns.internal.zone" { type master; allow-update { key ddns_key; }; file "dynamic/my.ddns.internal.zone.db"; // put dynamically updateable zones in the slaves/ directory so named can update them }; }; key ddns_key { algorithm hmac-md5; secret "use /usr/sbin/dnssec-keygen to generate TSIG keys"; }; view "external" { /* This view will contain zones you want to serve only to "external" clients * that have addresses that are not match any above view: */ match-clients { any; }; zone "." IN { type hint; file "/var/named/named.ca"; }; recursion no; // you'd probably want to deny recursion to external clients, so you don't // end up providing free DNS service to all takers // These are your "authoritative" external zones, and would probably // contain entries for just your web and mail servers: zone "my.external.zone" { type master; file "my.external.zone.db"; }; }; /* Trusted keys This statement contains DNSSEC keys. If you want DNSSEC aware resolver you have to configure at least one trusted key. Note that no key written below is valid. Especially root key because root zone is not signed yet. */ /* trusted-keys { // Root Key "." 257 3 3 "BNY4wrWM1nCfJ+CXd0rVXyYmobt7sEEfK3clRbGaTwSJxrGkxJWoZu6I7PzJu/ E9gx4UC1zGAHlXKdE4zYIpRhaBKnvcC2U9mZhkdUpd1Vso/HAdjNe8LmMlnzY3 zy2Xy4klWOADTPzSv9eamj8V18PHGjBLaVtYvk/ln5ZApjYghf+6fElrmLkdaz MQ2OCnACR817DF4BBa7UR/beDHyp5iWTXWSi6XmoJLbG9Scqc7l70KDqlvXR3M /lUUVRbkeg1IPJSidmK3ZyCllh4XSKbje/45SKucHgnwU5jefMtq66gKodQj+M iA21AfUVe7u99WzTLzY3qlxDhxYQQ20FQ97S+LKUTpQcq27R7AT3/V5hRQxScI Nqwcz4jYqZD2fQdgxbcDTClU0CRBdiieyLMNzXG3"; // Key for forward zone example.com. 257 3 5 "AwEAAaxPMcR2x0HbQV4WeZB6oEDX+r0QM65KbhTjrW1ZaARmPhEZZe 3Y9ifgEuq7vZ/zGZUdEGNWy+JZzus0lUptwgjGwhUS1558Hb4JKUbb OTcM8pwXlj0EiX3oDFVmjHO444gLkBO UKUf/mC7HvfwYH/Be22GnC lrinKJp1Og4ywzO9WglMk7jbfW33gUKvirTHr25GL7STQUzBb5Usxt 8lgnyTUHs1t3JwCY5hKZ6CqFxmAVZP20igTixin/1LcrgX/KMEGd/b iuvF4qJCyduieHukuY3H4XMAcR+xia2 nIUPvm/oyWR8BW/hWdzOvn SCThlHf3xiYleDbt/o1OTQ09A0="; // Key for reverse zone. 2.0.192.IN-ADDRPA.NET. 257 3 5 "AQOnS4xn/IgOUpBPJ3bogzwcxOdNax071L18QqZnQQQA VVr+iLhGTnNGp3HoWQLUIzKrJVZ3zggy3WwNT6kZo6c0 tszYqbtvchmgQC8CzKojM/W16i6MG/ea fGU3siaOdS0 yOI6BgPsw+YZdzlYMaIJGf4M4dyoKIhzdZyQ2bYQrjyQ 4LB0lC7aOnsMyYKHHYeRv PxjIQXmdqgOJGq+vsevG06 zW+1xgYJh9rCIfnm1GX/KMgxLPG2vXTD/RnLX+D3T3UL 7HJYHJhAZD5L59VvjSPsZJHeDCUyWYrvPZesZDIRvhDD 52SKvbheeTJUm6EhkzytNN2SN96QRk8j/iI8ib"; }; */ sample/var/named/named.ca000064400000004100152530214170011265 0ustar00 ; <<>> DiG 9.18.20 <<>> -4 +tcp +norec +nostats @d.root-servers.net ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47286 ;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1450 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 518400 IN NS a.root-servers.net. . 518400 IN NS b.root-servers.net. . 518400 IN NS c.root-servers.net. . 518400 IN NS d.root-servers.net. . 518400 IN NS e.root-servers.net. . 518400 IN NS f.root-servers.net. . 518400 IN NS g.root-servers.net. . 518400 IN NS h.root-servers.net. . 518400 IN NS i.root-servers.net. . 518400 IN NS j.root-servers.net. . 518400 IN NS k.root-servers.net. . 518400 IN NS l.root-servers.net. . 518400 IN NS m.root-servers.net. ;; ADDITIONAL SECTION: a.root-servers.net. 518400 IN A 198.41.0.4 b.root-servers.net. 518400 IN A 170.247.170.2 c.root-servers.net. 518400 IN A 192.33.4.12 d.root-servers.net. 518400 IN A 199.7.91.13 e.root-servers.net. 518400 IN A 192.203.230.10 f.root-servers.net. 518400 IN A 192.5.5.241 g.root-servers.net. 518400 IN A 192.112.36.4 h.root-servers.net. 518400 IN A 198.97.190.53 i.root-servers.net. 518400 IN A 192.36.148.17 j.root-servers.net. 518400 IN A 192.58.128.30 k.root-servers.net. 518400 IN A 193.0.14.129 l.root-servers.net. 518400 IN A 199.7.83.42 m.root-servers.net. 518400 IN A 202.12.27.33 a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30 b.root-servers.net. 518400 IN AAAA 2801:1b8:10::b c.root-servers.net. 518400 IN AAAA 2001:500:2::c d.root-servers.net. 518400 IN AAAA 2001:500:2d::d e.root-servers.net. 518400 IN AAAA 2001:500:a8::e f.root-servers.net. 518400 IN AAAA 2001:500:2f::f g.root-servers.net. 518400 IN AAAA 2001:500:12::d0d h.root-servers.net. 518400 IN AAAA 2001:500:1::53 i.root-servers.net. 518400 IN AAAA 2001:7fe::53 j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30 k.root-servers.net. 518400 IN AAAA 2001:7fd::1 l.root-servers.net. 518400 IN AAAA 2001:500:9f::42 m.root-servers.net. 518400 IN AAAA 2001:dc3::35 sample/var/named/named.localhost000064400000000230152530214170012672 0ustar00$TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 sample/var/named/my.external.zone.db000064400000000070152530214170013425 0ustar00@ in soa localhost. root 1 3H 15M 1W 1D ns localhost. sample/var/named/slaves/my.slave.internal.zone.db000064400000000070152530214170016025 0ustar00@ in soa localhost. root 1 3H 15M 1W 1D ns localhost. sample/var/named/slaves/my.ddns.internal.zone.db000064400000000070152530214170015643 0ustar00@ in soa localhost. root 1 3H 15M 1W 1D ns localhost. sample/var/named/named.empty000064400000000230152530214170012040 0ustar00$TTL 3H @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 sample/var/named/my.internal.zone.db000064400000000070152530214170013417 0ustar00@ in soa localhost. root 1 3H 15M 1W 1D ns localhost. sample/var/named/named.loopback000064400000000250152530214170012476 0ustar00$TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 PTR localhost. man.nsec3hash.html000064400000007606152530214170010074 0ustar00 nsec3hash

Name

nsec3hash — generate NSEC3 hash

Synopsis

nsec3hash {salt} {algorithm} {iterations} {domain}

DESCRIPTION

nsec3hash generates an NSEC3 hash based on a set of NSEC3 parameters. This can be used to check the validity of NSEC3 records in a signed zone.

ARGUMENTS

salt

The salt provided to the hash algorithm.

algorithm

A number indicating the hash algorithm. Currently the only supported hash algorithm for NSEC3 is SHA-1, which is indicated by the number 1; consequently "1" is the only useful value for this argument.

iterations

The number of additional times the hash should be performed.

domain

The domain name to be hashed.

SEE ALSO

BIND 9 Administrator Reference Manual, RFC 5155.

BIND 9.11.36 (Extended Support Version)

isc-logo.pdf000064400000041445152530214170006763 0ustar00%PDF-1.7 % 3 0 obj <> stream xc`` I-f``+) rwRR` ``\\yy 5F}Ydi+HbdF {ByIP- f_B@6_:N8@"'l t[lbVep/,L(Q0200PpLOJU,.I-VK/*/J,IM ! A!ahii #C C>CC*C;`0dB MP\AXq(v!ɥEePa>Œ90_!fSbj  9US endstream endobj 2 0 obj 313 endobj 8 0 obj <>>> stream xmV;6 u h >0mAi$O9BOϿn?G֧xüNH*b׍XTuxBV«,^2.auĪku2Nѫ -1_cim>F:86q ܉[}Y}zۯCFZmⰵ.EO(P?X`8Ma#E=YՂ7NDT_ XZ5:*QQ|V/F.dM!D %ȵ9FgW@JzJp2ʰچD~e"jVA%2QCPV kChWDg{:)O42VYZ}Q3={獈}a &UjV)Sc3Sk3%NWQqAkHqgO)JMҟHFa D,O.˦ 3-,ЈߎbjKr0 (0l K  1!}KLYRuCĜH͙f`'6B"i+ 9 ,&6. UƆڌػs=FnדIIګۙN2=6*B>~Hh@]v#0smJ!>>> endobj 13 0 obj <> stream x ǿ^.G|^|[pʸ {3pI7@MY 6:|^6H1̛<"lnU#^.%nɱ~EMD*̅n:|iο>ݬz$)͠Nj/FւC[ nW%1sH-u9L&>tꨑ9E1}N}O/YC`IV7mȦ{7Cy ??t^ | /QUsL 5KXxܶ*{Iu^bʸ{K kxʻyC!N.U a2D>}lRIT'D݅Xj"Lu V8ߴWh5oP-l^uoTbCmȡlOqv$Tu&IU NdɊ8NZ $wh'}9uymNinC=B{2v-Rc5W xw|X>yl[Dƛ8!>3lh15Е'qh]fMtYCcMhuC;P`SڑmfǕ h^"`MUwz$nͣC2- pj!q)3kZF'bJ[}/{q؞Ǧn \FZCM.+SZ{2RMK@7D_hIuEM'T7={~}t:-S`HU%dKUi&%es]$Jqqd(ԟ)7ҭkoYgߌS=&heԏ5lquַe7* ̤tKK]+wnT#FH;{UL-jl?A2/%=7g߼INIG{/Pgoxe?Yd*߀Yjq#((7`軋g]:|/ PqMMuջSܳ:? iA,5$ @4M, ]YLWf-~*of$V$Wov5W u;9 uvѢҦd۸qyԯw~Z^}1eiAzM@?S &/M7B30WS n(#;] %SaJooq2`;?HџN`q?)t܄oLe"b}].S UV~" o6/gQ*75tT8/~c߹ߞeWRb;?z'aJJW_@~uV )i'w#C?.z7KeLj.ǧސH3g7=X\?ǿ/֯}Y~eh8rf4%o#Ӭ QWS/Vp./g,Q$'I ;8W9ptpWO9\Deɒgc]?_L͚.\uCɡ_Y?Ekۭk%_>ncb߮>6Dv3"wM҂Ӌ߬ۦ|SbOTkϿ4u PxtV ޓE1kj(ߜ~s WSOD5[KA2x`JϭA?s9L4cSi= 3Gf?08{SkEfz*%lV[W/ͥ/W_|+~VS=QKmWB,St%Pcg!2iiBCW_';yoҡhr>^+NTh]XS)z]b$u/a/,<  SzY?kϽ2 `?rfwb<[$Ɩs &,㔒q^i%׸ ϟ/W:%dA97$גNlutR.6fCbkQڝE.^szҦCKܚOz]Њ* [*\T}?ΗbjM8Z>k e bv O$`vz?m_#uA\X<3" z7/' endstream endobj 14 0 obj 3600 endobj 16 0 obj <> stream xڝwTTϽwz0z.0. Qf Ml@DEHb!(`HPb0dFJ|yyǽgs{.$O./ 'z8WGбx0Y驾A@$/7z HeOOҬT_lN:K"N3"$F/JPrb[䥟}Qd[Sl1x{#bG\NoX3I[ql2$ 8xtrp/8 pCfq.Knjm͠{r28?.)ɩL^6g,qm"[Z[Z~Q7%" 3R`̊j[~: w!$E}kyhyRm333: }=#vʉe tqX)I)B>== <8Xȉ9yP:8p΍Lg kk Ѐ$t!0V87`ɀ2A. @JPA#h'@8 .: ``a!2D!UH 2 dA>P ECqB**Z:]B=h~L2  5pN:|ó@ QC !H,G6 H9R ]H/r Aw( Q(OTJCm@*QGQ-(j MF+ 6h/*t:].G7Зw7 Xa<1:L1s3bXyeb~19 vGĩp+5qy^ oó|= ?'Htv`Ba3BDxHxE$Չ"XAP44077&9$An0;T2421t.54ld+s;# V]=iY9FgM֚k&=%Ō:nc1gcbcfX.}lGv{c)LŖN퉛w/p+/<j$.$%&㒣OdxTԂԑ4i3|o~C:&S@L u[Uo3C3OfIgwdO|;W-wsz 17jl8c͉̈́3+{%lKWr[ $ llGmnacOkE&EEY׾2⫅;K,KhtiN=e²{^-_V^Oo§s]?TWީrjVQ=w}`嚢zԶiו8>k׍ E  [ly邟~_Y53rW򯎼^{7so}x>|쇊z>yz endstream endobj 15 0 obj 2594 endobj 18 0 obj <> stream xkrHq4_?wc ꎘ<>@ՏZZw[U "}PH$╕2!Y6 f&uv8?mrel;/ڷ&H4VF*Dj[:Լ"[n~VnY^ڟvGn`d=~Uؓg);{NNh_wOT Y;<)*@#߭xj΍7Y/J[׋**t#0~U8ckv* !?t߬ <ĝ =t ˜lFe'Vvo l˲ݳW:nv {keӒ]*ըccB[t~nui%ݸ|aZn$]$Kqc%$΢A\Yoc"l_RDވQ#XWxEsj%{=*v8n?ڍ#C_#׆1+ jk~ֈQGѕ2;qv5f$}(v^'q `=(M㷊}i t@Ŭ q'ی5O:׿kP+@lDWך>d? jOϬmOwUd) 3&^8jiwm%&*z>j(\) [+3\:tG.ŇM]9ORx#ibѺLz_mW1z*݊K4M?]4kdo)Ps^9\ƣ=Wq khm朦{{{l_WKѝ͹5>VYn}4;1A"qңaƨ,LЄR8[u~.NIT+4^cg@?Ds$yhlȋ-؂ȠOs[+5K1eYɏ;hə/]laSGB'cm]}rj<(}bo^4a+|-}r]{^mdCrPI,>0g_+# I)#kmaÖ rsͳ$ Jo0cmH,-8`?]uC\d;^ݫ,4zS $ٕܻ4I2=2eGי:w-;_T"!Zh_yin {/݈RKUU㳴+ +j/MU:wFyĴX4(i9I7sTRu߮o6cZAY/Pf9-Vk Kz^dO:!fR¥eSskUbʙF͙k%6Et?f m{"=xslru'->8yR&o[Zs HTQz78_w@`<2SJ5ȼ"ncwo+گ azI Q!IP| 6x;xthb_!JݍBS*wWZ5f&v?C. U6F3?Z8 >DDg5fCoԘU|۲ZNdVXSy<+5'BgIl+D $[{k0kOjĎ`93ϗ|bSAc+|(>U˹ɼnq6 oSCld+/Pf'C#݌x"I+wx>xE*Fu K{ΣHVCx9=&c&mCr%\<: ٨;-M(f6w%搧ϰW/iʯ':77hNmI HlW |pg'~"ϫ/A;SJò{V&WaXiJdkB/ Q.Ӭ*T~_LࢊUzD 7ElWYzp]=Uj$`cϗο60G=q' e__ӃNS*D%pA0fU>5sN$SJֻcg/8iYSzKj5QEZ~:_>-aW|$VEoT8k#mRWF#Ou }z='6G$MSPnϤiiޘ;e.n//һrVfE4O^4W2]FPe(d]VafyL.{eB>cTOkSjZ })LAD,__R[E5 ䷍edlb(N.`.[r"1.f 01> ldU!{4-_51I&B+[Lk`T%۱[ipvVEE{OL>WSrQ>CD:uWSy$,YƟ˸aM^9)BQcyC:V+;0C;,0yATBG}l榟<#$RVɗ"!Ա+,wNi`mg`W^i?|;inN+ߑ"W :ǼRG>1*7jzad.j\5"zwuꏊVLw5 !fS/?zSGΛC!8y7#[y}hNYW=԰Ϣw"0mHj}_>qΪ`?q3 κNUw ƿ{OMi5Hn8Δ` Ft[)ubj D֊#ܟWMu:6R-cwS>W#i-E)5~Ͳ]beq,4TIWfp[MŦ^5 ܕ jh#PI$Aj&9V_~M檌QݖdUXU,*g`YjLb#FČ8>9\TsY6?f$NY٪Ah!Ղtj6ׄ+(-JQ%Pv8v=NxlV ӹÖfUai:+~XOg/@CZ[yo*RiP~8Mu|ߡYο&6,I.۳S>mvuRtMgټwاmҙ-㓇u̚*"mizK P7TfLlPjsQosVN/}1RvKWaKM6\ov6N˚\FhmSjTgtj^Ls+6)aɜN?yֽ҄uݮh!urƾS͏wh50C0S> stream x=K 0 D9E.`ǽ .GpJx 3 ̛ $(ˌބf<.prCR QÀ"I(7,{lcjc|Y endstream endobj 5 0 obj 101 endobj 20 0 obj <>/XObject<>/ExtGState<>>> endobj 21 0 obj <> endobj 12 0 obj <> endobj 4 0 obj <>/MediaBox[0 0 612 792]>> endobj 1 0 obj <> endobj 23 0 obj <> stream uuid:27CD6076-1824-7884-4C2B-9885F05CA89E uuid:2715D29F-FE68-085F-2B30-4E1E5E2A9005 2020-07-06T17:33:26-07:00 2020-07-06T17:33:26-07:00 Serif Affinity Designer (Mar 31 2020) 2020-07-06T17:33:26-07:00 PDFlib+PDI 9.1.2p1-i (OS X/macOS) false isc-logo endstream endobj 22 0 obj 1504 endobj 24 0 obj <> endobj 17 0 obj [/ICCBased 16 0 R] endobj xref 0 25 0000000000 65535 f 0000014786 00000 n 0000000422 00000 n 0000000015 00000 n 0000014651 00000 n 0000014222 00000 n 0000014051 00000 n 0000001714 00000 n 0000000441 00000 n 0000001764 00000 n 0000001793 00000 n 0000001734 00000 n 0000014591 00000 n 0000001839 00000 n 0000005587 00000 n 0000008298 00000 n 0000005608 00000 n 0000016504 00000 n 0000008319 00000 n 0000014030 00000 n 0000014241 00000 n 0000014361 00000 n 0000016421 00000 n 0000014838 00000 n 0000016442 00000 n trailer <]>> startxref 16539 %%EOF notes.html000064400000335241152530214170006572 0ustar00

Release Notes for BIND Version 9.11.36

Introduction

BIND 9.11 (Extended Support Version) is a stable branch of BIND. This document summarizes significant changes since the last production release on that branch.

Please see the file CHANGES for a more detailed list of changes and bug fixes.

Download

The latest versions of BIND 9 software can always be found at https://www.isc.org/download/. There you will find additional information about each release, source code, and pre-compiled versions for Microsoft Windows operating systems.

License Change

With the release of BIND 9.11.0, ISC changed to the open source license for BIND from the ISC license to the Mozilla Public License (MPL 2.0).

The MPL-2.0 license requires that if you make changes to licensed software (e.g. BIND) and distribute them outside your organization, that you publish those changes under that same license. It does not require that you publish or disclose anything other than the changes you made to our software.

This requirement will not affect anyone who is using BIND, with or without modifications, without redistributing it, nor anyone redistributing it without changes. Therefore, this change will be without consequence for most individuals and organizations who are using BIND.

Those unsure whether or not the license change affects their use of BIND, or who wish to discuss how to comply with the license may contact ISC at https://www.isc.org/mission/contact/.

Notes for BIND 9.11.36

Security Fixes

  • The lame-ttl option controls how long named caches certain types of broken responses from authoritative servers (see the security advisory for details). This caching mechanism could be abused by an attacker to significantly degrade resolver performance. The vulnerability has been mitigated by changing the default value of lame-ttl to 0 and overriding any explicitly set value with 0, effectively disabling this mechanism altogether. ISC's testing has determined that doing that has a negligible impact on resolver performance while also preventing abuse. Administrators may observe more traffic towards servers issuing certain types of broken responses than in previous BIND 9 releases, depending on client query patterns. (CVE-2021-25219)

    ISC would like to thank Kishore Kumar Kothapalli of Infoblox for bringing this vulnerability to our attention. [GL #2899]

Notes for BIND 9.11.35

Security Fixes

  • named failed to check the opcode of responses when performing zone refreshes, stub zone updates, and UPDATE forwarding. This could lead to an assertion failure under certain conditions and has been addressed by rejecting responses whose opcode does not match the expected value. [GL #2762]

Notes for BIND 9.11.34

This maintenance release of BIND 9.11 contains no significant changes, although some minor updates have been made (for example, to fix build issues on Solaris 11).

Notes for BIND 9.11.33

This maintenance release of BIND 9.11 contains no significant changes, although some minor updates have been made (for example, to eliminate compiler warnings emitted by GCC 11).

Notes for BIND 9.11.32

Feature Changes

  • DNSSEC responses containing NSEC3 records with iteration counts greater than 150 are now treated as insecure. [GL #2445]

  • The maximum supported number of NSEC3 iterations that can be configured for a zone has been reduced to 150. [GL #2642]

  • The implementation of the ZONEMD RR type has been updated to match RFC 8976. [GL #2658]

Notes for BIND 9.11.31

Security Fixes

  • A malformed incoming IXFR transfer could trigger an assertion failure in named, causing it to quit abnormally. (CVE-2021-25214)

    ISC would like to thank Greg Kuechle of SaskTel for bringing this vulnerability to our attention. [GL #2467]

  • named crashed when a DNAME record placed in the ANSWER section during DNAME chasing turned out to be the final answer to a client query. (CVE-2021-25215)

    ISC would like to thank Siva Kakarla for bringing this vulnerability to our attention. [GL #2540]

  • When a server's configuration set the tkey-gssapi-keytab or tkey-gssapi-credential option, a specially crafted GSS-TSIG query could cause a buffer overflow in the ISC implementation of SPNEGO (a protocol enabling negotiation of the security mechanism used for GSSAPI authentication). This flaw could be exploited to crash named binaries compiled for 64-bit platforms, and could enable remote code execution when named was compiled for 32-bit platforms. (CVE-2021-25216)

    This vulnerability was reported to us as ZDI-CAN-13347 by Trend Micro Zero Day Initiative. [GL #2604]

Feature Changes

  • The ISC implementation of SPNEGO was removed from BIND 9 source code. Instead, BIND 9 now always uses the SPNEGO implementation provided by the system GSSAPI library when it is built with GSSAPI support. All major contemporary Kerberos/GSSAPI libraries contain an implementation of the SPNEGO mechanism. [GL #2607]

Notes for BIND 9.11.30

The BIND 9.11.30 release was withdrawn after a backporting bug was discovered during pre-release testing. ISC would like to acknowledge the assistance of Natan Segal of Bluecat Networks.

Notes for BIND 9.11.29

Bug Fixes

  • An invalid direction field (not one of N, S, E, W) in a LOC record resulted in an INSIST failure when a zone file containing such a record was loaded. [GL #2499]

Notes for BIND 9.11.28

Security Fixes

  • When tkey-gssapi-keytab or tkey-gssapi-credential was configured, a specially crafted GSS-TSIG query could cause a buffer overflow in the ISC implementation of SPNEGO (a protocol enabling negotiation of the security mechanism to use for GSSAPI authentication). This flaw could be exploited to crash named. Theoretically, it also enabled remote code execution, but achieving the latter is very difficult in real-world conditions. (CVE-2020-8625)

    This vulnerability was responsibly reported to us as ZDI-CAN-12302 by Trend Micro Zero Day Initiative. [GL #2354]

Notes for BIND 9.11.27

Bug Fixes

  • Multiple threads could attempt to destroy a single RBTDB instance at the same time, resulting in an unpredictable but low-probability assertion failure in free_rbtdb(). This has been fixed. [GL #2317]

Notes for BIND 9.11.26

Feature Changes

  • The default value of max-recursion-queries was increased from 75 to 100. Since the queries sent towards root and TLD servers are now included in the count (as a result of the fix for CVE-2020-8616), max-recursion-queries has a higher chance of being exceeded by non-attack queries, which is the main reason for increasing its default value. [GL #2305]

  • The default value of nocookie-udp-size was restored back to 4096 bytes. Since max-udp-size is the upper bound for nocookie-udp-size, this change relieves the operator from having to change nocookie-udp-size together with max-udp-size in order to increase the default EDNS buffer size limit. nocookie-udp-size can still be set to a value lower than max-udp-size, if desired. [GL #2250]

Bug Fixes

  • Handling of missing DNS COOKIE responses over UDP was tightened by falling back to TCP. [GL #2275]

  • The CNAME synthesized from a DNAME was incorrectly followed when the QTYPE was CNAME or ANY. [GL #2280]

  • Building with native PKCS#11 support for AEP Keyper has been broken since BIND 9.11.22. This has been fixed. [GL #2315]

Notes for BIND 9.11.25

Bug Fixes

  • named acting as a resolver could incorrectly treat signed zones with no DS record at the parent as bogus. Such zones should be treated as insecure. This has been fixed. [GL #2236]

  • After a Negative Trust Anchor (NTA) is added, BIND performs periodic checks to see if it is still necessary. If BIND encountered a failure while creating a query to perform such a check, it attempted to dereference a NULL pointer, resulting in a crash. [GL #2244]

  • A problem obtaining glue records could prevent a stub zone from functioning properly, if the authoritative server for the zone were configured for minimal responses. [GL #1736]

Notes for BIND 9.11.24

Feature Changes

  • DNS Flag Day 2020: The default EDNS buffer size has been changed from 4096 to 1232 bytes. According to measurements done by multiple parties, this should not cause any operational problems as most of the Internet "core" is able to cope with IP message sizes between 1400-1500 bytes; the 1232 size was picked as a conservative minimal number that could be changed by the DNS operator to an estimated path MTU minus the estimated header space. In practice, the smallest MTU witnessed in the operational DNS community is 1500 octets, the maximum Ethernet payload size, so a useful default for maximum DNS/UDP payload size on reliable networks would be 1400 bytes. [GL #2183]

Bug Fixes

  • named reported an invalid memory size when running in an environment that did not properly report the number of available memory pages and/or the size of each memory page. [GL #2166]

  • With multiple forwarders configured, named could fail the REQUIRE(msg->state == (-1)) assertion in lib/dns/message.c, causing it to crash. This has been fixed. [GL #2124]

Notes for BIND 9.11.23

Bug Fixes

  • Parsing of LOC records was made more strict by rejecting a sole period (.) and/or m as a value. These changes prevent zone files using such values from being loaded. Handling of negative altitudes which are not integers was also corrected. [GL #2074]

  • Several problems found by OSS-Fuzz were fixed. (None of these are security issues.) [GL !3953] [GL !3975]

Notes for BIND 9.11.22

Security Fixes

  • It was possible to trigger an assertion failure when verifying the response to a TSIG-signed request. This was disclosed in CVE-2020-8622.

    ISC would like to thank Dave Feldman, Jeff Warren, and Joel Cunningham of Oracle for bringing this vulnerability to our attention. [GL #2028]

  • When BIND 9 was compiled with native PKCS#11 support, it was possible to trigger an assertion failure in code determining the number of bits in the PKCS#11 RSA public key with a specially crafted packet. This was disclosed in CVE-2020-8623.

    ISC would like to thank Lyu Chiy for bringing this vulnerability to our attention. [GL #2037]

  • update-policy rules of type subdomain were incorrectly treated as zonesub rules, which allowed keys used in subdomain rules to update names outside of the specified subdomains. The problem was fixed by making sure subdomain rules are again processed as described in the ARM. This was disclosed in CVE-2020-8624.

    ISC would like to thank Joop Boonen of credativ GmbH for bringing this vulnerability to our attention. [GL #2055]

Bug Fixes

  • Wildcard RPZ passthru rules could incorrectly be overridden by other rules that were loaded from RPZ zones which appeared later in the response-policy statement. This has been fixed. [GL #1619]

  • LMDB locking code was revised to make rndc reconfig work properly on FreeBSD and with LMDB >= 0.9.26. [GL #1976]

Notes for BIND 9.11.21

Bug Fixes

  • named could crash when cleaning dead nodes in lib/dns/rbtdb.c that were being reused. [GL #1968]

  • Properly handle missing kyua command so that make check does not fail unexpectedly when CMocka is installed, but Kyua is not. [GL #1950]

  • The validator could fail to accept a properly signed RRset if an unsupported algorithm appeared earlier in the DNSKEY RRset than a supported algorithm. It could also stop if it detected a malformed public key. [GL #1689]

Notes for BIND 9.11.20

Security Fixes

  • It was possible to trigger an INSIST failure when a zone with an interior wildcard label was queried in a certain pattern. This was disclosed in CVE-2020-8619. [GL #1111] [GL #1718]

New Features

  • dig and other tools can now print the Extended DNS Error (EDE) option when it appears in a request or a response. [GL #1835]

Bug Fixes

  • When fully updating the NSEC3 chain for a large zone via IXFR, a temporary loss of performance could be experienced on the secondary server when answering queries for nonexistent data that required DNSSEC proof of non-existence (in other words, queries that required the server to find and to return NSEC3 data). The unnecessary processing step that was causing this delay has now been removed. [GL #1834]

  • A data race in lib/dns/resolver.c:log_formerr() that could lead to an assertion failure was fixed. [GL #1808]

  • Previously, provide-ixfr no; failed to return up-to-date responses when the serial number was greater than or equal to the current serial number. [GL #1714]

  • named-checkconf -p could include spurious text in server-addresses statements due to an uninitialized DSCP value. This has been fixed. [GL #1812]

  • The ARM has been updated to indicate that the TSIG session key is generated when named starts, regardless of whether it is needed. [GL #1842]

Notes for BIND 9.11.19

Security Fixes

  • To prevent exhaustion of server resources by a maliciously configured domain, the number of recursive queries that can be triggered by a request before aborting recursion has been further limited. Root and top-level domain servers are no longer exempt from the max-recursion-queries limit. Fetches for missing name server address records are limited to 4 for any domain. This issue was disclosed in CVE-2020-8616. [GL #1388]

  • Replaying a TSIG BADTIME response as a request could trigger an assertion failure. This was disclosed in CVE-2020-8617. [GL #1703]

Feature Changes

  • Message IDs in inbound AXFR transfers are now checked for consistency. Log messages are emitted for streams with inconsistent message IDs. [GL #1674]

Bug Fixes

  • When running on a system with support for Linux capabilities, named drops root privileges very soon after system startup. This was causing a spurious log message, "unable to set effective uid to 0: Operation not permitted", which has now been silenced. [GL #1042] [GL #1090]

  • When named-checkconf -z was run, it would sometimes incorrectly set its exit code. It reflected the status of the last view found; if zone-loading errors were found in earlier configured views but not in the last one, the exit code indicated success. Thanks to Graham Clinch. [GL #1807]

  • When built without LMDB support, named failed to restart after a zone with a double quote (") in its name was added with rndc addzone. Thanks to Alberto Fernndez. [GL #1695]

Notes for BIND 9.11.18

Security Fixes

  • DNS rebinding protection was ineffective when BIND 9 is configured as a forwarding DNS server. Found and responsibly reported by Tobias Klein. [GL #1574]

Known Issues

  • We have received reports that in some circumstances, receipt of an IXFR can cause the processing of queries to slow significantly. Some of these are related to RPZ processing, others appear to occur where there are NSEC3-related changes (such as an operator changing the NSEC3 salt used in the hash calculation). These are being investigated. [GL #1685]

Notes for BIND 9.11.17

Feature Changes

  • The configure option --with-libxml2 now uses pkg-config to detect libxml2 library availability. You will either have to install pkg-config or specify the exact path where libxml2 has been installed on your system. [GL #1635]

Bug Fixes

  • Fixed re-signing issues with inline zones which resulted in records being re-signed late or not at all.

Notes for BIND 9.11.16

Bug Fixes

  • named crashed when it was queried for a nonexistent name in the CHAOS class. [GL #1540]

Notes for BIND 9.11.15

Bug Fixes

  • Fixed a GeoIP2 lookup bug which was triggered when certain libmaxminddb versions were used. [GL #1552]

  • Fixed several possible race conditions discovered by ThreadSanitizer.

Notes for BIND 9.11.14

Bug Fixes

  • Fixed a bug that caused named to leak memory on reconfiguration when any GeoIP2 database was in use. [GL #1445]

  • Fixed several possible race conditions discovered by ThreadSanitizer.

Notes for BIND 9.11.13

Security Fixes

  • Set a limit on the number of concurrently served pipelined TCP queries. This flaw is disclosed in CVE-2019-6477. [GL #1264]

New Features

  • Added a new statistics variable tcp-highwater that reports the maximum number of simultaneous TCP clients BIND has handled while running. [GL #1206]

Notes for BIND 9.11.12

None.

Notes for BIND 9.11.11

None.

Notes for BIND 9.11.10

New Features

  • A SipHash 2-4 based DNS Cookie (RFC 7873) algorithm has been added. [GL #605]

    If you are running multiple DNS Servers (different versions of BIND 9 or DNS server from multiple vendors) responding from the same IP address (anycast or load-balancing scenarios), you'll have to make sure that all the servers are configured with the same DNS Cookie algorithm and same Server Secret for the best performance.

  • DS records included in DNS referral messages can now be validated and cached immediately, reducing the number of queries needed for a DNSSEC validation. [GL #964]

Bug Fixes

  • Interaction between DNS64 and RPZ No Data rule (CNAME *.) could cause unexpected results; this has been fixed. [GL #1106]

  • named-checkconf now checks DNS64 prefixes to ensure bits 64-71 are zero. [GL #1159]

  • named-checkconf could crash during configuration if configured to use "geoip continent" ACLs with legacy GeoIP. [GL #1163]

  • named-checkconf now correctly reports a missing dnstap-output option when dnstap is set. [GL #1136]

  • Handle ETIMEDOUT error on connect() with a non-blocking socket. [GL #1133]

Notes for BIND 9.11.9

New Features

  • The new GeoIP2 API from MaxMind is now supported when BIND is compiled using configure --with-geoip2. The legacy GeoIP API can be used by compiling with configure --with-geoip instead. (Note that the databases for the legacy API are no longer maintained by MaxMind.)

    The default path to the GeoIP2 databases will be set based on the location of the libmaxminddb library; for example, if it is in /usr/local/lib, then the default path will be /usr/local/share/GeoIP. This value can be overridden in named.conf using the geoip-directory option.

    Some geoip ACL settings that were available with legacy GeoIP, including searches for netspeed, org, and three-letter ISO country codes, will no longer work when using GeoIP2. Supported GeoIP2 database types are country, city, domain, isp, and as. All of the databases support both IPv4 and IPv6 lookups. [GL #182]

Bug Fixes

  • Glue address records were not being returned in responses to root priming queries; this has been corrected. [GL #1092]

Notes for BIND 9.11.8

Security Fixes

  • A race condition could trigger an assertion failure when a large number of incoming packets were being rejected. This flaw is disclosed in CVE-2019-6471. [GL #942]

Notes for BIND 9.11.7

Security Fixes

  • The TCP client quota set using the tcp-clients option could be exceeded in some cases. This could lead to exhaustion of file descriptors. This flaw is disclosed in CVE-2018-5743. [GL #615]

Feature Changes

  • When trusted-keys and managed-keys are both configured for the same name, or when trusted-keys is used to configure a trust anchor for the root zone and dnssec-validation is set to auto, automatic RFC 5011 key rollovers will fail.

    This combination of settings was never intended to work, but there was no check for it in the parser. This has been corrected; a warning is now logged. (In BIND 9.15 and higher this error will be fatal.) [GL #868]

Notes for BIND 9.11.6

Security Fixes

  • Code change #4964, intended to prevent double signatures when deleting an inactive zone DNSKEY in some situations, introduced a new problem during zone processing in which some delegation glue RRsets are incorrectly identified as needing RRSIGs, which are then created for them using the current active ZSK for the zone. In some, but not all cases, the newly-signed RRsets are added to the zone's NSEC/NSEC3 chain, but incompletely -- this can result in a broken chain, affecting validation of proof of nonexistence for records in the zone. [GL #771]

  • named could crash if it managed a DNSSEC security root with managed-keys and the authoritative zone rolled the key to an algorithm not supported by BIND 9. This flaw is disclosed in CVE-2018-5745. [GL #780]

  • named leaked memory when processing a request with multiple Key Tag EDNS options present. ISC would like to thank Toshifumi Sakaguchi for bringing this to our attention. This flaw is disclosed in CVE-2018-5744. [GL #772]

  • Zone transfer controls for writable DLZ zones were not effective as the allowzonexfr method was not being called for such zones. This flaw is disclosed in CVE-2019-6465. [GL #790]

Feature Changes

  • When compiled with IDN support, the dig and the nslookup commands now disable IDN processing when the standard output is not a tty (e.g. not used by human). The command line options +idnin and +idnout need to be used to enable IDN processing when dig or nslookup is used from the shell scripts.

Notes for BIND 9.11.5

Security Fixes

  • named could crash during recursive processing of DNAME records when deny-answer-aliases was in use. This flaw is disclosed in CVE-2018-5740. [GL #387]

New Features

  • Two new update policy rule types have been added krb5-selfsub and ms-selfsub which allow machines with Kerberos principals to update the name space at or below the machine names identified in the respective principals.

Feature Changes

  • The rndc nta command could not differentiate between views of the same name but different class; this has been corrected with the addition of a -class option. [GL #105]

Bug Fixes

  • When a negative trust anchor was added to multiple views using rndc nta, the text returned via rndc was incorrectly truncated after the first line, making it appear that only one NTA had been added. This has been fixed. [GL #105]

Notes for BIND 9.11.4

Security Fixes

  • When recursion is enabled but the allow-recursion and allow-query-cache ACLs are not specified, they should be limited to local networks, but they were inadvertently set to match the default allow-query, thus allowing remote queries. This flaw is disclosed in CVE-2018-5738. [GL #309]

New Features

  • named now supports the "root key sentinel" mechanism. This enables validating resolvers to indicate which trust anchors are configured for the root, so that information about root key rollover status can be gathered. To disable this feature, add root-key-sentinel no; to named.conf.

  • Added the ability not to return a DNS COOKIE option when one is present in the request. To prevent a cookie being returned, add answer-cookie no; to named.conf. [GL #173]

    answer-cookie no is only intended as a temporary measure, for use when named shares an IP address with other servers that do not yet support DNS COOKIE. A mismatch between servers on the same address is not expected to cause operational problems, but the option to disable COOKIE responses so that all servers have the same behavior is provided out of an abundance of caution. DNS COOKIE is an important security mechanism, and should not be disabled unless absolutely necessary.

Removed Features

  • named will now log a warning if the old BIND now can be compiled against libidn2 library to add IDNA2008 support. Previously BIND only supported IDNA2003 using (now obsolete) idnkit-1 library.

Feature Changes

  • dig +noidnin can be used to disable IDN processing on the input domain name, when BIND is compiled with IDN support.

  • Multiple cookie-secret clause are now supported. The first cookie-secret in named.conf is used to generate new server cookies. Any others are used to accept old server cookies or those generated by other servers using the matching cookie-secret.

Bug Fixes

  • named now rejects excessively large incremental (IXFR) zone transfers in order to prevent possible corruption of journal files which could cause named to abort when loading zones. [GL #339]

  • rndc reload could cause named to leak memory if it was invoked before the zone loading actions from a previous rndc reload command were completed. [RT #47076]

Notes for BIND 9.11.3

Security Fixes

  • Addresses could be referenced after being freed during resolver processing, causing an assertion failure. The chances of this happening were remote, but the introduction of a delay in resolution increased them. This bug is disclosed in CVE-2017-3145. [RT #46839]

  • update-policy rules that otherwise ignore the name field now require that it be set to "." to ensure that any type list present is properly interpreted. If the name field was omitted from the rule declaration and a type list was present it wouldn't be interpreted as expected.

Removed Features

  • The ISC DNSSEC Lookaside Validation (DLV) service has been shut down; all DLV records in the dlv.isc.org zone have been removed. References to the service have been removed from BIND documentation. Lookaside validation is no longer used by default by delv. The DLV key has been removed from bind.keys. Setting dnssec-lookaside to auto or to use dlv.isc.org as a trust anchor results in a warning being issued.

  • named will now log a warning if the old root DNSSEC key is explicitly configured and has not been updated. [RT #43670]

Protocol Changes

  • BIND can now use the Ed25519 and Ed448 Edwards Curve DNSSEC signing algorithms described in RFC 8080. Note, however, that these algorithms must be supported in OpenSSL; currently they are only available in the development branch of OpenSSL at https://github.com/openssl/openssl. [RT #44696]

  • When parsing DNS messages, EDNS KEY TAG options are checked for correctness. When printing messages (for example, in dig), EDNS KEY TAG options are printed in readable format.

Feature Changes

  • named will no longer start or accept reconfiguration if managed-keys or dnssec-validation auto are in use and the managed-keys directory (specified by managed-keys-directory, and defaulting to the working directory if not specified), is not writable by the effective user ID. [RT #46077]

  • Previously, update-policy local; accepted updates from any source so long as they were signed by the locally-generated session key. This has been further restricted; updates are now only accepted from locally configured addresses. [RT #45492]

Bug Fixes

  • Attempting to validate improperly unsigned CNAME responses from secure zones could cause a validator loop. This caused a delay in returning SERVFAIL and also increased the chances of encountering the crash bug described in CVE-2017-3145. [RT #46839]

  • When named was reconfigured, failure of some zones to load correctly could leave the system in an inconsistent state; while generally harmless, this could lead to a crash later when using rndc addzone. Reconfiguration changes are now fully rolled back in the event of failure. [RT #45841]

  • Some header files included <isc/util.h> incorrectly as it pollutes with namespace with non ISC_ macros and this should only be done by explicitly including <isc/util.h>. This has been corrected. Some code may depend on <isc/util.h> being implicitly included via other header files. Such code should explicitly include <isc/util.h>.

  • Zones created with rndc addzone could temporarily fail to inherit the allow-transfer ACL set in the options section of named.conf. [RT #46603]

  • named failed to properly determine whether there were active KSK and ZSK keys for an algorithm when update-check-ksk was true (which is the default setting). This could leave records unsigned when rolling keys. [RT #46743] [RT #46754] [RT #46774]

Notes for BIND 9.11.2

Security Fixes

  • An error in TSIG handling could permit unauthorized zone transfers or zone updates. These flaws are disclosed in CVE-2017-3142 and CVE-2017-3143. [RT #45383]

  • The BIND installer on Windows used an unquoted service path, which can enable privilege escalation. This flaw is disclosed in CVE-2017-3141. [RT #45229]

  • With certain RPZ configurations, a response with TTL 0 could cause named to go into an infinite query loop. This flaw is disclosed in CVE-2017-3140. [RT #45181]

Feature Changes

  • dig +ednsopt now accepts the names for EDNS options in addition to numeric values. For example, an EDNS Client-Subnet option could be sent using dig +ednsopt=ecs:.... Thanks to John Worley of Secure64 for the contribution. [RT #44461]

  • Threads in named are now set to human-readable names to assist debugging on operating systems that support that. Threads will have names such as "isc-timer", "isc-sockmgr", "isc-worker0001", and so on. This will affect the reporting of subsidiary thread names in ps and top, but not the main thread. [RT #43234]

  • DiG now warns about .local queries which are reserved for Multicast DNS. [RT #44783]

Bug Fixes

  • Fixed a bug that was introduced in an earlier development release which caused multi-packet AXFR and IXFR messages to fail validation if not all packets contained TSIG records; this caused interoperability problems with some other DNS implementations. [RT #45509]

  • Reloading or reconfiguring named could fail on some platforms when LMDB was in use. [RT #45203]

  • Due to some incorrectly deleted code, when BIND was built with LMDB, zones that were deleted via rndc delzone were removed from the running server but were not removed from the new zone database, so that deletion did not persist after a server restart. This has been corrected. [RT #45185]

  • Semicolons are no longer escaped when printing CAA and URI records. This may break applications that depend on the presence of the backslash before the semicolon. [RT #45216]

  • AD could be set on truncated answer with no records present in the answer and authority sections. [RT #45140]

Notes for BIND 9.11.1

Security Fixes

  • rndc "" could trigger an assertion failure in named. This flaw is disclosed in (CVE-2017-3138). [RT #44924]

  • Some chaining (i.e., type CNAME or DNAME) responses to upstream queries could trigger assertion failures. This flaw is disclosed in CVE-2017-3137. [RT #44734]

  • dns64 with break-dnssec yes; can result in an assertion failure. This flaw is disclosed in CVE-2017-3136. [RT #44653]

  • If a server is configured with a response policy zone (RPZ) that rewrites an answer with local data, and is also configured for DNS64 address mapping, a NULL pointer can be read triggering a server crash. This flaw is disclosed in CVE-2017-3135. [RT #44434]

  • A coding error in the nxdomain-redirect feature could lead to an assertion failure if the redirection namespace was served from a local authoritative data source such as a local zone or a DLZ instead of via recursive lookup. This flaw is disclosed in CVE-2016-9778. [RT #43837]

  • named could mishandle authority sections with missing RRSIGs, triggering an assertion failure. This flaw is disclosed in CVE-2016-9444. [RT #43632]

  • named mishandled some responses where covering RRSIG records were returned without the requested data, resulting in an assertion failure. This flaw is disclosed in CVE-2016-9147. [RT #43548]

  • named incorrectly tried to cache TKEY records which could trigger an assertion failure when there was a class mismatch. This flaw is disclosed in CVE-2016-9131. [RT #43522]

  • It was possible to trigger assertions when processing responses containing answers of type DNAME. This flaw is disclosed in CVE-2016-8864. [RT #43465]

  • Added the ability to specify the maximum number of records permitted in a zone (max-records #;). This provides a mechanism to block overly large zone transfers, which is a potential risk with slave zones from other parties, as described in CVE-2016-6170. [RT #42143]

Feature Changes

  • dnstap now stores both the local and remote addresses for all messages, instead of only the remote address. The default output format for dnstap-read has been updated to include these addresses, with the initiating address first and the responding address second, separated by "-%gt;" or "%lt;-" to indicate in which direction the message was sent. [RT #43595]

  • Expanded and improved the YAML output from dnstap-read -y: it now includes packet size and a detailed breakdown of message contents. [RT #43622] [RT #43642]

  • If an ACL is specified with an address prefix in which the prefix length is longer than the address portion (for example, 192.0.2.1/8), named will now log a warning. In future releases this will be a fatal configuration error. [RT #43367]

Bug Fixes

  • A synthesized CNAME record appearing in a response before the associated DNAME could be cached, when it should not have been. This was a regression introduced while addressing CVE-2016-8864. [RT #44318]

  • named could deadlock if multiple changes to NSEC/NSEC3 parameters for the same zone were being processed at the same time. [RT #42770]

  • named could trigger an assertion when sending NOTIFY messages. [RT #44019]

  • Referencing a nonexistent zone in a response-policy statement could cause an assertion failure during configuration. [RT #43787]

  • rndc addzone could cause a crash when attempting to add a zone with a type other than master or slave. Such zones are now rejected. [RT #43665]

  • named could hang when encountering log file names with large apparent gaps in version number (for example, when files exist called "logfile.0", "logfile.1", and "logfile.1482954169"). This is now handled correctly. [RT #38688]

  • If a zone was updated while named was processing a query for nonexistent data, it could return out-of-sync NSEC3 records causing potential DNSSEC validation failure. [RT #43247]

Maintenance

  • The built-in root hints have been updated to include an IPv6 address (2001:500:12::d0d) for G.ROOT-SERVERS.NET.

Miscellaneous Notes

  • Authoritative server support for the EDNS Client Subnet option (ECS), introduced in BIND 9.11.0, was based on an early version of the specification, and is now known to have incompatibilities with other ECS implementations. It is also inefficient, requiring a separate view for each answer, and is unable to correct for overlapping subnets in the configuration. It is intended for testing purposes but is not recommended for for production use. This was not made sufficiently clear in the documentation at the time of release.

Notes for BIND 9.11.0

Security Fixes

  • It was possible to trigger a assertion when rendering a message using a specially crafted request. This flaw is disclosed in CVE-2016-2776. [RT #43139]

  • getrrsetbyname with a non absolute name could trigger an infinite recursion bug in lwresd and named with lwres configured if when combined with a search list entry the resulting name is too long. This flaw is disclosed in CVE-2016-2775. [RT #42694]

New Features

  • A new method of provisioning secondary servers called "Catalog Zones" has been added. This is an implementation of draft-muks-dnsop-dns-catalog-zones/ .

    A catalog zone is a regular DNS zone which contains a list of "member zones", along with the configuration options for each of those zones. When a server is configured to use a catalog zone, all the zones listed in the catalog zone are added to the local server as slave zones. When the catalog zone is updated (e.g., by adding or removing zones, or changing configuration options for existing zones) those changes will be put into effect. Since the catalog zone is itself a DNS zone, this means configuration changes can be propagated to slaves using the standard AXFR/IXFR update mechanism.

    This feature should be considered experimental. It currently supports only basic features; more advanced features such as ACLs and TSIG keys are not yet supported. Example catalog zone configurations can be found in the Chapter 9 of the BIND Administrator Reference Manual.

    Support for master entries with TSIG keys has been added to catalog zones, as well as support for allow-query and allow-transfer.

  • Added an isc.rndc Python module, which allows rndc commands to be sent from Python programs.

  • Added support for DynDB, a new interface for loading zone data from an external database, developed by Red Hat for the FreeIPA project. (Thanks in particular to Adam Tkac and Petr Spacek of Red Hat for the contribution.)

    Unlike the existing DLZ and SDB interfaces, which provide a limited subset of database functionality within BIND - translating DNS queries into real-time database lookups with relatively poor performance and with no ability to handle DNSSEC-signed data - DynDB is able to fully implement and extend the database API used natively by BIND.

    A DynDB module could pre-load data from an external data source, then serve it with the same performance and functionality as conventional BIND zones, and with the ability to take advantage of database features not available in BIND, such as multi-master replication.

  • Fetch quotas are now compiled in by default: they no longer require BIND to be configured with --enable-fetchlimit, as was the case when the feature was introduced in BIND 9.10.3.

    These quotas limit the queries that are sent by recursive resolvers to authoritative servers experiencing denial-of-service attacks. They can both reduce the harm done to authoritative servers and also avoid the resource exhaustion that can be experienced by recursive servers when they are being used as a vehicle for such an attack.

    • fetches-per-server limits the number of simultaneous queries that can be sent to any single authoritative server. The configured value is a starting point; it is automatically adjusted downward if the server is partially or completely non-responsive. The algorithm used to adjust the quota can be configured via the fetch-quota-params option.

    • fetches-per-zone limits the number of simultaneous queries that can be sent for names within a single domain. (Note: Unlike "fetches-per-server", this value is not self-tuning.)

    Statistics counters have also been added to track the number of queries affected by these quotas.

  • Added support for dnstap, a fast, flexible method for capturing and logging DNS traffic, developed by Robert Edmonds at Farsight Security, Inc., whose assistance is gratefully acknowledged.

    To enable dnstap at compile time, the fstrm and protobuf-c libraries must be available, and BIND must be configured with --enable-dnstap.

    A new utility dnstap-read has been added to allow dnstap data to be presented in a human-readable format.

    rndc dnstap -roll causes dnstap output files to be rolled like log files -- the most recent output file is renamed with a .0 suffix, the next most recent with .1, etc. (Note that this only works when dnstap output is being written to a file, not to a UNIX domain socket.) An optional numerical argument specifies how many backup log files to retain; if not specified or set to 0, there is no limit.

    rndc dnstap -reopen simply closes and reopens the dnstap output channel without renaming the output file.

    For more information on dnstap, see https://dnstap.info.

  • New statistics counters have been added to track traffic sizes, as specified in RSSAC002. Query and response message sizes are broken up into ranges of histogram buckets: TCP and UDP queries of size 0-15, 16-31, ..., 272-288, and 288+, and TCP and UDP responses of size 0-15, 16-31, ..., 4080-4095, and 4096+. These values can be accessed via the XML and JSON statistics channels at, for example, http://localhost:8888/xml/v3/traffic or http://localhost:8888/json/v1/traffic.

    Statistics for RSSAC02v3 traffic-volume, traffic-sizes and rcode-volume reporting are now collected.

  • A new DNSSEC key management utility, dnssec-keymgr, has been added. This tool is meant to run unattended (e.g., under cron). It reads a policy definition file (default /etc/dnssec-policy.conf) and creates or updates DNSSEC keys as necessary to ensure that a zone's keys match the defined policy for that zone. New keys are created whenever necessary to ensure rollovers occur correctly. Existing keys' timing metadata is adjusted as needed to set the correct rollover period, prepublication interval, etc. If the configured policy changes, keys are corrected automatically. See the dnssec-keymgr man page for full details.

    Note: dnssec-keymgr depends on Python and on the Python lex/yacc module, PLY. The other Python-based tools, dnssec-coverage and dnssec-checkds, have been refactored and updated as part of this work.

    dnssec-keymgr now takes a -r randomfile option.

    (Many thanks to Sebastin Castro for his assistance in developing this tool at the IETF 95 Hackathon in Buenos Aires, April 2016.)

  • The serial number of a dynamically updatable zone can now be set using rndc signing -serial number zonename. This is particularly useful with inline-signing zones that have been reset. Setting the serial number to a value larger than that on the slaves will trigger an AXFR-style transfer.

  • When answering recursive queries, SERVFAIL responses can now be cached by the server for a limited time; subsequent queries for the same query name and type will return another SERVFAIL until the cache times out. This reduces the frequency of retries when a query is persistently failing, which can be a burden on recursive servers. The SERVFAIL cache timeout is controlled by servfail-ttl, which defaults to 1 second and has an upper limit of 30.

  • The new rndc nta command can now be used to set a "negative trust anchor" (NTA), disabling DNSSEC validation for a specific domain; this can be used when responses from a domain are known to be failing validation due to administrative error rather than because of a spoofing attack. NTAs are strictly temporary; by default they expire after one hour, but can be configured to last up to one week. The default NTA lifetime can be changed by setting the nta-lifetime in named.conf. When added, NTAs are stored in a file (viewname.nta) in order to persist across restarts of the named server.

  • The EDNS Client Subnet (ECS) option is now supported for authoritative servers; if a query contains an ECS option then ACLs containing geoip or ecs elements can match against the address encoded in the option. This can be used to select a view for a query, so that different answers can be provided depending on the client network.

  • The EDNS EXPIRE option has been implemented on the client side, allowing a slave server to set the expiration timer correctly when transferring zone data from another slave server.

  • A new masterfile-style zone option controls the formatting of text zone files: When set to full, the zone file will dumped in single-line-per-record format.

  • dig +ednsopt can now be used to set arbitrary EDNS options in DNS requests.

  • dig +ednsflags can now be used to set yet-to-be-defined EDNS flags in DNS requests.

  • dig +[no]ednsnegotiation can now be used enable / disable EDNS version negotiation.

  • dig +header-only can now be used to send queries without a question section.

  • dig +ttlunits causes dig to print TTL values with time-unit suffixes: w, d, h, m, s for weeks, days, hours, minutes, and seconds.

  • dig +zflag can be used to set the last unassigned DNS header flag bit. This bit is normally zero.

  • dig +dscp=value can now be used to set the DSCP code point in outgoing query packets.

  • dig +mapped can now be used to determine if mapped IPv4 addresses can be used.

  • nslookup will now look up IPv6 as well as IPv4 addresses by default. [RT #40420]

  • serial-update-method can now be set to date. On update, the serial number will be set to the current date in YYYYMMDDNN format.

  • dnssec-signzone -N date also sets the serial number to YYYYMMDDNN.

  • named -L filename causes named to send log messages to the specified file by default instead of to the system log.

  • The rate limiter configured by the serial-query-rate option no longer covers NOTIFY messages; those are now separately controlled by notify-rate and startup-notify-rate (the latter of which controls the rate of NOTIFY messages sent when the server is first started up or reconfigured).

  • The default number of tasks and client objects available for serving lightweight resolver queries have been increased, and are now configurable via the new lwres-tasks and lwres-clients options in named.conf. [RT #35857]

  • Log output to files can now be buffered by specifying buffered yes; when creating a channel.

  • delv +tcp will exclusively use TCP when sending queries.

  • named will now check to see whether other name server processes are running before starting up. This is implemented in two ways: 1) by refusing to start if the configured network interfaces all return "address in use", and 2) by attempting to acquire a lock on a file specified by the lock-file option or the -X command line option. The default lock file is /var/run/named/named.lock. Specifying none will disable the lock file check.

  • rndc delzone can now be applied to zones which were configured in named.conf; it is no longer restricted to zones which were added by rndc addzone. (Note, however, that this does not edit named.conf; the zone must be removed from the configuration or it will return when named is restarted or reloaded.)

  • rndc modzone can be used to reconfigure a zone, using similar syntax to rndc addzone.

  • rndc showzone displays the current configuration for a specified zone.

  • When BIND is built with the lmdb library (Lightning Memory-Mapped Database), named will store the configuration information for zones that are added via rndc addzone in a database, rather than in a flat "NZF" file. This dramatically improves performance for rndc delzone and rndc modzone: deleting or changing the contents of a database is much faster than rewriting a text file.

    On startup, if named finds an existing NZF file, it will automatically convert it to the new NZD database format.

    To view the contents of an NZD, or to convert an NZD back to an NZF file (for example, to revert back to an earlier version of BIND which did not support the NZD format), use the new command named-nzd2nzf [RT #39837]

  • Added server-side support for pipelined TCP queries. Clients may continue sending queries via TCP while previous queries are processed in parallel. Responses are sent when they are ready, not necessarily in the order in which the queries were received.

    To revert to the former behavior for a particular client address or range of addresses, specify the address prefix in the "keep-response-order" option. To revert to the former behavior for all clients, use "keep-response-order { any; };".

  • The new mdig command is a version of dig that sends multiple pipelined queries and then waits for responses, instead of sending one query and waiting the response before sending the next. [RT #38261]

  • To enable better monitoring and troubleshooting of RFC 5011 trust anchor management, the new rndc managed-keys can be used to check status of trust anchors or to force keys to be refreshed. Also, the managed-keys data file now has easier-to-read comments. [RT #38458]

  • An --enable-querytrace configure switch is now available to enable very verbose query trace logging. This option can only be set at compile time. This option has a negative performance impact and should be used only for debugging. [RT #37520]

  • A new tcp-only option can be specified in server statements to force named to connect to the specified server via TCP. [RT #37800]

  • The nxdomain-redirect option specifies a DNS namespace to use for NXDOMAIN redirection. When a recursive lookup returns NXDOMAIN, a second lookup is initiated with the specified name appended to the query name. This allows NXDOMAIN redirection data to be supplied by multiple zones configured on the server, or by recursive queries to other servers. (The older method, using a single type redirect zone, has better average performance but is less flexible.) [RT #37989]

  • The following types have been implemented: CSYNC, NINFO, RKEY, SINK, TA, TALINK.

  • A new message-compression option can be used to specify whether or not to use name compression when answering queries. Setting this to no results in larger responses, but reduces CPU consumption and may improve throughput. The default is yes.

  • A read-only option is now available in the controls statement to grant non-destructive control channel access. In such cases, a restricted set of rndc commands are allowed, which can report information from named, but cannot reconfigure or stop the server. By default, the control channel access is not restricted to these read-only operations. [RT #40498]

  • When loading a signed zone, named will now check whether an RRSIG's inception time is in the future, and if so, it will regenerate the RRSIG immediately. This helps when a system's clock needs to be reset backwards.

  • The new minimal-any option reduces the size of answers to UDP queries for type ANY by implementing one of the strategies in "draft-ietf-dnsop-refuse-any": returning a single arbitrarily-selected RRset that matches the query name rather than returning all of the matching RRsets. Thanks to Tony Finch for the contribution. [RT #41615]

  • named now provides feedback to the owners of zones which have trust anchors configured (trusted-keys, managed-keys, dnssec-validation auto; and dnssec-lookaside auto;) by sending a daily query which encodes the keyids of the configured trust anchors for the zone. This is controlled by trust-anchor-telemetry and defaults to yes.

Feature Changes

  • The logging format used for querylog has been altered. It now includes an additional field indicating the address in memory of the client object processing the query.

    The ISC DNSSEC Lookaside Validation (DLV) service is scheduled to be disabled in 2017. A warning is now logged when named is configured to use this service, either explicitly or via dnssec-lookaside auto;. [RT #42207]

  • The timers returned by the statistics channel (indicating current time, server boot time, and most recent reconfiguration time) are now reported with millisecond accuracy. [RT #40082]

  • Updated the compiled-in addresses for H.ROOT-SERVERS.NET and L.ROOT-SERVERS.NET.

  • ACLs containing geoip asnum elements were not correctly matched unless the full organization name was specified in the ACL (as in geoip asnum "AS1234 Example, Inc.";). They can now match against the AS number alone (as in geoip asnum "AS1234";).

  • When using native PKCS#11 cryptography (i.e., configure --enable-native-pkcs11) HSM PINs of up to 256 characters can now be used.

  • NXDOMAIN responses to queries of type DS are now cached separately from those for other types. This helps when using "grafted" zones of type forward, for which the parent zone does not contain a delegation, such as local top-level domains. Previously a query of type DS for such a zone could cause the zone apex to be cached as NXDOMAIN, blocking all subsequent queries. (Note: This change is only helpful when DNSSEC validation is not enabled. "Grafted" zones without a delegation in the parent are not a recommended configuration.)

  • Update forwarding performance has been improved by allowing a single TCP connection to be shared between multiple updates.

  • By default, nsupdate will now check the correctness of hostnames when adding records of type A, AAAA, MX, SOA, NS, SRV or PTR. This behavior can be disabled with check-names no.

  • Added support for OPENPGPKEY type.

  • The names of the files used to store managed keys and added zones for each view are no longer based on the SHA256 hash of the view name, except when this is necessary because the view name contains characters that would be incompatible with use as a file name. For views whose names do not contain forward slashes ('/'), backslashes ('\'), or capital letters - which could potentially cause namespace collision problems on case-insensitive filesystems - files will now be named after the view (for example, internal.mkeys or external.nzf). However, to ensure consistent behavior when upgrading, if a file using the old name format is found to exist, it will continue to be used.

  • "rndc" can now return text output of arbitrary size to the caller. (Prior to this, certain commands such as "rndc tsig-list" and "rndc zonestatus" could return truncated output.)

  • Errors reported when running rndc addzone (e.g., when a zone file cannot be loaded) have been clarified to make it easier to diagnose problems.

  • When encountering an authoritative name server whose name is an alias pointing to another name, the resolver treats this as an error and skips to the next server. Previously this happened silently; now the error will be logged to the newly-created "cname" log category.

  • If named is not configured to validate answers, then allow fallback to plain DNS on timeout even when we know the server supports EDNS. This will allow the server to potentially resolve signed queries when TCP is being blocked.

  • Large inline-signing changes should be less disruptive. Signature generation is now done incrementally; the number of signatures to be generated in each quantum is controlled by "sig-signing-signatures number;". [RT #37927]

  • The experimental SIT option (code point 65001) of BIND 9.10.0 through BIND 9.10.2 has been replaced with the COOKIE option (code point 10). It is no longer experimental, and is sent by default, by both named and dig.

    The SIT-related named.conf options have been marked as obsolete, and are otherwise ignored.

  • When dig receives a truncated (TC=1) response or a BADCOOKIE response code from a server, it will automatically retry the query using the server COOKIE that was returned by the server in its initial response. [RT #39047]

  • Retrieving the local port range from net.ipv4.ip_local_port_range on Linux is now supported.

  • A new nsip-wait-recurse directive has been added to RPZ, specifying whether to look up unknown name server IP addresses and wait for a response before applying RPZ-NSIP rules. The default is yes. If set to no, named will only apply RPZ-NSIP rules to servers whose addresses are already cached. The addresses will be looked up in the background so the rule can be applied on subsequent queries. This improves performance when the cache is cold, at the cost of temporary imprecision in applying policy directives. [RT #35009]

  • Within the response-policy option, it is now possible to configure RPZ rewrite logging on a per-zone basis using the log clause.

  • The default preferred glue is now the address type of the transport the query was received over.

  • On machines with 2 or more processors (CPU), the default value for the number of UDP listeners has been changed to the number of detected processors minus one.

  • Zone transfers now use smaller message sizes to improve message compression. This results in reduced network usage.

  • Added support for the AVC resource record type (Application Visibility and Control).

    Changed rndc reconfig behavior so that newly added zones are loaded asynchronously and the loading does not block the server.

  • minimal-responses now takes two new arguments: no-auth suppresses populating the authority section but not the additional section; no-auth-recursive does the same but only when answering recursive queries.

  • At server startup time, the queues for processing notify and zone refresh queries are now processed in LIFO rather than FIFO order, to speed up loading of newly added zones. [RT #42825]

  • When answering queries of type MX or SRV, TLSA records for the target name are now included in the additional section to speed up DANE processing. [RT #42894]

  • named can now use the TCP Fast Open mechanism on the server side, if supported by the local operating system. [RT #42866]

Bug Fixes

  • Fixed a crash when calling rndc stats on some Windows builds: some Visual Studio compilers generate code that crashes when the "%z" printf() format specifier is used. [RT #42380]

  • Windows installs were failing due to triggering UAC without the installation binary being signed.

  • A change in the internal binary representation of the RBT database node structure enabled a race condition to occur (especially when BIND was built with certain compilers or optimizer settings), leading to inconsistent database state which caused random assertion failures. [RT #42380]

End of Life

BIND 9.11 (Extended Support Version) will be supported until at least December, 2021.

See https://kb.isc.org/docs/aa-00896 for details of ISC's software support policy.

Thank You

Thank you to everyone who assisted us in making this release possible.

man.genrandom.html000064400000007561152530214170010167 0ustar00 genrandom

Name

genrandom — generate a file containing random data

Synopsis

genrandom [-n number] {size} {filename}

DESCRIPTION

genrandom generates a file or a set of files containing a specified quantity of pseudo-random data, which can be used as a source of entropy for other commands on systems with no random device.

ARGUMENTS

-n number

In place of generating one file, generates number (from 2 to 9) files, appending number to the name.

size

The size of the file, in kilobytes, to generate.

filename

The file name into which random data should be written.

SEE ALSO

rand(3), arc4random(3)

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch07.html000064400000046045152530214170007203 0ustar00 Chapter7.BIND 9 Security Considerations

Chapter7.BIND 9 Security Considerations

Access Control Lists

Access Control Lists (ACLs) are address match lists that can be set up and nicknamed for future use in allow-notify, allow-query, allow-query-on, allow-recursion, blackhole, allow-transfer, match-clients, etc.

ACLs give users finer control over who can access the name server, without cluttering up configuration files with huge lists of IP addresses.

It is a good idea to use ACLs, and to control access. Limiting access to the server by outside parties can help prevent spoofing and denial of service (DoS) attacks against the server.

ACLs match clients on the basis of up to three characteristics: 1) The client's IP address; 2) the TSIG or SIG(0) key that was used to sign the request, if any; and 3) an address prefix encoded in an EDNS Client-Subnet option, if any.

Here is an example of ACLs based on client addresses:

// Set up an ACL named "bogusnets" that blocks
// RFC 1918 space and some reserved space, which is
// commonly used in spoofing attacks.
acl bogusnets {
        0.0.0.0/8;  192.0.2.0/24; 224.0.0.0/3;
        10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16;
};

// Set up an ACL called our-nets. Replace this with the
// real IP numbers.
acl our-nets { x.x.x.x/24; x.x.x.x/21; };
options {
  ...
  ...
  allow-query { our-nets; };
  allow-recursion { our-nets; };
  ...
  blackhole { bogusnets; };
  ...
};

zone "example.com" {
  type master;
  file "m/example.com";
  allow-query { any; };
};

This allows authoritative queries for "example.com" from any address, but recursive queries only from the networks specified in "our-nets", and no queries at all from the networks specified in "bogusnets".

In addition to network addresses and prefixes, which are matched against the source address of the DNS request, ACLs may include key elements, which specify the name of a TSIG or SIG(0) key, or ecs elements, which specify a network prefix but are only matched if that prefix matches an EDNS client-subnet option included in the request.

The EDNS Client-Subnet (ECS) option is used by a recursive resolver to inform an authoritative name server of the network address block from which the original query was received, enabling authoritative servers to give different answers to the same resolver for different resolver clients. An ACL containing an element of the form ecs prefix will match if a request arrives in containing an ECS option encoding an address within that prefix. If the request has no ECS option, then "ecs" elements are simply ignored. Addresses in ACLs that are not prefixed with "ecs" are matched only against the source address.

Note

(Note: the authoritative ECS implementation in named is based on an early version of the specification, and is known to have incompatibilities with other implementations. It is also inefficient, requiring a separate view for each client subnet to be sent different answers, and it is unable to correct for overlapping subnets in the configuration. It can be used for testing purposes, but is not recommended for production use.)

When BIND 9 is built with GeoIP support, ACLs can also be used for geographic access restrictions. This is done by specifying an ACL element of the form: geoip [db database] field value

The field parameter indicates which field to search for a match. Available fields are "country", "region", "city", "continent", "postal" (postal code), "metro" (metro code), "area" (area code), "tz" (timezone), "isp", "asnum", and "domain".

value is the value to search for within the database. A string may be quoted if it contains spaces or other special characters. An "asnum" search for autonomous system number can be specified using the string "ASNNNN" or the integer NNNN. When "country" search is specified with a string that is two characters long, it must be a standard ISO-3166-1 two-letter country code; otherwise, it is interpreted as the full name of the country. Similarly, if "region" is the search term and the string is two characters long, it is treated as a standard two-letter state or province abbreviation; otherwise, it is treated as the full name of the state or province.

The database field indicates which GeoIP database to search for a match. In most cases this is unnecessary, because most search fields can only be found in a single database. However, searches for "continent" or "country" can be answered from either the "city" or "country" databases, so for these search types, specifying a database forces the query to be answered from that database and no other. If database is not specified, these queries are first answered from the "city" database if it is installed, and then from the "country" database if it is installed. Valid database names are "country", "city", "asnum", "isp", and "domain". (If using the legacy GeoIP API, "netspeed" and "org" databases are also available.)

By default, if a DNS query includes an EDNS Client-Subnet (ECS) option which encodes a non-zero address prefix, then GeoIP ACL elements are matched against that address prefix. Otherwise, they are matched against the source address of the query. To prevent GeoIP ACLs from matching against ECS options, set the geoip-use-ecs to no.

Some example GeoIP ACLs:

geoip country US;
geoip country JP;
geoip db country country Canada;
geoip region WA;
geoip city "San Francisco";
geoip region Oklahoma;
geoip postal 95062;
geoip tz "America/Los_Angeles";
geoip org "Internet Systems Consortium";

ACLs use a "first-match" logic rather than "best-match"; if an address prefix matches an ACL element, then that ACL is considered to have matched even if a later element would have matched more specifically. For example, the ACL { 10/8; !10.0.0.1; } would actually match a query from 10.0.0.1, because the first element indicates that the query should be accepted, and the second element is ignored.

When using "nested" ACLs (that is, ACLs included or referenced within other ACLs), a negative match of a nested ACL tells the containing ACL to continue looking for matches. This enables complex ACLs to be constructed, in which multiple client characteristics can be checked at the same time. For example, to construct an ACL which allows a query only when it originates from a particular network and only when it is signed with a particular key, use:

allow-query { !{ !10/8; any; }; key example; };

Within the nested ACL, any address that is not in the 10/8 network prefix is rejected, which terminates processing of the ACL. Any address that is in the 10/8 network prefix is accepted, but this causes a negative match of the nested ACL, so the containing ACL continues processing. The query is accepted if it is signed by the key "example", and rejected otherwise. The ACL, then, only matches when both conditions are true.

Chroot and Setuid

On Unix servers, it is possible to run BIND in a chrooted environment (using the chroot() function) by specifying the -t option for named. This can help improve system security by placing BIND in a "sandbox," which limits the damage done if a server is compromised.

Another useful feature in the Unix version of BIND is the ability to run the daemon as an unprivileged user (-u user). We suggest running as an unprivileged user when using the chroot feature.

Here is an example command line to load BIND in a chroot sandbox, /var/named, and to run named setuid to user 202:

/usr/local/sbin/named -u 202 -t /var/named

The chroot Environment

For a chroot environment to work properly in a particular directory (for example, /var/named), the environment must include everything BIND needs to run. From BIND's point of view, /var/named is the root of the filesystem; the values of options like directory and pid-file must be adjusted to account for this.

Unlike with earlier versions of BIND, named does not typically need to be compiled statically, nor do shared libraries need to be installed under the new root. However, depending on the operating system, it may be necessary to set up locations such as /dev/zero, /dev/random, /dev/log, and /etc/localtime.

Using the setuid Function

Prior to running the named daemon, use the touch utility (to change file access and modification times) or the chown utility (to set the user id and/or group id) on files where BIND should write.

Note

If the named daemon is running as an unprivileged user, it cannot bind to new restricted ports if the server is reloaded.

Dynamic Update Security

Access to the dynamic update facility should be strictly limited. In earlier versions of BIND, the only way to do this was based on the IP address of the host requesting the update, by listing an IP address or network prefix in the allow-update zone option. This method is insecure, since the source address of the update UDP packet is easily forged. Also note that if the IP addresses allowed by the allow-update option include the address of a secondary server which performs forwarding of dynamic updates, the primary can be trivially attacked by sending the update to the secondary, which forwards it to the primary with its own source IP address - causing the primary to approve it without question.

For these reasons, we strongly recommend that updates be cryptographically authenticated by means of transaction signatures (TSIG). That is, the allow-update option should list only TSIG key names, not IP addresses or network prefixes. Alternatively, the update-policy option can be used.

Some sites choose to keep all dynamically updated DNS data in a subdomain and delegate that subdomain to a separate zone. This way, the top-level zone containing critical data, such as the IP addresses of public web and mail servers, need not allow dynamic update at all.

BIND 9.11.36 (Extended Support Version)

man.pkcs11-keygen.html000064400000015344152530214170010575 0ustar00 pkcs11-keygen

Name

pkcs11-keygen — generate keys on a PKCS#11 device

Synopsis

pkcs11-keygen {-a algorithm} [-b keysize] [-e] [-i id] [-m module] [-P] [-p PIN] [-q] [-S] [-s slot] {label}

DESCRIPTION

pkcs11-keygen causes a PKCS#11 device to generate a new key pair with the given label (which must be unique) and with keysize bits of prime.

ARGUMENTS

-a algorithm

Specify the key algorithm class: Supported classes are RSA, DSA, DH, ECC and ECX. In addition to these strings, the algorithm can be specified as a DNSSEC signing algorithm that will be used with this key; for example, NSEC3RSASHA1 maps to RSA, ECDSAP256SHA256 maps to ECC, and ED25519 to ECX. The default class is "RSA".

-b keysize

Create the key pair with keysize bits of prime. For ECC keys, the only valid values are 256 and 384, and the default is 256. For ECX kyes, the only valid values are 256 and 456, and the default is 256.

-e

For RSA keys only, use a large exponent.

-i id

Create key objects with id. The id is either an unsigned short 2 byte or an unsigned long 4 byte number.

-m module

Specify the PKCS#11 provider module. This must be the full path to a shared library object implementing the PKCS#11 API for the device.

-P

Set the new private key to be non-sensitive and extractable. The allows the private key data to be read from the PKCS#11 device. The default is for private keys to be sensitive and non-extractable.

-p PIN

Specify the PIN for the device. If no PIN is provided on the command line, pkcs11-keygen will prompt for it.

-q

Quiet mode: suppress unnecessary output.

-S

For Diffie-Hellman (DH) keys only, use a special prime of 768, 1024 or 1536 bit size and base (aka generator) 2. If not specified, bit size will default to 1024.

-s slot

Open the session with the given PKCS#11 slot. The default is slot 0.

SEE ALSO

pkcs11-destroy(8), pkcs11-list(8), pkcs11-tokens(8), dnssec-keyfromlabel(8)

BIND 9.11.36 (Extended Support Version)

CHANGES000064400002140475152530214170005554 0ustar00 --- 9.11.36 released --- 5736. [security] The "lame-ttl" option is now forcibly set to 0. This effectively disables the lame server cache, as it could previously be abused by an attacker to significantly degrade resolver performance. (CVE-2021-25219) [GL #2899] 5716. [bug] Multiple library names were mistakenly passed to the krb5-config utility when ./configure was invoked with the --with-gssapi=[/path/to/]krb5-config option. This has been fixed by invoking krb5-config separately for each required library. [GL #2866] --- 9.11.35 released --- 5685. [bug] named failed to check the opcode of responses when performing zone refreshes, stub zone updates, and UPDATE forwarding. This has been fixed. [GL #2762] --- 9.11.34 released --- --- 9.11.33 released --- --- 9.11.32 released --- 5631. [protocol] Update the implementation of the ZONEMD RR type to match RFC 8976. [GL #2658] 5630. [func] Treat DNSSEC responses containing NSEC3 records with iteration counts greater than 150 as insecure. [GL #2445] 5629. [func] Reduce the maximum supported number of NSEC3 iterations that can be configured for a zone to 150. [GL #2642] --- 9.11.31 released --- 5621. [bug] Due to a backporting mistake in change 5609, named binaries built against a Kerberos/GSSAPI library whose header files did not define the GSS_SPNEGO_MECHANISM preprocessor macro were not able to start if their configuration included the "tkey-gssapi-credential" option. This has been fixed. [GL #2634] --- 9.11.30 released --- 5617. [security] A specially crafted GSS-TSIG query could cause a buffer overflow in the ISC implementation of SPNEGO. (CVE-2021-25216) [GL #2604] 5616. [security] named crashed when a DNAME record placed in the ANSWER section during DNAME chasing turned out to be the final answer to a client query. (CVE-2021-25215) [GL #2540] 5615. [security] Insufficient IXFR checks could result in named serving a zone without an SOA record at the apex, leading to a RUNTIME_CHECK assertion failure when the zone was subsequently refreshed. This has been fixed by adding an owner name check for all SOA records which are included in a zone transfer. (CVE-2021-25214) [GL #2467] 5614. [bug] Ensure all resources are properly cleaned up when a call to gss_accept_sec_context() fails. [GL #2620] 5609. [func] The ISC implementation of SPNEGO was removed from BIND 9 source code. It was no longer necessary as all major contemporary Kerberos/GSSAPI libraries include support for SPNEGO. [GL #2607] --- 9.11.29 released --- 5586. [bug] An invalid direction field in a LOC record resulted in an INSIST failure when a zone file containing such a record was loaded. [GL #2499] --- 9.11.28 released --- 5562. [security] Fix off-by-one bug in ISC SPNEGO implementation. (CVE-2020-8625) [GL #2354] --- 9.11.27 released --- 5559. [bug] The --with-maxminddb=PATH form of the build-time option enabling support for libmaxminddb was not working correctly. This has been fixed. [GL #2366] 5557. [bug] Prevent RBTDB instances from being destroyed by multiple threads at the same time. [GL #2317] 5548. [bug] named exited with an assertion failure upon startup when compiled with --disable-threads and --with-epoll. [GL !4454] 5547. [bug] BIND 9 failed to build with --disable-threads and --with-geoip2. [GL #2324] --- 9.11.26 released --- 5544. [func] Restore the default value of "nocookie-udp-size" to 4096 bytes. [GL #2250] 5541. [func] Adjust the "max-recursion-queries" default from 75 to 100. [GL #2305] 5540. [port] Fix building with native PKCS#11 support for AEP Keyper. [GL #2315] 5539. [bug] Tighten handling of missing DNS COOKIE responses over UDP by falling back to TCP. [GL #2275] 5534. [bug] The CNAME synthesized from a DNAME was incorrectly followed when the QTYPE was CNAME or ANY. [GL #2280] --- 9.11.25 released --- 5527. [bug] A NULL pointer dereference occurred when creating an NTA recheck query failed. [GL #2244] 5523. [bug] The initial lookup in a zone transitioning to/from a signed state could fail if the DNSKEY RRset was not found. [GL #2236] 5518. [bug] Stub zones now work correctly with primary servers using "minimal-responses yes". [GL #1736] --- 9.11.24 released --- 5516. [func] The default EDNS buffer size has been changed from 4096 to 1232 bytes. [GL #2183] 5513. [doc] The ARM section describing the "rrset-order" statement was rewritten to make it unambiguous and up-to-date with the source code. [GL #2139] 5510. [bug] Implement the attach/detach semantics for dns_message_t to fix a data race in accessing an already-destroyed fctx->rmessage. [GL #2124] 5506. [bug] Properly handle failed sysconf() calls, so we don't report invalid memory size. [GL #2166] --- 9.11.23 released --- 5497. [bug] 'dig +bufsize=0' failed to disable EDNS. [GL #2054] 5496. [bug] Address a TSAN report by ensuring each rate limiter object holds a reference to its task. [GL #2081] 5492. [bug] Tighten LOC parsing to reject a period (".") and/or "m" as a value. Fix handling of negative altitudes which are not whole meters. [GL #2074] 5489. [bug] Named erroneously accepted certain invalid resource records that were incorrectly processed after subsequently being written to disk and loaded back, as the wire format differed. Such records include: CERT, IPSECKEY, NSEC3, NSEC3PARAM, NXT, SIG, TLSA, WKS, and X25. [GL !3953] 5488. [bug] NTA code needed to have a weak reference on its associated view to prevent the latter from being deleted while NTA tests were being performed. [GL #2067] --- 9.11.22 released --- 5481. [security] "update-policy" rules of type "subdomain" were incorrectly treated as "zonesub" rules, which allowed keys used in "subdomain" rules to update names outside of the specified subdomains. The problem was fixed by making sure "subdomain" rules are again processed as described in the ARM. (CVE-2020-8624) [GL #2055] 5480. [security] When BIND 9 was compiled with native PKCS#11 support, it was possible to trigger an assertion failure in code determining the number of bits in the PKCS#11 RSA public key with a specially crafted packet. (CVE-2020-8623) [GL #2037] 5476. [security] It was possible to trigger an assertion failure when verifying the response to a TSIG-signed request. (CVE-2020-8622) [GL #2028] 5475. [bug] Wildcard RPZ passthru rules could incorrectly be overridden by other rules that were loaded from RPZ zones which appeared later in the "response-policy" statement. This has been fixed. [GL #1619] 5474. [bug] dns_rdata_hip_next() failed to return ISC_R_NOMORE when it should have. [GL !3880] 5465. [func] Added fallback to built-in trust-anchors, managed-keys, or trusted-keys if the bindkeys-file (bind.keys) cannot be parsed. [GL #1235] 5463. [bug] Address a potential NULL pointer dereference when out of memory in dnstap.c. [GL #2010] 5462. [bug] Move LMDB locking from LMDB itself to named. [GL #1976] --- 9.11.21 released --- 5458. [bug] Prevent a theoretically possible NULL dereference caused by a data race between zone_maintenance() and dns_zone_setview_helper(). [GL #1627] 5455. [bug] named could crash when cleaning dead nodes in lib/dns/rbtdb.c that were being reused. [GL #1968] 5447. [bug] IPv6 addresses ending in "::" could break YAML parsing. A "0" is now appended to such addresses in YAML output from dig, mdig, delv, and dnstap-read. [GL #1952] 5446. [bug] The validator could fail to accept a properly signed RRset if an unsupported algorithm appeared earlier in the DNSKEY RRset than a supported algorithm. It could also stop if it detected a malformed public key. [GL #1689] 5440. [test] Properly handle missing kyua. [GL #1950] --- 9.11.20 released --- 5437. [bug] Fix a data race in lib/dns/resolver.c:log_formerr(). [GL #1808] 5434. [security] It was possible to trigger an INSIST in lib/dns/rbtdb.c:new_reference() with a particular zone content and query patterns. (CVE-2020-8619) [GL #1111] [GL #1718] 5433. [test] Prevent the resolver system test for change #5395 (max-recursion-queries) from failing on systems without IPv6 support. [GL #1873] 5428. [bug] Clean up GSSAPI resources in nsupdate only after taskmgr has been destroyed. Thanks to Petr Menšík. [GL !3316] 5427. [bug] Fix a regression in address/prefix length checking that should have been a warning instead of an error. [GL #1849] 5415. [test] Address race in dnssec system test that led to test failures. [GL #1852] 5413. [test] Address race in autosign system test that led to test failures. [GL #1852] 5412. [bug] 'provide-ixfr no;' failed to return up-to-date responses when the serial was greater than or equal to the current serial. [GL #1714] 5409. [performance] When looking up NSEC3 data in a zone database, skip the check for empty non-terminal nodes; the NSEC3 tree does not have any. [GL #1834] 5408. [protocol] Print Extended DNS Errors if present in OPT record. [GL #1835] 5405. [bug] 'named-checkconf -p' could include spurious text in server-addresses statements due to an uninitialized DSCP value. [GL #1812] --- 9.11.19 released --- 5404. [bug] 'named-checkconf -z' could incorrectly indicate success if errors were found in one view but not in a subsequent one. [GL #1807] 5398. [bug] Named could fail to restart if a zone with a double quote (") in its name was added with 'rndc addzone'. [GL #1695] 5395. [security] Further limit the number of queries that can be triggered from a request. Root and TLD servers are no longer exempt from max-recursion-queries. Fetches for missing name server address records are limited to 4 for any domain. (CVE-2020-8616) [GL #1388] 5394. [cleanup] Named formerly attempted to change the effective UID and GID in named_os_openfile(), which could trigger a spurious log message if they were already set to the desired values. This has been fixed. [GL #1042] [GL #1090] 5390. [security] Replaying a TSIG BADTIME response as a request could trigger an assertion failure. (CVE-2020-8617) [GL #1703] 5387. [func] Warn about AXFR streams with inconsistent message IDs. [GL #1674] --- 9.11.18 released --- 5380. [contrib] Fix building MySQL DLZ modules against MySQL 8 libraries. [GL #1678] 5379. [doc] Clean up serve-stale related options that leaked into the BIND 9.11 release. [GL !3265] 5378. [bug] Receiving invalid DNS data was triggering an assertion failure in nslookup. [GL #1652] 5377. [feature] Detect atomic operations support on ppc64le. Thanks to Petr Menšík. [GL !3295] 5376. [bug] Fix ineffective DNS rebinding protection when BIND is configured as a forwarding DNS server. Thanks to Tobias Klein. [GL #1574] 5368. [bug] Named failed to restart if 'rndc addzone' names contained special characters (e.g. '/'). [GL #1655] --- 9.11.17 released --- 5358. [bug] Inline master zones whose master files were touched but otherwise unchanged and were subsequently reloaded may have stopped re-signing. [GL !3135] 5357. [bug] Newly added RRSIG records with expiry times before the previous earliest expiry times might not be re-signed in time. This was a side effect of 5315. [GL !3137] --- 9.11.16 released --- 5353. [doc] Document port and dscp parameters in forwarders configuration option. [GL #914] 5352. [bug] Correctly handle catalog zone entries containing characters that aren't legal in filenames. [GL #1592] 5351. [bug] CDS / CDNSKEY consistency checks failed to handle removal records. [GL #1554] 5350. [bug] When a view was configured with class CHAOS, dns_view_findzonecut() could incorrectly return success for non-existent records. [GL #1540] 5348. [bug] dnssec-settime -Psync was not being honoured. [GL !2925] --- 9.11.15 released --- 5339. [bug] With some libmaxminddb versions, named could erroneously match an IP address not belonging to any subnet defined in a given GeoIP2 database to one of the existing entries in that database. [GL #1552] 5338. [bug] Fix line spacing in `rndc secroots`. Thanks to Tony Finch. [GL !2478] 5337. [func] 'named -V' now reports maxminddb and protobuf-c versions. [GL !2686] --- 9.11.14 released --- 5330. [bug] 'configure --without-python' was ineffective if PYTHON was set in the environment. [GL #1434] 5329. [bug] Reconfiguring named caused memory to be leaked when any GeoIP2 database was in use. [GL #1445] 5328. [bug] rbtdb.c:rdataset_{get,set}ownercase failed to obtain a node lock. [GL #1417] 5327. [func] Added a statistics counter to track queries dropped because the recursive-clients quota was exceeded. [GL #1399] 5326. [bug] Add Python dependency on 'distutils.core' to configure. 'distutils.core' is required for installation. [GL #1397] 5322. [bug] Conditional compilation of lock_callback was inconsistent with conditional use of the function when forcing BIND to build with older and unsupported versions of OpenSSL. [GL #1386] 5321. [bug] Obtain write lock before updating version->records and version->bytes. [GL #1341] --- 9.11.13 released --- 5315. [bug] Apply the initial RRSIG expiration spread fixed to all dynamically created records in the zone including NSEC3. Also fix the signature clusters when the server has been offline for prolonged period of times. [GL #1256] 5314. [func] Added a new statistics variable "tcp-highwater" that reports the maximum number of simultaneous TCP clients BIND has handled while running. [GL #1206] 5313. [bug] The default GeoIP2 database location did not match the ARM. 'named -V' now reports the default location. [GL #1301] 5310. [bug] TCP failures were affecting EDNS statistics. [GL #1059] 5309. [bug] "geoip-use-ecs yes;" was not working for GeoIP2. [GL #1275] 5308. [bug] Don't log DNS_R_UNCHANGED from sync_secure_journal() at ERROR level in receive_secure_serial(). [GL #1288] 5307. [bug] Fix hang when named-compilezone output is sent to pipe. Thanks to Tony Finch. [GL !2481] 5306. [security] Set a limit on the number of concurrently served pipelined TCP queries. (CVE-2019-6477) [GL #1264] 5302. [bug] Fix checking that "dnstap-output" is defined when "dnstap" is specified in a view. [GL #1281] 5301. [bug] Detect partial prefixes / incomplete IPv4 address in acls. [GL #1143] --- 9.11.12 released --- 5296. [bug] Address various issues reported by cppcheck. [GL !2421] 5294. [func] Fallback to ACE name on output in locale, which does not support converting it to unicode. [GL #846] 5293. [bug] On Windows, named crashed upon any attempt to fetch XML statistics from it. [GL #1245] 5292. [bug] Queue 'rndc nsec3param' requests while signing inline zone changes. [GL #1205] --- 9.11.11 released --- 5291. [cleanup] Revert change #4825 as it was not appropriate for 9.11. [GL #1213] 5290. [bug] Address potential NULL pointer dereference in isc_ht_find. [GL #1211] 5287. [bug] Address potential NULL pointer dereference. [GL #1208] 5286. [contrib] Address potential NULL pointer dereferences in dlz_mysqldyn_mod.c. [GL #1207] 5285. [port] win32: implement "-T maxudpXXX". [GL #837] 5282. [bug] Fixed a bug in searching for possible wildcard matches for query names in the RPZ summary database. [GL #1146] 5281. [cleanup] Don't escape commas when reporting named's command line. [GL #1189] 5280. [protocol] Add support for displaying EDNS option LLQ. [GL #1201] 5279. [bug] When loading, reject zones containing CDS or CDNSKEY RRsets at the zone apex if they would cause DNSSEC validation failures if published in the parent zone as the DS RRset. [GL #1187] --- 9.11.10 released --- 5275. [bug] Mark DS records included in referral messages with trust level "pending" so that they can be validated and cached immediately, with no need to re-query. [GL #964] 5273. [bug] Check that bits [64..71] of a dns64 prefix are zero. [GL #1159] 5269. [port] cygwin: can return ETIMEDOUT on connect() with a non-blocking socket. [GL #1133] 5268. [bug] named could crash during configuration if configured to use "geoip continent" ACLs with legacy GeoIP. [GL #1163] 5266. [bug] named-checkconf failed to report dnstap-output missing from named.conf when dnstap was specified. [GL #1136] 5265. [bug] DNS64 and RPZ nodata (CNAME *.) rules interacted badly [GL #1106] 5264. [func] New DNS Cookie algorithm - siphash24 - has been added to BIND 9. [GL #605] --- 9.11.9 released --- 5260. [bug] dnstap-read was producing malformed output for large packets. [GL #1093] 5258. [func] Added support for the GeoIP2 API from MaxMind, when BIND is compiled using "configure --with-geoip2". The legacy GeoIP API can be enabled by using "configure --with-geoip" instead. These options cannot be used together. Certain geoip ACL settings that were available with legacy GeoIP are not available when using GeoIP2. See the ARM for details. [GL #182] 5257. [bug] Some statistics data was not being displayed. Add shading to the zone tables. [GL #1030] 5256. [bug] Ensure that glue records are included in root priming responses if "minimal-responses" is not set to "yes". [GL #1092] 5255. [bug] Errors encountered while reloading inline-signing zones could be ignored, causing the zone content to be left in an incompletely updated state rather than reverted. [GL #1109] 5253. [port] Support platforms that don't define ULLONG_MAX. [GL #1098] 5249. [bug] Fix a possible underflow in recursion clients statistics when hitting recursive clients soft quota. [GL #1067] --- 9.11.8 released --- 5244. [security] Fixed a race condition in dns_dispatch_getnext() that could cause an assertion failure if a significant number of incoming packets were rejected. (CVE-2019-6471) [GL #942] 5241. [bug] Fix Ed448 private and public key ASN.1 prefix blobs. [GL #225] 5237. [bug] Recurse to find the root server list with 'dig +trace'. [GL #1028] --- 9.11.7 released --- 5233. [bug] Negative trust anchors did not work with "forward only;" to validating resolvers. [GL #997] 5232. [bug] Fix a high-load race/crash in isc_socket_cancel(). [GL #834] 5231. [protocol] Add support for displaying CLIENT-TAG and SERVER-TAG. [GL #960] 5229. [protocol] Enforce known SSHFP fingerprint lengths. [GL #852] 5228. [cleanup] If trusted-keys and managed-keys are configured simultaneously for the same name, the key cannot be rolled automatically. This configuration now logs a warning. [GL #868] 5224. [bug] Only test provide-ixfr on TCP streams. [GL #991] 5222. [bug] 'delv -t ANY' could leak memory. [GL #983] 5221. [test] Enable parallel execution of system tests on Windows. [GL !4101] 5218. [bug] Conditionally include . [GL #995] 5214. [bug] win32: named now removes its lock file upon shutdown. [GL #979] 5213. [bug] win32: Eliminated a race which allowed named.exe running as a service to be killed prematurely during shutdown. [GL #978] 5210. [bug] When dnstap is enabled and recursion is not available, incoming queries are now logged as "auth". Previously, this depended on whether recursion was requested by the client, not on whether recursion was available. [GL #963] 5209. [bug] When update-check-ksk is true, add_sigs was not considering offline keys, leaving record sets signed with the incorrect type key. [GL #763] 5208. [test] Run valid rdata wire encodings through totext+fromtext and tofmttext+fromtext methods to check these methods. [GL #899] 5207. [test] Check delv and dig TTL values. [GL #965] 5205. [bug] Enforce that a DS hash exists. [GL #899] 5204. [test] Check that dns_rdata_fromtext() produces a record that will be accepted by dns_rdata_fromwire(). [GL #852] 5203. [bug] Enforce whether key rdata exists or not in KEY, DNSKEY, CDNSKEY and RKEY. [GL #899] 5197. [bug] dig could die in best effort mode on multiple SIG(0) records. Similarly on multiple OPT and multiple TSIG records. [GL #920] 5194. [bug] Enforce non empty ZOMEMD hash. [GL #899] 5193. [bug] EID and NIMLOC failed to do multi-line output correctly. [GL #899] 5192. [bug] configure --fips-mode failed. [GL #946] 5191. [port] Darwin: dlzexternal/driver.so was not building. [GL #948] 5189. [cleanup] Remove revoked root DNSKEY from bind.keys. [GL #945] 5187. [test] Set time zone before running any tests in dnstap_test. [GL #940] 5185. [bug] PKCS11 build could fail if ECDSA is not supported. [GL #935] 5184. [bug] Missing unlocks in sdlz.c. [GL #936] 5182. [bug] Fix a high-load race/crash in handling of isc_socket_close() in resolver. [GL #834] 5180. [bug] delv now honors the operating system's preferred ephemeral port range. [GL #925] 5179. [cleanup] Replace some vague type declarations with the more specific dns_secalg_t and dns_dsdigest_t. Thanks to Tony Finch. [GL !1498] 5178. [bug] Handle EDQUOT (disk quota) and ENOSPC (disk full) errors when writing files. [GL #902] 5176. [tests] Remove a dependency on libxml in statschannel system test. [GL #926] 5175. [bug] Fixed a problem with file input in dnssec-keymgr, dnssec-coverage and dnssec-checkds when using python3. [GL #882] 5174. [doc] Tidy dnssec-keygen manual. [GL !1557] 5172. [bug] nsupdate now honors the operating system's preferred ephemeral port range. [GL #905] 5170. [test] Added --with-dlz-filesystem to feature-test. [GL !1587] 5168. [test] Do not crash on shutdown when RPZ fails to load. Also, keep previous version of the database if RPZ fails to load. [GL #813] 5167. [bug] nxdomain-redirect could sometimes lookup the wrong redirect name. [GL #892] --- 9.11.6-P1 released --- 5200. [security] tcp-clients settings could be exceeded in some cases, which could lead to exhaustion of file descriptors. (CVE-2018-5743) [GL #615] --- 9.11.6 released --- --- 9.11.6rc1 released --- 5166. [port] openbsd: Threads are now enabled by default. [GL !1548] 5164. [bug] Correct errno to result translation in dlz filesystem modules. [GL #884] 5163. [cleanup] Out-of-tree builds failed --enable-dnstap. [GL #836] 5162. [cleanup] Improve dnssec-keymgr manual. Thanks to Tony Finch. [GL !1518] 5160. [contrib] Added DNAME support to the DLZ LDAP schema. Also fixed a compilation bug affecting several DLZ modules. [GL #872] 5159. [bug] dnssec-coverage was incorrectly ignoring names specified on the command line without trailing dots. [GL !1478] 5158. [protocol] Add support for AMTRELAY and ZONEMD. [GL #867] 5157. [bug] Nslookup now errors out if there are extra command line arguments. [GL #207] 5154. [bug] dig: process_opt could be called twice on the same message leading to a assertion failure. [GL #860] 5148. [bug] named did not sign the TKEY response. [GL #821] 5147. [bug] dnssec-keymgr: Add a five-minute margin to better handle key events close to 'now'. [GL #848] 5146. [bug] Removed an unnecessary assert that could be triggered from PKCS#11 modules during deconstruction. [GL #841] 5143. [bug] dnssec-keymgr and dnssec-coverage failed to find key files for zone names ending in ".". [GL #560] 5141. [security] Zone transfer controls for writable DLZ zones were not effective as the allowzonexfr method was not being called for such zones. (CVE-2019-6465) [GL #790] 5140. [bug] Don't immediately mark existing keys as inactive and deleted when running dnssec-keymgr for the first time. [GL #117] 5139. [bug] If possible, don't use forwarders when priming. This ensures we can get root server IP addresses from priming query response glue, which may not be present if the forwarding server is returning minimal responses. [GL #752] 5134. [bug] win32: WSAStartup was not called before getservbyname was called. [GL #590] 5133. [bug] 'rndc managed-keys' didn't handle class and view correctly and failed to add new lines between each view. [GL !1327] 5128. [bug] Refreshkeytime was not being updated for managed keys zones. [GL #784] 5127. [bug] rcode.c:maybe_numeric failed to handle NUL in text regions. [GL #807] 5126. [bug] Named incorrectly accepted empty base64 and hex encoded fields when reading master files. [GL #807] 5125. [bug] Allow for up to 100 records or 64k of data when caching a negative response. [GL #804] 5124. [bug] Named could incorrectly return FORMERR rather than SERVFAIL. [GL #804] 5123. [bug] dig could hang indefinitely after encountering an error before creating a TCP socket. [GL #692] 5122. [bug] In a "forward first;" configuration, a forwarder timeout did not prevent that forwarder from being queried again after falling back to full recursive resolution. [GL #315] 5121. [contrib] dlz_stub_driver.c fails to return ISC_R_NOTFOUND on none matching zone names. [GL !1299] 5118. [security] Named could crash if it is managing a key with `managed-keys` and the authoritative zone is rolling the key to an unsupported algorithm. (CVE-2018-5745) [GL #780] 5112. [bug] Named/named-checkconf could dump core if there was a missing masters clause and a bad notify clause. [GL #779] 5111. [bug] Occluded DNSKEY records could make it into the delegating NSEC/NSEC3 bitmap. [GL #742] 5110. [security] Named leaked memory if there were multiple Key Tag EDNS options present. (CVE-2018-5744) [GL #772] 5108. [bug] Named could fail to determine bottom of zone when removing out of date keys leading to invalid NSEC and NSEC3 records being added to the zone. [GL #771] 5107. [bug] 'host -U' did not work. [GL #769] 5104. [cleanup] Log clearer informational message when a catz zone is overridden by a zone in named.conf. Thanks to Tony Finch. [GL !1157] 5103. [bug] Add missing design by contract tests to dns_catz*. [GL #748] 5102. [bug] dnssec-coverage failed to use the default TTL when checking KSK deletion times leading to a exception. [GL #585] 5101. [bug] Fix default installation path for Python modules. [GL #730] 5098. [func] Failed memory allocations are now fatal. [GL #674] 5097. [cleanup] Remove embedded ATF unit testing framework from BIND source distribution. [GL !875] 5095. [test] Converted all unit tests from ATF to CMocka; removed the source code for the ATF libraries. Build with "configure --with-cmocka" to enable unit testing. [GL #620] 5094. [func] Add 'dig -r' to disable reading of .digrc. [GL !970] 5092. [bug] Address memory leak on SIGTERM in nsupdate when using GSS-TSIG. [GL #558] 5090. [bug] dig and mdig failed to properly pre-parse dash value pairs when value was a separate argument and started with a dash. [GL #584] 5088. [bug] dig/host/nslookup could crash when interrupted close to a query timeout. [GL #599] 5087. [test] Check that result tables are complete. [GL #676] 5086. [func] Log of RPZ now includes the QTYPE and QCLASS. [GL #623] 5084. [func] Add configure time detection of Utimaco HSM and disable runtime md5/sha1 detection when it compiled with it. [GL #656] 5079. [func] Disable IDN processing in dig and nslookup when not on a tty. [GL #653] 5078. [cleanup] Require python components to be explicitly disabled if python is not available on unix platforms. [GL #601] 5076. [bug] "require-server-cookie" was not effective if "rate-limit" was configured. [GL #617] 5072. [bug] Add unit tests for isc_buffer_copyregion() and fix its behavior for auto-reallocated buffers. [GL #644] 5071. [bug] Comparison of NXT records was broken. [GL #631] 5070. [bug] Record types which support a empty rdata field were not handling the empty rdata field case. [GL #638] 5066. [cleanup] Allow unquoted strings to be used as a zone names in response-policy statements. [GL #641] 5065. [bug] Only set IPV6_USE_MIN_MTU on IPv6. [GL #553] 5064. [test] Initialize TZ environment variable before calling dns_test_begin in dnstap_test. [GL #624] 5061. [protocol] Add support for EID and NIMLOC. [GL #626] 5060. [bug] GID, UID and UINFO could not be loaded using unknown record format. [GL #627] 5059. [bug] Display a per-view list of zones in the web interface. [GL #427] 5057. [protocol] Add support for ATMA. [GL #619] 5051. [doc] Documentation incorrectly stated that the "server-addresses" static-stub zone option accepts custom port numbers. [GL #582] 5042. [test] Make the chained delegations in reclimit behave like they would in a regular name server. [GL #578] 5041. [test] The chain test contains a incomplete delegation. [GL #568] 5039. [bug] Named could fail to preserve owner name case of new RRset. [GL #420] 4887. [test] Enable the rpzrecurse test to run on Windows. [RT #47093] --- 9.11.5 released --- --- 9.11.5rc1 released --- 5038. [bug] Chaosnet addresses were compared incorrectly. [GL #562] 5034. [bug] A race between threads could prevent zone maintenance scheduled immediately after zone load from being performed. [GL #542] 5033. [bug] When adding NTAs to multiple views using "rndc nta", the text returned via rndc was incorrectly terminated after the first line, making it look as if only one NTA had been added. Also, it was not possible to differentiate between views with the same name but different classes; this has been corrected with the addition of a "-class" option. [GL #105] 5032. [func] Add krb5-selfsub and ms-selfsub update policy rules. [GL #511] 5030. [bug] Align CMSG buffers to a 64-bit boundary, fixes crash on architectures with strict alignment. [GL #521] 5028. [bug] Spread the initial RRSIG expiration times over the entire working sig-validity-interval when signing a zone in named to even out re-signing and transfer loads. [GL #418] 5026. [bug] rndc reconfig should not touch already loaded zones. [GL #276] 5022. [doc] Update ms-self, ms-subdomain, krb5-self, and krb5-subdomain documentation. [GL !708] 5021. [bug] dig returned a non-zero exit code when it received a reply over TCP after a retry. [GL #487] 5019. [cleanup] A message is now logged when ixfr-from-differences is set at zone level for an inline-signed zone. [GL #470] 5018. [bug] Fix incorrect sizeof arguments in lib/isc/pk11.c. [GL !588] 5017. [bug] lib/isc/pk11.c failed to unlink the session before releasing the lock which is unsafe. [GL !589] 5016. [bug] Named could assert with overlapping filter-aaaa and dns64 acls. [GL #445] 5015. [bug] Reloading all zones caused zone maintenance to cease for inline-signed zones. [GL #435] 5014. [bug] Signatures loaded from the journal for the signed version of an inline-signed zone were not scheduled for refresh. [GL #482] 5012. [bug] Fix lock order reversal in pk11_initialize. [GL !590] 5009. [bug] Upon an OpenSSL failure, the first error in the OpenSSL error queue was not logged. [GL #476] 5008. [bug] "rndc signing -nsec3param ..." requests were silently ignored for zones which were not yet loaded or transferred. [GL #468] 5007. [cleanup] Replace custom ISC boolean and integer data types with C99 stdint.h and stdbool.h types. [GL #9] 5005. [bug] dnssec-verify, and dnssec-signzone at the verification step, failed on some validly signed zones. [GL #442] 5004. [bug] 'rndc reconfig' could cause inline zones to stop re-signing. [GL #439] 5003. [bug] dns_acl_isinsecure did not handle geoip elements. [GL #406] 5002. [bug] mdig: Handle malformed +ednsopt option, support 100 +ednsopt options per query rather than 100 total and address memory leaks if +ednsopt was specified. [GL #410] 5001. [bug] Fix refcount errors on error paths. [GL !563] 4996. [bug] dig: Handle malformed +ednsopt option. [GL #403] 4995. [test] Add tests for "tcp-self" update policy. [GL !282] 4994. [bug] Trust anchor telemetry queries were not being sent upstream for locally served zones. [GL #392] 4992. [bug] The wrong address was being logged for trust anchor telemetry queries. [GL #379] 4990. [bug] Prevent a possible NULL reference in pkcs11-keygen. [GL #401] --- 9.11.4-P1 released --- 4997. [security] named could crash during recursive processing of DNAME records when "deny-answer-aliases" was in use. (CVE-2018-5740) [GL #387] --- 9.11.4 released --- --- 9.11.4rc2 released --- 4984. [bug] Improve handling of very large incremental zone transfers to prevent journal corruption. [GL #339] 4983. [cleanup] Remove the deprecated flag from "answer-cookie"; it will be allowed to persist into 9.13. [GL #275]. 4982. [cleanup] Return FORMERR if the question section is empty and no COOKIE option is present; this restores older behavior except in the newly specified COOKIE case. [GL #260] 4981. [bug] Fix race in cmsg buffer usage in socket code. [GL #180] 4980. [bug] Named-checkconf failed to detect bad in-view targets. [GL #288] 4979. [bug] Non-libcap builds were not checking whether all requested capabilities are present in the permitted capability set. [GL #321] 4977. [func] When starting up, log the same details that would be reported by 'named -V'. [GL #247] 4975. [bug] The server cookie computation for sha1 and sha256 did not match the method described in RFC 7873. [GL #356] 4972. [func] Declare the 'rdata' argument for dns_rdata_tostruct() to be const. [GL #341] 4971. [bug] dnssec-signzone and dnssec-verify did not treat records below a DNAME as out-of-zone data. [GL #298] 4969. [cleanup] Refactor zone logging functions. [GL #269] --- 9.11.4rc1 released --- 4968. [bug] If glue records are signed, attempt to validate them. [GL #209] 4966. [func] Add the ability to not return a DNS COOKIE option when one is present in the request (answer-cookie no;). [GL #173] 4965. [func] Add support for marking options as deprecated. [GL #322] 4964. [bug] Reduce the probability of double signature when deleting a DNSKEY by checking if the node is otherwise signed by the algorithm of the key to be deleted. [GL #240] 4963. [test] ifconfig.sh now uses "ip" instead of "ifconfig", if available, to configure the test interfaces on linux. [GL #302] 4962. [cleanup] Move 'named -T' processing to its own function. [GL #316] 4960. [security] When recursion is enabled, but the "allow-recursion" and "allow-query-cache" ACLs are not specified, they should be limited to local networks, but were inadvertently set to match the default "allow-query", thus allowing remote queries. (CVE-2018-5738) [GL #309] 4958. [bug] Remove redundant space from NSEC3 record. [GL #281] 4955. [cleanup] Silence cppcheck warnings in lib/dns/master.c. [GL #286] 4951. [protocol] Add "HOME.ARPA" to list of built in empty zones as per RFC 8375. [GL #273] 4950. [bug] ISC_SOCKEVENTATTR_TRUNC was not be set. [GL #238] 4949. [bug] lib/isc/print.c failed to handle floating point output correctly. [GL #261] 4946. [bug] Additional glue was not being returned by resolver for unsigned zones since change 4596. [GL #209] 4939. [test] Add basic unit tests for update_sigs(). [GL #135] 4935. [func] Add support for LibreSSL >= 2.7.0 (some OpenSSL 1.1.0 call were added). [GL #191] 4933. [bug] Not creating signing keys for an inline signed zone prevented changes applied to the raw zone from being reflected in the secure zone until signing keys were made available. [GL #159] 4932. [bug] Bumped signed serial of an inline signed zone was logged even when an error occurred while updating signatures. [GL #159] 4930. [bug] Remove a bogus check in nslookup command line argument processing. [GL #206] 4926. [func] Add root key sentinel support. To disable, add 'root-key-sentinel no;' to named.conf. [GL #37] 4922. [bug] dnstap: Log the destination address of client packets rather than the interface address. [GL #197] 4921. [cleanup] Add dns_fixedname_initname() and refactor the caller code to make usage of the new function, as a part of refactoring dns_fixedname_*() macros were turned into functions. [GL #183] 4918. [bug] Fix double free after keygen error in dnssec-keygen when OpenSSL >= 1.1.0 is used and RSA_generate_key_ex fails. [GL #109] 4915. [func] Implement IDNA2008 support in dig by adding support for libidn2. New dig option +idnin has been added, which allows to process invalid domain names much like dig without IDN support. libidn2 version 2.0 or higher is needed for +idnout enabled by default. 4913. [test] Re-implemented older unit tests in bin/tests as ATF, removed the lib/tests unit testing library. [GL #115] 4911. [test] Improved the reliability of the 'mkeys' system test. [GL #128] 4910. [func] Update util/check-changes to work on release branches. [GL #113] 4909. [bug] named-checkconf did not detect in-view zone collisions. [GL #125] 4908. [test] Eliminated unnecessary waiting in the allow_query system test. Also changed its name to allow-query. [GL #81] 4907. [test] Improved the reliability of the 'notify' system test. [GL #59] 4905. [bug] irs_resconf_load() ignored resolv.conf syntax errors when "domain" or "search" options were present in that file. [GL #110] 4903. [bug] "check-mx fail;" did not prevent MX records containing IP addresses from being added to a zone by a dynamic update. [GL #112] 4902. [test] Improved the reliability of the 'ixfr' system test. [GL #66] 4899. [test] Convert most of the remaining system tests to be able to run in parallel, continuing the work from change #4895. To take advantage of this, use "make -jN check", where N is the number of processors to use. [GL #91] 4896. [test] cacheclean system test was not robust. [GL #82] 4895. [test] Allow some system tests to run in parallel. [RT #46602] 4893. [bug] Address various issues reported by cppcheck. [GL #51] 4892. [bug] named could leak memory when "rndc reload" was invoked before all zone loading actions triggered by a previous "rndc reload" command were completed. [RT #47076] 4699. [func] Multiple cookie-secret clauses can now be specified. The first one specified is used to generate new server cookies. [RT #45672] --- 9.11.3 released --- --- 9.11.3rc2 released --- 4904. [bug] Temporarily revert change #4859. [GL #124] --- 9.11.3rc1 released --- 4889. [func] Warn about the use of old root keys without the new root key being present. Warn about dlv.isc.org's key being present. Warn about both managed and trusted root keys being present. [RT #43670] 4888. [test] Initialize sockets correctly in sample-update so that the nsupdate system test will run on Windows. [RT #47097] 4886. [doc] Document dig -u in manpage. [RT #47150] 4885. [security] update-policy rules that otherwise ignore the name field now require that it be set to "." to ensure that any type list present is properly interpreted. [RT #47126] 4882. [bug] Address potential memory leak in dns_update_signaturesinc. [RT #47084] 4881. [bug] Only include dst_openssl.h when OpenSSL is required. [RT #47068] 4879. [bug] dns_rdata_caa:value_len field was too small. [RT #47086] 4878. [bug] List 'ply' as a requirement for the 'isc' python package. [RT #47065] 4811. [bug] Revert api changes to use inline macros. Provide a alternative mechanism to turn on the use of inline macros when building BIND. [RT #46520] --- 9.11.3b1 released --- 4876. [bug] Address deadlock with accessing a keytable. [RT #47000] 4875. [bug] Address compile failures on older systems. [RT #47015] 4874. [bug] Wrong time display when reporting new keywarntime. [RT #47042] 4873. [doc] Grammars for named.conf included in the ARM are now automatically generated by the configuration parser itself. As a side effect of the work needed to separate zone type grammars from each other, this also makes checking of zone statements in named-checkconf more correct and consistent. [RT #36957] 4872. [bug] Don't permit loading meta RR types such as TKEY from master files. [RT #47009] 4871. [bug] Fix configure glitch in detecting stdatomic.h support on systems with multiple compilers. [RT #46959] 4870. [test] Update included ATF library to atf-0.21 preserving the ATF tool. [RT #46967] 4869. [bug] Address some cases where NULL with zero length could be passed to memmove which is undefined behaviour and can lead to bad optimisation. [RT #46888] 4867. [cleanup] Normalize rndc on/off commands (validation and querylog) so they accept the same synonyms for on/off (yes/no, true/false, enable/disable). Thanks to Tony Finch. [RT #47022] 4866. [port] DST library initialization verifies MD5 (when MD5 was not disabled) and SHA-1 hash and HMAC support. [RT #46764] 4864. [bug] named acting as a slave for a catalog zone crashed if the latter contained a master definition without an IP address. [RT #45999] 4863. [bug] Fix various other bugs reported by Valgrind's memcheck tool. [RT #46978] 4862. [bug] The rdata flags for RRSIG were not being properly set when constructing a rdataslab. [RT #46978] 4861. [bug] The isc_crc64 unit test was not endian independent. [RT #46973] 4860. [bug] isc_int8_t should be signed char. [RT #46973] 4859. [bug] A loop was possible when attempting to validate unsigned CNAME responses from secure zones; this caused a delay in returning SERVFAIL and also increased the chances of encountering CVE-2017-3145. [RT #46839] 4858. [security] Addresses could be referenced after being freed in resolver.c, causing an assertion failure. (CVE-2017-3145) [RT #46839] 4857. [bug] Maintain attach/detach semantics for event->db, event->node, event->rdataset and event->sigrdataset in query.c. [RT #46891] 4856. [bug] 'rndc zonestatus' reported the wrong underlying type for a inline slave zone. [RT #46875] 4852. [bug] Handle strftime() failing in isc_time_formatISO8601ms. Add REQUIRE's and INSIST's to isc_time_formattimestamp, isc_time_formathttptimestamp, isc_time_formatISO8601, isc_time_formatISO8601ms. [RT #46892] 4851. [port] Support using kyua as well as atf-run to run the unit tests. [RT #46853] 4850. [bug] Named failed to restart with multiple added zones in lmdb database. [RT #46889] 4849. [bug] Duplicate zones could appear in the .nzf file if addzone failed. [RT #46435] 4846. [test] Adjust timing values in runtime system test. Address named.pid removal races in runtime system test. [RT #46800] 4844. [test] Address memory leaks in libatf-c. [RT #46798] 4843. [bug] dnssec-signzone free hashlist on exit. [RT #46791] 4842. [bug] Conditionally compile opensslecdsa_link.c to avoid warnings about unused function. [RT #46790] 4841. [bug] Address -fsanitize=undefined warnings. [RT #46786] 4840. [test] Add tests to cover fallback to using ZSK on inactive KSK. [RT #46787] 4839. [bug] zone.c:zone_sign was not properly determining if there were active KSK and ZSK keys for a algorithm when update-check-ksk is true (default) leaving records unsigned with one or more DNSKEY algorithms. [RT #46774] 4838. [bug] zone.c:add_sigs was not properly determining if there were active KSK and ZSK keys for a algorithm when update-check-ksk is true (default) leaving records unsigned with one or more DNSKEY algorithms. [RT #46754] 4837. [bug] dns_update_signatures{inc} (add_sigs) was not properly determining if there were active KSK and ZSK keys for a algorithm when update-check-ksk is true (default) leaving records unsigned when there were multiple DNSKEY algorithms for the zone. [RT #46743] 4836. [bug] Zones created using "rndc addzone" could temporarily fail to inherit an "allow-transfer" ACL that had been configured in the options statement. [RT #46603] 4835. [cleanup] Clean up and refactor LMDB-related code. [RT #46718] 4834. [port] Fix LMDB support on OpenBSD. [RT #46718] 4833. [bug] isc_event_free should check that the event is not linked when called. [RT #46725] 4832. [bug] Events were not being removed from zone->rss_events. [RT #46725] 4831. [bug] Convert the RRSIG expirytime to 64 bits for comparisons in diff.c:resign. [RT #46710] 4830. [bug] Failure to configure ATF when requested did not cause an error in top-level configure script. [RT #46655] 4829. [bug] isc_heap_delete did not zero the index value when the heap was created with a callback to do that. [RT #46709] 4828. [bug] Do not use thread-local storage for storing LMDB reader locktable slots. [RT #46556] 4827. [misc] Add a precommit check script util/checklibs.sh [RT #46215] 4826. [cleanup] Prevent potential build failures in bin/confgen/ and bin/named/ when using parallel make. [RT #46648] 4825. [bug] Prevent a bogus "error during managed-keys processing (no more)" warning from being logged. [RT #46645] 4823. [test] Refactor reclimit system test to improve its reliability and speed. [RT #46632] 4822. [bug] Use resign_sooner in dns_db_setsigningtime. [RT #46473] 4821. [bug] When resigning ensure that the SOA's expire time is always later that the resigning time of other records. [RT #46473] 4820. [bug] dns_db_subtractrdataset should transfer the resigning information to the new header. [RT #46473] 4819. [bug] Fully backout the transaction when adding a RRset to the resigning / removal heaps fails. [RT #46473] 4818. [test] The logfileconfig system test could intermittently report false negatives on some platforms. [RT #46615] 4817. [cleanup] Use DNS_NAME_INITABSOLUTE and DNS_NAME_INITNONABSOLUTE. [RT #45433] 4816. [bug] Don't use a common array for storing EDNS options in DiG as it could fill up. [RT #45611] 4815. [bug] rbt_test.c:insert_and_delete needed to call dns_rbt_addnode instead of dns_rbt_addname. [RT #46553] 4814. [cleanup] Use AS_HELP_STRING for consistent help text. [RT #46521] 4812. [bug] Minor improvements to stability and consistency of code handling managed keys. [RT #46468] 4810. [test] The chain system test failed if the IPv6 interfaces were not configured. [RT #46508] 4809. [port] Check at configure time whether -latomic is needed for stdatomic.h. [RT #46324] 4808. [bug] Properly test for zlib.h. [RT #46504] 4805. [bug] TCP4Active and TCP6Active weren't being updated correctly. [RT #46454] 4804. [port] win32: access() does not work on directories as required by POSIX. Supply a alternative in isc_file_isdirwritable. [RT #46394] 4803. [bug] Backport parts of RT #45293 and RT #46267, specifically the fix for RT #46055 and mkeys system test improvements. [RT #46430] 4800. [bug] When processing delzone, write one zone config per line to the NZF. [RT #46323] 4799. [cleanup] Improve clarity of keytable unit tests. [RT #46407] 4792. [bug] Fix map file header correctness check. [RT #38418] 4791. [doc] Fixed outdated documentation about export libraries. [RT #46341] 4790. [bug] nsupdate could trigger a require when sending a update to the second address of the server. [RT #45731] 4788. [cleanup] When using "update-policy local", log a warning when an update matching the session key is received from a remote host. [RT #46213] 4787. [cleanup] Turn nsec3param_salt_totext() into a public function, dns_nsec3param_salttotext(), and add unit tests for it. [RT #46289] 4783. [test] dnssec: 'check that NOTIFY is sent at the end of NSEC3 chain generation failed' required more time on some machines for the IXFR to complete. [RT #46388] 4782. [test] dnssec: 'checking positive and negative validation with negative trust anchors' required more time to complete on some machines. [RT #46386] 4781. [maint] B.ROOT-SERVERS.NET is now 199.9.14.201. [RT #45889] 4780. [bug] When answering ANY queries, don't include the NS RRset in the authority section if it was already in the answer section. [RT #44543] 4779. [bug] Expire NTA at the start of the second. Don't update the expiry value if the record has already expired after a successful check. [RT #46368] 4777. [cleanup] Removed a redundant call to configure_view_acl(). [RT #46369] 4776. [bug] Improve portability of ht_test. [RT #46333] 4775. [bug] Address Coverity warnings in ht_test.c [RT #46281] 4774. [bug] was incorrectly included in several header files. [RT #46311] 4773. [doc] Fixed generating Doxygen documentation for functions annotated using certain macros. Miscellaneous Doxygen-related cleanups. [RT #46276] 4771. [bug] When sending RFC 5011 refresh queries, disregard cached DNSKEY rrsets. [RT #46251] 4770. [bug] Cache additional data from priming queries as glue. Previously they were ignored as unsigned non-answer data from a secure zone, and never actually got added to the cache, causing hints to be used frequently for root-server addresses, which triggered re-priming. [RT #45241] 4769. [bug] Enforce the requirement that the managed keys directory (specified by "managed-keys-directory", and defaulting to the working directory if not specified) must be writable. [RT #46077] 4766. [cleanup] Address Coverity warnings. [RT #46150] 4763. [contrib] Improve compatibility when building MySQL DLZ module by using mysql_config if available. [RT #45558] 4762. [func] "update-policy local" is now restricted to updates from local addresses. (Previously, other addresses were allowed so long as updates were signed by the local session key.) [RT #45492] 4761. [protocol] Add support for DOA. [RT #45612] 4759. [func] Add logging channel "trust-anchor-telemetry" to record trust-anchor-telemetry in incoming requests. Both _ta-XXXX./NULL and EDNS KEY-TAG options are logged. [RT #46124] 4758. [doc] Remove documentation of unimplemented "topology". [RT #46161] 4756. [bug] Interrupting dig could lead to an INSIST failure after certain errors were encountered while querying a host whose name resolved to more than one address. Change 4537 increased the odds of triggering this issue by causing dig to hang indefinitely when certain error paths were evaluated. dig now also retries TCP queries (once) if the server gracefully closes the connection before sending a response. [RT #42832, #45159] 4755. [cleanup] Silence unnecessary log message when NZF file doesn't exist. [RT #46186] 4754. [bug] dns_zone_setview needs a two stage commit to properly handle errors. [RT #45841] 4753. [contrib] Software obtainable from known upstream locations (i.e., zkt, nslint, query-loc) has been removed. Links to these and other packages can be found at https://www.isc.org/community/tools [RT #46182] 4752. [test] Add unit test for isc_net_pton. [RT #46171] 4749. [func] The ISC DLV service has been shut down, and all DLV records have been removed from dlv.isc.org. - Removed references to ISC DLV in documentation - Removed DLV key from bind.keys - No longer use ISC DLV by default in delv [RT #46155] 4748. [cleanup] Sprintf to snprintf coversions. [RT #46132] 4746. [cleanup] Add configured prefixes to configure summary output. [RT #46153] 4745. [test] Add color-coded pass/fail messages to system tests when running on terminals that support them. [RT #45977] 4744. [bug] Suppress trust-anchor-telemetry queries if validation is disabled. [RT #46131] 4741. [bug] Make isc_refcount_current() atomically read the counter value. [RT #46074] 4740. [cleanup] Avoid triggering format-truncated warnings. [RT #46107] 4739. [cleanup] Address clang static analysis warnings. [RT #45952] 4738. [port] win32: strftime mishandles %Z. [RT #46039] 4737. [cleanup] Address Coverity warnings. [RT #46012] 4736. [cleanup] (a) Added comments to NSEC3-related functions in lib/dns/zone.c. (b) Refactored NSEC3 salt formatting code. (c) Minor tweaks to lock and result handling. [RT #46053] 4735. [bug] Add @ISC_OPENSSL_LIBS@ to isc-config. [RT #46078] 4734. [contrib] Added sample configuration for DNS-over-TLS in contrib/dnspriv. 4731. [bug] Fix use after free when closing an LMDB. [RT #46000] 4730. [bug] Fix out of bounds access in DHCID totext() method. [RT #46001] 4729. [bug] Don't use memset() to wipe memory, as it may be removed by compiler optimizations when the memset() occurs on automatic stack allocation just before function return. [RT #45947] 4728. [func] Use C11's stdatomic.h instead of isc_atomic where available. [RT #40668] 4727. [bug] Retransferring an inline-signed slave using NSEC3 around the time its NSEC3 salt was changed could result in an infinite signing loop. [RT #45080] 4726. [port] Prevent setsockopt() errors related to TCP_FASTOPEN from being logged on FreeBSD if the kernel does not support it. Notify the user when the kernel does support TCP_FASTOPEN, but it is disabled by sysctl. Add a new configure option, --disable-tcp-fastopen, to disable use of TCP_FASTOPEN altogether. [RT #44754] 4725. [bug] Nsupdate: "recvsoa" was incorrectly reported for failures in sending the update message. The correct location to be reported is "update_completed". [RT #46014] 4723. [bug] Statistics counter DNSTAPdropped was misidentified as DNSSECdropped. [RT #46002] 4722. [cleanup] Clean up uses of strcpy() and strcat() in favor of strlcpy() and strlcat() for safety. [RT #45981] 4719. [bug] Address PVS static analyzer warnings. [RT #45946] 4717. [bug] Treat replies with QCOUNT=0 as truncated if TC=1, FORMERR if TC=0, and log the error correctly. [RT #45836] 4715. [bug] TreeMemMax was mis-identified as a second HeapMemMax in the Json cache statistics. [RT #45980] 4714. [port] openbsd/libressl: add support for building with --enable-openssl-hash. [RT #45982] 4713. [cleanup] Minor revisions to RPZ code to reduce differences with the development branch. [RT #46037] 4712. [bug] "dig +domain" and "dig +search" didn't retain the search domain when retrying with TCP. [RT #45547] 4711. [test] Some RR types were missing from genzones.sh. [RT #45782] 4709. [cleanup] Use dns_name_fullhash() to hash names for RRL. [RT #45435] 4703. [bug] BINDInstall.exe was missing some buffer length checks. [RT #45898] 4698. [port] Add --with-python-install-dir configure option to allow specifying a nonstandard installation directory for Python modules. [RT #45407] 4697. [bug] Restore workaround for Microsoft Windows TSIG hash computation bug. [RT #45854] 4696. [port] Enable filter-aaaa support by default on Windows builds. [RT #45883] 4695. [bug] cookie-secrets were not being properly checked by named-checkconf. [RT #45886] 4692. [bug] Fix build failures with libressl introduced in 4676. [RT #45879] 4690. [bug] Command line options -4/-6 were handled inconsistently between tools. [RT #45632] 4689. [cleanup] Turn on minimal responses for CDNSKEY and CDS in addition to DNSKEY and DS. Thanks to Tony Finch. [RT #45690] 4688. [protocol] Check and display EDNS KEY TAG options (RFC 8145) in messages. [RT #44804] 4686. [bug] dnssec-settime -p could print a bogus warning about key deletion scheduled before its inactivation when a key had an inactivation date set but no deletion date set. [RT #45807] 4685. [bug] dnssec-settime incorrectly calculated publication and activation dates for a successor key. [RT #45806] 4684. [bug] delv could send bogus DNS queries when an explicit server address was specified on the command line along with -4/-6. [RT #45804] 4683. [bug] Prevent nsupdate from immediately exiting on invalid user input in interactive mode. [RT #28194] 4682. [bug] Don't report errors on records below a DNAME. [RT #44880] 4680. [bug] Fix failing over to another master server address when nsupdate is used with GSS-API. [RT #45380] 4679. [cleanup] Suggest using -o when dnssec-verify finds a SOA record not at top of zone and -o is not used. [RT #45519] 4678. [bug] geoip-use-ecs has the wrong type when geoip support is disabled at configure time. [RT #45763] 4677. [cleanup] Split up the main function in dig to better support the iOS app version. [RT #45508] 4676. [cleanup] Allow BIND to be built using OpenSSL 1.0.X with deprecated functions removed. [RT #45706] 4675. [cleanup] Don't use C++ keyword class. [RT #45726] 4673. [port] Silence GCC 7 warnings. [RT #45592] 4671. [bug] Fix a race condition that could cause the resolver to crash with assertion failure when chasing DS in specific conditions with a very short RTT to the upstream nameserver. [RT #45168] 4670. [cleanup] Ensure that a request MAC is never sent back in an XFR response unless the signature was verified. [RT #45494] 4668. [bug] Use localtime_r and gmtime_r for thread safety. [RT #45664] 4667. [cleanup] Refactor RDATA unit tests. [RT #45610] 4666. [bug] dnssec-keymgr: Domain names beginning with digits (0-9) could cause a parser error when reading the policy file. This now works correctly so long as the domain name is quoted. [RT #45641] 4665. [protocol] Added support for ED25519 and ED448 DNSSEC signing algorithms (RFC 8080). (Note: these algorithms depend on code currently in the development branch of OpenSSL which has not yet been released.) [RT #44696] 4663. [cleanup] Clarify error message printed by dnssec-dsfromkey. [RT #21731] 4662. [performance] Improve cache memory cleanup of zero TTL records by putting them at the tail of LRU header lists. [RT #45274] 4661. [bug] A race condition could occur if a zone was reloaded while resigning, triggering a crash in rbtdb.c:closeversion(). [RT #45276] 4660. [bug] Remove spurious "peer" from Windows socket log messages. [RT #45617] 4659. [bug] Remove spurious log message about lmdb-mapsize not being supported when parsing builtin configuration file. [RT #45618] 4658. [bug] Clean up build directory created by "setup.py install" immediately. [RT #45628] 4657. [bug] rrchecker system test result could be improperly determined. [RT #45602] 4656. [bug] Apply "port" and "dscp" values specified in catalog zone's "default-masters" option to the generated configuration of its member zones. [RT #45545] 4655. [bug] Lack of seccomp could be falsely reported. [RT #45599] 4654. [cleanup] Don't use C++ keywords delete, new and namespace. [RT #45538] 4652. [bug] Nsupdate could attempt to use a zeroed address on server timeout. [RT #45417] 4651. [test] Silence coverity warnings in tsig_test.c. [RT #45528] 4605. [performance] (partial backport) Improve general query performance. Improves performance of owner case restoration, hash function, etc. Uses inline buffer implementation by default. [RT #45637] --- 9.11.2 released --- --- 9.11.2rc2 released --- 4653. [bug] Reorder includes to move @DST_OPENSSL_INC@ and @ISC_OPENSSL_INC@ after shipped include directories. [RT #45581] --- 9.11.2rc1 released --- 4649. [bug] The wrong zone was logged when a catalog zone is added. [RT #45520] 4648. [bug] "rndc reconfig" on a slave no longer causes all member zones of configured catalog zones to be removed from configuration. [RT #45310] 4647. [bug] Change 4643 broke verification of TSIG signed TCP message sequences where not all the messages contain TSIG records. These may be used in AXFR and IXFR responses. [RT #45509] 4645. [bug] Fix PKCS#11 RSA parsing when MD5 is disabled. [RT #45300] --- 9.11.2b1 released --- 4643. [security] An error in TSIG handling could permit unauthorized zone transfers or zone updates. (CVE-2017-3142) (CVE-2017-3143) [RT #45383] 4642. [cleanup] Add more logging of RFC 5011 events affecting the status of managed keys: newly observed keys, deletion of revoked keys, etc. [RT #45354] 4641. [cleanup] Parallel builds (make -j) could fail with --with-atf / --enable-developer. [RT #45373] 4640. [bug] If query_findversion failed in query_getdb due to memory failure the error status was incorrectly discarded. [RT #45331] 4639. [bug] Fix a regression in --with-tuning reporting introduced by change 4488. [RT #45396] 4638. [bug] Reloading or reconfiguring named could fail on some platforms when LMDB was in use. [RT #45203] 4636. [bug] Normalize rpz policy zone names when checking for existence. [RT #45358] 4635. [bug] Fix RPZ NSDNAME logging that was logging failures as NSIP. [RT #45052] 4634. [contrib] check5011.pl needs to handle optional space before semi-colon in +multi-line output. [RT #45352] 4633. [maint] Updated AAAA (2001:500:200::b) for B.ROOT-SERVERS.NET. 4632. [security] The BIND installer on Windows used an unquoted service path, which can enable privilege escalation. (CVE-2017-3141) [RT #45229] 4631. [security] Some RPZ configurations could go into an infinite query loop when encountering responses with TTL=0. (CVE-2017-3140) [RT #45181] 4630. [bug] "dyndb" is dependent on dlopen existing / being enabled. [RT #45291] 4629. [bug] dns_client_startupdate could not be called with a running client. [RT #45277] 4628. [bug] Fixed a potential reference leak in query_getdb(). [RT #45247] 4626. [test] Added more tests for handling of different record ordering in CNAME and DNAME responses. [QA #430] 4625. [bug] Running "rndc addzone" and "rndc delzone" at close to the same time could trigger a deadlock if using LMDB. [RT #45209] 4623. [bug] Use --with-protobuf-c and --with-libfstrm to find protoc-c and fstrm_capture. [RT #45187] 4622. [bug] Remove unnecessary escaping of semicolon in CAA and URI records. [RT #45216] 4621. [port] Force alignment of oid arrays to silence loader warnings. [RT #45131] 4620. [port] Handle EPFNOSUPPORT being returned when probing to see if a socket type is supported. [RT #45214] 4619. [bug] Call isc_mem_put instead of isc_mem_free in bin/named/server.c:setup_newzones. [RT #45202] 4618. [bug] Check isc_mem_strdup results in dns_view_setnewzones. Add logging for lmdb call failures. [RT #45204] 4617. [test] Update rndc system test to be more delay tolerant. [RT #45177] 4616. [bug] When using LMDB, zones deleted using "rndc delzone" were not correctly removed from the new-zone database. [RT #45185] 4615. [bug] AD could be set on truncated answer with no records present in the answer and authority sections. [RT #45140] 4614. [test] Fixed an error in the sockaddr unit test. [RT #45146] 4612. [bug] Silence 'may be use uninitalised' warning and simplify the code in lwres/getaddinfo:process_answer. [RT #45158] 4611. [bug] The default LMDB mapsize was too low and caused errors after few thousand zones were added using rndc addzone. A new config option "lmdb-mapsize" has been introduced to configure the LMDB mapsize depending on operational needs. [RT #44954] 4609. [cleanup] Rearrange makefiles to enable parallel execution (i.e. "make -j"). [RT #45078] 4608. [func] DiG now warns about .local queries which are reserved for Multicast DNS. [RT #44783] 4606. [port] Stop using experimental "Experimental keys on scalar" feature of perl as it has been removed. [RT #45012] 4604. [bug] Don't use ERR_load_crypto_strings() when building with OpenSSL 1.1.0. [RT #45117] 4603. [doc] Automatically generate named.conf(5) man page from doc/misc/options. Thanks to Tony Finch. [RT #43525] 4602. [func] Threads are now set to human-readable names to assist debugging, when supported by the OS. [RT #43234] 4601. [bug] Reject incorrect RSA key lengths during key generation and and sign/verify context creation. [RT #45043] 4600. [bug] Adjust RPZ trigger counts only when the entry being deleted exists. [RT #43386] 4599. [bug] Fix inconsistencies in inline signing time comparison that were introduced with the introduction of rdatasetheader->resign_lsb. [RT #42112] 4597. [bug] The validator now ignores SHA-1 DS digest type when a DS record with SHA-384 digest type is present and is a supported digest type. [RT #45017] 4596. [bug] Validate glue before adding it to the additional section. This also fixes incorrect TTL capping when the RRSIG expired earlier than the TTL. [RT #45062] 4593. [doc] Update README using markdown, remove outdated FAQ file in favor of the knowledge base. 4592. [bug] A race condition on shutdown could trigger an assertion failure in dispatch.c. [RT #43822] 4591. [port] Addressed some python 3 compatibility issues. Thanks to Ville Skytta. [RT #44955] [RT #44956] 4590. [bug] Support for PTHREAD_MUTEX_ADAPTIVE_NP was not being properly detected. [RT #44871] 4589. [cleanup] "configure -q" is now silent. [RT #44829] 4588. [bug] nsupdate could send queries for TKEY to the wrong server when using GSSAPI. Thanks to Tomas Hozza. [RT #39893] 4587. [bug] named-checkzone failed to handle occulted data below DNAMEs correctly. [RT #44877] 4586. [func] dig, host and nslookup now use TCP for ANY queries. [RT #44687] 4585. [port] win32: Set CompileAS value. [RT #42474] 4584. [bug] A number of memory usage statistics were not properly reported when they exceeded 4G. [RT #44750] 4574. [bug] Dig leaked memory with multiple +subnet options. [RT #44683] 4555. [func] dig +ednsopt: EDNS options can now be specified by name in addition to numeric value. [RT #44461] --- 9.11.1 released --- --- 9.11.1rc3 released --- 4582. [security] 'rndc ""' could trigger a assertion failure in named. (CVE-2017-3138) [RT #44924] 4581. [port] Linux: Add getpid and getrandom to the list of system calls named uses for seccomp. [RT #44883] 4580. [bug] 4578 introduced a regression when handling CNAME to referral below the current domain. [RT #44850] --- 9.11.1rc2 released --- 4578. [security] Some chaining (CNAME or DNAME) responses to upstream queries could trigger assertion failures. (CVE-2017-3137) [RT #44734] 4575. [security] DNS64 with "break-dnssec yes;" can result in an assertion failure. (CVE-2017-3136) [RT #44653] --- 9.11.1rc1 released --- 4571. [bug] Out-of-tree builds of backtrace_test failed. 4570. [cleanup] named did not correctly fall back to the built-in initializing keys if the bind.keys file was present but empty. [RT #44531] 4569. [func] Store both local and remote addresses in dnstap logging, and modify dnstap-read output format to print them. [RT #43595] 4568. [contrib] Added a --with-bind option to the dnsperf configure script to specify BIND prefix path. 4567. [port] Call getprotobyname and getservbyname prior to calling chroot so that shared libraries get loaded. [RT #44537] 4565. [cleanup] The inline macro versions of isc_buffer_put*() did not implement automatic buffer reallocation. [RT #44216] 4564. [maint] Update the built in managed keys to include the upcoming root KSK. [RT #44579] 4563. [bug] Modified zones would occasionally fail to reload. [RT #39424] 4561. [port] Silence a warning in strict C99 compilers. [RT #44414] 4560. [bug] mdig: add -m option to enable memory debugging rather than having it on all the time. [RT #44509] 4559. [bug] openssl_link.c didn't compile if ISC_MEM_TRACKLINES was turned off. [RT #44509] 4558. [bug] Synthesised CNAME before matching DNAME was still being cached when it should not have been. [RT #44318] 4557. [security] Combining dns64 and rpz can result in dereferencing a NULL pointer (read). (CVE-2017-3135) [RT#44434] 4554. [bug] Remove double unlock in dns_dispatchmgr_setudp. [RT #44336] 4553. [bug] Named could deadlock there were multiple changes to NSEC/NSEC3 parameters for a zone being processed at the same time. [RT #42770] 4552. [bug] Named could trigger a assertion when sending notify messages. [RT #44019] 4551. [test] Add system tests for integrity checks of MX and SRV records. [RT #43953] 4550. [cleanup] Increased the number of available master file output style flags from 32 to 64. [RT #44043] 4547. [port] Add support for --enable-native-pkcs11 on the AEP Keyper HSM. [RT #42463] --- 9.11.1b1 released --- 4545. [func] Expand YAML output from dnstap-read to include a detailed breakdown of the DNS message contents. [RT #43642] 4544. [bug] Add message/payload size to dnstap-read YAML output. [RT #43622] 4543. [bug] dns_client_startupdate now delays sending the update request until isc_app_ctxrun has been called. [RT #43976] 4541. [bug] rndc addzone should properly reject non master/slave zones. [RT #43665] 4540. [bug] Correctly handle ecs entries in dns_acl_isinsecure. [RT #43601] 4539. [bug] Referencing a nonexistent zone with RPZ could lead to a assertion failure when configuring. [RT #43787] 4538. [bug] Call dns_client_startresolve from client->task. [RT #43896] 4537. [bug] Handle timeouts better in dig/host/nslookup. [RT #43576] 4536. [bug] ISC_SOCKEVENTATTR_USEMINMTU was not being cleared when reusing the event structure. [RT #43885] 4535. [bug] Address race condition in setting / testing of DNS_REQUEST_F_SENDING. [RT #43889] 4534. [bug] Only set RD, RA and CD in QUERY responses. [RT #43879] 4533. [bug] dns_client_update should terminate on prerequisite failures (NXDOMAIN, YXDOMAIN, NXRRSET, YXRRSET) and also on BADZONE. [RT #43865] 4532. [contrib] Make gen-data-queryperf.py python 3 compatible. [RT #43836] 4531. [security] 'is_zone' was not being properly updated by redirect2 and subsequently preserved leading to an assertion failure. (CVE-2016-9778) [RT #43837] 4530. [bug] Change 4489 broke the handling of CNAME -> DNAME in responses resulting in SERVFAIL being returned. [RT #43779] 4529. [cleanup] Silence noisy log warning when DSCP probe fails due to firewall rules. [RT #43847] 4528. [bug] Only set the flag bits for the i/o we are waiting for on EPOLLERR or EPOLLHUP. [RT #43617] 4527. [doc] Support DocBook XSL Stylesheets v1.79.1. [RT #43831] 4526. [doc] Corrected errors and improved formatting of grammar definitions in the ARM. [RT #43739] 4525. [doc] Fixed outdated documentation on managed-keys. [RT #43810] 4524. [bug] The net zero test was broken causing IPv4 servers with addresses ending in .0 to be rejected. [RT #43776] 4523. [doc] Expand config doc for and . [RT #43768] 4522. [bug] Handle big gaps in log file version numbers better. [RT #38688] 4521. [cleanup] Log it as an error if an entropy source is not found and there is no fallback available. [RT #43659] 4520. [cleanup] Alphabetize more of the grammar when printing it out. Fix unbalanced indenting. [RT #43755] 4519. [port] win32: handle ERROR_MORE_DATA. [RT #43534] 4517. [security] Named could mishandle authority sections that were missing RRSIGs triggering an assertion failure. (CVE-2016-9444) [RT # 43632] 4516. [bug] isc_socketmgr_renderjson was missing from the windows build. [RT #43602] 4515. [port] FreeBSD: Find readline headers when they are in edit/readline/ instead of readline/. [RT #43658] 4514. [port] NetBSD: strip -WL, from ld command line. [RT #43204] 4513. [cleanup] Minimum Python versions are now 2.7 and 3.2. [RT #43566] 4512. [bug] win32: @GEOIP_INC@ missing from delv.vcxproj.in. [RT #43556] 4511. [bug] win32: mdig.exe-BNFT was missing Configure. [RT #43554] 4510. [security] Named mishandled some responses where covering RRSIG records are returned without the requested data resulting in a assertion failure. (CVE-2016-9147) [RT #43548] 4509. [test] Make the rrl system test more reliable on slower machines by using mdig instead of dig. [RT #43280] 4508. [security] Named incorrectly tried to cache TKEY records which could trigger a assertion failure when there was a class mismatch. (CVE-2016-9131) [RT #43522] 4507. [bug] Named could incorrectly log 'allows updates by IP address, which is insecure' [RT #43432] 4505. [port] Use IP_PMTUDISC_OMIT if available. [RT #35494] 4504. [security] Allow the maximum number of records in a zone to be specified. This provides a control for issues raised in CVE-2016-6170. [RT #42143] 4503. [cleanup] "make uninstall" now removes files installed by BIND. (This currently excludes Python files due to lack of support in setup.py.) [RT #42192] 4502. [func] Report multiple and experimental options when printing grammar. [RT #43134] 4500. [bug] Support modifier I64 in isc__print_printf. [RT #43526] 4499. [port] MacOSX: silence deprecated function warning by using arc4random_stir() when available instead of arc4random_addrandom(). [RT #43503] 4498. [test] Simplify prerequisite checks in system tests. [RT #43516] 4497. [port] Add support for OpenSSL 1.1.0. [RT #41284] 4496. [func] dig: add +idnout to control whether labels are display in punycode or not. Requires idn support to be enabled at compile time. [RT #43398] 4495. [bug] A isc_mutex_init call was not being checked. [RT #43391] 4494. [bug] Look for . [RT #43429] 4493. [bug] bin/tests/system/dyndb/driver/Makefile.in should use SO_TARGETS. [RT# 43336] 4492. [bug] irs_resconf_load failed to initialize sortlistnxt causing bad writes if resolv.conf contained a sortlist directive. [RT #43459] 4491. [bug] Improve message emitted when testing whether sendmsg works with TOS/TCLASS fails. [RT #43483] 4490. [maint] Added AAAA (2001:500:12::d0d) for G.ROOT-SERVERS.NET. 4489. [security] It was possible to trigger assertions when processing a response containing a DNAME answer. (CVE-2016-8864) [RT #43465] 4488. [port] Darwin: use -framework for Kerberos. [RT #43418] 4487. [test] Make system tests work on Windows. [RT #42931] 4486. [bug] Look in $prefix/lib/pythonX.Y/site-packages for the python modules we install. [RT #43330] 4485. [bug] Failure to find readline when requested should be fatal to configure. [RT #43328] 4484. [func] Check prefixes in acls to make sure the address and prefix lengths are consistent. Warn only in BIND 9.11 and earlier. [RT #43367] 4483. [bug] Address use before require check and remove extraneous dns_message_gettsigkey call in dns_tsig_sign. [RT #43374] 4482. [cleanup] Change #4455 was incomplete. [RT #43252] 4478. [func] Add +continue option to mdig, allow continue on socket errors. [RT #43281] 4477. [test] Fix mkeys test timing issues. [RT #41028] 4476. [test] Fix reclimit test on slower machines. [RT #43283] 4475. [doc] Update named-checkconf documentation. [RT #43153] 4474. [bug] win32: call WSAStartup in fromtext_in_wks so that getprotobyname and getservbyname work. [RT #43197] 4473. [bug] Only call fsync / _commit on regular files. [RT #43196] 4472. [bug] Named could fail to find the correct NSEC3 records when a zone was updated between looking for the answer and looking for the NSEC3 records proving nonexistence of the answer. [RT #43247] --- 9.11.0 released --- --- 9.11.0rc3 released --- 4471. [cleanup] Render client/query logging format consistent for ease of log file parsing. (Note that this affects "querylog" format: there is now an additional field indicating the client object address.) [RT #43238] 4470. [bug] Reset message with intent parse before calling dns_dispatch_getnext. [RT #43229] --- 9.11.0rc2 released --- 4468. [bug] Address ECS option handling issues. [RT #43191] 4467. [security] It was possible to trigger an assertion when rendering a message. (CVE-2016-2776) [RT #43139] 4466. [bug] Interface scanning didn't work on a Windows system without a non local IPv6 addresses. [RT #43130] 4465. [bug] Don't use "%z" as Windows doesn't support it. [RT #43131] 4464. [bug] Fix windows python support. [RT #43173] 4463. [bug] The dnstap system test failed on some systems. [RT #43129] 4462. [bug] Don't describe a returned EDNS COOKIE as "good" when there isn't a valid server cookie. [RT #43167] 4461. [bug] win32: not all external data was properly marked as external data for windows dll. [RT #43161] --- 9.11.0rc1 released --- 4460. [test] Add system test for dnstap using unix domain sockets. [RT #42926] 4459. [bug] TCP client objects created to handle pipeline queries were not cleaned up correctly, causing uncontrolled memory growth. [RT #43106] 4458. [cleanup] Update assertions to be more correct, and also remove use of a reserved word. [RT #43090] 4457. [maint] Added AAAA (2001:500:a8::e) for E.ROOT-SERVERS.NET. 4456. [doc] Add DOCTYPE and lang attribute to tags. [RT #42587] 4455. [cleanup] Allow dyndb modules to correctly log the filename and line number when processing configuration text from named.conf. [RT #43050] 4454. [bug] 'rndc dnstap -reopen' had a race issue. [RT #43089] 4453. [bug] Prefetching of DS records failed to update their RRSIGs. [RT #42865] 4452. [bug] The default key manager policy file is now /dnssec-policy.conf (usually /etc/dnssec-policy.conf). [RT #43064] 4451. [cleanup] Log more useful information if a PKCS#11 provider library cannot be loaded. [RT #43076] 4450. [port] Provide more nuanced HSM support which better matches the specific PKCS11 providers capabilities. [RT #42458] 4449. [test] Fix catalog zones test on slower systems. [RT #42997] 4448. [bug] win32: ::1 was not being found when iterating interfaces. [RT #42993] 4447. [tuning] Allow the fstrm_iothr_init() options to be set using named.conf to control how dnstap manages the data flow. [RT #42974] 4446. [bug] The cache_find() and _findrdataset() functions could find rdatasets that had been marked stale. [RT #42853] 4445. [cleanup] isc_errno_toresult() can now be used to call the formerly private function isc__errno2result(). [RT #43050] 4444. [bug] Fixed some issues related to dyndb: A bug caused braces to be omitted when passing configuration text from named.conf to a dyndb driver, and there was a use-after-free in the sample dyndb driver. [RT #43050] 4443. [func] Set TCP_MAXSEG in addition to IPV6_USE_MIN_MTU on TCP sockets. [RT #42864] 4442. [bug] Fix RPZ CIDR tree insertion bug that corrupted tree data structure with overlapping networks (longest prefix match was ineffective). [RT #43035] 4441. [cleanup] Alphabetize host's help output. [RT #43031] 4440. [func] Enable TCP fast open support when available on the server side. [RT #42866] 4439. [bug] Address race conditions getting ownernames of nodes. [RT #43005] 4438. [func] Use LIFO rather than FIFO when processing startup notify and refresh queries. [RT #42825] 4437. [func] Minimal-responses now has two additional modes no-auth and no-auth-recursive which suppress adding the NS records to the authority section as well as the associated address records for the nameservers. [RT #42005] 4436. [func] Return TLSA records as additional data for MX and SRV lookups. [RT #42894] 4435. [tuning] Only set IPV6_USE_MIN_MTU for UDP when the message will not fit into a single IPv4 encapsulated IPv6 UDP packet when transmitted over a Ethernet link. [RT #42871] 4434. [protocol] Return EDNS EXPIRE option for master zones in addition to slave zones. [RT #43008] 4433. [cleanup] Report an error when passing an invalid option or view name to "rndc dumpdb". [RT #42958] 4432. [test] Hide rndc output on expected failures in logfileconfig system test. [RT #27996] 4431. [bug] named-checkconf now checks the rate-limit clause. [RT #42970] 4430. [bug] Lwresd died if a search list was not defined. Found by 0x710DDDD At Alibaba Security. [RT #42895] 4429. [bug] Address potential use after free on fclose() error. [RT #42976] 4428. [bug] The "test dispatch getnext" unit test could fail in a threaded build. [RT #42979] 4427. [bug] The "query" and "response" parameters to the "dnstap" option had their functions reversed. --- 9.11.0b3 released --- 4426. [bug] Addressed Coverity warnings. [RT #42908] 4425. [bug] arpaname, dnstap-read and named-rrchecker were not being installed into ${prefix}/bin. Tidy up installation issues with CHANGE 4421. [RT #42910] 4424. [experimental] Named now sends _ta-XXXX./NULL queries to provide feedback to the trust-anchor administrators about how key rollovers are progressing as per draft-ietf-dnsop-edns-key-tag-02. This can be disabled using 'trust-anchor-telemetry no;'. [RT #40583] 4423. [maint] Added missing IPv6 address 2001:500:84::b for B.ROOT-SERVERS.NET. [RT #42898] 4422. [port] Silence clang warnings in dig.c and dighost.c. [RT #42451] 4421. [func] When built with LMDB (Lightning Memory-mapped Database), named will now use a database to store the configuration for zones added by "rndc addzone" instead of using a flat NZF file. This improves performance of "rndc delzone" and "rndc modzone" significantly. Existing NZF files will automatically by converted to NZD databases. To view the contents of an NZD or to roll back to NZF format, use "named-nzd2nzf". To disable this feature, use "configure --without-lmdb". [RT #39837] 4420. [func] nslookup now looks for AAAA as well as A by default. [RT #40420] 4419. [bug] Don't cause undefined result if the label of an entry in catalog zone is changed. [RT #42708] 4418. [bug] Fix a compiler warning in GSSAPI code. [RT #42879] 4417. [bug] dnssec-keymgr could fail to create successor keys if the prepublication interval was set to a value smaller than the default. [RT #42820] 4416. [bug] dnssec-keymgr: Domain names in policy files could fail to match due to trailing dots. [RT #42807] 4415. [bug] dnssec-keymgr: Expired/deleted keys were not always excluded. [RT #42884] 4414. [bug] Corrected a bug in the MIPS implementation of isc_atomic_xadd(). [RT #41965] 4413. [bug] GSSAPI negotiation could fail if GSS_S_CONTINUE_NEEDED was returned. [RT #42733] --- 9.11.0b2 released --- 4412. [cleanup] Make fixes for GCC 6. ISC_OFFSET_MAXIMUM macro was removed. [RT #42721] 4411. [func] "rndc dnstap -roll" automatically rolls the dnstap output file; the previous version is saved with ".0" suffix, and earlier versions with ".1" and so on. An optional numeric argument indicates how many prior files to save. [RT #42830] 4410. [bug] Address use after free and memory leak with dnstap. [RT #42746] 4409. [bug] DNS64 should exclude mapped addresses by default when an exclude acl is not defined. [RT #42810] 4408. [func] Continue waiting for expected response when we the response we get does not match the request. [RT #41026] 4407. [performance] Use GCC builtin for clz in RPZ lookup code. [RT #42818] 4406. [security] getrrsetbyname with a non absolute name could trigger an infinite recursion bug in lwresd and named with lwres configured if when combined with a search list entry the resulting name is too long. (CVE-2016-2775) [RT #42694] 4405. [bug] Change 4342 introduced a regression where you could not remove a delegation in a NSEC3 signed zone using OPTOUT via nsupdate. [RT #42702] 4404. [misc] Allow krb5-config to be used when configuring gssapi. [RT #42580] 4403. [bug] Rename variables and arguments that shadow: basename, clone and gai_error. 4402. [bug] protoc-c is now a hard requirement for --enable-dnstap. --- 9.11.0b1 released --- 4401. [misc] Change LICENSE to MPL 2.0. 4400. [bug] ttl policy was not being inherited in policy.py. [RT #42718] 4399. [bug] policy.py 'ECCGOST', 'ECDSAP256SHA256', and 'ECDSAP384SHA384' don't have settable keysize. [RT #42718] 4398. [bug] Correct spelling of ECDSAP256SHA256 in policy.py. [RT #42718] 4397. [bug] Update Windows python support. [RT #42538] 4396. [func] dnssec-keymgr now takes a '-r randomfile' option. [RT #42455] 4395. [bug] Improve out-of-tree installation of python modules. [RT #42586] 4394. [func] Add rndc command "dnstap-reopen" to close and reopen dnstap output files. [RT #41803] 4393. [bug] Address potential NULL pointer dereferences in dnstap code. 4392. [func] Collect statistics for RSSAC02v3 traffic-volume, traffic-sizes and rcode-volume reporting. [RT #41475] 4391. [contrib] Fix leaks in contrib DLZ code. [RT #42707] 4390. [doc] Description of masters with TSIG, allow-query and allow-transfer options in catalog zones. [RT #42692] 4389. [test] Rewritten test suite for catalog zones. [RT #42676] 4388. [func] Support for master entries with TSIG keys in catalog zones. [RT #42577] 4387. [bug] Change 4336 was not complete leading to SERVFAIL being return as NS records expired. [RT #42683] 4386. [bug] Remove shadowed overmem function/variable. [RT #42706] 4385. [func] Add support for allow-query and allow-transfer ACLs to catalog zones. [RT #42578] 4384. [bug] Change 4256 accidentally disabled logging of the rndc command. [RT #42654] 4383. [bug] Correct spelling error in stats channel description of "EDNS client subnet option received". [RT #42633] 4382. [bug] rndc {addzone,modzone,delzone,showzone} should all compare the zone name using a canonical format. [RT #42630] 4381. [bug] Missing "zone-directory" option in catalog zone definition caused BIND to crash. [RT #42579] --- 9.11.0a3 released --- 4380. [experimental] Added a "zone-directory" option to "catalog-zones" syntax, allowing local masterfiles for slaves that are provisioned by catalog zones to be stored in a directory other than the server's working directory. [RT #42527] 4379. [bug] An INSIST could be triggered if a zone contains RRSIG records with expiry fields that loop using serial number arithmetic. [RT #40571] 4378. [contrib] #include for strlcat in zone2ldap.c. [RT #42525] 4377. [bug] Don't reuse zero TTL responses beyond the current client set (excludes ANY/SIG/RRSIG queries). [RT #42142] 4376. [experimental] Added support for Catalog Zones, a new method for provisioning secondary servers in which a list of zones to be served is stored in a DNS zone and can be propagated to slaves via AXFR/IXFR. [RT #41581] 4375. [func] Add support for automatic reallocation of isc_buffer to isc_buffer_put* functions. [RT #42394] 4374. [bug] Use SAVE/RESTORE macros in query.c to reduce the probability of reference counting errors as seen in 4365. [RT #42405] 4373. [bug] Address undefined behavior in getaddrinfo. [RT #42479] 4372. [bug] Address undefined behavior in libt_api. [RT #42480] 4371. [func] New "minimal-any" option reduces the size of UDP responses for qtype ANY by returning a single arbitrarily selected RRset instead of all RRsets. Thanks to Tony Finch. [RT #41615] 4370. [bug] Address python3 compatibility issues with RNDC module. [RT #42499] [RT #42506] --- 9.11.0a2 released --- 4369. [bug] Fix 'make' and 'make install' out-of-tree python support. [RT #42484] 4368. [bug] Fix a crash when calling "rndc stats" on some Windows builds because some Visual Studio compilers generated crashing code for the "%z" printf() format specifier. [RT #42380] 4367. [bug] Remove unnecessary assignment of loadtime in zone_touched. [RT #42440] 4366. [bug] Address race condition when updating rbtnode bit fields. [RT #42379] 4365. [bug] Address zone reference counting errors involving nxdomain-redirect. [RT #42258] 4364. [port] freebsd: add -Wl,-E to loader flags [RT #41690] 4363. [port] win32: Disable explicit triggering UAC when running BINDInstall. 4362. [func] Changed rndc reconfig behavior so that newly added zones are loaded asynchronously and the loading does not block the server. [RT #41934] 4361. [cleanup] Where supported, file modification times returned by isc_file_getmodtime() are now accurate to the nanosecond. [RT #41968] 4360. [bug] Silence spurious 'bad key type' message when there is a existing TSIG key. [RT #42195] 4359. [bug] Inherited 'also-notify' lists were not being checked by named-checkconf. [RT #42174] 4358. [test] Added American Fuzzy Lop harness that allows feeding fuzzed packets into BIND. [RT #41723] 4357. [func] Add the python RNDC module. [RT #42093] 4356. [func] Add the ability to specify whether to wait for nameserver addresses to be looked up or not to RPZ with a new modifying directive 'nsip-wait-recurse'. [RT #35009] 4355. [func] "pkcs11-list" now displays the extractability attribute of private or secret keys stored in an HSM, as either "true", "false", or "never" Thanks to Daniel Stirnimann. [RT #36557] 4354. [bug] Check that the received HMAC length matches the expected length prior to check the contents on the control channel. This prevents a OOB read error. This was reported by Lian Yihan, . [RT #42215] 4353. [cleanup] Update PKCS#11 header files. [RT #42175] 4352. [cleanup] The ISC DNSSEC Lookaside Validation (DLV) service is scheduled to be disabled in 2017. A warning is now logged when named is configured to use it, either explicitly or via "dnssec-lookaside auto;" [RT #42207] 4351. [bug] 'dig +noignore' didn't work. [RT #42273] 4350. [contrib] Declare result in dlz_filesystem_dynamic.c. 4349. [contrib] kasp2policy: A python script to create a DNSSEC policy file from an OpenDNSSEC KASP XML file. 4348. [func] dnssec-keymgr: A new python-based DNSSEC key management utility, which reads a policy definition file and can create or update DNSSEC keys as needed to ensure that a zone's keys match policy, roll over correctly on schedule, etc. Thanks to Sebastian Castro for assistance in development. [RT #39211] 4347. [port] Corrected a build error on x86_64 Solaris. [RT #42150] 4346. [bug] Fixed a regression introduced in change #4337 which caused signed domains with revoked KSKs to fail validation. [RT #42147] 4345. [contrib] perftcpdns mishandled the return values from clock_nanosleep. [RT #42131] 4344. [port] Address openssl version differences. [RT #42059] 4343. [bug] dns_dnssec_syncupdate mis-declared in . [RT #42090] 4342. [bug] 'rndc flushtree' could fail to clean the tree if there wasn't a node at the specified name. [RT #41846] --- 9.11.0a1 released --- 4341. [bug] Correct the handling of ECS options with address family 0. [RT #41377] 4340. [performance] Implement adaptive read-write locks, reducing the overhead of locks that are only held briefly. [RT #37329] 4339. [test] Use "mdig" to test pipelined queries. [RT #41929] 4338. [bug] Reimplement change 4324 as it wasn't properly doing all the required book keeping. [RT #41941] 4337. [bug] The previous change exposed a latent flaw in key refresh queries for managed-keys when a cached DNSKEY had TTL 0. [RT #41986] 4336. [bug] Don't emit records with zero ttl unless the records were learnt with a zero ttl. [RT #41687] 4335. [bug] zone->view could be detached too early. [RT #41942] 4334. [func] 'named -V' now reports zlib version. [RT #41913] 4333. [maint] L.ROOT-SERVERS.NET is now 199.7.83.42 and 2001:500:9f::42. 4332. [placeholder] 4331. [func] When loading managed signed zones detect if the RRSIG's inception time is in the future and regenerate the RRSIG immediately. [RT #41808] 4330. [protocol] Identify the PAD option as "PAD" when printing out a message. 4329. [func] Warn about a common misconfiguration when forwarding RFC 1918 zones. [RT #41441] 4328. [performance] Add dns_name_fromwire() benchmark test. [RT #41694] 4327. [func] Log query and depth counters during fetches when querytrace (./configure --enable-querytrace) is enabled (helps in diagnosing). [RT #41787] 4326. [protocol] Add support for AVC. [RT #41819] 4325. [func] Add a line to "rndc status" indicating the hostname and operating system details. [RT #41610] 4324. [bug] When deleting records from a zone database, interior nodes could be left empty but not deleted, damaging search performance afterward. [RT #40997] 4323. [bug] Improve HTTP header processing on statschannel. [RT #41674] 4322. [security] Duplicate EDNS COOKIE options in a response could trigger an assertion failure. (CVE-2016-2088) [RT #41809] 4321. [bug] Zones using mapped files containing out-of-zone data could return SERVFAIL instead of the expected NODATA or NXDOMAIN results. [RT #41596] 4320. [bug] Insufficient memory allocation when handling "none" ACL could cause an assertion failure in named when parsing ACL configuration. [RT #41745] 4319. [security] Fix resolver assertion failure due to improper DNAME handling when parsing fetch reply messages. (CVE-2016-1286) [RT #41753] 4318. [security] Malformed control messages can trigger assertions in named and rndc. (CVE-2016-1285) [RT #41666] 4317. [bug] Age all unused servers on fetch timeout. [RT #41597] 4316. [func] Add option to tools to print RRs in unknown presentation format [RT #41595]. 4315. [bug] Check that configured view class isn't a meta class. [RT #41572]. 4314. [contrib] Added 'dnsperf-2.1.0.0-1', a set of performance testing tools provided by Nominum, Inc. 4313. [bug] Handle ns_client_replace failures in test mode. [RT #41190] 4312. [bug] dig's unknown DNS and EDNS flags (MBZ value) logging was not consistent. [RT #41600] 4311. [bug] Prevent "rndc delzone" from being used on response-policy zones. [RT #41593] 4310. [performance] Use __builtin_expect() where available to annotate conditions with known behavior. [RT #41411] 4309. [cleanup] Remove the spurious "none" filename from log messages when processing built-in configuration. [RT #41594] 4308. [func] Added operating system details to "named -V" output. [RT #41452] 4307. [bug] "dig +subnet" and "mdig +subnet" could send incorrectly-formatted Client Subnet options if the prefix length was not divisible by 8. Also fixed a memory leak in "mdig". [RT #45178] 4306. [maint] Added a PKCS#11 openssl patch supporting version 1.0.2f [RT #38312] 4305. [bug] dnssec-signzone was not removing unnecessary rrsigs from the zone's apex. [RT #41483] 4304. [port] xfer system test failed as 'tail -n +value' is not portable. [RT #41315] 4303. [bug] "dig +subnet" was unable to send a prefix length of zero, as it was incorrectly changed to 32 for v4 prefixes or 128 for v6 prefixes. In addition to fixing this, "dig +subnet=0" has been added as a short form for 0.0.0.0/0. The same changes have also been made in "mdig". [RT #41553] 4302. [port] win32: fixed a build error in VS 2015. [RT #41426] 4301. [bug] dnssec-settime -p [DP]sync was not working. [RT #41534] 4300. [bug] A flag could be set in the wrong field when setting up non-recursive queries; this could cause the SERVFAIL cache to cache responses it shouldn't. New querytrace logging has been added which identified this error. [RT #41155] 4299. [bug] Check that exactly totallen bytes are read when reading a RRset from raw files in both single read and incremental modes. [RT #41402] 4298. [bug] dns_rpz_add errors in loadzone were not being propagated up the call stack. [RT #41425] 4297. [test] Ensure delegations in RPZ zones fail robustly. [RT #41518] 4296. [bug] TCP packet sizes were calculated incorrectly in the stats channel; they could be counted in the wrong histogram bucket. [RT #40587] 4295. [bug] An unchecked result in dns_message_pseudosectiontotext() could allow incorrect text formatting of EDNS EXPIRE options. [RT #41437] 4294. [bug] Fixed a regression in which "rndc stop -p" failed to print the PID. [RT #41513] 4293. [bug] Address memory leak on priming query creation failure. [RT #41512] 4292. [placeholder] 4291. [cleanup] Added a required include to dns/forward.h. [RT #41474] 4290. [func] The timers returned by the statistics channel (indicating current time, server boot time, and most recent reconfiguration time) are now reported with millisecond accuracy. [RT #40082] 4289. [bug] The server could crash due to memory being used after it was freed if a zone transfer timed out. [RT #41297] 4288. [bug] Fixed a regression in resolver.c:possibly_mark() which caused known-bogus servers to be queried anyway. [RT #41321] 4287. [bug] Silence an overly noisy log message when message parsing fails. [RT #41374] 4286. [security] render_ecs errors were mishandled when printing out a OPT record resulting in a assertion failure. (CVE-2015-8705) [RT #41397] 4285. [security] Specific APL data could trigger a INSIST. (CVE-2015-8704) [RT #41396] 4284. [bug] Some GeoIP options were incorrectly documented using abbreviated forms which were not accepted by named. The code has been updated to allow both long and abbreviated forms. [RT #41381] 4283. [bug] OPENSSL_config is no longer re-callable. [RT #41348] 4282. [func] 'dig +[no]mapped' determine whether the use of mapped IPv4 addresses over IPv6 is permitted or not. The default is +mapped. [RT #41307] 4281. [bug] Teach dns_message_totext about BADCOOKIE. [RT #41257] 4280. [performance] Use optimal message sizes to improve compression in AXFRs. This reduces network traffic. [RT #40996] 4279. [test] Don't use fixed ports when unit testing. [RT #41194] 4278. [bug] 'delv +short +[no]split[=##]' didn't work as expected. [RT #41238] 4277. [performance] Improve performance of the RBT, the central zone datastructure: The aux hashtable was improved, hash function was updated to perform more uniform mapping, uppernode was added to dns_rbtnode, and other cleanups and performance improvements were made. [RT #41165] 4276. [protocol] Add support for SMIMEA. [RT #40513] 4275. [performance] Lazily initialize dns_compress->table only when compression is enabled. [RT #41189] 4274. [performance] Speed up typemap processing from text. [RT #41196] 4273. [bug] Only call dns_test_begin() and dns_test_end() once each in nsec3_test as it fails with GOST if called multiple times. 4272. [bug] dig: the +norrcomments option didn't work with +multi. [RT #41234] 4271. [test] Unit tests could deadlock in isc__taskmgr_pause(). [RT #41235] 4270. [security] Update allowed OpenSSL versions as named is potentially vulnerable to CVE-2015-3193. 4269. [bug] Zones using "map" format master files currently don't work as policy zones. This limitation has now been documented; attempting to use such zones in "response-policy" statements is now a configuration error. [RT #38321] 4268. [func] "rndc status" now reports the path to the configuration file. [RT #36470] 4267. [test] Check sdlz error handling. [RT #41142] 4266. [placeholder] 4265. [bug] Address unchecked isc_mem_get calls. [RT #41187] 4264. [bug] Check const of strchr/strrchr assignments match argument's const status. [RT #41150] 4263. [contrib] Address compiler warnings in mysqldyn module. [RT #41130] 4262. [bug] Fixed a bug in epoll socket code that caused sockets to not be registered for ready notification in some cases, causing named to not read from or write to them, resulting in what appear to the user as blocked connections. [RT #41067] 4261. [maint] H.ROOT-SERVERS.NET is 198.97.190.53 and 2001:500:1::53. [RT #40556] 4260. [security] Insufficient testing when parsing a message allowed records with an incorrect class to be be accepted, triggering a REQUIRE failure when those records were subsequently cached. (CVE-2015-8000) [RT #40987] 4259. [func] Add an option for non-destructive control channel access using a "read-only" clause. In such cases, a restricted set of rndc commands are allowed for querying information from named. [RT #40498] 4258. [bug] Limit rndc query message sizes to 32 KiB. This should not break any legitimate rndc commands, but will prevent a rogue rndc query from allocating too much memory. [RT #41073] 4257. [cleanup] Python scripts reported incorrect version. [RT #41080] 4256. [bug] Allow rndc command arguments to be quoted so as to allow spaces. [RT #36665] 4255. [performance] Add 'message-compression' option to disable DNS compression in responses. [RT #40726] 4254. [bug] Address missing lock when getting zone's serial. [RT #41072] 4253. [security] Address fetch context reference count handling error on socket error. (CVE-2015-8461) [RT#40945] 4252. [func] Add support for automating the generation CDS and CDNSKEY rrsets to named and dnssec-signzone. [RT #40424] 4251. [bug] NTAs were deleted when the server was reconfigured or reloaded. [RT #41058] 4250. [func] Log the TSIG key in use during inbound zone transfers. [RT #41075] 4249. [func] Improve error reporting of TSIG / SIG(0) records in the wrong location. [RT #41030] 4248. [performance] Add an isc_atomic_storeq() function, use it in stats counters to improve performance. [RT #39972] [RT #39979] 4247. [port] Require both HAVE_JSON and JSON_C_VERSION to be defined to report json library version. [RT #41045] 4246. [test] Ensure the statschannel system test runs when BIND is not built with libjson. [RT #40944] 4245. [placeholder] 4244. [bug] The parser was not reporting that use-ixfr is obsolete. [RT #41010] 4243. [func] Improved stats reporting from Timothe Litt. [RT #38941] 4242. [bug] Replace the client if not already replaced when prefetching. [RT #41001] 4241. [doc] Improved the TSIG, TKEY, and SIG(0) sections in the ARM. [RT #40955] 4240. [port] Fix LibreSSL compatibility. [RT #40977] 4239. [func] Changed default servfail-ttl value to 1 second from 10. Also, the maximum value is now 30 instead of 300. [RT #37556] 4238. [bug] Don't send to servers on net zero (0.0.0.0/8). [RT #40947] 4237. [doc] Upgraded documentation toolchain to use DocBook 5 and dblatex. [RT #40766] 4236. [performance] On machines with 2 or more processors (CPU), the default value for the number of UDP listeners has been changed to the number of detected processors minus one. [RT #40761] 4235. [func] Added support in named for "dnstap", a fast method of capturing and logging DNS traffic, and a new command "dnstap-read" to read a dnstap log file. Use "configure --enable-dnstap" to enable this feature (note that this requires libprotobuf-c and libfstrm). See the ARM for configuration details. Thanks to Robert Edmonds of Farsight Security. [RT #40211] 4234. [func] Add deflate compression in statistics channel HTTP server. [RT #40861] 4233. [test] Add tests for CDS and CDNSKEY with delegation-only. [RT #40597] 4232. [contrib] Address unchecked memory allocation calls in query-loc and zone2ldap. [RT #40789] 4231. [contrib] Address unchecked calloc call in dlz_mysqldyn_mod.c. [RT #40840] 4230. [contrib] dlz_wildcard_dynamic.c:dlz_create could return a uninitialized result. [RT #40839] 4229. [bug] A variable could be used uninitialized in dns_update_signaturesinc. [RT #40784] 4228. [bug] Address race condition in dns_client_destroyrestrans. [RT #40605] 4227. [bug] Silence static analysis warnings. [RT #40828] 4226. [bug] Address a theoretical shutdown race in zone.c:notify_send_queue(). [RT #38958] 4225. [port] freebsd/openbsd: Use '${CC} -shared' for building shared libraries. [RT #39557] 4224. [func] Added support for "dyndb", a new interface for loading zone data from an external database, developed by Red Hat for the FreeIPA project. DynDB drivers fully implement the BIND database API, and are capable of significantly better performance and functionality than DLZ drivers, while taking advantage of advanced database features not available in BIND such as multi-master replication. Thanks to Adam Tkac and Petr Spacek of Red Hat. [RT #35271] 4223. [func] Add support for setting max-cache-size to percentage of available physical memory, set default to 90%. [RT #38442] 4222. [func] Bias IPv6 servers when selecting the next server to query. [RT #40836] 4221. [bug] Resource leak on DNS_R_NXDOMAIN in fctx_create. [RT #40583] 4220. [doc] Improve documentation for zone-statistics. [RT #36955] 4219. [bug] Set event->result to ISC_R_WOULDBLOCK on EWOULDBLOCK, EGAIN when these soft error are not retried for isc_socket_send*(). 4218. [bug] Potential null pointer dereference on out of memory if mmap is not supported. [RT #40777] 4217. [protocol] Add support for CSYNC. [RT #40532] 4216. [cleanup] Silence static analysis warnings. [RT #40649] 4215. [bug] nsupdate: skip to next request on GSSTKEY create failure. [RT #40685] 4214. [protocol] Add support for TALINK. [RT #40544] 4213. [bug] Don't reuse a cache across multiple classes. [RT #40205] 4212. [func] Re-query if we get a bad client cookie returned over UDP. [RT #40748] 4211. [bug] Ensure that lwresd gets at least one task to work with if enabled. [RT #40652] 4210. [cleanup] Silence use after free false positive. [RT #40743] 4209. [bug] Address resource leaks in dlz modules. [RT #40654] 4208. [bug] Address null pointer dereferences on out of memory. [RT #40764] 4207. [bug] Handle class mismatches with raw zone files. [RT #40746] 4206. [bug] contrib: fixed a possible NULL dereference in DLZ wildcard module. [RT #40745] 4205. [bug] 'named-checkconf -p' could include unwanted spaces when printing tuples with unset optional fields. [RT #40731] 4204. [bug] 'dig +trace' failed to lookup the correct type if the initial root NS query was retried. [RT #40296] 4203. [test] The rrchecker system test now tests conversion to and from unknown-type format. [RT #40584] 4202. [bug] isccc_cc_fromwire() could return an incorrect result. [RT #40614] 4201. [func] The default preferred-glue is now the address record type of the transport the query was received over. [RT #40468] 4200. [cleanup] win32: update BINDinstall to be BIND release independent. [RT #38915] 4199. [protocol] Add support for NINFO, RKEY, SINK, TA. [RT #40545] [RT #40547] [RT #40561] [RT #40563] 4198. [placeholder] 4197. [bug] 'named-checkconf -z' didn't handle 'in-view' clauses. [RT #40603] 4196. [doc] Improve how "enum + other" types are documented. [RT #40608] 4195. [bug] 'max-zone-ttl unlimited;' was broken. [RT #40608] 4194. [bug] named-checkconf -p failed to properly print a port range. [RT #40634] 4193. [bug] Handle broken servers that return BADVERS incorrectly. [RT #40427] 4192. [bug] The default rrset-order of random was not always being applied. [RT #40456] 4191. [protocol] Accept DNS-SD non LDH PTR records in reverse zones as per RFC 6763. [RT #37889] 4190. [protocol] Accept Active Directory gc._msdcs. name as valid with check-names. still needs to be LDH. [RT #40399] 4189. [cleanup] Don't exit on overly long tokens in named.conf. [RT #40418] 4188. [bug] Support HTTP/1.0 client properly on the statistics channel. [RT #40261] 4187. [func] When any RR type implementation doesn't implement totext() for the RDATA's wire representation and returns ISC_R_NOTIMPLEMENTED, such RDATA is now printed in unknown presentation format (RFC 3597). RR types affected include LOC(29) and APL(42). [RT #40317]. 4186. [bug] Fixed an RPZ bug where a QNAME would be matched against a policy RR with wildcard owner name (trigger) where the QNAME was the wildcard owner name's parent. For example, the bug caused a query with QNAME "example.com" to match a policy RR with "*.example.com" as trigger. [RT #40357] 4185. [bug] Fixed an RPZ bug where a policy RR with wildcard owner name (trigger) would prevent another policy RR with its parent owner name from being loaded. For example, the bug caused a policy RR with trigger "example.com" to not have any effect when a previous policy RR with trigger "*.example.com" existed in that RPZ zone. [RT #40357] 4184. [bug] Fixed a possible memory leak in name compression when rendering long messages. (Also, improved wire_test for testing such messages.) [RT #40375] 4183. [cleanup] Use timing-safe memory comparisons in cryptographic code. Also, the timing-safe comparison functions have been renamed to avoid possible confusion with memcmp(). Thanks to Loganaden Velvindron of AFRINIC. [RT #40148] 4182. [cleanup] Use mnemonics for RR class and type comparisons. [RT #40297] 4181. [bug] Queued notify messages could be dequeued from the wrong rate limiter queue. [RT #40350] 4180. [bug] Error responses in pipelined queries could cause a crash in client.c. [RT #40289] 4179. [bug] Fix double frees in getaddrinfo() in libirs. [RT #40209] 4178. [bug] Fix assertion failure in parsing UNSPEC(103) RR from text. [RT #40274] 4177. [bug] Fix assertion failure in parsing NSAP records from text. [RT #40285] 4176. [bug] Address race issues with lwresd. [RT #40284] 4175. [bug] TKEY with GSS-API keys needed bigger buffers. [RT #40333] 4174. [bug] "dnssec-coverage -r" didn't handle time unit suffixes correctly. [RT #38444] 4173. [bug] dig +sigchase was not properly matching the trusted key. [RT #40188] 4172. [bug] Named / named-checkconf didn't handle a view of CLASS0. [RT #40265] 4171. [bug] Fixed incorrect class checks in TSIG RR implementation. [RT #40287] 4170. [security] An incorrect boundary check in the OPENPGPKEY rdatatype could trigger an assertion failure. (CVE-2015-5986) [RT #40286] 4169. [test] Added a 'wire_test -d' option to read input as raw binary data, for use as a fuzzing harness. [RT #40312] 4168. [security] A buffer accounting error could trigger an assertion failure when parsing certain malformed DNSSEC keys. (CVE-2015-5722) [RT #40212] 4167. [func] Update rndc's usage output to include recently added commands. Thanks to Tony Finch for submitting a patch. [RT #40010] 4166. [func] Print informative output from rndc showzone when allow-new-zones is not enabled for a view. Thanks to Tony Finch for submitting a patch. [RT #40009] 4165. [security] A failure to reset a value to NULL in tkey.c could result in an assertion failure. (CVE-2015-5477) [RT #40046] 4164. [bug] Don't rename slave files and journals on out of memory. [RT #40033] 4163. [bug] Address compiler warnings. [RT #40024] 4162. [bug] httpdmgr->flags was not being initialized. [RT #40017] 4161. [test] Add JSON test for traffic size stats; also test for consistency between "rndc stats" and the XML and JSON statistics channel contents. [RT #38700] 4160. [placeholder] 4159. [cleanup] Alphabetize dig's help output. [RT #39966] 4158. [placeholder] 4157. [placeholder] 4156. [func] Added statistics counters to track the sizes of incoming queries and outgoing responses in histogram buckets, as specified in RSSAC002. [RT #39049] 4155. [func] Allow RPZ rewrite logging to be configured on a per-zone basis using a newly introduced log clause in the response-policy option. [RT #39754] 4154. [bug] A OPT record should be included with the FORMERR response when there is a malformed EDNS option. [RT #39647] 4153. [bug] Dig should zero non significant +subnet bits. Check that non significant ECS bits are zero on receipt. [RT #39647] 4152. [func] Implement DNS COOKIE option. This replaces the experimental SIT option of BIND 9.10. The following named.conf directives are available: send-cookie, cookie-secret, cookie-algorithm, nocookie-udp-size and require-server-cookie. The following dig options are available: +[no]cookie[=value] and +[no]badcookie. [RT #39928] 4151. [bug] 'rndc flush' could cause a deadlock. [RT #39835] 4150. [bug] win32: listen-on-v6 { any; }; was not working. Apply minimal fix. [RT #39667] 4149. [bug] Fixed a race condition in the getaddrinfo() implementation in libirs, which caused the delv utility to crash with an assertion failure when using the '@server' syntax with a hostname argument. [RT #39899] 4148. [bug] Fix a bug when printing zone names with '/' character in XML and JSON statistics output. [RT #39873] 4147. [bug] Filter-aaaa / filter-aaaa-on-v4 / filter-aaaa-on-v6 was returning referrals rather than nodata responses when the AAAA records were filtered. [RT #39843] 4146. [bug] Address reference leak that could prevent a clean shutdown. [RT #37125] 4145. [bug] Not all unassociated adb entries where being printed. [RT #37125] 4144. [func] Add statistics counters for nxdomain redirections. [RT #39790] 4143. [placeholder] 4142. [bug] rndc addzone with view specified saved NZF config that could not be read back by named. This has now been fixed. [RT #39845] 4141. [bug] A formatting bug caused rndc zonestatus to print negative numbers for large serial values. This has now been fixed. [RT #39854] 4140. [cleanup] Remove redundant nzf_remove() call during delzone. [RT #39844] 4139. [doc] Fix rpz-client-ip documentation. [RT #39783] 4138. [security] An uninitialized value in validator.c could result in an assertion failure. (CVE-2015-4620) [RT #39795] 4137. [bug] Make rndc reconfig report configuration errors the same way rndc reload does. [RT #39635] 4136. [bug] Stale statistics counters with the leading '#' prefix (such as #NXDOMAIN) were not being updated correctly. This has been fixed. [RT #39141] 4135. [cleanup] Log expired NTA at startup. [RT #39680] 4134. [cleanup] Include client-ip rules when logging the number of RPZ rules of each type. [RT #39670] 4133. [port] Update how various json libraries are handled. [RT #39646] 4132. [cleanup] dig: added +rd as a synonym for +recurse, added +class as an unabbreviated alternative to +cl. [RT #39686] 4131. [bug] Addressed further problems with reloading RPZ zones. [RT #39649] 4130. [bug] The compatibility shim for *printf() misprinted some large numbers. [RT #39586] 4129. [port] Address API changes in OpenSSL 1.1.0. [RT #39532] 4128. [bug] Address issues raised by Coverity 7.6. [RT #39537] 4127. [protocol] CDS and CDNSKEY need to be signed by the key signing key as per RFC 7344, Section 4.1. [RT #37215] 4126. [bug] Addressed a regression introduced in change #4121. [RT #39611] 4125. [test] Added tests for dig, renamed delv test to digdelv. [RT #39490] 4124. [func] Log errors or warnings encountered when parsing the internal default configuration. Clarify the logging of errors and warnings encountered in rndc addzone or modzone parameters. [RT #39440] 4123. [port] Added %z (size_t) format options to the portable internal printf/sprintf implementation. [RT #39586] 4122. [bug] The server could match a shorter prefix than what was available in CLIENT-IP policy triggers, and so, an unexpected action could be taken. This has been corrected. [RT #39481] 4121. [bug] On servers with one or more policy zones configured as slaves, if a policy zone updated during regular operation (rather than at startup) using a full zone reload, such as via AXFR, a bug could allow the RPZ summary data to fall out of sync, potentially leading to an assertion failure in rpz.c when further incremental updates were made to the zone, such as via IXFR. [RT #39567] 4120. [bug] A bug in RPZ could cause the server to crash if policy zones were updated while recursion was pending for RPZ processing of an active query. [RT #39415] 4119. [test] Allow dig to set the message opcode. [RT #39550] 4118. [bug] Teach isc-config.sh about irs. [RT #39213] 4117. [protocol] Add EMPTY.AS112.ARPA as per RFC 7534. 4116. [bug] Fix a bug in RPZ that could cause some policy zones that did not specifically require recursion to be treated as if they did; consequently, setting qname-wait-recurse no; was sometimes ineffective. [RT #39229] 4115. [func] "rndc -r" now prints the result code (e.g., ISC_R_SUCCESS, ISC_R_TIMEOUT, etc) after running the requested command. [RT #38913] 4114. [bug] Fix a regression in radix tree implementation introduced by ECS code. This bug was never released, but it was reported by a user testing master. [RT #38983] 4113. [test] Check for Net::DNS is some system test prerequisites. [RT #39369] 4112. [bug] Named failed to load when "root-delegation-only" was used without a list of domains to exclude. [RT #39380] 4111. [doc] Alphabetize rndc man page. [RT #39360] 4110. [bug] Address memory leaks / null pointer dereferences on out of memory. [RT #39310] 4109. [port] linux: support reading the local port range from net.ipv4.ip_local_port_range. [RT # 39379] 4108. [func] An additional NXDOMAIN redirect method (option "nxdomain-redirect") has been added, allowing redirection to a specified DNS namespace instead of a single redirect zone. [RT #37989] 4107. [bug] Address potential deadlock when updating zone content. [RT #39269] 4106. [port] Improve readline support. [RT #38938] 4105. [port] Misc fixes for Microsoft Visual Studio 2015 CTP6 in 64 bit mode. [RT #39308] 4104. [bug] Address uninitialized elements. [RT #39252] 4103. [port] Misc fixes for Microsoft Visual Studio 2015 CTP6. [RT #39267] 4102. [bug] Fix a use after free bug introduced in change #4094. [RT #39281] 4101. [bug] dig: the +split and +rrcomments options didn't work with +short. [RT #39291] 4100. [bug] Inherited owernames on the line immediately following a $INCLUDE were not working. [RT #39268] 4099. [port] clang: make unknown commandline options hard errors when determining what options are supported. [RT #39273] 4098. [bug] Address use-after-free issue when using a predecessor key with dnssec-settime. [RT #39272] 4097. [func] Add additional logging about xfrin transfer status. [RT #39170] 4096. [bug] Fix a use after free of query->sendevent. [RT #39132] 4095. [bug] zone->options2 was not being properly initialized. [RT #39228] 4094. [bug] A race during shutdown or reconfiguration could cause an assertion in mem.c. [RT #38979] 4093. [func] Dig now learns the SIT value from truncated responses when it retries over TCP. [RT #39047] 4092. [bug] 'in-view' didn't work for zones beneath a empty zone. [RT #39173] 4091. [cleanup] Some cleanups in isc mem code. [RT #38896] 4090. [bug] Fix a crash while parsing malformed CAA RRs in presentation format, i.e., from text such as from master files. Thanks to John Van de Meulebrouck Brendgard for discovering and reporting this problem. [RT #39003] 4089. [bug] Send notifies immediately for slave zones during startup. [RT #38843] 4088. [port] Fixed errors when building with libressl. [RT #38899] 4087. [bug] Fix a crash due to use-after-free due to sequencing of tasks actions. [RT #38495] 4086. [bug] Fix out-of-srcdir build with native pkcs11. [RT #38831] 4085. [bug] ISC_PLATFORM_HAVEXADDQ could be inconsistently set. [RT #38828] 4084. [bug] Fix a possible race in updating stats counters. [RT #38826] 4083. [cleanup] Print the number of CPUs and UDP listeners consistently in the log and in "rndc status" output; indicate whether threads are supported in "named -V" output. [RT #38811] 4082. [bug] Incrementally sign large inline zone deltas. [RT #37927] 4081. [cleanup] Use dns_rdatalist_init consistently. [RT #38759] 4080. [func] Completed change #4022, adding a "lock-file" option to named.conf to override the default lock file, in addition to the "named -X " command line option. Setting the lock file to "none" using either method disables the check completely. [RT #37908] 4079. [func] Preserve the case of the owner name of records to the RRset level. [RT #37442] 4078. [bug] Handle the case where CMSG_SPACE(sizeof(int)) != CMSG_SPACE(sizeof(char)). [RT #38621] 4077. [test] Add static-stub regression test for DS NXDOMAIN return making the static stub disappear. [RT #38564] 4076. [bug] Named could crash on shutdown with outstanding reload / reconfig events. [RT #38622] 4075. [placeholder] 4074. [cleanup] Cleaned up more warnings from gcc -Wshadow. [RT #38708] 4073. [cleanup] Add libjson-c version number reporting to "named -V"; normalize version number formatting. [RT #38056] 4072. [func] Add a --enable-querytrace configure switch for very verbose query trace logging. (This option has a negative performance impact and should be used only for debugging.) [RT #37520] 4071. [cleanup] Initialize pthread mutex attrs just once, instead of doing it per mutex creation. [RT #38547] 4070. [bug] Fix a segfault in nslookup in a query such as "nslookup isc.org AMS.SNS-PB.ISC.ORG -all". [RT #38548] 4069. [doc] Reorganize options in the nsupdate man page. [RT #38515] 4068. [bug] Omit unknown serial number from JSON zone statistics. [RT #38604] 4067. [cleanup] Reduce noise from RRL when query logging is disabled. [RT #38648] 4066. [doc] Reorganize options in the dig man page. [RT #38516] 4065. [test] Additional RFC 5011 tests. [RT #38569] 4064. [contrib] dnssec-keyset.sh: Generates a specified number of DNSSEC keys with timing set to implement a pre-publication key rollover strategy. Thanks to Jeffry A. Spain. [RT #38459] 4063. [bug] Asynchronous zone loads were not handled correctly when the zone load was already in progress; this could trigger a crash in zt.c. [RT #37573] 4062. [bug] Fix an out-of-bounds read in RPZ code. If the read succeeded, it doesn't result in a bug during operation. If the read failed, named could segfault. [RT #38559] 4061. [bug] Handle timeout in legacy system test. [RT #38573] 4060. [bug] dns_rdata_freestruct could be called on a uninitialized structure when handling a error. [RT #38568] 4059. [bug] Addressed valgrind warnings. [RT #38549] 4058. [bug] UDP dispatches could use the wrong pseudorandom number generator context. [RT #38578] 4057. [bug] 'dnssec-dsfromkey -T 0' failed to add ttl field. [RT #38565] 4056. [bug] Expanded automatic testing of trust anchor management and fixed several small bugs including a memory leak and a possible loss of key state information. [RT #38458] 4055. [func] "rndc managed-keys" can be used to check status of trust anchors or to force keys to be refreshed, Also, the managed keys data file has easier-to-read comments. [RT #38458] 4054. [func] Added a new tool 'mdig', a lightweight clone of dig able to send multiple pipelined queries. [RT #38261] 4053. [security] Revoking a managed trust anchor and supplying an untrusted replacement could cause named to crash with an assertion failure. (CVE-2015-1349) [RT #38344] 4052. [bug] Fix a leak of query fetchlock. [RT #38454] 4051. [bug] Fix a leak of pthread_mutexattr_t. [RT #38454] 4050. [bug] RPZ could send spurious SERVFAILs in response to duplicate queries. [RT #38510] 4049. [bug] CDS and CDNSKEY had the wrong attributes. [RT #38491] 4048. [bug] adb hash table was not being grown. [RT #38470] 4047. [cleanup] "named -V" now reports the current running versions of OpenSSL and the libxml2 libraries, in addition to the versions that were in use at build time. 4046. [bug] Accounting of "total use" in memory context statistics was not correct. [RT #38370] 4045. [bug] Skip to next master on dns_request_createvia4 failure. [RT #25185] 4044. [bug] Change 3955 was not complete, resulting in an assertion failure if the timing was just right. [RT #38352] 4043. [func] "rndc modzone" can be used to modify the configuration of an existing zone, using similar syntax to "rndc addzone". [RT #37895] 4042. [bug] zone.c:iszonesecure was being called too late. [RT #38371] 4041. [func] TCP sockets can now be shared while connecting. (This will be used to enable client-side support of pipelined queries.) [RT #38231] 4040. [func] Added server-side support for pipelined TCP queries. Clients may continue sending queries via TCP while previous queries are being processed in parallel. (The new "keep-response-order" option allows clients to be specified for which the old behavior will still be used.) [RT #37821] 4039. [cleanup] Cleaned up warnings from gcc -Wshadow. [RT #37381] 4038. [bug] Add 'rpz' flag to node and use it to determine whether to call dns_rpz_delete. This should prevent unbalanced add / delete calls. [RT #36888] 4037. [bug] also-notify was ignoring the tsig key when checking for duplicates resulting in some expected notify messages not being sent. [RT #38369] 4036. [bug] Make call to open a temporary file name safe during NZF creation. [RT #38331] 4035. [bug] Close temporary and NZF FILE pointers before moving the former into the latter's place, as required on Windows. [RT #38332] 4034. [func] When added, negative trust anchors (NTA) are now saved to files (viewname.nta), in order to persist across restarts of the named server. [RT #37087] 4033. [bug] Missing out of memory check in request.c:req_send. [RT #38311] 4032. [bug] Built-in "empty" zones did not correctly inherit the "allow-transfer" ACL from the options or view. [RT #38310] 4031. [bug] named-checkconf -z failed to report a missing file with a hint zone. [RT #38294] 4030. [func] "rndc delzone" is now applicable to zones that were configured in named.conf, as well as zones that were added via "rndc addzone". (Note, however, that if named.conf is not also modified, the deleted zone will return when named is reloaded.) [RT #37887] 4029. [func] "rndc showzone" displays the current configuration of a specified zone. [RT #37887] 4028. [bug] $GENERATE with a zero step was not being caught as a error. A $GENERATE with a / but no step was not being caught as a error. [RT #38262] 4027. [port] Net::DNS 0.81 compatibility. [RT #38165] 4026. [bug] Fix RFC 3658 reference in dig +sigchase. [RT #38173] 4025. [port] bsdi: failed to build. [RT #38047] 4024. [bug] dns_rdata_opt_first, dns_rdata_opt_next, dns_rdata_opt_current, dns_rdata_txt_first, dns_rdata_txt_next and dns_rdata_txt_current were documented but not implemented. These have now been implemented. dns_rdata_spf_first, dns_rdata_spf_next and dns_rdata_spf_current were documented but not implemented. The prototypes for these functions have been removed. [RT #38068] 4023. [bug] win32: socket handling with explicit ports and invoking named with -4 was broken for some configurations. [RT #38068] 4022. [func] Stop multiple spawns of named by limiting number of processes to 1. This is done by using a lockfile and checking whether we can listen on any configured TCP interfaces. [RT #37908] 4021. [bug] Adjust max-recursion-queries to accommodate the need for more queries when the cache is empty. [RT #38104] 4020. [bug] Change 3736 broke nsupdate's SOA MNAME discovery resulting in updates being sent to the wrong server. [RT #37925] 4019. [func] If named is not configured to validate the answer then allow fallback to plain DNS on timeout even when we know the server supports EDNS. [RT #37978] 4018. [placeholder] 4017. [test] Add system test to check lookups to legacy servers with broken DNS behavior. [RT #37965] 4016. [bug] Fix a dig segfault due to bad linked list usage. [RT #37591] 4015. [bug] Nameservers that are skipped due to them being CNAMEs were not being logged. They are now logged to category 'cname' as per BIND 8. [RT #37935] 4014. [bug] When including a master file origin_changed was not being properly set leading to a potentially spurious 'inherited owner' warning. [RT #37919] 4013. [func] Add a new tcp-only option to server (config) / peer (struct) to use TCP transport to send queries (in place of UDP transport with a TCP fallback on truncated (TC set) response). [RT #37800] 4012. [cleanup] Check returned status of OpenSSL digest and HMAC functions when they return one. Note this applies only to FIPS capable OpenSSL libraries put in FIPS mode and MD5. [RT #37944] 4011. [bug] master's list port and dscp inheritance was not properly implemented. [RT #37792] 4010. [cleanup] Clear the prefetchable state when initiating a prefetch. [RT #37399] 4009. [func] delv: added a +tcp option. [RT #37855] 4008. [contrib] Updated zkt to latest version (1.1.3). [RT #37886] 4007. [doc] Remove acl forward reference restriction. [RT #37772] 4006. [security] A flaw in delegation handling could be exploited to put named into an infinite loop. This has been addressed by placing limits on the number of levels of recursion named will allow (default 7), and the number of iterative queries that it will send (default 50) before terminating a recursive query (CVE-2014-8500). The recursion depth limit is configured via the "max-recursion-depth" option, and the query limit via the "max-recursion-queries" option. [RT #37580] 4005. [func] The buffer used for returning text from rndc commands is now dynamically resizable, allowing arbitrarily large amounts of text to be sent back to the client. (Prior to this change, it was possible for the output of "rndc tsig-list" to be truncated.) [RT #37731] 4004. [bug] When delegations had AAAA glue but not A, a reference could be leaked causing an assertion failure on shutdown. [RT #37796] 4003. [security] When geoip-directory was reconfigured during named run-time, the previously loaded GeoIP data could remain, potentially causing wrong ACLs to be used or wrong results to be served based on geolocation (CVE-2014-8680). [RT #37720] 4002. [security] Lookups in GeoIP databases that were not loaded could cause an assertion failure (CVE-2014-8680). [RT #37679] 4001. [security] The caching of GeoIP lookups did not always handle address families correctly, potentially resulting in an assertion failure (CVE-2014-8680). [RT #37672] 4000. [bug] NXDOMAIN redirection incorrectly handled NXRRSET from the redirect zone. [RT #37722] 3999. [func] "mkeys" and "nzf" files are now named after their corresponding views, unless the view name contains characters that would be incompatible with use in a filename (i.e., slash, backslash, or capital letters). If a view name does contain these characters, the files will still be named using a cryptographic hash of the view name. Regardless of this, if a file using the old name format is found to exist, it will continue to be used. [RT #37704] 3998. [bug] isc_radix_search was returning matches that were too precise. [RT #37680] 3997. [protocol] Add OPENGPGKEY record. [RT# 37671] 3996. [bug] Address use after free on out of memory error in keyring_add. [RT #37639] 3995. [bug] receive_secure_serial holds the zone lock for too long. [RT #37626] 3994. [func] Dig now supports setting the last unassigned DNS header flag bit (dig +zflag). [RT #37421] 3993. [func] Dig now supports EDNS negotiation by default. (dig +[no]ednsnegotiation). Note: This is disabled by default in BIND 9.10 and enabled by default in BIND 9.11. [RT #37604] 3992. [func] DiG can now send queries without questions (dig +header-only). [RT #37599] 3991. [func] Add the ability to buffer logging output by specifying "buffered yes;" when defining a channel. [RT #26561] 3990. [test] Add tests for unknown DNSSEC algorithm handling. [RT #37541] 3989. [cleanup] Remove redundant dns_db_resigned calls. [RT #35748] 3988. [func] Allow the zone serial of a dynamically updatable zone to be updated via "rndc signing -serial". [RT #37404] 3987. [port] Handle future Visual Studio 14 incompatible changes. [RT #37380] 3986. [doc] Add the BIND version number to page footers in the ARM. [RT #37398] 3985. [doc] Describe how +ndots and +search interact in dig. [RT #37529] 3984. [func] Accept 256 byte long PINs in native PKCS#11 crypto. [RT #37410] 3983. [bug] Change #3940 was incomplete: negative trust anchors could be set to last up to a week, but the "nta-lifetime" and "nta-recheck" options were still limited to one day. [RT #37522] 3982. [doc] Include release notes in product documentation. [RT #37272] 3981. [bug] Cache DS/NXDOMAIN independently of other query types. [RT #37467] 3980. [bug] Improve --with-tuning=large by self tuning of SO_RCVBUF size. [RT #37187] 3979. [bug] Negative trust anchor fetches were not properly managed. [RT #37488] 3978. [test] Added a unit test for Diffie-Hellman key computation, completing change #3974. [RT #37477] 3977. [cleanup] "rndc secroots" reported a "not found" error when there were no negative trust anchors set. [RT #37506] 3976. [bug] When refreshing managed-key trust anchors, clear any cached trust so that they will always be revalidated with the current set of secure roots. [RT #37506] 3975. [bug] Don't populate or use the bad cache for queries that don't request or use recursion. [RT #37466] 3974. [bug] Handle DH_compute_key() failure correctly in openssldh_link.c. [RT #37477] 3973. [test] Added hooks for Google Performance Tools CPU profiler, including real-time/wall-clock profiling. Use "configure --with-gperftools-profiler" to enable. [RT #37339] 3972. [bug] Fix host's usage statement. [RT #37397] 3971. [bug] Reduce the cascading failures due to a bad $TTL line in named-checkconf / named-checkzone. [RT #37138] 3970. [contrib] Fixed a use after free bug in the SDB LDAP driver. [RT #37237] 3969. [test] Added 'delv' system test. [RT #36901] 3968. [bug] Silence spurious log messages when using 'named -[46]'. [RT #37308] 3967. [test] Add test for inlined signed zone in multiple views with different DNSKEY sets. [RT #35759] 3966. [bug] Missing dns_db_closeversion call in receive_secure_db. [RT #35746] 3965. [func] Log outgoing packets and improve packet logging to support logging the remote address. [RT #36624] 3964. [func] nsupdate now performs check-names processing. [RT #36266] 3963. [test] Added NXRRSET test cases to the "dlzexternal" system test. [RT #37344] 3962. [bug] 'dig +topdown +trace +sigchase' address unhandled error conditions. [RT #34663] 3961. [bug] Forwarding of SIG(0) signed UPDATE messages failed with BADSIG. [RT #37216] 3960. [bug] 'dig +sigchase' could loop forever. [RT #37220] 3959. [bug] Updates could be lost if they arrived immediately after a rndc thaw. [RT #37233] 3958. [bug] Detect when writeable files have multiple references in named.conf. [RT #37172] 3957. [bug] "dnssec-keygen -S" failed for ECCGOST, ECDSAP256SHA256 and ECDSAP384SHA384. [RT #37183] 3956. [func] Notify messages are now rate limited by notify-rate and startup-notify-rate instead of serial-query-rate. [RT #24454] 3955. [bug] Notify messages due to changes are no longer queued behind startup notify messages. [RT #24454] 3954. [bug] Unchecked mutex init in dlz_dlopen_driver.c [RT #37112] 3953. [bug] Don't escape semi-colon in TXT fields. [RT #37159] 3952. [bug] dns_name_fullcompare failed to set *nlabelsp when the two name pointers were the same. [RT #37176] 3951. [func] Add the ability to set yet-to-be-defined EDNS flags to dig (+ednsflags=#). [RT #37142] 3950. [port] Changed the bin/python Makefile to work around a bmake bug in FreeBSD 10 and NetBSD 6. [RT #36993] 3949. [experimental] Experimental support for draft-andrews-edns1 by sending EDNS(1) queries (define DRAFT_ANDREWS_EDNS1 when building). Add support for limiting the EDNS version advertised to servers: server { edns-version 0; }; Log the EDNS version received in the query log. [RT #35864] 3948. [port] solaris: RCVBUFSIZE was too large on Solaris with --with-tuning=large. [RT #37059] 3947. [cleanup] Set the executable bit on libraries when using libtool. [RT #36786] 3946. [cleanup] Improved "configure" search for a python interpreter. [RT #36992] 3945. [bug] Invalid wildcard expansions could be incorrectly accepted by the validator. [RT #37093] 3944. [test] Added a regression test for "server-id". [RT #37057] 3943. [func] SERVFAIL responses can now be cached for a limited time (configured by "servfail-ttl", default 10 seconds, limit 30). This can reduce the frequency of retries when an authoritative server is known to be failing, e.g., due to ongoing DNSSEC validation problems. [RT #21347] 3942. [bug] Wildcard responses from a optout range should be marked as insecure. [RT #37072] 3941. [doc] Include the BIND version number in the ARM. [RT #37067] 3940. [func] "rndc nta" now allows negative trust anchors to be set for up to one week. [RT #37069] 3939. [func] Improve UPDATE forwarding performance by allowing TCP connections to be shared. [RT #37039] 3938. [func] Added quotas to be used in recursive resolvers that are under high query load for names in zones whose authoritative servers are nonresponsive or are experiencing a denial of service attack. - "fetches-per-server" limits the number of simultaneous queries that can be sent to any single authoritative server. The configured value is a starting point; it is automatically adjusted downward if the server is partially or completely non-responsive. The algorithm used to adjust the quota can be configured via the "fetch-quota-params" option. - "fetches-per-zone" limits the number of simultaneous queries that can be sent for names within a single domain. (Note: Unlike "fetches-per-server", this value is not self-tuning.) - New stats counters have been added to count queries spilled due to these quotas. See the ARM for details of these options. [RT #37125] 3937. [func] Added some debug logging to better indicate the conditions causing SERVFAILs when resolving. [RT #35538] 3936. [func] Added authoritative support for the EDNS Client Subnet (ECS) option. ACLs can now include "ecs" elements which specify an address or network prefix; if an ECS option is included in a DNS query, then the address encoded in the option will be matched against "ecs" ACL elements. Also, if an ECS address is included in a query, then it will be used instead of the client source address when matching "geoip" ACL elements. This behavior can be overridden with "geoip-use-ecs no;". (Note: to enable "geoip" ACLs, use "configure --with-geoip". This requires libGeoIP version 1.5.0 or higher.) When "ecs" or "geoip" ACL elements are used to select a view for a query, the response will include an ECS option to indicate which client network the answer is valid for. (Thanks to Vincent Bernat.) [RT #36781] 3935. [bug] "geoip asnum" ACL elements would not match unless the full organization name was specified. They can now match against the AS number alone (e.g., AS1234). [RT #36945] 3934. [bug] Catch bad 'sit-secret' in named-checkconf. Improve sit-secret documentation. [RT #36980] 3933. [bug] Corrected the implementation of dns_rdata_casecompare() for the HIP rdata type. [RT #36911] 3932. [test] Improved named-checkconf tests. [RT #36911] 3931. [cleanup] Cleanup how dlz grammar is defined. [RT #36879] 3930. [bug] "rndc nta -r" could cause a server hang if the NTA was not found. [RT #36909] 3929. [bug] 'host -a' needed to clear idnoptions. [RT #36963] 3928. [test] Improve rndc system test. [RT #36898] 3927. [bug] dig: report PKCS#11 error codes correctly when compiled with --enable-native-pkcs11. [RT #36956] 3926. [doc] Added doc for geoip-directory. [RT #36877] 3925. [bug] DS lookup of RFC 1918 empty zones failed. [RT #36917] 3924. [bug] Improve 'rndc addzone' error reporting. [RT #35187] 3923. [bug] Sanity check the xml2-config output. [RT #22246] 3922. [bug] When resigning, dnssec-signzone was removing all signatures from delegation nodes. It now retains DS and (if applicable) NSEC signatures. [RT #36946] 3921. [bug] AD was inappropriately set on RPZ responses. [RT #36833] 3920. [doc] Added doc for masterfile-style. [RT #36823] 3919. [bug] dig: continue to next line if a address lookup fails in batch mode. [RT #36755] 3918. [doc] Update check-spf documentation. [RT #36910] 3917. [bug] dig, nslookup and host now continue on names that are too long after applying a search list elements. [RT #36892] 3916. [contrib] zone2sqlite checked wrong result code. Address compiler warnings. [RT #36931] 3915. [bug] Address a assertion if a route event arrived while shutting down. [RT #36887] 3914. [bug] Allow the URI target and CAA value fields to be zero length. [RT #36737] 3913. [bug] Address race issue in dispatch. [RT #36731] 3912. [bug] Address some unrecoverable lookup failures. [RT #36330] 3911. [func] Implement EDNS EXPIRE option client side, allowing a slave server to set the expiration timer correctly when transferring zone data from another slave server. [RT #35925] 3910. [bug] Fix races to free event during shutdown. [RT #36720] 3909. [bug] When computing the number of elements required for a acl count_acl_elements could have a short count leading to a assertion failure. Also zero out new acl elements in dns_acl_merge. [RT #36675] 3908. [bug] rndc now differentiates between a zone in multiple views and a zone that doesn't exist at all. [RT #36691] 3907. [cleanup] Alphabetize rndc help. [RT #36683] 3906. [protocol] Update URI record format to comply with draft-faltstrom-uri-08. [RT #36642] 3905. [bug] Address deadlock between view.c and adb.c. [RT #36341] 3904. [func] Add the RPZ SOA to the additional section. [RT36507] 3903. [bug] Improve the accuracy of DiG's reported round trip time. [RT 36611] 3902. [bug] liblwres wasn't handling link-local addresses in nameserver clauses in resolv.conf. [RT #36039] 3901. [protocol] Added support for CAA record type (RFC 6844). [RT #36625] 3900. [bug] Fix a crash in PostgreSQL DLZ driver. [RT #36637] 3899. [bug] "request-ixfr" is only applicable to slave and redirect zones. [RT #36608] 3898. [bug] Too small a buffer in tohexstr() calls in test code. [RT #36598] 3897. [bug] RPZ summary information was not properly being updated after a AXFR resulting in changes sometimes being ignored. [RT #35885] 3896. [bug] Address performance issues with DSCP code on some platforms. [RT #36534] 3895. [func] Add the ability to set the DSCP code point to dig. [RT #36546] 3894. [bug] Buffers in isc_print_vsnprintf were not properly initialized leading to potential overflows when printing out quad values. [RT #36505] 3893. [bug] Peer DSCP values could be returned without being set. [RT #36538] 3892. [bug] Setting '-t aaaa' in .digrc had unintended side effects. [RT #36452] 3891. [bug] Use ${INSTALL_SCRIPT} rather than ${INSTALL_PROGRAM} to install python programs. 3890. [bug] RRSIG sets that were not loaded in a single transaction at start up where not being correctly added to re-signing heaps. [RT #36302] 3889. [port] hurd: configure fixes as per: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=746540 3888. [func] 'rndc status' now reports the number of automatic zones. [RT #36015] 3887. [cleanup] Make all static symbols in rbtdb64 end in "64" so they are easier to use in a debugger. [RT #36373] 3886. [bug] rbtdb_write_header should use a once to initialize FILE_VERSION. [RT #36374] 3885. [port] Use 'open()' rather than 'file()' to open files in python. 3884. [protocol] Add CDS and CDNSKEY record types. [RT #36333] 3883. [placeholder] 3882. [func] By default, negative trust anchors will be tested periodically to see whether data below them can be validated, and if so, they will be allowed to expire early. The "rndc nta -force" option overrides this behavior. The default NTA lifetime and the recheck frequency can be configured by the "nta-lifetime" and "nta-recheck" options. [RT #36146] 3881. [bug] Address memory leak with UPDATE error handling. [RT #36303] 3880. [test] Update ans.pl to work with new TSIG support in Net::DNS; add additional Net::DNS version prerequisite checks. [RT #36327] 3879. [func] Add version printing option to various BIND utilities. [RT #10686] 3878. [bug] Using the incorrect filename for a DLZ module caused a segmentation fault on startup. [RT #36286] 3877. [bug] Inserting and deleting parent and child nodes in response policy zones could trigger an assertion failure. [RT #36272] 3876. [bug] Improve efficiency of DLZ redirect zones by suppressing unnecessary database lookups. [RT #35835] 3875. [cleanup] Clarify log message when unable to read private key files. [RT #24702] 3874. [test] Check that only "check-names master" is needed for updates to be accepted. 3873. [protocol] Only warn for SPF without TXT spf record. [RT #36210] 3872. [bug] Address issues found by static analysis. [RT #36209] 3871. [bug] Don't publish an activated key automatically before its publish time. [RT #35063] 3870. [func] Updated the random number generator used in the resolver to use the updated ChaCha based one (similar to OpenBSD's changes). Also moved the RNG to libisc and added unit tests for it. [RT #35942] 3869. [doc] Document that in-view zones cannot be used for response policy zones. [RT #35941] 3868. [bug] isc_mem_setwater incorrectly cleared hi_called potentially leaving over memory cleaner running. [RT #35270] 3867. [func] "rndc nta" can now be used to set a temporary negative trust anchor, which disables DNSSEC validation below a specified name for a specified period of time (not exceeding 24 hours). This can be used when validation for a domain is known to be failing due to a configuration error on the part of the domain owner rather than a spoofing attack. [RT #29358] 3866. [bug] Named could die on disk full in generate_session_key. [RT #36119] 3865. [test] Improved testability of the red-black tree implementation and added unit tests. [RT #35904] 3864. [bug] RPZ didn't work well when being used as forwarder. [RT #36060] 3863. [bug] The "E" flag was missing from the query log as a unintended side effect of code rearrangement to support EDNS EXPIRE. [RT #36117] 3862. [cleanup] Return immediately if we are not going to log the message in ns_client_dumpmessage. 3861. [security] Missing isc_buffer_availablelength check results in a REQUIRE assertion when printing out a packet (CVE-2014-3859). [RT #36078] 3860. [bug] ioctl(DP_POLL) array size needs to be determined at run time as it is limited to {OPEN_MAX}. [RT #35878] 3859. [placeholder] 3858. [bug] Disable GCC 4.9 "delete null pointer check". [RT #35968] 3857. [bug] Make it harder for a incorrect NOEDNS classification to be made. [RT #36020] 3856. [bug] Configuring libjson without also configuring libxml resulted in a REQUIRE assertion when retrieving statistics using json. [RT #36009] 3855. [bug] Limit smoothed round trip time aging to no more than once a second. [RT #32909] 3854. [cleanup] Report unrecognized options, if any, in the final configure summary. [RT #36014] 3853. [cleanup] Refactor dns_rdataslab_fromrdataset to separate out the handling of a rdataset with no records. [RT #35968] 3852. [func] Increase the default number of clients available for servicing lightweight resolver queries, and make them configurable via the "lwres-tasks" and "lwres-clients" options. (Thanks to Tomas Hozza.) [RT #35857] 3851. [func] Allow libseccomp based system-call filtering on Linux; use "configure --enable-seccomp" to turn it on. Thanks to Loganaden Velvindron of AFRINIC for the contribution. [RT #35347] 3850. [bug] Disabling forwarding could trigger a REQUIRE assertion. [RT #35979] 3849. [doc] Alphabetized dig's +options. [RT #35992] 3848. [bug] Adjust 'statistics-channels specified but not effective' error message to account for JSON support. [RT #36008] 3847. [bug] 'configure --with-dlz-postgres' failed to fail when there is not support available. 3846. [bug] "dig +notcp ixfr=" should result in a UDP ixfr query. [RT #35980] 3845. [placeholder] 3844. [bug] Use the x64 version of the Microsoft Visual C++ Redistributable when built for 64 bit Windows. [RT #35973] 3843. [protocol] Check EDNS EXPIRE option in dns_rdata_fromwire. [RT #35969] 3842. [bug] Adjust RRL log-only logging category. [RT #35945] 3841. [cleanup] Refactor zone.c:add_opt to use dns_message_buildopt. [RT #35924] 3840. [port] Check for arc4random_addrandom() before using it; it's been removed from OpenBSD 5.5. [RT #35907] 3839. [test] Use only posix-compatible shell in system tests. [RT #35625] 3838. [protocol] EDNS EXPIRE as been assigned a code point of 9. 3837. [security] A NULL pointer is passed to query_prefetch resulting a REQUIRE assertion failure when a fetch is actually initiated (CVE-2014-3214). [RT #35899] 3836. [bug] Address C++ keyword usage in header file. 3835. [bug] Geoip ACL elements didn't work correctly when referenced via named or nested ACLs. [RT #35879] 3834. [bug] The re-signing heaps were not being updated soon enough leading to multiple re-generations of the same RRSIG when a zone transfer was in progress. [RT #35273] 3833. [bug] Cross compiling was broken due to calling genrandom at build time. [RT #35869] 3832. [func] "named -L " causes named to send log messages to the specified file by default instead of to the system log. (Thanks to Tony Finch.) [RT #35845] 3831. [cleanup] Reduce logging noise when EDNS state changes occur. [RT #35843] 3830. [func] When query logging is enabled, log query errors at the same level ('info') as the queries themselves. [RT #35844] 3829. [func] "dig +ttlunits" causes dig to print TTL values with time-unit suffixes: w, d, h, m, s for weeks, days, hours, minutes, and seconds. (Thanks to Tony Finch.) [RT #35823] 3828. [func] "dnssec-signzone -N date" updates serial number to the current date in YYYYMMDDNN format. [RT #35800] 3827. [placeholder] 3826. [bug] Corrected bad INSIST logic in isc_radix_remove(). [RT #35870] 3825. [bug] Address sign extension bug in isc_regex_validate. [RT #35758] 3824. [bug] A collision between two flag values could cause problems with cache cleaning when SIT was enabled. [RT #35858] 3823. [func] Log the rpz cname target when rewriting. [RT #35667] 3822. [bug] Log the correct type of static-stub zones when removing them. [RT #35842] 3821. [contrib] Added a new "mysqldyn" DLZ module with dynamic update and transaction support. Thanks to Marty Lee for the contribution. [RT #35656] 3820. [func] The DLZ API doesn't pass the database version to the lookup() function; this can cause DLZ modules that allow dynamic updates to mishandle prerequisite checks. This has been corrected by adding a 'dbversion' field to the dns_clientinfo_t structure. [RT #35656] 3819. [bug] NSEC3 hashes need to be able to be entered and displayed without padding. This is not a issue for currently defined algorithms but may be for future hash algorithms. [RT #27925] 3818. [bug] Stop lying to the optimizer that 'void *arg' is a constant in isc_event_allocate. 3817. [func] The "delve" command is now spelled "delv" to avoid a namespace collision with the Xapian project. [RT #35801] 3816. [func] "dig +qr" now reports query size. (Thanks to Tony Finch.) [RT #35822] 3815. [doc] Clarify "nsupdate -y" usage in man page. [RT #35808] 3814. [func] The "masterfile-style" zone option controls the formatting of dumped zone files. Options are "relative" (multiline format) and "full" (one record per line). The default is "relative". [RT #20798] 3813. [func] "host" now recognizes the "timeout", "attempts" and "debug" options when set in /etc/resolv.conf. (Thanks to Adam Tkac at RedHat.) [RT #21885] 3812. [func] Dig now supports sending arbitrary EDNS options from the command line (+ednsopt=code[:value]). [RT #35584] 3811. [func] "serial-update-method date;" sets serial number on dynamic update to today's date in YYYYMMDDNN format. (Thanks to Bradley Forschinger.) [RT #24903] 3810. [bug] Work around broken nameservers that fail to ignore unknown EDNS options. [RT #35766] 3809. [doc] Fix SIT and NSID documentation. 3808. [doc] Clean up "prefetch" documentation. [RT #35751] 3807. [bug] Fix sign extension bug in dns_name_fromtext when lowercase is set. [RT #35743] 3806. [test] Improved system test portability. [RT #35625] 3805. [contrib] Added contrib/perftcpdns, a performance testing tool for DNS over TCP. [RT #35710] --- 9.10.0rc1 released --- 3804. [bug] Corrected a race condition in dispatch.c in which portentry could be reset leading to an assertion failure in socket_search(). (Change #3708 addressed the same issue but was incomplete.) [RT #35128] 3803. [bug] "named-checkconf -z" incorrectly rejected zones using alternate data sources for not having a "file" option. [RT #35685] 3802. [bug] Various header files were not being installed. 3801. [port] Fix probing for gssapi support on FreeBSD. [RT #35615] 3800. [bug] A pending event on the route socket could cause an assertion failure when shutting down named. [RT #35674] 3799. [bug] Improve named's command line error reporting. [RT #35603] 3798. [bug] 'rndc zonestatus' was reporting the wrong re-signing time. [RT #35659] 3797. [port] netbsd: geoip support probing was broken. [RT #35642] 3796. [bug] Register dns and pkcs#11 error codes. [RT #35629] 3795. [bug] Make named-checkconf detect raw masterfiles for hint zones and reject them. [RT #35268] 3794. [maint] Added AAAA for C.ROOT-SERVERS.NET. 3793. [bug] zone.c:save_nsec3param() could assert when out of memory. [RT #35621] 3792. [func] Provide links to the alternate statistics views when displaying in a browser. [RT #35605] 3791. [placeholder] 3790. [bug] Handle broken nameservers that send BADVERS in response to unknown EDNS options. Maintain statistics on BADVERS responses. 3789. [bug] Null pointer dereference on rbt creation failure. 3788. [bug] dns_peer_getrequestsit was returning request_nsid by mistake. --- 9.10.0b2 released --- 3787. [bug] The code that checks whether "auto-dnssec" is allowed was ignoring "allow-update" ACLs set at the options or view level. [RT #29536] 3786. [func] Provide more detailed error codes when using native PKCS#11. "pkcs11-tokens" now fails robustly rather than asserting when run against an HSM with an incomplete PKCS#11 API implementation. [RT #35479] 3785. [bug] Debugging code dumphex didn't accept arbitrarily long input (only compiled with -DDEBUG). [RT #35544] 3784. [bug] Using "rrset-order fixed" when it had not been enabled at compile time caused inconsistent results. It now works as documented, defaulting to cyclic mode. [RT #28104] 3783. [func] "tsig-keygen" is now available as an alternate command name for "ddns-confgen". It generates a TSIG key in named.conf format without comments. [RT #35503] 3782. [func] Specifying "auto" as the salt when using "rndc signing -nsec3param" causes named to generate a 64-bit salt at random. [RT #35322] 3781. [tuning] Use adaptive mutex locks when available; this has been found to improve performance under load on many systems. "configure --with-locktype=standard" restores conventional mutex locks. [RT #32576] 3780. [bug] $GENERATE handled negative numbers incorrectly. [RT #25528] 3779. [cleanup] Clarify the error message when using an option that was not enabled at compile time. [RT #35504] 3778. [bug] Log a warning when the wrong address family is used in "listen-on" or "listen-on-v6". [RT #17848] 3777. [bug] EDNS EXPIRE code could dump core when processing DLZ queries. [RT #35493] 3776. [func] "rndc -q" suppresses output from successful rndc commands. Errors are printed on stderr. [RT #21393] 3775. [bug] dlz_dlopen driver could return the wrong error code on API version mismatch, leading to a segfault. [RT #35495] 3774. [func] When using "request-nsid", log the NSID value in printable form as well as hex. [RT #20864] 3773. [func] "host", "nslookup" and "nsupdate" now have options to print the version number and exit. [RT #26057] 3772. [contrib] Added sqlite3 dynamically-loadable DLZ module. (Based in part on a contribution from Tim Tessier.) [RT #20822] 3771. [cleanup] Adjusted log level for "using built-in key" messages. [RT #24383] 3770. [bug] "dig +trace" could fail with an assertion when it needed to fall back to TCP due to a truncated response. [RT #24660] 3769. [doc] Improved documentation of "rndc signing -list". [RT #30652] 3768. [bug] "dnssec-checkds" was missing the SHA-384 digest algorithm. [RT #34000] 3767. [func] Log explicitly when using rndc.key to configure command channel. [RT #35316] 3766. [cleanup] Fixed problems with building outside the source tree when using native PKCS#11. [RT #35459] 3765. [bug] Fixed a bug in "rndc secroots" that could crash named when dumping an empty keynode. [RT #35469] 3764. [bug] The dnssec-keygen/settime -S and -i options (to set up a successor key and set the prepublication interval) were missing from dnssec-keyfromlabel. [RT #35394] 3763. [bug] delve: Cache DNSSEC records to avoid the need to re-fetch them when restarting validation. [RT #35476] 3762. [bug] Address build problems with --pkcs11-native + --with-openssl with ECDSA support. [RT #35467] 3761. [bug] Address dangling reference bug in dns_keytable_add. [RT #35471] 3760. [bug] Improve SIT with native PKCS#11 and on Windows. [RT #35433] 3759. [port] Enable delve on Windows. [RT #35441] 3758. [port] Enable export library APIs on Windows. [RT #35382] 3757. [port] Enable Python tools (dnssec-coverage, dnssec-checkds) to run on Windows. [RT #34355] 3756. [bug] GSSAPI Kerberos realm checking was broken in check_config leading to spurious messages being logged. [RT #35443] --- 9.10.0b1 released --- 3755. [func] Add stats counters for known EDNS options + others. [RT #35447] 3754. [cleanup] win32: Installer now places files in the Program Files area rather than system services. [RT #35361] 3753. [bug] allow-notify was ignoring keys. [RT #35425] 3752. [bug] Address potential REQUIRE failure if DNS_STYLEFLAG_COMMENTDATA is set when printing out a rdataset. 3751. [tuning] The default setting for the -U option (setting the number of UDP listeners per interface) has been adjusted to improve performance. [RT #35417] 3750. [experimental] Partially implement EDNS EXPIRE option as described in draft-andrews-dnsext-expire-00. Retrieval of the remaining time until expiry for slave zones is supported. EXPIRE uses an experimental option code (65002), which is subject to change. [RT #35416] 3749. [func] "dig +subnet" sends an EDNS client subnet option containing the specified address/prefix when querying. (Thanks to Wilmer van der Gaast.) [RT #35415] 3748. [test] Use delve to test dns_client interfaces. [RT #35383] 3747. [bug] A race condition could lead to a core dump when destroying a resolver fetch object. [RT #35385] 3746. [func] New "max-zone-ttl" option enforces maximum TTLs for zones. If loading a zone containing a higher TTL, the load fails. DDNS updates with higher TTLs are accepted but the TTL is truncated. (Note: Currently supported for master zones only; inline-signing slaves will be added.) [RT #38405] 3745. [func] "configure --with-tuning=large" adjusts various compiled-in constants and default settings to values suited to large servers with abundant memory. [RT #29538] 3744. [experimental] SIT: send and process Source Identity Tokens (similar to DNS Cookies by Donald Eastlake 3rd), which are designed to help clients detect off-path spoofed responses and for servers to identify legitimate clients. SIT uses an experimental EDNS option code (65001), which will be changed to an IANA-assigned value if the experiment is deemed a success. SIT can be enabled via "configure --enable-sit" (or --enable-developer). It is enabled by default in Windows. Servers can be configured to send smaller responses to clients that have not identified themselves via SIT. RRL processing has also been updated; legitimate clients are not subject to rate limiting. [RT #35389] 3743. [bug] delegation-only flag wasn't working in forward zone declarations despite being documented. This is needed to support turning off forwarding and turning on delegation only at the same name. [RT #35392] 3742. [port] linux: libcap support: declare curval at start of block. [RT #35387] 3741. [func] "delve" (domain entity lookup and validation engine): A new tool with dig-like semantics for performing DNS lookups, with internal DNSSEC validation, using the same resolver and validator logic as named. This allows easy validation of DNSSEC data in environments with untrustworthy resolvers, and assists with troubleshooting of DNSSEC problems. [RT #32406] 3740. [contrib] Minor fixes to configure --with-dlz-bdb, --with-dlz-postgres and --with-dlz-odbc. [RT #35340] 3739. [func] Added per-zone stats counters to track TCP and UDP queries. [RT #35375] 3738. [bug] --enable-openssl-hash failed to build. [RT #35343] 3737. [bug] 'rndc retransfer' could trigger a assertion failure with inline zones. [RT #35353] 3736. [bug] nsupdate: When specifying a server by name, fall back to alternate addresses if the first address for that name is not reachable. [RT #25784] 3735. [cleanup] Merged the libiscpk11 library into libisc to simplify dependencies. [RT #35205] 3734. [bug] Improve building with libtool. [RT #35314] 3733. [func] Improve interface scanning support. Interface information will be automatically updated if the OS supports routing sockets (MacOS, *BSD, Linux). Use "automatic-interface-scan no;" to disable. Add "rndc scan" to trigger a scan. [RT #23027] 3732. [contrib] Fixed a type mismatch causing the ODBC DLZ driver to dump core on 64-bit systems. [RT #35324] 3731. [func] Added a "no-case-compress" ACL, which causes named to use case-insensitive compression (disabling change #3645) for specified clients. (This is useful when dealing with broken client implementations that use case-sensitive name comparisons, rejecting responses that fail to match the capitalization of the query that was sent.) [RT #35300] 3730. [cleanup] Added "never" as a synonym for "none" when configuring key event dates in the dnssec tools. [RT #35277] 3729. [bug] dnssec-keygen could set the publication date incorrectly when only the activation date was specified on the command line. [RT #35278] 3728. [doc] Expanded native-PKCS#11 documentation, specifically pkcs11: URI labels. [RT #35287] 3727. [func] The isc_bitstring API is no longer used and has been removed from libisc. [RT #35284] 3726. [cleanup] Clarified the error message when attempting to configure more than 32 response-policy zones. [RT #35283] 3725. [contrib] Updated zkt and nslint to newest versions, cleaned up and rearranged the contrib directory, and added a README. --- 9.10.0a2 released --- 3724. [bug] win32: Fixed a bug that prevented dig and host from exiting properly after completing a UDP query. [RT #35288] 3723. [cleanup] Imported keys are now handled the same way regardless of DNSSEC algorithm. [RT #35215] 3722. [bug] Using geoip ACLs in a blackhole statement could cause a segfault. [RT #35272] 3721. [doc] Improved documentation of the EDNS processing enhancements introduced in change #3593. [RT #35275] 3720. [bug] Address compiler warnings. [RT #35261] 3719. [bug] Address memory leak in in peer.c. [RT #35255] 3718. [bug] A missing ISC_LINK_INIT in log.c. [RT #35260] 3717. [port] hpux: Treat EOPNOTSUPP as a expected error code when probing to see if it is possible to set dscp values on a per packet basis. [RT #35252] 3716. [bug] The dns_request code was setting dcsp values when not requested. [RT #35252] 3715. [bug] The region and city databases could fail to initialize when using some versions of libGeoIP, causing assertion failures when named was configured to use them. [RT #35427] 3714. [test] System tests that need to test for cryptography support before running can now use a common "testcrypto.sh" script to do so. [RT #35213] 3713. [bug] Save memory by not storing "also-notify" addresses in zone objects that are configured not to send notify requests. [RT #35195] 3712. [placeholder] 3711. [placeholder] 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] 3705. [func] "configure --enable-native-pkcs11" enables BIND to use the PKCS#11 API for all cryptographic functions, so that it can drive a hardware service module directly without the need to use a modified OpenSSL as intermediary (so long as the HSM's vendor provides a complete-enough implementation of the PKCS#11 interface). This has been tested successfully with the Thales nShield HSM and with SoftHSMv2 from the OpenDNSSEC project. [RT #29031] 3704. [protocol] Accept integer timestamps in RRSIG records. [RT #35185] 3703. [func] To improve recursive resolver performance, cache records which are still being requested by clients can now be automatically refreshed from the authoritative server before they expire, reducing or eliminating the time window in which no answer is available in the cache. See the "prefetch" option for more details. [RT #35041] 3702. [func] 'dnssec-coverage -l' option specifies a length of time to check for coverage; events further into the future are ignored. 'dnssec-coverage -z' checks only ZSK events, and 'dnssec-coverage -k' checks only KSK events. (Thanks to Peter Palfrader.) [RT #35168] 3701. [func] named-checkconf can now obscure shared secrets when printing by specifying '-x'. [RT #34465] 3700. [func] Allow access to subgroups of XML statistics via special URLs http://:/xml/v3/server, /zones, /net, /tasks, /mem, and /status. [RT #35115] 3699. [bug] Improvements to statistics channel XSL stylesheet: the stylesheet can now be cached by the browser; section headers are omitted from the stats display when there is no data in those sections to be displayed; counters are now right-justified for easier readability. [RT #35117] 3698. [cleanup] Replaced all uses of memcpy() with memmove(). [RT #35120] 3697. [bug] Handle "." as a search list element when IDN support is enabled. [RT #35133] 3696. [bug] dig failed to handle AXFR style IXFR responses which span multiple messages. [RT #35137] 3695. [bug] Address a possible race in dispatch.c. [RT #35107] 3694. [bug] Warn when a key-directory is configured for a zone, but does not exist or is not a directory. [RT #35108] 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 (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] 3691. [contrib] Address null pointer dereference in LDAP and MySQL DLZ modules. 3690. [bug] Iterative responses could be missed when the source port for an upstream query was the same as the listener port (53). [RT #34925] 3689. [bug] Fixed a bug causing an insecure delegation from one static-stub zone to another to fail with a broken trust chain. [RT #35081] 3688. [bug] loadnode could return a freed node on out of memory. [RT #35106] 3687. [bug] Address null pointer dereference in zone_xfrdone. [RT #35042] 3686. [func] "dnssec-signzone -Q" drops signatures from keys that are still published but no longer active. [RT #34990] 3685. [bug] "rndc refresh" didn't work correctly with slave zones using inline-signing. [RT #35105] 3684. [bug] The list of included files would grow on reload. [RT 35090] 3683. [cleanup] Add a more detailed "not found" message to rndc commands which specify a zone name. [RT #35059] 3682. [bug] Correct the behavior of rndc retransfer to allow inline-signing slave zones to retain NSEC3 parameters instead of reverting to NSEC. [RT #34745] 3681. [port] Update the Windows build system to support feature selection and WIN64 builds. This is a work in progress. [RT #34160] 3680. [bug] Ensure buffer space is available in "rndc zonestatus". [RT #35084] 3679. [bug] dig could fail to clean up TCP sockets still waiting on connect(). [RT #35074] 3678. [port] Update config.guess and config.sub. [RT #35060] 3677. [bug] 'nsupdate' leaked memory if 'realm' was used multiple times. [RT #35073] 3676. [bug] "named-checkconf -z" now checks zones of type hint and redirect as well as master. [RT #35046] 3675. [misc] Provide a place for third parties to add version information for their extensions in the version file by setting the EXTENSIONS variable. --- 9.10.0a1 released --- 3674. [bug] RPZ zeroed ttls if the query type was '*'. [RT #35026] 3673. [func] New "in-view" zone option allows direct sharing of zones between views. [RT #32968] 3672. [func] Local address can now be specified when using dns_client API. [RT #34811] 3671. [bug] Don't allow dnssec-importkey overwrite a existing non-imported private key. 3670. [bug] Address read after free in server side of lwres_getrrsetbyname. [RT #29075] 3669. [port] freebsd: --with-gssapi needs -lhx509. [RT #35001] 3668. [bug] Fix cast in lex.c which could see 0xff treated as eof. [RT #34993] 3667. [test] dig: add support to keep the TCP socket open between successive queries (+[no]keepopen). [RT #34918] 3666. [func] Add a tool, named-rrchecker, for checking the syntax of individual resource records. This tool is intended to be called by provisioning systems so that the front end does not need to be upgraded to support new DNS record types. [RT #34778] 3665. [bug] Failure to release lock on error in receive_secure_db. [RT #34944] 3664. [bug] Updated OpenSSL PKCS#11 patches to fix active list locking and other bugs. [RT #34855] 3663. [bug] Address bugs in dns_rdata_fromstruct and dns_rdata_tostruct for WKS and ISDN types. [RT #34910] 3662. [bug] 'host' could die if a UDP query timed out. [RT #34870] 3661. [bug] Address lock order reversal deadlock with inline zones. [RT #34856] 3660. [cleanup] Changed the name of "isc-config.sh" to "bind9-config". [RT #23825] 3659. [port] solaris: don't add explicit dependencies/rules for python programs as make won't use the implicit rules. [RT #34835] 3658. [port] linux: Address platform specific compilation issue when libcap-devel is installed. [RT #34838] 3657. [port] Some readline clones don't accept NULL pointers when calling add_history. [RT #34842] 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] 3654. [bug] Address race condition with manual notify requests. [RT #34806] 3653. [func] Create delegations for all "children" of empty zones except "forward first". [RT #34826] 3652. [bug] Address bug with rpz-drop policy. [RT #34816] 3651. [tuning] Adjust when a master server is deemed unreachable. [RT #27075] 3650. [tuning] Use separate rate limiting queues for refresh and notify requests. [RT #30589] 3649. [cleanup] Include a comment in .nzf files, giving the name of the associated view. [RT #34765] 3648. [test] Updated the ATF test framework to version 0.17. [RT #25627] 3647. [bug] Address a race condition when shutting down a zone. [RT #34750] 3646. [bug] Journal filename string could be set incorrectly, causing garbage in log messages. [RT #34738] 3645. [protocol] Use case sensitive compression when responding to queries. [RT #34737] 3644. [protocol] Check that EDNS subnet client options are well formed. [RT #34718] 3643. [doc] Clarify RRL "slip" documentation. 3642. [func] Allow externally generated DNSKEY to be imported into the DNSKEY management framework. A new tool dnssec-importkey is used to do this. [RT #34698] 3641. [bug] Handle changes to sig-validity-interval settings better. [RT #34625] 3640. [bug] ndots was not being checked when searching. Only continue searching on NXDOMAIN responses. Add the ability to specify ndots to nslookup. [RT #34711] 3639. [bug] Treat type 65533 (KEYDATA) as opaque except when used in a key zone. [RT #34238] 3638. [cleanup] Add the ability to handle ENOPROTOOPT in case it is encountered. [RT #34668] 3637. [bug] 'allow-query-on' was checking the source address rather than the destination address. [RT #34590] 3636. [bug] Automatic empty zones now behave better with forward only "zones" beneath them. [RT #34583] 3635. [bug] Signatures were not being removed from a zone with only KSK keys for a algorithm. [RT #34439] 3634. [func] Report build-id in rndc status. Report build-id when building from a git repository. [RT #20422] 3633. [cleanup] Refactor OPT processing in named to make it easier to support new EDNS options. [RT #34414] 3632. [bug] Signature from newly inactive keys were not being removed. [RT #32178] 3631. [bug] Remove spurious warning about missing signatures when qtype is SIG. [RT #34600] 3630. [bug] Ensure correct ID computation for MD5 keys. [RT #33033] 3629. [func] Allow the printing of cryptographic fields in DNSSEC records by dig to be suppressed (dig +nocrypto). [RT #34534] 3628. [func] Report DNSKEY key id's when dumping the cache. [RT #34533] 3627. [bug] RPZ changes were not effective on slaves. [RT #34450] 3626. [func] dig: NSID output now easier to read. [RT #21160] 3625. [bug] Don't send notify messages to machines outside of the test setup. 3624. [bug] Look for 'json_object_new_int64' when looking for a the json library. [RT #34449] 3623. [placeholder] 3622. [tuning] Eliminate an unnecessary lock when incrementing cache statistics. [RT #34339] 3621. [security] Incorrect bounds checking on private type 'keydata' can lead to a remotely triggerable REQUIRE failure (CVE-2013-4854). [RT #34238] 3620. [func] Added "rpz-client-ip" policy triggers, enabling RPZ responses to be configured on the basis of the client IP address; this can be used, for example, to blacklist misbehaving recursive or stub resolvers. [RT #33605] 3619. [bug] Fixed a bug in RPZ with "recursive-only no;" [RT #33776] 3618. [func] "rndc reload" now checks modification times of include files as well as master files to determine whether to skip reloading a zone. [RT #33936] 3617. [bug] Named was failing to answer queries during "rndc reload" [RT #34098] 3616. [bug] Change #3613 was incomplete. [RT #34177] 3615. [cleanup] "configure" now finishes by printing a summary of optional BIND features and whether they are active or inactive. ("configure --enable-full-report" increases the verbosity of the summary.) [RT #31777] 3614. [port] Check for . [RT #34162] 3613. [bug] named could crash when deleting inline-signing zones with "rndc delzone". [RT #34066] 3612. [port] Check whether to use -ljson or -ljson-c. [RT #34115] 3611. [bug] Improved resistance to a theoretical authentication attack based on differential timing. [RT #33939] 3610. [cleanup] win32: Some executables had been omitted from the installer. [RT #34116] 3609. [bug] Corrected a possible deadlock in applications using the export version of the isc_app API. [RT #33967] 3608. [port] win32: added todos.pl script to ensure all text files the win32 build depends on are converted to DOS newline format. [RT #22067] 3607. [bug] dnssec-keygen had broken 'Invalid keyfile' error message. [RT #34045] 3606. [func] "rndc flushtree" now flushes matching records in the address database and bad cache as well as the DNS cache. (Previously only the DNS cache was flushed.) [RT #33970] 3605. [port] win32: Addressed several compatibility issues with newer versions of Visual Studio. [RT #33916] 3604. [bug] Fixed a compile-time error when building with JSON but not XML. [RT #33959] 3603. [bug] Install . [RT #33956] 3602. [contrib] Added DLZ Perl module, allowing Perl scripts to integrate with named and serve DNS data. (Contributed by John Eaglesham of Yahoo.) 3601. [bug] Added to PKCS#11 openssl patches a value len attribute in DH derive key. [RT #33928] 3600. [cleanup] dig: Fixed a typo in the warning output when receiving an oversized response. [RT #33910] 3599. [tuning] Check for pointer equivalence in name comparisons. [RT #18125] 3598. [cleanup] Improved portability of map file code. [RT #33820] 3597. [bug] Ensure automatic-resigning heaps are reconstructed when loading zones in map format. [RT #33381] 3596. [port] Updated win32 build documentation, added dnssec-verify. [RT #22067] 3595. [port] win32: Fix build problems introduced by change #3550. [RT #33807] 3594. [maint] Update config.guess and config.sub. [RT #33816] 3593. [func] Update EDNS processing to better track remote server capabilities. [RT #30655] 3592. [doc] Moved documentation of rndc command options to the rndc man page. [RT #33506] 3591. [func] Use CRC-64 to detect map file corruption at load time. [RT #33746] 3590. [bug] When using RRL on recursive servers, defer rate-limiting until after recursion is complete; also, use correct rcode for slipped NXDOMAIN responses. [RT #33604] 3589. [func] Report serial numbers in when starting zone transfers. Report accepted NOTIFY requests including serial. [RT #33037] 3588. [bug] dig: addressed a memory leak in the sigchase code that could cause a shutdown crash. [RT #33733] 3587. [func] 'named -g' now checks the logging configuration but does not use it. [RT #33473] 3586. [bug] Handle errors in xmlDocDumpFormatMemoryEnc. [RT #33706] 3585. [func] "rndc delzone -clean" option removes zone files when deleting a zone. [RT #33570] 3584. [security] Caching data from an incompletely signed zone could trigger an assertion failure in resolver.c (CVE-2013-3919). [RT #33690] 3583. [bug] Address memory leak in GSS-API processing [RT #33574] 3582. [bug] Silence false positive warning regarding missing file directive for inline slave zones. [RT #33662] 3581. [bug] Changed the tcp-listen-queue default to 10. [RT #33029] 3580. [bug] Addressed a possible race in acache.c [RT #33602] 3579. [maint] Updates to PKCS#11 openssl patches, supporting versions 0.9.8y, 1.0.0k, 1.0.1e [RT #33463] 3578. [bug] 'rndc -c file' now fails if 'file' does not exist. [RT #33571] 3577. [bug] Handle zero TTL values better. [RT #33411] 3576. [bug] Address a shutdown race when validating. [RT #33573] 3575. [func] Changed the logging category for RRL events from 'queries' to 'query-errors'. [RT #33540] 3574. [doc] The 'hostname' keyword was missing from server-id description in the named.conf man page. [RT #33476] 3573. [bug] "rndc addzone" and "rndc delzone" incorrectly handled zone names containing punctuation marks and other nonstandard characters. [RT #33419] 3572. [func] Threads are now enabled by default on most operating systems. [RT #25483] 3571. [bug] Address race condition in dns_client_startresolve(). [RT #33234] 3570. [bug] Check internal pointers are valid when loading map files. [RT #33403] 3569. [contrib] Ported mysql DLZ driver to dynamically-loadable module, and added multithread support. [RT #33394] 3568. [cleanup] Add a product description line to the version file, to be reported by named -v/-V. [RT #33366] 3567. [bug] Silence clang static analyzer warnings. [RT #33365] 3566. [func] Log when forwarding updates to master. [RT #33240] 3565. [placeholder] 3564. [bug] Improved handling of corrupted map files. [RT #33380] 3563. [contrib] zone2sqlite failed with some table names. [RT #33375] 3562. [func] Update map file header format to include a SHA-1 hash of the database content, so that corrupted map files can be rejected at load time. [RT #32459] 3561. [bug] dig: issue a warning if an EDNS query returns FORMERR or NOTIMP. Adjust usage message. [RT #33363] 3560. [bug] isc-config.sh did not honor includedir and libdir when set via configure. [RT #33345] 3559. [func] Check that both forms of Sender Policy Framework records exist or do not exist. [RT #33355] 3558. [bug] IXFR of a DLZ stored zone was broken. [RT #33331] 3557. [bug] Reloading redirect zones was broken. [RT #33292] 3556. [maint] Added AAAA for D.ROOT-SERVERS.NET. 3555. [bug] Address theoretical race conditions in acache.c (change #3553 was incomplete). [RT #33252] 3554. [bug] RRL failed to correctly rate-limit upward referrals and failed to count dropped error responses in the statistics. [RT #33225] 3553. [bug] Address suspected double free in acache. [RT #33252] 3552. [bug] Wrong getopt option string for 'nsupdate -r'. [RT #33280] 3551. [bug] resolver.querydscp[46] were uninitialized. [RT #32686] 3550. [func] Unified the internal and export versions of the BIND libraries, allowing external clients to use the same libraries as BIND. [RT #33131] 3549. [doc] Documentation for "request-nsid" was missing. [RT #33153] 3548. [bug] The NSID request code in resolver.c was broken resulting in invalid EDNS options being sent. [RT #33153] 3547. [bug] Some malformed unknown rdata records were not properly detected and rejected. [RT #33129] 3546. [func] Add EUI48 and EUI64 types. [RT #33082] 3545. [bug] RRL slip behavior was incorrect when set to 1. [RT #33111] 3544. [contrib] check5011.pl: Script to report the status of managed keys as recorded in managed-keys.bind. Contributed by Tony Finch 3543. [bug] Update socket structure before attaching to socket manager after accept. [RT #33084] 3542. [placeholder] 3541. [bug] Parts of libdns were not properly initialized when built in libexport mode. [RT #33028] 3540. [test] libt_api: t_info and t_assert were not thread safe. 3539. [port] win32: timestamp format didn't match other platforms. 3538. [test] Running "make test" now requires loopback interfaces to be set up. [RT #32452] 3537. [tuning] Slave zones, when updated, now send NOTIFY messages to peers before being dumped to disk rather than after. [RT #27242] 3536. [func] Add support for setting Differentiated Services Code Point (DSCP) values in named. Most configuration options which take a "port" option (e.g., listen-on, forwarders, also-notify, masters, notify-source, etc) can now also take a "dscp" option specifying a code point for use with outgoing traffic, if supported by the underlying OS. [RT #27596] 3535. [bug] Minor win32 cleanups. [RT #32962] 3534. [bug] Extra text after an embedded NULL was ignored when parsing zone files. [RT #32699] 3533. [contrib] query-loc-0.4.0: memory leaks. [RT #32960] 3532. [contrib] zkt: fixed buffer overrun, resource leaks. [RT #32960] 3531. [bug] win32: A uninitialized value could be returned on out of memory. [RT #32960] 3530. [contrib] Better RTT tracking in queryperf. [RT #30128] 3529. [func] Named now listens on both IPv4 and IPv6 interfaces by default. Named previously only listened on IPv4 interfaces by default unless named was running in IPv6 only mode. [RT #32945] 3528. [func] New "dnssec-coverage" command scans the timing metadata for a set of DNSSEC keys and reports if a lapse in signing coverage has been scheduled inadvertently. (Note: This tool depends on python; it will not be built or installed on systems that do not have a python interpreter.) [RT #28098] 3527. [compat] Add a URI to allow applications to explicitly request a particular XML schema from the statistics channel, returning 404 if not supported. [RT #32481] 3526. [cleanup] Set up dependencies for unit tests correctly during build. [RT #32803] 3525. [func] Support for additional signing algorithms in rndc: hmac-sha1, -sha224, -sha256, -sha384, and -sha512. The -A option to rndc-confgen can be used to select the algorithm for the generated key. (The default is still hmac-md5; this may change in a future release.) [RT #20363] 3524. [func] Added an alternate statistics channel in JSON format, when the server is built with the json-c library: http://[address]:[port]/json. [RT #32630] 3523. [contrib] Ported filesystem and ldap DLZ drivers to dynamically-loadable modules, and added the "wildcard" module based on a contribution from Vadim Goncharov . [RT #23569] 3522. [bug] DLZ lookups could fail to return SERVFAIL when they ought to. [RT #32685] 3521. [bug] Address memory leak in opensslecdsa_link.c. [RT #32249] 3520. [bug] 'mctx' was not being referenced counted in some places where it should have been. [RT #32794] 3519. [func] Full replay protection via four-way handshake is now mandatory for rndc clients. Very old versions of rndc will no longer work. [RT #32798] 3518. [bug] Increase the size of dns_rrl_key.s.rtype by one bit so that all dns_rrl_rtype_t enum values fit regardless of whether it is treated as signed or unsigned by the compiler. [RT #32792] 3517. [bug] Reorder destruction to avoid shutdown race. [RT #32777] 3516. [placeholder] 3515. [port] '%T' is not portable in strftime(). [RT #32763] 3514. [bug] The ranges for valid key sizes in ddns-confgen and rndc-confgen were too constrained. Keys up to 512 bits are now allowed for most algorithms, and up to 1024 bits for hmac-sha384 and hmac-sha512. [RT #32753] 3513. [func] "dig -u" prints times in microseconds rather than milliseconds. [RT #32704] 3512. [func] "rndc validation check" reports the current status of DNSSEC validation. [RT #21397] 3511. [doc] Improve documentation of redirect zones. [RT #32756] 3510. [func] "rndc status" and XML statistics channel now report server start and reconfiguration times. [RT #21048] 3509. [cleanup] Added a product line to version file to allow for easy naming of different products (BIND vs BIND ESV, for example). [RT #32755] 3508. [contrib] queryperf was incorrectly rejecting the -T option. [RT #32338] 3507. [bug] Statistics channel XSL had a glitch when attempting to chart query data before any queries had been received. [RT #32620] 3506. [func] When setting "max-cache-size" and "max-acache-size", the keyword "unlimited" is no longer defined as equal to 4 gigabytes (except on 32-bit platforms); it means literally unlimited. [RT #32358] 3505. [bug] When setting "max-cache-size" and "max-acache-size", larger values than 4 gigabytes could not be set explicitly, though larger sizes were available when setting cache size to 0. This has been corrected; the full range is now available. [RT #32358] 3504. [func] Add support for ACLs based on geographic location, using MaxMind GeoIP databases. Based on code contributed by Ken Brownfield . [RT #30681] 3503. [doc] Clarify size_spec syntax. [RT #32449] 3502. [func] zone-statistics: "no" is now a synonym for "none", instead of "terse". [RT #29165] 3501. [func] zone-statistics now takes three options: full, terse, and none. "yes" and "no" are retained as synonyms for full and terse, respectively. [RT #29165] 3500. [security] Support NAPTR regular expression validation on all platforms without using libregex, which can be vulnerable to memory exhaustion attack (CVE-2013-2266). [RT #32688] 3499. [doc] Corrected ARM documentation of built-in zones. [RT #32694] 3498. [bug] zone statistics for zones which matched a potential empty zone could have their zone-statistics setting overridden. 3497. [func] When deleting a slave/stub zone using 'rndc delzone' report the files that were being used so they can be cleaned up if desired. [RT #27899] 3496. [placeholder] 3495. [func] Support multiple response-policy zones (up to 32), while improving RPZ performance. "response-policy" syntax now includes a "min-ns-dots" clause, with default 1, to exclude top-level domains from NSIP and NSDNAME checking. --enable-rpz-nsip and --enable-rpz-nsdname are now the default. [RT #32251] 3494. [func] DNS RRL: Blunt the impact of DNS reflection and amplification attacks by rate-limiting substantially- identical responses. [RT #28130] 3493. [contrib] Added BDBHPT dynamically-loadable DLZ module, contributed by Mark Goldfinch. [RT #32549] 3492. [bug] Fixed a regression in zone loading performance due to lock contention. [RT #30399] 3491. [bug] Slave zones using inline-signing must specify a file name. [RT #31946] 3490. [bug] When logging RDATA during update, truncate if it's too long. [RT #32365] 3489. [bug] --enable-developer now turns on ISC_LIST_CHECKINIT. dns_dlzcreate() failed to properly initialize dlzdb.link. When cloning a rdataset do not copy the link contents. [RT #32651] 3488. [bug] Use after free error with DH generated keys. [RT #32649] 3487. [bug] Change 3444 was not complete. There was a additional place where the NOQNAME proof needed to be saved. [RT #32629] 3486. [bug] named could crash when using TKEY-negotiated keys that had been deleted and then recreated. [RT #32506] 3485. [cleanup] Only compile openssl_gostlink.c if we support GOST. 3484. [bug] Some statistics were incorrectly rendered in XML. [RT #32587] 3483. [placeholder] 3482. [func] dig +nssearch now prints name servers that don't have address records (missing AAAA or A, or the name doesn't exist). [RT #29348] 3481. [cleanup] Removed use of const const in atf. 3480. [bug] Silence logging noise when setting up zone statistics. [RT #32525] 3479. [bug] Address potential memory leaks in gssapi support code. [RT #32405] 3478. [port] Fix a build failure in strict C99 environments [RT #32475] 3477. [func] Expand logging when adding records via DDNS update [RT #32365] 3476. [bug] "rndc zonestatus" could report a spurious "not found" error on inline-signing zones. [RT #29226] 3475. [cleanup] Changed name of 'map' zone file format (previously 'fast'). [RT #32458] 3474. [bug] nsupdate could assert when the local and remote address families didn't match. [RT #22897] 3473. [bug] dnssec-signzone/verify could incorrectly report an error condition due to an empty node above an opt-out delegation lacking an NSEC3. [RT #32072] 3472. [bug] The active-connections counter in the socket statistics could underflow. [RT #31747] 3471. [bug] The number of UDP dispatches now defaults to the number of CPUs even if -n has been set to a higher value. [RT #30964] 3470. [bug] Slave zones could fail to dump when successfully refreshing after an initial failure. [RT #31276] 3469. [bug] Handle DLZ lookup failures more gracefully. Improve backward compatibility between versions of DLZ dlopen API. [RT #32275] 3468. [security] RPZ rules to generate A records (but not AAAA records) could trigger an assertion failure when used in conjunction with DNS64 (CVE-2012-5689). [RT #32141] 3467. [bug] Added checks in dnssec-keygen and dnssec-settime to check for delete date < inactive date. [RT #31719] 3466. [contrib] Corrected the DNS_CLIENTINFOMETHODS_VERSION check in DLZ example driver. [RT #32275] 3465. [bug] Handle isolated reserved ports. [RT #31778] 3464. [maint] Updates to PKCS#11 openssl patches, supporting versions 0.9.8x, 1.0.0j, 1.0.1c [RT #29749] 3463. [doc] Clarify managed-keys syntax in ARM. [RT #32232] 3462. [doc] Clarify server selection behavior of dig when using -4 or -6 options. [RT #32181] 3461. [bug] Negative responses could incorrectly have AD=1 set. [RT #32237] 3460. [bug] Only link against readline where needed. [RT #29810] 3459. [func] Added -J option to named-checkzone/named-compilezone to specify the path to the journal file. [RT #30958] 3458. [bug] Return FORMERR when presented with a overly long domain named in a request. [RT #29682] 3457. [protocol] Add ILNP records (NID, LP, L32, L64). [RT #31836] 3456. [port] g++47: ATF failed to compile. [RT #32012] 3455. [contrib] queryperf: fix getopt option list. [RT #32338] 3454. [port] sparc64: improve atomic support. [RT #25182] 3453. [bug] 'rndc addzone' of a zone with 'inline-signing yes;' failed. [RT #31960] 3452. [bug] Accept duplicate singleton records. [RT #32329] 3451. [port] Increase per thread stack size from 64K to 1M. [RT #32230] 3450. [bug] Stop logfileconfig system test spam system logs. [RT #32315] 3449. [bug] gen.c: use the pre-processor to construct format strings so that compiler can perform sanity checks; check the snprintf results. [RT #17576] 3448. [bug] The allow-query-on ACL was not processed correctly. [RT #29486] 3447. [port] Add support for libxml2-2.9.x [RT #32231] 3446. [port] win32: Add source ID (see change #3400) to build. [RT #31683] 3445. [bug] Warn about zone files with blank owner names immediately after $ORIGIN directives. [RT #31848] 3444. [bug] The NOQNAME proof was not being returned from cached insecure responses. [RT #21409] 3443. [bug] ddns-confgen: Some TSIG algorithms were incorrectly rejected when generating keys. [RT #31927] 3442. [port] Net::DNS 0.69 introduced a non backwards compatible change. [RT #32216] 3441. [maint] D.ROOT-SERVERS.NET is now 199.7.91.13. 3440. [bug] Reorder get_key_struct to not trigger a assertion when cleaning up due to out of memory error. [RT #32131] 3439. [placeholder] 3438. [bug] Don't accept unknown data escape in quotes. [RT #32031] 3437. [bug] isc_buffer_init -> isc_buffer_constinit to initialize buffers with constant data. [RT #32064] 3436. [bug] Check malloc/calloc return values. [RT #32088] 3435. [bug] Cross compilation support in configure was broken. [RT #32078] 3434. [bug] Pass client info to the DLZ findzone() entry point in addition to lookup(). This makes it possible for a database to answer differently whether it's authoritative for a name depending on the address of the client. [RT #31775] 3433. [bug] dlz_findzone() did not correctly handle ISC_R_NOMORE. [RT #31172] 3432. [func] Multiple DLZ databases can now be configured. DLZ databases are searched in the order configured, unless set to "search no", in which case a zone can be configured to be retrieved from a particular DLZ database by using a "dlz " option in the zone statement. DLZ databases can support type "master" and "redirect" zones. [RT #27597] 3431. [bug] ddns-confgen: Some valid key algorithms were not accepted. [RT #31927] 3430. [bug] win32: isc_time_formatISO8601 was missing the 'T' between the date and time. [RT #32044] 3429. [bug] dns_zone_getserial2 could a return success without returning a valid serial. [RT #32007] 3428. [cleanup] dig: Add timezone to date output. [RT #2269] 3427. [bug] dig +trace incorrectly displayed name server addresses instead of names. [RT #31641] 3426. [bug] dnssec-checkds: Clearer output when records are not found. [RT #31968] 3425. [bug] "acacheentry" reference counting was broken resulting in use after free. [RT #31908] 3424. [func] dnssec-dsfromkey now emits the hash without spaces. [RT #31951] 3423. [bug] "rndc signing -nsec3param" didn't accept the full range of possible values. Address portability issues. [RT #31938] 3422. [bug] Added a clear error message for when the SOA does not match the referral. [RT #31281] 3421. [bug] Named loops when re-signing if all keys are offline. [RT #31916] 3420. [bug] Address VPATH compilation issues. [RT #31879] 3419. [bug] Memory leak on validation cancel. [RT #31869] 3418. [func] New XML schema (version 3.0) for the statistics channel adds query type statistics at the zone level, and flattens the XML tree and uses compressed format to optimize parsing. Includes new XSL that permits charting via the Google Charts API on browsers that support javascript in XSL. The old XML schema has been deprecated. [RT #30023] 3417. [placeholder] 3416. [bug] Named could die on shutdown if running with 128 UDP dispatches per interface. [RT #31743] 3415. [bug] named could die with a REQUIRE failure if a validation was canceled. [RT #31804] 3414. [bug] Address locking issues found by Coverity. [RT #31626] 3413. [func] Record the number of DNS64 AAAA RRsets that have been synthesized. [RT #27636] 3412. [bug] Copy timeval structure from control message data. [RT #31548] 3411. [tuning] Use IPV6_USE_MIN_MTU or equivalent with TCP in addition to UDP. [RT #31690] 3410. [bug] Addressed Coverity warnings. [RT #31626] 3409. [contrib] contrib/dane/mkdane.sh: Tool to generate TLSA RR's from X.509 certificates, for use with DANE (DNS-based Authentication of Named Entities). [RT #30513] 3408. [bug] Some DNSSEC-related options (update-check-ksk, dnssec-loadkeys-interval, dnssec-dnskey-kskonly) are now legal in slave zones as long as inline-signing is in use. [RT #31078] 3407. [placeholder] 3406. [bug] mem.c: Fix compilation errors when building with ISC_MEM_TRACKLINES or ISC_MEMPOOL_NAMES disabled. Also, ISC_MEM_DEBUG is no longer optional. [RT #31559] 3405. [bug] Handle time going backwards in acache. [RT #31253] 3404. [bug] dnssec-signzone: When re-signing a zone, remove RRSIG and NSEC records from nodes that used to be in-zone but are now below a zone cut. [RT #31556] 3403. [bug] Silence noisy OpenSSL logging. [RT #31497] 3402. [test] The IPv6 interface numbers used for system tests were incorrect on some platforms. [RT #25085] 3401. [bug] Addressed Coverity warnings. [RT #31484] 3400. [cleanup] "named -V" can now report a source ID string, defined in the "srcid" file in the build tree and normally set to the most recent git hash. [RT #31494] 3399. [port] netbsd: rename 'bool' parameter to avoid namespace clash. [RT #31515] 3398. [bug] SOA parameters were not being updated with inline signed zones if the zone was modified while the server was offline. [RT #29272] 3397. [bug] dig crashed when using +nssearch with +tcp. [RT #25298] 3396. [bug] OPT records were incorrectly removed from signed, truncated responses. [RT #31439] 3395. [protocol] Add RFC 6598 reverse zones to built in empty zones list, 64.100.IN-ADDR.ARPA ... 127.100.IN-ADDR.ARPA. [RT #31336] 3394. [bug] Adjust 'successfully validated after lower casing signer' log level and category. [RT #31414] 3393. [bug] 'host -C' could core dump if REFUSED was received. [RT #31381] 3392. [func] Keep statistics on REFUSED responses. [RT #31412] 3391. [bug] A DNSKEY lookup that encountered a CNAME failed. [RT #31262] 3390. [bug] Silence clang compiler warnings. [RT #30417] 3389. [bug] Always return NOERROR (not 0) in TSIG. [RT #31275] 3388. [bug] Fixed several Coverity warnings. Note: This change includes a fix for a bug that was subsequently determined to be an exploitable security vulnerability, CVE-2012-5688: named could die on specific queries with dns64 enabled. [RT #30996] 3387. [func] DS digest can be disabled at runtime with disable-ds-digests. [RT #21581] 3386. [bug] Address locking violation when generating new NSEC / NSEC3 chains. [RT #31224] 3385. [bug] named-checkconf didn't detect missing master lists in also-notify clauses. [RT #30810] 3384. [bug] Improved logging of crypto errors. [RT #30963] 3383. [security] A certain combination of records in the RBT could cause named to hang while populating the additional section of a response. [RT #31090] 3382. [bug] SOA query from slave used use-v6-udp-ports range, if set, regardless of the address family in use. [RT #24173] 3381. [contrib] Update queryperf to support more RR types. [RT #30762] 3380. [bug] named could die if a nonexistent master list was referenced in a also-notify. [RT #31004] 3379. [bug] isc_interval_zero and isc_time_epoch should be "const (type)* const". [RT #31069] 3378. [bug] Handle missing 'managed-keys-directory' better. [RT #30625] 3377. [bug] Removed spurious newline from NSEC3 multiline output. [RT #31044] 3376. [bug] Lack of EDNS support was being recorded without a successful response. [RT #30811] 3375. [bug] 'rndc dumpdb' failed on empty caches. [RT #30808] 3374. [bug] isc_parse_uint32 failed to return a range error on systems with 64 bit longs. [RT #30232] 3373. [bug] win32: open raw files in binary mode. [RT #30944] 3372. [bug] Silence spurious "deleted from unreachable cache" messages. [RT #30501] 3371. [bug] AD=1 should behave like DO=1 when deciding whether to add NS RRsets to the additional section or not. [RT #30479] 3370. [bug] Address use after free while shutting down. [RT #30241] 3369. [bug] nsupdate terminated unexpectedly in interactive mode if built with readline support. [RT #29550] 3368. [bug] , and were not C++ safe. 3367. [bug] dns_dnsseckey_create() result was not being checked. [RT #30685] 3366. [bug] Fixed Read-After-Write dependency violation for IA64 atomic operations. [RT #25181] 3365. [bug] Removed spurious newlines from log messages in zone.c [RT #30675] 3364. [security] Named could die on specially crafted record. [RT #30416] 3363. [bug] Need to allow "forward" and "fowarders" options in static-stub zones; this had been overlooked. [RT #30482] 3362. [bug] Setting some option values to 0 in named.conf could trigger an assertion failure on startup. [RT #27730] 3361. [bug] "rndc signing -nsec3param" didn't work correctly when salt was set to '-' (no salt). [RT #30099] 3360. [bug] 'host -w' could die. [RT #18723] 3359. [bug] An improperly-formed TSIG secret could cause a memory leak. [RT #30607] 3358. [placeholder] 3357. [port] Add support for libxml2-2.8.x [RT #30440] 3356. [bug] Cap the TTL of signed RRsets when RRSIGs are approaching their expiry, so they don't remain in caches after expiry. [RT #26429] 3355. [port] Use more portable awk in verify system test. 3354. [func] Improve OpenSSL error logging. [RT #29932] 3353. [bug] Use a single task for task exclusive operations. [RT #29872] 3352. [bug] Ensure that learned server attributes timeout of the adb cache. [RT #29856] 3351. [bug] isc_mem_put and isc_mem_putanddetach didn't report caller if either ISC_MEM_DEBUGSIZE or ISC_MEM_DEBUGCTX memory debugging flags are set. [RT #30243] 3350. [bug] Memory read overrun in isc___mem_reallocate if ISC_MEM_DEBUGCTX memory debugging flag is set. [RT #30240] 3349. [bug] Change #3345 was incomplete. [RT #30233] 3348. [bug] Prevent RRSIG data from being cached if a negative record matching the covering type exists at a higher trust level. Such data already can't be retrieved from the cache since change 3218 -- this prevents it being inserted into the cache as well. [RT #26809] 3347. [bug] dnssec-settime: Issue a warning when writing a new private key file would cause a change in the permissions of the existing file. [RT #27724] 3346. [security] Bad-cache data could be used before it was initialized, causing an assert. [RT #30025] 3345. [bug] Addressed race condition when removing the last item or inserting the first item in an ISC_QUEUE. [RT #29539] 3344. [func] New "dnssec-checkds" command checks a zone to determine which DS records should be published in the parent zone, or which DLV records should be published in a DLV zone, and queries the DNS to ensure that it exists. (Note: This tool depends on python; it will not be built or installed on systems that do not have a python interpreter.) [RT #28099] 3343. [placeholder] 3342. [bug] Change #3314 broke saving of stub zones to disk resulting in excessive cpu usage in some cases. [RT #29952] 3341. [func] New "dnssec-verify" command checks a signed zone to ensure correctness of signatures and of NSEC/NSEC3 chains. [RT #23673] 3340. [func] Added new 'map' zone file format, which is an image of a zone database that can be loaded directly into memory via mmap(), allowing much faster zone loading. (Note: Because of pointer sizes and other considerations, this file format is platform-dependent; 'map' zone files cannot always be transferred from one server to another.) [RT #25419] 3339. [func] Allow the maximum supported rsa exponent size to be specified: "max-rsa-exponent-size ;" [RT #29228] 3338. [bug] Address race condition in units tests: asyncload_zone and asyncload_zt. [RT #26100] 3337. [bug] Change #3294 broke support for the multiple keys in controls. [RT #29694] 3336. [func] Maintain statistics for RRsets tagged as "stale". [RT #29514] 3335. [func] nslookup: return a nonzero exit code when unable to get an answer. [RT #29492] 3334. [bug] Hold a zone table reference while performing a asynchronous load of a zone. [RT #28326] 3333. [bug] Setting resolver-query-timeout too low can cause named to not recover if it loses connectivity. [RT #29623] 3332. [bug] Re-use cached DS rrsets if possible. [RT #29446] 3331. [security] dns_rdataslab_fromrdataset could produce bad rdataslabs. [RT #29644] 3330. [func] Fix missing signatures on NOERROR results despite RPZ rewriting. Also - add optional "recursive-only yes|no" to the response-policy statement - add optional "max-policy-ttl" to the response-policy statement to limit the false data that "recursive-only no" can introduce into resolvers' caches - add a RPZ performance test to bin/tests/system/rpz when queryperf is available. - the encoding of PASSTHRU action to "rpz-passthru". (The old encoding is still accepted.) [RT #26172] 3329. [bug] Handle RRSIG signer-name case consistently: We generate RRSIG records with the signer-name in lower case. We accept them with any case, but if they fail to validate, we try again in lower case. [RT #27451] 3328. [bug] Fixed inconsistent data checking in dst_parse.c. [RT #29401] 3327. [func] Added 'filter-aaaa-on-v6' option; this is similar to 'filter-aaaa-on-v4' but applies to IPv6 connections. (Use "configure --enable-filter-aaaa" to enable this option.) [RT #27308] 3326. [func] Added task list statistics: task model, worker threads, quantum, tasks running, tasks ready. [RT #27678] 3325. [func] Report cache statistics: memory use, number of nodes, number of hash buckets, hit and miss counts. [RT #27056] 3324. [test] Add better tests for ADB stats [RT #27057] 3323. [func] Report the number of buckets the resolver is using. [RT #27020] 3322. [func] Monitor the number of active TCP and UDP dispatches. [RT #27055] 3321. [func] Monitor the number of recursive fetches and the number of open sockets, and report these values in the statistics channel. [RT #27054] 3320. [func] Added support for monitoring of recursing client count. [RT #27009] 3319. [func] Added support for monitoring of ADB entry count and hash size. [RT #27057] 3318. [tuning] Reduce the amount of work performed while holding a bucket lock when finished with a fetch context. [RT #29239] 3317. [func] Add ECDSA support (RFC 6605). [RT #21918] 3316. [tuning] Improved locking performance when recursing. [RT #28836] 3315. [tuning] Use multiple dispatch objects for sending upstream queries; this can improve performance on busy multiprocessor systems by reducing lock contention. [RT #28605] 3314. [bug] The masters list could be updated while stub_callback or refresh_callback were using it. [RT #26732] 3313. [protocol] Add TLSA record type. [RT #28989] 3312. [bug] named-checkconf didn't detect a bad dns64 clients acl. [RT #27631] 3311. [bug] Abort the zone dump if zone->db is NULL in zone.c:zone_gotwritehandle. [RT #29028] 3310. [test] Increase table size for mutex profiling. [RT #28809] 3309. [bug] resolver.c:fctx_finddone() was not thread safe. [RT #27995] 3308. [placeholder] 3307. [bug] Add missing ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS. [RT #28956] 3306. [bug] Improve DNS64 reverse zone performance. [RT #28563] 3305. [func] Add wire format lookup method to sdb. [RT #28563] 3304. [bug] Use hmctx, not mctx when freeing rbtdb->heaps. [RT #28571] 3303. [bug] named could die when reloading. [RT #28606] 3302. [bug] dns_dnssec_findmatchingkeys could fail to find keys if the zone name contained character that required special mappings. [RT #28600] 3301. [contrib] Update queryperf to build on darwin. Add -R flag for non-recursive queries. [RT #28565] 3300. [bug] Named could die if gssapi was enabled in named.conf but was not compiled in. [RT #28338] 3299. [bug] Make SDB handle errors from database drivers better. [RT #28534] 3298. [bug] Named could dereference a NULL pointer in zmgr_start_xfrin_ifquota if the zone was being removed. [RT #28419] 3297. [bug] Named could die on a malformed master file. [RT #28467] 3296. [bug] Named could die with a INSIST failure in client.c:exit_check. [RT #28346] 3295. [bug] Adjust isc_time_secondsastimet range check to be more portable. [RT # 26542] 3294. [bug] isccc/cc.c:table_fromwire failed to free alist on error. [RT #28265] 3293. [func] nsupdate: list supported type. [RT #28261] 3292. [func] Log messages in the axfr stream at debug 10. [RT #28040] 3291. [port] Fixed a build error on systems without ENOTSUP. [RT #28200] 3290. [bug] was not being installed. [RT #28169] 3289. [bug] 'rndc retransfer' failed for inline zones. [RT #28036] 3288. [bug] dlz_destroy() function wasn't correctly registered by the DLZ dlopen driver. [RT #28056] 3287. [port] Update ans.pl to work with Net::DNS 0.68. [RT #28028] 3286. [bug] Managed key maintenance timer could fail to start after 'rndc reconfig'. [RT #26786] 3285. [bug] val-frdataset was incorrectly disassociated in proveunsecure after calling startfinddlvsep. [RT #27928] 3284. [bug] Address race conditions with the handling of rbtnode.deadlink. [RT #27738] 3283. [bug] Raw zones with with more than 512 records in a RRset failed to load. [RT #27863] 3282. [bug] Restrict the TTL of NS RRset to no more than that of the old NS RRset when replacing it. [RT #27792] [RT #27884] 3281. [bug] SOA refresh queries could be treated as cancelled despite succeeding over the loopback interface. [RT #27782] 3280. [bug] Potential double free of a rdataset on out of memory with DNS64. [RT #27762] 3279. [bug] Hold a internal reference to the zone while performing a asynchronous load. Address potential memory leak if the asynchronous is cancelled. [RT #27750] 3278. [bug] Make sure automatic key maintenance is started when "auto-dnssec maintain" is turned on during "rndc reconfig". [RT #26805] 3277. [bug] win32: isc_socket_dup is not implemented. [RT #27696] 3276. [bug] win32: ns_os_openfile failed to return NULL on safe_open failure. [RT #27696] 3275. [bug] Corrected rndc -h output; the 'rndc sync -clean' option had been misspelled as '-clear'. (To avoid future confusion, both options now work.) [RT #27173] 3274. [placeholder] 3273. [bug] AAAA responses could be returned in the additional section even when filter-aaaa-on-v4 was in use. [RT #27292] 3272. [func] New "rndc zonestatus" command prints information about the specified zone. [RT #21671] 3271. [port] darwin: mksymtbl is not always stable, loop several times before giving up. mksymtbl was using non portable perl to covert 64 bit hex strings. [RT #27653] --- 9.9.0rc2 released --- 3270. [bug] "rndc reload" didn't reuse existing zones correctly when inline-signing was in use. [RT #27650] 3269. [port] darwin 11 and later now built threaded by default. 3268. [bug] Convert RRSIG expiry times to 64 timestamps to work out the earliest expiry time. [RT #23311] 3267. [bug] Memory allocation failures could be mis-reported as unexpected error. New ISC_R_UNSET result code. [RT #27336] 3266. [bug] The maximum number of NSEC3 iterations for a DNSKEY RRset was not being properly computed. [RT #26543] 3265. [bug] Corrected a problem with lock ordering in the inline-signing code. [RT #27557] 3264. [bug] Automatic regeneration of signatures in an inline-signing zone could stall when the server was restarted. [RT #27344] 3263. [bug] "rndc sync" did not affect the unsigned side of an inline-signing zone. [RT #27337] 3262. [bug] Signed responses were handled incorrectly by RPZ. [RT #27316] 3261. [func] RRset ordering now defaults to random. [RT #27174] 3260. [bug] "rrset-order cyclic" could appear not to rotate for some query patterns. [RT #27170/27185] --- 9.9.0rc1 released --- 3259. [bug] named-compilezone: Suppress "dump zone to " message when writing to stdout. [RT #27109] 3258. [test] Add "forcing full sign with unreadable keys" test. [RT #27153] 3257. [bug] Do not generate a error message when calling fsync() in a pipe or socket. [RT #27109] 3256. [bug] Disable empty zones for lwresd -C. [RT #27139] 3255. [func] No longer require that a empty zones be explicitly enabled or that a empty zone is disabled for RFC 1918 empty zones to be configured. [RT #27139] 3254. [bug] Set isc_socket_ipv6only() on the IPv6 control channels. [RT #22249] 3253. [bug] Return DNS_R_SYNTAX when the input to a text field is too long. [RT #26956] 3252. [bug] When master zones using inline-signing were updated while the server was offline, the source zone could fall out of sync with the signed copy. They can now resynchronize. [RT #26676] 3251. [bug] Enforce a upper bound (65535 bytes) on the amount of memory dns_sdlz_putrr() can allocate per record to prevent run away memory consumption on ISC_R_NOSPACE. [RT #26956] 3250. [func] 'configure --enable-developer'; turn on various configure options, normally off by default, that we want developers to build and test with. [RT #27103] 3249. [bug] Update log message when saving slave zones files for analysis after load failures. [RT #27087] 3248. [bug] Configure options --enable-fixed-rrset and --enable-exportlib were incompatible with each other. [RT #27087] 3247. [bug] 'raw' format zones failed to preserve load order breaking 'fixed' sort order. [RT #27087] 3246. [bug] Named failed to start with a empty also-notify list. [RT #27087] 3245. [bug] Don't report a error unchanged serials unless there were other changes when thawing a zone with ixfr-fromdifferences. [RT #26845] 3244. [func] Added readline support to nslookup and nsupdate. Also simplified nsupdate syntax to make "update" and "prereq" optional. [RT #24659] 3243. [port] freebsd,netbsd,bsdi: the thread defaults were not being properly set. 3242. [func] Extended the header of raw-format master files to include the serial number of the zone from which they were generated, if different (as in the case of inline-signing zones). This is to be used in inline-signing zones, to track changes between the unsigned and signed versions of the zone, which may have different serial numbers. (Note: raw zonefiles generated by this version of BIND are no longer compatible with prior versions. To generate a backward-compatible raw zonefile using dnssec-signzone or named-compilezone, specify output format "raw=0" instead of simply "raw".) [RT #26587] 3241. [bug] Address race conditions in the resolver code. [RT #26889] 3240. [bug] DNSKEY state change events could be missed. [RT #26874] 3239. [bug] dns_dnssec_findmatchingkeys needs to use a consistent timestamp. [RT #26883] 3238. [bug] keyrdata was not being reinitialized in lib/dns/rbtdb.c:iszonesecure. [RT #26913] 3237. [bug] dig -6 didn't work with +trace. [RT #26906] 3236. [bug] Backed out changes #3182 and #3202, related to EDNS(0) fallback behavior. [RT #26416] 3235. [func] dns_db_diffx, a extended dns_db_diff which returns the generated diff and optionally writes it to a journal. [RT #26386] 3234. [bug] 'make depend' produced invalid makefiles. [RT #26830] 3233. [bug] 'rndc freeze/thaw' didn't work for inline zones. [RT #26632] 3232. [bug] Zero zone->curmaster before return in dns_zone_setmasterswithkeys(). [RT #26732] 3231. [bug] named could fail to send a incompressible zone. [RT #26796] 3230. [bug] 'dig axfr' failed to properly handle a multi-message axfr with a serial of 0. [RT #26796] 3229. [bug] Fix local variable to struct var assignment found by CLANG warning. 3228. [tuning] Dynamically grow symbol table to improve zone loading performance. [RT #26523] 3227. [bug] Interim fix to make WKS's use of getprotobyname() and getservbyname() self thread safe. [RT #26232] 3226. [bug] Address minor resource leakages. [RT #26624] 3225. [bug] Silence spurious "setsockopt(517, IPV6_V6ONLY) failed" messages. [RT #26507] 3224. [bug] 'rndc signing' argument parsing was broken. [RT #26684] 3223. [bug] 'task_test privilege_drop' generated false positives. [RT #26766] 3222. [cleanup] Replace dns_journal_{get,set}_bitws with dns_journal_{get,set}_sourceserial. [RT #26634] 3221. [bug] Fixed a potential core dump on shutdown due to referencing fetch context after it's been freed. [RT #26720] --- 9.9.0b2 released --- 3220. [bug] Change #3186 was incomplete; dns_db_rpz_findips() could fail to set the database version correctly, causing an assertion failure. [RT #26180] 3219. [bug] Disable NOEDNS caching following a timeout. 3218. [security] Cache lookup could return RRSIG data associated with nonexistent records, leading to an assertion failure. [RT #26590] 3217. [cleanup] Fix build problem with --disable-static. [RT #26476] 3216. [bug] resolver.c:validated() was not thread-safe. [RT #26478] 3215. [bug] 'rndc recursing' could cause a core dump. [RT #26495] 3214. [func] Add 'named -U' option to set the number of UDP listener threads per interface. [RT #26485] 3213. [doc] Clarify ixfr-from-differences behavior. [RT #25188] 3212. [bug] rbtdb.c: failed to remove a node from the deadnodes list prior to adding a reference to it leading a possible assertion failure. [RT #23219] 3211. [func] dnssec-signzone: "-f -" prints to stdout; "-O full" option prints in single-line-per-record format. [RT #20287] 3210. [bug] Canceling the oldest query due to recursive-client overload could trigger an assertion failure. [RT #26463] 3209. [func] Add "dnssec-lookaside 'no'". [RT #24858] 3208. [bug] 'dig -y' handle unknown tsig algorithm better. [RT #25522] 3207. [contrib] Fixed build error in Berkeley DB DLZ module. [RT #26444] 3206. [cleanup] Add ISC information to log at start time. [RT #25484] 3205. [func] Upgrade dig's defaults to better reflect modern nameserver behavior. Enable "dig +adflag" and "dig +edns=0" by default. Enable "+dnssec" when running "dig +trace". [RT #23497] 3204. [bug] When a master server that has been marked as unreachable sends a NOTIFY, mark it reachable again. [RT #25960] 3203. [bug] Increase log level to 'info' for validation failures from expired or not-yet-valid RRSIGs. [RT #21796] 3202. [bug] NOEDNS caching on timeout was too aggressive. [RT #26416] 3201. [func] 'rndc querylog' can now be given an on/off parameter instead of only being used as a toggle. [RT #18351] 3200. [doc] Some rndc functions were undocumented or were missing from 'rndc -h' output. [RT #25555] 3199. [func] When logging client information, include the name being queried. [RT #25944] 3198. [doc] Clarified that dnssec-settime can alter keyfile permissions. [RT #24866] 3197. [bug] Don't try to log the filename and line number when the config parser can't open a file. [RT #22263] 3196. [bug] nsupdate: return nonzero exit code when target zone doesn't exist. [RT #25783] 3195. [cleanup] Silence "file not found" warnings when loading managed-keys zone. [RT #26340] 3194. [doc] Updated RFC references in the 'empty-zones-enable' documentation. [RT #25203] 3193. [cleanup] Changed MAXZONEKEYS to DNS_MAXZONEKEYS, moved to dnssec.h. [RT #26415] 3192. [bug] A query structure could be used after being freed. [RT #22208] 3191. [bug] Print NULL records using "unknown" format. [RT #26392] 3190. [bug] Underflow in error handling in isc_mutexblock_init. [RT #26397] 3189. [test] Added a summary report after system tests. [RT #25517] 3188. [bug] zone.c:zone_refreshkeys() could fail to detach references correctly when errors occurred, causing a hang on shutdown. [RT #26372] 3187. [port] win32: support for Visual Studio 2008. [RT #26356] --- 9.9.0b1 released --- 3186. [bug] Version/db mismatch in rpz code. [RT #26180] 3185. [func] New 'rndc signing' option for auto-dnssec zones: - 'rndc signing -list' displays the current state of signing operations - 'rndc signing -clear' clears the signing state records for keys that have fully signed the zone - 'rndc signing -nsec3param' sets the NSEC3 parameters for the zone The 'rndc keydone' syntax is removed. [RT #23729] 3184. [bug] named had excessive cpu usage when a redirect zone was configured. [RT #26013] 3183. [bug] Added RTLD_GLOBAL flag to dlopen call. [RT #26301] 3182. [bug] Auth servers behind firewalls which block packets greater than 512 bytes may cause other servers to perform poorly. Now, adb retains edns information and caches noedns servers. [RT #23392/24964] 3181. [func] Inline-signing is now supported for master zones. [RT #26224] 3180. [func] Local copies of slave zones are now saved in raw format by default, to improve startup performance. 'masterfile-format text;' can be used to override the default, if desired. [RT #25867] 3179. [port] kfreebsd: build issues. [RT #26273] 3178. [bug] A race condition introduced by change #3163 could cause an assertion failure on shutdown. [RT #26271] 3177. [func] 'rndc keydone', remove the indicator record that named has finished signing the zone with the corresponding key. [RT #26206] 3176. [doc] Corrected example code and added a README to the sample external DLZ module in contrib/dlz/example. [RT #26215] 3175. [bug] Fix how DNSSEC positive wildcard responses from a NSEC3 signed zone are validated. Stop sending a unnecessary NSEC3 record when generating such responses. [RT #26200] 3174. [bug] Always compute to revoked key tag from scratch. [RT #26186] 3173. [port] Correctly validate root DS responses. [RT #25726] 3172. [port] darwin 10.* and freebsd [89] are now built threaded by default. 3171. [bug] Exclusively lock the task when adding a zone using 'rndc addzone'. [RT #25600] --- 9.9.0a3 released --- 3170. [func] RPZ update: - fix precedence among competing rules - improve ARM text including documenting rule precedence - try to rewrite CNAME chains until first hit - new "rpz" logging channel - RDATA for CNAME rules can include wildcards - replace "NO-OP" named.conf policy override with "PASSTHRU" and add "DISABLED" override ("NO-OP" is still recognized) [RT #25172] 3169. [func] Catch db/version mis-matches when calling dns_db_*(). [RT #26017] 3168. [bug] Nxdomain redirection could trigger an assert with a ANY query. [RT #26017] 3167. [bug] Negative answers from forwarders were not being correctly tagged making them appear to not be cached. [RT #25380] 3166. [bug] Upgrading a zone to support inline-signing failed. [RT #26014] 3165. [bug] dnssec-signzone could generate new signatures when resigning, even when valid signatures were already present. [RT #26025] 3164. [func] Enable DLZ modules to retrieve client information, so that responses can be changed depending on the source address of the query. [RT #25768] 3163. [bug] Use finer-grained locking in client.c to address concurrency problems with large numbers of threads. [RT #26044] 3162. [test] start.pl: modified to allow for "named.args" in ns*/ subdirectory to override stock arguments to named. Largely from RT #26044, but no separate ticket. 3161. [bug] zone.c:del_sigs failed to always reset rdata leading assertion failures. [RT #25880] 3160. [bug] When printing out a NSEC3 record in multiline form the newline was not being printed causing type codes to be run together. [RT #25873] 3159. [bug] On some platforms, named could assert on startup when running in a chrooted environment without /proc. [RT #25863] 3158. [bug] Recursive servers would prefer a particular UDP socket instead of using all available sockets. [RT #26038] 3157. [tuning] Reduce the time spent in "rndc reconfig" by parsing the config file before pausing the server. [RT #21373] 3156. [placeholder] --- 9.9.0a2 released --- 3155. [bug] Fixed a build failure when using contrib DLZ drivers (e.g., mysql, postgresql, etc). [RT #25710] 3154. [bug] Attempting to print an empty rdataset could trigger an assert. [RT #25452] 3153. [func] Extend request-ixfr to zone level and remove the side effect of forcing an AXFR. [RT #25156] 3152. [cleanup] Some versions of gcc and clang failed due to incorrect use of __builtin_expect. [RT #25183] 3151. [bug] Queries for type RRSIG or SIG could be handled incorrectly. [RT #21050] 3150. [func] Improved startup and reconfiguration time by enabling zones to load in multiple threads. [RT #25333] 3149. [placeholder] 3148. [bug] Processing of normal queries could be stalled when forwarding a UPDATE message. [RT #24711] 3147. [func] Initial inline signing support. [RT #23657] --- 9.9.0a1 released --- 3146. [test] Fixed gcc4.6.0 errors in ATF. [RT #25598] 3145. [test] Capture output of ATF unit tests in "./atf.out" if there were any errors while running them. [RT #25527] 3144. [bug] dns_dbiterator_seek() could trigger an assert when used with a nonexistent database node. [RT #25358] 3143. [bug] Silence clang compiler warnings. [RT #25174] 3142. [bug] NAPTR is class agnostic. [RT #25429] 3141. [bug] Silence spurious "zone serial (0) unchanged" messages associated with empty zones. [RT #25079] 3140. [func] New command "rndc flushtree " clears the specified name from the server cache along with all names under it. [RT #19970] 3139. [test] Added tests from RFC 6234, RFC 2202, and RFC 1321 for the hashing algorithms (md5, sha1 - sha512, and their hmac counterparts). [RT #25067] 3138. [bug] Address memory leaks and out-of-order operations when shutting named down. [RT #25210] 3137. [func] Improve hardware scalability by allowing multiple worker threads to process incoming UDP packets. This can significantly increase query throughput on some systems. [RT #22992] 3136. [func] Add RFC 1918 reverse zones to the list of built-in empty zones switched on by the 'empty-zones-enable' option. [RT #24990] 3135. [port] FreeBSD: workaround broken IPV6_USE_MIN_MTU processing. See http://www.freebsd.org/cgi/query-pr.cgi?pr=158307 [RT #24950] 3134. [bug] Improve the accuracy of dnssec-signzone's signing statistics. [RT #16030] 3133. [bug] Change #3114 was incomplete. [RT #24577] 3132. [placeholder] 3131. [tuning] Improve scalability by allocating one zone task per 100 zones at startup time, rather than using a fixed-size task table. [RT #24406] 3130. [func] Support alternate methods for managing a dynamic zone's serial number. Two methods are currently defined using serial-update-method, "increment" (default) and "unixtime". [RT #23849] 3129. [bug] Named could crash on 'rndc reconfig' when allow-new-zones was set to yes and named ACLs were used. [RT #22739] 3128. [func] Inserting an NSEC3PARAM via dynamic update in an auto-dnssec zone that has not been signed yet will cause it to be signed with the specified NSEC3 parameters when keys are activated. The NSEC3PARAM record will not appear in the zone until it is signed, but the parameters will be stored. [RT #23684] 3127. [bug] 'rndc thaw' will now remove a zone's journal file if the zone serial number has been changed and ixfr-from-differences is not in use. [RT #24687] 3126. [security] Using DNAME record to generate replacements caused RPZ to exit with a assertion failure. [RT #24766] 3125. [security] Using wildcard CNAME records as a replacement with RPZ caused named to exit with a assertion failure. [RT #24715] 3124. [bug] Use an rdataset attribute flag to indicate negative-cache records rather than using rrtype 0; this will prevent problems when that rrtype is used in actual DNS packets. [RT #24777] 3123. [security] Change #2912 exposed a latent flaw in dns_rdataset_totext() that could cause named to crash with an assertion failure. [RT #24777] 3122. [cleanup] dnssec-settime: corrected usage message. [RT #24664] 3121. [security] An authoritative name server sending a negative response containing a very large RRset could trigger an off-by-one error in the ncache code and crash named. [RT #24650] 3120. [bug] Named could fail to validate zones listed in a DLV that validated insecure without using DLV and had DS records in the parent zone. [RT #24631] 3119. [bug] When rolling to a new DNSSEC key, a private-type record could be created and never marked complete. [RT #23253] 3118. [bug] nsupdate could dump core on shutdown when using SIG(0) keys. [RT #24604] 3117. [cleanup] Remove doc and parser references to the never-implemented 'auto-dnssec create' option. [RT #24533] 3116. [func] New 'dnssec-update-mode' option controls updates of DNSSEC records in signed dynamic zones. Set to 'no-resign' to disable automatic RRSIG regeneration while retaining the ability to sign new or changed data. [RT #24533] 3115. [bug] Named could fail to return requested data when following a CNAME that points into the same zone. [RT #24455] 3114. [bug] Retain expired RRSIGs in dynamic zones if key is inactive and there is no replacement key. [RT #23136] 3113. [doc] Document the relationship between serial-query-rate and NOTIFY messages. 3112. [doc] Add missing descriptions of the update policy name types "ms-self", "ms-subdomain", "krb5-self" and "krb5-subdomain", which allow machines to update their own records, to the BIND 9 ARM. 3111. [bug] Improved consistency checks for dnssec-enable and dnssec-validation, added test cases to the checkconf system test. [RT #24398] 3110. [bug] dnssec-signzone: Wrong error message could appear when attempting to sign with no KSK. [RT #24369] 3109. [func] The also-notify option now uses the same syntax as a zone's masters clause. This means it is now possible to specify a TSIG key to use when sending notifies to a given server, or to include an explicit named masters list in an also-notify statement. [RT #23508] 3108. [cleanup] dnssec-signzone: Clarified some error and warning messages; removed #ifdef ALLOW_KSKLESS_ZONES code (use -P instead). [RT #20852] 3107. [bug] dnssec-signzone: Report the correct number of ZSKs when using -x. [RT #20852] 3106. [func] When logging client requests, include the name of the TSIG key if any. [RT #23619] 3105. [bug] GOST support can be suppressed by "configure --without-gost" [RT #24367] 3104. [bug] Better support for cross-compiling. [RT #24367] 3103. [bug] Configuring 'dnssec-validation auto' in a view instead of in the options statement could trigger an assertion failure in named-checkconf. [RT #24382] 3102. [func] New 'dnssec-loadkeys-interval' option configures how often, in minutes, to check the key repository for updates when using automatic key maintenance. Default is every 60 minutes (formerly hard-coded to 12 hours). [RT #23744] 3101. [bug] Zones using automatic key maintenance could fail to check the key repository for updates. [RT #23744] 3100. [security] Certain response policy zone configurations could trigger an INSIST when receiving a query of type RRSIG. [RT #24280] 3099. [test] "dlz" system test now runs but gives R:SKIPPED if not compiled with --with-dlz-filesystem. [RT #24146] 3098. [bug] DLZ zones were answering without setting the AA bit. [RT #24146] 3097. [test] Add a tool to test handling of malformed packets. [RT #24096] 3096. [bug] Set KRB5_KTNAME before calling log_cred() in dst_gssapi_acceptctx(). [RT #24004] 3095. [bug] Handle isolated reserved ports in the port range. [RT #23957] 3094. [doc] Expand dns64 documentation. 3093. [bug] Fix gssapi/kerberos dependencies [RT #23836] 3092. [bug] Signatures for records at the zone apex could go stale due to an incorrect timer setting. [RT #23769] 3091. [bug] Fixed a bug in which zone keys that were published and then subsequently activated could fail to trigger automatic signing. [RT #22911] 3090. [func] Make --with-gssapi default [RT #23738] 3089. [func] dnssec-dsfromkey now supports reading keys from standard input "dnssec-dsfromkey -f -". [RT #20662] 3088. [bug] Remove bin/tests/system/logfileconfig/ns1/named.conf and add setup.sh in order to resolve changing named.conf issue. [RT #23687] 3087. [bug] DDNS updates using SIG(0) with update-policy match type "external" could cause a crash. [RT #23735] 3086. [bug] Running dnssec-settime -f on an old-style key will now force an update to the new key format even if no other change has been specified, using "-P now -A now" as default values. [RT #22474] 3085. [func] New '-R' option in dnssec-signzone forces removal of signatures which have not yet expired but were generated by a key that no longer exists. [RT #22471] 3084. [func] A new command "rndc sync" dumps pending changes in a dynamic zone to disk; "rndc sync -clean" also removes the journal file after syncing. Also, "rndc freeze" no longer removes journal files. [RT #22473] 3083. [bug] NOTIFY messages were not being sent when generating a NSEC3 chain incrementally. [RT #23702] 3082. [port] strtok_r is threads only. [RT #23747] 3081. [bug] Failure of DNAME substitution did not return YXDOMAIN. [RT #23591] 3080. [cleanup] Replaced compile time constant by STDTIME_ON_32BITS. [RT #23587] 3079. [bug] Handle isc_event_allocate failures in t_tasks. [RT #23572] 3078. [func] Added a new include file with function typedefs for the DLZ "dlopen" driver. [RT #23629] 3077. [bug] zone.c:zone_refreshkeys() incorrectly called dns_zone_attach(), use zone->irefs instead. [RT #23303] 3076. [func] New '-L' option in dnssec-keygen, dnsset-settime, and dnssec-keyfromlabel sets the default TTL of the key. When possible, automatic signing will use that TTL when the key is published. [RT #23304] 3075. [bug] dns_dnssec_findzonekeys{2} used a inconsistent timestamp when determining which keys are active. [RT #23642] 3074. [bug] Make the adb cache read through for zone data and glue learn for zone named is authoritative for. [RT #22842] 3073. [bug] managed-keys changes were not properly being recorded. [RT #20256] 3072. [bug] dns_dns64_aaaaok() potential NULL pointer dereference. [RT #20256] 3071. [bug] has_nsec could be used uninitialized in update.c:next_active. [RT #20256] 3070. [bug] dnssec-signzone potential NULL pointer dereference. [RT #20256] 3069. [cleanup] Silence warnings messages from clang static analysis. [RT #20256] 3068. [bug] Named failed to build with a OpenSSL without engine support. [RT #23473] 3067. [bug] ixfr-from-differences {master|slave}; failed to select the master/slave zones. [RT #23580] 3066. [func] The DLZ "dlopen" driver is now built by default, no longer requiring a configure option. To disable it, use "configure --without-dlopen". Driver also supported on win32. [RT #23467] 3065. [bug] RRSIG could have time stamps too far in the future. [RT #23356] 3064. [bug] powerpc: add sync instructions to the end of atomic operations. [RT #23469] 3063. [contrib] More verbose error reporting from DLZ LDAP. [RT #23402] 3062. [func] Made several changes to enhance human readability of DNSSEC data in dig output and in generated zone files: - DNSKEY record comments are more verbose, no longer used in multiline mode only - multiline RRSIG records reformatted - multiline output mode for NSEC3PARAM records - "dig +norrcomments" suppresses DNSKEY comments - "dig +split=X" breaks hex/base64 records into fields of width X; "dig +nosplit" disables this. [RT #22820] 3061. [func] New option "dnssec-signzone -D", only write out generated DNSSEC records. [RT #22896] 3060. [func] New option "dnssec-signzone -X " allows specification of a separate expiration date for DNSKEY RRSIGs and other RRSIGs. [RT #22141] 3059. [test] Added a regression test for change #3023. 3058. [bug] Cause named to terminate at startup or rndc reconfig/ reload to fail, if a log file specified in the conf file isn't a plain file. [RT #22771] 3057. [bug] "rndc secroots" would abort after the first error and so could miss some views. [RT #23488] 3056. [func] Added support for URI resource record. [RT #23386] 3055. [placeholder] 3054. [bug] Added elliptic curve support check in GOST OpenSSL engine detection. [RT #23485] 3053. [bug] Under a sustained high query load with a finite max-cache-size, it was possible for cache memory to be exhausted and not recovered. [RT #23371] 3052. [test] Fixed last autosign test report. [RT #23256] 3051. [bug] NS records obscure DNAME records at the bottom of the zone if both are present. [RT #23035] 3050. [bug] The autosign system test was timing dependent. Wait for the initial autosigning to complete before running the rest of the test. [RT #23035] 3049. [bug] Save and restore the gid when creating creating named.pid at startup. [RT #23290] 3048. [bug] Fully separate view key management. [RT #23419] 3047. [bug] DNSKEY NODATA responses not cached fixed in validator.c. Tests added to dnssec system test. [RT #22908] 3046. [bug] Use RRSIG original TTL to compute validated RRset and RRSIG TTL. [RT #23332] 3045. [removed] Replaced by change #3050. 3044. [bug] Hold the socket manager lock while freeing the socket. [RT #23333] 3043. [test] Merged in the NetBSD ATF test framework (currently version 0.12) for development of future unit tests. Use configure --with-atf to build ATF internally or configure --with-atf=prefix to use an external copy. [RT #23209] 3042. [bug] dig +trace could fail attempting to use IPv6 addresses on systems with only IPv4 connectivity. [RT #23297] 3041. [bug] dnssec-signzone failed to generate new signatures on ttl changes. [RT #23330] 3040. [bug] Named failed to validate insecure zones where a node with a CNAME existed between the trust anchor and the top of the zone. [RT #23338] 3039. [func] Redirect on NXDOMAIN support. [RT #23146] 3038. [bug] Install . [RT #23342] 3037. [doc] Update COPYRIGHT to contain all the individual copyright notices that cover various parts. 3036. [bug] Check built-in zone arguments to see if the zone is re-usable or not. [RT #21914] 3035. [cleanup] Simplify by using strlcpy. [RT #22521] 3034. [cleanup] nslookup: use strlcpy instead of safecopy. [RT #22521] 3033. [cleanup] Add two INSIST(bucket != DNS_ADB_INVALIDBUCKET). [RT #22521] 3032. [bug] rdatalist.c: add missing REQUIREs. [RT #22521] 3031. [bug] dns_rdataclass_format() handle a zero sized buffer. [RT #22521] 3030. [bug] dns_rdatatype_format() handle a zero sized buffer. [RT #22521] 3029. [bug] isc_netaddr_format() handle a zero sized buffer. [RT #22521] 3028. [bug] isc_sockaddr_format() handle a zero sized buffer. [RT #22521] 3027. [bug] Add documented REQUIREs to cfg_obj_asnetprefix() to catch NULL pointer dereferences before they happen. [RT #22521] 3026. [bug] lib/isc/httpd.c: check that we have enough space after calling grow_headerspace() and if not re-call grow_headerspace() until we do. [RT #22521] 3025. [bug] Fixed a possible deadlock due to zone resigning. [RT #22964] 3024. [func] RTT Banding removed due to minor security increase but major impact on resolver latency. [RT #23310] 3023. [bug] Named could be left in an inconsistent state when receiving multiple AXFR response messages that were not all TSIG-signed. [RT #23254] 3022. [bug] Fixed rpz SERVFAILs after failed zone transfers [RT #23246] 3021. [bug] Change #3010 was incomplete. [RT #22296] 3020. [bug] auto-dnssec failed to correctly update the zone when changing the DNSKEY RRset. [RT #23232] 3019. [test] Test: check apex NSEC3 records after adding DNSKEY record via UPDATE. [RT #23229] 3018. [bug] Named failed to check for the "none;" acl when deciding if a zone may need to be re-signed. [RT #23120] 3017. [doc] dnssec-keyfromlabel -I was not properly documented. [RT #22887] 3016. [bug] rndc usage missing '-b'. [RT #22937] 3015. [port] win32: fix IN6_IS_ADDR_LINKLOCAL and IN6_IS_ADDR_SITELOCAL macros. [RT #22724] 3014. [placeholder] 3013. [bug] The DNS64 ttl was not always being set as expected. [RT #23034] 3012. [bug] Remove DNSKEY TTL change pairs before generating signing records for any remaining DNSKEY changes. [RT #22590] 3011. [func] Change the default query timeout from 30 seconds to 10. Allow setting this in named.conf using the new 'resolver-query-timeout' option, which specifies a max time in seconds. 0 means 'default' and anything longer than 30 will be silently set to 30. [RT #22852] 3010. [bug] Fixed a bug where "rndc reconfig" stopped the timer for refreshing managed-keys. [RT #22296] 3009. [bug] clients-per-query code didn't work as expected with particular query patterns. [RT #22972] --- 9.8.0b1 released --- 3008. [func] Response policy zones (RPZ) support. [RT #21726] 3007. [bug] Named failed to preserve the case of domain names in rdata which is not compressible when writing master files. [RT #22863] 3006. [func] Allow dynamically generated TSIG keys to be preserved across restarts of named. Initially this is for TSIG keys generated using GSSAPI. [RT #22639] 3005. [port] Solaris: Work around the lack of gsskrb5_register_acceptor_identity() by setting the KRB5_KTNAME environment variable to the contents of tkey-gssapi-keytab. Also fixed test errors on MacOSX. [RT #22853] 3004. [func] DNS64 reverse support. [RT #22769] 3003. [experimental] Added update-policy match type "external", enabling named to defer the decision of whether to allow a dynamic update to an external daemon. (Contributed by Andrew Tridgell.) [RT #22758] 3002. [bug] isc_mutex_init_errcheck() failed to destroy attr. [RT #22766] 3001. [func] Added a default trust anchor for the root zone, which can be switched on by setting "dnssec-validation auto;" in the named.conf options. [RT #21727] 3000. [bug] More TKEY/GSS fixes: - nsupdate can now get the default realm from the user's Kerberos principal - corrected gsstest compilation flags - improved documentation - fixed some NULL dereferences [RT #22795] 2999. [func] Add GOST support (RFC 5933). [RT #20639] 2998. [func] Add isc_task_beginexclusive and isc_task_endexclusive to the task api. [RT #22776] 2997. [func] named -V now reports the OpenSSL and libxml2 versions it was compiled against. [RT #22687] 2996. [security] Temporarily disable SO_ACCEPTFILTER support. [RT #22589] 2995. [bug] The Kerberos realm was not being correctly extracted from the signer's identity. [RT #22770] 2994. [port] NetBSD: use pthreads by default on NetBSD >= 5.0, and do not use threads on earlier versions. Also kill the unproven-pthreads, mit-pthreads, and ptl2 support. 2993. [func] Dynamically grow adb hash tables. [RT #21186] 2992. [contrib] contrib/check-secure-delegation.pl: A simple tool for looking at a secure delegation. [RT #22059] 2991. [contrib] contrib/zone-edit.sh: A simple zone editing tool for dynamic zones. [RT #22365] 2990. [bug] 'dnssec-settime -S' no longer tests prepublication interval validity when the interval is set to 0. [RT #22761] 2989. [func] Added support for writable DLZ zones. (Contributed by Andrew Tridgell of the Samba project.) [RT #22629] 2988. [experimental] Added a "dlopen" DLZ driver, allowing the creation of external DLZ drivers that can be loaded as shared objects at runtime rather than linked with named. Currently this is switched on via a compile-time option, "configure --with-dlz-dlopen". Note: the syntax for configuring DLZ zones is likely to be refined in future releases. (Contributed by Andrew Tridgell of the Samba project.) [RT #22629] 2987. [func] Improve ease of configuring TKEY/GSS updates by adding a "tkey-gssapi-keytab" option. If set, updates will be allowed with any key matching a principal in the specified keytab file. "tkey-gssapi-credential" is no longer required and is expected to be deprecated. (Contributed by Andrew Tridgell of the Samba project.) [RT #22629] 2986. [func] Add new zone type "static-stub". It's like a stub zone, but the nameserver names and/or their IP addresses are statically configured. [RT #21474] 2985. [bug] Add a regression test for change #2896. [RT #21324] 2984. [bug] Don't run MX checks when the target of the MX record is ".". [RT #22645] 2983. [bug] Include "loadkeys" in rndc help output. [RT #22493] --- 9.8.0a1 released --- 2982. [bug] Reference count dst keys. dst_key_attach() can be used increment the reference count. Note: dns_tsigkey_createfromkey() callers should now always call dst_key_free() rather than setting it to NULL on success. [RT #22672] 2981. [func] Partial DNS64 support (AAAA synthesis). [RT #21991] 2980. [bug] named didn't properly handle UPDATES that changed the TTL of the NSEC3PARAM RRset. [RT #22363] 2979. [bug] named could deadlock during shutdown if two "rndc stop" commands were issued at the same time. [RT #22108] 2978. [port] hpux: look for [RT #21919] 2977. [bug] 'nsupdate -l' report if the session key is missing. [RT #21670] 2976. [bug] named could die on exit after negotiating a GSS-TSIG key. [RT #22573] 2975. [bug] rbtdb.c:cleanup_dead_nodes_callback() acquired the wrong lock which could lead to server deadlock. [RT #22614] 2974. [bug] Some valid UPDATE requests could fail due to a consistency check examining the existing version of the zone rather than the new version resulting from the UPDATE. [RT #22413] 2973. [bug] bind.keys.h was being removed by the "make clean" at the end of configure resulting in build failures where there is very old version of perl installed. Move it to "make maintainer-clean". [RT #22230] 2972. [bug] win32: address windows socket errors. [RT #21906] 2971. [bug] Fixed a bug that caused journal files not to be compacted on Windows systems as a result of non-POSIX-compliant rename() semantics. [RT #22434] 2970. [security] Adding a NO DATA negative cache entry failed to clear any matching RRSIG records. A subsequent lookup of of NO DATA cache entry could trigger a INSIST when the unexpected RRSIG was also returned with the NO DATA cache entry. CVE-2010-3613, VU#706148. [RT #22288] 2969. [security] Fix acl type processing so that allow-query works in options and view statements. Also add a new set of tests to verify proper functioning. CVE-2010-3615, VU#510208. [RT #22418] 2968. [security] Named could fail to prove a data set was insecure before marking it as insecure. One set of conditions that can trigger this occurs naturally when rolling DNSKEY algorithms. CVE-2010-3614, VU#837744. [RT #22309] 2967. [bug] 'host -D' now turns on debugging messages earlier. [RT #22361] 2966. [bug] isc_print_vsnprintf() failed to check if there was space available in the buffer when adding a left justified character with a non zero width, (e.g. "%-1c"). [RT #22270] 2965. [func] Test HMAC functions using test data from RFC 2104 and RFC 4634. [RT #21702] 2964. [placeholder] 2963. [security] The allow-query acl was being applied instead of the allow-query-cache acl to cache lookups. [RT #22114] 2962. [port] win32: add more dependencies to BINDBuild.dsw. [RT #22062] 2961. [bug] Be still more selective about the non-authoritative answers we apply change 2748 to. [RT #22074] 2960. [func] Check that named accepts non-authoritative answers. [RT #21594] 2959. [func] Check that named starts with a missing masterfile. [RT #22076] 2958. [bug] named failed to start with a missing master file. [RT #22076] 2957. [bug] entropy_get() and entropy_getpseudo() failed to match the API for RAND_bytes() and RAND_pseudo_bytes() respectively. [RT #21962] 2956. [port] Enable atomic operations on the PowerPC64. [RT #21899] 2955. [func] Provide more detail in the recursing log. [RT #22043] 2954. [bug] contrib: dlz_mysql_driver.c bad error handling on build_sqldbinstance failure. [RT #21623] 2953. [bug] Silence spurious "expected covering NSEC3, got an exact match" message when returning a wildcard no data response. [RT #21744] 2952. [port] win32: named-checkzone and named-checkconf failed to initialize winsock. [RT #21932] 2951. [bug] named failed to generate a correct signed response in a optout, delegation only zone with no secure delegations. [RT #22007] 2950. [bug] named failed to perform a SOA up to date check when falling back to TCP on UDP timeouts when ixfr-from-differences was set. [RT #21595] 2949. [bug] dns_view_setnewzones() contained a memory leak if it was called multiple times. [RT #21942] 2948. [port] MacOS: provide a mechanism to configure the test interfaces at reboot. See bin/tests/system/README for details. 2947. [placeholder] 2946. [doc] Document the default values for the minimum and maximum zone refresh and retry values in the ARM. [RT #21886] 2945. [doc] Update empty-zones list in ARM. [RT #21772] 2944. [maint] Remove ORCHID prefix from built in empty zones. [RT #21772] 2943. [func] Add support to load new keys into managed zones without signing immediately with "rndc loadkeys". Add support to link keys with "dnssec-keygen -S" and "dnssec-settime -S". [RT #21351] 2942. [contrib] zone2sqlite failed to setup the entropy sources. [RT #21610] 2941. [bug] sdb and sdlz (dlz's zone database) failed to support DNAME at the zone apex. [RT #21610] 2940. [port] Remove connection aborted error message on Windows. [RT #21549] 2939. [func] Check that named successfully skips NSEC3 records that fail to match the NSEC3PARAM record currently in use. [RT #21868] 2938. [bug] When generating signed responses, from a signed zone that uses NSEC3, named would use a uninitialized pointer if it needed to skip a NSEC3 record because it didn't match the selected NSEC3PARAM record for zone. [RT #21868] 2937. [bug] Worked around an apparent race condition in over memory conditions. Without this fix a DNS cache DB or ADB could incorrectly stay in an over memory state, effectively refusing further caching, which subsequently made a BIND 9 caching server unworkable. This fix prevents this problem from happening by polling the state of the memory context, rather than making a copy of the state, which appeared to cause a race. This is a "workaround" in that it doesn't solve the possible race per se, but several experiments proved this change solves the symptom. Also, the polling overhead hasn't been reported to be an issue. This bug should only affect a caching server that specifies a finite max-cache-size. It's also quite likely that the bug happens only when enabling threads, but it's not confirmed yet. [RT #21818] 2936. [func] Improved configuration syntax and multiple-view support for addzone/delzone feature (see change #2930). Removed "new-zone-file" option, replaced with "allow-new-zones (yes|no)". The new-zone-file for each view is now created automatically, with a filename generated from a hash of the view name. It is no longer necessary to "include" the new-zone-file in named.conf; this happens automatically. Zones that were not added via "rndc addzone" can no longer be removed with "rndc delzone". [RT #19447] 2935. [bug] nsupdate: improve 'file not found' error message. [RT #21871] 2934. [bug] Use ANSI C compliant shift range in lib/isc/entropy.c. [RT #21871] 2933. [bug] 'dig +nsid' used stack memory after it went out of scope. This could potentially result in a unknown, potentially malformed, EDNS option being sent instead of the desired NSID option. [RT #21781] 2932. [cleanup] Corrected a numbering error in the "dnssec" test. [RT #21597] 2931. [bug] Temporarily and partially disable change 2864 because it would cause infinite attempts of RRSIG queries. This is an urgent care fix; we'll revisit the issue and complete the fix later. [RT #21710] 2930. [experimental] New "rndc addzone" and "rndc delzone" commands allow dynamic addition and deletion of zones. To enable this feature, specify a "new-zone-file" option at the view or options level in named.conf. Zone configuration information for the new zones will be written into that file. To make the new zones persist after a restart, "include" the file into named.conf in the appropriate view. (Note: This feature is not yet documented, and its syntax is expected to change.) [RT #19447] 2929. [bug] Improved handling of GSS security contexts: - added LRU expiration for generated TSIGs - added the ability to use a non-default realm - added new "realm" keyword in nsupdate - limited lifetime of generated keys to 1 hour or the lifetime of the context (whichever is smaller) [RT #19737] 2928. [bug] Be more selective about the non-authoritative answer we apply change 2748 to. [RT #21594] 2927. [placeholder] 2926. [placeholder] 2925. [bug] Named failed to accept uncachable negative responses from insecure zones. [RT #21555] 2924. [func] 'rndc secroots' dump a combined summary of the current managed keys combined with trusted keys. [RT #20904] 2923. [bug] 'dig +trace' could drop core after "connection timeout". [RT #21514] 2922. [contrib] Update zkt to version 1.0. 2921. [bug] The resolver could attempt to destroy a fetch context too soon. [RT #19878] 2920. [func] Allow 'filter-aaaa-on-v4' to be applied selectively to IPv4 clients. New acl 'filter-aaaa' (default any). 2919. [func] Add autosign-ksk and autosign-zsk virtual time tests. [RT #20840] 2918. [maint] Add AAAA address for I.ROOT-SERVERS.NET. 2917. [func] Virtual time test framework. [RT #20801] 2916. [func] Add framework to use IPv6 in tests. fd92:7065:b8e:ffff::1 ... fd92:7065:b8e:ffff::7 2915. [cleanup] Be smarter about which objects we attempt to compile based on configure options. [RT #21444] 2914. [bug] Make the "autosign" system test more portable. [RT #20997] 2913. [func] Add pkcs#11 system tests. [RT #20784] 2912. [func] Windows clients don't like UPDATE responses that clear the zone section. [RT #20986] 2911. [bug] dnssec-signzone didn't handle out of zone records well. [RT #21367] 2910. [func] Sanity check Kerberos credentials. [RT #20986] 2909. [bug] named-checkconf -p could die if "update-policy local;" was specified in named.conf. [RT #21416] 2908. [bug] It was possible for re-signing to stop after removing a DNSKEY. [RT #21384] 2907. [bug] The export version of libdns had undefined references. [RT #21444] 2906. [bug] Address RFC 5011 implementation issues. [RT #20903] 2905. [port] aix: set use_atomic=yes with native compiler. [RT #21402] 2904. [bug] When using DLV, sub-zones of the zones in the DLV, could be incorrectly marked as insecure instead of secure leading to negative proofs failing. This was a unintended outcome from change 2890. [RT #21392] 2903. [bug] managed-keys-directory missing from namedconf.c. [RT #21370] 2902. [func] Add regression test for change 2897. [RT #21040] 2901. [port] Use AC_C_FLEXIBLE_ARRAY_MEMBER. [RT #21316] 2900. [bug] The placeholder negative caching element was not properly constructed triggering a INSIST in dns_ncache_towire(). [RT #21346] 2899. [port] win32: Support linking against OpenSSL 1.0.0. 2898. [bug] nslookup leaked memory when -domain=value was specified. [RT #21301] 2897. [bug] NSEC3 chains could be left behind when transitioning to insecure. [RT #21040] 2896. [bug] "rndc sign" failed to properly update the zone when adding a DNSKEY for publication only. [RT #21045] 2895. [func] genrandom: add support for the generation of multiple files. [RT #20917] 2894. [contrib] DLZ LDAP support now use '$' not '%'. [RT #21294] 2893. [bug] Improve managed keys support. New named.conf option managed-keys-directory. [RT #20924] 2892. [bug] Handle REVOKED keys better. [RT #20961] 2891. [maint] Update empty-zones list to match draft-ietf-dnsop-default-local-zones-13. [RT #21099] 2890. [bug] Handle the introduction of new trusted-keys and DS, DLV RRsets better. [RT #21097] 2889. [bug] Elements of the grammar where not properly reported. [RT #21046] 2888. [bug] Only the first EDNS option was displayed. [RT #21273] 2887. [bug] Report the keytag times in UTC in the .key file, local time is presented as a comment within the comment. [RT #21223] 2886. [bug] ctime() is not thread safe. [RT #21223] 2885. [bug] Improve -fno-strict-aliasing support probing in configure. [RT #21080] 2884. [bug] Insufficient validation in dns_name_getlabelsequence(). [RT #21283] 2883. [bug] 'dig +short' failed to handle really large datasets. [RT #21113] 2882. [bug] Remove memory context from list of active contexts before clearing 'magic'. [RT #21274] 2881. [bug] Reduce the amount of time the rbtdb write lock is held when closing a version. [RT #21198] 2880. [cleanup] Make the output of dnssec-keygen and dnssec-revoke consistent. [RT #21078] 2879. [contrib] DLZ bdbhpt driver fails to close correct cursor. [RT #21106] 2878. [func] Incrementally write the master file after performing a AXFR. [RT #21010] 2877. [bug] The validator failed to skip obviously mismatching RRSIGs. [RT #21138] 2876. [bug] Named could return SERVFAIL for negative responses from unsigned zones. [RT #21131] 2875. [bug] dns_time64_fromtext() could accept non digits. [RT #21033] 2874. [bug] Cache lack of EDNS support only after the server successfully responds to the query using plain DNS. [RT #20930] 2873. [bug] Canceling a dynamic update via the dns/client module could trigger an assertion failure. [RT #21133] 2872. [bug] Modify dns/client.c:dns_client_createx() to only require one of IPv4 or IPv6 rather than both. [RT #21122] 2871. [bug] Type mismatch in mem_api.c between the definition and the header file, causing build failure with --enable-exportlib. [RT #21138] 2870. [maint] Add AAAA address for L.ROOT-SERVERS.NET. 2869. [bug] Fix arguments to dns_keytable_findnextkeynode() call. [RT #20877] 2868. [cleanup] Run "make clean" at the end of configure to ensure any changes made by configure are integrated. Use --with-make-clean=no to disable. [RT #20994] 2867. [bug] Don't set GSS_C_SEQUENCE_FLAG as Windows DNS servers don't like it. [RT #20986] 2866. [bug] Windows does not like the TSIG name being compressed. [RT #20986] 2865. [bug] memset to zero event.data. [RT #20986] 2864. [bug] Direct SIG/RRSIG queries were not handled correctly. [RT #21050] 2863. [port] linux: disable IPv6 PMTUD and use network minimum MTU. [RT #21056] 2862. [bug] nsupdate didn't default to the parent zone when updating DS records. [RT #20896] 2861. [doc] dnssec-settime man pages didn't correctly document the inactivation time. [RT #21039] 2860. [bug] named-checkconf's usage was out of date. [RT #21039] 2859. [bug] When canceling validation it was possible to leak memory. [RT #20800] 2858. [bug] RTT estimates were not being adjusted on ICMP errors. [RT #20772] 2857. [bug] named-checkconf did not fail on a bad trusted key. [RT #20705] 2856. [bug] The size of a memory allocation was not always properly recorded. [RT #20927] 2855. [func] nsupdate will now preserve the entered case of domain names in update requests it sends. [RT #20928] 2854. [func] dig: allow the final soa record in a axfr response to be suppressed, dig +onesoa. [RT #20929] 2853. [bug] add_sigs() could run out of scratch space. [RT #21015] 2852. [bug] Handle broken DNSSEC trust chains better. [RT #15619] 2851. [doc] nslookup.1, removed from the docbook source as it produced bad nroff. [RT #21007] 2850. [bug] If isc_heap_insert() failed due to memory shortage the heap would have corrupted entries. [RT #20951] 2849. [bug] Don't treat errors from the xml2 library as fatal. [RT #20945] 2848. [doc] Moved README.dnssec, README.libdns, README.pkcs11 and README.rfc5011 into the ARM. [RT #20899] 2847. [cleanup] Corrected usage message in dnssec-settime. [RT #20921] 2846. [bug] EOF on unix domain sockets was not being handled correctly. [RT #20731] 2845. [bug] RFC 5011 client could crash on shutdown. [RT #20903] 2844. [doc] notify-delay default in ARM was wrong. It should have been five (5) seconds. 2843. [func] Prevent dnssec-keygen and dnssec-keyfromlabel from creating key files if there is a chance that the new key ID will collide with an existing one after either of the keys has been revoked. (To override this in the case of dnssec-keyfromlabel, use the -y option. dnssec-keygen will simply create a different, non-colliding key, so an override is not necessary.) [RT #20838] 2842. [func] Added "smartsign" and improved "autosign" and "dnssec" regression tests. [RT #20865] 2841. [bug] Change 2836 was not complete. [RT #20883] 2840. [bug] Temporary fixed pkcs11-destroy usage check. [RT #20760] 2839. [bug] A KSK revoked by named could not be deleted. [RT #20881] 2838. [placeholder] 2837. [port] Prevent Linux spurious warnings about fwrite(). [RT #20812] 2836. [bug] Keys that were scheduled to become active could be delayed. [RT #20874] 2835. [bug] Key inactivity dates were inadvertently stored in the private key file with the outdated tag "Unpublish" rather than "Inactive". This has been fixed; however, any existing keys that had Inactive dates set will now need to have them reset, using 'dnssec-settime -I'. [RT #20868] 2834. [bug] HMAC-SHA* keys that were longer than the algorithm digest length were used incorrectly, leading to interoperability problems with other DNS implementations. This has been corrected. (Note: If an oversize key is in use, and compatibility is needed with an older release of BIND, the new tool "isc-hmac-fixup" can convert the key secret to a form that will work with all versions.) [RT #20751] 2833. [cleanup] Fix usage messages in dnssec-keygen and dnssec-settime. [RT #20851] 2832. [bug] Modify "struct stat" in lib/export/samples/nsprobe.c to avoid redefinition in some OSs [RT 20831] 2831. [security] Do not attempt to validate or cache out-of-bailiwick data returned with a secure answer; it must be re-fetched from its original source and validated in that context. [RT #20819] 2830. [bug] Changing the OPTOUT setting could take multiple passes. [RT #20813] 2829. [bug] Fixed potential node inconsistency in rbtdb.c. [RT #20808] 2828. [security] Cached CNAME or DNAME RR could be returned to clients without DNSSEC validation. [RT #20737] 2827. [security] Bogus NXDOMAIN could be cached as if valid. [RT #20712] 2826. [bug] NSEC3->NSEC transitions could fail due to a lock not being released. [RT #20740] 2825. [bug] Changing the setting of OPTOUT in a NSEC3 chain that was in the process of being created was not properly recorded in the zone. [RT #20786] 2824. [bug] "rndc sign" was not being run by the correct task. [RT #20759] 2823. [bug] rbtdb.c:getsigningtime() was missing locks. [RT #20781] 2822. [bug] rbtdb.c:loadnode() could return the wrong result. [RT #20802] 2821. [doc] Add note that named-checkconf doesn't automatically read rndc.key and bind.keys [RT #20758] 2820. [func] Handle read access failure of OpenSSL configuration file more user friendly (PKCS#11 engine patch). [RT #20668] 2819. [cleanup] Removed unnecessary DNS_POINTER_MAXHOPS define. [RT #20771] 2818. [cleanup] rndc could return an incorrect error code when a zone was not found. [RT #20767] 2817. [cleanup] Removed unnecessary isc_task_endexclusive() calls. [RT #20768] 2816. [bug] previous_closest_nsec() could fail to return data for NSEC3 nodes [RT #29730] 2815. [bug] Exclusively lock the task when freezing a zone. [RT #19838] 2814. [func] Provide a definitive error message when a master zone is not loaded. [RT #20757] 2813. [bug] Better handling of unreadable DNSSEC key files. [RT #20710] 2812. [bug] Make sure updates can't result in a zone with NSEC-only keys and NSEC3 records. [RT #20748] 2811. [cleanup] Add "rndc sign" to list of commands in rndc usage output. [RT #20733] 2810. [doc] Clarified the process of transitioning an NSEC3 zone to insecure. [RT #20746] 2809. [cleanup] Restored accidentally-deleted text in usage output in dnssec-settime and dnssec-revoke [RT #20739] 2808. [bug] Remove the attempt to install atomic.h from lib/isc. atomic.h is correctly installed by the architecture specific subdirectories. [RT #20722] 2807. [bug] Fixed a possible ASSERT when reconfiguring zone keys. [RT #20720] --- 9.7.0rc1 released --- 2806. [bug] "rdnc sign" could delay re-signing the DNSKEY when it had changed. [RT #20703] 2805. [bug] Fixed namespace problems encountered when building external programs using non-exported BIND9 libraries (i.e., built without --enable-exportlib). [RT #20679] 2804. [bug] Send notifies when a zone is signed with "rndc sign" or as a result of a scheduled key change. [RT #20700] 2803. [port] win32: Install named-journalprint, nsec3hash, arpaname and genrandom under windows. [RT #20670] 2802. [cleanup] Rename journalprint to named-journalprint. [RT #20670] 2801. [func] Detect and report records that are different according to DNSSEC but are semantically equal according to plain DNS. Apply plain DNS comparisons rather than DNSSEC comparisons when processing UPDATE requests. dnssec-signzone now removes such semantically duplicate records prior to signing the RRset. named-checkzone -r {ignore|warn|fail} (default warn) named-compilezone -r {ignore|warn|fail} (default warn) named.conf: check-dup-records {ignore|warn|fail}; 2800. [func] Reject zones which have NS records which refer to CNAMEs, DNAMEs or don't have address record (class IN only). Reject UPDATEs which would cause the zone to fail the above checks if committed. [RT #20678] 2799. [cleanup] Changed the "secure-to-insecure" option to "dnssec-secure-to-insecure", and "dnskey-ksk-only" to "dnssec-dnskey-kskonly", for clarity. [RT #20586] 2798. [bug] Addressed bugs in managed-keys initialization and rollover. [RT #20683] 2797. [bug] Don't decrement the dispatch manager's maxbuffers. [RT #20613] 2796. [bug] Missing dns_rdataset_disassociate() call in dns_nsec3_delnsec3sx(). [RT #20681] 2795. [cleanup] Add text to differentiate "update with no effect" log messages. [RT #18889] 2794. [bug] Install . [RT #20677] 2793. [func] Add "autosign" and "metadata" tests to the automatic tests. [RT #19946] 2792. [func] "filter-aaaa-on-v4" can now be set in view options (if compiled in). [RT #20635] 2791. [bug] The installation of isc-config.sh was broken. [RT #20667] 2790. [bug] Handle DS queries to stub zones. [RT #20440] 2789. [bug] Fixed an INSIST in dispatch.c [RT #20576] 2788. [bug] dnssec-signzone could sign with keys that were not requested [RT #20625] 2787. [bug] Spurious log message when zone keys were dynamically reconfigured. [RT #20659] 2786. [bug] Additional could be promoted to answer. [RT #20663] --- 9.7.0b3 released --- 2785. [bug] Revoked keys could fail to self-sign [RT #20652] 2784. [bug] TC was not always being set when required glue was dropped. [RT #20655] 2783. [func] Return minimal responses to EDNS/UDP queries with a UDP buffer size of 512 or less. [RT #20654] 2782. [port] win32: use getaddrinfo() for hostname lookups. [RT #20650] 2781. [bug] Inactive keys could be used for signing. [RT #20649] 2780. [bug] dnssec-keygen -A none didn't properly unset the activation date in all cases. [RT #20648] 2779. [bug] Dynamic key revocation could fail. [RT #20644] 2778. [bug] dnssec-signzone could fail when a key was revoked without deleting the unrevoked version. [RT #20638] 2777. [contrib] DLZ MYSQL auto reconnect support discovery was wrong. 2776. [bug] Change #2762 was not correct. [RT #20647] 2775. [bug] Accept RSASHA256 and RSASHA512 as NSEC3 compatible in dnssec-keyfromlabel. [RT #20643] 2774. [bug] Existing cache DB wasn't being reused after reconfiguration. [RT #20629] 2773. [bug] In autosigned zones, the SOA could be signed with the KSK. [RT #20628] 2772. [security] When validating, track whether pending data was from the additional section or not and only return it if validates as secure. [RT #20438] 2771. [bug] dnssec-signzone: DNSKEY records could be corrupted when importing from key files [RT #20624] 2770. [cleanup] Add log messages to resolver.c to indicate events causing FORMERR responses. [RT #20526] 2769. [cleanup] Change #2742 was incomplete. [RT #19589] 2768. [bug] dnssec-signzone: -S no longer implies -g [RT #20568] 2767. [bug] named could crash on startup if a zone was configured with auto-dnssec and there was no key-directory. [RT #20615] 2766. [bug] isc_socket_fdwatchpoke() should only update the socketmgr state if the socket is not pending on a read or write. [RT #20603] 2765. [bug] Skip masters for which the TSIG key cannot be found. [RT #20595] 2764. [bug] "rndc-confgen -a" could trigger a REQUIRE. [RT #20610] 2763. [bug] "rndc sign" didn't create an NSEC chain. [RT #20591] 2762. [bug] DLV validation failed with a local slave DLV zone. [RT #20577] 2761. [cleanup] Enable internal symbol table for backtrace only for systems that are known to work. Currently, BSD variants, Linux and Solaris are supported. [RT #20202] 2760. [cleanup] Corrected named-compilezone usage summary. [RT #20533] 2759. [doc] Add information about .jbk/.jnw files to the ARM. [RT #20303] 2758. [bug] win32: Added a workaround for a windows 2008 bug that could cause the UDP client handler to shut down. [RT #19176] 2757. [bug] dig: assertion failure could occur in connect timeout. [RT #20599] 2756. [bug] Fixed corrupt logfile message in update.c. [RT #20597] 2755. [placeholder] 2754. [bug] Secure-to-insecure transitions failed when zone was signed with NSEC3. [RT #20587] 2753. [bug] Removed an unnecessary warning that could appear when building an NSEC chain. [RT #20589] 2752. [bug] Locking violation. [RT #20587] 2751. [bug] Fixed a memory leak in dnssec-keyfromlabel. [RT #20588] 2750. [bug] dig: assertion failure could occur when a server didn't have an address. [RT #20579] 2749. [bug] ixfr-from-differences generated a non-minimal ixfr for NSEC3 signed zones. [RT #20452] 2748. [func] Identify bad answers from GTLD servers and treat them as referrals. [RT #18884] 2747. [bug] Journal roll forwards failed to set the re-signing time of RRSIGs correctly. [RT #20541] 2746. [port] hpux: address signed/unsigned expansion mismatch of dns_rbtnode_t.nsec. [RT #20542] 2745. [bug] configure script didn't probe the return type of gai_strerror(3) correctly. [RT #20573] 2744. [func] Log if a query was over TCP. [RT #19961] 2743. [bug] RRSIG could be incorrectly set in the NSEC3 record for a insecure delegation. --- 9.7.0b2 released --- 2742. [cleanup] Clarify some DNSSEC-related log messages in validator.c. [RT #19589] 2741. [func] Allow the dnssec-keygen progress messages to be suppressed (dnssec-keygen -q). Automatically suppress the progress messages when stdin is not a tty. [RT #20474] 2740. [placeholder] 2739. [cleanup] Clean up API for initializing and clearing trust anchors for a view. [RT #20211] 2738. [func] Add RSASHA256 and RSASHA512 tests to the dnssec system test. [RT #20453] 2737. [func] UPDATE requests can leak existence information. [RT #17261] 2736. [func] Improve the performance of NSEC signed zones with more than a normal amount of glue below a delegation. [RT #20191] 2735. [bug] dnssec-signzone could fail to read keys that were specified on the command line with full paths, but weren't in the current directory. [RT #20421] 2734. [port] cygwin: arpaname did not compile. [RT #20473] 2733. [cleanup] Clean up coding style in pkcs11-* tools. [RT #20355] 2732. [func] Add optional filter-aaaa-on-v4 option, available if built with './configure --enable-filter-aaaa'. Filters out AAAA answers to clients connecting via IPv4. (This is NOT recommended for general use.) [RT #20339] 2731. [func] Additional work on change 2709. The key parser will now ignore unrecognized fields when the minor version number of the private key format has been increased. It will reject any key with the major version number increased. [RT #20310] 2730. [func] Have dnssec-keygen display a progress indication a la 'openssl genrsa' on standard error. Note when the first '.' is followed by a long stop one has the choice between slow generation vs. poor random quality, i.e., '-r /dev/urandom'. [RT #20284] 2729. [func] When constructing a CNAME from a DNAME use the DNAME TTL. [RT #20451] 2728. [bug] dnssec-keygen, dnssec-keyfromlabel and dnssec-signzone now warn immediately if asked to write into a nonexistent directory. [RT #20278] 2727. [func] The 'key-directory' option can now specify a relative path. [RT #20154] 2726. [func] Added support for SHA-2 DNSSEC algorithms, RSASHA256 and RSASHA512. [RT #20023] 2725. [doc] Added information about the file "managed-keys.bind" to the ARM. [RT #20235] 2724. [bug] Updates to a existing node in secure zone using NSEC were failing. [RT #20448] 2723. [bug] isc_base32_totext(), isc_base32hex_totext(), and isc_base64_totext(), didn't always mark regions of memory as fully consumed after conversion. [RT #20445] 2722. [bug] Ensure that the memory associated with the name of a node in a rbt tree is not altered during the life of the node. [RT #20431] 2721. [port] Have dst__entropy_status() prime the random number generator. [RT #20369] 2720. [bug] RFC 5011 trust anchor updates could trigger an assert if the DNSKEY record was unsigned. [RT #20406] 2719. [func] Skip trusted/managed keys for unsupported algorithms. [RT #20392] 2718. [bug] The space calculations in opensslrsa_todns() were incorrect. [RT #20394] 2717. [bug] named failed to update the NSEC/NSEC3 record when the last private type record was removed as a result of completing the signing the zone with a key. [RT #20399] 2716. [bug] nslookup debug mode didn't return the ttl. [RT #20414] --- 9.7.0b1 released --- 2715. [bug] Require OpenSSL support to be explicitly disabled. [RT #20288] 2714. [port] aix/powerpc: 'asm("ics");' needs non standard assembler flags. 2713. [bug] powerpc: atomic operations missing asm("ics") / __isync() calls. 2712. [func] New 'auto-dnssec' zone option allows zone signing to be fully automated in zones configured for dynamic DNS. 'auto-dnssec allow;' permits a zone to be signed by creating keys for it in the key-directory and using 'rndc sign '. 'auto-dnssec maintain;' allows that too, plus it also keeps the zone's DNSSEC keys up to date according to their timing metadata. [RT #19943] 2711. [port] win32: Add the bin/pkcs11 tools into the full build. [RT #20372] 2710. [func] New 'dnssec-signzone -x' flag and 'dnskey-ksk-only' zone option cause a zone to be signed with only KSKs signing the DNSKEY RRset, not ZSKs. This reduces the size of a DNSKEY answer. [RT #20340] 2709. [func] Added some data fields, currently unused, to the private key file format, to allow implementation of explicit key rollover in a future release without impairing backward or forward compatibility. [RT #20310] 2708. [func] Insecure to secure and NSEC3 parameter changes via update are now fully supported and no longer require defines to enable. We now no longer overload the NSEC3PARAM flag field, nor the NSEC OPT bit at the apex. Secure to insecure changes are controlled by by the named.conf option 'secure-to-insecure'. Warning: If you had previously enabled support by adding defines at compile time to BIND 9.6 you should ensure that all changes that are in progress have completed prior to upgrading to BIND 9.7. BIND 9.7 is not backwards compatible. 2707. [func] dnssec-keyfromlabel no longer require engine name to be specified in the label if there is a default engine or the -E option has been used. Also, it now uses default algorithms as dnssec-keygen does (i.e., RSASHA1, or NSEC3RSASHA1 if -3 is used). [RT #20371] 2706. [bug] Loading a zone with a very large NSEC3 salt could trigger an assert. [RT #20368] 2705. [placeholder] 2704. [bug] Serial of dynamic and stub zones could be inconsistent with their SOA serial. [RT #19387] 2703. [func] Introduce an OpenSSL "engine" argument with -E for all binaries which can take benefit of crypto hardware. [RT #20230] 2702. [func] Update PKCS#11 tools (bin/pkcs11) [RT #20225 & all] 2701. [doc] Correction to ARM: hmac-md5 is no longer the only supported TSIG key algorithm. [RT #18046] 2700. [doc] The match-mapped-addresses option is discouraged. [RT #12252] 2699. [bug] Missing lock in rbtdb.c. [RT #20037] 2698. [placeholder] 2697. [port] win32: ensure that S_IFMT, S_IFDIR, S_IFCHR and S_IFREG are defined after including . [RT #20309] 2696. [bug] named failed to successfully process some valid acl constructs. [RT #20308] 2695. [func] DHCP/DDNS - update fdwatch code for use by DHCP. Modify the api to isc_sockfdwatch_t (the callback function for isc_socket_fdwatchcreate) to include information about the direction (read or write) and add isc_socket_fdwatchpoke. [RT #20253] 2694. [bug] Reduce default NSEC3 iterations from 100 to 10. [RT #19970] 2693. [port] Add some noreturn attributes. [RT #20257] 2692. [port] win32: 32/64 bit cleanups. [RT #20335] 2691. [func] dnssec-signzone: retain the existing NSEC or NSEC3 chain when re-signing a previously-signed zone. Use -u to modify NSEC3 parameters or switch between NSEC and NSEC3. [RT #20304] 2690. [bug] win32: fix isc_thread_key_getspecific() prototype. [RT #20315] 2689. [bug] Correctly handle snprintf result. [RT #20306] 2688. [bug] Use INTERFACE_F_POINTTOPOINT, not IFF_POINTOPOINT, to decide to fetch the destination address. [RT #20305] 2687. [bug] Fixed dnssec-signzone -S handling of revoked keys. Also, added warnings when revoking a ZSK, as this is not defined by protocol (but is legal). [RT #19943] 2686. [bug] dnssec-signzone should clean the old NSEC chain when signing with NSEC3 and vice versa. [RT #20301] 2685. [contrib] Update contrib/zkt to version 0.99c. [RT #20054] 2684. [cleanup] dig: formalize +ad and +cd as synonyms for +adflag and +cdflag. [RT #19305] 2683. [bug] dnssec-signzone should clean out old NSEC3 chains when the NSEC3 parameters used to sign the zone change. [RT #20246] 2682. [bug] "configure --enable-symtable=all" failed to build. [RT #20282] 2681. [bug] IPSECKEY RR of gateway type 3 was not correctly decoded. [RT #20269] 2680. [func] Move contrib/pkcs11-keygen to bin/pkcs11. [RT #20067] 2679. [func] dig -k can now accept TSIG keys in named.conf format. [RT #20031] 2678. [func] Treat DS queries as if "minimal-response yes;" was set. [RT #20258] 2677. [func] Changes to key metadata behavior: - Keys without "publish" or "active" dates set will no longer be used for smart signing. However, those dates will be set to "now" by default when a key is created; to generate a key but not use it yet, use dnssec-keygen -G. - New "inactive" date (dnssec-keygen/settime -I) sets the time when a key is no longer used for signing but is still published. - The "unpublished" date (-U) is deprecated in favor of "deleted" (-D). [RT #20247] 2676. [bug] --with-export-installdir should have been --with-export-includedir. [RT #20252] 2675. [bug] dnssec-signzone could crash if the key directory did not exist. [RT #20232] --- 9.7.0a3 released --- 2674. [bug] "dnssec-lookaside auto;" crashed if named was built without openssl. [RT #20231] 2673. [bug] The managed-keys.bind zone file could fail to load due to a spurious result from sync_keyzone() [RT #20045] 2672. [bug] Don't enable searching in 'host' when doing reverse lookups. [RT #20218] 2671. [bug] Add support for PKCS#11 providers not returning the public exponent in RSA private keys (OpenCryptoki for instance) in dnssec-keyfromlabel. [RT #19294] 2670. [bug] Unexpected connect failures failed to log enough information to be useful. [RT #20205] 2669. [func] Update PKCS#11 support to support Keyper HSM. Update PKCS#11 patch to be against openssl-0.9.8i. 2668. [func] Several improvements to dnssec-* tools, including: - dnssec-keygen and dnssec-settime can now set key metadata fields 0 (to unset a value, use "none") - dnssec-revoke sets the revocation date in addition to the revoke bit - dnssec-settime can now print individual metadata fields instead of always printing all of them, and can print them in unix epoch time format for use by scripts [RT #19942] 2667. [func] Add support for logging stack backtrace on assertion failure (not available for all platforms). [RT #19780] 2666. [func] Added an 'options' argument to dns_name_fromstring() (API change from 9.7.0a2). [RT #20196] 2665. [func] Clarify syntax for managed-keys {} statement, add ARM documentation about RFC 5011 support. [RT #19874] 2664. [bug] create_keydata() and minimal_update() in zone.c didn't properly check return values for some functions. [RT #19956] 2663. [func] win32: allow named to run as a service using "NT AUTHORITY\LocalService" as the account. [RT #19977] 2662. [bug] lwres_getipnodebyname() and lwres_getipnodebyaddr() returned a misleading error code when lwresd was down. [RT #20028] 2661. [bug] Check whether socket fd exceeds FD_SETSIZE when creating lwres context. [RT #20029] 2660. [func] Add a new set of DNS libraries for non-BIND9 applications. See README.libdns. [RT #19369] 2659. [doc] Clarify dnssec-keygen doc: key name must match zone name for DNSSEC keys. [RT #19938] 2658. [bug] dnssec-settime and dnssec-revoke didn't process key file paths correctly. [RT #20078] 2657. [cleanup] Lower "journal file does not exist, creating it" log level to debug 1. [RT #20058] 2656. [func] win32: add a "tools only" check box to the installer which causes it to only install dig, host, nslookup, nsupdate and relevant DLLs. [RT #19998] 2655. [doc] Document that key-directory does not affect bind.keys, rndc.key or session.key. [RT #20155] 2654. [bug] Improve error reporting on duplicated names for deny-answer-xxx. [RT #20164] 2653. [bug] Treat ENGINE_load_private_key() failures as key not found rather than out of memory. [RT #18033] 2652. [func] Provide more detail about what record is being deleted. [RT #20061] 2651. [bug] Dates could print incorrectly in K*.key files on 64-bit systems. [RT #20076] 2650. [bug] Assertion failure in dnssec-signzone when trying to read keyset-* files. [RT #20075] 2649. [bug] Set the domain for forward only zones. [RT #19944] 2648. [port] win32: isc_time_seconds() was broken. [RT #19900] 2647. [bug] Remove unnecessary SOA updates when a new KSK is added. [RT #19913] 2646. [bug] Incorrect cleanup on error in socket.c. [RT #19987] 2645. [port] "gcc -m32" didn't work on amd64 and x86_64 platforms which default to 64 bits. [RT #19927] --- 9.7.0a2 released --- 2644. [bug] Change #2628 caused a regression on some systems; named was unable to write the PID file and would fail on startup. [RT #20001] 2643. [bug] Stub zones interacted badly with NSEC3 support. [RT #19777] 2642. [bug] nsupdate could dump core on solaris when reading improperly formatted key files. [RT #20015] 2641. [bug] Fixed an error in parsing update-policy syntax, added a regression test to check it. [RT #20007] 2640. [security] A specially crafted update packet will cause named to exit. [RT #20000] 2639. [bug] Silence compiler warnings in gssapi code. [RT #19954] 2638. [bug] Install arpaname. [RT #19957] 2637. [func] Rationalize dnssec-signzone's signwithkey() calling. [RT #19959] 2636. [func] Simplify zone signing and key maintenance with the dnssec-* tools. Major changes: - all dnssec-* tools now take a -K option to specify a directory in which key files will be stored - DNSSEC can now store metadata indicating when they are scheduled to be published, activated, revoked or removed; these values can be set by dnssec-keygen or overwritten by the new dnssec-settime command - dnssec-signzone -S (for "smart") option reads key metadata and uses it to determine automatically which keys to publish to the zone, use for signing, revoke, or remove from the zone [RT #19816] 2635. [bug] isc_inet_ntop() incorrectly handled 0.0/16 addresses. [RT #19716] 2634. [port] win32: Add support for libxml2, enable statschannel. [RT #19773] 2633. [bug] Handle 15 bit rand() functions. [RT #19783] 2632. [func] util/kit.sh: warn if documentation appears to be out of date. [RT #19922] 2631. [bug] Handle "//", "/./" and "/../" in mkdirpath(). [RT #19926 ] 2630. [func] Improved syntax for DDNS autoconfiguration: use "update-policy local;" to switch on local DDNS in a zone. (The "ddns-autoconf" option has been removed.) [RT #19875] 2629. [port] Check for seteuid()/setegid(), use setresuid()/ setresgid() if not present. [RT #19932] 2628. [port] linux: Allow /var/run/named/named.pid to be opened at startup with reduced capabilities in operation. [RT #19884] 2627. [bug] Named aborted if the same key was included in trusted-keys more than once. [RT #19918] 2626. [bug] Multiple trusted-keys could trigger an assertion failure. [RT #19914] 2625. [bug] Missing UNLOCK in rbtdb.c. [RT #19865] 2624. [func] 'named-checkconf -p' will print out the parsed configuration. [RT #18871] 2623. [bug] Named started searches for DS non-optimally. [RT #19915] 2622. [bug] Printing of named.conf grammar was broken. [RT #19919] 2621. [doc] Made copyright boilerplate consistent. [RT #19833] 2620. [bug] Delay thawing the zone until the reload of it has completed successfully. [RT #19750] 2619. [func] Add support for RFC 5011, automatic trust anchor maintenance. The new "managed-keys" statement can be used in place of "trusted-keys" for zones which support this protocol. (Note: this syntax is expected to change prior to 9.7.0 final.) [RT #19248] 2618. [bug] The sdb and sdlz db_interator_seek() methods could loop infinitely. [RT #19847] 2617. [bug] ifconfig.sh failed to emit an error message when run from the wrong location. [RT #19375] 2616. [bug] 'host' used the nameservers from resolv.conf even when a explicit nameserver was specified. [RT #19852] 2615. [bug] "__attribute__((unused))" was in the wrong place for ia64 gcc builds. [RT #19854] 2614. [port] win32: 'named -v' should automatically be executed in the foreground. [RT #19844] 2613. [placeholder] --- 9.7.0a1 released --- 2612. [func] Add default values for the arguments to dnssec-keygen. Without arguments, it will now generate a 1024-bit RSASHA1 zone-signing key, or with the -f KSK option, a 2048-bit RSASHA1 key-signing key. [RT #19300] 2611. [func] Add -l option to dnssec-dsfromkey to generate DLV records instead of DS records. [RT #19300] 2610. [port] sunos: Change #2363 was not complete. [RT #19796] 2609. [func] Simplify the configuration of dynamic zones: - add ddns-confgen command to generate configuration text for named.conf - add zone option "ddns-autoconf yes;", which causes named to generate a TSIG session key and allow updates to the zone using that key - add '-l' (localhost) option to nsupdate, which causes nsupdate to connect to a locally-running named process using the session key generated by named [RT #19284] 2608. [func] Perform post signing verification checks in dnssec-signzone. These can be disabled with -P. The post sign verification test ensures that for each algorithm in use there is at least one non revoked self signed KSK key. That all revoked KSK keys are self signed. That all records in the zone are signed by the algorithm. [RT #19653] 2607. [bug] named could incorrectly delete NSEC3 records for empty nodes when processing a update request. [RT #19749] 2606. [bug] "delegation-only" was not being accepted in delegation-only type zones. [RT #19717] 2605. [bug] Accept DS responses from delegation only zones. [RT # 19296] 2604. [func] Add support for DNS rebinding attack prevention through new options, deny-answer-addresses and deny-answer-aliases. Based on contributed code from JD Nurmi, Google. [RT #18192] 2603. [port] win32: handle .exe extension of named-checkzone and named-comilezone argv[0] names under windows. [RT #19767] 2602. [port] win32: fix debugging command line build of libisccfg. [RT #19767] 2601. [doc] Mention file creation mode mask in the named manual page. 2600. [doc] ARM: miscellaneous reformatting for different page widths. [RT #19574] 2599. [bug] Address rapid memory growth when validation fails. [RT #19654] 2598. [func] Reserve the -F flag. [RT #19657] 2597. [bug] Handle a validation failure with a insecure delegation from a NSEC3 signed master/slave zone. [RT #19464] 2596. [bug] Stale tree nodes of cache/dynamic rbtdb could stay long, leading to inefficient memory usage or rejecting newer cache entries in the worst case. [RT #19563] 2595. [bug] Fix unknown extended rcodes in dig. [RT #19625] 2594. [func] Have rndc warn if using its default configuration file when the key file also exists. [RT #19424] 2593. [bug] Improve a corner source of SERVFAILs [RT #19632] 2592. [bug] Treat "any" as a type in nsupdate. [RT #19455] 2591. [bug] named could die when processing a update in removed_orphaned_ds(). [RT #19507] 2590. [func] Report zone/class of "update with no effect". [RT #19542] 2589. [bug] dns_db_unregister() failed to clear '*dbimp'. [RT #19626] 2588. [bug] SO_REUSEADDR could be set unconditionally after failure of bind(2) call. This should be rare and mostly harmless, but may cause interference with other processes that happen to use the same port. [RT #19642] 2587. [func] Improve logging by reporting serial numbers for when zone serial has gone backwards or unchanged. [RT #19506] 2586. [bug] Missing cleanup of SIG rdataset in searching a DLZ DB or SDB. [RT #19577] 2585. [bug] Uninitialized socket name could be referenced via a statistics channel, triggering an assertion failure in XML rendering. [RT #19427] 2584. [bug] alpha: gcc optimization could break atomic operations. [RT #19227] 2583. [port] netbsd: provide a control to not add the compile date to the version string, -DNO_VERSION_DATE. 2582. [bug] Don't emit warning log message when we attempt to remove non-existent journal. [RT #19516] 2581. [contrib] dlz/mysql set MYSQL_OPT_RECONNECT option on connection. Requires MySQL 5.0.19 or later. [RT #19084] 2580. [bug] UpdateRej statistics counter could be incremented twice for one rejection. [RT #19476] 2579. [bug] DNSSEC lookaside validation failed to handle unknown algorithms. [RT #19479] 2578. [bug] Changed default sig-signing-type to 65534, because 65535 turns out to be reserved. [RT #19477] 2577. [doc] Clarified some statistics counters. [RT #19454] 2576. [bug] NSEC record were not being correctly signed when a zone transitions from insecure to secure. Handle such incorrectly signed zones. [RT #19114] 2575. [func] New functions dns_name_fromstring() and dns_name_tostring(), to simplify conversion of a string to a dns_name structure and vice versa. [RT #19451] 2574. [doc] Document nsupdate -g and -o. [RT #19351] 2573. [bug] Replacing a non-CNAME record with a CNAME record in a single transaction in a signed zone failed. [RT #19397] 2572. [func] Simplify DLV configuration, with a new option "dnssec-lookaside auto;" This is the equivalent of "dnssec-lookaside . trust-anchor dlv.isc.org;" plus setting a trusted-key for dlv.isc.org. Note: The trusted key is hard-coded into named, but is also stored in (and can be overridden by) $sysconfdir/bind.keys. As the ISC DLV key rolls over it can be kept up to date by replacing the bind.keys file with a key downloaded from https://www.isc.org/solutions/dlv. [RT #18685] 2571. [func] Add a new tool "arpaname" which translates IP addresses to the corresponding IN-ADDR.ARPA or IP6.ARPA name. [RT #18976] 2570. [func] Log the destination address the query was sent to. [RT #19209] 2569. [func] Move journalprint, nsec3hash, and genrandom commands from bin/tests into bin/tools; "make install" will put them in $sbindir. [RT #19301] 2568. [bug] Report when the write to indicate a otherwise successful start fails. [RT #19360] 2567. [bug] dst__privstruct_writefile() could miss write errors. write_public_key() could miss write errors. dnssec-dsfromkey could miss write errors. [RT #19360] 2566. [cleanup] Clarify logged message when an insecure DNSSEC response arrives from a zone thought to be secure: "insecurity proof failed" instead of "not insecure". [RT #19400] 2565. [func] Add support for HIP record. Includes new functions dns_rdata_hip_first(), dns_rdata_hip_next() and dns_rdata_hip_current(). [RT #19384] 2564. [bug] Only take EDNS fallback steps when processing timeouts. [RT #19405] 2563. [bug] Dig could leak a socket causing it to wait forever to exit. [RT #19359] 2562. [doc] ARM: miscellaneous improvements, reorganization, and some new content. 2561. [doc] Add isc-config.sh(1) man page. [RT #16378] 2560. [bug] Add #include to iptable.c. [RT #18258] 2559. [bug] dnssec-dsfromkey could compute bad DS records when reading from a K* files. [RT #19357] 2558. [func] Set the ownership of missing directories created for pid-file if -u has been specified on the command line. [RT #19328] 2557. [cleanup] PCI compliance: * new libisc log module file * isc_dir_chroot() now also changes the working directory to "/". * additional INSISTs * additional logging when files can't be removed. 2556. [port] Solaris: mkdir(2) on tmpfs filesystems does not do the error checks in the correct order resulting in the wrong error code sometimes being returned. [RT #19249] 2555. [func] dig: when emitting a hex dump also display the corresponding characters. [RT #19258] 2554. [bug] Validation of uppercase queries from NSEC3 zones could fail. [RT #19297] 2553. [bug] Reference leak on DNSSEC validation errors. [RT #19291] 2552. [bug] zero-no-soa-ttl-cache was not being honored. [RT #19340] 2551. [bug] Potential Reference leak on return. [RT #19341] 2550. [bug] Check --with-openssl= finds . [RT #19343] 2549. [port] linux: define NR_OPEN if not currently defined. [RT #19344] 2548. [bug] Install iterated_hash.h. [RT #19335] 2547. [bug] openssl_link.c:mem_realloc() could reference an out-of-range area of the source buffer. New public function isc_mem_reallocate() was introduced to address this bug. [RT #19313] 2546. [func] Add --enable-openssl-hash configure flag to use OpenSSL (in place of internal routine) for hash functions (MD5, SHA[12] and HMAC). [RT #18815] 2545. [doc] ARM: Legal hostname checking (check-names) is for SRV RDATA too. [RT #19304] 2544. [cleanup] Removed unused structure members in adb.c. [RT #19225] 2543. [contrib] Update contrib/zkt to version 0.98. [RT #19113] 2542. [doc] Update the description of dig +adflag. [RT #19290] 2541. [bug] Conditionally update dispatch manager statistics. [RT #19247] 2540. [func] Add a nibble mode to $GENERATE. [RT #18872] 2539. [security] Update the interaction between recursion, allow-query, allow-query-cache and allow-recursion. [RT #19198] 2538. [bug] cache/ADB memory could grow over max-cache-size, especially with threads and smaller max-cache-size values. [RT #19240] 2537. [func] Added more statistics counters including those on socket I/O events and query RTT histograms. [RT #18802] 2536. [cleanup] Silence some warnings when -Werror=format-security is specified. [RT #19083] 2535. [bug] dig +showsearch and +trace interacted badly. [RT #19091] 2534. [func] Check NAPTR records regular expressions and replacement strings to ensure they are syntactically valid and consistent. [RT #18168] 2533. [doc] ARM: document @ (at-sign). [RT #17144] 2532. [bug] dig: check the question section of the response to see if it matches the asked question. [RT #18495] 2531. [bug] Change #2207 was incomplete. [RT #19098] 2530. [bug] named failed to reject insecure to secure transitions via UPDATE. [RT #19101] 2529. [cleanup] Upgrade libtool to silence complaints from recent version of autoconf. [RT #18657] 2528. [cleanup] Silence spurious configure warning about --datarootdir [RT #19096] 2527. [placeholder] 2526. [func] New named option "attach-cache" that allows multiple views to share a single cache to save memory and improve lookup efficiency. Based on contributed code from Barclay Osborn, Google. [RT #18905] 2525. [func] New logging category "query-errors" to provide detailed internal information about query failures, especially about server failures. [RT #19027] 2524. [port] sunos: dnssec-signzone needs strtoul(). [RT #19129] 2523. [bug] Random type rdata freed by dns_nsec_typepresent(). [RT #19112] 2522. [security] Handle -1 from DSA_do_verify() and EVP_VerifyFinal(). 2521. [bug] Improve epoll cross compilation support. [RT #19047] 2520. [bug] Update xml statistics version number to 2.0 as change #2388 made the schema incompatible to the previous version. [RT #19080] 2519. [bug] dig/host with -4 or -6 didn't work if more than two nameserver addresses of the excluded address family preceded in resolv.conf. [RT #19081] 2518. [func] Add support for the new CERT types from RFC 4398. [RT #19077] 2517. [bug] dig +trace with -4 or -6 failed when it chose a nameserver address of the excluded address type. [RT #18843] 2516. [bug] glue sort for responses was performed even when not needed. [RT #19039] 2515. [port] win32: build dnssec-dsfromkey and dnssec-keyfromlabel. [RT #19063] 2514. [bug] dig/host failed with -4 or -6 when resolv.conf contains a nameserver of the excluded address family. [RT #18848] 2513. [bug] Fix windows cli build. [RT #19062] 2512. [func] Print a summary of the cached records which make up the negative response. [RT #18885] 2511. [cleanup] dns_rdata_tofmttext() add const to linebreak. [RT #18885] 2510. [bug] "dig +sigchase" could trigger REQUIRE failures. [RT #19033] 2509. [bug] Specifying a fixed query source port was broken. [RT #19051] 2508. [placeholder] 2507. [func] Log the recursion quota values when killing the oldest query or refusing to recurse due to quota. [RT #19022] 2506. [port] solaris: Check at configure time if hack_shutup_pthreadonceinit is needed. [RT #19037] 2505. [port] Treat amd64 similarly to x86_64 when determining atomic operation support. [RT #19031] 2504. [bug] Address race condition in the socket code. [RT #18899] 2503. [port] linux: improve compatibility with Linux Standard Base. [RT #18793] 2502. [cleanup] isc_radix: Improve compliance with coding style, document function in . [RT #18534] 2501. [func] $GENERATE now supports all rdata types. Multi-field rdata types need to be quoted. See the ARM for details. [RT #18368] 2500. [contrib] contrib/sdb/pgsql/zonetodb.c called non-existent function. [RT #18582] 2499. [port] solaris: lib/lwres/getaddrinfo.c namespace clash. [RT #18837] --- 9.6.0rc1 released --- 2498. [bug] Removed a bogus function argument used with ISC_SOCKET_USE_POLLWATCH: it could cause compiler warning or crash named with the debug 1 level of logging. [RT #18917] 2497. [bug] Don't add RRSIG bit to NSEC3 bit map for insecure delegation. 2496. [bug] Add sanity length checks to NSID option. [RT #18813] 2495. [bug] Tighten RRSIG checks. [RT #18795] 2494. [bug] isc/radix.h, dns/sdlz.h and dns/dlz.h were not being installed. [RT #18826] 2493. [bug] The linux capabilities code was not correctly cleaning up after itself. [RT #18767] 2492. [func] Rndc status now reports the number of cpus discovered and the number of worker threads when running multi-threaded. [RT #18273] 2491. [func] Attempt to re-use a local port if we are already using the port. [RT #18548] 2490. [port] aix: work around a kernel bug where IPV6_RECVPKTINFO is cleared when IPV6_V6ONLY is set. [RT #18785] 2489. [port] solaris: Workaround Solaris's kernel bug about /dev/poll: http://bugs.opensolaris.org/view_bug.do?bug_id=6724237 Define ISC_SOCKET_USE_POLLWATCH at build time to enable this workaround. [RT #18870] 2488. [func] Added a tool, dnssec-dsfromkey, to generate DS records from keyset and .key files. [RT #18694] 2487. [bug] Give TCP connections longer to complete. [RT #18675] 2486. [func] The default locations for named.pid and lwresd.pid are now /var/run/named/named.pid and /var/run/lwresd/lwresd.pid respectively. This allows the owner of the containing directory to be set, for "named -u" support, and allows there to be a permanent symbolic link in the path, for "named -t" support. [RT #18306] 2485. [bug] Change update's the handling of obscured RRSIG records. Not all orphaned DS records were being removed. [RT #18828] 2484. [bug] It was possible to trigger a REQUIRE failure when adding NSEC3 proofs to the response in query_addwildcardproof(). [RT #18828] 2483. [port] win32: chroot() is not supported. [RT #18805] 2482. [port] libxml2: support versions 2.7.* in addition to 2.6.*. [RT #18806] --- 9.6.0b1 released --- 2481. [bug] rbtdb.c:matchparams() failed to handle NSEC3 chain collisions. [RT #18812] 2480. [bug] named could fail to emit all the required NSEC3 records. [RT #18812] 2479. [bug] xfrout:covers was not properly initialized. [RT #18801] 2478. [bug] 'addresses' could be used uninitialized in configure_forward(). [RT #18800] 2477. [bug] dig: the global option to print the command line is +cmd not print_cmd. Update the output to reflect this. [RT #17008] 2476. [doc] ARM: improve documentation for max-journal-size and ixfr-from-differences. [RT #15909] [RT #18541] 2475. [bug] LRU cache cleanup under overmem condition could purge particular entries more aggressively. [RT #17628] 2474. [bug] ACL structures could be allocated with insufficient space, causing an array overrun. [RT #18765] 2473. [port] linux: raise the limit on open files to the possible maximum value before spawning threads; 'files' specified in named.conf doesn't seem to work with threads as expected. [RT #18784] 2472. [port] linux: check the number of available cpu's before calling chroot as it depends on "/proc". [RT #16923] 2471. [bug] named-checkzone was not reporting missing mandatory glue when sibling checks were disabled. [RT #18768] 2470. [bug] Elements of the isc_radix_node_t could be incorrectly overwritten. [RT #18719] 2469. [port] solaris: Work around Solaris's select() limitations. [RT #18769] 2468. [bug] Resolver could try unreachable servers multiple times. [RT #18739] 2467. [bug] Failure of fcntl(F_DUPFD) wasn't logged. [RT #18740] 2466. [doc] ARM: explain max-cache-ttl 0 SERVFAIL issue. [RT #18302] 2465. [bug] Adb's handling of lame addresses was different for IPv4 and IPv6. [RT #18738] 2464. [port] linux: check that a capability is present before trying to set it. [RT #18135] 2463. [port] linux: POSIX doesn't include the IPv6 Advanced Socket API and glibc hides parts of the IPv6 Advanced Socket API as a result. This is stupid as it breaks how the two halves (Basic and Advanced) of the IPv6 Socket API were designed to be used but we have to live with it. Define _GNU_SOURCE to pull in the IPv6 Advanced Socket API. [RT #18388] 2462. [doc] Document -m (enable memory usage debugging) option for dig. [RT #18757] 2461. [port] sunos: Change #2363 was not complete. [RT #17513] --- 9.6.0a1 released --- 2460. [bug] Don't call dns_db_getnsec3parameters() on the cache. [RT #18697] 2459. [contrib] Import dnssec-zkt to contrib/zkt. [RT #18448] 2458. [doc] ARM: update and correction for max-cache-size. [RT #18294] 2457. [tuning] max-cache-size is reverted to 0, the previous default. It should be safe because expired cache entries are also purged. [RT #18684] 2456. [bug] In ACLs, ::/0 and 0.0.0.0/0 would both match any address, regardless of family. They now correctly distinguish IPv4 from IPv6. [RT #18559] 2455. [bug] Stop metadata being transferred via axfr/ixfr. [RT #18639] 2454. [func] nsupdate: you can now set a default ttl. [RT #18317] 2453. [bug] Remove NULL pointer dereference in dns_journal_print(). [RT #18316] 2452. [func] Improve bin/test/journalprint. [RT #18316] 2451. [port] solaris: handle runtime linking better. [RT #18356] 2450. [doc] Fix lwresd docbook problem for manual page. [RT #18672] 2449. [placeholder] 2448. [func] Add NSEC3 support. [RT #15452] 2447. [cleanup] libbind has been split out as a separate product. 2446. [func] Add a new log message about build options on startup. A new command-line option '-V' for named is also provided to show this information. [RT #18645] 2445. [doc] ARM out-of-date on empty reverse zones (list includes RFC1918 address, but these are not yet compiled in). [RT #18578] 2444. [port] Linux, FreeBSD, AIX: Turn off path mtu discovery (clear DF) for UDP responses and requests. 2443. [bug] win32: UDP connect() would not generate an event, and so connected UDP sockets would never clean up. Fix this by doing an immediate WSAConnect() rather than an io completion port type for UDP. 2442. [bug] A lock could be destroyed twice. [RT #18626] 2441. [bug] isc_radix_insert() could copy radix tree nodes incompletely. [RT #18573] 2440. [bug] named-checkconf used an incorrect test to determine if an ACL was set to none. 2439. [bug] Potential NULL dereference in dns_acl_isanyornone(). [RT #18559] 2438. [bug] Timeouts could be logged incorrectly under win32. 2437. [bug] Sockets could be closed too early, leading to inconsistent states in the socket module. [RT #18298] 2436. [security] win32: UDP client handler can be shutdown. [RT #18576] 2435. [bug] Fixed an ACL memory leak affecting win32. 2434. [bug] Fixed a minor error-reporting bug in lib/isc/win32/socket.c. 2433. [tuning] Set initial timeout to 800ms. 2432. [bug] More Windows socket handling improvements. Stop using I/O events and use IO Completion Ports throughout. Rewrite the receive path logic to make it easier to support multiple simultaneous requesters in the future. Add stricter consistency checking as a compile-time option (define ISC_SOCKET_CONSISTENCY_CHECKS; defaults to off). 2431. [bug] Acl processing could leak memory. [RT #18323] 2430. [bug] win32: isc_interval_set() could round down to zero if the input was less than NS_INTERVAL nanoseconds. Round up instead. [RT #18549] 2429. [doc] nsupdate should be in section 1 of the man pages. [RT #18283] 2428. [bug] dns_iptable_merge() mishandled merges of negative tables. [RT #18409] 2427. [func] Treat DNSKEY queries as if "minimal-response yes;" was set. [RT #18528] 2426. [bug] libbind: inet_net_pton() can sometimes return the wrong value if excessively large net masks are supplied. [RT #18512] 2425. [bug] named didn't detect unavailable query source addresses at load time. [RT #18536] 2424. [port] configure now probes for a working epoll implementation. Allow the use of kqueue, epoll and /dev/poll to be selected at compile time. [RT #18277] 2423. [security] Randomize server selection on queries, so as to make forgery a little more difficult. Instead of always preferring the server with the lowest RTT, pick a server with RTT within the same 128 millisecond band. [RT #18441] 2422. [bug] Handle the special return value of a empty node as if it was a NXRRSET in the validator. [RT #18447] 2421. [func] Add new command line option '-S' for named to specify the max number of sockets. [RT #18493] Use caution: this option may not work for some operating systems without rebuilding named. 2420. [bug] Windows socket handling cleanup. Let the io completion event send out canceled read/write done events, which keeps us from writing to memory we no longer have ownership of. Add debugging socket_log() function. Rework TCP socket handling to not leak sockets. 2419. [cleanup] Document that isc_socket_create() and isc_socket_open() should not be used for isc_sockettype_fdwatch sockets. [RT #18521] 2418. [bug] AXFR request on a DLZ could trigger a REQUIRE failure [RT #18430] 2417. [bug] Connecting UDP sockets for outgoing queries could unexpectedly fail with an 'address already in use' error. [RT #18411] 2416. [func] Log file descriptors that cause exceeding the internal maximum. [RT #18460] 2415. [bug] 'rndc dumpdb' could trigger various assertion failures in rbtdb.c. [RT #18455] 2414. [bug] A masterdump context held the database lock too long, causing various troubles such as dead lock and recursive lock acquisition. [RT #18311, #18456] 2413. [bug] Fixed an unreachable code path in socket.c. [RT #18442] 2412. [bug] win32: address a resource leak. [RT #18374] 2411. [bug] Allow using a larger number of sockets than FD_SETSIZE for select(). To enable this, set ISC_SOCKET_MAXSOCKETS at compilation time. [RT #18433] Note: with changes #2469 and #2421 above, there is no need to tweak ISC_SOCKET_MAXSOCKETS at compilation time any more. 2410. [bug] Correctly delete m_versionInfo. [RT #18432] 2409. [bug] Only log that we disabled EDNS processing if we were subsequently successful. [RT #18029] 2408. [bug] A duplicate TCP dispatch event could be sent, which could then trigger an assertion failure in resquery_response(). [RT #18275] 2407. [port] hpux: test for sys/dyntune.h. [RT #18421] 2406. [placeholder] 2405. [cleanup] The default value for dnssec-validation was changed to "yes" in 9.5.0-P1 and all subsequent releases; this was inadvertently omitted from CHANGES at the time. 2404. [port] hpux: files unlimited support. 2403. [bug] TSIG context leak. [RT #18341] 2402. [port] Support Solaris 2.11 and over. [RT #18362] 2401. [bug] Expect to get E[MN]FILE errno internal_accept() (from accept() or fcntl() system calls). [RT #18358] 2400. [bug] Log if kqueue()/epoll_create()/open(/dev/poll) fails. [RT #18297] 2399. [placeholder] 2398. [bug] Improve file descriptor management. New, temporary, named.conf option reserved-sockets, default 512. [RT #18344] 2397. [bug] gssapi_functions had too many elements. [RT #18355] 2396. [bug] Don't set SO_REUSEADDR for randomized ports. [RT #18336] 2395. [port] Avoid warning and no effect from "files unlimited" on Linux when running as root. [RT #18335] 2394. [bug] Default configuration options set the limit for open files to 'unlimited' as described in the documentation. [RT #18331] 2393. [bug] nested acls containing keys could trigger an assertion in acl.c. [RT #18166] 2392. [bug] remove 'grep -q' from acl test script, some platforms don't support it. [RT #18253] 2391. [port] hpux: cover additional recvmsg() error codes. [RT #18301] 2390. [bug] dispatch.c could make a false warning on 'odd socket'. [RT #18301]. 2389. [bug] Move the "working directory writable" check to after the ns_os_changeuser() call. [RT #18326] 2388. [bug] Avoid using tables for layout purposes in statistics XSL [RT #18159]. 2387. [bug] Silence compiler warnings in lib/isc/radix.c. [RT #18147] [RT #18258] 2386. [func] Add warning about too small 'open files' limit. [RT #18269] 2385. [bug] A condition variable in socket.c could leak in rare error handling [RT #17968]. 2384. [security] Fully randomize UDP query ports to improve forgery resilience. [RT #17949, #18098] 2383. [bug] named could double queries when they resulted in SERVFAIL due to overkilling EDNS0 failure detection. [RT #18182] 2382. [doc] Add descriptions of DHCID, IPSECKEY, SPF and SSHFP to ARM. 2381. [port] dlz/mysql: support multiple install layouts for mysql. /include/{,mysql/}mysql.h and /lib/{,mysql/}. [RT #18152] 2380. [bug] dns_view_find() was not returning NXDOMAIN/NXRRSET proofs which, in turn, caused validation failures for insecure zones immediately below a secure zone the server was authoritative for. [RT #18112] 2379. [contrib] queryperf/gen-data-queryperf.py: removed redundant TLDs and supported RRs with TTLs [RT #17972] 2378. [bug] gssapi_functions{} had a redundant member in BIND 9.5. [RT #18169] 2377. [bug] Address race condition in dnssec-signzone. [RT #18142] 2376. [bug] Change #2144 was not complete. 2375. [placeholder] 2374. [bug] "blackhole" ACLs could cause named to segfault due to some uninitialized memory. [RT #18095] 2373. [bug] Default values of zone ACLs were re-parsed each time a new zone was configured, causing an overconsumption of memory. [RT #18092] 2372. [bug] Fixed incorrect TAG_HMACSHA256_BITS value [RT #18047] 2371. [doc] Add +nsid option to dig man page. [RT #18039] 2370. [bug] "rndc freeze" could trigger an assertion in named when called on a nonexistent zone. [RT #18050] 2369. [bug] libbind: Array bounds overrun on read in bitncmp(). [RT #18054] 2368. [port] Linux: use libcap for capability management if possible. [RT #18026] 2367. [bug] Improve counting of dns_resstatscounter_retry [RT #18030] 2366. [bug] Adb shutdown race. [RT #18021] 2365. [bug] Fix a bug that caused dns_acl_isany() to return spurious results. [RT #18000] 2364. [bug] named could trigger a assertion when serving a malformed signed zone. [RT #17828] 2363. [port] sunos: pre-set "lt_cv_sys_max_cmd_len=4096;". [RT #17513] 2362. [cleanup] Make "rrset-order fixed" a compile-time option. settable by "./configure --enable-fixed-rrset". Disabled by default. [RT #17977] 2361. [bug] "recursion" statistics counter could be counted multiple times for a single query. [RT #17990] 2360. [bug] Fix a condition where we release a database version (which may acquire a lock) while holding the lock. 2359. [bug] Fix NSID bug. [RT #17942] 2358. [doc] Update host's default query description. [RT #17934] 2357. [port] Don't use OpenSSL's engine support in versions before OpenSSL 0.9.7f. [RT #17922] 2356. [bug] Built in mutex profiler was not scalable enough. [RT #17436] 2355. [func] Extend the number statistics counters available. [RT #17590] 2354. [bug] Failed to initialize some rdatasetheader_t elements. [RT #17927] 2353. [func] Add support for Name Server ID (RFC 5001). 'dig +nsid' requests NSID from server. 'request-nsid yes;' causes recursive server to send NSID requests to upstream servers. Server responds to NSID requests with the string configured by 'server-id' option. [RT #17091] 2352. [bug] Various GSS_API fixups. [RT #17729] 2351. [bug] convertxsl.pl generated very long lines. [RT #17906] 2350. [port] win32: IPv6 support. [RT #17797] 2349. [func] Provide incremental re-signing support for secure dynamic zones. [RT #1091] 2348. [func] Use the EVP interface to OpenSSL. Add PKCS#11 support. Documentation is in the new README.pkcs11 file. New tool, dnssec-keyfromlabel, which takes the label of a key pair in a HSM and constructs a DNS key pair for use by named and dnssec-signzone. [RT #16844] 2347. [bug] Delete now traverses the RB tree in the canonical order. [RT #17451] 2346. [func] Memory statistics now cover all active memory contexts in increased detail. [RT #17580] 2345. [bug] named-checkconf failed to detect when forwarders were set at both the options/view level and in a root zone. [RT #17671] 2344. [bug] Improve "logging{ file ...; };" documentation. [RT #17888] 2343. [bug] (Seemingly) duplicate IPv6 entries could be created in ADB. [RT #17837] 2342. [func] Use getifaddrs() if available under Linux. [RT #17224] 2341. [bug] libbind: add missing -I../include for off source tree builds. [RT #17606] 2340. [port] openbsd: interface configuration. [RT #17700] 2339. [port] tru64: support for libbind. [RT #17589] 2338. [bug] check_ds() could be called with a non DS rdataset. [RT #17598] 2337. [bug] BUILD_LDFLAGS was not being correctly set. [RT #17614] 2336. [func] If "named -6" is specified then listen on all IPv6 interfaces if there are not listen-on-v6 clauses in named.conf. [RT #17581] 2335. [port] sunos: libbind and *printf() support for long long. [RT #17513] 2334. [bug] Bad REQUIRES in fromstruct_in_naptr(), off by one bug in fromstruct_txt(). [RT #17609] 2333. [bug] Fix off by one error in isc_time_nowplusinterval(). [RT #17608] 2332. [contrib] query-loc-0.4.0. [RT #17602] 2331. [bug] Failure to regenerate any signatures was not being reported nor being past back to the UPDATE client. [RT #17570] 2330. [bug] Remove potential race condition when handling over memory events. [RT #17572] WARNING: API CHANGE: over memory callback function now needs to call isc_mem_waterack(). See for details. 2329. [bug] Clearer help text for dig's '-x' and '-i' options. 2328. [maint] Add AAAA addresses for A.ROOT-SERVERS.NET, F.ROOT-SERVERS.NET, H.ROOT-SERVERS.NET, J.ROOT-SERVERS.NET, K.ROOT-SERVERS.NET and M.ROOT-SERVERS.NET. 2327. [bug] It was possible to dereference a NULL pointer in rbtdb.c. Implement dead node processing in zones as we do for caches. [RT #17312] 2326. [bug] It was possible to trigger a INSIST in the acache processing. 2325. [port] Linux: use capset() function if available. [RT #17557] 2324. [bug] Fix IPv6 matching against "any;". [RT #17533] 2323. [port] tru64: namespace clash. [RT #17547] 2322. [port] MacOS: work around the limitation of setrlimit() for RLIMIT_NOFILE. [RT #17526] 2321. [placeholder] 2320. [func] Make statistics counters thread-safe for platforms that support certain atomic operations. [RT #17466] 2319. [bug] Silence Coverity warnings in lib/dns/rdata/in_1/apl_42.c. [RT #17469] 2318. [port] sunos fixes for libbind. [RT #17514] 2317. [bug] "make distclean" removed bind9.xsl.h. [RT #17518] 2316. [port] Missing #include in lib/dns/gssapictx.c. [RT #17513] 2315. [bug] Used incorrect address family for mapped IPv4 addresses in acl.c. [RT #17519] 2314. [bug] Uninitialized memory use on error path in bin/named/lwdnoop.c. [RT #17476] 2313. [cleanup] Silence Coverity warnings. Handle private stacks. [RT #17447] [RT #17478] 2312. [cleanup] Silence Coverity warning in lib/isc/unix/socket.c. [RT #17458] 2311. [bug] IPv6 addresses could match IPv4 ACL entries and vice versa. [RT #17462] 2310. [bug] dig, host, nslookup: flush stdout before emitting debug/fatal messages. [RT #17501] 2309. [cleanup] Fix Coverity warnings in lib/dns/acl.c and iptable.c. [RT #17455] 2308. [cleanup] Silence Coverity warning in bin/named/controlconf.c. [RT #17495] 2307. [bug] Remove infinite loop from lib/dns/sdb.c. [RT #17496] 2306. [bug] Remove potential race from lib/dns/resolver.c. [RT #17470] 2305. [security] inet_network() buffer overflow. CVE-2008-0122. 2304. [bug] Check returns from all dns_rdata_tostruct() calls. [RT #17460] 2303. [bug] Remove unnecessary code from bin/named/lwdgnba.c. [RT #17471] 2302. [bug] Fix memset() calls in lib/tests/t_api.c. [RT #17472] 2301. [bug] Remove resource leak and fix error messages in bin/tests/system/lwresd/lwtest.c. [RT #17474] 2300. [bug] Fixed failure to close open file in bin/tests/names/t_names.c. [RT #17473] 2299. [bug] Remove unnecessary NULL check in bin/nsupdate/nsupdate.c. [RT #17475] 2298. [bug] isc_mutex_lock() failure not caught in bin/tests/timers/t_timers.c. [RT #17468] 2297. [bug] isc_entropy_createfilesource() failure not caught in bin/tests/dst/t_dst.c. [RT #17467] 2296. [port] Allow docbook stylesheet location to be specified to configure. [RT #17457] 2295. [bug] Silence static overrun error in bin/named/lwaddr.c. [RT #17459] 2294. [func] Allow the experimental statistics channels to have multiple connections and ACL. Note: the stats-server and stats-server-v6 options available in the previous beta releases are replaced with the generic statistics-channels statement. 2293. [func] Add ACL regression test. [RT #17375] 2292. [bug] Log if the working directory is not writable. [RT #17312] 2291. [bug] PR_SET_DUMPABLE may be set too late. Also report failure to set PR_SET_DUMPABLE. [RT #17312] 2290. [bug] Let AD in the query signal that the client wants AD set in the response. [RT #17301] 2289. [func] named-checkzone now reports the out-of-zone CNAME found. [RT #17309] 2288. [port] win32: mark service as running when we have finished loading. [RT #17441] 2287. [bug] Use 'volatile' if the compiler supports it. [RT #17413] 2286. [func] Allow a TCP connection to be used as a weak authentication method for reverse zones. New update-policy methods tcp-self and 6to4-self. [RT #17378] 2285. [func] Test framework for client memory context management. [RT #17377] 2284. [bug] Memory leak in UPDATE prerequisite processing. [RT #17377] 2283. [bug] TSIG keys were not attaching to the memory context. TSIG keys should use the rings memory context rather than the clients memory context. [RT #17377] 2282. [bug] Acl code fixups. [RT #17346] [RT #17374] 2281. [bug] Attempts to use undefined acls were not being logged. [RT #17307] 2280. [func] Allow the experimental http server to be reached over IPv6 as well as IPv4. [RT #17332] 2279. [bug] Use setsockopt(SO_NOSIGPIPE), when available, to protect applications from receiving spurious SIGPIPE signals when using the resolver. 2278. [bug] win32: handle the case where Windows returns no search list or DNS suffix. [RT #17354] 2277. [bug] Empty zone names were not correctly being caught at in the post parse checks. [RT #17357] 2276. [bug] Install . [RT #17359] 2275. [func] Add support to dig to perform IXFR queries over UDP. [RT #17235] 2274. [func] Log zone transfer statistics. [RT #17336] 2273. [bug] Adjust log level to WARNING when saving inconsistent stub/slave master and journal files. [RT #17279] 2272. [bug] Handle illegal dnssec-lookaside trust-anchor names. [RT #17262] 2271. [bug] Fix a memory leak in http server code [RT #17100] 2270. [bug] dns_db_closeversion() version->writer could be reset before it is tested. [RT #17290] 2269. [contrib] dbus memory leaks and missing va_end calls. [RT #17232] 2268. [bug] 0.IN-ADDR.ARPA was missing from the empty zones list. --- 9.5.0b1 released --- 2267. [bug] Radix tree node_num value could be set incorrectly, causing positive ACL matches to look like negative ones. [RT #17311] 2266. [bug] client.c:get_clientmctx() returned the same mctx once the pool of mctx's was filled. [RT #17218] 2265. [bug] Test that the memory context's basic_table is non NULL before freeing. [RT #17265] 2264. [bug] Server prefix length was being ignored. [RT #17308] 2263. [bug] "named-checkconf -z" failed to set default value for "check-integrity". [RT #17306] 2262. [bug] Error status from all but the last view could be lost. [RT #17292] 2261. [bug] Fix memory leak with "any" and "none" ACLs [RT #17272] 2260. [bug] Reported wrong clients-per-query when increasing the value. [RT #17236] 2259. [placeholder] --- 9.5.0a7 released --- 2258. [bug] Fallback from IXFR/TSIG to SOA/AXFR/TSIG broken. [RT #17241] 2257. [bug] win32: Use the full path to vcredist_x86.exe when calling it. [RT #17222] 2256. [bug] win32: Correctly register the installation location of bindevt.dll. [RT #17159] 2255. [maint] L.ROOT-SERVERS.NET is now 199.7.83.42. 2254. [bug] timer.c:dispatch() failed to lock timer->lock when reading timer->idle allowing it to see intermediate values as timer->idle was reset by isc_timer_touch(). [RT #17243] 2253. [func] "max-cache-size" defaults to 32M. "max-acache-size" defaults to 16M. 2252. [bug] Fixed errors in sortlist code [RT #17216] 2251. [placeholder] 2250. [func] New flag 'memstatistics' to state whether the memory statistics file should be written or not. Additionally named's -m option will cause the statistics file to be written. [RT #17113] 2249. [bug] Only set Authentic Data bit if client requested DNSSEC, per RFC 3655 [RT #17175] 2248. [cleanup] Fix several errors reported by Coverity. [RT #17160] 2247. [doc] Sort doc/misc/options. [RT #17067] 2246. [bug] Make the startup of test servers (ans.pl) more robust. [RT #17147] 2245. [bug] Validating lack of DS records at trust anchors wasn't working. [RT #17151] 2244. [func] Allow the check of nameserver names against the SOA MNAME field to be disabled by specifying 'notify-to-soa yes;'. [RT #17073] 2243. [func] Configuration files without a newline at the end now parse without error. [RT #17120] 2242. [bug] nsupdate: GSS-TSIG support using the Heimdal Kerberos library could require a source of random data. [RT #17127] 2241. [func] nsupdate: add a interactive 'help' command. [RT #17099] 2240. [bug] Cleanup nsupdates GSS-TSIG support. Convert a number of INSIST()s into plain fatal() errors which report the triggering result code. The 'key' command wasn't disabling GSS-TSIG. [RT #17099] 2239. [func] Ship a pre built bin/named/bind9.xsl.h. [RT #17114] 2238. [bug] It was possible to trigger a REQUIRE when a validation was canceled. [RT #17106] 2237. [bug] libbind: res_init() was not thread aware. [RT #17123] 2236. [bug] dnssec-signzone failed to preserve the case of of wildcard owner names. [RT #17085] 2235. [bug] was not being installed. [RT #17135] 2234. [port] Correct some compiler warnings on SCO OSr5 [RT #17134] 2233. [func] Add support for O(1) ACL processing, based on radix tree code originally written by Kevin Brintnall. [RT #16288] 2232. [bug] dns_adb_findaddrinfo() could fail and return ISC_R_SUCCESS. [RT #17137] 2231. [bug] Building dlzbdb (contrib/dlz/bin/dlzbdb) was broken. [RT #17088] 2230. [bug] We could INSIST reading a corrupted journal. [RT #17132] 2229. [bug] Null pointer dereference on query pool creation failure. [RT #17133] 2228. [contrib] contrib: Change 2188 was incomplete. 2227. [cleanup] Tidied up the FAQ. [RT #17121] 2226. [placeholder] 2225. [bug] More support for systems with no IPv4 addresses. [RT #17111] 2224. [bug] Defer journal compaction if a xfrin is in progress. [RT #17119] 2223. [bug] Make a new journal when compacting. [RT #17119] 2222. [func] named-checkconf now checks server key references. [RT #17097] 2221. [bug] Set the event result code to reflect the actual record turned to caller when a cache update is rejected due to a more credible answer existing. [RT #17017] 2220. [bug] win32: Address a race condition in final shutdown of the Windows socket code. [RT #17028] 2219. [bug] Apply zone consistency checks to additions, not removals, when updating. [RT #17049] 2218. [bug] Remove unnecessary REQUIRE from dns_validator_create(). [RT #16976] 2217. [func] Adjust update log levels. [RT #17092] 2216. [cleanup] Fix a number of errors reported by Coverity. [RT #17094] 2215. [bug] Bad REQUIRE check isc_hmacsha1_verify(). [RT #17094] 2214. [bug] Deregister OpenSSL lock callback when cleaning up. Reorder OpenSSL cleanup so that RAND_cleanup() is called before the locks are destroyed. [RT #17098] 2213. [bug] SIG0 diagnostic failure messages were looking at the wrong status code. [RT #17101] 2212. [func] 'host -m' now causes memory statistics and active memory to be printed at exit. [RT 17028] 2211. [func] Update "dynamic update temporarily disabled" message. [RT #17065] 2210. [bug] Deleting class specific records via UPDATE could fail. [RT #17074] 2209. [port] osx: linking against user supplied static OpenSSL libraries failed as the system ones were still being found. [RT #17078] 2208. [port] win32: make sure both build methods produce the same output. [RT #17058] 2207. [port] Some implementations of getaddrinfo() fail to set ai_canonname correctly. [RT #17061] --- 9.5.0a6 released --- 2206. [security] "allow-query-cache" and "allow-recursion" now cross inherit from each other. If allow-query-cache is not set in named.conf then allow-recursion is used if set, otherwise allow-query is used if set, otherwise the default (localnets; localhost;) is used. If allow-recursion is not set in named.conf then allow-query-cache is used if set, otherwise allow-query is used if set, otherwise the default (localnets; localhost;) is used. [RT #16987] 2205. [bug] libbind: change #2119 broke thread support. [RT #16982] 2204. [bug] "rndc flushname name unknown-view" caused named to crash. [RT #16984] 2203. [security] Query id generation was cryptographically weak. [RT # 16915] 2202. [security] The default acls for allow-query-cache and allow-recursion were not being applied. [RT #16960] 2201. [bug] The build failed in a separate object directory. [RT #16943] 2200. [bug] The search for cached NSEC records was stopping to early leading to excessive DLV queries. [RT #16930] 2199. [bug] win32: don't call WSAStartup() while loading dlls. [RT #16911] 2198. [bug] win32: RegCloseKey() could be called when RegOpenKeyEx() failed. [RT #16911] 2197. [bug] Add INSIST to catch negative responses which are not setting the event result code appropriately. [RT #16909] 2196. [port] win32: yield processor while waiting for once to to complete. [RT #16958] 2195. [func] dnssec-keygen now defaults to nametype "ZONE" when generating DNSKEYs. [RT #16954] 2194. [bug] Close journal before calling 'done' in xfrin.c. --- 9.5.0a5 released --- 2193. [port] win32: BINDInstall.exe is now linked statically. [RT #16906] 2192. [port] win32: use vcredist_x86.exe to install Visual Studio's redistributable dlls if building with Visual Stdio 2005 or later. 2191. [func] named-checkzone now allows dumping to stdout (-). named-checkconf now has -h for help. named-checkzone now has -h for help. rndc now has -h for help. Better handling of '-?' for usage summaries. [RT #16707] 2190. [func] Make fallback to plain DNS from EDNS due to timeouts more visible. New logging category "edns-disabled". [RT #16871] 2189. [bug] Handle socket() returning EINTR. [RT #15949] 2188. [contrib] queryperf: autoconf changes to make the search for libresolv or libbind more robust. [RT #16299] 2187. [bug] query_addds(), query_addwildcardproof() and query_addnxrrsetnsec() should take a version argument. [RT #16368] 2186. [port] cygwin: libbind: check for struct sockaddr_storage independently of IPv6. [RT #16482] 2185. [port] sunos: libbind: check for ssize_t, memmove() and memchr(). [RT #16463] 2184. [bug] bind9.xsl.h didn't build out of the source tree. [RT #16830] 2183. [bug] dnssec-signzone didn't handle offline private keys well. [RT #16832] 2182. [bug] dns_dispatch_createtcp() and dispatch_createudp() could return ISC_R_SUCCESS when they ran out of memory. [RT #16365] 2181. [port] sunos: libbind: add paths.h from BIND 8. [RT #16462] 2180. [cleanup] Remove bit test from 'compress_test' as they are no longer needed. [RT #16497] 2179. [func] 'rndc command zone' will now find 'zone' if it is unique to all the views. [RT #16821] 2178. [bug] 'rndc reload' of a slave or stub zone resulted in a reference leak. [RT #16867] 2177. [bug] Array bounds overrun on read (rcodetext) at debug level 10+. [RT #16798] 2176. [contrib] dbus update to handle race condition during initialization (Bugzilla 235809). [RT #16842] 2175. [bug] win32: windows broadcast condition variable support was broken. [RT #16592] 2174. [bug] I/O errors should always be fatal when reading master files. [RT #16825] 2173. [port] win32: When compiling with MSVS 2005 SP1 we also need to ship Microsoft.VC80.MFCLOC. --- 9.5.0a4 released --- 2172. [bug] query_addsoa() was being called with a non zone db. [RT #16834] 2171. [bug] Handle breaks in DNSSEC trust chains where the parent servers are not DS aware (DS queries to the parent return a referral to the child). 2170. [func] Add acache processing to test suite. [RT #16711] 2169. [bug] host, nslookup: when reporting NXDOMAIN report the given name and not the last name searched for. [RT #16763] 2168. [bug] nsupdate: in non-interactive mode treat syntax errors as fatal errors. [RT #16785] 2167. [bug] When re-using a automatic zone named failed to attach it to the new view. [RT #16786] --- 9.5.0a3 released --- 2166. [bug] When running in batch mode, dig could misinterpret a server address as a name to be looked up, causing unexpected output. [RT #16743] 2165. [func] Allow the destination address of a query to determine if we will answer the query or recurse. allow-query-on, allow-recursion-on and allow-query-cache-on. [RT #16291] 2164. [bug] The code to determine how named-checkzone / named-compilezone was called failed under windows. [RT #16764] 2163. [bug] If only one of query-source and query-source-v6 specified a port the query pools code broke (change 2129). [RT #16768] 2162. [func] Allow "rrset-order fixed" to be disabled at compile time. [RT #16665] 2161. [bug] Fix which log messages are emitted for 'rndc flush'. [RT #16698] 2160. [bug] libisc wasn't handling NULL ifa_addr pointers returned from getifaddrs(). [RT #16708] --- 9.5.0a2 released --- 2159. [bug] Array bounds overrun in acache processing. [RT #16710] 2158. [bug] ns_client_isself() failed to initialize key leading to a REQUIRE failure. [RT #16688] 2157. [func] dns_db_transfernode() created. [RT #16685] 2156. [bug] Fix node reference leaks in lookup.c:lookup_find(), resolver.c:validated() and resolver.c:cache_name(). Fix a memory leak in rbtdb.c:free_noqname(). Make lookup.c:lookup_find() robust against event leaks. [RT #16685] 2155. [contrib] SQLite sdb module from jaboydjr@netwalk.com. [RT #16694] 2154. [func] Scoped (e.g. IPv6 link-local) addresses may now be matched in acls by omitting the scope. [RT #16599] 2153. [bug] nsupdate could leak memory. [RT #16691] 2152. [cleanup] Use sizeof(buf) instead of fixed number in dighost.c:get_trusted_key(). [RT #16678] 2151. [bug] Missing newline in usage message for journalprint. [RT #16679] 2150. [bug] 'rrset-order cyclic' uniformly distribute the starting point for the first response for a given RRset. [RT #16655] 2149. [bug] isc_mem_checkdestroyed() failed to abort on if there were still active memory contexts. [RT #16672] 2148. [func] Add positive logging for rndc commands. [RT #14623] 2147. [bug] libbind: remove potential buffer overflow from hmac_link.c. [RT #16437] 2146. [cleanup] Silence Linux's spurious "obsolete setsockopt SO_BSDCOMPAT" message. [RT #16641] 2145. [bug] Check DS/DLV digest lengths for known digests. [RT #16622] 2144. [cleanup] Suppress logging of SERVFAIL from forwarders. [RT #16619] 2143. [bug] We failed to restart the IPv6 client when the kernel failed to return the destination the packet was sent to. [RT #16613] 2142. [bug] Handle master files with a modification time that matches the epoch. [RT #16612] 2141. [bug] dig/host should not be setting IDN_ASCCHECK (IDN equivalent of LDH checks). [RT #16609] 2140. [bug] libbind: missing unlock on pthread_key_create() failures. [RT #16654] 2139. [bug] dns_view_find() was being called with wrong type in adb.c. [RT #16670] 2138. [bug] Lock order reversal in resolver.c. [RT #16653] 2137. [port] Mips little endian and/or mips 64 bit are now supported for atomic operations. [RT #16648] 2136. [bug] nslookup/host looped if there was no search list and the host didn't exist. [RT #16657] 2135. [bug] Uninitialized rdataset in sdlz.c. [RT #16656] 2134. [func] Additional statistics support. [RT #16666] 2133. [port] powerpc: Support both IBM and MacOS Power PC assembler syntaxes. [RT #16647] 2132. [bug] Missing unlock on out of memory in dns_dispatchmgr_setudp(). 2131. [contrib] dlz/mysql: AXFR was broken. [RT #16630] 2130. [func] Log if CD or DO were set. [RT #16640] 2129. [func] Provide a pool of UDP sockets for queries to be made over. See use-queryport-pool, queryport-pool-ports and queryport-pool-updateinterval. [RT #16415] 2128. [doc] xsltproc --nonet, update DTD versions. [RT #16635] 2127. [port] Improved OpenSSL 0.9.8 support. [RT #16563] 2126. [security] Serialize validation of type ANY responses. [RT #16555] 2125. [bug] dns_zone_getzeronosoattl() REQUIRE failure if DLZ was defined. [RT #16574] 2124. [security] It was possible to dereference a freed fetch context. [RT #16584] --- 9.5.0a1 released --- 2123. [func] Use Doxygen to generate internal documentation. [RT #11398] 2122. [func] Experimental http server and statistics support for named via xml. 2121. [func] Add a 10 slot dead masters cache (LRU) with a 600 second timeout. [RT #16553] 2120. [doc] Fix markup on nsupdate man page. [RT #16556] 2119. [compat] libbind: allow res_init() to succeed enough to return the default domain even if it was unable to allocate memory. 2118. [bug] Handle response with long chains of domain name compression pointers which point to other compression pointers. [RT #16427] 2117. [bug] DNSSEC fixes: named could fail to cache NSEC records which could lead to validation failures. named didn't handle negative DS responses that were in the process of being validated. Check CNAME bit before accepting NODATA proof. To be able to ignore a child NSEC there must be SOA (and NS) set in the bitmap. [RT #16399] 2116. [bug] 'rndc reload' could cause the cache to continually be cleaned. [RT #16401] 2115. [bug] 'rndc reconfig' could trigger a INSIST if the number of masters for a zone was reduced. [RT #16444] 2114. [bug] dig/host/nslookup: searches for names with multiple labels were failing. [RT #16447] 2113. [bug] nsupdate: if a zone is specified it should be used for server discover. [RT #16455] 2112. [security] Warn if weak RSA exponent is used. [RT #16460] 2111. [bug] Fix a number of errors reported by Coverity. [RT #16507] 2110. [bug] "minimal-responses yes;" interacted badly with BIND 8 priming queries. [RT #16491] 2109. [port] libbind: silence aix 5.3 compiler warnings. [RT #16502] 2108. [func] DHCID support. [RT #16456] 2107. [bug] dighost.c: more cleanup of buffers. [RT #16499] 2106. [func] 'rndc status' now reports named's version. [RT #16426] 2105. [func] GSS-TSIG support (RFC 3645). 2104. [port] Fix Solaris SMF error message. 2103. [port] Add /usr/sfw to list of locations for OpenSSL under Solaris. 2102. [port] Silence Solaris 10 warnings. 2101. [bug] OpenSSL version checks were not quite right. [RT #16476] 2100. [port] win32: copy libeay32.dll to Build\Debug. Copy Debug\named-checkzone to Debug\named-compilezone. 2099. [port] win32: more manifest issues. 2098. [bug] Race in rbtdb.c:no_references(), which occasionally triggered an INSIST failure about the node lock reference. [RT #16411] 2097. [bug] named could reference a destroyed memory context after being reloaded / reconfigured. [RT #16428] 2096. [bug] libbind: handle applications that fail to detect res_init() failures better. 2095. [port] libbind: always prototype inet_cidr_ntop_ipv6() and net_cidr_ntop_ipv6(). [RT #16388] 2094. [contrib] Update named-bootconf. [RT #16404] 2093. [bug] named-checkzone -s was broken. 2092. [bug] win32: dig, host, nslookup. Use registry config if resolv.conf does not exist or no nameservers listed. [RT #15877] 2091. [port] dighost.c: race condition on cleanup. [RT #16417] 2090. [port] win32: Visual C++ 2005 command line manifest support. [RT #16417] 2089. [security] Raise the minimum safe OpenSSL versions to OpenSSL 0.9.7l and OpenSSL 0.9.8d. Versions prior to these have known security flaws which are (potentially) exploitable in named. [RT #16391] 2088. [security] Change the default RSA exponent from 3 to 65537. [RT #16391] 2087. [port] libisc failed to compile on OS's w/o a vsnprintf. [RT #16382] 2086. [port] libbind: FreeBSD now has get*by*_r() functions. [RT #16403] 2085. [doc] win32: added index.html and README to zip. [RT #16201] 2084. [contrib] dbus update for 9.3.3rc2. 2083. [port] win32: Visual C++ 2005 support. 2082. [doc] Document 'cache-file' as a test only option. 2081. [port] libbind: minor 64-bit portability fix in memcluster.c. [RT #16360] 2080. [port] libbind: res_init.c did not compile on older versions of Solaris. [RT #16363] 2079. [bug] The lame cache was not handling multiple types correctly. [RT #16361] 2078. [bug] dnssec-checkzone output style "default" was badly named. It is now called "relative". [RT #16326] 2077. [bug] 'dnssec-signzone -O raw' wasn't outputting the complete signed zone. [RT #16326] 2076. [bug] Several files were missing #include causing build failures on OSF. [RT #16341] 2075. [bug] The spillat timer event handler could leak memory. [RT #16357] 2074. [bug] dns_request_createvia2(), dns_request_createvia3(), dns_request_createraw2() and dns_request_createraw3() failed to send multiple UDP requests. [RT #16349] 2073. [bug] Incorrect semantics check for update policy "wildcard". [RT #16353] 2072. [bug] We were not generating valid HMAC SHA digests. [RT #16320] 2071. [port] Test whether gcc accepts -fno-strict-aliasing. [RT #16324] 2070. [bug] The remote address was not always displayed when reporting dispatch failures. [RT #16315] 2069. [bug] Cross compiling was not working. [RT #16330] 2068. [cleanup] Lower incremental tuning message to debug 1. [RT #16319] 2067. [bug] 'rndc' could close the socket too early triggering a INSIST under Windows. [RT #16317] 2066. [security] Handle SIG queries gracefully. [RT #16300] 2065. [bug] libbind: probe for HPUX prototypes for endprotoent_r() and endservent_r(). [RT 16313] 2064. [bug] libbind: silence AIX compiler warnings. [RT #16218] 2063. [bug] Change #1955 introduced a bug which caused the first 'rndc flush' call to not free memory. [RT #16244] 2062. [bug] 'dig +nssearch' was reusing a buffer before it had been returned by the socket code. [RT #16307] 2061. [bug] Accept expired wildcard message reversed. [RT #16296] 2060. [bug] Enabling DLZ support could leave views partially configured. [RT #16295] 2059. [bug] Search into cache rbtdb could trigger an INSIST failure while cleaning up a stale rdataset. [RT #16292] 2058. [bug] Adjust how we calculate rtt estimates in the presence of authoritative servers that drop EDNS and/or CD requests. Also fallback to EDNS/512 and plain DNS faster for zones with less than 3 servers. [RT #16187] 2057. [bug] Make setting "ra" dependent on both allow-query-cache and allow-recursion. [RT #16290] 2056. [bug] dig: ixfr= was not being treated case insensitively at all times. [RT #15955] 2055. [bug] Missing goto after dropping multicast query. [RT #15944] 2054. [port] freebsd: do not explicitly link against -lpthread. [RT #16170] 2053. [port] netbsd:libbind: silence compiler warnings. [RT #16220] 2052. [bug] 'rndc' improve connect failed message to report the failing address. [RT #15978] 2051. [port] More strtol() fixes. [RT #16249] 2050. [bug] Parsing of NSAP records was not case insensitive. [RT #16287] 2049. [bug] Restore SOA before AXFR when falling back from a attempted IXFR when transferring in a zone. Allow a initial SOA query before attempting a AXFR to be requested. [RT #16156] 2048. [bug] It was possible to loop forever when using avoid-v4-udp-ports / avoid-v6-udp-ports when the OS always returned the same local port. [RT #16182] 2047. [bug] Failed to initialize the interface flags to zero. [RT #16245] 2046. [bug] rbtdb.c:rdataset_setadditional() could cause duplicate cleanup [RT #16247]. 2045. [func] Use lock buckets for acache entries to limit memory consumption. [RT #16183] 2044. [port] Add support for atomic operations for Itanium. [RT #16179] 2043. [port] nsupdate/nslookup: Force the flushing of the prompt for interactive sessions. [RT #16148] 2042. [bug] named-checkconf was incorrectly rejecting the logging category "config". [RT #16117] 2041. [bug] "configure --with-dlz-bdb=yes" produced a bad set of libraries to be linked. [RT #16129] 2040. [bug] rbtdb no_references() could trigger an INSIST failure with --enable-atomic. [RT #16022] 2039. [func] Check that all buffers passed to the socket code have been retrieved when the socket event is freed. [RT #16122] 2038. [bug] dig/nslookup/host was unlinking from wrong list when handling errors. [RT #16122] 2037. [func] When unlinking the first or last element in a list check that the list head points to the element to be unlinked. [RT #15959] 2036. [bug] 'rndc recursing' could cause trigger a REQUIRE. [RT #16075] 2035. [func] Make falling back to TCP on UDP refresh failure optional. Default "try-tcp-refresh yes;" for BIND 8 compatibility. [RT #16123] 2034. [bug] gcc: set -fno-strict-aliasing. [RT #16124] 2033. [bug] We weren't creating multiple client memory contexts on demand as expected. [RT #16095] 2032. [bug] Remove a INSIST in query_addadditional2(). [RT #16074] 2031. [bug] Emit a error message when "rndc refresh" is called on a non slave/stub zone. [RT # 16073] 2030. [bug] We were being overly conservative when disabling openssl engine support. [RT #16030] 2029. [bug] host printed out the server multiple times when specified on the command line. [RT #15992] 2028. [port] linux: socket.c compatibility for old systems. [RT #16015] 2027. [port] libbind: Solaris x86 support. [RT #16020] 2026. [bug] Rate limit the two recursive client exceeded messages. [RT #16044] 2025. [func] Update "zone serial unchanged" message. [RT #16026] 2024. [bug] named emitted spurious "zone serial unchanged" messages on reload. [RT #16027] 2023. [bug] "make install" should create ${localstatedir}/run and ${sysconfdir} if they do not exist. [RT #16033] 2022. [bug] If dnssec validation is disabled only assert CD if CD was requested. [RT #16037] 2021. [bug] dnssec-enable no; triggered a REQUIRE. [RT #16037] 2020. [bug] rdataset_setadditional() could leak memory. [RT #16034] 2019. [tuning] Reduce the amount of work performed per quantum when cleaning the cache. [RT #15986] 2018. [bug] Checking if the HMAC MD5 private file was broken. [RT #15960] 2017. [bug] allow-query default was not correct. [RT #15946] 2016. [bug] Return a partial answer if recursion is not allowed but requested and we had the answer to the original qname. [RT #15945] 2015. [cleanup] use-additional-cache is now acache-enable for consistency. Default acache-enable off in BIND 9.4 as it requires memory usage to be configured. It may be enabled by default in BIND 9.5 once we have more experience with it. 2014. [func] Statistics about acache now recorded and sent to log. [RT #15976] 2013. [bug] Handle unexpected TSIGs on unsigned AXFR/IXFR responses more gracefully. [RT #15941] 2012. [func] Don't insert new acache entries if acache is full. [RT #15970] 2011. [func] dnssec-signzone can now update the SOA record of the signed zone, either as an increment or as the system time(). [RT #15633] 2010. [placeholder] rt15958 2009. [bug] libbind: Coverity fixes. [RT #15808] 2008. [func] It is now possible to enable/disable DNSSEC validation from rndc. This is useful for the mobile hosts where the current connection point breaks DNSSEC (firewall/proxy). [RT #15592] rndc validation newstate [view] 2007. [func] It is now possible to explicitly enable DNSSEC validation. default dnssec-validation no; to be changed to yes in 9.5.0. [RT #15674] 2006. [security] Allow-query-cache and allow-recursion now default to the built in acls "localnets" and "localhost". This is being done to make caching servers less attractive as reflective amplifying targets for spoofed traffic. This still leave authoritative servers exposed. The best fix is for full BCP 38 deployment to remove spoofed traffic. 2005. [bug] libbind: Retransmission timeouts should be based on which attempt it is to the nameserver and not the nameserver itself. [RT #13548] 2004. [bug] dns_tsig_sign() could pass a NULL pointer to dst_context_destroy() when cleaning up after a error. [RT #15835] 2003. [bug] libbind: The DNS name/address lookup functions could occasionally follow a random pointer due to structures not being completely zeroed. [RT #15806] 2002. [bug] libbind: tighten the constraints on when struct addrinfo._ai_pad exists. [RT #15783] 2001. [func] Check the KSK flag when updating a secure dynamic zone. New zone option "update-check-ksk yes;". [RT #15817] 2000. [bug] memmove()/strtol() fix was incomplete. [RT #15812] 1999. [func] Implement "rrset-order fixed". [RT #13662] 1998. [bug] Restrict handling of fifos as sockets to just SunOS. This allows named to connect to entropy gathering daemons that use fifos instead of sockets. [RT #15840] 1997. [bug] Named was failing to replace negative cache entries when a positive one for the type was learnt. [RT #15818] 1996. [bug] nsupdate: if a zone has been specified it should appear in the output of 'show'. [RT #15797] 1995. [bug] 'host' was reporting multiple "is an alias" messages. [RT #15702] 1994. [port] OpenSSL 0.9.8 support. [RT #15694] 1993. [bug] Log messages, via syslog, were missing the space after the timestamp if "print-time yes" was specified. [RT #15844] 1992. [bug] Not all incoming zone transfer messages included the view. [RT #15825] 1991. [cleanup] The configuration data, once read, should be treated as read only. Expand the use of const to enforce this at compile time. [RT #15813] 1990. [bug] libbind: isc's override of broken gettimeofday() implementations was not always effective. [RT #15709] 1989. [bug] win32: don't check the service password when re-installing. [RT #15882] 1988. [bug] Remove a bus error from the SHA256/SHA512 support. [RT #15878] 1987. [func] DS/DLV SHA256 digest algorithm support. [RT #15608] 1986. [func] Report when a zone is removed. [RT #15849] 1985. [protocol] DLV has now been assigned a official type code of 32769. [RT #15807] Note: care should be taken to ensure you upgrade both named and dnssec-signzone at the same time for zones with DLV records where named is the master server for the zone. Also any zones that contain DLV records should be removed when upgrading a slave zone. You do not however have to upgrade all servers for a zone with DLV records simultaneously. 1984. [func] dig, nslookup and host now advertise a 4096 byte EDNS UDP buffer size by default. [RT #15855] 1983. [func] Two new update policies. "selfsub" and "selfwild". [RT #12895] 1982. [bug] DNSKEY was being accepted on the parent side of a delegation. KEY is still accepted there for RFC 3007 validated updates. [RT #15620] 1981. [bug] win32: condition.c:wait() could fail to reattain the mutex lock. 1980. [func] dnssec-signzone: output the SOA record as the first record in the signed zone. [RT #15758] 1979. [port] linux: allow named to drop core after changing user ids. [RT #15753] 1978. [port] Handle systems which have a broken recvmsg(). [RT #15742] 1977. [bug] Silence noisy log message. [RT #15704] 1976. [bug] Handle systems with no IPv4 addresses. [RT #15695] 1975. [bug] libbind: isc_gethexstring() could misparse multi-line hex strings with comments. [RT #15814] 1974. [doc] List each of the zone types and associated zone options separately in the ARM. 1973. [func] TSIG HMACSHA1, HMACSHA224, HMACSHA256, HMACSHA384 and HMACSHA512 support. [RT #13606] 1972. [contrib] DBUS dynamic forwarders integration from Jason Vas Dias . 1971. [port] linux: make detection of missing IF_NAMESIZE more robust. [RT #15443] 1970. [bug] nsupdate: adjust UDP timeout when falling back to unsigned SOA query. [RT #15775] 1969. [bug] win32: the socket code was freeing the socket structure too early. [RT #15776] 1968. [bug] Missing lock in resolver.c:validated(). [RT #15739] 1967. [func] dig/nslookup/host: warn about missing "QR". [RT #15779] 1966. [bug] Don't set CD when we have fallen back to plain DNS. [RT #15727] 1965. [func] Suppress spurious "recursion requested but not available" warning with 'dig +qr'. [RT #15780]. 1964. [func] Separate out MX and SRV to CNAME checks. [RT #15723] 1963. [port] Tru64 4.0E doesn't support send() and recv(). [RT #15586] 1962. [bug] Named failed to clear old update-policy when it was removed. [RT #15491] 1961. [bug] Check the port and address of responses forwarded to dispatch. [RT #15474] 1960. [bug] Update code should set NSEC ttls from SOA MINIMUM. [RT #15465] 1959. [func] Control the zeroing of the negative response TTL to a soa query. Defaults "zero-no-soa-ttl yes;" and "zero-no-soa-ttl-cache no;". [RT #15460] 1958. [bug] Named failed to update the zone's secure state until the zone was reloaded. [RT #15412] 1957. [bug] Dig mishandled responses to class ANY queries. [RT #15402] 1956. [bug] Improve cross compile support, 'gen' is now built by native compiler. See README for additional cross compile support information. [RT #15148] 1955. [bug] Pre-allocate the cache cleaning iterator. [RT #14998] 1954. [func] Named now falls back to advertising EDNS with a 512 byte receive buffer if the initial EDNS queries fail. [RT #14852] 1953. [func] The maximum EDNS UDP response named will send can now be set in named.conf (max-udp-size). This is independent of the advertised receive buffer (edns-udp-size). [RT #14852] 1952. [port] hpux: tell the linker to build a runtime link path "-Wl,+b:". [RT #14816]. 1951. [security] Drop queries from particular well known ports. Don't return FORMERR to queries from particular well known ports. [RT #15636] 1950. [port] Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket. This prevents the source address being set for TCP connections. [RT #15628] 1949. [func] Addition memory leakage checks. [RT #15544] 1948. [bug] If was possible to trigger a REQUIRE failure in xfrin.c:maybe_free() if named ran out of memory. [RT #15568] 1947. [func] It is now possible to configure named to accept expired RRSIGs. Default "dnssec-accept-expired no;". Setting "dnssec-accept-expired yes;" leaves named vulnerable to replay attacks. [RT #14685] 1946. [bug] resume_dslookup() could trigger a REQUIRE failure when using forwarders. [RT #15549] 1945. [cleanup] dnssec-keygen: RSA (RSAMD5) is no longer recommended. To generate a RSAMD5 key you must explicitly request RSAMD5. [RT #13780] 1944. [cleanup] isc_hash_create() does not need a read/write lock. [RT #15522] 1943. [bug] Set the loadtime after rolling forward the journal. [RT #15647] 1942. [bug] If the name of a DNSKEY match that of one in trusted-keys do not attempt to validate the DNSKEY using the parents DS RRset. [RT #15649] 1941. [bug] ncache_adderesult() should set eresult even if no rdataset is passed to it. [RT #15642] 1940. [bug] Fixed a number of error conditions reported by Coverity. 1939. [bug] The resolver could dereference a null pointer after validation if all the queries have timed out. [RT #15528] 1938. [bug] The validator was not correctly handling unsecure negative responses at or below a SEP. [RT #15528] 1937. [bug] sdlz doesn't handle RRSIG records. [RT #15564] 1936. [bug] The validator could leak memory. [RT #15544] 1935. [bug] 'acache' was DO sensitive. [RT #15430] 1934. [func] Validate pending NS RRsets, in the authority section, prior to returning them if it can be done without requiring DNSKEYs to be fetched. [RT #15430] 1933. [bug] dump_rdataset_raw() had a incorrect INSIST. [RT #15534] 1932. [bug] hpux: LDFLAGS was getting corrupted. [RT #15530] 1931. [bug] Per-client mctx could require a huge amount of memory, particularly for a busy caching server. [RT #15519] 1930. [port] HPUX: ia64 support. [RT #15473] 1929. [port] FreeBSD: extend use of PTHREAD_SCOPE_SYSTEM. 1928. [bug] Race in rbtdb.c:currentversion(). [RT #15517] 1927. [bug] Access to soanode or nsnode in rbtdb violated the lock order rule and could cause a dead lock. [RT #15518] 1926. [bug] The Windows installer did not check for empty passwords. BINDinstall was being installed in the wrong place. [RT #15483] 1925. [port] All outer level AC_TRY_RUNs need cross compiling defaults. [RT #15469] 1924. [port] libbind: hpux ia64 support. [RT #15473] 1923. [bug] ns_client_detach() called too early. [RT #15499] 1922. [bug] check-tool.c:setup_logging() missing call to dns_log_setcontext(). 1921. [bug] Client memory contexts were not using internal malloc. [RT #15434] 1920. [bug] The cache rbtdb lock array was too small to have the desired performance characteristics. [RT #15454] 1919. [contrib] queryperf: a set of new features: collecting/printing response delays, printing intermediate results, and adjusting query rate for the "target" qps. 1918. [bug] Memory leak when checking acls. [RT #15391] 1917. [doc] funcsynopsisinfo wasn't being treated as verbatim when generating man pages. [RT #15385] 1916. [func] Integrate contributed IDN code from JPNIC. [RT #15383] 1915. [bug] dig +ndots was broken. [RT #15215] 1914. [protocol] DS is required to accept mnemonic algorithms (RFC 4034). Still emit numeric algorithms for compatibility with RFC 3658. [RT #15354] 1913. [func] Integrate contributed DLZ code into named. [RT #11382] 1912. [port] aix: atomic locking for powerpc. [RT #15020] 1911. [bug] Update windows socket code. [RT #14965] 1910. [bug] dig's +sigchase code overhauled. [RT #14933] 1909. [bug] The DLV code has been re-worked to make no longer query order sensitive. [RT #14933] 1908. [func] dig now warns if 'RA' is not set in the answer when 'RD' was set in the query. host/nslookup skip servers that fail to set 'RA' when 'RD' is set unless a server is explicitly set. [RT #15005] 1907. [func] host/nslookup now continue (default)/fail on SERVFAIL. [RT #15006] 1906. [func] dig now has a '-q queryname' and '+showsearch' options. [RT #15034] 1905. [bug] Strings returned from cfg_obj_asstring() should be treated as read-only. The prototype for cfg_obj_asstring() has been updated to reflect this. [RT #15256] 1904. [func] Automatic empty zone creation for D.F.IP6.ARPA and friends. Note: RFC 1918 zones are not yet covered by this but are likely to be in a future release. New options: empty-server, empty-contact, empty-zones-enable and disable-empty-zone. 1903. [func] ISC string copy API. 1902. [func] Attempt to make the amount of work performed in a iteration self tuning. The covers nodes clean from the cache per iteration, nodes written to disk when rewriting a master file and nodes destroyed per iteration when destroying a zone or a cache. [RT #14996] 1901. [cleanup] Don't add DNSKEY records to the additional section. 1900. [bug] ixfr-from-differences failed to ensure that the serial number increased. [RT #15036] 1899. [func] named-checkconf now validates update-policy entries. [RT #14963] 1898. [bug] Extend ISC_SOCKADDR_FORMATSIZE and ISC_NETADDR_FORMATSIZE to allow for scope details. 1897. [func] x86 and x86_64 now have separate atomic locking implementations. 1896. [bug] Recursive clients soft quota support wasn't working as expected. [RT #15103] 1895. [bug] A escaped character is, potentially, converted to the output character set too early. [RT #14666] 1894. [doc] Review ARM for BIND 9.4. 1893. [port] Use uintptr_t if available. [RT #14606] 1892. [func] Support for SPF rdata type. [RT #15033] 1891. [port] freebsd: pthread_mutex_init can fail if it runs out of memory. [RT #14995] 1890. [func] Raise the UDP receive buffer size to 32k if it is less than 32k. [RT #14953] 1889. [port] sunos: non blocking i/o support. [RT #14951] 1888. [func] Support for IPSECKEY rdata type. [RT #14967] 1887. [bug] The cache could delete expired records too fast for clients with a virtual time in the past. [RT #14991] 1886. [bug] fctx_create() could return success even though it failed. [RT #14993] 1885. [func] dig: report the number of extra bytes still left in the packet after processing all the records. 1884. [cleanup] dighost.c: move external declarations into . 1883. [bug] dnssec-signzone, dnssec-keygen: handle negative debug levels. [RT #14962] 1882. [func] Limit the number of recursive clients that can be waiting for a single query () to resolve. New options clients-per-query and max-clients-per-query. 1881. [func] Add a system test for named-checkconf. [RT #14931] 1880. [func] The lame cache is now done on a basis as some servers only appear to be lame for certain query types. [RT #14916] 1879. [func] "USE INTERNAL MALLOC" is now runtime selectable. [RT #14892] 1878. [func] Detect duplicates of UDP queries we are recursing on and drop them. New stats category "duplicate". [RT #2471] 1877. [bug] Fix unreasonably low quantum on call to dns_rbt_destroy2(). Remove unnecessary unhash_node() call. [RT #14919] 1876. [func] Additional memory debugging support to track size and mctx arguments. [RT #14814] 1875. [bug] process_dhtkey() was using the wrong memory context to free some memory. [RT #14890] 1874. [port] sunos: portability fixes. [RT #14814] 1873. [port] win32: isc__errno2result() now reports its caller. [RT #13753] 1872. [port] win32: Handle ERROR_NETNAME_DELETED. [RT #13753] 1871. [placeholder] 1870. [func] Added framework for handling multiple EDNS versions. [RT #14873] 1869. [func] dig can now specify the EDNS version when making a query. [RT #14873] 1868. [func] edns-udp-size can now be overridden on a per server basis. [RT #14851] 1867. [bug] It was possible to trigger a INSIST in dlv_validatezonekey(). [RT #14846] 1866. [bug] resolv.conf parse errors were being ignored by dig/host/nslookup. [RT #14841] 1865. [bug] Silently ignore nameservers in /etc/resolv.conf with bad addresses. [RT #14841] 1864. [bug] Don't try the alternative transfer source if you got a answer / transfer with the main source address. [RT #14802] 1863. [bug] rrset-order "fixed" error messages not complete. 1862. [func] Add additional zone data constancy checks. named-checkzone has extended checking of NS, MX and SRV record and the hosts they reference. named has extended post zone load checks. New zone options: check-mx and integrity-check. [RT #4940] 1861. [bug] dig could trigger a INSIST on certain malformed responses. [RT #14801] 1860. [port] solaris 2.8: hack_shutup_pthreadmutexinit was incorrectly set. [RT #14775] 1859. [func] Add support for CH A record. [RT #14695] 1858. [bug] The flush-zones-on-shutdown option wasn't being parsed. [RT #14686] 1857. [bug] named could trigger a INSIST() if reconfigured / reloaded too fast. [RT #14673] 1856. [doc] Switch Docbook toolchain from DSSSL to XSL. [RT #11398] 1855. [bug] ixfr-from-differences was failing to detect changes of ttl due to dns_diff_subtract() was ignoring the ttl of records. [RT #14616] 1854. [bug] lwres also needs to know the print format for (long long). [RT #13754] 1853. [bug] Rework how DLV interacts with proveunsecure(). [RT #13605] 1852. [cleanup] Remove last vestiges of dnssec-signkey and dnssec-makekeyset (removed from Makefile years ago). 1851. [doc] Doxygen comment markup. [RT #11398] 1850. [bug] Memory leak in lwres_getipnodebyaddr(). [RT #14591] 1849. [doc] All forms of the man pages (docbook, man, html) should have consistent copyright dates. 1848. [bug] Improve SMF integration. [RT #13238] 1847. [bug] isc_ondestroy_init() is called too late in dns_rbtdb_create()/dns_rbtdb64_create(). [RT #13661] 1846. [contrib] query-loc-0.3.0 from Stephane Bortzmeyer . 1845. [bug] Improve error reporting to distinguish between accept()/fcntl() and socket()/fcntl() errors. [RT #13745] 1844. [bug] inet_pton() accepted more that 4 hexadecimal digits for each 16 bit piece of the IPv6 address. The text representation of a IPv6 address has been tightened to disallow this (draft-ietf-ipv6-addr-arch-v4-02.txt). [RT #5662] 1843. [cleanup] CINCLUDES takes precedence over CFLAGS. This helps when CFLAGS contains "-I /usr/local/include" resulting in old header files being used. 1842. [port] cmsg_len() could produce incorrect results on some platform. [RT #13744] 1841. [bug] "dig +nssearch" now makes a recursive query to find the list of nameservers to query. [RT #13694] 1840. [func] dnssec-signzone can now randomize signature end times (dnssec-signzone -j jitter). [RT #13609] 1839. [bug] was not being installed. 1838. [cleanup] Don't allow Linux capabilities to be inherited. [RT #13707] 1837. [bug] Compile time option ISC_FACILITY was not effective for 'named -u '. [RT #13714] 1836. [cleanup] Silence compiler warnings in hash_test.c. 1835. [bug] Update dnssec-signzone's usage message. [RT #13657] 1834. [bug] Bad memset in rdata_test.c. [RT #13658] 1833. [bug] Race condition in isc_mutex_lock_profile(). [RT #13660] 1832. [bug] named fails to return BADKEY on unknown TSIG algorithm. [RT #13620] 1831. [doc] Update named-checkzone documentation. [RT #13604] 1830. [bug] adb lame cache has sense of test reversed. [RT #13600] 1829. [bug] win32: "pid-file none;" broken. [RT #13563] 1828. [bug] isc_rwlock_init() failed to properly cleanup if it encountered a error. [RT #13549] 1827. [bug] host: update usage message for '-a'. [RT #37116] 1826. [bug] Missing DESTROYLOCK() in isc_mem_createx() on out of memory error. [RT #13537] 1825. [bug] Missing UNLOCK() on out of memory error from in rbtdb.c:subtractrdataset(). [RT #13519] 1824. [bug] Memory leak on dns_zone_setdbtype() failure. [RT #13510] 1823. [bug] Wrong macro used to check for point to point interface. [RT #13418] 1822. [bug] check-names test for RT was reversed. [RT #13382] 1821. [placeholder] 1820. [bug] Gracefully handle acl loops. [RT #13659] 1819. [bug] The validator needed to check both the algorithm and digest types of the DS to determine if it could be used to introduce a secure zone. [RT #13593] 1818. [bug] 'named-checkconf -z' triggered an INSIST. [RT #13599] 1817. [func] Add support for additional zone file formats for improving loading performance. The masterfile-format option in named.conf can be used to specify a non-default format. A separate command named-compilezone was provided to generate zone files in the new format. Additionally, the -I and -O options for dnssec-signzone specify the input and output formats. 1816. [port] UnixWare: failed to compile lib/isc/unix/net.c. [RT #13597] 1815. [bug] nsupdate triggered a REQUIRE if the server was set without also setting the zone and it encountered a CNAME and was using TSIG. [RT #13086] 1814. [func] UNIX domain controls are now supported. 1813. [func] Restructured the data locking framework using architecture dependent atomic operations (when available), improving response performance on multi-processor machines significantly. x86, x86_64, alpha, powerpc, and mips are currently supported. 1812. [port] win32: IN6_IS_ADDR_UNSPECIFIED macro is incorrect. [RT #13453] 1811. [func] Preserve the case of domain names in rdata during zone transfers. [RT #13547] 1810. [bug] configure, lib/bind/configure make different default decisions about whether to do a threaded build. [RT #13212] 1809. [bug] "make distclean" failed for libbind if the platform is not supported. 1808. [bug] zone.c:notify_zone() contained a race condition, zone->db could change underneath it. [RT #13511] 1807. [bug] When forwarding (forward only) set the active domain from the forward zone name. [RT #13526] 1806. [bug] The resolver returned the wrong result when a CNAME / DNAME was encountered when fetching glue from a secure namespace. [RT #13501] 1805. [bug] Pending status was not being cleared when DLV was active. [RT #13501] 1804. [bug] Ensure that if we are queried for glue that it fits in the additional section or TC is set to tell the client to retry using TCP. [RT #10114] 1803. [bug] dnssec-signzone sometimes failed to remove old RRSIGs. [RT #13483] 1802. [bug] Handle connection resets better. [RT #11280] 1801. [func] Report differences between hints and real NS rrset and associated address records. 1800. [bug] Changes #1719 allowed a INSIST to be triggered. [RT #13428] 1799. [bug] 'rndc flushname' failed to flush negative cache entries. [RT #13438] 1798. [func] The server syntax has been extended to support a range of servers. [RT #11132] 1797. [func] named-checkconf now check acls to verify that they only refer to existing acls. [RT #13101] 1796. [func] "rndc freeze/thaw" now freezes/thaws all zones. 1795. [bug] "rndc dumpdb" was not fully documented. Minor formatting issues with "rndc dumpdb -all". [RT #13396] 1794. [func] Named and named-checkzone can now both check for non-terminal wildcard records. 1793. [func] Extend adjusting TTL warning messages. [RT #13378] 1792. [func] New zone option "notify-delay". Specify a minimum delay between sets of NOTIFY messages. 1791. [bug] 'host -t a' still printed out AAAA and MX records. [RT #13230] 1790. [cleanup] Move lib/dns/sec/dst up into lib/dns. This should allow parallel make to succeed. 1789. [bug] Prerequisite test for tkey and dnssec could fail with "configure --with-libtool". 1788. [bug] libbind9.la/libbind9.so needs to link against libisccfg.la/libisccfg.so. 1787. [port] HPUX: both "cc" and "gcc" need -Wl,+vnocompatwarnings. 1786. [port] AIX: libt_api needs to be taught to look for T_testlist in the main executable (--with-libtool). [RT #13239] 1785. [bug] libbind9.la/libbind9.so needs to link against libisc.la/libisc.so. 1784. [cleanup] "libtool -allow-undefined" is the default. Leave hooks in configure to allow it to be set if needed in the future. 1783. [cleanup] We only need one copy of libtool.m4, ltmain.sh in the source tree. 1782. [port] OSX: --with-libtool + --enable-libbind broke on __evOptMonoTime. [RT #13219] 1781. [port] FreeBSD 5.3: set PTHREAD_SCOPE_SYSTEM. [RT #12810] 1780. [bug] Update libtool to 1.5.10. 1779. [port] OSF 5.1: libtool didn't handle -pthread correctly. 1778. [port] HUX 11.11: fix broken IN6ADDR_ANY_INIT and IN6ADDR_LOOPBACK_INIT macros. 1777. [port] OSF 5.1: fix broken IN6ADDR_ANY_INIT and IN6ADDR_LOOPBACK_INIT macros. 1776. [port] Solaris 2.9: fix broken IN6ADDR_ANY_INIT and IN6ADDR_LOOPBACK_INIT macros. 1775. [bug] Only compile getnetent_r.c when threaded. [RT #13205] 1774. [port] Aix: Silence compiler warnings / build failures. [RT #13154] 1773. [bug] Fast retry on host / net unreachable. [RT #13153] 1772. [placeholder] 1771. [placeholder] 1770. [bug] named-checkconf failed to report missing a missing file clause for rbt{64} master/hint zones. [RT #13009] 1769. [port] win32: change compiler flags /MTd ==> /MDd, /MT ==> /MD. 1768. [bug] nsecnoexistnodata() could be called with a non-NSEC rdataset. [RT #12907] 1767. [port] Builds on IPv6 platforms without IPv6 Advanced API support for (struct in6_pktinfo) failed. [RT #13077] 1766. [bug] Update the master file timestamp on successful refresh as well as the journal's timestamp. [RT #13062] 1765. [bug] configure --with-openssl=auto failed. [RT #12937] 1764. [bug] dns_zone_replacedb failed to emit a error message if there was no SOA record in the replacement db. [RT #13016] 1763. [func] Perform sanity checks on NS records which refer to 'in zone' names. [RT #13002] 1762. [bug] isc_interfaceiter_create() could return ISC_R_SUCCESS even when it failed. [RT #12995] 1761. [bug] 'rndc dumpdb' didn't report unassociated entries. [RT #12971] 1760. [bug] Host / net unreachable was not penalising rtt estimates. [RT #12970] 1759. [bug] Named failed to startup if the OS supported IPv6 but had no IPv6 interfaces configured. [RT #12942] 1758. [func] Don't send notify messages to self. [RT #12933] 1757. [func] host now can turn on memory debugging flags with '-m'. 1756. [func] named-checkconf now checks the logging configuration. [RT #12352] 1755. [func] allow-update is now settable at the options / view level. [RT #6636] 1754. [bug] We weren't always attempting to query the parent server for the DS records at the zone cut. [RT #12774] 1753. [bug] Don't serve a slave zone which has no NS records. [RT #12894] 1752. [port] Move isc_app_start() to after ns_os_daemonise() as some fork() implementations unblock the signals that are blocked by isc_app_start(). [RT #12810] 1751. [bug] --enable-getifaddrs failed under linux. [RT #12867] 1750. [port] lib/bind/make/rules.in:subdirs was not bash friendly. [RT #12864] 1749. [bug] 'check-names response ignore;' failed to ignore. [RT #12866] 1748. [func] dig now returns the byte count for axfr/ixfr. 1747. [bug] BIND 8 compatibility: named/named-checkconf failed to parse "host-statistics-max" in named.conf. 1746. [func] Make public the function to read a key file, dst_key_read_public(). [RT #12450] 1745. [bug] Dig/host/nslookup accept replies from link locals regardless of scope if no scope was specified when query was sent. [RT #12745] 1744. [bug] If tuple2msgname() failed to convert a tuple to a name a REQUIRE could be triggered. [RT #12796] 1743. [bug] If isc_taskmgr_create() was not able to create the requested number of worker threads then destruction of the manager would trigger an INSIST() failure. [RT #12790] 1742. [bug] Deleting all records at a node then adding a previously existing record, in a single UPDATE transaction, failed to leave / regenerate the associated RRSIG records. [RT #12788] 1741. [bug] Deleting all records at a node in a secure zone using a update-policy grant failed. [RT #12787] 1740. [bug] Replace rbt's hash algorithm as it performed badly with certain zones. [RT #12729] NOTE: a hash context now needs to be established via isc_hash_create() if the application was not already doing this. 1739. [bug] dns_rbt_deletetree() could incorrectly return ISC_R_QUOTA. [RT #12695] 1738. [bug] Enable overrun checking by default. [RT #12695] 1737. [bug] named failed if more than 16 masters were specified. [RT #12627] 1736. [bug] dst_key_fromnamedfile() could fail to read a public key. [RT #12687] 1735. [bug] 'dig +sigtrace' could die with a REQUIRE failure. [RE #12688] 1734. [cleanup] 'rndc-confgen -a -t' remove extra '/' in path. [RT #12588] 1733. [bug] Return non-zero exit status on initial load failure. [RT #12658] 1732. [bug] 'rrset-order name "*"' wasn't being applied to ".". [RT #12467] 1731. [port] darwin: relax version test in ifconfig.sh. [RT #12581] 1730. [port] Determine the length type used by the socket API. [RT #12581] 1729. [func] Improve check-names error messages. 1728. [doc] Update check-names documentation. 1727. [bug] named-checkzone: check-names support didn't match documentation. 1726. [port] aix5: add support for aix5. 1725. [port] linux: update error message on interaction of threads, capabilities and setuid support (named -u). [RT #12541] 1724. [bug] Look for DNSKEY records with "dig +sigtrace". [RT #12557] 1723. [cleanup] Silence compiler warnings from t_tasks.c. [RT #12493] 1722. [bug] Don't commit the journal on malformed ixfr streams. [RT #12519] 1721. [bug] Error message from the journal processing were not always identifying the relevant journal. [RT #12519] 1720. [bug] 'dig +chase' did not terminate on a RFC 2308 Type 1 negative response. [RT #12506] 1719. [bug] named was not correctly caching a RFC 2308 Type 1 negative response. [RT #12506] 1718. [bug] nsupdate was not handling RFC 2308 Type 3 negative responses when looking for the zone / master server. [RT #12506] 1717. [port] solaris: ifconfig.sh did not support Solaris 10. "ifconfig.sh down" didn't work for Solaris 9. 1716. [doc] named.conf(5) was being installed in the wrong location. [RT #12441] 1715. [func] 'dig +trace' now randomly selects the next servers to try. Report if there is a bad delegation. 1714. [bug] dig/host/nslookup were only trying the first address when a nameserver was specified by name. [RT #12286] 1713. [port] linux: extend capset failure message to say: please ensure that the capset kernel module is loaded. see insmod(8) 1712. [bug] Missing FULLCHECK for "trusted-key" in dig. 1711. [func] 'rndc unfreeze' has been deprecated by 'rndc thaw'. 1710. [func] 'rndc notify zone [class [view]]' resend the NOTIFY messages for the specified zone. [RT #9479] 1709. [port] solaris: add SMF support from Sun. 1708. [cleanup] Replaced dns_fullname_hash() with dns_name_fullhash() for conformance to the name space convention. Binary backward compatibility to the old function name is provided. [RT #12376] 1707. [contrib] sdb/ldap updated to version 1.0-beta. 1706. [bug] 'rndc stop' failed to cause zones to be flushed sometimes. [RT #12328] 1705. [func] Allow the journal's name to be changed via named.conf. 1704. [port] lwres needed a snprintf() implementation for platforms without snprintf(). Add missing "#include ". [RT #12321] 1703. [bug] named would loop sending NOTIFY messages when it failed to receive a response. [RT #12322] 1702. [bug] also-notify should not be applied to built in zones. [RT #12323] 1701. [doc] A minimal named.conf man page. 1700. [func] nslookup is no longer to be treated as deprecated. Remove "deprecated" warning message. Add man page. 1699. [bug] dnssec-signzone can generate "not exact" errors when resigning. [RT #12281] 1698. [doc] Use reserved IPv6 documentation prefix. 1697. [bug] xxx-source{,-v6} was not effective when it specified one of listening addresses and a different port than the listening port. [RT #12257] 1696. [bug] dnssec-signzone failed to clean out nodes that consisted of only NSEC and RRSIG records. [RT #12154] 1695. [bug] DS records when forwarding require special handling. [RT #12133] 1694. [bug] Report if the builtin views of "_default" / "_bind" are defined in named.conf. [RT #12023] 1693. [bug] max-journal-size was not effective for master zones with ixfr-from-differences set. [RT #12024] 1692. [bug] Don't set -I, -L and -R flags when libcrypto is in /usr/lib. [RT #11971] 1691. [bug] sdb's attachversion was not complete. [RT #11990] 1690. [bug] Delay detaching view from the client until UPDATE processing completes when shutting down. [RT #11714] 1689. [bug] DNS_NAME_TOREGION() and DNS_NAME_SPLIT() macros contained gratuitous semicolons. [RT #11707] 1688. [bug] LDFLAGS was not supported. 1687. [bug] Race condition in dispatch. [RT #10272] 1686. [bug] Named sent a extraneous NOTIFY when it received a redundant UPDATE request. [RT #11943] 1685. [bug] Change #1679 loop tests weren't quite right. 1684. [func] ixfr-from-differences now takes master and slave in addition to yes and no at the options and view levels. 1683. [bug] dig +sigchase could leak memory. [RT #11445] 1682. [port] Update configure test for (long long) printf format. [RT #5066] 1681. [bug] Only set SO_REUSEADDR when a port is specified in isc_socket_bind(). [RT #11742] 1680. [func] rndc: the source address can now be specified. 1679. [bug] When there was a single nameserver with multiple addresses for a zone not all addresses were tried. [RT #11706] 1678. [bug] RRSIG should use TYPEXXXXX for unknown types. 1677. [bug] dig: +aaonly didn't work, +aaflag undocumented. 1676. [func] New option "allow-query-cache". This lets allow-query be used to specify the default zone access level rather than having to have every zone override the global value. allow-query-cache can be set at both the options and view levels. If allow-query-cache is not set allow-query applies. 1675. [bug] named would sometimes add extra NSEC records to the authority section. 1674. [port] linux: increase buffer size used to scan /proc/net/if_inet6. 1673. [port] linux: issue a error messages if IPv6 interface scans fails. 1672. [cleanup] Tests which only function in a threaded build now return R:THREADONLY (rather than R:UNTESTED) in a non-threaded build. 1671. [contrib] queryperf: add NAPTR to the list of known types. 1670. [func] Log UPDATE requests to slave zones without an acl as "disabled" at debug level 3. [RT #11657] 1669. [placeholder] 1668. [bug] DIG_SIGCHASE was making bin/dig/host dump core. 1667. [port] linux: not all versions have IF_NAMESIZE. 1666. [bug] The optional port on hostnames in dual-stack-servers was being ignored. 1665. [func] rndc now allows addresses to be set in the server clauses. 1664. [bug] nsupdate needed KEY for SIG(0), not DNSKEY. 1663. [func] Look for OpenSSL by default. 1662. [bug] Change #1658 failed to change one use of 'type' to 'keytype'. 1661. [bug] Restore dns_name_concatenate() call in adb.c:set_target(). [RT #11582] 1660. [bug] win32: connection_reset_fix() was being called unconditionally. [RT #11595] 1659. [cleanup] Cleanup some messages that were referring to KEY vs DNSKEY, NXT vs NSEC and SIG vs RRSIG. 1658. [func] Update dnssec-keygen to default to KEY for HMAC-MD5 and DH. Tighten which options apply to KEY and DNSKEY records. 1657. [doc] ARM: document query log output. 1656. [doc] Update DNSSEC description in ARM to cover DS, NSEC DNSKEY and RRSIG. [RT #11542] 1655. [bug] Logging multiple versions w/o a size was broken. [RT #11446] 1654. [bug] isc_result_totext() contained array bounds read error. 1653. [func] Add key type checking to dst_key_fromfilename(), DST_TYPE_KEY should be used to read TSIG, TKEY and SIG(0) keys. 1652. [bug] TKEY still uses KEY. 1651. [bug] dig: process multiple dash options. 1650. [bug] dig, nslookup: flush standard out after each command. 1649. [bug] Silence "unexpected non-minimal diff" message. [RT #11206] 1648. [func] Update dnssec-lookaside named.conf syntax to support multiple dnssec-lookaside namespaces (not yet implemented). 1647. [bug] It was possible trigger a INSIST when chasing a DS record that required walking back over a empty node. [RT #11445] 1646. [bug] win32: logging file versions didn't work with non-UNC filenames. [RT #11486] 1645. [bug] named could trigger a REQUIRE failure if multiple masters with keys are specified. 1644. [bug] Update the journal modification time after a successful refresh query. [RT #11436] 1643. [bug] dns_db_closeversion() could leak memory / node references. [RT #11163] 1642. [port] Support OpenSSL implementations which don't have DSA support. [RT #11360] 1641. [bug] Update the check-names description in ARM. [RT #11389] 1640. [bug] win32: isc_socket_cancel(ISC_SOCKCANCEL_ACCEPT) was incorrectly closing the socket. [RT #11291] 1639. [func] Initial dlv system test. 1638. [bug] "ixfr-from-differences" could generate a REQUIRE failure if the journal open failed. [RT #11347] 1637. [bug] Node reference leak on error in addnoqname(). 1636. [bug] The dump done callback could get ISC_R_SUCCESS even if a error had occurred. The database version no longer matched the version of the database that was dumped. 1635. [bug] Memory leak on error in query_addds(). 1634. [bug] named didn't supply a useful error message when it detected duplicate views. [RT #11208] 1633. [bug] named should return NOTIMP to update requests to a slaves without a allow-update-forwarding acl specified. [RT #11331] 1632. [bug] nsupdate failed to send prerequisite only UPDATE messages. [RT #11288] 1631. [bug] dns_journal_compact() could sometimes corrupt the journal. [RT #11124] 1630. [contrib] queryperf: add support for IPv6 transport. 1629. [func] dig now supports IPv6 scoped addresses with the extended format in the local-server part. [RT #8753] 1628. [bug] Typo in Compaq Trucluster support. [RT #11264] 1627. [bug] win32: sockets were not being closed when the last external reference was removed. [RT #11179] 1626. [bug] --enable-getifaddrs was broken. [RT #11259] 1625. [bug] named failed to load/transfer RFC2535 signed zones which contained CNAMES. [RT #11237] 1624. [bug] zonemgr_putio() call should be locked. [RT #11163] 1623. [bug] A serial number of zero was being displayed in the "sending notifies" log message when also-notify was used. [RT #11177] 1622. [func] probe the system to see if IPV6_(RECV)PKTINFO is available, and suppress wildcard binding if not. 1621. [bug] match-destinations did not work for IPv6 TCP queries. [RT #11156] 1620. [func] When loading a zone report if it is signed. [RT #11149] 1619. [bug] Missing ISC_LIST_UNLINK in end_reserved_dispatches(). [RT #11118] 1618. [bug] Fencepost errors in dns_name_ishostname() and dns_name_ismailbox() could trigger a INSIST(). 1617. [port] win32: VC++ 6.0 support. 1616. [compat] Ensure that named's version is visible in the core dump. [RT #11127] 1615. [port] Define ISC_SOCKADDR_LEN_T based on _BSD_SOCKLEN_T_ if it is defined. 1614. [port] win32: silence resource limit messages. [RT #11101] 1613. [bug] Builds would fail on machines w/o a if_nametoindex(). Missing #ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX/#endif. [RT #11119] 1612. [bug] check-names at the option/view level could trigger an INSIST. [RT #11116] 1611. [bug] solaris: IPv6 interface scanning failed to cope with no active IPv6 interfaces. 1610. [bug] On dual stack machines "dig -b" failed to set the address type to be looked up with "@server". [RT #11069] 1609. [func] dig now has support to chase DNSSEC signature chains. Requires -DDIG_SIGCHASE=1 to be set in STD_CDEFINES. DNSSEC validation code in dig coded by Olivier Courtay (olivier.courtay@irisa.fr) for the IDsA project (http://idsa.irisa.fr). 1608. [func] dig and host now accept -4/-6 to select IP transport to use when making queries. 1607. [bug] dig, host and nslookup were still using random() to generate query ids. [RT #11013] 1606. [bug] DLV insecurity proof was failing. 1605. [func] New dns_db_find() option DNS_DBFIND_COVERINGNSEC. 1604. [bug] A xfrout_ctx_create() failure would result in xfrout_ctx_destroy() being called with a partially initialized structure. 1603. [bug] nsupdate: set interactive based on isatty(). [RT #10929] 1602. [bug] Logging to a file failed unless a size was specified. [RT #10925] 1601. [bug] Silence spurious warning 'both "recursion no;" and "allow-recursion" active' warning from view "_bind". [RT #10920] 1600. [bug] Duplicate zone pre-load checks were not case insensitive. 1599. [bug] Fix memory leak on error path when checking named.conf. 1598. [func] Specify that certain parts of the namespace must be secure (dnssec-must-be-secure). 1597. [func] Allow notify-source and query-source to be specified on a per server basis similar to transfer-source. [RT #6496] 1596. [func] Accept 'notify-source' style syntax for query-source. 1595. [func] New notify type 'master-only'. Enable notify for master zones only. 1594. [bug] 'rndc dumpdb' could prevent named from answering queries while the dump was in progress. [RT #10565] 1593. [bug] rndc should return "unknown command" to unknown commands. [RT #10642] 1592. [bug] configure_view() could leak a dispatch. [RT #10675] 1591. [bug] libbind: updated to BIND 8.4.5. 1590. [port] netbsd: update thread support. 1589. [func] DNSSEC lookaside validation. 1588. [bug] win32: TCP sockets could become blocked. [RT #10115] 1587. [bug] dns_message_settsigkey() failed to clear existing key. [RT #10590] 1586. [func] "check-names" is now implemented. 1585. [placeholder] 1584. [bug] "make test" failed with a read only source tree. [RT #10461] 1583. [bug] Records add via UPDATE failed to get the correct trust level. [RT #10452] 1582. [bug] rrset-order failed to work on RRsets with more than 32 elements. [RT #10381] 1581. [func] Disable DNSSEC support by default. To enable DNSSEC specify "dnssec-enable yes;" in named.conf. 1580. [bug] Zone destruction on final detach takes a long time. [RT #3746] 1579. [bug] Multiple task managers could not be created. 1578. [bug] Don't use CLASS E IPv4 addresses when resolving. [RT #10346] 1577. [bug] Use isc_uint32_t in ultrasparc optimizer bug workaround code. [RT #10331] 1576. [bug] Race condition in dns_dispatch_addresponse(). [RT #10272] 1575. [func] Log TSIG name on TSIG verify failure. [RT #4404] 1574. [bug] Don't attempt to open the controls socket(s) when running tests. [RT #9091] 1573. [port] linux: update to libtool 1.5.2 so that "make install DESTDIR=/xx" works with "configure --with-libtool". [RT #9941] 1572. [bug] nsupdate: sign the soa query to find the enclosing zone if the server is specified. [RT #10148] 1571. [bug] rbt:hash_node() could fail leaving the hash table in an inconsistent state. [RT #10208] 1570. [bug] nsupdate failed to handle classes other than IN. New keyword 'class' which sets the default class. [RT #10202] 1569. [func] nsupdate new command 'answer' which displays the complete answer message to the last update. 1568. [bug] nsupdate now reports that the update failed in interactive mode. [RT #10236] 1567. [maint] B.ROOT-SERVERS.NET is now 192.228.79.201. 1566. [port] Support for the cmsg framework on Solaris and HP/UX. This also solved the problem that match-destinations for IPv6 addresses did not work on these systems. [RT #10221] 1565. [bug] CD flag should be copied to outgoing queries unless the query is under a secure entry point in which case CD should be set. 1564. [func] Attempt to provide a fallback entropy source to be used if named is running chrooted and named is unable to open entropy source within the chroot area. [RT #10133] 1563. [bug] Gracefully fail when unable to obtain neither an IPv4 nor an IPv6 dispatch. [RT #10230] 1562. [bug] isc_socket_create() and isc_socket_accept() could leak memory under error conditions. [RT #10230] 1561. [bug] It was possible to release the same name twice if named ran out of memory. [RT #10197] 1560. [port] FreeBSD: work around FreeBSD 5.2 mapping EAI_NODATA and EAI_NONAME to the same value. 1559. [port] named should ignore SIGFSZ. 1558. [func] New DNSSEC 'disable-algorithms'. Support entry into child zones for which we don't have a supported algorithm. Such child zones are treated as unsigned. 1557. [func] Implement missing DNSSEC tests for * NOQNAME proof with wildcard answers. * NOWILDARD proof with NXDOMAIN. Cache and return NOQNAME with wildcard answers. 1556. [bug] nsupdate now treats all names as fully qualified. [RT #6427] 1555. [func] 'rrset-order cyclic' no longer has a random starting point per query. [RT #7572] 1554. [bug] dig, host, nslookup failed when no nameservers were specified in /etc/resolv.conf. [RT #8232] 1553. [bug] The windows socket code could stop accepting connections. [RT #10115] 1552. [bug] Accept NOTIFY requests from mapped masters if matched-mapped is set. [RT #10049] 1551. [port] Open "/dev/null" before calling chroot(). 1550. [port] Call tzset(), if available, before calling chroot(). 1549. [func] named-checkzone can now write out the zone contents in a easily parsable format (-D and -o). 1548. [bug] When parsing APL records it was possible to silently accept out of range ADDRESSFAMILY values. [RT #9979] 1547. [bug] Named wasted memory recording duplicate lame zone entries. [RT #9341] 1546. [bug] We were rejecting valid secure CNAME to negative answers. 1545. [bug] It was possible to leak memory if named was unable to bind to the specified transfer source and TSIG was being used. [RT #10120] 1544. [bug] Named would logged a single entry to a file despite it being over the specified size limit. 1543. [bug] Logging using "versions unlimited" did not work. 1542. [placeholder] 1541. [func] NSEC now uses new bitmap format. 1540. [bug] "rndc reload " was silently accepted. [RT #8934] 1539. [bug] Open UDP sockets for notify-source and transfer-source that use reserved ports at startup. [RT #9475] 1538. [placeholder] rt9997 1537. [func] New option "querylog". If set specify whether query logging is to be enabled or disabled at startup. 1536. [bug] Windows socket code failed to log a error description when returning ISC_R_UNEXPECTED. [RT #9998] 1535. [placeholder] 1534. [bug] Race condition when priming cache. [RT #9940] 1533. [func] Warn if both "recursion no;" and "allow-recursion" are active. [RT #4389] 1532. [port] netbsd: the configure test for requires . 1531. [port] AIX more libtool fixes. 1530. [bug] It was possible to trigger a INSIST() failure if a slave master file was removed at just the correct moment. [RT #9462] 1529. [bug] "notify explicit;" failed to log that NOTIFY messages were being sent for the zone. [RT #9442] 1528. [cleanup] Simplify some dns_name_ functions based on the deprecation of bitstring labels. 1527. [cleanup] Reduce the number of gettimeofday() calls without losing necessary timer granularity. 1526. [func] Implemented "additional section caching (or acache)", an internal cache framework for additional section content to improve response performance. Several configuration options were provided to control the behavior. 1525. [bug] dns_cache_create() could trigger a REQUIRE failure in isc_mem_put() during error cleanup. [RT #9360] 1524. [port] AIX needs to be able to resolve all symbols when creating shared libraries (--with-libtool). 1523. [bug] Fix race condition in rbtdb. [RT #9189] 1522. [bug] dns_db_findnode() relax the requirements on 'name'. [RT #9286] 1521. [bug] dns_view_createresolver() failed to check the result from isc_mem_create(). [RT #9294] 1520. [protocol] Add SSHFP (SSH Finger Print) type. 1519. [bug] dnssec-signzone:nsec_setbit() computed the wrong length of the new bitmap. 1518. [bug] dns_nsec_buildrdata(), and hence dns_nsec_build(), contained a off-by-one error when working out the number of octets in the bitmap. 1517. [port] Support for IPv6 interface scanning on HP/UX and TrueUNIX 5.1. 1516. [func] Roll the DNSSEC types to RRSIG, NSEC and DNSKEY. 1515. [func] Allow transfer source to be set in a server statement. [RT #6496] 1514. [bug] named: isc_hash_destroy() was being called too early. [RT #9160] 1513. [doc] Add "US" to root-delegation-only exclude list. 1512. [bug] Extend the delegation-only logging to return query type, class and responding nameserver. 1511. [bug] delegation-only was generating false positives on negative answers from sub-zones. 1510. [func] New view option "root-delegation-only". Apply delegation-only check to all TLDs and root. Note there are some TLDs that are NOT delegation only (e.g. DE, LV, US and MUSEUM) these can be excluded from the checks by using exclude. root-delegation-only exclude { "DE"; "LV"; "US"; "MUSEUM"; }; 1509. [bug] Hint zones should accept delegation-only. Forward zone should not accept delegation-only. 1508. [bug] Don't apply delegation-only checks to answers from forwarders. 1507. [bug] Handle BIND 8 style returns to NS queries to parents when making delegation-only checks. 1506. [bug] Wrong return type for dns_view_isdelegationonly(). 1505. [bug] Uninitialized rdataset in sdb. [RT #8750] 1504. [func] New zone type "delegation-only". 1503. [port] win32: install libeay32.dll outside of system32. 1502. [bug] nsupdate: adjust timeouts for UPDATE requests over TCP. 1501. [func] Allow TCP queue length to be specified via named.conf, tcp-listen-queue. 1500. [bug] host failed to lookup MX records. Also look up AAAA records. 1499. [bug] isc_random need to be seeded better if arc4random() is not used. 1498. [port] bsdos: 5.x support. 1497. [placeholder] 1496. [port] test for pthread_attr_setstacksize(). 1495. [cleanup] Replace hash functions with universal hash. 1494. [security] Turn on RSA BLINDING as a precaution. 1493. [placeholder] 1492. [cleanup] Preserve rwlock quota context when upgrading / downgrading. [RT #5599] 1491. [bug] dns_master_dump*() would produce extraneous $ORIGIN lines. [RT #6206] 1490. [bug] Accept reading state as well as working state in ns_client_next(). [RT #6813] 1489. [compat] Treat 'allow-update' on slave zones as a warning. [RT #3469] 1488. [bug] Don't override trust levels for glue addresses. [RT #5764] 1487. [bug] A REQUIRE() failure could be triggered if a zone was queued for transfer and the zone was then removed. [RT #6189] 1486. [bug] isc_print_snprintf() '%%' consumed one too many format characters. [RT #8230] 1485. [bug] gen failed to handle high type values. [RT #6225] 1484. [bug] The number of records reported after a AXFR was wrong. [RT #6229] 1483. [bug] dig axfr failed if the message id in the answer failed to match that in the request. Only the id in the first message is required to match. [RT #8138] 1482. [bug] named could fail to start if the kernel supports IPv6 but no interfaces are configured. Similarly for IPv4. [RT #6229] 1481. [bug] Refresh and stub queries failed to use masters keys if specified. [RT #7391] 1480. [bug] Provide replay protection for rndc commands. Full replay protection requires both rndc and named to be updated. Partial replay protection (limited exposure after restart) is provided if just named is updated. 1479. [bug] cfg_create_tuple() failed to handle out of memory cleanup. parse_list() would leak memory on syntax errors. 1478. [port] ifconfig.sh didn't account for other virtual interfaces. It now takes a optional argument to specify the first interface number. [RT #3907] 1477. [bug] memory leak using stub zones and TSIG. 1476. [placeholder] 1475. [port] Probe for old sprintf(). 1474. [port] Provide strtoul() and memmove() for platforms without them. 1473. [bug] create_map() and create_string() failed to handle out of memory cleanup. [RT #6813] 1472. [contrib] idnkit-1.0 from JPNIC, replaces mdnkit. 1471. [bug] libbind: updated to BIND 8.4.0. 1470. [bug] Incorrect length passed to snprintf. [RT #5966] 1469. [func] Log end of outgoing zone transfer at same level as the start of transfer is logged. [RT #4441] 1468. [func] Internal zones are no longer counted for 'rndc status'. [RT #4706] 1467. [func] $GENERATES now supports optional class and ttl. 1466. [bug] lwresd configuration errors resulted in memory and lock leaks. [RT #5228] 1465. [bug] isc_base64_decodestring() and isc_base64_tobuffer() failed to check that trailing bits were zero allowing some invalid base64 strings to be accepted. [RT #5397] 1464. [bug] Preserve "out of zone" data for outgoing zone transfers. [RT #5192] 1463. [bug] dns_rdata_from{wire,struct}() failed to catch bad NXT bit maps. [RT #5577] 1462. [bug] parse_sizeval() failed to check the token type. [RT #5586] 1461. [bug] Remove deadlock from rbtdb code. [RT #5599] 1460. [bug] inet_pton() failed to reject certain malformed IPv6 literals. 1459. [placeholder] 1458. [cleanup] sprintf() -> snprintf(). 1457. [port] Provide strlcat() and strlcpy() for platforms without them. 1456. [contrib] gen-data-queryperf.py from Stephane Bortzmeyer. 1455. [bug] missing from server grammar in doc/misc/options. [RT #5616] 1454. [port] Use getifaddrs() if available for interface scanning. --disable-getifaddrs to override. Glibc currently has a getifaddrs() that does not support IPv6. Use --enable-getifaddrs=glibc to force the use of this version under linux machines. 1453. [doc] ARM: $GENERATE example wasn't accurate. [RT #5298] 1452. [placeholder] 1451. [bug] rndc-confgen didn't exit with a error code for all failures. [RT #5209] 1450. [bug] Fetching expired glue failed under certain circumstances. [RT #5124] 1449. [bug] query_addbestns() didn't handle running out of memory gracefully. 1448. [bug] Handle empty wildcards labels. 1447. [bug] We were casting (unsigned int) to and from (void *). rdataset->private4 is now rdataset->privateuint4 to reflect a type change. 1446. [func] Implemented undocumented alternate transfer sources from BIND 8. See use-alt-transfer-source, alt-transfer-source and alt-transfer-source-v6. SECURITY: use-alt-transfer-source is ENABLED unless you are using views. This may cause a security risk resulting in accidental disclosure of wrong zone content if the master supplying different source content based on IP address. If you are not certain ISC recommends setting use-alt-transfer-source no; 1445. [bug] DNS_ADBFIND_STARTATROOT broke stub zones. This has been replaced with DNS_ADBFIND_STARTATZONE which causes the search to start using the closest zone. 1444. [func] dns_view_findzonecut2() allows you to specify if the cache should be searched for zone cuts. 1443. [func] Masters lists can now be specified and referenced in zone masters clauses and other masters lists. 1442. [func] New functions for manipulating port lists: dns_portlist_create(), dns_portlist_add(), dns_portlist_remove(), dns_portlist_match(), dns_portlist_attach() and dns_portlist_detach(). 1441. [func] It is now possible to tell dig to bind to a specific source port. 1440. [func] It is now possible to tell named to avoid using certain source ports (avoid-v4-udp-ports, avoid-v6-udp-ports). 1439. [bug] Named could return NOERROR with certain NOTIFY failures. Return NOTAUTH if the NOTIFY zone is not being served. 1438. [func] Log TSIG (if any) when logging NOTIFY requests. 1437. [bug] Leave space for stdio to work in. [RT #5033] 1436. [func] dns_zonemgr_resumexfrs() can be used to restart stalled transfers. 1435. [bug] zmgr_resume_xfrs() was being called read locked rather than write locked. zmgr_resume_xfrs() was not being called if the zone was being shutdown. 1434. [bug] "rndc reconfig" failed to initiate the initial zone transfer of new slave zones. 1433. [bug] named could trigger a REQUIRE failure if it could not get a file descriptor when attempting to write a master file. [RT #4347] 1432. [func] The advertised EDNS UDP buffer size can now be set via named.conf (edns-udp-size). 1431. [bug] isc_print_snprintf() "%s" with precision could walk off end of argument. [RT #5191] 1430. [port] linux: IPv6 interface scanning support. 1429. [bug] Prevent the cache getting locked to old servers. 1428. [placeholder] 1427. [bug] Race condition in adb with threaded build. 1426. [placeholder] 1425. [port] linux/libbind: define __USE_MISC when testing *_r() function prototypes in netdb.h. [RT #4921] 1424. [bug] EDNS version not being correctly printed. 1423. [contrib] queryperf: added A6 and SRV. 1422. [func] Log name/type/class when denying a query. [RT #4663] 1421. [func] Differentiate updates that don't succeed due to prerequisites (unsuccessful) vs other reasons (failed). 1420. [port] solaris: work around gcc optimizer bug. 1419. [port] openbsd: use /dev/arandom. [RT #4950] 1418. [bug] 'rndc reconfig' did not cause new slaves to load. 1417. [func] ID.SERVER/CHAOS is now a built in zone. See "server-id" for how to configure. 1416. [bug] Empty node should return NOERROR NODATA, not NXDOMAIN. [RT #4715] 1415. [func] DS TTL now derived from NS ttl. NXT TTL now derived from SOA MINIMUM. 1414. [func] Support for KSK flag. 1413. [func] Explicitly request the (re-)generation of DS records from keysets (dnssec-signzone -g). 1412. [func] You can now specify servers to be tried if a nameserver has IPv6 address and you only support IPv4 or the reverse. See dual-stack-servers. 1411. [bug] empty nodes should stop wildcard matches. [RT #4802] 1410. [func] Handle records that live in the parent zone, e.g. DS. 1409. [bug] DS should have attribute DNS_RDATATYPEATTR_DNSSEC. 1408. [bug] "make distclean" was not complete. [RT #4700] 1407. [bug] lfsr incorrectly implements the shift register. [RT #4617] 1406. [bug] dispatch initializes one of the LFSR's with a incorrect polynomial. [RT #4617] 1405. [func] Use arc4random() if available. 1404. [bug] libbind: ns_name_ntol() could overwrite a zero length buffer. 1403. [func] dnssec-signzone, dnssec-keygen, dnssec-makekeyset dnssec-signkey now report their version in the usage message. 1402. [cleanup] A6 has been moved to experimental and is no longer fully supported. 1401. [bug] adb wasn't clearing state when the timer expired. 1400. [bug] Block the addition of wildcard NS records by IXFR or UPDATE. [RT #3502] 1399. [bug] Use serial number arithmetic when testing SIG timestamps. [RT #4268] 1398. [doc] ARM: notify-also should have been also-notify. [RT #4345] 1397. [maint] J.ROOT-SERVERS.NET is now 192.58.128.30. 1396. [func] dnssec-signzone: adjust the default signing time by 1 hour to allow for clock skew. 1395. [port] OpenSSL 0.9.7 defines CRYPTO_LOCK_ENGINE but doesn't have a working implementation. [RT #4079] 1394. [func] It is now possible to check if a particular element is in a acl. Remove duplicate entries from the localnets acl. 1393. [port] Bind to individual IPv6 interfaces if IPV6_IPV6ONLY is not available in the kernel to prevent accidentally listening on IPv4 interfaces. 1392. [bug] named-checkzone: update usage. 1391. [func] Add support for IPv6 scoped addresses in named. 1390. [func] host now supports ixfr. 1389. [bug] named could fail to rotate long log files. [RT #3666] 1388. [port] irix: check for sys/sysctl.h and NET_RT_IFLIST before defining HAVE_IFLIST_SYSCTL. [RT #3770] 1387. [bug] named could crash due to an access to invalid memory space (which caused an assertion failure) in incremental cleaning. [RT #3588] 1386. [bug] named-checkzone -z stopped on errors in a zone. [RT #3653] 1385. [bug] Setting serial-query-rate to 10 would trigger a REQUIRE failure. 1384. [bug] host was incompatible with BIND 8 in its exit code and in the output with the -l option. [RT #3536] 1383. [func] Track the serial number in a IXFR response and log if a mismatch occurs. This is a more specific error than "not exact". [RT #3445] 1382. [bug] make install failed with --enable-libbind. [RT #3656] 1381. [bug] named failed to correctly process answers that contained DNAME records where the resulting CNAME resulted in a negative answer. 1380. [func] 'rndc recursing' dump recursing queries to 'recursing-file = "named.recursing";'. 1379. [func] 'rndc status' now reports tcp and recursion quota states. 1378. [func] Improved positive feedback for 'rndc {reload|refresh}. 1377. [func] dns_zone_load{new}() now reports if the zone was loaded, queued for loading to up to date. 1376. [func] New function dns_zone_logc() to log to specified category. 1375. [func] 'rndc dumpdb' now dumps the adb cache along with the data cache. 1374. [func] dns_adb_dump() now logs the lame zones associated with each server. 1373. [bug] Recovery from expired glue failed under certain circumstances. 1372. [bug] named crashes with an assertion failure on exit when sharing the same port for listening and querying, and changing listening addresses several times. [RT #3509] 1371. [bug] notify-source-v6, transfer-source-v6 and query-source-v6 with explicit addresses and using the same ports as named was listening on could interfere with named's ability to answer queries sent to those addresses. 1370. [bug] dig '+[no]recurse' was incorrectly documented. 1369. [bug] Adding an NS record as the lexicographically last record in a secure zone didn't work. 1368. [func] remove support for bitstring labels. 1367. [func] Use response times to select forwarders. 1366. [contrib] queryperf usage was incomplete. Add '-h' for help. 1365. [func] "localhost" and "localnets" acls now include IPv6 addresses / prefixes. 1364. [func] Log file name when unable to open memory statistics and dump database files. [RT #3437] 1363. [func] Listen-on-v6 now supports specific addresses. 1362. [bug] remove IFF_RUNNING test when scanning interfaces. 1361. [func] log the reason for rejecting a server when resolving queries. 1360. [bug] --enable-libbind would fail when not built in the source tree for certain OS's. 1359. [security] Support patches OpenSSL libraries. http://www.cert.org/advisories/CA-2002-23.html 1358. [bug] It was possible to trigger a INSIST when debugging large dynamic updates. [RT #3390] 1357. [bug] nsupdate was extremely wasteful of memory. 1356. [tuning] Reduce the number of events / quantum for zone tasks. 1355. [bug] Fix DNSSEC wildcard proof for CNAME/DNAME. 1354. [doc] lwres man pages had illegal nroff. 1353. [contrib] sdb/ldap to version 0.9. 1352. [bug] dig, host, nslookup when falling back to TCP use the current search entry (if any). [RT #3374] 1351. [bug] lwres_getipnodebyname() returned the wrong name when given a IPv4 literal, af=AF_INET6 and AI_MAPPED was set. 1350. [bug] dns_name_fromtext() failed to handle too many labels gracefully. 1349. [security] Minimum OpenSSL version now 0.9.6e (was 0.9.5a). http://www.cert.org/advisories/CA-2002-23.html 1348. [port] win32: Rewrote code to use I/O Completion Ports in socket.c and eliminating a host of socket errors. Performance is enhanced. 1347. [placeholder] 1346. [placeholder] 1345. [port] Use a explicit -Wformat with gcc. Not all versions include it in -Wall. 1344. [func] Log if the serial number on the master has gone backwards. If you have multiple machines specified in the masters clause you may want to set 'multi-master yes;' to suppress this warning. 1343. [func] Log successful notifies received (info). Adjust log level for failed notifies to notice. 1342. [func] Log remote address with TCP dispatch failures. 1341. [func] Allow a rate limiter to be stalled. 1340. [bug] Delay and spread out the startup refresh load. 1339. [func] dig, host and nslookup now use IP6.ARPA for nibble lookups. Bit string lookups are no longer attempted. 1338. [placeholder] 1337. [placeholder] 1336. [func] Nibble lookups under IP6.ARPA are now supported by dns_byaddr_create(). dns_byaddr_createptrname() is deprecated, use dns_byaddr_createptrname2() instead. 1335. [bug] When performing a nonexistence proof, the validator should discard parent NXTs from higher in the DNS. 1334. [bug] When signing/verifying rdatasets, duplicate rdatas need to be suppressed. 1333. [contrib] queryperf now reports a summary of returned rcodes (-c), rcodes are printed in mnemonic form (-v). 1332. [func] Report the current serial with periodic commits when rolling forward the journal. 1331. [func] Generate DNSSEC wildcard proofs. 1330. [bug] When processing events (non-threaded) only allow the task one chance to use to use its quantum. 1329. [func] named-checkzone will now check if nameservers that appear to be IP addresses. Available modes "fail", "warn" (default) and "ignore" the results of the check. 1328. [bug] The validator could incorrectly verify an invalid negative proof. 1327. [bug] The validator would incorrectly mark data as insecure when seeing a bogus signature before a correct signature. 1326. [bug] DNAME/CNAME signatures were not being cached when validation was not being performed. [RT #3284] 1325. [bug] If the tcpquota was exhausted it was possible to to trigger a INSIST() failure. 1324. [port] darwin: ifconfig.sh now supports darwin. 1323. [port] linux: Slackware 4.0 needs . [RT #3205] 1322. [bug] dnssec-signzone usage message was misleading. 1321. [bug] If the last RRset in a zone is glue, dnssec-signzone would incorrectly duplicate its output and sign it. 1320. [doc] query-source-v6 was missing from options section. [RT #3218] 1319. [func] libbind: log attempts to exploit #1318. 1318. [bug] libbind: Remote buffer overrun. 1317. [port] libbind: TrueUNIX 5.1 does not like __align as a element name. 1316. [bug] libbind: gethostans() could get out of sync parsing the response if there was a very long CNAME chain. 1315. [bug] Options should apply to the internal _bind view. 1314. [port] Handle ECONNRESET from sendmsg() [unix]. 1313. [func] Query log now says if the query was signed (S) or if EDNS was used (E). 1312. [func] Log TSIG key used w/ outgoing zone transfers. 1311. [bug] lwres_getrrsetbyname leaked memory. [RT #3159] 1310. [bug] 'rndc stop' failed to cause zones to be flushed sometimes. [RT #3157] 1309. [func] Log that a zone transfer was covered by a TSIG. 1308. [func] DS (delegation signer) support. 1307. [bug] nsupdate: allow white space base64 key data. 1306. [bug] Badly encoded LOC record when the size, horizontal precision or vertical precision was 0.1m. 1305. [bug] Document that internal zones are included in the rndc status results. 1304. [func] New function: dns_zone_name(). 1303. [func] Option 'flush-zones-on-shutdown ;'. 1302. [func] Extended rndc dumpdb to support dumping of zones and view selection: 'dumpdb [-all|-zones|-cache] [view]'. 1301. [func] New category 'update-security'. 1300. [port] Compaq Trucluster support. 1299. [bug] Set AI_ADDRCONFIG when looking up addresses via getaddrinfo() (affects dig, host, nslookup, rndc and nsupdate). 1298. [bug] The CINCLUDES macro in lib/dns/sec/dst/Makefile could be left with a trailing "\" after configure has been run. 1297. [port] linux: make handling EINVAL from socket() no longer conditional on #ifdef LINUX. 1296. [bug] isc_log_closefilelogs() needed to lock the log context. 1295. [bug] isc_log_setdebuglevel() needed to lock the log context. 1294. [func] libbind: no longer attempts bit string labels for IPv6 reverse resolution. Try IP6.ARPA then IP6.INT for nibble style resolution. 1293. [func] Entropy can now be retrieved from EGDs. [RT #2438] 1292. [func] Enable IPv6 support when using ioctl style interface scanning and OS supports SIOCGLIFADDR using struct if_laddrreq. 1291. [func] Enable IPv6 support when using sysctl style interface scanning. 1290. [func] "dig axfr" now reports the number of messages as well as the number of records. 1289. [port] See if -ldl is required for OpenSSL? [RT #2672] 1288. [bug] Adjusted REQUIRE's in lib/dns/name.c to better reflect written requirements. 1287. [bug] REQUIRE that DNS_DBADD_MERGE only be set when adding a rdataset to a zone db in the rbtdb implementation of addrdataset. 1286. [bug] dns_name_downcase() enforce requirement that target != NULL or name->buffer != NULL. 1285. [func] lwres: probe the system to see what address families are currently in use. 1284. [bug] The RTT estimate on unused servers was not aged. [RT #2569] 1283. [func] Use "dataready" accept filter if available. 1282. [port] libbind: hpux 11.11 interface scanning. 1281. [func] Log zone when unable to get private keys to update zone. Log zone when NXT records are missing from secure zone. 1280. [bug] libbind: escape '(' and ')' when converting to presentation form. 1279. [port] Darwin uses (unsigned long) for size_t. [RT #2590] 1278. [func] dig: now supports +[no]cl +[no]ttlid. 1277. [func] You can now create your own customized printing styles: dns_master_stylecreate() and dns_master_styledestroy(). 1276. [bug] libbind: const pointer conflicts in res_debug.c. 1275. [port] libbind: hpux: treat all hpux systems as BIG_ENDIAN. 1274. [bug] Memory leak in lwres_gnbarequest_parse(). 1273. [port] libbind: solaris: 64 bit binary compatibility. 1272. [contrib] Berkeley DB 4.0 sdb implementation from Nuno Miguel Rodrigues . 1271. [bug] "recursion available: {denied,approved}" was too confusing. 1270. [bug] Check that system inet_pton() and inet_ntop() support AF_INET6. 1269. [port] Openserver: ifconfig.sh support. 1268. [port] Openserver: the value FD_SETSIZE depends on whether is included or not. Be consistent. 1267. [func] isc_file_openunique() now creates file using mode 0666 rather than 0600. 1266. [bug] ISC_LINK_INIT, ISC_LINK_UNLINK, ISC_LIST_DEQUEUE, __ISC_LINK_UNLINKUNSAFE and __ISC_LIST_DEQUEUEUNSAFE are not C++ compatible, use *_TYPE versions instead. 1265. [bug] libbind: LINK_INIT and UNLINK were not compatible with C++, use LINK_INIT_TYPE and UNLINK_TYPE instead. 1264. [placeholder] 1263. [bug] Reference after free error if dns_dispatchmgr_create() failed. 1262. [bug] ns_server_destroy() failed to set *serverp to NULL. 1261. [func] libbind: ns_sign2() and ns_sign_tcp() now provide support for compressed TSIG owner names. 1260. [func] libbind: res_update can now update IPv6 servers, new function res_findzonecut2(). 1259. [bug] libbind: get_salen() IPv6 support was broken for OSs w/o sa_len. 1258. [bug] libbind: res_nametotype() and res_nametoclass() were broken. 1257. [bug] Failure to write pid-file should not be fatal on reload. [RT #2861] 1256. [contrib] 'queryperf' now has EDNS (-e) + DNSSEC DO (-D) support. 1255. [bug] When verifying that an NXT proves nonexistence, check the rcode of the message and only do the matching NXT check. That is, for NXDOMAIN responses, check that the name is in the range between the NXT owner and next name, and for NOERROR NODATA responses, check that the type is not present in the NXT bitmap. 1254. [func] preferred-glue option from BIND 8.3. 1253. [bug] The dnssec system test failed to remove the correct files. 1252. [bug] Dig, host and nslookup were not checking the address the answer was coming from against the address it was sent to. [RT #2692] 1251. [port] win32: a make file contained absolute version specific references. 1250. [func] Nsupdate will report the address the update was sent to. 1249. [bug] Missing masters clause was not handled gracefully. [RT #2703] 1248. [bug] DESTDIR was not being propagated between makes. 1247. [bug] Don't reset the interface index for link/site local addresses. [RT #2576] 1246. [func] New functions isc_sockaddr_issitelocal(), isc_sockaddr_islinklocal(), isc_netaddr_issitelocal() and isc_netaddr_islinklocal(). 1245. [bug] Treat ENOBUFS, ENOMEM and ENFILE as soft errors for accept(). 1244. [bug] Receiving a TCP message from a blackhole address would prevent further messages being received over that interface. 1243. [bug] It was possible to trigger a REQUIRE() in dns_message_findtype(). [RT #2659] 1242. [bug] named-checkzone failed if a journal existed. [RT #2657] 1241. [bug] Drop received UDP messages with a zero source port as these are invariably forged. [RT #2621] 1240. [bug] It was possible to leak zone references by specifying an incorrect zone to rndc. 1239. [bug] Under certain circumstances named could continue to use a name after it had been freed triggering INSIST() failures. [RT #2614] 1238. [bug] It is possible to lockup the server when shutting down if notifies were being processed. [RT #2591] 1237. [bug] nslookup: "set q=type" failed. 1236. [bug] dns_rdata{class,type}_fromtext() didn't handle non NULL terminated text regions. [RT #2588] 1235. [func] Report 'out of memory' errors from openssl. 1234. [bug] contrib/sdb: 'zonetodb' failed to call dns_result_register(). DNS_R_SEENINCLUDE should not be fatal. 1233. [bug] The flags field of a KEY record can be expressed in hex as well as decimal. 1232. [bug] unix/errno2result() didn't handle EADDRNOTAVAIL. 1231. [port] HPUX 11.11 recvmsg() can return spurious EADDRNOTAVAIL. 1230. [bug] isccc_cc_isreply() and isccc_cc_isack() were broken. 1229. [bug] named would crash if it received a TSIG signed query as part of an AXFR response. [RT #2570] 1228. [bug] 'make install' did not depend on 'make all'. [RT #2559] 1227. [bug] dns_lex_getmastertoken() now returns ISC_R_BADNUMBER if a number was expected and some other token was found. [RT #2532] 1226. [func] Use EDNS for zone refresh queries. [RT #2551] 1225. [func] dns_message_setopt() no longer requires that dns_message_renderbegin() to have been called. 1224. [bug] 'rrset-order' and 'sortlist' should be additive not exclusive. 1223. [func] 'rrset-order' partially works 'cyclic' and 'random' are supported. 1222. [bug] Specifying 'port *' did not always result in a system selected (non-reserved) port being used. [RT #2537] 1221. [bug] Zone types 'master', 'slave' and 'stub' were not being compared case insensitively. [RT #2542] 1220. [func] Support for APL rdata type. 1219. [func] Named now reports the TSIG extended error code when signature verification fails. [RT #1651] 1218. [bug] Named incorrectly returned SERVFAIL rather than NOTAUTH when there was a TSIG BADTIME error. [RT #2519] 1217. [func] Report locations of previous key definition when a duplicate is detected. 1216. [bug] Multiple server clauses for the same server were not reported. [RT #2514] 1215. [port] solaris: add support to ifconfig.sh for x86 2.5.1 1214. [bug] Win32: isc_file_renameunique() could leave zero length files behind. 1213. [func] Report view associated with client if it is not a standard view (_default or _bind). 1212. [port] libbind: 64k answer buffers were causing stack space to be exceeded for certain OS. Use heap space instead. 1211. [bug] dns_name_fromtext() incorrectly handled certain valid octal bitlabels. [RT #2483] 1210. [bug] libbind: getnameinfo() failed to lookup IPv4 mapped / compatible addresses. [RT #2461] 1209. [bug] Dig, host, nslookup were not checking the message ids on the responses. [RT #2454] 1208. [bug] dns_master_load*() failed to log a error message if an error was detected when parsing the owner name of a record. [RT #2448] 1207. [bug] libbind: getaddrinfo() could call freeaddrinfo() with an invalid pointer. 1206. [bug] SERVFAIL and NOTIMP responses to an EDNS query should trigger a non-EDNS retry. 1205. [bug] OPT, TSIG and TKEY cannot be used to set the "class" of the message. [RT #2449] 1204. [bug] libbind: res_nupdate() failed to update the name server addresses before sending the update. 1203. [func] Report locations of previous acl and zone definitions when a duplicate is detected. 1202. [func] New functions: cfg_obj_line() and cfg_obj_file(). 1201. [bug] Require that if 'callbacks' is passed to dns_rdata_fromtext(), callbacks->error and callbacks->warn are initialized. 1200. [bug] Log 'errno' that we are unable to convert to isc_result_t. [RT #2404] 1199. [doc] ARM reference to RFC 2157 should have been RFC 1918. [RT #2436] 1198. [bug] OPT printing style was not consistent with the way the header fields are printed. The DO bit was not reported if set. Report if any of the MBZ bits are set. 1197. [bug] Attempts to define the same acl multiple times were not detected. 1196. [contrib] update mdnkit to 2.2.3. 1195. [bug] Attempts to redefine builtin acls should be caught. [RT #2403] 1194. [bug] Not all duplicate zone definitions were being detected at the named.conf checking stage. [RT #2431] 1193. [bug] dig +besteffort parsing didn't handle packet truncation. dns_message_parse() has new flag DNS_MESSAGE_IGNORETRUNCATION. 1192. [bug] The seconds fields in LOC records were restricted to three decimal places. More decimal places should be allowed but warned about. 1191. [bug] A dynamic update removing the last non-apex name in a secure zone would fail. [RT #2399] 1190. [func] Add the "rndc freeze" and "rndc unfreeze" commands. [RT #2394] 1189. [bug] On some systems, malloc(0) returns NULL, which could cause the caller to report an out of memory error. [RT #2398] 1188. [bug] Dynamic updates of a signed zone would fail if some of the zone private keys were unavailable. 1187. [bug] named was incorrectly returning DNSSEC records in negative responses when the DO bit was not set. 1186. [bug] isc_hex_tobuffer(,,length = 0) failed to unget the EOL token when reading to end of line. 1185. [bug] libbind: don't assume statp->_u._ext.ext is valid unless RES_INIT is set when calling res_*init(). 1184. [bug] libbind: call res_ndestroy() if RES_INIT is set when res_*init() is called. 1183. [bug] Handle ENOSR error when writing to the internal control pipe. [RT #2395] 1182. [bug] The server could throw an assertion failure when constructing a negative response packet. 1181. [func] Add the "key-directory" configuration statement, which allows the server to look for online signing keys in alternate directories. 1180. [func] dnssec-keygen should always generate keys with protocol 3 (DNSSEC), since it's less confusing that way. 1179. [func] Add SIG(0) support to nsupdate. 1178. [bug] Follow and cache (if appropriate) A6 and other data chains to completion in the additional section. 1177. [func] Report view when loading zones if it is not a standard view (_default or _bind). [RT #2270] 1176. [doc] Document that allow-v6-synthesis is only performed for clients that are supplied recursive service. [RT #2260] 1175. [bug] named-checkzone and named-checkconf failed to call dns_result_register() at startup which could result in runtime exceptions when printing "out of memory" errors. [RT #2335] 1174. [bug] Win32: add WSAECONNRESET to the expected errors from connect(). [RT #2308] 1173. [bug] Potential memory leaks in isc_log_create() and isc_log_settag(). [RT #2336] 1172. [doc] Add CERT, GPOS, KX, NAPTR, NSAP, PX and TXT to table of RR types in ARM. 1171. [func] Added function isc_region_compare(), updated files in lib/dns to use this function instead of local one. 1170. [bug] Don't attempt to print the token when a I/O error occurs when parsing named.conf. [RT #2275] 1169. [func] Identify recursive queries in the query log. 1168. [bug] Empty also-notify clauses were not handled. [RT #2309] 1167. [contrib] nslint-2.1a3 (from author). 1166. [bug] "Not Implemented" should be reported as NOTIMP, not NOTIMPL. [RT #2281] 1165. [bug] We were rejecting notify-source{-v6} in zone clauses. 1164. [bug] Empty masters clauses in slave / stub zones were not handled gracefully. [RT #2262] 1163. [func] isc_time_formattimestamp() now includes the year. 1162. [bug] The allow-notify option was not accepted in slave zone statements. 1161. [bug] named-checkzone looped on unbalanced brackets. [RT #2248] 1160. [bug] Generating Diffie-Hellman keys longer than 1024 bits could fail. [RT #2241] 1159. [bug] MD and MF are not permitted to be loaded by RFC1123. 1158. [func] Report the client's address when logging notify messages. 1157. [func] match-clients and match-destinations now accept keys. [RT #2045] 1156. [port] The configure test for strsep() incorrectly succeeded on certain patched versions of AIX 4.3.3. [RT #2190] 1155. [func] Recover from master files being removed from under us. 1154. [bug] Don't attempt to obtain the netmask of a interface if there is no address configured. [RT #2176] 1153. [func] 'rndc {stop|halt} -p' now reports the process id of the instance of named being shutdown. 1152. [bug] libbind: read buffer overflows. 1151. [bug] nslookup failed to check that the arguments to the port, timeout, and retry options were valid integers and in range. [RT #2099] 1150. [bug] named incorrectly accepted TTL values containing plus or minus signs, such as 1d+1h-1s. 1149. [func] New function isc_parse_uint32(). 1148. [func] 'rndc-confgen -a' now provides positive feedback. 1147. [func] Set IPV6_V6ONLY on IPv6 sockets if supported by the OS. listen-on-v6 { any; }; should no longer result in IPv4 queries be accepted. Similarly control { inet :: ... }; should no longer result in IPv4 connections being accepted. This can be overridden at compile time by defining ISC_ALLOW_MAPPED=1. 1146. [func] Allow IPV6_IPV6ONLY to be set/cleared on a socket if supported by the OS by a new function isc_socket_ipv6only(). 1145. [func] "host" no longer reports a NOERROR/NODATA response by printing nothing. [RT #2065] 1144. [bug] rndc-confgen would crash if both the -a and -t options were specified. [RT #2159] 1143. [bug] When a trusted-keys statement was present and named was built without crypto support, it would leak memory. 1142. [bug] dnssec-signzone would fail to delete temporary files in some failure cases. [RT #2144] 1141. [bug] When named rejected a control message, it would leak a file descriptor and memory. It would also fail to respond, causing rndc to hang. [RT #2139, #2164] 1140. [bug] rndc-confgen did not accept IPv6 addresses as arguments to the -s option. [RT #2138] 1139. [func] It is now possible to flush a given name from the cache(s) via 'rndc flushname name [view]'. [RT #2051] 1138. [func] It is now possible to flush a given name from the cache by calling the new function dns_cache_flushname(). 1137. [func] It is now possible to flush a given name from the ADB by calling the new function dns_adb_flushname(). 1136. [bug] CNAME records synthesized from DNAMEs did not have a TTL of zero as required by RFC2672. [RT #2129] 1135. [func] You can now override the default syslog() facility for named/lwresd at compile time. [RT #1982] 1134. [bug] Multi-threaded servers could deadlock in ferror() when reloading zone files. [RT #1951, #1998] 1133. [bug] IN6_IS_ADDR_LOOPBACK was not portably defined on platforms without IN6_IS_ADDR_LOOPBACK. [RT #2106] 1132. [func] Improve UPDATE prerequisite failure diagnostic messages. 1131. [bug] The match-destinations view option did not work with IPv6 destinations. [RT #2073, #2074] 1130. [bug] Log messages reporting an out-of-range serial number did not include the out-of-range number but the following token. [RT #2076] 1129. [bug] Multi-threaded servers could crash under heavy resolution load due to a race condition. [RT #2018] 1128. [func] sdb drivers can now provide RR data in either text or wire format, the latter using the new functions dns_sdb_putrdata() and dns_sdb_putnamedrdata(). 1127. [func] rndc: If the server to contact has multiple addresses, try all of them. 1126. [bug] The server could access a freed event if shut down while a client start event was pending delivery. [RT #2061] 1125. [bug] rndc: -k option was missing from usage message. [RT #2057] 1124. [doc] dig: +[no]dnssec, +[no]besteffort and +[no]fail are now documented. [RT #2052] 1123. [bug] dig +[no]fail did not match description. [RT #2052] 1122. [tuning] Resolution timeout reduced from 90 to 30 seconds. [RT #2046] 1121. [bug] The server could attempt to access a NULL zone table if shut down while resolving. [RT #1587, #2054] 1120. [bug] Errors in options were not fatal. [RT #2002] 1119. [func] Added support in Win32 for NTFS file/directory ACL's for access control. 1118. [bug] On multi-threaded servers, a race condition could cause an assertion failure in resolver.c during resolver shutdown. [RT #2029] 1117. [port] The configure check for in6addr_loopback incorrectly succeeded on AIX 4.3 when compiling with -O2 because the test code was optimized away. [RT #2016] 1116. [bug] Setting transfers in a server clause, transfers-in, or transfers-per-ns to a value greater than 2147483647 disabled transfers. [RT #2002] 1115. [func] Set maximum values for cleaning-interval, heartbeat-interval, interface-interval, max-transfer-idle-in, max-transfer-idle-out, max-transfer-time-in, max-transfer-time-out, statistics-interval of 28 days and sig-validity-interval of 3660 days. [RT #2002] 1114. [port] Ignore more accept() errors. [RT #2021] 1113. [bug] The allow-update-forwarding option was ignored when specified in a view. [RT #2014] 1112. [placeholder] 1111. [bug] Multi-threaded servers could deadlock processing recursive queries due to a locking hierarchy violation in adb.c. [RT #2017] 1110. [bug] dig should only accept valid abbreviations of +options. [RT #2003] 1109. [bug] nsupdate accepted illegal ttl values. 1108. [bug] On Win32, rndc was hanging when named was not running due to failure to select for exceptional conditions in select(). [RT #1870] 1107. [bug] nsupdate could catch an assertion failure if an invalid domain name was given as the argument to the "zone" command. 1106. [bug] After seeing an out of range TTL, nsupdate would treat all TTLs as out of range. [RT #2001] 1105. [port] OpenUNIX 8 enable threads by default. [RT #1970] 1104. [bug] Invalid arguments to the transfer-format option could cause an assertion failure. [RT #1995] 1103. [port] OpenUNIX 8 support (ifconfig.sh). [RT #1970] 1102. [doc] Note that query logging is enabled by directing the queries category to a channel. 1101. [bug] Array bounds read error in lwres_gai_strerror. 1100. [bug] libbind: DNSSEC key ids were computed incorrectly. 1099. [cleanup] libbind: defining REPORT_ERRORS in lib/bind/dst caused compile time errors. 1098. [bug] libbind: HMAC-MD5 key files are now mode 0600. 1097. [func] libbind: RES_PRF_TRUNC for dig. 1096. [func] libbind: "DNSSEC OK" (DO) support. 1095. [func] libbind: resolver option: no-tld-query. disables trying unqualified as a tld. no_tld_query is also supported for FreeBSD compatibility. 1094. [func] libbind: add support gcc's format string checking. 1093. [doc] libbind: miscellaneous nroff fixes. 1092. [bug] libbind: get*by*() failed to check if res_init() had been called. 1091. [bug] libbind: misplaced va_end(). 1090. [bug] libbind: dns_ho.c:add_hostent() was not returning the amount of memory consumed resulting in garbage address being returned. Alignment calculations were wasting space. We weren't suppressing duplicate addresses. 1089. [func] libbind: inet_{cidr,net}_{pton,ntop}() now have IPv6 support. 1088. [port] libbind: MPE/iX C.70 (incomplete) 1087. [bug] libbind: struct __res_state too large on 64 bit arch. 1086. [port] libbind: sunos: old sprintf. 1085. [port] libbind: solaris: sys_nerr and sys_errlist do not exist when compiling in 64 bit mode. 1084. [cleanup] libbind: gai_strerror() rewritten. 1083. [bug] The default control channel listened on the wildcard address, not the loopback as documented. [RT #1975] 1082. [bug] The -g option to named incorrectly caused logging to be sent to syslog in addition to stderr. [RT #1974] 1081. [bug] Multicast queries were incorrectly identified based on the source address, not the destination address. 1080. [bug] BIND 8 compatibility: accept bare IP prefixes as the second element of a two-element top level sort list statement. [RT #1964] 1079. [bug] BIND 8 compatibility: accept bare elements at top level of sort list treating them as if they were a single element list. [RT #1963] 1078. [bug] We failed to correct bad tv_usec values in one case. [RT #1966] 1077. [func] Do not accept further recursive clients when the total number of recursive lookups being processed exceeds max-recursive-clients, even if some of the lookups are internally generated. [RT #1915, #1938] 1076. [bug] A badly defined global key could trigger an assertion on load/reload if views were used. [RT #1947] 1075. [bug] Out-of-range network prefix lengths were not reported. [RT #1954] 1074. [bug] Running out of memory in dump_rdataset() could cause an assertion failure. [RT #1946] 1073. [bug] The ADB cache cleaning should also be space driven. [RT #1915, #1938] 1072. [bug] The TCP client quota could be exceeded when recursion occurred. [RT #1937] 1071. [bug] Sockets listening for TCP DNS connections specified an excessive listen backlog. [RT #1937] 1070. [bug] Copy DNSSEC OK (DO) to response as specified by draft-ietf-dnsext-dnssec-okbit-03.txt. 1069. [placeholder] 1068. [bug] errno could be overwritten by catgets(). [RT #1921] 1067. [func] Allow quotas to be soft, isc_quota_soft(). 1066. [bug] Provide a thread safe wrapper for strerror(). [RT #1689] 1065. [func] Runtime support to select new / old style interface scanning using ioctls. 1064. [bug] Do not shut down active network interfaces if we are unable to scan the interface list. [RT #1921] 1063. [bug] libbind: "make install" was failing on IRIX. [RT #1919] 1062. [bug] If the control channel listener socket was shut down before server exit, the listener object could be freed twice. [RT #1916] 1061. [bug] If periodic cache cleaning happened to start while cleaning due to reaching the configured maximum cache size was in progress, the server could catch an assertion failure. [RT #1912] 1060. [func] Move refresh, stub and notify UDP retry processing into dns_request. 1059. [func] dns_request now support will now retry UDP queries, dns_request_createvia2() and dns_request_createraw2(). 1058. [func] Limited lifetime ticker timers are now available, isc_timertype_limited. 1057. [bug] Reloading the server after adding a "file" clause to a zone statement could cause the server to crash due to a typo in change 1016. 1056. [bug] Rndc could catch an assertion failure on SIGINT due to an uninitialized variable. [RT #1908] 1055. [func] Version and hostname queries can now be disabled using "version none;" and "hostname none;", respectively. 1054. [bug] On Win32, cfg_categories and cfg_modules need to be exported from the libisccfg DLL. 1053. [bug] Dig did not increase its timeout when receiving AXFRs unless the +time option was used. [RT #1904] 1052. [bug] Journals were not being created in binary mode resulting in "journal format not recognized" error under Win32. [RT #1889] 1051. [bug] Do not ignore a network interface completely just because it has a noncontiguous netmask. Instead, omit it from the localnets ACL and issue a warning. [RT #1891] 1050. [bug] Log messages reporting malformed IP addresses in address lists such as that of the forwarders option failed to include the correct error code, file name, and line number. [RT #1890] 1049. [func] "pid-file none;" will disable writing a pid file. [RT #1848] 1048. [bug] Servers built with -DISC_MEM_USE_INTERNAL_MALLOC=1 didn't work. 1047. [bug] named was incorrectly refusing all requests signed with a TSIG key derived from an unsigned TKEY negotiation with a NOERROR response. [RT #1886] 1046. [bug] The help message for the --with-openssl configure option was inaccurate. [RT #1880] 1045. [bug] It was possible to skip saving glue for a nameserver for a stub zone. 1044. [bug] Specifying allow-transfer, notify-source, or notify-source-v6 in a stub zone was not treated as an error. 1043. [bug] Specifying a transfer-source or transfer-source-v6 option in the zone statement for a master zone was not treated as an error. [RT #1876] 1042. [bug] The "config" logging category did not work properly. [RT #1873] 1041. [bug] Dig/host/nslookup could catch an assertion failure on SIGINT due to an uninitialized variable. [RT #1867] 1040. [bug] Multiple listen-on-v6 options with different ports were not accepted. [RT #1875] 1039. [bug] Negative responses with CNAMEs in the answer section were cached incorrectly. [RT #1862] 1038. [bug] In servers configured with a tkey-domain option, TKEY queries with an owner name other than the root could cause an assertion failure. [RT #1866, #1869] 1037. [bug] Negative responses whose authority section contain SOA or NS records whose owner names are not equal equal to or parents of the query name should be rejected. [RT #1862] 1036. [func] Silently drop requests received via multicast as long as there is no final multicast DNS standard. 1035. [bug] If we respond to multicast queries (which we currently do not), respond from a unicast address as specified in RFC 1123. [RT #137] 1034. [bug] Ignore the RD bit on multicast queries as specified in RFC 1123. [RT #137] 1033. [bug] Always respond to requests with an unsupported opcode with NOTIMP, even if we don't have a matching view or cannot determine the class. 1032. [func] hostname.bind/txt/chaos now returns the name of the machine hosting the nameserver. This is useful in diagnosing problems with anycast servers. 1031. [bug] libbind.a: isc__gettimeofday() infinite recursion. [RT #1858] 1030. [bug] On systems with no resolv.conf file, nsupdate exited with an error rather than defaulting to using the loopback address. [RT #1836] 1029. [bug] Some named.conf errors did not cause the loading of the configuration file to return a failure status even though they were logged. [RT #1847] 1028. [bug] On Win32, dig/host/nslookup looked for resolv.conf in the wrong directory. [RT #1833] 1027. [bug] RRs having the reserved type 0 should be rejected. [RT #1471] 1026. [placeholder] 1025. [bug] Don't use multicast addresses to resolve iterative queries. [RT #101] 1024. [port] Compilation failed on HP-UX 11.11 due to incompatible use of the SIOCGLIFCONF macro name. [RT #1831] 1023. [func] Accept hints without TTLs. 1022. [bug] Don't report empty root hints as "extra data". [RT #1802] 1021. [bug] On Win32, log message timestamps were one month later than they should have been, and the server would exhibit unspecified behavior in December. 1020. [bug] IXFR log messages did not distinguish between true IXFRs, AXFR-style IXFRs, and mere version polls. [RT #1811] 1019. [bug] The value of the lame-ttl option was limited to 18000 seconds, not 1800 seconds as documented. [RT #1803] 1018. [bug] The default log channel was not always initialized correctly. [RT #1813] 1017. [bug] When specifying TSIG keys to dig and nsupdate using the -k option, they must be HMAC-MD5 keys. [RT #1810] 1016. [bug] Slave zones with no backup file were re-transferred on every server reload. 1015. [bug] Log channels that had a "versions" option but no "size" option failed to create numbered log files. [RT #1783] 1014. [bug] Some queries would cause statistics counters to increment more than once or not at all. [RT #1321] 1013. [bug] It was possible to cancel a query twice when marking a server as bogus or by having a blackhole acl. [RT #1776] 1012. [bug] The -p option to named did not behave as documented. 1011. [cleanup] Removed isc_dir_current(). 1010. [bug] The server could attempt to execute a command channel command after initiating server shutdown, causing an assertion failure. [RT #1766] 1009. [port] OpenUNIX 8 support. [RT #1728] 1008. [port] libtool.m4, ltmain.sh from libtool-1.4.2. 1007. [port] config.guess, config.sub from autoconf-2.52. 1006. [bug] If a KEY RR was found missing during DNSSEC validation, an assertion failure could subsequently be triggered in the resolver. [RT #1763] 1005. [bug] Don't copy nonzero RCODEs from request to response. [RT #1765] 1004. [port] Deal with recvfrom() returning EHOSTDOWN. [RT #1770] 1003. [func] Add the +retry option to dig. 1002. [bug] When reporting an unknown class name in named.conf, including the file name and line number. [RT #1759] 1001. [bug] win32 socket code doio_recv was not catching a WSACONNRESET error when a client was timing out the request and closing its socket. [RT #1745] 1000. [bug] BIND 8 compatibility: accept "HESIOD" as an alias for class "HS". [RT #1759] 999. [func] "rndc retransfer zone [class [view]]" added. [RT #1752] 998. [func] named-checkzone now has arguments to specify the chroot directory (-t) and working directory (-w). [RT #1755] 997. [func] Add support for RSA-SHA1 keys (RFC3110). 996. [func] Issue warning if the configuration filename contains the chroot path. 995. [bug] dig, host, nslookup: using a raw IPv6 address as a target address should be fatal on a IPv4 only system. 994. [func] Treat non-authoritative responses to queries for type NS as referrals even if the NS records are in the answer section, because BIND 8 servers incorrectly send them that way. This is necessary for DNSSEC validation of the NS records of a secure zone to succeed when the parent is a BIND 8 server. [RT #1706] 993. [func] dig: -v now reports the version. 992. [doc] dig: ~/.digrc is now documented. 991. [func] Lower UDP refresh timeout messages to level debug 1. 990. [bug] The rndc-confgen man page was not installed. 989. [bug] Report filename if $INCLUDE fails for file related errors. [RT #1736] 988. [bug] 'additional-from-auth no;' did not work reliably in the case of queries answered from the cache. [RT #1436] 987. [bug] "dig -help" didn't show "+[no]stats". 986. [bug] "dig +noall" failed to clear stats and command printing. 985. [func] Consider network interfaces to be up iff they have a nonzero IP address rather than based on the IFF_UP flag. [RT #1160] 984. [bug] Multi-threading should be enabled by default on Solaris 2.7 and newer, but it wasn't. 983. [func] The server now supports generating IXFR difference sequences for non-dynamic zones by comparing zone versions, when enabled using the new config option "ixfr-from-differences". [RT #1727] 982. [func] If "memstatistics-file" is set in options the memory statistics will be written to it. 981. [func] The dnssec tools can now take multiple '-r randomfile' arguments. 980. [bug] Incoming zone transfers restarting after an error could trigger an assertion failure. [RT #1692] 979. [func] Incremental master file dumping. dns_master_dumpinc(), dns_master_dumptostreaminc(), dns_dumpctx_attach(), dns_dumpctx_detach(), dns_dumpctx_cancel(), dns_dumpctx_db() and dns_dumpctx_version(). 978. [bug] dns_db_attachversion() had an invalid REQUIRE() condition. 977. [bug] Improve "not at top of zone" error message. 976. [func] named-checkconf can now test load master zones (named-checkconf -z). [RT #1468] 975. [bug] "max-cache-size default;" as a view option caused an assertion failure. 974. [bug] "max-cache-size unlimited;" as a global option was not accepted. 973. [bug] Failed to log the question name when logging: "bad zone transfer request: non-authoritative zone (NOTAUTH)". 972. [bug] The file modification time code in zone.c was using the wrong epoch. [RT #1667] 971. [placeholder] 970. [func] 'max-journal-size' can now be used to set a target size for a journal. 969. [func] dig now supports the undocumented dig 8 feature of allowing arbitrary labels, not just dotted decimal quads, with the -x option. This can be used to conveniently look up RFC2317 names as in "dig -x 10.0.0.0-127". [RT #827, #1576, #1598] 968. [bug] On win32, the isc_time_now() function was unnecessarily calling strtime(). [RT #1671] 967. [bug] On win32, the link for bindevt was not including the required resource file to enable the event viewer to interpret the error messages in the event log, [RT #1668] 966. [placeholder] 965. [bug] Including data other than root server NS and A records in the root hint file could cause a rbtdb node reference leak. [RT #1581, #1618] 964. [func] Warn if data other than root server NS and A records are found in the root hint file. [RT #1581, #1618] 963. [bug] Bad ISC_LANG_ENDDECLS. [RT #1645] 962. [bug] libbind: bad "#undef", don't attempt to install non-existent nlist.h. [RT #1640] 961. [bug] Tried to use a IPV6 feature when ISC_PLATFORM_HAVEIPV6 was not defined. [RT #1482] 960. [port] liblwres failed to build on systems with support for getrrsetbyname() in the OS. [RT #1592] 959. [port] On FreeBSD, determine the number of CPUs by calling sysctlbyname(). [RT #1584] 958. [port] ssize_t is not available on all platforms. [RT #1607] 957. [bug] sys/select.h inclusion was broken on older platforms. [RT #1607] 956. [bug] ns_g_autorndcfile changed to ns_g_keyfile in named/win32/os.c due to code changes in change #953. win32 .make file for rndc-confgen updated to add include path for os.h header. --- 9.2.0rc1 released --- 955. [bug] When using views, the zone's class was not being inherited from the view's class. [RT #1583] 954. [bug] When requesting AXFRs or IXFRs using dig, host, or nslookup, the RD bit should not be set as zone transfers are inherently non-recursive. [RT #1575] 953. [func] The /var/run/named.key file from change #843 has been replaced by /etc/rndc.key. Both named and rndc will look for this file and use it to configure a default control channel key if not already configured using a different method (rndc.conf / controls). Unlike named.key, rndc.key is not created automatically; it must be created by manually running "rndc-confgen -a". 952. [bug] The server required manual intervention to serve the affected zones if it died between creating a journal and committing the first change to it. 951. [bug] CFLAGS was not passed to the linker when linking some of the test programs under bin/tests. [RT #1555]. 950. [bug] Explicit TTLs did not properly override $TTL due to a bug in change 834. [RT #1558] 949. [bug] host was unable to print records larger than 512 bytes. [RT #1557] --- 9.2.0b2 released --- 948. [port] Integrated support for building on Windows NT / Windows 2000. 947. [bug] dns_rdata_soa_t had a badly named element "mname" which was really the RNAME field from RFC1035. To avoid confusion and silent errors that would occur it the "origin" and "mname" elements were given their correct names "mname" and "rname" respectively, the "mname" element is renamed to "contact". 946. [cleanup] doc/misc/options is now machine-generated from the configuration parser syntax tables, and therefore more likely to be correct. 945. [func] Add the new view-specific options "match-destinations" and "match-recursive-only". 944. [func] Check for expired signatures on load. 943. [bug] The server could crash when receiving a command via rndc if the configuration file listed only nonexistent keys in the controls statement. [RT #1530] 942. [port] libbind: GETNETBYADDR_ADDR_T was not correctly defined on some platforms. 941. [bug] The configuration checker crashed if a slave zone didn't contain a masters statement. [RT #1514] 940. [bug] Double zone locking failure on error path. [RT #1510] --- 9.2.0b1 released --- 939. [port] Add the --disable-linux-caps option to configure for systems that manage capabilities outside of named. [RT #1503] 938. [placeholder] 937. [bug] A race when shutting down a zone could trigger a INSIST() failure. [RT #1034] 936. [func] Warn about IPv4 addresses that are not complete dotted quads. [RT #1084] 935. [bug] inet_pton failed to reject leading zeros. 934. [port] Deal with systems where accept() spuriously returns ECONNRESET. 933. [bug] configure failed doing libbind on platforms not supported by BIND 8. [RT #1496] --- 9.2.0a3 released --- 932. [bug] Use INSTALL_SCRIPT, not INSTALL_PROGRAM, when installing isc-config.sh. [RT #198, #1466] 931. [bug] The controls statement only attempted to verify messages using the first key in the key list. (9.2.0a1/a2 only). 930. [func] Query performance testing tool added as contrib/queryperf. 929. [placeholder] 928. [bug] nsupdate would send empty update packets if the send (or empty line) command was run after another send but before any new updates or prerequisites were specified. It should simply ignore this command. 927. [bug] Don't hold the zone lock for the entire dump to disk. [RT #1423] 926. [bug] The resolver could deadlock with the ADB when shutting down (multi-threaded builds only). [RT #1324] 925. [cleanup] Remove openssl from the distribution; require that --with-openssl be specified if DNSSEC is needed. 924. [port] Extend support for pre-RFC2133 IPv6 implementation. [RT #987] 923. [bug] Multiline TSIG secrets (and other multiline strings) were not accepted in named.conf. [RT #1469] 922. [func] Added two new lwres_getrrsetbyname() result codes, ERR_NONAME and ERR_NODATA. 921. [bug] lwres returned an incorrect error code if it received a truncated message. 920. [func] Increase the lwres receive buffer size to 16K. [RT #1451] 919. [placeholder] 918. [func] In nsupdate, TSIG errors are no longer treated as fatal errors. 917. [func] New nsupdate command 'key', allowing TSIG keys to be specified in the nsupdate command stream rather than the command line. 916. [bug] Specifying type ixfr to dig without specifying a serial number failed in unexpected ways. 915. [func] The named-checkconf and named-checkzone programs now have a '-v' option for printing their version. [RT #1151] 914. [bug] Global 'server' statements were rejected when using views, even though they were accepted in 9.1. [RT #1368] 913. [bug] Cache cleaning was not sufficiently aggressive. [RT #1441, #1444] 912. [bug] Attempts to set the 'additional-from-cache' or 'additional-from-auth' option to 'no' in a server with recursion enabled will now be ignored and cause a warning message. [RT #1145] 911. [placeholder] 910. [port] Some pre-RFC2133 IPv6 implementations do not define IN6ADDR_ANY_INIT. [RT #1416] 909. [placeholder] 908. [func] New program, rndc-confgen, to simplify setting up rndc. 907. [func] The ability to get entropy from either the random device, a user-provided file or from the keyboard was migrated from the DNSSEC tools to libisc as isc_entropy_usebestsource(). 906. [port] Separated the system independent portion of lib/isc/unix/entropy.c into lib/isc/entropy.c and added lib/isc/win32/entropy.c. 905. [bug] Configuring a forward "zone" for the root domain did not work. [RT #1418] 904. [bug] The server would leak memory if attempting to use an expired TSIG key. [RT #1406] 903. [bug] dig should not crash when receiving a TCP packet of length 0. 902. [bug] The -d option was ignored if both -t and -g were also specified. 901. [placeholder] 900. [bug] A config.guess update changed the system identification string of FreeBSD systems; configure and bin/tests/system/ifconfig.sh now recognize the new string. --- 9.2.0a2 released --- 899. [bug] lib/dns/soa.c failed to compile on many platforms due to inappropriate use of a void value. [RT #1372, #1373, #1386, #1387, #1395] 898. [bug] "dig" failed to set a nonzero exit status on UDP query timeout. [RT #1323] 897. [bug] A config.guess update changed the system identification string of UnixWare systems; configure now recognizes the new string. 896. [bug] If a configuration file is set on named's command line and it has a relative pathname, the current directory (after any possible jailing resulting from named -t) will be prepended to it so that reloading works properly even when a directory option is present. 895. [func] New function, isc_dir_current(), akin to POSIX's getcwd(). 894. [bug] When using the DNSSEC tools, a message intended to warn when the keyboard was being used because of the lack of a suitable random device was not being printed. 893. [func] Removed isc_file_test() and added isc_file_exists() for the basic functionality that was being added with isc_file_test(). 892. [placeholder] 891. [bug] Return an error when a SIG(0) signed response to an unsigned query is seen. This should actually do the verification, but it's not currently possible. [RT #1391] 890. [cleanup] The man pages no longer require the mandoc macros and should now format cleanly using most versions of nroff, and HTML versions of the man pages have been added. Both are generated from DocBook source. 889. [port] Eliminated blank lines before .TH in nroff man pages since they cause problems with some versions of nroff. [RT #1390] 888. [bug] Don't die when using TKEY to delete a nonexistent TSIG key. [RT #1392] 887. [port] Detect broken compilers that can't call static functions from inline functions. [RT #1212] 886. [placeholder] 885. [placeholder] 884. [placeholder] 883. [placeholder] 882. [placeholder] 881. [placeholder] 880. [placeholder] 879. [placeholder] 878. [placeholder] 877. [placeholder] 876. [placeholder] 875. [placeholder] 874. [placeholder] 873. [placeholder] 872. [placeholder] 871. [placeholder] 870. [placeholder] 869. [placeholder] 868. [placeholder] 867. [placeholder] 866. [func] Close debug only file channels when debug is set to zero. [RT #1246] 865. [bug] The new configuration parser did not allow the optional debug level in a "severity debug" clause of a logging channel to be omitted. This is now allowed and treated as "severity debug 1;" like it does in BIND 8.2.4, not as "severity debug 0;" like it did in BIND 9.1. [RT #1367] 864. [cleanup] Multi-threading is now enabled by default on OSF1, Solaris 2.7 and newer, AIX, IRIX, and HP-UX. 863. [bug] If an error occurred while an outgoing zone transfer was starting up, the server could access a domain name that had already been freed when logging a message saying that the transfer was starting. [RT #1383] 862. [bug] Use after realloc(), non portable pointer arithmetic in grmerge(). 861. [port] Add support for Mac OS X, by making it equivalent to Darwin. This was derived from the config.guess file shipped with Mac OS X. [RT #1355] 860. [func] Drop cross class glue in zone transfers. 859. [bug] Cache cleaning now won't swamp the CPU if there is a persistent over limit condition. 858. [func] isc_mem_setwater() no longer requires that when the callback function is non-NULL then its hi_water argument must be greater than its lo_water argument (they can now be equal) or that they be non-zero. 857. [cleanup] Use ISC_MAGIC() to define all magic numbers for structs, for our friends in EBCDIC-land. 856. [func] Allow partial rdatasets to be returned in answer and authority sections to help non-TCP capable clients recover from truncation. [RT #1301] 855. [bug] Stop spurious "using RFC 1035 TTL semantics" warnings. 854. [bug] The config parser didn't properly handle config options that were specified in units of time other than seconds. [RT #1372] 853. [bug] configure_view_acl() failed to detach existing acls. [RT #1374] 852. [bug] Handle responses from servers which do not know about IXFR. 851. [cleanup] The obsolete support-ixfr option was not properly ignored. --- 9.2.0a1 released --- 850. [bug] dns_rbt_findnode() would not find nodes that were split on a bitstring label somewhere other than in the last label of the node. [RT #1351] 849. [func] will ensure INADDR_LOOPBACK is defined. 848. [func] A minimum max-cache-size of two megabytes is enforced by the cache cleaner. 847. [func] Added isc_file_test(), which currently only has some very basic functionality to test for the existence of a file, whether a pathname is absolute, or whether a pathname is the fundamental representation of the current directory. It is intended that this function can be expanded to test other things a programmer might want to know about a file. 846. [func] A non-zero 'param' to dst_key_generate() when making an hmac-md5 key means that good entropy is not required. 845. [bug] The access rights on the public file of a symmetric key are now restricted as soon as the file is opened, rather than after it has been written and closed. 844. [func] will ensure INADDR_LOOPBACK is defined, just as does. 843. [func] If no controls statement is present in named.conf, or if any inet phrase of a controls statement is lacking a keys clause, then a key will be automatically generated by named and an rndc.conf-style file named named.key will be written that uses it. rndc will use this file only if its normal configuration file, or one provided on the command line, does not exist. 842. [func] 'rndc flush' now takes an optional view. 841. [bug] When sdb modules were not declared threadsafe, their create and destroy functions were not serialized. 840. [bug] The config file parser could print the wrong file name if an error was detected after an included file was parsed. [RT #1353] 839. [func] Dump packets for which there was no view or that the class could not be determined to category "unmatched". 838. [port] UnixWare 7.x.x is now supported by bin/tests/system/ifconfig.sh. 837. [cleanup] Multi-threading is now enabled by default only on OSF1, Solaris 2.7 and newer, and AIX. 836. [func] Upgraded libtool to 1.4. 835. [bug] The dispatcher could enter a busy loop if it got an I/O error receiving on a UDP socket. [RT #1293] 834. [func] Accept (but warn about) master files beginning with an SOA record without an explicit TTL field and lacking a $TTL directive, by using the SOA MINTTL as a default TTL. This is for backwards compatibility with old versions of BIND 8, which accepted such files without warning although they are illegal according to RFC1035. 833. [cleanup] Moved dns_soa_*() from to , and extended them to support all the integer-valued fields of the SOA RR. 832. [bug] The default location for named.conf in named-checkconf should depend on --sysconfdir like it does in named. [RT #1258] 831. [placeholder] 830. [func] Implement 'rndc status'. 829. [bug] The DNS_R_ZONECUT result code should only be returned when an ANY query is made with DNS_DBFIND_GLUEOK set. In all other ANY query cases, returning the delegation is better. 828. [bug] The errno value from recvfrom() could be overwritten by logging code. [RT #1293] 827. [bug] When an IXFR protocol error occurs, the slave should retry with AXFR. 826. [bug] Some IXFR protocol errors were not detected. 825. [bug] zone.c:ns_query() detached from the wrong zone reference. [RT #1264] 824. [bug] Correct line numbers reported by dns_master_load(). [RT #1263] 823. [func] The output of "dig -h" now goes to stdout so that it can easily be piped through "more". [RT #1254] 822. [bug] Sending nxrrset prerequisites would crash nsupdate. [RT #1248] 821. [bug] The program name used when logging to syslog should be stripped of leading path components. [RT #1178, #1232] 820. [bug] Name server address lookups failed to follow A6 chains into the glue of local authoritative zones. 819. [bug] In certain cases, the resolver's attempts to restart an address lookup at the root could cause the fetch to deadlock (with itself) instead of restarting. [RT #1225] 818. [bug] Certain pathological responses to ANY queries could cause an assertion failure. [RT #1218] 817. [func] Adjust timeouts for dialup zone queries. 816. [bug] Report potential problems with log file accessibility at configuration time, since such problems can't reliably be reported at the time they actually occur. 815. [bug] If a log file was specified with a path separator character (i.e. "/") in its name and the directory did not exist, the log file's name was treated as though it were the directory name. [RT #1189] 814. [bug] Socket objects left over from accept() failures were incorrectly destroyed, causing corruption of socket manager data structures. 813. [bug] File descriptors exceeding FD_SETSIZE were handled badly. [RT #1192] 812. [bug] dig sometimes printed incomplete IXFR responses due to an uninitialized variable. [RT #1188] 811. [bug] Parentheses were not quoted in zone dumps. [RT #1194] 810. [bug] The signer name in SIG records was not properly down-cased when signing/verifying records. [RT #1186] 809. [bug] Configuring a non-local address as a transfer-source could cause an assertion failure during load. 808. [func] Add 'rndc flush' to flush the server's cache. 807. [bug] When setting up TCP connections for incoming zone transfers, the transfer-source port was not ignored like it should be. 806. [bug] DNS_R_SEENINCLUDE was failing to propagate back up the calling stack to the zone maintenance level, causing zones to not reload when an included file was touched but the top-level zone file was not. 805. [bug] When using "forward only", missing root hints should not cause queries to fail. [RT #1143] 804. [bug] Attempting to obtain entropy could fail in some situations. This would be most common on systems with user-space threads. [RT #1131] 803. [bug] Treat all SIG queries as if they have the CD bit set, otherwise no data will be returned [RT #749] 802. [bug] DNSSEC key tags were computed incorrectly in almost all cases. [RT #1146] 801. [bug] nsupdate should treat lines beginning with ';' as comments. [RT #1139] 800. [bug] dnssec-signzone produced incorrect statistics for large zones. [RT #1133] 799. [bug] The ADB didn't find AAAA glue in a zone unless A6 glue was also present. 798. [bug] nsupdate should be able to reject bad input lines and continue. [RT #1130] 797. [func] Issue a warning if the 'directory' option contains a relative path. [RT #269] 796. [func] When a size limit is associated with a log file, only roll it when the size is reached, not every time the log file is opened. [RT #1096] 795. [func] Add the +multiline option to dig. [RT #1095] 794. [func] Implement the "port" and "default-port" statements in rndc.conf. 793. [cleanup] The DNSSEC tools could create filenames that were illegal or contained shell meta-characters. They now use a different text encoding of names that doesn't have these problems. [RT #1101] 792. [cleanup] Replace the OMAPI command channel protocol with a simpler one. 791. [bug] The command channel now works over IPv6. 790. [bug] Wildcards created using dynamic update or IXFR could fail to match. [RT #1111] 789. [bug] The "localhost" and "localnets" ACLs did not match when used as the second element of a two-element sortlist item. 788. [func] Add the "match-mapped-addresses" option, which causes IPv6 v4mapped addresses to be treated as IPv4 addresses for the purpose of acl matching. 787. [bug] The DNSSEC tools failed to downcase domain names when mapping them into file names. 786. [bug] When DNSSEC signing/verifying data, owner names were not properly down-cased. 785. [bug] A race condition in the resolver could cause an assertion failure. [RT #673, #872, #1048] 784. [bug] nsupdate and other programs would not quit properly if some signals were blocked by the caller. [RT #1081] 783. [bug] Following CNAMEs could cause an assertion failure when either using an sdb database or under very rare conditions. 782. [func] Implement the "serial-query-rate" option. 781. [func] Avoid error packet loops by dropping duplicate FORMERR responses. [RT #1006] 780. [bug] Error handling code dealing with out of memory or other rare errors could lead to assertion failures by calling functions on uninitialized names. [RT #1065] 779. [func] Added the "minimal-responses" option. 778. [bug] When starting cache cleaning, cleaning_timer_action() returned without first pausing the iterator, which could cause deadlock. [RT #998] 777. [bug] An empty forwarders list in a zone failed to override global forwarders. [RT #995] 776. [func] Improved error reporting in denied messages. [RT #252] 775. [placeholder] 774. [func] max-cache-size is implemented. 773. [func] Added isc_rwlock_trylock() to attempt to lock without blocking. 772. [bug] Owner names could be incorrectly omitted from cache dumps in the presence of negative caching entries. [RT #991] 771. [cleanup] TSIG errors related to unsynchronized clocks are logged better. [RT #919] 770. [func] Add the "edns yes_or_no" statement to the server clause. [RT #524] 769. [func] Improved error reporting when parsing rdata. [RT #740] 768. [bug] The server did not emit an SOA when a CNAME or DNAME chain ended in NXDOMAIN in an authoritative zone. 767. [placeholder] 766. [bug] A few cases in query_find() could leak fname. This would trigger the mpctx->allocated == 0 assertion when the server exited. [RT #739, #776, #798, #812, #818, #821, #845, #892, #935, #966] 765. [func] ACL names are once again case insensitive, like in BIND 8. [RT #252] 764. [func] Configuration files now allow "include" directives in more places, such as inside the "view" statement. [RT #377, #728, #860] 763. [func] Configuration files no longer have reserved words. [RT #731, #753] 762. [cleanup] The named.conf and rndc.conf file parsers have been completely rewritten. 761. [bug] _REENTRANT was still defined when building with --disable-threads. 760. [contrib] Significant enhancements to the pgsql sdb driver. 759. [bug] The resolver didn't turn off "avoid fetches" mode when restarting, possibly causing resolution to fail when it should not. This bug only affected platforms which support both IPv4 and IPv6. [RT #927] 758. [bug] The "avoid fetches" code did not treat negative cache entries correctly, causing fetches that would be useful to be avoided. This bug only affected platforms which support both IPv4 and IPv6. [RT #927] 757. [func] Log zone transfers. 756. [bug] dns_zone_load() could "return" success when no master file was configured. 755. [bug] Fix incorrectly formatted log messages in zone.c. 754. [bug] Certain failure conditions sending UDP packets could cause the server to retry the transmission indefinitely. [RT #902] 753. [bug] dig, host, and nslookup would fail to contact a remote server if getaddrinfo() returned an IPv6 address on a system that doesn't support IPv6. [RT #917] 752. [func] Correct bad tv_usec elements returned by gettimeofday(). 751. [func] Log successful zone loads / transfers. [RT #898] 750. [bug] A query should not match a DNAME whose trust level is pending. [RT #916] 749. [bug] When a query matched a DNAME in a secure zone, the server did not return the signature of the DNAME. [RT #915] 748. [doc] List supported RFCs in doc/misc/rfc-compliance. [RT #781] 747. [bug] The code to determine whether an IXFR was possible did not properly check for a database that could not have a journal. [RT #865, #908] 746. [bug] The sdb didn't clone rdatasets properly, causing a crash when the server followed delegations. [RT #905] 745. [func] Report the owner name of records that fail semantic checks while loading. 744. [bug] When returning DNS_R_CNAME or DNS_R_DNAME as the result of an ANY or SIG query, the resolver failed to setup the return event's rdatasets, causing an assertion failure in the query code. [RT #881] 743. [bug] Receiving a large number of certain malformed answers could cause named to stop responding. [RT #861] 742. [placeholder] 741. [port] Support openssl-engine. [RT #709] 740. [port] Handle openssl library mismatches slightly better. 739. [port] Look for /dev/random in configure, rather than assuming it will be there for only a predefined set of OSes. 738. [bug] If a non-threadsafe sdb driver supported AXFR and received an AXFR request, it would deadlock or die with an assertion failure. [RT #852] 737. [port] stdtime.c failed to compile on certain platforms. 736. [func] New functions isc_task_{begin,end}exclusive(). 735. [doc] Add BIND 4 migration notes. 734. [bug] An attempt to re-lock the zone lock could occur if the server was shutdown during a zone transfer. [RT #830] 733. [bug] Reference counts of dns_acl_t objects need to be locked but were not. [RT #801, #821] 732. [bug] Glue with 0 TTL could also cause SERVFAIL. [RT #828] 731. [bug] Certain zone errors could cause named-checkzone to fail ungracefully. [RT #819] 730. [bug] lwres_getaddrinfo() returns the correct result when it fails to contact a server. [RT #768] 729. [port] pthread_setconcurrency() needs to be called on Solaris. 728. [bug] Fix comment processing on master file directives. [RT #757] 727. [port] Work around OS bug where accept() succeeds but fails to fill in the peer address of the accepted connection, by treating it as an error rather than an assertion failure. [RT #809] 726. [func] Implement the "trace" and "notrace" commands in rndc. 725. [bug] Installing man pages could fail. 724. [func] New libisc functions isc_netaddr_any(), isc_netaddr_any6(). 723. [bug] Referrals whose NS RRs had a 0 TTL caused the resolver to return DNS_R_SERVFAIL. [RT #783] 722. [func] Allow incremental loads to be canceled. 721. [cleanup] Load manager and dns_master_loadfilequota() are no more. 720. [bug] Server could enter infinite loop in dispatch.c:do_cancel(). [RT #733] 719. [bug] Rapid reloads could trigger an assertion failure. [RT #743, #763] 718. [cleanup] "internal" is no longer a reserved word in named.conf. [RT #753, #731] 717. [bug] Certain TKEY processing failure modes could reference an uninitialized variable, causing the server to crash. [RT #750] 716. [bug] The first line of a $INCLUDE master file was lost if an origin was specified. [RT #744] 715. [bug] Resolving some A6 chains could cause an assertion failure in adb.c. [RT #738] 714. [bug] Preserve interval timers across reloads unless changed. [RT #729] 713. [func] named-checkconf takes '-t directory' similar to named. [RT #726] 712. [bug] Sending a large signed update message caused an assertion failure. [RT #718] 711. [bug] The libisc and liblwres implementations of inet_ntop contained an off by one error. 710. [func] The forwarders statement now takes an optional port. [RT #418] 709. [bug] ANY or SIG queries for data with a TTL of 0 would return SERVFAIL. [RT #620] 708. [bug] When building with --with-openssl, the openssl headers included with BIND 9 should not be used. [RT #702] 707. [func] The "filename" argument to named-checkzone is no longer optional, to reduce confusion. [RT #612] 706. [bug] Zones with an explicit "allow-update { none; };" were considered dynamic and therefore not reloaded on SIGHUP or "rndc reload". 705. [port] Work out resource limit type for use where rlim_t is not available. [RT #695] 704. [port] RLIMIT_NOFILE is not available on all platforms. [RT #695] 703. [port] sys/select.h is needed on older platforms. [RT #695] 702. [func] If the address 0.0.0.0 is seen in resolv.conf, use 127.0.0.1 instead. [RT #693] 701. [func] Root hints are now fully optional. Class IN views use compiled-in hints by default, as before. Non-IN views with no root hints now provide authoritative service but not recursion. A warning is logged if a view has neither root hints nor authoritative data for the root. [RT #696] 700. [bug] $GENERATE range check was wrong. [RT #688] 699. [bug] The lexer mishandled empty quoted strings. [RT #694] 698. [bug] Aborting nsupdate with ^C would lead to several race conditions. 697. [bug] nsupdate was not compatible with the undocumented BIND 8 behavior of ignoring TTLs in "update delete" commands. [RT #693] 696. [bug] lwresd would die with an assertion failure when passed a zero-length name. [RT #692] 695. [bug] If the resolver attempted to query a blackholed or bogus server, the resolution would fail immediately. 694. [bug] $GENERATE did not produce the last entry. [RT #682, #683] 693. [bug] An empty lwres statement in named.conf caused the server to crash while loading. 692. [bug] Deal with systems that have getaddrinfo() but not gai_strerror(). [RT #679] 691. [bug] Configuring per-view forwarders caused an assertion failure. [RT #675, #734] 690. [func] $GENERATE now supports DNAME. [RT #654] 689. [doc] man pages are now installed. [RT #210] 688. [func] "make tags" now works on systems with the "Exuberant Ctags" etags. 687. [bug] Only say we have IPv6, with sufficient functionality, if it has actually been tested. [RT #586] 686. [bug] dig and nslookup can now be properly aborted during blocking operations. [RT #568] 685. [bug] nslookup should use the search list/domain options from resolv.conf by default. [RT #405, #630] 684. [bug] Memory leak with view forwarders. [RT #656] 683. [bug] File descriptor leak in isc_lex_openfile(). 682. [bug] nslookup displayed SOA records incorrectly. [RT #665] 681. [bug] $GENERATE specifying output format was broken. [RT #653] 680. [bug] dns_rdata_fromstruct() mishandled options bigger than 255 octets. 679. [bug] $INCLUDE could leak memory and file descriptors on reload. [RT #639] 678. [bug] "transfer-format one-answer;" could trigger an assertion failure. [RT #646] 677. [bug] dnssec-signzone would occasionally use the wrong ttl for database operations and fail. [RT #643] 676. [bug] Log messages about lame servers to category 'lame-servers' rather than 'resolver', so as not to be gratuitously incompatible with BIND 8. 675. [bug] TKEY queries could cause the server to leak memory. 674. [func] Allow messages to be TSIG signed / verified using a offset from the current time. 673. [func] The server can now convert RFC1886-style recursive lookup requests into RFC2874-style lookups, when enabled using the new option "allow-v6-synthesis". 672. [bug] The wrong time was in the "time signed" field when replying with BADTIME error. 671. [bug] The message code was failing to parse a message with no question section and a TSIG record. [RT #628] 670. [bug] The lwres replacements for getaddrinfo and getipnodebyname didn't properly check for the existence of the sockaddr sa_len field. 669. [bug] dnssec-keygen now makes the public key file non-world-readable for symmetric keys. [RT #403] 668. [func] named-checkzone now reports multiple errors in master files. 667. [bug] On Linux, running named with the -u option and a non-world-readable configuration file didn't work. [RT #626] 666. [bug] If a request sent by dig is longer than 512 bytes, use TCP. 665. [bug] Signed responses were not sent when the size of the TSIG + question exceeded the maximum message size. [RT #628] 664. [bug] The t_tasks and t_timers module tests are now skipped when building without threads, since they require threads. 663. [func] Accept a size_spec, not just an integer, in the (unimplemented and ignored) max-ixfr-log-size option for compatibility with recent versions of BIND 8. [RT #613] 662. [bug] dns_rdata_fromtext() failed to log certain errors. 661. [bug] Certain UDP IXFR requests caused an assertion failure (mpctx->allocated == 0). [RT #355, #394, #623] 660. [port] Detect multiple CPUs on HP-UX and IRIX. 659. [performance] Rewrite the name compression code to be much faster. 658. [cleanup] Remove all vestiges of 16 bit global compression. 657. [bug] When a listen-on statement in an lwres block does not specify a port, use 921, not 53. Also update the listen-on documentation. [RT #616] 656. [func] Treat an unescaped newline in a quoted string as an error. This means that TXT records with missing close quotes should have meaningful errors printed. 655. [bug] Improve error reporting on unexpected eof when loading zones. [RT #611] 654. [bug] Origin was being forgotten in TCP retries in dig. [RT #574] 653. [bug] +defname option in dig was reversed in sense. [RT #549] 652. [bug] zone_saveunique() did not report the new name. 651. [func] The AD bit in responses now has the meaning specified in . 650. [bug] SIG(0) records were being generated and verified incorrectly. [RT #606] 649. [bug] It was possible to join to an already running fctx after it had "cloned" its events, but before it sent them. In this case, the event of the newly joined fetch would not contain the answer, and would trigger the INSIST() in fctx_sendevents(). In BIND 9.0, this bug did not trigger an INSIST(), but caused the fetch to fail with a SERVFAIL result. [RT #588, #597, #605, #607] 648. [port] Add support for pre-RFC2133 IPv6 implementations. 647. [bug] Resolver queries sent after following multiple referrals had excessively long retransmission timeouts due to incorrectly counting the referrals as "restarts". 646. [bug] The UnixWare ISC_PLATFORM_FIXIN6INADDR fix in isc/net.h didn't _cleanly_ fix the problem it was trying to fix. 645. [port] BSD/OS 3.0 needs pthread_init(). [RT #603] 644. [bug] #622 needed more work. [RT #562] 643. [bug] xfrin error messages made more verbose, added class of the zone. [RT #599] 642. [bug] Break the exit_check() race in the zone module. [RT #598] --- 9.1.0b2 released --- 641. [bug] $GENERATE caused a uninitialized link to be used. [RT #595] 640. [bug] Memory leak in error path could cause "mpctx->allocated == 0" failure. [RT #584] 639. [bug] Reading entropy from the keyboard would sometimes fail. [RT #591] 638. [port] lib/isc/random.c needed to explicitly include time.h to get a prototype for time() when pthreads was not being used. [RT #592] 637. [port] Use isc_u?int64_t instead of (unsigned) long long in lib/isc/print.c. Also allow lib/isc/print.c to be compiled even if the platform does not need it. [RT #592] 636. [port] Shut up MSVC++ about a possible loss of precision in the ISC__BUFFER_PUTUINT*() macros. [RT #592] 635. [bug] Reloading a server with a configured blackhole list would cause an assertion. [RT #590] 634. [bug] A log file will completely stop being written when it reaches the maximum size in all cases, not just when versioning is also enabled. [RT #570] 633. [port] Cope with rlim_t missing on BSD/OS systems. [RT #575] 632. [bug] The index array of the journal file was corrupted as it was written to disk. 631. [port] Build without thread support on systems without pthreads. 630. [bug] Locking failure in zone code. [RT #582] 629. [bug] 9.1.0b1 dereferenced a null pointer and crashed when responding to a UDP IXFR request. 628. [bug] If the root hints contained only AAAA addresses, named would be unable to perform resolution. 627. [bug] The EDNS0 blackhole detection code of change 324 waited for three retransmissions to each server, which takes much too long when a domain has many name servers and all of them drop EDNS0 queries. Now we retry without EDNS0 after three consecutive timeouts, even if they are all from different servers. [RT #143] 626. [bug] The lightweight resolver daemon no longer crashes when asked for a SIG rrset. [RT #558] 625. [func] Zones now inherit their class from the enclosing view. 624. [bug] The zone object could get timer events after it had been destroyed, causing a server crash. [RT #571] 623. [func] Added "named-checkconf" and "named-checkzone" program for syntax checking named.conf files and zone files, respectively. 622. [bug] A canceled request could be destroyed before dns_request_destroy() was called. [RT #562] 621. [port] Disable IPv6 at runtime if IPv6 sockets are unusable. This mostly affects Red Hat Linux 7.0, which has conflicts between libc and the kernel. 620. [bug] dns_master_load*inc() now require 'task' and 'load' to be non-null. Also 'done' will not be called if dns_master_load*inc() fails immediately. [RT #565] 619. [placeholder] 618. [bug] Queries to a signed zone could sometimes cause an assertion failure. 617. [bug] When using dynamic update to add a new RR to an existing RRset with a different TTL, the journal entries generated from the update did not include explicit deletions and re-additions of the existing RRs to update their TTL to the new value. 616. [func] dnssec-signzone -t output now includes performance statistics. 615. [bug] dnssec-signzone did not like child keysets signed by multiple keys. 614. [bug] Checks for uninitialized link fields were prone to false positives, causing assertion failures. The checks are now disabled by default and may be re-enabled by defining ISC_LIST_CHECKINIT. 613. [bug] "rndc reload zone" now reloads primary zones. It previously only updated slave and stub zones, if an SOA query indicated an out of date serial. 612. [cleanup] Shutup a ridiculously noisy HP-UX compiler that complains relentlessly about how its treatment of 'const' has changed as well as how casting sometimes tightens alignment constraints. 611. [func] allow-notify can be used to permit processing of notify messages from hosts other than a slave's masters. 610. [func] rndc dumpdb is now supported. 609. [bug] getrrsetbyname() would crash lwresd if the server found more SIGs than answers. [RT #554] 608. [func] dnssec-signzone now adds a comment to the zone with the time the file was signed. 607. [bug] nsupdate would fail if it encountered a CNAME or DNAME in a response to an SOA query. [RT #515] 606. [bug] Compiling with --disable-threads failed due to isc_thread_self() being incorrectly defined as an integer rather than a function. 605. [func] New function isc_lex_getlasttokentext(). 604. [bug] The named.conf parser could print incorrect line numbers when long comments were present. 603. [bug] Make dig handle multiple types or classes on the same query more correctly. 602. [func] Cope automatically with UnixWare's broken IN6_IS_ADDR_* macros. [RT #539] 601. [func] Return a non-zero exit code if an update fails in nsupdate. 600. [bug] Reverse lookups sometimes failed in dig, etc... 599. [func] Added four new functions to the libisc log API to support i18n messages. isc_log_iwrite(), isc_log_ivwrite(), isc_log_iwrite1() and isc_log_ivwrite1() were added. 598. [bug] An update-policy statement would cause the server to assert while loading. [RT #536] 597. [func] dnssec-signzone is now multi-threaded. 596. [bug] DNS_RDATASLAB_FORCE and DNS_RDATASLAB_EXACT are not mutually exclusive. 595. [port] On Linux 2.2, socket() returns EINVAL when it should return EAFNOSUPPORT. Work around this. [RT #531] 594. [func] sdb drivers are now assumed to not be thread-safe unless the DNS_SDBFLAG_THREADSAFE flag is supplied. 593. [bug] If a secure zone was missing all its NXTs and a dynamic update was attempted, the server entered an infinite loop. 592. [bug] The sig-validity-interval option now specifies a number of days, not seconds. This matches the documentation. [RT #529] --- 9.1.0b1 released --- 591. [bug] Work around non-reentrancy in openssl by disabling pre-computation in keys. 590. [doc] There are now man pages for the lwres library in doc/man/lwres. 589. [bug] The server could deadlock if a zone was updated while being transferred out. 588. [bug] ctx->in_use was not being correctly initialized when when pushing a file for $INCLUDE. [RT #523] 587. [func] A warning is now printed if the "allow-update" option allows updates based on the source IP address, to alert users to the fact that this is insecure and becoming increasingly so as servers capable of update forwarding are being deployed. 586. [bug] multiple views with the same name were fatal. [RT #516] 585. [func] dns_db_addrdataset() and dns_rdataslab_merge() now support 'exact' additions in a similar manner to dns_db_subtractrdataset() and dns_rdataslab_subtract(). 584. [func] You can now say 'notify explicit'; to suppress notification of the servers listed in NS records and notify only those servers listed in the 'also-notify' option. 583. [func] "rndc querylog" will now toggle logging of queries, like "ndc querylog" in BIND 8. 582. [bug] dns_zone_idetach() failed to lock the zone. [RT #199, #463] 581. [bug] log severity was not being correctly processed. [RT #485] 580. [func] Ignore trailing garbage on incoming DNS packets, for interoperability with broken server implementations. [RT #491] 579. [bug] nsupdate did not take a filename to read update from. [RT #492] 578. [func] New config option "notify-source", to specify the source address for notify messages. 577. [func] Log illegal RDATA combinations. e.g. multiple singleton types, cname and other data. 576. [doc] isc_log_create() description did not match reality. 575. [bug] isc_log_create() was not setting internal state correctly to reflect the default channels created. 574. [bug] TSIG signed queries sent by the resolver would fail to have their responses validated and would leak memory. 573. [bug] The journal files of IXFRed slave zones were inadvertently discarded on server reload, causing "journal out of sync with zone" errors on subsequent reloads. [RT #482] 572. [bug] Quoted strings were not accepted as key names in address match lists. 571. [bug] It was possible to create an rdataset of singleton type which had more than one rdata. [RT #154] [RT #279] 570. [bug] rbtdb.c allowed zones containing nodes which had both a CNAME and "other data". [RT #154] 569. [func] The DNSSEC AD bit will not be set on queries which have not requested a DNSSEC response. 568. [func] Add sample simple database drivers in contrib/sdb. 567. [bug] Setting the zone transfer timeout to zero caused an assertion failure. [RT #302] 566. [func] New public function dns_timer_setidle(). 565. [func] Log queries more like BIND 8: query logging is now done to category "queries", level "info". [RT #169] 564. [func] Add sortlist support to lwresd. 563. [func] New public functions dns_rdatatype_format() and dns_rdataclass_format(), for convenient formatting of rdata type/class mnemonics in log messages. 562. [cleanup] Moved lib/dns/*conf.c to bin/named where they belong. 561. [func] The 'datasize', 'stacksize', 'coresize' and 'files' clauses of the options{} statement are now implemented. 560. [bug] dns_name_split did not properly the resulting prefix when a maximal length bitstring label was split which was preceded by another bitstring label. [RT #429] 559. [bug] dns_name_split did not properly create the suffix when splitting within a maximal length bitstring label. 558. [func] New functions, isc_resource_getlimit and isc_resource_setlimit. 557. [func] Symbolic constants for libisc integral types. 556. [func] The DNSSEC OK bit in the EDNS extended flags is now implemented. Responses to queries without this bit set will not contain any DNSSEC records. 555. [bug] A slave server attempting a zone transfer could crash with an assertion failure on certain malformed responses from the master. [RT #457] 554. [bug] In some cases, not all of the dnssec tools were properly installed. 553. [bug] Incoming zone transfers deferred due to quota were not started when quota was increased but only when a transfer in progress finished. [RT #456] 552. [bug] We were not correctly detecting the end of all c-style comments. [RT #455] 551. [func] Implemented the 'sortlist' option. 550. [func] Support unknown rdata types and classes. 549. [bug] "make" did not immediately abort the build when a subdirectory make failed [RT #450]. 548. [func] The lexer now ungets tokens more correctly. 547. [placeholder] 546. [func] Option 'lame-ttl' is now implemented. 545. [func] Name limit and counting options removed from dig; they didn't work properly, and cannot be correctly implemented without significant changes. 544. [func] Add statistics option, enable statistics-file option, add RNDC option "dump-statistics" to write out a query statistics file. 543. [doc] The 'port' option is now documented. 542. [func] Add support for update forwarding as required for full compliance with RFC2136. It is turned off by default and can be enabled using the 'allow-update-forwarding' option. 541. [func] Add bogus server support. 540. [func] Add dialup support. 539. [func] Support the blackhole option. 538. [bug] fix buffer overruns by 1 in lwres_getnameinfo(). 537. [placeholder] 536. [func] Use transfer-source{-v6} when sending refresh queries. Transfer-source{-v6} now take a optional port parameter for setting the UDP source port. The port parameter is ignored for TCP. 535. [func] Use transfer-source{-v6} when forwarding update requests. 534. [func] Ancestors have been removed from RBT chains. Ancestor information can be discerned via node parent pointers. 533. [func] Incorporated name hashing into the RBT database to improve search speed. 532. [func] Implement DNS UPDATE pseudo records using DNS_RDATA_UPDATE flag. 531. [func] Rdata really should be initialized before being assigned to (dns_rdata_fromwire(), dns_rdata_fromtext(), dns_rdata_clone(), dns_rdata_fromregion()), check that it is. 530. [func] New function dns_rdata_invalidate(). 529. [bug] 521 contained a bug which caused zones to always reload. [RT #410] 528. [func] The ISC_LIST_XXXX macros now perform sanity checks on their arguments. ISC_LIST_XXXXUNSAFE can be use to skip the checks however use with caution. 527. [func] New function dns_rdata_clone(). 526. [bug] nsupdate incorrectly refused to add RRs with a TTL of 0. 525. [func] New arguments 'options' for dns_db_subtractrdataset(), and 'flags' for dns_rdataslab_subtract() allowing you to request that the RR's must exist prior to deletion. DNS_R_NOTEXACT is returned if the condition is not met. 524. [func] The 'forward' and 'forwarders' statement in non-forward zones should work now. 523. [doc] The source to the Administrator Reference Manual is now an XML file using the DocBook DTD, and is included in the distribution. The plain text version of the ARM is temporarily unavailable while we figure out how to generate readable plain text from the XML. 522. [func] The lightweight resolver daemon can now use a real configuration file, and its functionality can be provided by a name server. Also, the -p and -P options to lwresd have been reversed. 521. [bug] Detect master files which contain $INCLUDE and always reload. [RT #196] 520. [bug] Upgraded libtool to 1.3.5, which makes shared library builds almost work on AIX (and possibly others). 519. [bug] dns_name_split() would improperly split some bitstring labels, zeroing a few of the least significant bits in the prefix part. When such an improperly created prefix was returned to the RBT database, the bogus label was dutifully stored, corrupting the tree. [RT #369] 518. [bug] The resolver did not realize that a DNAME which was "the answer" to the client's query was "the answer", and such queries would fail. [RT #399] 517. [bug] The resolver's DNAME code would trigger an assertion if there was more than one DNAME in the chain. [RT #399] 516. [bug] Cache lookups which had a NULL node pointer, e.g. those by dns_view_find(), and which would match a DNAME, would trigger an INSIST(!search.need_cleanup) assertion. [RT #399] 515. [bug] The ssu table was not being attached / detached by dns_zone_[sg]etssutable. [RT #397] 514. [func] Retry refresh and notify queries if they timeout. [RT #388] 513. [func] New functionality added to rdnc and server to allow individual zones to be refreshed or reloaded. 512. [bug] The zone transfer code could throw an exception with an invalid IXFR stream. 511. [bug] The message code could throw an assertion on an out of memory failure. [RT #392] 510. [bug] Remove spurious view notify warning. [RT #376] 509. [func] Add support for write of zone files on shutdown. 508. [func] dns_message_parse() can now do a best-effort attempt, which should allow dig to print more invalid messages. 507. [func] New functions dns_zone_flush(), dns_zt_flushanddetach() and dns_view_flushanddetach(). 506. [func] Do not fail to start on errors in zone files. 505. [bug] nsupdate was printing "unknown result code". [RT #373] 504. [bug] The zone was not being marked as dirty when updated via IXFR. 503. [bug] dumptime was not being set along with DNS_ZONEFLG_NEEDDUMP. 502. [func] On a SERVFAIL reply, DiG will now try the next server in the list, unless the +fail option is specified. 501. [bug] Incorrect port numbers were being displayed by nslookup. [RT #352] 500. [func] Nearly useless +details option removed from DiG. 499. [func] In DiG, specifying a class with -c or type with -t changes command-line parsing so that classes and types are only recognized if following -c or -t. This allows hosts with the same name as a class or type to be looked up. 498. [doc] There is now a man page for "dig" in doc/man/bin/dig.1. 497. [bug] The error messages printed when an IP match list contained a network address with a nonzero host part where not sufficiently detailed. [RT #365] 496. [bug] named didn't sanity check numeric parameters. [RT #361] 495. [bug] nsupdate was unable to handle large records. [RT #368] 494. [func] Do not cache NXDOMAIN responses for SOA queries. 493. [func] Return non-cachable (ttl = 0) NXDOMAIN responses for SOA queries. This makes it easier to locate the containing zone without polluting intermediate caches. 492. [bug] attempting to reload a zone caused the server fail to shutdown cleanly. [RT #360] 491. [bug] nsupdate would segfault when sending certain prerequisites with empty RDATA. [RT #356] 490. [func] When a slave/stub zone has not yet successfully obtained an SOA containing the zone's configured retry time, perform the SOA query retries using exponential backoff. [RT #337] 489. [func] The zone manager now has a "i/o" queue. 488. [bug] Locks weren't properly destroyed in some cases. 487. [port] flockfile() is not defined on all systems. 486. [bug] nslookup: "set all" and "server" commands showed the incorrect port number if a port other than 53 was specified. [RT #352] 485. [func] When dig had more than one server to query, it would send all of the messages at the same time. Add rate limiting of the transmitted messages. 484. [bug] When the server was reloaded after removing addresses from the named.conf "listen-on" statement, sockets were still listening on the removed addresses due to reference count loops. [RT #325] 483. [bug] nslookup: "set all" showed a "search" option but it was not settable. 482. [bug] nslookup: a plain "server" or "lserver" should be treated as a lookup. 481. [bug] nslookup:get_next_command() stack size could exceed per thread limit. 480. [bug] strtok() is not thread safe. [RT #349] 479. [func] The test suite can now be run by typing "make check" or "make test" at the top level. 478. [bug] "make install" failed if the directory specified with --prefix did not already exist. 477. [bug] The the isc-config.sh script could be installed before its directory was created. [RT #324] 476. [bug] A zone could expire while a zone transfer was in progress triggering a INSIST failure. [RT #329] 475. [bug] query_getzonedb() sometimes returned a non-null version on failure. This caused assertion failures when generating query responses where names subject to additional section processing pointed to a zone to which access had been denied by means of the allow-query option. [RT #336] 474. [bug] The mnemonic of the CHAOS class is CH according to RFC1035, but it was printed and read only as CHAOS. We now accept both forms as input, and print it as CH. [RT #305] 473. [bug] nsupdate overran the end of the list of name servers when no servers could be reached, typically causing it to print the error message "dns_request_create: not implemented". 472. [bug] Off-by-one error caused isc_time_add() to sometimes produce invalid time values. 471. [bug] nsupdate didn't compile on HP/UX 10.20 470. [func] $GENERATE is now supported. See also doc/misc/migration. 469. [bug] "query-source address * port 53;" now works. 468. [bug] dns_master_load*() failed to report file and line number in certain error conditions. 467. [bug] dns_master_load*() failed to log an error if pushfile() failed. 466. [bug] dns_master_load*() could return success when it failed. 465. [cleanup] Allow 0 to be set as an omapi_value_t value by omapi_value_storeint(). 464. [cleanup] Build with openssl's RSA code instead of dnssafe. 463. [bug] nsupdate sent malformed SOA queries to the second and subsequent name servers in resolv.conf if the query sent to the first one failed. 462. [bug] --disable-ipv6 should work now. 461. [bug] Specifying an unknown key in the "keys" clause of the "controls" statement caused a NULL pointer dereference. [RT #316] 460. [bug] Much of the DNSSEC code only worked with class IN. 459. [bug] Nslookup processed the "set" command incorrectly. 458. [bug] Nslookup didn't properly check class and type values. [RT #305] 457. [bug] Dig/host/hslookup didn't properly handle connect timeouts in certain situations, causing an unnecessary warning message to be printed. 456. [bug] Stub zones were not resetting the refresh and expire counters, loadtime or clearing the DNS_ZONE_REFRESH (refresh in progress) flag upon successful update. This disabled further refreshing of the stub zone, causing it to eventually expire. [RT #300] 455. [doc] Document IPv4 prefix notation does not require a dotted decimal quad but may be just dotted decimal. 454. [bug] Enforce dotted decimal and dotted decimal quad where documented as such in named.conf. [RT #304, RT #311] 453. [bug] Warn if the obsolete option "maintain-ixfr-base" is specified in named.conf. [RT #306] 452. [bug] Warn if the unimplemented option "statistics-file" is specified in named.conf. [RT #301] 451. [func] Update forwarding implemented. 450. [func] New function ns_client_sendraw(). 449. [bug] isc_bitstring_copy() only works correctly if the two bitstrings have the same lsb0 value, but this requirement was not documented, nor was there a REQUIRE for it. 448. [bug] Host output formatting change, to match v8. [RT #255] 447. [bug] Dig didn't properly retry in TCP mode after a truncated reply. [RT #277] 446. [bug] Confusing notify log message. [RT #298] 445. [bug] Doing a 0 bit isc_bitstring_copy() of an lsb0 bitstring triggered a REQUIRE statement. The REQUIRE statement was incorrect. [RT #297] 444. [func] "recursion denied" messages are always logged at debug level 1, now, rather than sometimes at ERROR. This silences these warnings in the usual case, where some clients set the RD bit in all queries. 443. [bug] When loading a master file failed because of an unrecognized RR type name, the error message did not include the file name and line number. [RT #285] 442. [bug] TSIG signed messages that did not match any view crashed the server. [RT #290] 441. [bug] Nodes obscured by a DNAME were inaccessible even when DNS_DBFIND_GLUEOK was set. 440. [func] New function dns_zone_forwardupdate(). 439. [func] New function dns_request_createraw(). 438. [func] New function dns_message_getrawmessage(). 437. [func] Log NOTIFY activity to the notify channel. 436. [bug] If recvmsg() returned EHOSTUNREACH or ENETUNREACH, which sometimes happens on Linux, named would enter a busy loop. Also, unexpected socket errors were not logged at a high enough logging level to be useful in diagnosing this situation. [RT #275] 435. [bug] dns_zone_dump() overwrote existing zone files rather than writing to a temporary file and renaming. This could lead to empty or partial zone files being left around in certain error conditions involving the initial transfer of a slave zone, interfering with subsequent server startup. [RT #282] 434. [func] New function isc_file_isabsolute(). 433. [func] isc_base64_decodestring() now accepts newlines within the base64 data. This makes it possible to break up the key data in a "trusted-keys" statement into multiple lines. [RT #284] 432. [func] Added refresh/retry jitter. The actual refresh/ retry time is now a random value between 75% and 100% of the configured value. 431. [func] Log at ISC_LOG_INFO when a zone is successfully loaded. 430. [bug] Rewrote the lightweight resolver client management code to handle shutdown correctly and general cleanup. 429. [bug] The space reserved for a TSIG record in a response was 2 bytes too short, leading to message generation failures. 428. [bug] rbtdb.c:find_closest_nxt() erroneously returned DNS_R_BADDB for nodes which had neither NXT nor SIG NXT (e.g. glue). This could cause SERVFAILs when generating negative responses in a secure zone. 427. [bug] Avoid going into an infinite loop when the validator gets a negative response to a key query where the records are signed by the missing key. 426. [bug] Attempting to generate an oversized RSA key could cause dnssec-keygen to dump core. 425. [bug] Warn about the auth-nxdomain default value change if there is no auth-nxdomain statement in the config file. [RT #287] 424. [bug] notify_createmessage() could trigger an assertion failure when creating the notify message failed, e.g. due to corrupt zones with multiple SOA records. [RT #279] 423. [bug] When responding to a recursive query, errors that occur after following a CNAME should cause the query to fail. [RT #274] 422. [func] get rid of isc_random_t, and make isc_random_get() and isc_random_jitter() use rand() internally instead of local state. Note that isc_random_*() functions are only for weak, non-critical "randomness" such as timing jitter and such. 421. [bug] nslookup would exit when given a blank line as input. 420. [bug] nslookup failed to implement the "exit" command. 419. [bug] The certificate type PKIX was misspelled as SKIX. 418. [bug] At debug levels >= 10, getting an unexpected socket receive error would crash the server while trying to log the error message. 417. [func] Add isc_app_block() and isc_app_unblock(), which allow an application to handle signals while blocking. 416. [bug] Slave zones with no master file tried to use a NULL pointer for a journal file name when they received an IXFR. [RT #273] 415. [bug] The logging code leaked file descriptors. 414. [bug] Server did not shut down until all incoming zone transfers were finished. 413. [bug] Notify could attempt to use the zone database after it had been unloaded. [RT #267] 412. [bug] named -v didn't print the version. 411. [bug] A typo in the HS A code caused an assertion failure. 410. [bug] lwres_gethostbyname() and company set lwres_h_errno to a random value on success. 409. [bug] If named was shut down early in the startup process, ns_omapi_shutdown() would attempt to lock an uninitialized mutex. [RT #262] 408. [bug] stub zones could leak memory and reference counts if all the masters were unreachable. 407. [bug] isc_rwlock_lock() would needlessly block readers when it reached the read quota even if no writers were waiting. 406. [bug] Log messages were occasionally lost or corrupted due to a race condition in isc_log_doit(). 405. [func] Add support for selective forwarding (forward zones) 404. [bug] The request library didn't completely work with IPv6. 403. [bug] "host" did not use the search list. 402. [bug] Treat undefined acls as errors, rather than warning and then later throwing an assertion. [RT #252] 401. [func] Added simple database API. 400. [bug] SIG(0) signing and verifying was done incorrectly. [RT #249] 399. [bug] When reloading the server with a config file containing a syntax error, it could catch an assertion failure trying to perform zone maintenance on, or sending notifies from, tentatively created zones whose views were never fully configured and lacked an address database and request manager. 398. [bug] "dig" sometimes caught an assertion failure when using TSIG, depending on the key length. 397. [func] Added utility functions dns_view_gettsig() and dns_view_getpeertsig(). 396. [doc] There is now a man page for "nsupdate" in doc/man/bin/nsupdate.8. 395. [bug] nslookup printed incorrect RR type mnemonics for RRs of type >= 21 [RT #237]. 394. [bug] Current name was not propagated via $INCLUDE. 393. [func] Initial answer while loading (awl) support. Entry points: dns_master_loadfileinc(), dns_master_loadstreaminc(), dns_master_loadbufferinc(). Note: calls to dns_master_load*inc() should be rate be rate limited so as to not use up all file descriptors. 392. [func] Add ISC_R_FAMILYNOSUPPORT. Returned when OS does not support the given address family requested. 391. [clarity] ISC_R_FAMILY -> ISC_R_FAMILYMISMATCH. 390. [func] The function dns_zone_setdbtype() now takes an argc/argv style vector of words and sets both the zone database type and its arguments, making the functions dns_zone_adddbarg() and dns_zone_cleardbargs() unnecessary. 389. [bug] Attempting to send a request over IPv6 using dns_request_create() on a system without IPv6 support caused an assertion failure [RT #235]. 388. [func] dig and host can now do reverse ipv6 lookups. 387. [func] Add dns_byaddr_createptrname(), which converts an address into the name used by a PTR query. 386. [bug] Missing strdup() of ACL name caused random ACL matching failures [RT #228]. 385. [cleanup] Removed functions dns_zone_equal(), dns_zone_print(), and dns_zt_print(). 384. [bug] nsupdate was incorrectly limiting TTLs to 65535 instead of 2147483647. 383. [func] When writing a master file, print the SOA and NS records (and their SIGs) before other records. 382. [bug] named -u failed on many Linux systems where the libc provided kernel headers do not match the current kernel. 381. [bug] Check for IPV6_RECVPKTINFO and use it instead of IPV6_PKTINFO if found. [RT #229] 380. [bug] nsupdate didn't work with IPv6. 379. [func] New library function isc_sockaddr_anyofpf(). 378. [func] named and lwresd will log the command line arguments they were started with in the "starting ..." message. 377. [bug] When additional data lookups were refused due to "allow-query", the databases were still being attached causing reference leaks. 376. [bug] The server should always use good entropy when performing cryptographic functions needing entropy. 375. [bug] Per-zone "allow-query" did not properly override the view/global one for CNAME targets and additional data [RT #220]. 374. [bug] SOA in authoritative negative responses had wrong TTL. 373. [func] nslookup is now installed by "make install". 372. [bug] Deal with Microsoft DNS servers appending two bytes of garbage to zone transfer requests. 371. [bug] At high debug levels, doing an outgoing zone transfer of a very large RRset could cause an assertion failure during logging. 370. [bug] The error messages for roll-forward failures were overly terse. 369. [func] Support new named.conf options, view and zone statements: max-retry-time, min-retry-time, max-refresh-time, min-refresh-time. 368. [func] Restructure the internal ".bind" view so that more zones can be added to it. 367. [bug] Allow proper selection of server on nslookup command line. 366. [func] Allow use of '-' batch file in dig for stdin. 365. [bug] nsupdate -k leaked memory. 364. [func] Added additional-from-{cache,auth} 363. [placeholder] 362. [bug] rndc no longer aborts if the configuration file is missing an options statement. [RT #209] 361. [func] When the RBT find or chain functions set the name and origin for a node that stores the root label the name is now set to an empty name, instead of ".", to simplify later use of the name and origin by dns_name_concatenate(), dns_name_totext() or dns_name_format(). 360. [func] dns_name_totext() and dns_name_format() now allow an empty name to be passed, which is formatted as "@". 359. [bug] dnssec-signzone occasionally signed glue records. 358. [cleanup] Rename the intermediate files used by the dnssec programs. 357. [bug] The zone file parser crashed if the argument to $INCLUDE was a quoted string. 356. [cleanup] isc_task_send no longer requires event->sender to be non-null. 355. [func] Added isc_dir_createunique(), similar to mkdtemp(). 354. [doc] Man pages for the dnssec tools are now included in the distribution, in doc/man/dnssec. 353. [bug] double increment in lwres/gethost.c:copytobuf(). [RT #187] 352. [bug] Race condition in dns_client_t startup could cause an assertion failure. 351. [bug] Constructing a response with rcode SERVFAIL to a TSIG signed query could crash the server. 350. [bug] Also-notify lists specified in the global options block were not correctly reference counted, causing a memory leak. 349. [bug] Processing a query with the CD bit set now works as expected. 348. [func] New boolean named.conf options 'additional-from-auth' and 'additional-from-cache' now supported in view and global options statement. 347. [bug] Don't crash if an argument is left off options in dig. 346. [placeholder] 345. [bug] Large-scale changes/cleanups to dig: * Significantly improve structure handling * Don't pre-load entire batch files * Add name/rr counting/limiting * Fix SIGINT handling * Shorten timeouts to match v8's behavior 344. [bug] When shutting down, lwresd sometimes tried to shut down its client tasks twice, triggering an assertion. 343. [bug] Although zone maintenance SOA queries and notify requests were signed with TSIG keys when configured for the server in case, the TSIG was not verified on the response. 342. [bug] The wrong name was being passed to dns_name_dup() when generating a TSIG key using TKEY. 341. [func] Support 'key' clause in named.conf zone masters statement to allow authentication via TSIG keys: masters { 10.0.0.1 port 5353 key "foo"; 10.0.0.2 ; }; 340. [bug] The top-level COPYRIGHT file was missing from the distribution. 339. [bug] DNSSEC validation of the response to an ANY query at a name with a CNAME RR in a secure zone triggered an assertion failure. 338. [bug] lwresd logged to syslog as named, not lwresd. 337. [bug] "dig" did not recognize "nsap-ptr" as an RR type on the command line. 336. [bug] "dig -f" used 64 k of memory for each line in the file. It now uses much less, though still proportionally to the file size. 335. [bug] named would occasionally attempt recursion when it was disallowed or undesired. 334. [func] Added hmac-md5 to libisc. 333. [bug] The resolver incorrectly accepted referrals to domains that were not parents of the query name, causing assertion failures. 332. [func] New function dns_name_reset(). 331. [bug] Only log "recursion denied" if RD is set. [RT #178] 330. [bug] Many debugging messages were partially formatted even when debugging was turned off, causing a significant decrease in query performance. 329. [func] omapi_auth_register() now takes a size_t argument for the length of a key's secret data. Previously OMAPI only stored secrets up to the first NUL byte. 328. [func] Added isc_base64_decodestring(). 327. [bug] rndc.conf parser wasn't correctly recognizing an IP address where a host specification was required. 326. [func] 'keys' in an 'inet' control statement is now required and must have at least one item in it. A "not supported" warning is now issued if a 'unix' control channel is defined. 325. [bug] isc_lex_gettoken was processing octal strings when ISC_LEXOPT_CNUMBER was not set. 324. [func] In the resolver, turn EDNS0 off if there is no response after a number of retransmissions. This is to allow queries some chance of succeeding even if all the authoritative servers of a zone silently discard EDNS0 requests instead of sending an error response like they ought to. 323. [bug] dns_rbt_findname() did not ignore empty rbt nodes. Because of this, servers authoritative for a parent and grandchild zone but not authoritative for the intervening child zone did not correctly issue referrals to the servers of the child zone. 322. [bug] Queries for KEY RRs are now sent to the parent server before the authoritative one, making DNSSEC insecurity proofs work in many cases where they previously didn't. 321. [bug] When synthesizing a CNAME RR for a DNAME response, query_addcname() failed to initialize the type and class of the CNAME dns_rdata_t, causing random failures. 320. [func] Multiple rndc changes: parses an rndc.conf file, uses authentication to talk to named, command line syntax changed. This will all be described in the ARM. 319. [func] The named.conf "controls" statement is now used to configure the OMAPI command channel. 318. [func] dns_c_ndcctx_destroy() could never return anything except ISC_R_SUCCESS; made it have void return instead. 317. [func] Use callbacks from libomapi to determine if a new connection is valid, and if a key requested to be used with that connection is valid. 316. [bug] Generate a warning if we detect an unexpected but treat as . 315. [bug] Handle non-empty blanks lines. [RT #163] 314. [func] The named.conf controls statement can now have more than one key specified for the inet clause. 313. [bug] When parsing resolv.conf, don't terminate on an error. Instead, parse as much as possible, but still return an error if one was found. 312. [bug] Increase the number of allowed elements in the resolv.conf search path from 6 to 8. If there are more than this, ignore the remainder rather than returning a failure in lwres_conf_parse. 311. [bug] lwres_conf_parse failed when the first line of resolv.conf was empty or a comment. 310. [func] Changes to named.conf "controls" statement (inet subtype only) - support "keys" clause controls { inet * port 1024 allow { any; } keys { "foo"; } } - allow "port xxx" to be left out of statement, in which case it defaults to omapi's default port of 953. 309. [bug] When sending a referral, the server did not look for name server addresses as glue in the zone holding the NS RRset in the case where this zone was not the same as the one where it looked for name server addresses as authoritative data. 308. [bug] Treat a SOA record not at top of zone as an error when loading a zone. [RT #154] 307. [bug] When canceling a query, the resolver didn't check for isc_socket_sendto() calls that did not yet have their completion events posted, so it could (rarely) end up destroying the query context and then want to use it again when the send event posted, triggering an assertion as it tried to cancel an already-canceled query. [RT #77] 306. [bug] Reading HMAC-MD5 private key files didn't work. 305. [bug] When reloading the server with a config file containing a syntax error, it could catch an assertion failure trying to perform zone maintenance on tentatively created zones whose views were never fully configured and lacked an address database. 304. [bug] If more than LWRES_CONFMAXNAMESERVERS servers are listed in resolv.conf, silently ignore them instead of returning failure. 303. [bug] Add additional sanity checks to differentiate a AXFR response vs a IXFR response. [RT #157] 302. [bug] In dig, host, and nslookup, MXNAME should be large enough to hold any legal domain name in presentation format + terminating NULL. 301. [bug] Uninitialized pointer in host:printmessage(). [RT #159] 300. [bug] Using both and didn't work on platforms lacking IPv6 because each included their own ipv6 header file for the missing definitions. Now each library's ipv6.h defines the wrapper symbol of the other (ISC_IPV6_H and LWRES_IPV6_H). 299. [cleanup] Get the user and group information before changing the root directory, so the administrator does not need to keep a copy of the user and group databases in the chroot'ed environment. Suggested by Hakan Olsson. 298. [bug] A mutex deadlock occurred during shutdown of the interface manager under certain conditions. Digital Unix systems were the most affected. 297. [bug] Specifying a key name that wasn't fully qualified in certain parts of the config file could cause an assertion failure. 296. [bug] "make install" from a separate build directory failed unless configure had been run in the source directory, too. 295. [bug] When invoked with type==CNAME and a message not constructed by dns_message_parse(), dns_message_findname() failed to find anything due to checking for attribute bits that are set only in dns_message_parse(). This caused an infinite loop when constructing the response to an ANY query at a CNAME in a secure zone. 294. [bug] If we run out of space in while processing glue when reading a master file and commit "current name" reverts to "name_current" instead of staying as "name_glue". 293. [port] Add support for FreeBSD 4.0 system tests. 292. [bug] Due to problems with the way some operating systems handle simultaneous listening on IPv4 and IPv6 addresses, the server no longer listens on IPv6 addresses by default. To revert to the previous behavior, specify "listen-on-v6 { any; };" in the config file. 291. [func] Caching servers no longer send outgoing queries over TCP just because the incoming recursive query was a TCP one. 290. [cleanup] +twiddle option to dig (for testing only) removed. 289. [cleanup] dig is now installed in $bindir instead of $sbindir. host is now installed in $bindir. (Be sure to remove any $sbindir/dig from a previous release.) 288. [func] rndc is now installed by "make install" into $sbindir. 287. [bug] rndc now works again as "rndc 127.1 reload" (for only that task). Parsing its configuration file and using digital signatures for authentication has been disabled until named supports the "controls" statement, post-9.0.0. 286. [bug] On Solaris 2, when named inherited a signal state where SIGHUP had the SIG_IGN action, SIGHUP would be ignored rather than causing the server to reload its configuration. 285. [bug] A change made to the dst API for beta4 inadvertently broke OMAPI's creation of a dst key from an incoming message, causing an assertion to be triggered. Fixed. 284. [func] The DNSSEC key generation and signing tools now generate randomness from keyboard input on systems that lack /dev/random. 283. [cleanup] The 'lwresd' program is now a link to 'named'. 282. [bug] The lexer now returns ISC_R_RANGE if parsed integer is too big for an unsigned long. 281. [bug] Fixed list of recognized config file category names. 280. [func] Add isc-config.sh, which can be used to more easily build applications that link with our libraries. 279. [bug] Private omapi function symbols shared between two or more files in libomapi.a were not namespace protected using the ISC convention of starting with the library name and two underscores ("omapi__"...) 278. [bug] bin/named/logconf.c:category_fromconf() didn't take note of when isc_log_categorybyname() wasn't able to find the category name and would then apply the channel list of the unknown category to all categories. 277. [bug] isc_log_categorybyname() and isc_log_modulebyname() would fail to find the first member of any category or module array apart from the internal defaults. Thus, for example, the "notify" category was improperly configured by named. 276. [bug] dig now supports maximum sized TCP messages. 275. [bug] The definition of lwres_gai_strerror() was missing the lwres_ prefix. 274. [bug] TSIG AXFR verify failed when talking to a BIND 8 server. 273. [func] The default for the 'transfer-format' option is now 'many-answers'. This will break zone transfers to BIND 4.9.5 and older unless there is an explicit 'one-answer' configuration. 272. [bug] The sending of large TCP responses was canceled in mid-transmission due to a race condition caused by the failure to set the client object's "newstate" variable correctly when transitioning to the "working" state. 271. [func] Attempt to probe the number of cpus in named if unspecified rather than defaulting to 1. 270. [func] Allow maximum sized TCP answers. 269. [bug] Failed DNSSEC validations could cause an assertion failure by causing clone_results() to be called with with hevent->node == NULL. 268. [doc] A plain text version of the Administrator Reference Manual is now included in the distribution, as doc/arm/Bv9ARM.txt. 267. [func] Nsupdate is now provided in the distribution. 266. [bug] zone.c:save_nsrrset() node was not initialized. 265. [bug] dns_request_create() now works for TCP. 264. [func] Dispatch can not take TCP sockets in connecting state. Set DNS_DISPATCHATTR_CONNECTED when calling dns_dispatch_createtcp() for connected TCP sockets or call dns_dispatch_starttcp() when the socket is connected. 263. [func] New logging channel type 'stderr' channel some-name { stderr; severity error; } 262. [bug] 'master' was not initialized in zone.c:stub_callback(). 261. [func] Add dns_zone_markdirty(). 260. [bug] Running named as a non-root user failed on Linux kernels new enough to support retaining capabilities after setuid(). 259. [func] New random-device and random-seed-file statements for global options block of named.conf. Both accept a single string argument. 258. [bug] Fixed printing of lwres_addr_t.address field. 257. [bug] The server detached the last zone manager reference too early, while it could still be in use by queries. This manifested itself as assertion failures during the shutdown process for busy name servers. [RT #133] 256. [func] isc_ratelimiter_t now has attach/detach semantics, and isc_ratelimiter_shutdown guarantees that the rate limiter is detached from its task. 255. [func] New function dns_zonemgr_attach(). 254. [bug] Suppress "query denied" messages on additional data lookups. --- 9.0.0b4 released --- 253. [func] resolv.conf parser now recognizes ';' and '#' as comments (anywhere in line, not just as the beginning). 252. [bug] resolv.conf parser mishandled masks on sortlists. It also aborted when an unrecognized keyword was seen, now it silently ignores the entire line. 251. [bug] lwresd caught an assertion failure on startup. 250. [bug] fixed handling of size+unit when value would be too large for internal representation. 249. [cleanup] max-cache-size config option now takes a size-spec like 'datasize', except 'default' is not allowed. 248. [bug] global lame-ttl option was not being printed when config structures were written out. 247. [cleanup] Rename cache-size config option to max-cache-size. 246. [func] Rename global option cachesize to cache-size and add corresponding option to view statement. 245. [bug] If an uncompressed name will take more than 255 bytes and the buffer is sufficiently long, dns_name_fromwire should return DNS_R_FORMERR, not ISC_R_NOSPACE. This bug caused cause the server to catch an assertion failure when it received a query for a name longer than 255 bytes. 244. [bug] empty named.conf file and empty options statement are now parsed properly. 243. [func] new cachesize option for named.conf 242. [cleanup] fixed incorrect warning about auth-nxdomain usage. 241. [cleanup] nscount and soacount have been removed from the dns_master_*() argument lists. 240. [func] databases now come in three flavours: zone, cache and stub. 239. [func] If ISC_MEM_DEBUG is enabled, the variable isc_mem_debugging controls whether messages are printed or not. 238. [cleanup] A few more compilation warnings have been quieted: + missing sigwait prototype on BSD/OS 4.0/4.0.1. + PTHREAD_ONCE_INIT unbraced initializer warnings on Solaris 2.8. + IN6ADDR_ANY_INIT unbraced initializer warnings on BSD/OS 4.*, Linux and Solaris 2.8. 237. [bug] If connect() returned ENOBUFS when the resolver was initiating a TCP query, the socket didn't get destroyed, and the server did not shut down cleanly. 236. [func] Added new listen-on-v6 config file statement. 235. [func] Consider it a config file error if a listen-on statement has an IPv6 address in it, or a listen-on-v6 statement has an IPv4 address in it. 234. [bug] Allow a trusted-key's first field (domain-name) be either a quoted or an unquoted string, instead of requiring a quoted string. 233. [cleanup] Convert all config structure integer values to unsigned integer (isc_uint32_t) to match grammar. 232. [bug] Allow slave zones to not have a file. 231. [func] Support new 'port' clause in config file options section. Causes 'listen-on', 'masters' and 'also-notify' statements to use its value instead of default (53). 230. [func] Replace the dst sign/verify API with a cleaner one. 229. [func] Support config file sig-validity-interval statement in options, views and zone statements (master zones only). 228. [cleanup] Logging messages in config module stripped of trailing period. 227. [cleanup] The enumerated identifiers dns_rdataclass_*, dns_rcode_*, dns_opcode_*, and dns_trust_* are also now cast to their appropriate types, as with dns_rdatatype_* in item number 225 below. 226. [func] dns_name_totext() now always prints the root name as '.', even when omit_final_dot is true. 225. [cleanup] The enumerated dns_rdatatype_* identifiers are now cast to dns_rdatatype_t via macros of their same name so that they are of the proper integral type wherever a dns_rdatatype_t is needed. 224. [cleanup] The entire project builds cleanly with gcc's -Wcast-qual and -Wwrite-strings warnings enabled, which is now the default when using gcc. (Warnings from confparser.c, because of yacc's code, are unfortunately to be expected.) 223. [func] Several functions were re-prototyped to qualify one or more of their arguments with "const". Similarly, several functions that return pointers now have those pointers qualified with const. 222. [bug] The global 'also-notify' option was ignored. 221. [bug] An uninitialized variable was sometimes passed to dns_rdata_freestruct() when loading a zone, causing an assertion failure. 220. [cleanup] Set the default outgoing port in the view, and set it in sockaddrs returned from the ADB. [31-May-2000 explorer] 219. [bug] Signed truncated messages more correctly follow the respective specs. 218. [func] When an rdataset is signed, its ttl is normalized based on the signature validity period. 217. [func] Also-notify and trusted-keys can now be used in the 'view' statement. 216. [func] The 'max-cache-ttl' and 'max-ncache-ttl' options now work. 215. [bug] Failures at certain points in request processing could cause the assertion INSIST(client->lockview == NULL) to be triggered. 214. [func] New public function isc_netaddr_format(), for formatting network addresses in log messages. 213. [bug] Don't leak memory when reloading the zone if an update-policy clause was present in the old zone. 212. [func] Added dns_message_get/settsigkey, to make TSIG key management reasonable. 211. [func] The 'key' and 'server' statements can now occur inside 'view' statements. 210. [bug] The 'allow-transfer' option was ignored for slave zones, and the 'transfers-per-ns' option was was ignored for all zones. 209. [cleanup] Upgraded openssl files to new version 0.9.5a 208. [func] Added ISC_OFFSET_MAXIMUM for the maximum value of an isc_offset_t. 207. [func] The dnssec tools properly use the logging subsystem. 206. [cleanup] dst now stores the key name as a dns_name_t, not a char *. 205. [cleanup] On IRIX, turn off the mostly harmless warnings 1692 ("prototyped function redeclared without prototype") and 1552 ("variable ... set but not used") when compiling in the lib/dns/sec/{dnssafe,openssl} directories, which contain code imported from outside sources. 204. [cleanup] On HP/UX, pass +vnocompatwarnings to the linker to quiet the warnings that "The linked output may not run on a PA 1.x system." 203. [func] notify and zone soa queries are now tsig signed when appropriate. 202. [func] isc_lex_getsourceline() changed from returning int to returning unsigned long, the type of its underlying counter. 201. [cleanup] Removed the test/sdig program, it has been replaced by bin/dig/dig. --- 9.0.0b3 released --- 200. [bug] Failures in sending query responses to clients (e.g., running out of network buffers) were not logged. 199. [bug] isc_heap_delete() sometimes violated the heap invariant, causing timer events not to be posted when due. 198. [func] Dispatch managers hold memory pools which any managed dispatcher may use. This allows us to avoid dipping into the memory context for most allocations. [19-May-2000 explorer] 197. [bug] When an incoming AXFR or IXFR completes, the zone's internal state is refreshed from the SOA data. [19-May-2000 explorer] 196. [func] Dispatchers can be shared easily between views and/or interfaces. [19-May-2000 explorer] 195. [bug] Including the NXT record of the root domain in a negative response caused an assertion failure. 194. [doc] The PDF version of the Administrator's Reference Manual is no longer included in the ISC BIND9 distribution. 193. [func] changed dst_key_free() prototype. 192. [bug] Zone configuration validation is now done at end of config file parsing, and before loading callbacks. 191. [func] Patched to compile on UnixWare 7.x. This platform is not directly supported by the ISC. 190. [cleanup] The DNSSEC tools have been moved to a separate directory dnssec/ and given the following new, more descriptive names: dnssec-keygen dnssec-signzone dnssec-signkey dnssec-makekeyset Their command line arguments have also been changed to be more consistent. dnssec-keygen now prints the name of the generated key files (sans extension) on standard output to simplify its use in automated scripts. 189. [func] isc_time_secondsastimet(), a new function, will ensure that the number of seconds in an isc_time_t does not exceed the range of a time_t, or return ISC_R_RANGE. Similarly, isc_time_now(), isc_time_nowplusinterval(), isc_time_add() and isc_time_subtract() now check the range for overflow/underflow. In the case of isc_time_subtract, this changed a calling requirement (ie, something that could generate an assertion) into merely a condition that returns an error result. isc_time_add() and isc_time_subtract() were void- valued before but now return isc_result_t. 188. [func] Log a warning message when an incoming zone transfer contains out-of-zone data. 187. [func] isc_ratelimiter_enqueue() has an additional argument 'task'. 186. [func] dns_request_getresponse() has an additional argument 'preserve_order'. 185. [bug] Fixed up handling of ISC_MEMCLUSTER_LEGACY. Several public functions did not have an isc__ prefix, and referred to functions that had previously been renamed. 184. [cleanup] Variables/functions which began with two leading underscores were made to conform to the ANSI/ISO standard, which says that such names are reserved. 183. [func] ISC_LOG_PRINTTAG option for log channels. Useful for logging the program name or other identifier. 182. [cleanup] New command-line parameters for dnssec tools 181. [func] Added dst_key_buildfilename and dst_key_parsefilename 180. [func] New isc_result_t ISC_R_RANGE. Supersedes DNS_R_RANGE. 179. [func] options named.conf statement *must* now come before any zone or view statements. 178. [func] Post-load of named.conf check verifies a slave zone has non-empty list of masters defined. 177. [func] New per-zone boolean: enable-zone yes | no ; intended to let a zone be disabled without having to comment out the entire zone statement. 176. [func] New global and per-view option: max-cache-ttl number 175. [func] New global and per-view option: additional-data internal | minimal | maximal; 174. [func] New public function isc_sockaddr_format(), for formatting socket addresses in log messages. 173. [func] Keep a queue of zones waiting for zone transfer quota so that a new transfer can be dispatched immediately whenever quota becomes available. 172. [bug] $TTL directive was sometimes missing from dumped master files because totext_ctx_init() failed to initialize ctx->current_ttl_valid. 171. [cleanup] On NetBSD systems, the mit-pthreads or unproven-pthreads library is now always used unless --with-ptl2 is explicitly specified on the configure command line. The --with-mit-pthreads option is no longer needed and has been removed. 170. [cleanup] Remove inter server consistency checks from zone, these should return as a separate module in 9.1. dns_zone_checkservers(), dns_zone_checkparents(), dns_zone_checkchildren(), dns_zone_checkglue(). Remove dns_zone_setadb(), dns_zone_setresolver(), dns_zone_setrequestmgr() these should now be found via the view. 169. [func] ratelimiter can now process N events per interval. 168. [bug] include statements in named.conf caused syntax errors due to not consuming the semicolon ending the include statement before switching input streams. 167. [bug] Make lack of masters for a slave zone a soft error. 166. [bug] Keygen was overwriting existing keys if key_id conflicted, now it will retry, and non-null keys with key_id == 0 are not generated anymore. Key was not able to generate NOAUTHCONF DSA key, increased RSA key size to 2048 bits. 165. [cleanup] Silence "end-of-loop condition not reached" warnings from Solaris compiler. 164. [func] Added functions isc_stdio_open(), isc_stdio_close(), isc_stdio_seek(), isc_stdio_read(), isc_stdio_write(), isc_stdio_flush(), isc_stdio_sync(), isc_file_remove() to encapsulate nonportable usage of errno and sync. 163. [func] Added result codes ISC_R_FILENOTFOUND and ISC_R_FILEEXISTS. 162. [bug] Ensure proper range for arguments to ctype.h functions. 161. [cleanup] error in yyparse prototype that only HPUX caught. 160. [cleanup] getnet*() are not going to be implemented at this stage. 159. [func] Redefinition of config file elements is now an error (instead of a warning). 158. [bug] Log channel and category list copy routines weren't assigning properly to output parameter. 157. [port] Fix missing prototype for getopt(). 156. [func] Support new 'database' statement in zone. database "quoted-string"; 155. [bug] ns_notify_start() was not detaching the found zone. 154. [func] The signer now logs libdns warnings to stderr even when not verbose, and in a nicer format. 153. [func] dns_rdata_tostruct() 'mctx' is now optional. If 'mctx' is NULL then you need to preserve the 'rdata' until you have finished using the structure as there may be references to the associated memory. If 'mctx' is non-NULL it is guaranteed that there are no references to memory associated with 'rdata'. dns_rdata_freestruct() must be called if 'mctx' was non-NULL and may safely be called if 'mctx' was NULL. 152. [bug] keygen dumped core if domain name argument was omitted from command line. 151. [func] Support 'disabled' statement in zone config (causes zone to be parsed and then ignored). Currently must come after the 'type' clause. 150. [func] Support optional ports in masters and also-notify statements: masters [ port xxx ] { y.y.y.y [ port zzz ] ; } 149. [cleanup] Removed unused argument 'olist' from dns_c_view_unsetordering(). 148. [cleanup] Stop issuing some warnings about some configuration file statements that were not implemented, but now are. 147. [bug] Changed yacc union size to be smaller for yaccs that put yacc-stack on the real stack. 146. [cleanup] More general redundant header file cleanup. Rather than continuing to itemize every header which changed, this changelog entry just notes that if a header file did not need another header file that it was including in order to provide its advertised functionality, the inclusion of the other header file was removed. See util/check-includes for how this was tested. 145. [cleanup] Added and ISC_LANG_BEGINDECLS/ ISC_LANG_ENDDECLS to header files that had function prototypes, and removed it from those that did not. 144. [cleanup] libdns header files too numerous to name were made to conform to the same style for multiple inclusion protection. 143. [func] Added function dns_rdatatype_isknown(). 142. [cleanup] does not need or . 141. [bug] Corrupt requests with multiple questions could cause an assertion failure. 140. [cleanup] does not need or . 139. [cleanup] now includes instead of and . 138. [cleanup] isc_strtouq moved from str.[ch] to string.[ch] and renamed isc_string_touint64. isc_strsep moved from strsep.c to string.c and renamed isc_string_separate. 137. [cleanup] , , , and made to conform to the same style for multiple inclusion protection. 136. [cleanup] , , and Win32's needed ISC_LANG_BEGINDECLS/ISC_LANG_ENDDECLS. 135. [cleanup] Win32's did not need or , now uses in place of , and needed ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS. 134. [cleanup] does not need . 133. [cleanup] needs . 132. [cleanup] does not need , but does need . 131. [cleanup] and need for ISC_R_* codes used in macros. 130. [cleanup] does not need or , and now includes instead of . 129. [bug] The 'default_debug' log channel was not set up when 'category default' was present in the config file 128. [cleanup] had ISC_LANG_BEGINDECLS instead of ISC_LANG_ENDDECLS at end of header. 127. [cleanup] The contracts for the comparison routines dns_name_fullcompare(), dns_name_compare(), dns_name_rdatacompare(), and dns_rdata_compare() now specify that the order value returned is < 0, 0, or > 0 instead of -1, 0, or 1. 126. [cleanup] and need . 125. [cleanup] , , , , , , and do not need . 124. [func] signer now imports parent's zone key signature and creates null keys/sets zone status bit for children when necessary 123. [cleanup] does not need . 122. [cleanup] does not need or . 121. [cleanup] does not need or . Multiple inclusion protection symbol fixed from ISC_SYMBOL_H to ISC_SYMTAB_H. isc_symtab_t moved to . 120. [cleanup] does not need , , , or . 119. [cleanup] structure definitions for generic rdata structures do not have _generic_ in their names. 118. [cleanup] libdns.a is now namespace-clean, on NetBSD, excepting YACC crust (yyparse, etc) [2000-apr-27 explorer] 117. [cleanup] libdns.a changes: dns_zone_clearnotify() and dns_zone_addnotify() are replaced by dns_zone_setnotifyalso(). dns_zone_clearmasters() and dns_zone_addmaster() are replaced by dns_zone_setmasters(). 116. [func] Added for isc_offset_t (aka off_t on Unix systems). 115. [port] Shut up the -Wmissing-declarations warning about 's __sputaux on BSD/OS pre-4.1. 114. [cleanup] does not need or . 113. [func] Utility programs dig and host added. 112. [cleanup] does not need . 111. [cleanup] does not need or . 110. [cleanup] does not need or . 109. [bug] "make depend" did nothing for bin/tests/{db,mem,sockaddr,tasks,timers}/. 108. [cleanup] DNS_SETBIT/DNS_GETBIT/DNS_CLEARBIT moved from to and renamed to DNS_BIT_SET/DNS_BIT_GET/DNS_BIT_CLEAR. 107. [func] Add keysigner and keysettool. 106. [func] Allow dnssec verifications to ignore the validity period. Used by several of the dnssec tools. 105. [doc] doc/dev/coding.html expanded with other implicit conventions the developers have used. 104. [bug] Made compress_add and compress_find static to lib/dns/compress.c. 103. [func] libisc buffer API changes for : Added: isc_buffer_base(b) (pointer) isc_buffer_current(b) (pointer) isc_buffer_active(b) (pointer) isc_buffer_used(b) (pointer) isc_buffer_length(b) (int) isc_buffer_usedlength(b) (int) isc_buffer_consumedlength(b) (int) isc_buffer_remaininglength(b) (int) isc_buffer_activelength(b) (int) isc_buffer_availablelength(b) (int) Removed: ISC_BUFFER_USEDCOUNT(b) ISC_BUFFER_AVAILABLECOUNT(b) isc_buffer_type(b) Changed names: isc_buffer_used(b, r) -> isc_buffer_usedregion(b, r) isc_buffer_available(b, r) -> isc_buffer_available_region(b, r) isc_buffer_consumed(b, r) -> isc_buffer_consumedregion(b, r) isc_buffer_active(b, r) -> isc_buffer_activeregion(b, r) isc_buffer_remaining(b, r) -> isc_buffer_remainingregion(b, r) Buffer types were removed, so the ISC_BUFFERTYPE_* macros are no more, and the type argument to isc_buffer_init and isc_buffer_allocate were removed. isc_buffer_putstr is now void (instead of isc_result_t) and requires that the caller ensure that there is enough available buffer space for the string. 102. [port] Correctly detect inet_aton, inet_pton and inet_ptop on BSD/OS 4.1. 101. [cleanup] Quieted EGCS warnings from lib/isc/print.c. 100. [cleanup] does not need or . isc_random_t moved to . 99. [cleanup] Rate limiter now has separate shutdown() and destroy() functions, and it guarantees that all queued events are delivered even in the shutdown case. 98. [cleanup] does not need or unless ISC_PLATFORM_NEEDVSNPRINTF is defined. 97. [cleanup] does not need or . 96. [cleanup] does not need . 95. [cleanup] does not need . 94. [cleanup] Some installed header files did not compile as C++. 93. [cleanup] does not need . 92. [cleanup] does not need , , or . 91. [cleanup] does not need or . 90. [cleanup] Removed unneeded ISC_LANG_BEGINDECLS/ISC_LANG_ENDDECLS from . 89. [cleanup] does not need . 88. [cleanup] does not need or . isc_interface_t and isc_interfaceiter_t moved to . 87. [cleanup] does not need , or . 86. [cleanup] isc_bufferlist_t moved from to . 85. [cleanup] does not need , , , or . 84. [func] allow-query ACL checks now apply to all data added to a response. 83. [func] If the server is authoritative for both a delegating zone and its (nonsecure) delegatee, and a query is made for a KEY RR at the top of the delegatee, then the server will look for a KEY in the delegator if it is not found in the delegatee. 82. [cleanup] does not need . 81. [cleanup] and do not need . 80. [cleanup] does not need or . 79. [cleanup] does not need . 78. [cleanup] lwres_conftest renamed to lwresconf_test for consistency with other *_test programs. 77. [cleanup] typedef of isc_time_t and isc_interval_t moved from to . 76. [cleanup] Rewrote keygen. 75. [func] Don't load a zone if its database file is older than the last time the zone was loaded. 74. [cleanup] Removed mktemplate.o and ufile.o from libisc.a, subsumed by file.o. 73. [func] New "file" API in libisc, including new function isc_file_getmodtime, isc_mktemplate renamed to isc_file_mktemplate and isc_ufile renamed to isc_file_openunique. By no means an exhaustive API, it is just what's needed for now. 72. [func] DNS_RBTFIND_NOPREDECESSOR and DNS_RBTFIND_NOOPTIONS added for dns_rbt_findnode, the former to disable the setting of the chain to the predecessor, and the latter to make clear when no options are set. 71. [cleanup] Made explicit the implicit REQUIREs of isc_time_seconds, isc_time_nanoseconds, and isc_time_subtract. 70. [func] isc_time_set() added. 69. [bug] The zone object's master and also-notify lists grew longer with each server reload. 68. [func] Partial support for SIG(0) on incoming messages. 67. [performance] Allow use of alternate (compile-time supplied) OpenSSL libraries/headers. 66. [func] Data in authoritative zones should have a trust level beyond secure. 65. [cleanup] Removed obsolete typedef of dns_zone_callbackarg_t from . 64. [func] The RBT, DB, and zone table APIs now allow the caller find the most-enclosing superdomain of a name. 63. [func] Generate NOTIFY messages. 62. [func] Add UDP refresh support. 61. [cleanup] Use single quotes consistently in log messages. 60. [func] Catch and disallow singleton types on message parse. 59. [bug] Cause net/host unreachable to be a hard error when sending and receiving. 58. [bug] bin/named/query.c could sometimes trigger the (client->query.attributes & NS_QUERYATTR_NAMEBUFUSED) == 0 assertion in query_newname(). 57. [func] Added dns_nxt_typepresent() 56. [bug] SIG records were not properly returned in cached negative answers. 55. [bug] Responses containing multiple names in the authority section were not negatively cached. 54. [bug] If a fetch with sigrdataset==NULL joined one with sigrdataset!=NULL or vice versa, the resolver could catch an assertion or lose signature data, respectively. 53. [port] freebsd 4.0: lib/isc/unix/socket.c requires . 52. [bug] rndc: taskmgr and socketmgr were not initialized to NULL. 51. [cleanup] dns/compress.h and dns/zt.h did not need to include dns/rbt.h; it was needed only by compress.c and zt.c. 50. [func] RBT deletion no longer requires a valid chain to work, and dns_rbt_deletenode was added. 49. [func] Each cache now has its own mctx. 48. [func] isc_task_create() no longer takes an mctx. isc_task_mem() has been eliminated. 47. [func] A number of modules now use memory context reference counting. 46. [func] Memory contexts are now reference counted. Added isc_mem_inuse() and isc_mem_preallocate(). Renamed isc_mem_destroy_check() to isc_mem_setdestroycheck(). 45. [bug] The trusted-key statement incorrectly loaded keys. 44. [bug] Don't include authority data if it would force us to unset the AD bit in the message. 43. [bug] DNSSEC verification of cached rdatasets was failing. 42. [cleanup] Simplified logging of messages with embedded domain names by introducing a new convenience function dns_name_format(). 41. [func] Use PR_SET_KEEPCAPS on Linux 2.3.99-pre3 and later to allow 'named' to run as a non-root user while retaining the ability to bind() to privileged ports. 40. [func] Introduced new logging category "dnssec" and logging module "dns/validator". 39. [cleanup] Moved the typedefs for isc_region_t, isc_textregion_t, and isc_lex_t to . 38. [bug] TSIG signed incoming zone transfers work now. 37. [bug] If the first RR in an incoming zone transfer was not an SOA, the server died with an assertion failure instead of just reporting an error. 36. [cleanup] Change DNS_R_SUCCESS (and others) to ISC_R_SUCCESS 35. [performance] Log messages which are of a level too high to be logged by any channel in the logging configuration will not cause the log mutex to be locked. 34. [bug] Recursion was allowed even with 'recursion no'. 33. [func] The RBT now maintains a parent pointer at each node. 32. [cleanup] bin/lwresd/client.c needs for memset() prototype. 31. [bug] Use ${LIBTOOL} to compile bin/named/main.@O@. 30. [func] config file grammar change to support optional class type for a view. 29. [func] support new config file view options: auth-nxdomain recursion query-source query-source-v6 transfer-source transfer-source-v6 max-transfer-time-out max-transfer-idle-out transfer-format request-ixfr provide-ixfr cleaning-interval fetch-glue notify rfc2308-type1 lame-ttl max-ncache-ttl min-roots 28. [func] support lame-ttl, min-roots and serial-queries config global options. 27. [bug] Only include on BSD/OS 4.[01]*. Including it on other platforms (eg, NetBSD) can cause a forced #error from the C preprocessor. 26. [func] new match-clients statement in config file view. 25. [bug] make install failed to install and . 24. [cleanup] Eliminate some unnecessary #includes of header files from header files. 23. [cleanup] Provide more context in log messages about client requests, using a new function ns_client_log(). 22. [bug] SIGs weren't returned in the answer section when the query resulted in a fetch. 21. [port] Look at STD_CINCLUDES after CINCLUDES during compilation, so additional system include directories can be searched but header files in the bind9 source tree with conflicting names take precedence. This avoids issues with installed versions of dnssafe and openssl. 20. [func] Configuration file post-load validation of zones failed if there were no zones. 19. [bug] dns_zone_notifyreceive() failed to unlock the zone lock in certain error cases. 18. [bug] Use AC_TRY_LINK rather than AC_TRY_COMPILE in configure.in to check for presence of in6addr_any. 17. [func] Do configuration file post-load validation of zones. 16. [bug] put quotes around key names on config file output to avoid possible keyword clashes. 15. [func] Add dns_name_dupwithoffsets(). This function is improves comparison performance for duped names. 14. [bug] free_rbtdb() could have 'put' unallocated memory in an unlikely error path. 13. [bug] lib/dns/master.c and lib/dns/xfrin.c didn't ignore out-of-zone data. 12. [bug] Fixed possible uninitialized variable error. 11. [bug] axfr_rrstream_first() didn't check the result code of db_rr_iterator_first(), possibly causing an assertion to be triggered later. 10. [bug] A bug in the code which makes EDNS0 OPT records in bin/named/client.c and lib/dns/resolver.c could trigger an assertion. 9. [cleanup] replaced bit-setting code in confctx.c and replaced repeated code with macro calls. 8. [bug] Shutdown of incoming zone transfer accessed freed memory. 7. [cleanup] removed 'listen-on' from view statement. 6. [bug] quote RR names when generating config file to prevent possible clash with config file keywords (such as 'key'). 5. [func] syntax change to named.conf file: new ssu grant/deny statements must now be enclosed by an 'update-policy' block. 4. [port] bin/named/unix/os.c didn't compile on systems with linux 2.3 kernel includes due to conflicts between C library includes and the kernel includes. We now get only what we need from , and avoid pulling in other linux kernel .h files. 3. [bug] TKEYs go in the answer section of responses, not the additional section. 2. [bug] Generating cryptographic randomness failed on systems without /dev/random. 1. [bug] The installdirs rule in lib/isc/unix/include/isc/Makefile.in had a typo which prevented the isc directory from being created if it didn't exist. --- 9.0.0b2 released --- # This tells Emacs to use hard tabs in this file. # Local Variables: # indent-tabs-mode: t # End: notes.pdf000064400000475053152530214170006405 0ustar00%PDF-1.5 % 5 0 obj << /Length 2353 /Filter /FlateDecode >> stream xڭYKsW*L$:J.ZlD` *'{~b_ݫ_"}v&~:H-/ZAx\-$>tLnmϷ1Ui60ϒ Ku$ۦom1=Egh%iFw!z_$ޛ0}< KeS柮כ0iuy2+l>Ԧ{u[0rrWkDKT !sX\>0ZΙ+\t'KU29kXGs^6VXw4ؙ˛Qz J6yug萷{׋s*vF i- ϣ Q)MOpi'ȺͰ;ta(^M0 cSY]14JkL?0:+PU1G `BWG(72)rѾ_Uy~>pw]S$(\5G;u˪b 8EQ0-seOWk2=*4 &`|}-pJe!f@ɪ8BLIXe>e *I@b`L 7M=@ i% -s8`a11@eG8Ho !ǂq\À}t؂@1?I1@a{> F~AÓ[``Zdc?-k<2j}/[Owس ],pPv(B+ߝ &XW@knoJ8RW*B![a[A~>D.`Vj{^dg`օ@PI$38ÜVK8DJ@$⚭e `# wБvH#f{ 99aK}{|eN{#·]{ b}t4>$sJwژgtAcx 3VDcP[W@/beap@2OB q3aMp x!dHq+͂' uRNC*V G2<zɱ{{|)cNi:KK]v3cI/&ȳ8"M>e/RB9E츯QY|Y&p4&`G< /,T ʌ AlMM>2MU00{a :W*Ebڕ|O+M ?\Lֆ7DYQ"-`V> SZ y0Ғ%a-dl`;jZv5s;TOox[G>^S9,E G'^(l0)`C@ٻ)+1C(1FA'*BsB.VU] ̀.N_9cd?79!l9@jmYz@ $DgzDpF,yI F̕TG1 IXAt (Pr9jqfc^rܗ|UUgeo|傅x*ʼ7h5-45 .sO! 3y( @Jfޑ$UyohG{&51Ժ}UUn*GUud "ˌ%Ǧo0ъ/gf3a)<̔%KgJRDϔ,OmfX. /y*J ({3mw0uÓ)$.am[ٽ'ԫ~ ` ~A,D{ ջǹ{8p,w%2}&uqUrlv*`87)?byJB=P(>'Cb> stream xXYs6~}X*dH磬'.*ي 3DŽFʯO7Ieeh OVrۻ7?^$,n9I#ϗ$2/YL>9δt{wuC%Qdx'N2/ER+B/L% ["}TTkdNs.j5cchq^W`YUM֬*EXZU+ qTѭ~uGG~PTx ^*(˯Ճε*ՂyUU)4a/YBomA5Յj 3dkwhpC `/+W 'xu1-[TZuiNEOxWXPjA,Zo5i03K'ޞ'7ٗ kj >:# ym ޲5ݚ(FudUgIgE[F Mv,'BT }FalHyO|Kae_%(=8yYswkHo>/q lnsU_έKX5hՁ\"܊ŀPϺ[˴At:F+k,?WB|ao?Os|ȓO]6~w,:͒˩Hwp ᙽ"ރ]xӚ<~p?l-`h*HtrUK0-ÄYVSnؠ0\*SC)' eH+:ol\xd#};t|Aw%@>f9"PCtjvL.\(_!&1IE^vvL8[ Du5!UhՔ3SY& cIbwڧTy dn .G=U*4w88 NêQzc*F4P>WDgm { $|:#ѐ =a>ECO6}S S>!dWTۡ v(Q +G2:J㕶XrLJ[;uB ٳơ=p]Ӟk'WY,ϰ@$uWuAhm!#*A|0!+юGŴ% yM%Z 7S_pc?z0CjK` ,7Em60+Ox}Of1Hav@z+q1" a`[:+U-4>š4H2N3Z LG% -0J!_[[ӆW]Ҁ-QGZ~^t@QREu3 0E* {q>:Xs jArߛ7ѥ⍷q@}QfOCY_N ߣiHP2`BXgՏ5( $=?#F[S-ʠ(MAm%v~,b ͊zjmӍx_ fA%chr%XQ )Y&/ćl9J.wfbh6إbL&%]":8t3g'mFW$ʦ =jO~rO࿢I0 @ {`72X,?5JT!_X6a,&-({fz8Axlki/Mџ]NUz5Z-ťTwۺoHD=2 I{; endstream endobj 50 0 obj << /Length 2166 /Filter /FlateDecode >> stream xڵXKs8W*j%>xIJ;S3DB*Iۚ_hd&%OvNh/?}joh˜!,V$|N0"#<.\3U_ia*K]Zm>v*/=I񢒹=4iz 2xczXyo=s;URzauhPr]  m”qv*Wee1™KYa`Éyt.z2W\h|.w{J-B:忭T9-:CʶVDJj O_GDD}lw7ڙͶP$Oevnn?57* Q\||R=TҎ{dG,SֲƮ7,]-[/sw)A,ֺ%DtYZ=%E_^ +^x-64! r99@0"FXo&Oʕ] EXF˶㔭z4 S2?le^p T 2vY9yp]2(TmBk}IC}"`sڢT;ԅAAwj#4v<'̴vs3qsZi"ؗ9M}Mz̹1+1G08\xˏJď&L#Do1n,HrT;9f؅6H]-e2SvmlmW`4B;IA95ОN€!zPMa@' k ,54MAXAjωazGbbD4? DgDtvz_} r8xIj}Cv-fwU -/DSN$ηٯ;<$8^鉠7 (攦[uN q dP74^)lM BH_~mS̨a9eܣϺGRNk RYsC endstream endobj 72 0 obj << /Length 2275 /Filter /FlateDecode >> stream xڭXY9~Wxg_&؆nfJkcUi~楲0“R))u䗗z^<}vE|8ݬfYza>KMBw|{\u6E{Ϊ1ꌩIAR{00Q$uAQA}-b@UOR4WzVsf{3|TUTꗀAÞ KnLCBb_+$_żzlG@;A[WҶ@Pqs`fUtScu/s)9(*?ahnYk|,WUO zLMl$I ~X2y+޵ajh{uMPoaч| tjD:cwaj-ٻ =oUOS#E/go\W"!&c{vrծ@H]] %EL;&/~k5JR{ L b4|3R]yyyh D]laȶFNH4uã%ƗwiТm>L{@a`NLj0"M"AƒR`͸\<]Q Nb0.#gOrsVVВOENgbd(l-K9:"[N10:j J@Ԟ@o\ @[0@[F' >FN;4KBy RַU!ήQD eЀÀc+VC m8GVS"LQ#i6ZZ60[U`ZZ0?N1́ B N@jr~ !`L #dH] mJl:"uODT5CS΁-V՝*OA!Lǂ7`Pfzt;a:1?y{;vC0-l-u%8Q2X8/^~ 7!W?L3;jpD2s[U#B覣$hu-)-n9e y,O{ȶĶqzY>tOt8$zbv ɫ">܈@]9HV/^*K~DZC=\\1̻(=>U? 63D_βdJr?X-L7HGX!5fl.~[[X8Q(RH{%8:1Sx8t{Z>)[D[|79*~Zp_Os7qNzHJoHJÿ~wJuQ;yA(;Ɏy9338J6OtcQ|甆FI& T㉣;e{)/?BBxqAsBbV{ygGTK; i;ף$T4J9g~(-:Wu\rBNf5;nL픱yi=rG9nh%QJ ׋gZ\B/<Z7db1*W|e09gWϏO[JPJlB~Ϯh t|?1usY)LZ9٨ɧX0E(RyP b/?@CLQwؿ翝/`%AF -bQ蘓|̗) |)epGf[u٨g9/5s ST+tsN&7~'_CT>48rSO֪In]V*A0$h{Ni4Hp4s~| endstream endobj 95 0 obj << /Length 2373 /Filter /FlateDecode >> stream xڵY[o:~0UQw`86(-DdJGxp(ٲvːÙofh/ol=n3,춘}oô٧E󿯥>YI0?:''? CԪU&JV=H?;y5LWUӾV2WدWWƨef6j 5=cdӪJgy>|y*esX/ \iq f+j׮Gw%DfuGj qh%wDͯĭerb-%0̕(˭=?>Dވ*8D~/[1~Vؤ> e2p%~~X~/$AJ!#)7gn+RK=w-=Oxk%jX6RUo+lRݎW:7Wx޾_ƶn{>cɞ9>BrQWpW&'$w iq8otSũA?tˢ'ġdz~e(W 1%p0!˒_? 磊'|E ?U&`#D M4bcs+G#3 pޑf/7j& k; xZl;j*^YK~hۅACp17ڮ6tx|/;| 09.Q8_n33=.M\Yqߤ2~ b%,bNK@7m&oԲz?`^eчTF|$ECRe=$Y xKoUUuZkbx9D߈42-pkcqej2 "ZyɂO;oԓ4o,qIG0WeU1>/4~:ƴkk^ԳM)d@1Rs)i\ F*u|hahݶ4d_V Cy6 S-! x L-QyKACKHkJ GhlD>#R:Qę_ÈıOBOxj A)mYOFAY_F?~&q/cCktd^i-μCX}= a/DUfrr$ BO#<]XP m>z5CvxrÝ@ebLE"N֭;iZSy$6XQٜ%9Xy ,R bI'?C% O+K(3_kx -LoȵQ($֕l0|#fy.500j[Ȗ;7OSӮlNJrU5n܏`BQ*xFa ! w$ (AAj#7Jh~C2-&hVXEbW,t3ĮF l1~'=w- )}72q|Yk (\k 6-ѣwr;>K.bZJCPhKdb)˃Xp_;8eӊWcy(8}!z;w>{ڡn 5`A5CyI!"}& S9*tH֍U!.ұ)9JJ[\Aa4$C.brԌca•tu zuB_twϭ({ t=6`@˾sP 쫛x|Z D.W.*{8A:k p ! gEl1_ a`62* V L(X|| 6Qbz 4IƉ:4JcLoLjWZ6(h̭RbRNX. ^ s.PX> stream xڽXKs8W|sq;I6ef6Ɂ"! АӍnP8Hu7z.< ~XAEz(EAGfEO4 (6^+%{`lz#/VpV{n(eyzlZ|]Vxn'h;C|x(s'q#niz9f#`[P&ٌ|x`XxT|kA&c>z%zn*&R?at'ǖ+D岧cںN\x/.!QÁw ۷ǨF6(p~jxIxC,:,c ZvwGNHYb!``1@7-q W RN㝔ͬvҮu.:-B?#7N!"ĉ/B{m$K^}yqڐ'^bd^IneIƹ#> $O| NC+BQ_ !ȐwjQq!\DYC-Q[X+B ~mApNODDEPXWx @SJO]c"uW_iWECyq[ѼȤqԽQݚvEY6hdj_B~ mʐ[w5zm4D["|h3D.3&f;b#5#{R)1nߑ3QK Nb' Պ\ DuB'4+ziri%4GÎR._au 2x[V#_^Q~1E22ܵ=b*A2R/_]_{MA$o>08K#"wn?aXiqc3ts& ?| 3n08@وQjr_Ե7һ8YЋRإKbGryɐ-qmeU\r]B#h#Vi~K{H.= &YcJnuNYl'/˓3_{9J~~z$EHbc,={xhr;"jW-U \–u Vtjmnp7Ǒ[zu\$ےAۇ&+jMqg=pk abzF-eG|e+iʂMnrZtQ5XEVJ3tO]ݨ̓@@]=WCXCZYޭG>v$ #*lfh[G~0_!u-Q+ٟ"WIU0)5grH'HpV]-G3WMrcIV+~ЍtGcja7p%M_m-g oZ9,wg/9 90Q"HO`b ڃ=T;\ 1:9csA}?)FC&?i~/8(ؑ)0U #Tx=Ȋ]SO[$AN𢅖 e}5L.FYe;}@\<*Hg(ma ,#K¤*X Kb T w>B(O:s3tG|Tq\s3aJ꘎}%.!2&^`?xqm/$oŮ`搃Oh1) HZאq pJ '-6ie1ML *Qcab VnAp`V2HuLӂM=CTf*,&qpY!tHZN:G]~/F fC= 5l'~/:VW_]scj %umHH{\.擈*w"%L.8몭֖L&&c߇( 4\E (Pae)S #;Z'?a endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 783 /Length 1118 /Filter /FlateDecode >> stream xڽWMkGϯ_`|HK:$:g  οrdydCUu0URR N1% +q%q'fFILtF$yVL^u3MbdZq"5x\ǩXV*<q Rcb YFV |p |"x!pb5E(A! >cF8$ڃҏmEa p142K!' 6KC=5i&KnTfD݈fR𢸹6Ej+?P a3\c.g;dwO195gxyOj R @R:OAGgT?pl Ԓ:%e9hXctc(fRMq)('z` ڭw:qv~5$'Z_@5#N<*^x+h7P©3PZ\ m[C2נ̅}*-:^7z99SZj+YMՓ܍9{נXD#^F2:V>.#ou*V~.E{K"6ݨ3Pf)h`$n sƧ58F9>fdnӣ |g>H)(3t͡dNŪoo h#7J˯N km /SbKa*vLx>=sJGf}f>4|F? endstream endobj 132 0 obj << /Length 1290 /Filter /FlateDecode >> stream xWK6WE>%)uL$MQlQH@K\,"^gȡd{Iw@OÙ7fA^аZm-#evQ&"OK%S/>Fd3Jit[e1OitHz R%I,_ެ~rKRf)"t=mr?V۵SH;d`Z]5ȋI:`DK7jxb^Jx-@((+ϑ !#O)xzvxF˾SSa㧲"WO5H8: %| ;2Q z!q `ޅkNwb.?ZiH IBKI)vk\ީ[mwRaL`zQ'#\oVwu;5eA>H3C5f:F*7> H*0H6fU]WӦN{e}-;r].S A \'U"Õ[<~aiˉ8N1߬& *~uCN~"֛܅[S28VQ,T5j5UEXX͟IXg^jH{\ȹ/z;Op-l@tv'K[d/mζ<5j>zw(s~OA}h"Ȍ{Ǯ$Cwkc?8y<yR}[zz8!M^+wrҁB%h [Fo=Llå? `mr 0~^46 / @{(N -T|P,~0Eh#= K4Y[<#k/G>\` #Qp 73/Wn endstream endobj 163 0 obj << /Length 2195 /Filter /FlateDecode >> stream xڵXK۸W6pR&;kgr=$P<Ӎn؛Wە7/?dJ/`uYe*s/ R8 3W\^ugnF4xsqF8;V'AlD^ xa] aO8Y>{2ri%Ή"2 7 10~Mlï$p#eJ[o+E~-M, h&n~NFJ5,U靹/#_?{}\$Σp:=ڞe4U~P+Zj+ީ PVQĬi.t dG=4zOK x`lr&N5n;_8tHZ!N.>?wD@9eXȮ'K,ݵeS1Pl+mnhY*k]Ӟ[h[k ;]"+"ٕ*HӮ)t-*i=}gIHj3X4\MiDt$ Ƴ;vP-|ރN :sGh`VhC)2Ph_JXR5D%=ӭg[ DY+"ɺ*eOV Y,UY yy3a ,x6J~Fu3!XID7 HkOC@l훁z߶EӫVxU>@ }2%I@?ry%Q !!OݸZcZ`BBk,&@|W =IK&%d{P p;?_qV~|Ta‰ dA7MlOVix&,DNf!i UO\FǑfc!t"hD  L%5oLd(f[a%qȧBaEA($2tIA@HTJ+&<0AOO4$vsUSNsaY{{Y5=lyfTT؊|jQAH(Uhr&ad6u㞙(њwڶV48#ϛ&#z/ _^k.lje j9$tԃC+ Y}I@z~ 'c-p>t9JUY˥Cbrs@:/6 Ggm"2Z m)6;l9EB*4g~=. &v,^[iAM*{@ɸm |9nYt>I\ϕ/$^6ϡKy~8VPTv[. ,@١&rNV\< 9G6+^\Ewȅd w%dˣo/hGD'BYDQB\䧠RrkP"!R/~A5yӃ ХRI")u{K (" )WcR6=, 3ǃy<5OieZ(+#/Ko)>hʄUE$^gͥԘwTb+8)Rc8ϓ܋xaQ MAR4a/f \}ѷZjA0|-T)9[iY?"~GB48} >!qM0ktO7P l*Q> stream xڽX[s ~_PgE]O=ˤ{&d^Tˢ.q__eQξX0B$(Y|~vwiˢ(Xܮi2[$Q4Rx2X צ*ڴ$vuOۿYA^*,G`7:ڪ$xx ҉+!'At2gy뿂O.[ken+@n oFG5dNG꡽RPjgIZ 74kfCڽʷ؝f/&}iDy b%-+ߗ@Uצz^*0i, ᜠĞ,V2A/GI a'JnK W-o/ࢮtӓԝfQ@חzf'"=ӛ|"Of^9Sgkbi x!׺qWlۙūNwXdhEZ+FFoJ5toL j͠]V޴aP>a,3g| D8zU?R5MmSB̾jCp;jyq #HU %I 3YAZSgtjRkxDAO vl" LjR@jQBl/Tl^0gexN{EN7mcj6&A{nyEe"_ݫ*͗J,~hN6#xjNNJzٸta{@sr8)>$! b1-ͽn9qU]3C{EK$2Ne@i}EuX*l`-@0Xǰx^|K*8'EՌ>ƽLkZID6 -[[Z㿐KAX+*٘)j=GG{b P,#0զ] 4&(6B0n8/Ϩ(@/at"GSm{ w5OMǚtZZ O%{@̃қodʙ WQ\ Ő[,5h;v#En9'DmH(vo&zA^u\t󁄵Kq5դ{͝}gc[BllWF%Cc[ Ll%KH_GP*Rv{fr>+vۛ8gzLOEvwnPql 9oeROYF l1}iK'c0OX5IS"Zy Dy;HsccV4HUWXӓ[K$A&M&wB/Lҗ6'S1톭opMC_ɻ~2J=b(d4q;ڟk@=z" n mnM;Gw<*J>Cq!kv$NBhU5s2EOA?TK(twH;3-xO"}R4`T@bP4:6} $5ݖ u1Bh'7+ tuդ01U%}j=*Rݨ yY1C4;";x5:fi, VNHYJ3,_ua+tkBCqQw4%.\ PO$`jvl)r%.Z#S sR -vlzˑ4PKAAIE4iypOq"b9)`[".Dp@ב|/: 2wEy7$0b&>c!)LHEirZ?ij`A,Rj݅>vi Xrg'6oo_= endstream endobj 201 0 obj << /Length 2251 /Filter /FlateDecode >> stream xڵYI۶W.Td4R2I%S ".ߧ % =I\Ή@h,uPWb Ww/Vai" D\ $qC!wkկ(tTx 4ᄋjˠ̢ %A djH*O0h 3Ua 11êDXBʽy$Hk?Ndbհ:,<\|D+3{zfKmono~z{1oSN G 0UїmRv/-{:qI|kތƟ$O{B4}"'DzZUcz8֏DXiV?q'k<1("3ӿSr?wRx'G^z-΂PAQ`]c[pxP=wْ V盍2ȋۤ~m?nTuF`\}4 (Je(w%h3 Z*;N_$)um]=ȥW~8ٱfBxH[2jMdVK jfF4I,;ũ fXupg[|Uj.$s-mqnڟP0"^ #x%1zSS+39|R~]jgQAyP~l}hX46%.%841 _ PPغУ L.!f`ds$G鵕8EHF\/0FuxXi TpPrR jfzzoyPe'k*X7~;ش5.cOSSΑX_8so_%^#94,_Mcx#Ĝ_LQff>!8Oa٥?F=$R:y#6IN ü%E\M/3˽~t:+H$k^sÇJ6$j!ɘG(s:E`֧[YU7@"iCC,8fV[ Aka2Ղ0Dg2ȶOcoNHT+1xEz A}z嬜.A-q8zYb"V> ^Ĵ{UIN+ܱ'rw,vilnf^`Wyֺ), 8WQz`ʴi# k@i츟Kf^ƵKB0+;ƌ`ŀ\fòK.cʺ<3C̎z9%b;#f,އu45.̃p&di!exA FD!OPL1E`l;M7Q?- &VJr`Kn 9ՒĬ~fQ apVy$o6u󠕃Ut$, ͜ gs(Z((o W,M.[x΀@ ٤-d R?H \ySvwd?;^\0æWgYs31<69*F_g ,tQyDmi،r X }@QqR*7C JY!hK38GlAA}:, *X4ٰ 3$D=(ʘF \4BV:dpXx[q'-q/bn˧]DHxi:Eh rCx7GMwMش6w35R>6@)l ҋuAeit@Nhu{ݘb|< '<.U^ W)/P+0ϣE_?JmAxm0 =I$Ok)QLo~WIG w^־vz6Pr%${ʸ #s{#Z 0~\7Lž.vO(xNeL/@HݣQaHƃp Kncf>sIDۻ endstream endobj 129 0 obj << /Type /ObjStm /N 100 /First 874 /Length 1143 /Filter /FlateDecode >> stream xڵn7 z") 0h im,(؅q/i"93xd"-YexOg 3Ƹrp g_Hx(x/jOT0:^.šE][<2To/sM ka+!Ga=xaẋ-Ph[|ߘ{ bCC: ALe Xc50(=`p>dw4/f@ì0s{۸7_&n} O Q4VQ e [w>xB:ʡ00G[D ,]K&|0ttyACzJ8p393#uS"xtX`n]#P6 k7@+L 7%9Lۨ.l5j-*Wq۞e k6X5VZ5t X7gjtK\+(ٞ54{S3 Nu4ڞT\ct`t=(vZnnNBYcKaih#y>_H񙧍FjjX6R|#]c55D{+MvٞEU٫QgkoΆ-H9TX8 #Оs(@qzI>r'Րӳߌ焙cQSrvqgC?@H7 = endstream endobj 224 0 obj << /Length 2790 /Filter /FlateDecode >> stream xYK۸WLmTF4 cL9I>P$4Eh lr"@Cנwqw]y퓧"sX4r H̍uq[^|r|7r{y?r"yΛ;]~˨~ X Ø~V*:3]ﻞA .EgΟSMгYb%Kߡ%z߲e-o_¶SF&5_Kh1&+(_kx"#],x aE\V5M5hYXִ{b2ҁVZ^|ZDpj†tScGzh;c+t~uEƱҘ=t]`(un究g߳)pDSY)S`tZ >tzAI S~:wmkEN,t-y3CeyXl\mюXa:;I^z˰ZqKY";tdiv)$t\j`6y_Qyg/ߦ}7݊ {B!-%)N(fw\VdG&]LaW ++bEBox5uU[+P+}̀& `0 m/(͗pZVXq;;!/gV!m5A>t?^x:0 8N:ksi7EʩV,zNkYR+>T?*yʍJ+98XHVffvN3°߲ &mk"*Ƈ qna%qA Eɇ+HpH-HfX\ P3;/EG/*ot1U~Ndt:MGP Q*q)竞| tYjTmeKXʄ.8}a-!ȇ˫z)TC b@`k;ك_W"Yۭndd h Jˋ%RBlKyP5tC?m |c5uUω!bd'yrieTwDXFӌ,ĎqtJKQ^$3@7 !,$A][͢Q<\GA;V%"JLq[9'l  q,M4DMbd>1NT6ob-mkޝt1a@QjKmykGt[OhYrf̜sU8?Y0)ٍr޼KwU)%y]֨ݫwQtD]y͡Y`Joa15D2i!dP4Ua-kH0|q<8uR&kCu;.\Ӡq/UQ՛eѱs(6@DM΋OHoc["9=Q5W9\C^tov3Ňyf27CE31W0އNlw942eՔ.LͱMdR~>- h9l@ /xl$ٙs$]a4գЭqGC -ddH)Лl p@; ¹m3)@Qqyf'y_3 ܱ$na:B ,0L9b  AnB"/LNb((~^b/=>nh2#yq}Hx5)LcG%HΠ~,r!HP.UW8Z4 S[@:^Nq p0"* $MRwE[--i.t0}k)'2ʌX6{)@:W<@ZD&m'C}wJLɑvyk=I"$9=y.;H- 8 ~X(a7n`٢w5+ʢDt\ӧwaBZ(!~ݹv0/_AO'~:ۼ + .l ;xV^\ n([U& =rc DtQ@2:>ycꭿ_x&L>D%Kd ,Ơ2k r'y~&^`WM`?BCOTiFfL Ⱥ>W=٧+1FXݪՌ$o7rS79C;V Sbix@`|dyd=4l^!~8 }(M4UEᜁX\ 0DlBn|vuC{ao =ؕϗ?,[\K 2vC 9^*cVpTa}rKgO5 3u3?SWylvI' M endstream endobj 242 0 obj << /Length 2839 /Filter /FlateDecode >> stream xڵَ_!l^8ef6 k F03XAlIH-_jP^#}but]x'?^"s؏7E^-(s_Opč.-#n At5=d )zӻ}s!RޫGU7*g^h(UiPkڽV=׺yݗ1} !\Od%<("y$EuCe]݋eV4 y[JyOIb](r~HB̢ٛʶ2xˏ&b̸eF\$ora'T$8B8 \):"An;J NKfhml{RϷ79_/˩c:6IuF8@y&$J!%2 62fy@U3 Q>,FV0s"^%6f8й#Y\;I9FBJ@CrFap;]P&I< { n.Sy8{ -ږG2nĕBAi&\߅3 \V7 5Yr #ͥGU-uc!M ݱ '>p/t|0==|m{;w ;-y07+@"7zֲ/;zRq2MЖWYR6*woe3J8C}=Ih^Dṕ$<<d'J#z_w #e\Ɗig ],5iU|E}s5AP0YSgcV`ʯ RzG ؘH -|5. HRe~򫊇k*-HǴ)7ĉu e9 骨-!SDH2I_םŶ9nJb }s۝Ғ6_˳*.M̺ !˰68d\/hTBN's=iL1] G0yK(2 Lnv "Rtk̜MMu1$YmtlH]X^56x wz"g4p>Dd|pP ܜ=6}x(4SB*J-tApja tA﯉fm;Ȩ(4Ubfi 9!dٛsi/K Oc! ;x?၀EC]^Ju!}a+|=J ~'=A.;&-.Ԫl(k͕*Ͳ4ԼL\hںȎ&@m_~-& µ.Kf y$ĬenøpU q/׫8G5eJ!$x5tTԅ2IEJsU -Md6ӻ5 a3 ŋ\t>,H3cz~rL89>bC [ݤ/ɡf ͂+XIoZcnKz2;ȦcUh-\cԶbt*%Y6-A:-@a49\f㨟p? 2HfXLw }n4dSTJ+UK!ICޡJ{ߪٿ/ (@o yCCS,DA> stream xڽYY6~h܊(\?M|:bf@#%mSɯ*VQG[mzP$_oץt (  S>"MzKUc`wԲ…@h^9'DI8PnVh|Q`ha*#?Zƾ6 _k޷fᣄl㧷_Q+=莖hBk])@MuLEsbtB sFwrYy~'~:ܧQ{Р~K >HQTw| )r8^Hld :@Y!p*,0zY]{ˎ+vj}AU:,^5ZW8.MZo4>Tn d*ф$۾XG9vE,$m76 3TeO$Ѳt֋}(qn<@ ރ6/hgöMW3u} |051#d؄ح*rx.j'PX>"n0CO[ <'[KZIqeuj4ѵWhZv?Ȃp78amhe|N>k$8^ɘ6h2YxSLƫנ,Ld\;;Z@HX%Æ e T}U0J8F^ѭ ށ Uےqb}nƗVSG~(t_{. AG`1 ڻυ|<LCiR6mUb;̄ǨF[)D{ 5Kjo[{)_SyL itqw9;fNi:d"ּzǒVV鉕V zJa(;TҖ 1X ƒyc0)HK"%$<)F+eqg3!Psb/b& [C5μ˗A&'ȀB/ʜM&gjlfNWV׺ٺCҺw@dz/{uhc O߫}Wy~߈狿IB?!p,Y8 :hvU{JIj(KZQ\-wb5Ê,?uvYe=h =P\ygtS&uC@ l'd endstream endobj 267 0 obj << /Length 2473 /Filter /FlateDecode >> stream xڵYKsFWJ<}e9%9 !9k`Hi4{^z.6pëwW?Tz'A(EA*bY->yQ @Q޻qs$>?ui5X*?X*A _AGg!9O~=^ [ݛuE˛?^ٝG֎g qLÿNmko؏g}[5[XWn:EA "In*Hx[ 'Eᙁ~K ݴpﭺZi~rkzb>(&7|޴nfK{H+mۓJ@#mo,ӧ ,C$q?53 ܟ.wJ馚4qqygwzOAoܕʭ^?6 !详t3슔! Rȑڲ$SHǩ߷)O(ɁnѥتTcϻYVM@RÈîIe|C;˜VST%gzbk2L!SX"OVө~K$<.]dmxӎL f4<5Q-`@8axH S9݉[1v\) tKlK'F-YosM@1K(l/@&Ϣ, "'*]&j@Aܶ# $tk`-ݶ<̌-0Q`4#N{P{UaP?GQty'5ZAqO!"(9Aq<.cN[TdN"9~uH/tT08@$֔ra(A$q۵Ȱd \w917ΐU;MMR|P=^H":D(OݨKDQzԃ_d/m{&-fɁk)bYŒO3db`0D͛*0WH~r\Eq}"-ǹ  "^N YU;KdPr,XFm9pz ¸aZhmF~fx?< !e%=+J UPWvz0Nd߄ !A=t]cc@~]~W}[3\7 "=o`i .XGF~3̨TnE5E.5-@s\+;}v+HϖS4b -p>GE5 a ݶE66<.h>hhvv5@"N68tV,eMGk>Y3Zw>AYR~TL+cp+LnUӷ{t*߾*&H@g[B?;>~KlFol.mF-ÂCSC7pRAf0m˧{[6|&@azv^شF;rB;#=Qѳ`a$)1#-rL+n]^aR4 ^aV =L߅D ZƔd ɓޒGUcLxowY;WDr9qrz98mM6dd|ѭv{* &"Ě,)$ئAHj@1 endstream endobj 283 0 obj << /Length 3416 /Filter /FlateDecode >> stream xڭZKsFWroI쬶.T6 C $+~5Hkw/bOϻ\. w?EY]m/$X]uJ{[wW^D?M߂4f{k)u0{s,u*\Y }櫭.K|u[w,h2TV5fvYgNm{lu8տ7/Ҕoe4}Z:"Ui߂ Gekqt/ln`jx~F=hY}YMW~J7gá=^yQdu^d@hf{34֭@8in <͓:heS9Fud:?Ip9]U@H,dCgJ OBP{:Gi@3'mݺt]"]vC36`3>&d=Hl f"YK`IQٞ z{񚩫A,lhdg'%B?T7s>ט[6 K@ih$^3^XX=S,b"F^ ѺcJU)VBQ lD:]$%.NӘGAʉ{@J]Y'+N XzEQz:W/ P)h85*h ZKU #oz~z\xTC9Hc_~x~aZcW6?"74m "yi/%tH׫^9[[c z(i?GUۿ(웤L Swi?~d@ !ϧ9Q26ع 8++Lwe;_`N5h@:|f9IA7@3KR7eA:p>)OhuŽ"فi܁cy (aUZU}l-푩~&; `0d3 &E<ςl]/&Ĭ[&g& IGARNOSղR?lzmrk;t%^[F $}t1Qr'`PȂ,4:Ƴsv,h5~ڛ);=ZsbxZ%!X!~4e=du9jSUi zW52.t׻02pF=` /ˢ`C>u{h[¨GuDt;&I~׼s%=RkfiPp09" ! h A%9 n2ٺ<=\iX@Ga$ Qrc_]` zQ0yX"0rD\L]7VKs"=qꆕlv/vhl퍱pxCS/^탶MXsOQ*vt摹uCN%-v 6MqL<^ۭ=9C]@r\Am aIcPryޏd''y|T6j(u\ $=:i~)h͞ln2{B-7O^HA}6̓>,6@$v-a[ƭ)[M8YWrZ] l=]OY?pNaKcثc˃+NNa I"FSSsr`\e{l{D̀b94\@(ol>ZTWa%;"42>fX%̏u H zD|N1ԘS y|S~䘺p bGFeOsc3ᖳ0 @& (Qh~) VϤo- {ZQUKySnh [o^~:URzsTS1eGtaeyLA#3dYatI/{YSy,J1ǜ端̲qdQ ;/4tS93 ,υ~8-;{G%~DU{܅ xC&TKŤ/6HyGƸ|TL #T\yf7\3t _8pV6)4ֹ3V!K8h> /kjķ󱎆+Oa9y^?r)…3&H̆UΊ.N8\~Fm G5 w {fڇhaŢQ<9ދ(i|4 gS^2Hez?f1+IrLz>(]fplto{m9"^]JSM3h" sX>nh-]x6})TXpÁiT ĨpX),& W1"t>ґ={R6DaKxtGY<tKB4=͟xN٘ sO2Wgx/^,W]n3B T]gYrO.O\dg/RݢS dBCrkko5OqgA| O_L!HQ`N?\(e.˙ šG- wJBy<ͽ}'KRMZV|{{X-?׾LeH2{,SNTƆ=b`hȗofҔu'*OѲȀPտw>Fl?_ ek'û{ >|} endstream endobj 287 0 obj << /Length 3636 /Filter /FlateDecode >> stream xڭrFP%PY99uYl9PD\` A ql'L=gg߿ Wy~VEҳYgYRinVgx|ꏚ`&f^.P` =s);_??sOӳDs8ȃ7?͋0$aQx(L>I{7=hFߗ͈G@*[ԙxeUaв}]2`620voLi^]7eFJCGuHkxcv//*M79.}tir'6t}xϣ]3nqtZ4Hnew]oVf0?kfѕ+)ZT Ax/ '.(P^Kmٖz[ߣ0.pUtEyޫ$Zr^O7T);sSR떡rBbq|oab'5 $Bs?ϽݮPCڿ%=DT~W}HAtT(%7=+֦Z{@5pڕ^ccdb}y/.NX>OSU׮gR_ST ]h" q*E.Al)mF?Ninj 7ۀfmǣc܁fhm}zlVpu3/~>s4UQє̍;֢$͆a˸N%ɨF?^!rm)@޽9/_x迱Ktk" B?NTX,K|0  /| 2;6,*I^S5)p ,ĹtN/] b1d1veo$Zsk#w Y6 @#KE@Oye,iLD'h뺙$!HvhGD#}@Sي?މF31(GolMzq\0.JFlm$M_C@AHj X' \,UxE't'N%XF,9Źv9#_e 'zf$RԨ\(7'(I08YhCn RH0U&iI#(85Ke+ˆѦaE s{mJgK#ñZշCeiM?0z{CRqcW]p'/$}m" 1vLh˺ i6B4SL(BI:S܎et;qƺw)U YР]jnQ-$bjdz$qSQ ]lFڮ*Afdc2;y 9"H6<İ 1*2З]ח|AHnXŃ6ZqWO+׆7ܦRfkUBX_ mA&YOU@Mtj}%y >)<w26J{nC]`j i<4cb?C7!`AM@7i9@wdڨ8-^WN%{e0OӹN`. &{JwA̙`8ʞ?Ib:f9hg-gH%eijǘA7\.[FLYE>,ڥ)x<֌_J}RK6 \UA\-ϔIԢf)h8U* -;ݖ;.9VZ^˦9S,CA0OonR8D4:pY4?NH8ɴ{|ЭQTƁM0''l>x^P㡔px4\xy{ǑǨ F8@?KC(dK@"y-=hF!^!<ʼn.r=I۝U8[ĒpV;V_|8(#;u, _=ӫvK{VhůlZj֬훤0/k|ڣ!1z]Ia0)Y'Aw}r(~{m[,bz Wpzr&'~i_vf{6f~~x薫_>PbO3sϰMI  b85,٦j1>޸ӥZD>!GV]!>Va~VLN P endstream endobj 293 0 obj << /Length 3331 /Filter /FlateDecode >> stream xڥْ__%90CRJYkU, .U*\%ٻ;{h{fu_őpg\V24cFs|C6258kl ʍ?%yҨIdix6)hբ|$>kAmIm8mc\UfxkK'lߥmMľj#2xIU!|03|إmZd{jy' JvJDi҆yo1A=h|U 3A>fy>#g٪"10qoty]m׿pu}}-fg9a.s"ȉ&$t.i1mD)=M$B MLA [@*#_;.)b+_XhSOӚ`o2D$8`YuxtUNk'}{ss{K>&\beiCks;:¥ HfV\9ZQg{6=gcr%m}8eY{A¶I:F+`bJyFh9aP {VPGjԣ3UKc hk&(ώYke>e=>L(Nmw[Vr<]PQއD;IQ\g6YV8GjI{IB~wMv\68$@<O͌4!ݾ# M(kAk–h2Jኜev)lZsO)4ڮF($L= k/H FpB*/ˏ"~{lG5yitQ,wr `a FV.Xe"N޶Vcm08x{1!ߖ#/xZC9q1`p` Y<%˺+^Zm]n|mxb ?kAp!-sqi_۹]8>J=83 vdn")acb t:L vQUٕ ?A?.^Kk! f9PZzj-H ҞYDi--ȂL$}L/FD7Ok&WEӻ቗Fc3HeSے+

EBfL{HZ>>Yzv;?=;` !]8ݖk.tk UB#d;B iX(bv6MMtͪ/ O,T8$Pψ1dЖ@ (qeK.QW^& #7"]BryQ B^_.U/fwvHɎծR~h8ОP9% CtSQv8Dv!xfMC4gsa脯`}!>xE_!Z!l.;k- Bzi~/ ީ} .[L)E[-?n6UzIdDɡ8ھ}&- %G2B\v#vu B99<XlSBufJ?SNF{R/'|LLG0κ9lV!dL+LU0SN "?-,b.!)샃lMqG(pk>il)6ݏuzm%8vi hVQU_HB gh EU_;TIgMyd!#NG H gזcyIVZNryKM9m|CCOY{t ',<3Nm(v 4M<1{sMr{)ᄸO(ycH7"k~$>v˅4J @RTCK!/v,f`b="*X{8eROU܊Ň@7Hpx$H$#ž<7 MFcĊ`J1he7\ӵ]8fEmᶇbU6TJ jְtOJ[׎P2I ڌK`CTe\ CekO rtt%IBք EJU+ݣvQаs xq8͑vJlƺirrPxH꾇TX5v9[Ŏx30okr\> stream xڥZYsF~ϯP%L,7vNqd$J0$ aI{{^l/܋opgoǫ$H4E8_aDwq_= u2VڋCi~0]guUtuST[.*gk.U{z޾b"t$TٮJoT3HUTnjNb 4 Mg0&e|[<8NаLW@Q@=ԭTӶdmȲޮ;^"t9/wCW('" D]Gn&9tLE)]7o*5+]^L WNeAL4 (9PR Ko- ΅*= fMf$OtaM<@9؎81 xX(pxf(ZyT[Ӏ-, YɖFhVWJRM};Cu'NFNȼ: ,6Oar|> 1AWo/AEWwu%F +]o`ćZ7&/R=cJ;wvwrȖ+4^1lndHoJI?7y7\b o :p$Swe|7-0u?0]T-W՟p͵{gcXW$(@ XS}, ˒>Lx #B) Ĕ>$8 kAHI ]63ÔC?;Z9[y9?d+rrI Jvx0<#ZPM Lep,\0u@س(d(OPv8}kXX"Ik&GMik#. őyX ZpX*Ғlɞ+r77}_.R+)]|/=I5:}Uqqho[ Fu~d^c5>͑ ;#}Iipu7[x,Jz3|2$>Q}4c#zո:W1}CbX8IzW%]y Sik3xִ; y ~TlX-:@^s8p;@A#rp.t2,k*vR@03نN\0 ;O#LP\c!'!Et}X-"僉 kr;A5UU]sru B^.""i% A2#2\W\D!i@? GlvM1X U`DwW{py+{!\+x 3[>Bp {\jD<S?{6p&+AM&Տ/rIJz~ Q# 2[F ]1%#.wQ3Y}7zӭ myHn!Ih+&6!Z7,q4U;O:jõ6PR'‰bxGN'=iJ b鼴 yC,ک~%6X,6)dBv+JZBģRweg `Kxr⹐+v7IHrFt>t>Σ|Ő{)Erw irQjfv 86%9#0ɸO:ךl^EǬ_K\AHs(&~b03 fWSYlΧ`<|Y`^ObYMr)P l-r KY j߇} St}Z<;eY<${kypkOd:ΌѰAm` 3FqGi.:>h `]rwj9&phn"'*|z2^K+['b2odl)&}1'Re3=hBΈ@Ba]oYٳAIہy^)Zʶ s{cYf#ݘvf A;n,̽CYPIcp+C9r[7]]]+|=,aw4/^cObܔžs*_= QpA&ϋ\U\*tsr`Q8+PxF` ?CM)Ԃd`T1҃PL[<eFSXUK҉f=Mqn#P'p̹,#P3AaTWqJY C<1R]ɐ! ;TA`oxZRYqu}AHW< pcf 2cCb¾PgC\`9/v?r=#*|mԉ~ܾys[ιyy?Kf~#KV5.gRtAa-t~kt[b>ߔ/ y4C˵pZo^!K}O&HsĦĥuU"%sp#< o.Gqucנax[^aw_>SpO*82EŎJSIő.`x(Ml.fN?7p]R?/0!s&, ˇuCGy HK25CWo}cgyЉCz[e--Avy}2ih`<X #1L; ce] /34  9mRɤ/cn% endstream endobj 303 0 obj << /Length 3559 /Filter /FlateDecode >> stream xڥZYs~P)DWmjN. I@!. Ar֑AO : /竇/&I.R;au&vqڑ]<X=/f/q۟߼O]rKmSGc wgT]͊þUzs=Oĺ15*ث6AU{~_шf+m^FͰQnumM/LÐO{m\aS06jۨ[c_klV*.VŽg' ya#;>WqsF7ފ 07F/R79>KCVnԷ2~Rl(wBqIY5yVqshECx ;Sٌ=߬ @SO:66&[tUو7륞 h"he$ SJc><0Ҵ^3y xZq+8t<?>:s s[g]]7YFt]KӚ(ib2߿}ԧ* IP lYF7GJ0qho0kUS9QЉ 퉨ྼnU]=x뱣ul{]TS;gN-H w2162V6saڠ"`cH*-;'V!{~>4;3]tLpZrUNzgR"X e[pG:(/Wp$[^e05&?r4 aMT0NE^jw%Y M~`y#6#5>g"9Mxl,ZY׉Si[>A.nlv2k?K&k҇+َuxg ܢpY,ʞ g'nA5sgQǜ*vWYqS+oN yݷw߿8Ɋ-<Ҙ/0Պ _H~hl-j3cVL:^ Q(ާRda/b^]Pʚ|&7ˆ6¶:a yv`!A!*0RyX!4+ )ú,TGV{v:Dr}[pJ(#AܗXL|L-a, 6,#v3٦F^zxP2?/w`Yx)or*~Ԡ[ }F}i@G+-*PBEf}^o^SʞC6J(o{p0r.VUݗC$ X0=|Z;n/'[*𣛻??qE!Q2Tm!騔Nf(٪ Ղ5%z53Dž.45m =s.hy xWZO5`zXzp#jv&"`_^(r&k[UĘ2Vsn=4ў򺓼jS3k\E](K3NYnkDޭf,sl/0@܈}\ZEMlYxJDq-.JI\ssmu<@OV쵡rt/NR\N w@>$rA@քDɸzy k!9f`tS<7'$rdr]u*)ْmtIjL+eQ+i/?00VQnk0@Vq7Mi7=$a.̴E6\BAQ$Vx6oA(Q: <K&"G7`63cK쎴^IG)9kɬƭt,؅Tat1w'"{u"v͘gG__,_>\z`^ڤ + ~\mAkYHw5n.o ,-&`6>Yջ7 ݱ̲yLr#4 h n*HPuhM@zr*G 3ȑ`HԛJ$E Mex69J"S[llfK_gn!Hfcjr=3G53{$pu _b)DQuWl%PtLEruz ?*HڕqJx1$EBc;t(ҩbl{&VzݐyI^ݼњŊ}F2N|s$t J 7!DO@ic/GI @Ch@ݱ.$lMks-upgNhM PXE #%3g11O. `S~&e=~:F#F :ϬQߠwC౛)I.vY9,:]?NhO-J,  z`M)A燻_3oU^Q.Ƚydx):?|u fC*!r1 v%+챀1_GS[-p,u| ATpwq{W&ORzcK<8$@HDcy!HL0Y{5kw :D6"za1ʏ>'"z8] 88e`do 7Co!:;4<0U*l;ȖU{(O((S@'(%E&!gH;Fdtn-4);ԛyJ6,.& p}c;&{f>=br,eXTTᔽD ,;-x>,n΅xUWe%'Xy˚0lԌ\u |ġ,dFB~~hCJp;nM+G#?8@ G^&raXճz D'I#(αпq[kW8u 33yVvek, ?(G_~/뚂ZIKu5gA op,Au;"x s4rTWM\/M>|_g2 endstream endobj 308 0 obj << /Length 1927 /Filter /FlateDecode >> stream xڭXK6W-@R{lE NHr%&V&]Zrn' fhDDgߧ'e9ªHb5ʰJy^EL}!IOöYE+9%ElYkX* d T͵V wlhyWo Xsܲ҇.91 oІK>8[9*a2y,9H&׼Qu1; 76~go+dO<w6\ {? cRr05-[ֶv5ǵZ|⚤(-֜lHZ40t'yBs2bqm`nqC5P. n: SW^N8]TP#j~ʭ1}Lv4k#rkE y-<&iڸV*C(aR8I, y1eS\=< SZY m$ѬzӖEw,LJu׷^!vE\= N%aHpӳ7ԟStf-%@" ]̋J˱K\yv1`P8w'1.dhi LKvwZ{a UZQlV)4sQQ^ $|Y&2 _1^^pWaB-P+LyL__7e`O;p׃/U ~f:޼4N*;/o. [1-A w lO@Y}fOJgOq>ּG|5F`|RewhA4 t@e[(<bqk RvmPɳCGqI+vR.D} wEeuzCV.$ hɈKYfSO{-rxRa '2$+AU0CtJ iQvVs_a5zEh# ~uMl^#cًZ=ˡ:fj7oB,Z$ Fif(j$qb_}+_BImk9t[/ CH,y@eEyj$H@ӃVL0hz:hNda TRV9;hpóu\(-Z`@/Ӕ:GlwK AY؅co.pa-&ĠEvm#gl:` j$ fȒ{pQ`Ñ/~yF<|`. HygM|:!+ 5746 DjIs ;hʆ#0C7P~hjݨ-BucKGq nwor^}mqD8KpǷ@59}sa0H{ѶM=Tyi0D>5wK]]%nn81f]B!v>FYUqo8DQǦzqs-Z:5S?89)" *GCO`(L9׬c$!lzqexxPGm3 \W1IdV=_<yX) endstream endobj 221 0 obj << /Type /ObjStm /N 100 /First 878 /Length 1265 /Filter /FlateDecode >> stream xڽXMo7W1P$g8$#p >65`H$οGmimі4"|?rj%O12匯D!W|k# q)QdO ȁDHR(2SZd HT ){B9RHr@57l(@ЈD BHY2* B(c;3)R,KBL`Pa0GXN0[ p( -J-bNj-: ޲5͠HOs_LT"G~e+O8[Jɒ4p b%5pS-nVQ V͊jŢa9XP5QYfSAB+Y 6k:("- )#ch ~a*I0XύcKHLbj 2,+I6Yr($LeEc9 VxGN[#!҅`%˥xXQAluPZ@[mzXF ÌRh|vM4`[ ^[f6&߻ wSj~-/ҝ_L>ήc!E+&s9=>8wM./OĦ:xk&<߂U-mXd)X 6iFE\@w 4iJD-X,؆UEŤu*mb`g+=~c$qaߧ1ztOQmX=H916aY[cmfgK[pQrߞIX%ąax5GZ{R6Ks E6mX{dD};[7&kڲɪ!v>5z;\3î&,9Z[ĶXn-Xʸ24蛮 3/Fxms NpY?e\O {%oz]lݶuW}.\\s}C$;O Ib/+"2έW㼫r_qrO+"v=Vyue=q6̣G'4ae>嬸6lN-hPi7fqRX[tgˋԅ&̖9}euPWX߯ҝ|v~կnЈ74ߠ8릈_nl>:ήtpq-68M8MW9g xh? endstream endobj 346 0 obj << /Type /ObjStm /N 100 /First 861 /Length 818 /Filter /FlateDecode >> stream xڝUNAW.f1/ q EB~ bKߧ!Pfv<)Z&X*%<@OQmTbS8$s!9$)L4 #WOY&3YEq(F4'ձ!G2-beF%a$%c-T+KVPFUۮ8T 6dD1债 }3 d!as8Bn"hp1ڕD9@#w G H re|ƀ<8 (GgW&gW#+9@= 8.P N01a׀8 V,{` @ l0ԲBM(Ҥh"'Kpz_y |F\#1X`qfCb8`$ h xLer¿@P&i$6F%5VA> stream xڝVH+ q҂!A,yɁ$3S]5%ڜiFc`*!`T\0:q 1In@$ΰWp=Ys%Mq# bFKiXˉe&xJS1ԅRСjT샦Z[ZS*j#N!^p“!Q, f`!Wz"3,0[h8gh/-647>MA*ksVp?vX*([5f@! kD xa^9f@Zǀp;,qpC+pk8dG dێHXpV0rfܠGDbFq)s.P G'8rP;$uVTYb)6$ ȓq08Gagw&EA TIIR# =rϻ/39| =nn=l^d[ջo-, osN_vp{No(em!ʓeu~Wq2k! M?e>Vg ֙`AkI"Oh S>鎟=չ&:[.;GΖ3*'w?>a5~]cslpO[O endstream endobj 657 0 obj << /Length1 1606 /Length2 5367 /Length3 0 /Length 6179 /Filter /FlateDecode >> stream xڭTgX[E^)J5"* (&$BIB"HޛtTA!iA@73s?yw9k>GBRt XIY) DܐAA".‘=0Xà= 'UUU"Qh3 rZT\\Oϯ?# Lܐ(wKZ`3 wtM^3104 `n!0& pDnj #E  0ԯC1?8,aX$yB  HB;!F3CbU uc aґ EB<;F!D`8¼j9P8&&4<1pӟ $h ua0'ߺPn޿O#g9JQjBNpEpDdeC=Q`3`( MXBI' ""&_5KBx  0H 7n!ְ?'kX0a '2R28 jB`7Œ~o#0#h{IY,Wį+!eN7oik:5eFPk"G70tt^_Iy @IE,Ӿ Ƣ^[B2e} %X0JX9~!h4Aw?+y TcHZKjF=߫gUY~P9m`jĜj TM?G:|XldVh[>pR ڴ (Imd2~F(> ~C@RbYj* 7V]iw%k[,K)fHZKzՐdqʞt b-H?f~kgko)ա.OA`XZ1V 8b]-Uy$6{燕Ln~ Q>~8Q-Zgb= t:07ZN&<' ֯QE"Rǹ?[;vE)|iє $pJWW]]-~ wr8XPj ˴*Hoȓ.eߙJR,4 a3.葹EV1했kڭ/x%qjtw}?az?'֠:(dj88KCF5EnEBCMNEs^Dsh?7tGźhk1m< 'm3ؑ:|F:m< jlҒ{Omhj<|}"hECj7>@M.<*!ԅ:.tt| 6%*(<&N]'r(Z|Iqv yb?yw-e·7D"qǽANAL~ x {&q$j/ܬf#fSya34Ƚ3=l1ry s͊#'t BkéK'5-aKdYEw Lu}À˽C EY_אfE:oi LGWHStY4mjX,^Kdȋ6Y5)0}Q_ /X{ȫz~i<^ Uy@M3ah󎟟Vi1nhaZY}R4_ӚT6E0-HASJw"b@3׹7)8+{i!͔/Lߍ_bhDs M8&uw*7, ZMKiRk^]+i%~(sȐ)6Z @:<'F[EV7i$ Ss߾fQ Kkłn~1#faU)7=r}|FVq_|3ޑ-Z͐]+7w3g_9J%7r)od,cۋâ#Y#,x*rlɮUTV*%c tmߤ33 9x7EmӞX /G[ܵ:b83 _*:u`O-`c^CƵF4esrL2OݩS|M%ʼO 8ڔm>knW2CnxgjX՝fY}ycyLTՕk3T?aթv ʗlg[:&*%7~I ҝN-.<9۠:j.>O}} ^+C8y4Ǭ=Aڭ[5hxn2JSx"e]Ta%*oelhdzY>V}g!%3¨ D1T||0?k?.r U+uU9BVۯY{J9A~'6D+*=]W=|259/0cEՠKd7mTb-0 _{T~0ҷº3CEd3x(IM1ɕ%.kd2iHN"97G \l4bM{Jr&͊Ȋ>@'&萮*w2lRRm~yW9Μvϸ}ً4/Uv:ʎu' 7sŝJqLy%Bk-!B-!0ߋ sVcHc=!ƙTF%$t^H-w>2wze{`JfG@콭ЭӘ0 IYfy_|NRܨ5ȩ}<41qa䃟W)&?{Lah)z߫%s~.rW釲|ڲ#&H&Z?Kn*S,\߷ 3 y8]x50P= wɏ/T͸0AWr'U FI SvEEi@nغm?ދ"{}VXbk4T]2ys|Uz-veRJR&^=Fd5EB%αrp93ˉlA垨E. G~ T(iX/ɳ(N"@Ƞ5~`cm/˗ ۑr]fo(|#\Ji^>^M@COA5yWp]~S[w4?`EV̻qOg-5ޤEH~WJ] -\U|8秂(N(CT{ϹyͳҚYP|^IAu}eUmflewB"îOpYYG*ج9dKS :P(-a|[GAggRN+OU7lɰv^5tGmܧ4f5Wwlh[D=͢JZ^o&~_S Of1y'} s=}ޣnɲl഻z]w,T-U Ч!\[꠆#VKƳpgC͛d傊h6똣Wqc]ӵE>+[yiÙAWj|ʙ*ۏ~E;KO\:hOe7)9I_tuJ}~֞߇i Q)G^-h~4@sl8.ƗKLPx(7XS64u(! |:yFL SgK_;I<_&5Hu6Sf1&4.MtbŽ-^:ǹa YVɆ@fq@Iw5Rf$'p̧>¥ rrAo ,/)e=0+EgJGkh^B8\syfuC cޫMw6qH%p]Jѣ\$5<36s[9$z}ʼnv{l'eZ=dž {(g@%*?TݛQ)a8*ʛ5i <~H)p9KNf7qѷWg?@`S4⋲ 5чP9A9ާq7EIts;\Tn"F j4BM:b+ wRLӬv]@w0 ?\ķ /;f=i~C*GYz63'⣹( Ϯ5ޢݲ<̀]@ ~7p1I?2>`S¡ݾx9e0cmE7jOr D]rZX}N)3dRN'%wo`M]^R556igl5{v begx7Ikĵf.?. caU'!_d]J꺧gjծq g R*ivkHe͖,!P*:j؛+_maRM=! _g3o&BnXs69;Xe9Wel>7ψI$e&PZ*blm&,\v 2<%7, jv6;ۀ$ ]b1QW=' endstream endobj 659 0 obj << /Length1 1624 /Length2 5715 /Length3 0 /Length 6536 /Filter /FlateDecode >> stream xڭTeX[RJj莡AEug.RZQA;AB3\z^NsQuXE$Fo'! j r1v /& BA`P- vh/@@@QK{"v8F"!nP{(,9 WilbsH kd Cۊ3 "W @~r# v``oH#!H$A ( ; :{.kw)a=D!8 jW(wwn$ `XO`X,AH p ^ln,SuW" p#X,O{g *FtFasAd⿗Jew# Hb^+ M ,? D?qwj//#7vzdW0~g>x;UocwP 8ԡnXIDb!H?rvc^(ꟁb$$YC=/vP*004woO,`gs7$* J%r _gC IIHur6{gQ vi ; Xu|l8Yx0L63sWj`|2Vˮ?Xzj\Lj5)^u|چ_ 2x䀿p ^ws/)h`VVjm魩c )`8oYM8esnS*}u3mz{/s``w¾UTR m,T/_9xX0̘W ŝ[ޤJ.@n}o? \jo·=Tg-O&W%{@`èOSZYgVn \Ld~A#S3xIh?F|T"d? W{7)Ӕ'cͺ:~AAti(,84{AESly˾REc H1B],p-= ~󞉋ō&nҥ>+(Ի76Uoo-iV0[:_of.t?Ypɛ% >)9obv 6.;O䴗_(>wZx{4>9a>)縈}RqoW23O?c1PSo[!? Ƅ0_bUkHh=7{a>99!xHRAkTUykD: dYz`5"VGҟC=#0݀b퓔O:Ե%&>|AVN.P4(َr u!2rBܝz7HUҏlTZUj~,Ot4ηSYպn[ۼlXaO>O{#I"WyvȳOk/q#0F,- Q7~CWi'NcAdݞG_>jTCm˼wX^ىnY*5ŽcG'>98s~7|*-2 ~칌W}& ?dH@R# j)]X8TUpj{T_R_èUP.O%OXXvd)M9V3L3}#?헉|CQasYxuXUkc_=INp'9\jdNuhC*筃So6JǕ愁C˭7E0k-a#)<^KD1έO{_ǰ(W 0o ݍ ~`2;+?%픍SqW6MKC.VnxL0.勎i(p!WSuFYn;̼/ KaBQoV9rіZ|X3W|| <|B毚^Oѻ wpu5L&\z,gX`F#UWZ7*R ?U>R[4O>gXXZq扬 8~Yn-Z(5[Rnw2:6-іWψI1}J(1Ҳu ˋYG3l=fw:e8Og:r'|=T}o b߳H\gwb}͍I?&Q{+ېí`s;E#Ӆ7'vtѥ' |uSmyv:scU2zmuG=pŔ"|s?"@|v9'c^a#|Z`^Nrڏy6CL99hWpQ-W__ff}249&S];: )f_'uUx9AB{lqhA|G ze7-QA & O;ӿp$ҝy n<Od[5eK:=C(Lw g̈́P84Դf$裖Ϧ^aw!S|<[~WU?/N$wMol\.$u ߻bpE| ftQiv=8%Njw`)/wv[nBbMSFEřl'džhL_ (}B_Љ,I>nЬl#ߩ܆ݵ 1]:W&;r>2QYy(XBhC"I6w\Z`-|F)5噴.-p''HsL;Mfyvi}AZC%J}GpX쬂!?}tT`X/b[fO$X T,-pkyhXneKq!f{:^<,g9Af&+}vT/wh;Y>!T:x~~k_wQ縁K*xƀs61ss7vܕ ERC;A̗ rϠU4j5Ib!L%4W iĔEiKIb#Lj\]j'->Wu?U)7^OR$ֹ=T NѱEa o?;&#EU)t0(|`WpBy+Gh:~"|;\,A}HhS0E`փDO9kܐ;g&,DtM^~[<0c+wiG >GC`ZtEhO}w3NB^?൪KTkkLQ(SܺX-'[.JɴE?eD% L*Aj]"+Iq3ڲN휣*m~u/F>i7g_Q4u?@slUxZMZͣ4ul€edx1:ȝ/K ߙ#OΈA->]H!*[U"kynfjK< {!ߞ;P7E}dDzDK84{.)/^LUO> cKTفx?fg#V[rF Xo6kfe݇mnOnCvǝMXE&8hPJ[bnkY_7=(vo[ m`m>h-\Ne{?ea8Iŏ3@9ޱ}]i:x~5|uݑ0FZ%ꚒStSwf ԦKW]FabsO:܊a*<ąVt)_̮4 Z"=rMeLwYfՖ;,GB5jٳ? sj[»~!Q|N:[gd fŤf"k xfiޔg)IE'8aRp%ءmW)6l|hHH=Z-æX 8\2#F9ENdž_YcK o*o+ԒfR|`K ֒#gS.1)P/xVyf14ȐmRy!Yp_K۳k:Abcc5W ={Ja3~<1@&BgBx6AV.oQOMʶ2XTN"{mnUt7 YLQF޺I$̏O[cR.qb8 nS71z\e_;nP~j}2MU_ g ${7gљ"@> stream xڭwctݖnlٱm۶['bb۶튍 +;}zOcg>s>s16)Phmo Ϡ t|9((\&n֎&n@^ 4Xxxx(bN^.֖Vnj U-::Z z3@st:}BՀ@`am))(J5R@@ omtp,]v8̭j͕K`puY=̀NN@{kWo+snk3;w|-&aSvtus5svr|VUO7+jZffb pzU0vu3 b7 wWk2-M\퀮0M}[&NNv^g;_\vp,5>k[Z;1(2ݝt{@ ' sG;/9I$2O-K{ZNs>_G<7 75P 7a8X~ '\ `ab9@;kৢ/>u+k3[F_7u&]YMM}SRMh_0DE=> 7 Y7 ? &n.֞ϖYn?~< _f`^em7<@' nmь/&=+í;odJ\o|$ԩQ Ʊ7 =b6ikPhˎ7xOGF_EEwdXqs$ɬy7jX E8s&̣  ,fJZ]9eGёC|o|&)g$n^.f<T3'_ 4@DqPd̫aH6 41L``)8hv[]0 vL!aZ-87==V8Ȇn:Hx/;brAkaJfݕɻlKX˦w|{si6aÔ΁\ *0'ܖXFzmzGWgk@hp< Yʤ {<(z>w2@K2# *7;y_ ]#ʖ)}ɺfRӡܗK"WI"ƢkǓ?$ J4X.ϻ_j}F9l`U6%X€# UQI2!>B,OYS[57VrF(( LJT 8m̫ ZIQҺыwNf!^l<۔u¹!-?.I,R9i9=/$,% XΤm=0ҪIQfZO>P{pukZ_jV2T57s `QI ~]q3ZnDnCH`QSw8sEDl\Wā"A"Q;}2$:[0 IyrSY:'@+-:={z9%TDL(E3lgXkB8gyȥ}qDkoD^xrQ1 BPCM")*I5+Jޅ#Na^XYlGa(dySq_tX!nt32e9@UYl ^ܑYom[IZ^ 莫`Ȼ DqJ㠰]0<`T=5BUS*4]꒰@UǛ(Uli]NxOMyUd6yz[ӹZz(^gE2R%=m`?GԽmDF){N "5K;sl?8Uyoσ!7' & D"БɈ=S(1u{<=ӯi> ܒF>y5P ]/w2:~.< ??;+Gi f1J 5_{?3f |ʉ7Bzg` A/Dyˠ:iDhC}\ iJŅOmϭR^2$w4-4gTcivjƳtnm}ʴV&|Iu0pw r9mZ)m9',oxw _eA<|d't'`煗cV6. , 2ղiBpeWBS=qM = gz_BP,aгM Vi}5` ts>@܌jV^ Zw]$x@]i|y&rڡ⍊HV)5Gm[:ص8 4jWfR+ߧw{wj 0%Wԯ,2/.!lŗ4eW4qgwCdA. 鎻.;V=0>/ce gPժjCi>c+5nOy\+iS+5צYo=c>X_>mr}HA2b\y3;1aI͋+*f&t (pbxXs)4̙&7Ds»mu_d\?Ԗ4a(Gd&tB?a;? *_E zx2y ,zn='K7rg~,Avَ_,:@6FH2e\qGqK$ջe6R/r{ԓmvv%Dbh$<-7/Q x2:S#Yc+$1y+{ rwoqc!9Si ToK{%zy$eBq 9)C*п. ?P*I@sO 7dWbxϲg$FE9-7. .%h=.#ŽAo߷GA˅P\o/l_)֧izx־ kTjT\Bɛ17Ԅ]ڲ^jx;'DbHSH>'U}֫ߑv`f / 6Jf9_Ou`Er䈶`!8=C&*Z%W!df-6Ii9E$Ǣ&ˆ'̷Dq22Ak/5;QR'k!I͵sZt PtdAɑGgQ3H7o@O=n4α9y8J P+ӮkZL5N*Ӥh:Mmha>5]bg U 0@έtYv̌z 5u)Ut|E,Yz[:(uv(}ZM k? : '>ro*I| (!TQo>= rY`LGNuPePiKM1of"qz_dO;w`ب,uAiFF,<,*%18@ BɎ0mڏsD֠ Ĕ1RP?Ջ 3I,Ï$GيyHf-0osfvT]{0܍Ly khjy$w+񖾖B~5(%1ZI7ssЅ `p'zjx,uǙy 'SWvosetV |W1DŽu;|wK͑: ̷z0nqt݂m=Х/N̆g(lDl3 $ Ʋ,7L0\߮%,7q PFSsu,n_ع thtS!/ǽ. CHC?̽}u~1d$X x^Ppq9ѷiU/|{0*6(&6{}M=Q1KØDSwn-Ζ,gAv&B4Ju߭`<ihN'OA^PK97Cb'%V Cj>gՕE)mms:VSF8u-:gX... ̕ $'1菏Qn=ٻ)xHRQZb+1JRFXyߤ7T&7i5D\QN"ؕobsjIM+^3Ѷ[_bu F,4m/?C!14M mkVAҰh+M6B?GdVctOCZOcI6f[q38Іl:%jc^#s2 a# M!=jCNX# {DͣeMY::$_# 3A` l-#sN(k0~;A_+dø)UR`_0%Vo/vݨDw v`vq*Y#m}{a?~$Kh0U(cHZ@}ͧ.KBy6wEΛEDv;0S< Mv4C0#Qߺ ~űlUJ¶4M8FE9'Ez/߽Kn 4>xO9I>vC{/rt. e 7+_)姆ae4Eq\SʦKUT폽5.u; [׽(Oyzߵ U6[r&nX 3ܻgujT`v NFlO|ڡtG!|{dQYB>C.)K!|~Lc^0 ij^糽dEhӓAZ6ߞgwxGWz y\F|)iYa<{A9 NUW?*:NQ8˓e3|ÖW_s\dB=RJQͶ$J3VwU}$%F~ 5RI˧ 8YȤxkUgړ=_Ss, |y4MnAsi{B0<&X7;jSN|zK >_+_9 OIny )n nn~`.ܧ6T_4}D"1f61*oؤ2%7b/4%oJ mn4A{5})ufY[9 :V╆['x ;Q_RcWbLgMLՑ\ yr"Cit?g렏|ISeB #B-9J jaYKN?Ȕc?Rèu?/pb7GߢWN O<#Bq@lpx+, O PX2gNjC/G[gbt=J]N페Mj;̌~u۽Qw*fp|<jTނ"6A# 0)FYךRYz;J@qQ6W1"zB֫0O`/bG4GMerHNW'? ;vK6HTڣQ}l7R:u̗uD|A>k=>P#XZ/Q8Gb5l'n- _U׸$DZR?n#x[_B6j'<߇B_]5HɻZ`tDbmmw4YdR7x9`S;P&Fͼ4{z벾a3+sߋ<ujqfI eO^yb93ُWDF5`$8Etv+}զGs)f7RS&֊rmﴚ ւ-w'"+RݦGZxw4 nGA4TTR#^3fT>(J㞲̖bU DZqdcT+$TZ\r%8%* 4H]J =ț06O`i<ZmyҌjS;b63~h{6 ;ܯn̰qQ1K<>(kU9 *n"rPv9`=׉fKQC[f)kH mRiUn"wbȵLLɋ:w'FE>P ="'mLhǾz]`tk8Y9EYyTKjJ`\>cBj>}C]!pdPah킈*b<88|u@9|r) 2 NX5G4ԍߧlp%dkEޤ/+Z!U^& E4Q>j]7WK˻s9$wՂۗ_SAY, 元 :Am&vusXM Z</S}_7 U/ 5ߞs?OOqIEſ 3kr)ޛ7!QEdX 6|@Bk,kT10lZzԺ5Wx󖨈̞xT1ei\A (2~vց]BT#+eۛ'7>|yRW2EL\ѸCp;kȣC(Tܓ!r~u6&(~/P:,45#`bNյY/`}#5;.99W fsb8HF{qEq!}k0Ɏ۱ GI2m@?0Bu_M[XɆ׎Yuh~ r$.0~wַNHn:qƁ}1Ea%[5o8Ѕp6܎fw*%ϨtP/ أO~j`9J/dx+{Ia-Qg?KC*J>IJD#y,\i;GF%h%3-$lS~+/vh)HNAP{XGz k`7ќfLFYK۴rͪY g (Ut[ kj ي <_cP:Au-蘱{}w6W7 )"s3QU PSk %pYoV-pZƽh^s䑑&,N8љpuٲ;*4}߀N\Vغ8HpJ:I2&, w\e }u6>O_cy[FZ7WN>flMq^,ihޯZŐō89 w.IY\fJ*ؽC7@j $8  ٝRz&`?s.F-r"40$OL>]gCT4UK@|k$f P^Vj*Q̱Y{mm#zk f[l:uLPQu.7Yq$M C >M/4݋L;gdb>6LB3AoJ5q%v(ӝ+zcw+Z0ot)C3˛W6 BwFjs q)\H+s~~;&׳hCtq偭wOd*{N`B:YF# ؿ8~-IqMi%O8͙8Z7X?ˉ2;׸]X+R2Dx{ɏɯ~7PH&ǏF&DQFU r6fvH!Z] _Dz>#DHOmmBmƥе+Ӹ:}/F|UEέ ezhÄPzޭ J>wa&mmǁsVIBᘃSid.)P7D\$ʹWOy\wAR!%o/ꆇ"h[`/3+*gu##HTqe%fl+R @Cd=˰R7;/GF$9SQNѥ\PծHؒPʑ6 3Ԃ&#a,`Nl]hUF"u<)% i۵JYfJY$qE+Zw`0 <i5x $, ݑ rU3tHF74 T)`Aƾ›i=2<= "w@Qe?{RP"$@@VJOnN52X.XGQw@{Q[xNěom jC^JMn6y@ p˛2Soڛk֧},I_I`(GaK?JWN.!:wFƫ?#fo֑MׅسwzJ> y1.ӣC *Aq|"dR> Gzkl@~zKպU`yC%'ZorANxP1a(P.ୋ9@]1Ā5 XPyc13)r33ȨMIn6J1#ht(o4*a3SFOscUv$Dv>;*[mNW?Xe֙<9Ok=.2}dר #f4jꬃ.!\lb[tזGVvoyq`?h4#r<.)`r6us!ĴSFe?^v zѥkgz9Ba e  }_ʏnҌl 1hzp^kcM~zob^z_7FᱧVRu:p@Z_J%|!M1cY NfH> \E・ʫ"ȳ$яQ̕~gʿoz,λD'g{Lv92yg#Ko-neqx.}_.~-K㽘;e#K)3nAOSl>dw:a4[;JJK9 rׂc>)x|DIEfm#E ;}PuFɊtT endstream endobj 663 0 obj << /Length1 1630 /Length2 5891 /Length3 0 /Length 6722 /Filter /FlateDecode >> stream xڭWgXSb II]:! !$$t(H ҤI9>==?gf̼k< 7*D"Bb¢>D CanpHss , B ( ‘17D0g,kfl' /o.!۸/E`q@(:C'P70x-(V. E`| uH50K  `(7$hw8{!;"8 ]S y0!ŀpe5WXgwn H''  GC 8`߹A|pqd(4O8 4BCܠ v'?Pn>Y9 r08Xh#_v'x p P'b}$,? D?qxߩ5=Ak-t{ ~O |M-| ܥ"`8aąE21po(;N 7ܝ! PiZqAL`Wox#w݆i w =$䟇'^2Bno&7av,{TkU{#e\>fucKLik uֈ}<˰{<%-gd|R!I'M:4`XpdaxB1j E0Iy*N5#f^Oҍy988!oeO:4ݗ7%wZ3*kjq_qdPm-B{Wھ+#̣GVsۄ.UF>#mҬpjtY.tX2U6K83ngaz"ng8|MEH0}3gC <˥3UEmq`Fb4TMiO n\CP!C)!᝻B)FG>nLl>$@_pToNYsiv!:ClقcSƗ^mxVSܶ);_CtKmGֆ1u Hψ:z&9d3Ypq?rᄗy Wjf^˰hQ':níɍ3k)ͫY[P )?=+ (jDǼR iUZg{A1X-,AH2M_6]3WRutg7FTVi$*>wG~nbmmib gN[ `jH7x{bJR>[׈VS< v:O j5)}D4.Y;睿5wlA)f j;6В2i*kDl^`ͤDG'QK =<ٿdn]k!B\]:3Ĺzf'^V珽 qcJ {G筺U^ FZfk;iM5u|k7.-$ghJٻLt7r7>HAޛ2~ҦYwM"i251N3ݾLtMS W.7<X}kds߽M{ٞ6ˏ&/  ? ɋHt?_9H.T X執:xZG̜i7บvU(UѰJ|_ Klk+ qAiAy Gmƕs.]Dvg 88Fj?{xXC$vQ Ո 3_)]rL>j$wX\+ 0Iֆښې+O\q>uٙ^F_ ȸVNUvLԭ,4Mpa 5eǟIt$2$L1wg]flT|_ME! KfGDM*haK4T:)m*`yW7ڕ;xCf0xuÊMkQՐ .NKtm%KlHp=9QԦ~oh q2lnO׏S'ajٚLx/VMG/6PeD +=, 3 ؓ[\@Y*a:g!5by]o$@dcocR&RPZgs][0vD&YV? "̱+4z+UKԁN u/~B _x:ĬzpgJ t%3^uG/3nm|ֽ[0oigk0 tqlC]acbZmD7mdgY|'>8dA[kM]OZ_N }Q {<|{$2NgۮVq``U" ,rnksa5W>+e}/[V FƠ§-97ZH.RJ]uF+Pzf&֡_j?ymiRkaXLs^1JޫHGoxՙbzˋ7!4.Phb8 6S(,=ޭ?ٱr~AtXz_[ ,8LrPީ u{vxUgJS~oFܓON ncC񦒆vc_S+ʑmPw-r tu?V|O3(%b"rq-_?IEޯeIv_Tdgf"ؒ:ÿ2u()Q!2&u>F-nh$uw(p77j%i71yX)9N:/rz{IQ̆|b.9}ݯ.SLn=ٷO({(Uw=Dmi#RNC;.6CP@vp3^kAKD-$gw VH:,0]a`R5+kON]V],S&AҶN78VE} Gb%gcZDuϜFTO6?250ҫV@ Trߠx]n>̒sM,dwjGv4eZHi'|lToA6}|4t&O^R5n%~K) *T f!!>7,(48 bDzd/0L0Q|r헣勧!TN?iCoin=M>600Jqr4+ d$Ǫp$nF{AE"RRr`ҶqmԔZr`Ы~{9Fm`oyxHvN^ K8<| b)Qy]e9'9!?wPfp՛_Z:d2pI)=!《᭱r3Pedy-c1p3ue["+]O1ΰqM}ypZ;[?+Oc9j?Yj KO{v 9ȫEa+yTFF~ĚEYBS-ae/w;ZKҳ\M%9YBW&%#8L*7Îy7~Jn J߫o摅s{~L*.^GXrIJԏYvF 5({suO` C#z|}hjeۈ.R\@iӇv6zx:`3v<zTR+5JAv#m>Iڧ}盲pcav+b]*/C:ww2  +]&q2)x K~Z*M=]JD[)]+b~bCt7d~%Ɛ1I+aDEPpX /ێb;Vmە,9#ss4eVWPP8=IE g[dGS'($}"HsճS  #}1uv.?/B#;X0dx?''2휪T\If93W'NP"dyVCFޡ{{\0$F0ڸ|de47˕Ke KdZ7մ\苛R$N UN ajgf}htUNPX{^g@fHJK\>xT#eװe3LUiF00l[NTFGo~O\Qc f@] x~F)"v!GYij)kDLFlaGoG_? ̃ 5Rm 0b7sڄ`'Zg7 _?Lf*'j^<-^m9:46x ,v~u/,]~X^b v&e?֮5f9(bW"{]Jۍ/D^6uU:\CQPeA Zw7AwN^Wz3|42QLTg:IսC< 9'Yo7().I-g$z2'(n(k$U+hW gFlM3 1iF qjߔzU0;|𨩍? o>0\?~aǼTMWR\ s w,/g;}BF۪[٠Z3 OL_fpwc景%XZUJp|̬Epp410>sU"k6f&>jbׂ.ɽ\)޴j7 9*iq~Tcp#g;g* Bæu*<)k+Bh^NܒkB{j˼e^+ࢼwvLiGf^:O58Br C*Ul|9e~%{pHeQPzw'~51S vY<g/kj؎ ]M?KjqAsOsaa endstream endobj 665 0 obj << /Length1 1614 /Length2 21060 /Length3 0 /Length 21898 /Filter /FlateDecode >> stream xڬUT][%kww6qxpww.!X[n[U>Vkk飏m-jrU fqK's#Mjfoof rRdp5s#QSK 'G)30PH-v~~~$j+ A_Bv};9;!5@*zʲ:Ye-,jfPu7YA@G7 =` %Xbn@ 4rs]gv--!n/!gW}Tn g0oUU) 1S pidOK@n0 O-s lo_0gWп4@ŀ 6stOҽNFO ފoM G$?;  _fNKoI,D Or-nol7 w @%9O=RO(`w+ An2 /*la2;Z@W{#|6 ;.WH)(27qkz;?:QrP$$fN6/~NnCkdvy 7_+#hd^9Z^Mߍz-,Cm3s #R#a͚ŁuN}[զa,-Sދo>3ϋ(ct2f^,(nimO}#tEx(ġwFhJhj(9>I9|12wc~"1y*ك;Q؋oqC]%t/ZP/0,_GXN䰒<;.ϛHq4u4kĽX PdD%|NE0Cm;:e~ 2=QRQ["D0N7Ebr$օbfؑX =bKbLRk2êĥ X/wuHVvu1#I)'|%=`t;fHk`f%<܌ҟ{/AVkrbCSȑ|uOv*6 (BEO"|}FpsD(\MM ~⤝OCqү0J0D->+Ys2+h*;^9 cL8 bT^tK{N=m'J`m>drU>F:<3k_^7T$Lr]l*ï06d` ,]ZIZT]7%y0j"$(H pUOCqXW(|T_*>P)iI6 g'Buf{N'-p=˵A&Ut d&-m/Tx0=v|Ο;d"^Jr{X>beP*pQAr"Aq+}tJ\v8/8TGtZʕ(89DU[D+|\FZqm)#9q4-n$$xEyS֫H|ssD<#O30cE kb漩2XP̟nR6*i~}u8ls6Zwu'k:0An]dq=ధ,Yy=c <&iQ}1;/T0)ƓZNR=B0 ׿#9 N!DEI>.E$X U9rDoOlRh4A[K"EC׷{6C7%Tg,3DOTWړ#3<+oCC8~Ue|` B-I]D Jm;MOqrEט4E9>f(Opex{i iT8|K[IEm4ATsހK3X6nmG SWiTatn\@EkT xVo))PҌP,'u^gԁ5Jj{*A+7{,=.oC І~/2B+O/Ӊ)u5 ,X l@-OX7a+B̚;1-SfeĴ3 G!ȖX}W{Y2~I+c$H1Pe˹n+V~:V?VQ9oO08sO)V}6N6M(KeVUt5^]nesUfR~HQ3U`ӯs+8ܡ24G=XlaW97V7o"XI*pswdHJoqT2y>~.Յ0Y,je:fEj=]s?Nv6bq aі4ɥ˃NFAWo3OzŲk 49D]ktnҧbsbQqlUv'U%)8wlJ2[lw%X#|.ԏRz6Xse_~Hfwc0R&l6UGH+GQ[ G 1_tC!~C1㢍Ll3Q`qFէR#xcoGi?yKCHrf<-xE33cOmz@+H7BүVȏ`I>>/o?q#DFYߔ@?vhz2/4͗+"[-.ZLMXDW=/f(c):#c kCk,,L`D,5C%.28;= 7ŽL҆Uu-# ߄{dexUwWd 2Ԕ||M{h>YSI͖|6%>%'YZ`2l^#^2U ЪooHQ9J\?CtZe0dRkށ Z ds>uȱFޅ-ܨ#gGYҢrfɚ䜶}CGmVkak+ݼ`gbpyY[։)t7k|ć?/pQ*'K{YVi L4@,:ɑ7*[?ScҮXWr(ߏnEb]crX G5вt g<=vJ-A(ya >Ԡ)~ke\Athv(3U#){|qɭOovp!{Rh8vx O!,Shؽb)B[A_{4gʂ氰Uɢm`Ѳruz>G9MLjjBpbsPK2jYM Bm+0?*OulI:Ԝ'c+A\<:A+;"9KrluYwKYq9D5KߊFK*4K(+Am|b%f?7^Ag>/܌QKvR2WݵKd56a]1 1_/-J'w*Z tRŦ |5k~щ2G7߉No71zb^(A(#{V%=# >ivfL| P}>78ulAţ f2SmNQ6YZtSC 3(y x <aV!Mt& ufZ$'8~:MFh$c)L =[ MAKsY+&lVeK8kz?q.ȕ:w<i]u.B' 9,}^dFscW 65]ԟ.>/2<(U|N ;RiKI VMܽQvz_)3?U72 4µ/k`6. Ǭ ʂMl;}ZUm0Y>{766rQ/ַWkW>~-4 J%+n?%j:ŗΤqB!\|lv8ZT .% -] KAcZ1g<2 !D$N/-ӶY1d"dmm?l20 \KΜdasϻ:H=ݣ}nmw*BwsE?Y>兕CyN~0a Rck ^2Sx-Ή̴뒤Feh< !EB:ǟñ'^870a&"Wڧ[*0a JGͯT64 6n'Yw|PuZ?FVq?gOCPFrm Ĝrұ x#GT>évFnP(6beuUV SNͺo~Kl+czcEN)733GsG^x3Ƨ5iG߿=ؙƲA5C[4,mjZ[M>Sj]὜j>=B>9BRi#d ̟Ґ|6@Wv|҂%4êڀD6P_apwZ7tP*5`+Cv}+l`>sv+\igy7EtnXqy _^0LB>ACqC [O#"I?B{1]/Y$5 }A.?M^u{F E[\x>AϿvϥ [PMÑb(˖W$]Gsַ}moelKF:OfyODUuk#MqdL6zlq{t ēvUĜ_ד͌ɞFcAD6aG@2zqu@+^I W|+Ÿl4EڇG0B|[xYɵqnI0Pj-,:ߤ') Օu$dpɑ#IUeIs†Ɏ0$I(1NۘGGClq)5Vv{XDCn\y;W: wd/8>~ 2gĮ.vGlhݹ[oZ*)ܑPOw^Dݱsg>oDm|Zz:B x$\lupY5$ GD%9)BEcj#'\]G?3yN(LU0{uU7XEj,znNlo褠. (jgְ?`J~'tHI{K0Xly߽{łd |N׭OusP :tw,x X1 ʈWv?l#{;#!}Y蹕˜ 7FA5̫C 1mDkW[~15Cx3tDnEReyڳoV|/ARqh"TDj!yEaWArL|+A<$/lrh_6 @) u,&UA7.:WK~[t7%-sl Vߍ9qSŔ|JIT ~/S3 /_>@wlCb &C! D+}Z%]PC^*dVjQM¬6Q@3[#:gVH36x4w8EaP<˖" I5/s{FaZHί@h+e {G#D|&O%m#D~5w ِf+d;K$*M"h[2H^X?[ dEkUG+ٸ(Ɨ:v]j}6)q\ ̐ [,:\N(/ƉJfCFKYYN>'FFj&d4A91d ? a!6/euS ;Ĥ"KF9>͙ޟUVk5WC&kcl ts |ȝq.۟eU=*`P_rbu/tÔ0,9n:NW2 !oiKtBo[cwĩ#gUG\8F'_ۙbk!)]o=dhzL[ ?'IqI6Ry|I(}Na-93Uq^ Ӽ[~vrK 1|E /?S!:pTR"K2Q}oi&Qj)FRjO$ /CM!Q]T%>8XYG#,05XDZ%_[sAWưdW!Uʿ/`G!73l s&d۞j$-ұ5GI#~!NbSu:KqnsO8(6 n j4ˢub6Ah+ŵ=&W֛ ZcH'Joh)JLS{x)' N99Qbj`B/9yjvחF -L P iSqq}+[|֫#pZS:"r6Mؖ!K~N?vOyf<}hAT9K4'Cu,e $bjkS9z?Шrae14fkxፊKCف ˰ a7o➀> _wU^LGSWx1 D3ci#`%K!cSsj7gg9 s $_J22/ \÷R*kБha` ?,kS-(v-tda?jPNͻÑ>C&˦yu2R}]U:@ȅHLδ:g;ݙm ʠc J_foFr2oT"p,۬Mbb\d9) >ܯA."gGp*9꩚a'c1;{4o拇'a -:76}rLV (!a2_D&hS4l43ffeYw9A4 QTz!ըe#J`ikz.B@߫gۭOi=2=@5TjDv)QěEڦ ?ɢ}kT YaHPC8bN]ګ{V_@bUE^ph61mSxJ1bҟQlP &a,u_XH]+z\ K4y7n<]dseX[y'^;DޥtskPIk9λan'cXL)ICNQQܫJhf QX|Sl[Wg/Oc%mrFž_#c*3Fng|/2#-' B>f6LJƠGmSgG ሸ ?=Ӕ0>'&$f?gzQH=VUU N՜J0 [ Zu) ]kh?D=k Wv¤>v8[d} x`֐%xi\}E1DQ:[r?ŋ2TH#v9j*q]NGu{5+_Tt]{ӤQ_mG:=zGeS]܅sU2Ls"T[5^7LҘ7/hS)朄MGN԰u[oR.?>ǝ6o?`sCt{~VvX ;|G)}eYa1̯?2-(J>)4aԍp+wKNp5lCh nI_kE&uf8MEEQTl<$4"oK dG|+T;yRVcl Vq:Ӡ5-#jYyXS>1S&8TB9W}F1l{Q9|P<5|% #FWqf^i"aF jRL7 LB0Ϯ/{d_(ˬ T/8o6{JtN9u{4ߍh3ܚ,tmWf;6 ̮e5^T U B8}j<ޛXٸXo#ӧ{.n70]m V2´+qײûtoyJКrB\C-I*@ڎ|"y&Ei~z`)w7֟ B*度.I˂@>P^>uTl/XDu*)pEGFhXXn_ӞW:7$n^v߀܄,@tm[]@>]p4 SlG¢5KYp>-:+ف6f/ơ$r)Mbv }D\Mm򶈑Ӫb@lڥI-:Nl0ET|Akn+c7K2p f`]ŗr^"ȓ-dIZܽ-p͸C9f0mRz6YfSqiσ srM/_׮p$wH`C?&xQ Ä,bY3PԹdR{^klA!wLf{S'_6\zpm%bvEJU&P:.rfKfC9Кmzw\.6xЃ+ ޶W Q/ęX B{Cy>?oqZs3(j!yܖQVWHnO]mZn%2>*n>z8g`.[f_u^L1ށrc*C0KƷV$8+ԓd{w9-(l3K0~}6| {v1CK!"D_L4.k9x# p+2HQ @).ah `ј~<ԫv5knrQ<'TSl%Gwu^ A8wWY(KnD%iʚ"_u(EBfy$H}Gш״Y<^`ï ]Ќ;E_U;tF8M>௟tK %div_fBu[5K߆k̳x|]@e3/IdX:9(+ZʇsWS0*:&͹o!1HeZ#%|"9G}Ԓn?@68s"J:" aEh\6 KbXdfg3yl5mn:z>hmVlIʚt=;X+e KIɯz5"|pJnRH/Zl9xjmuiW`3M:uZSXMGe< ?IJD#e}gXԄ#t~V?O<ʽ3y;ie-a ܳWi{t~c^bCC{1gHX{ h<`?Åv/ P>Q0*:Ҁ+&6P] ]LwB\tlx\OZ?Y_V1cHY9BzM}s d^$:R]ٔضld*Y:;܄0w&HWʮF!ҴbzLm&"H @3mC^w'w‘JYdeGKpƙD. T$eƜ]c>,XVWM}@yebY~u*8~-+5:0蠑vցUtX"Ǽk/v눭e\xvYcPUك쵟W l)o?5|a9Kur1 V՝EX%o[ X\~}u#q VBT@^c5]?o10Ejk,dAKo"MQY@$fnAAa,g"E猁e=#Bpph@);RޥiYӖ+[rx!z7v1ԱzzokadUJ+IO"]%/|_?/v듩ʙlrឬqgN;7eMʦv| (D[${HX|4V S{]:^2 Db? A,ZtYss- LNGĶi.ꢩpD UY*f\*ޓ옼w ^ʾ"pLj_w۝d}P酷W)P*R m6*EEﱉvHpEkGj.|wα2NoL[Çr\čRœ kȿۭ\6"KCm?Fi Iпā،{И c``!7Ի+{F*e*\W X;(@tZyd\rWzq{/eAʍ(mJ,;3cE πlo C Fde. EJu.~>Z}N5^:H;|u2 +3"(0'7yHJ 'gֻc'e׸ ,i[d؂O/m2N+3-#L$} kcbZ#аczoKUG(s$w.A yݓi)YQp P;ʳ Xs=j~Ů^6J.Jb?;)iF;O#X:8݊ˤ:ڤ/fQ:pTZΑk4ܮ9uqeN*hA!{KasS26@ ^Cp1UJ'i]zm+a`iwшMFàˆzBߣ䆗࿩"K&uzF6 ,3-#(raѨ(l'ظRfm-Ұ )]Jf{W}S80Ǽet7;ZEmOHn&58T.BL p0%!qLg+7K3SC*.Y[[ONbH]~K#Yq*2y<7&x2~z!ē!!]p` M-QJ|":~ xW'*7n˥N *7A <@+dzJxaTRYmފUPɳڊ&׃2vZC`F̿@ޥPWK;cYeJ*<1_F{h7j/U4MP|UQU@qڕGRoP>i,]$rvl(@eD8mp&HwKTr~a. t]wSI*MEaʘ4OacQL&{ׇwL*w E=ALb=TU)O85p!Rlmv8hex=)Ґ!oҦhrDT.+ѹJI ~Љ,}׎ G7KB:B BM̈VyØ9U@~ȑ&CnV"qtA#Z~,7-<hpH_LFosl6&}uQ[TR,$:2_S46P- B#gk}hh?%p^x{"cWUp<$z Yw]O yѶ}ʊc7bo^HIg&eokO8eTslGށh/3S-81թtJBWuq>;52RxÃI2Ϫ_V& ъfū!֍uBdc:THsp6cAW,B9XT]7iV08}k=zC4w~/\Ӫc-h?r^A;1Q{xk3[#GDaIX]\Va`}gP!Np,O#L" /̡i 5"&EtP3_C]vCybN!~k㹠? |ə.õviuU/@ƘΰF Y@57Qv"[N?NA*ڨ z<`%XA΋DQR(vJE$ՂgJ@SkHɦNV6 yWyv{?~U 5IDkH⮍@ 51q¶%#zft3滢dqcZZHX?U '޷S`~[SM_*..y~8.oه4o9P*de YHǾxv>]oV a]|'ڷܓ"GIZ#~"&wW@u7XWmߑ߁T! 0/05ƞ;e*fةR^G`E ;<PP&@K_@3՘Ftm֖} KY>C:~?vzy2$=-q%tG— ~zx$od^Hl3lXpdt̮mja$%r/ݵ" #(e; Sf(@Ilc%qE9]n4.45r%i$d?*8.HuZT@} +}O#s(~BF1<RK(ws^途`RA{Z7`/p\*3dE Y,kWğ^Pt+QNy%CI#P6YRHzda8*(GCDWcH߷5̀ųG CkAEG 1j`S ]}SO'ꨯaE"]RLf_~ޠK~POK]_1W[0yaCl4 6{8ȭ ,٭j?[/B>pԿSTr#ǘ޹"Ɖ8yc ʓ<ȓIǬӵWj5v8w؛,N.ʴh(k~fTp.kōy%-K(6xgpDo Qp#6OM~nGnӹluG=Ei endstream endobj 667 0 obj << /Length1 1616 /Length2 24629 /Length3 0 /Length 25471 /Filter /FlateDecode >> stream xڬeTM%  wwwwwwwwwwwwwN\sκ3ZOWUUW) ljFF ;Y:e;#_3<#dg+j hM@33 bg2pPŠ/?!c2qZmB_oT@QPԒPJȫ$@G#k5 2:fvXLlMADK `pnq쁎6 'o [kKo__0E;'g'G3oVEQlaOn'_7o?% lu8ݝe 쭍< fF@'0 _7wݿQ hmF7 [xFEvSm?3Ch o7%New"?O'9w7 w @%cEـ=O=R$0RF[!dkWFz0A@SEoٚAzJ#ZLli<_e +.)@ߩ)Y/Q\",lcbg1s=rL.VCk-gr-_+#fkbgϴ8ٚimWߢs@v&$Th]4 eHg^WKېꇻJo3],WT$Ⱦ&iqݨ`_Nȓ('FGnhrx%;{:5|@?'0tkTtdx^4o{AOlԋv(gP|˧\۳iay[ҫm87NI'1UI"1'^H8Iy=rxj ~LUmTBX ̙IY/xmPJu`.sĕd{H nD)۪AF5ݛҿ Gtx-6R{ {]-I FaВ@;[ڪ^oo oі:5b\~_?>fz 55!@=['w"3n5k-}. muy-s*q'z>'t=0dbp#a:P>`D鷣Z4k+%6,WRWfQ[C=c)ə"7\JG!1:n.s!}ڋʎi_r%-|?~6u0:E!#rH֒X̐4e-ox.SD0n~iyu7TvVMPlTZMpg!4ՒtGrEhn #ёQ>~XO^mm}reG! Jڼ :1@Hz' 䵽 BCW~}p~+DJ:M+vm ١0,Y~\ⱀ|7߯G1GC+/ggoU ܋3hN,3~nXMSZB`׫39cV̺9xBo-jWdob ԛ(UgXAb:LqݱAGNJ Epmw $ `5ЯNPʘ8oT _P,ߤkރPcHկ=LPIZDwt0 ֟w@l2aZW 0յ&FXмԥV؆L|D=ՌtM×"'/g/{&W?P$xH6H}>3o=Yy9U~:AMd5~/Q cjRUg8A$o{GGEWoT5!L$c-O .ʟdcC^2mX~OYSK -*,.CPe&_y8va ay-H|9dZVAu+~նsxvS).1E(!l+>|J'5玱Lj(8HH-kY:$_`2'D6MJbx]WEqG"aAIw2't˸OjFۆۦlYH^~E>RĎ,L;n.v<yWmP3pɄzӤ;oG7)n`OG-H`RΑ 5)h8|Xr*SK7HM]Ƥ4 [ooٞ2Hss}!aM -7׸kA_" ! A~ ghsf(xe(l7jļYudULjs?kPW)Nƞ*J)WJuTuDfn# 7ӕکEDX< =ML&NGۏVF*e;V5%/sk3$cA/詇ˇX!A2N ꝷ눵kdd3{|h r+!伈ĐiXצ}ĩ$%Τ-t>\~O-!غYNNʨ0] Ϡ2rc҃HG|q-}JBxKt͎+Z336%Z qZ{ՅRPа.UJPbq%''U7;P|2]E\CLT 1Ɩ•cyM7T_FZٳxZ܄2Y];~eV )@|sWr|!S,2r^Ÿ\އqM18ͷnsQ80Pvai름=rPäsldD.,o$?;}:`)njqli?SU WN3wx$7晳\p纚\k-3 {i{ʆfew_`X0ю9%1&qBN~ͅ2̀{L>I 2ZښXa)zzEhPw`]uޒC7i'}F[ͱ_@\oɅogEoe^{ώ8_gKO[HF'rҐ 7燎NTYԕPov ySELG8M B?}wxty 'LKؾ-n<̚ yN{˼wj)(7UFzTcm#8(N^qG.MxG>ou#n2Iz ,i.%v 1\p@^&("^d|qB*UȩOml8F PSW<ٯ |STf2zTXٿ~_ ZLD 0O UoJSLÏGS f<!RPhQE9)w{~ Ր~ .vG ;[)EI iͯgö~o '~mPm_ߞ ^r쉁 :qg c'O+;7݋Hh|*R2(u*WO z$a$jP%yH=OHb99k>kWѵkvG)v!pm%jP"#gNz̢Ч vbnINU16=>憼d2``{"֞`ý3 ri+)$_ίp^dexM57\i1躎InEju+0{# evMGJ>glwV_dMG.$s?s_hRfjC^N:~`rV5J`A^nOCaGRKA{M3Ml] UF1H}25j&F}5q*gO2X/p!Qb5 ;i?0 f/$Zۡe{hqڄ[ĵ$hxֳWʰٳ~ D тL$$=f9 WtWA|7.f}ZOSŭB3? 7iKy1:(ukU??~|8:F.#r;V؝Zo2$-Ӭ uoJ]R<u{H,sb;vt9Vqj/>hMuH)c.>G+0RSs_{Е8uABҍIdXtsFl[>a nf-|I2t oPc!['cL[WZ㗔SVwrTxBq74WmS:7zeOgId5 $uҩljHK qܡhbsF'"42Ҋlze*a3dz`!Տr PQlVuY/ă}_o;*l":wDެJSOK'.:ϤRW-tѱse=dF sy{e&8DBRtȨ^ڷR,e"0P {̔jtK锩 , >IJGG+!{: v}6C8F[4b&صgts4&J_˅$9ۯ7d] $)5N}&FS¥~hFtlUh7*Qܩ)w+bQ8\+t!a?L(6 $M5F^fjI ֎%/.<.9g%`-9;Wc c}Tƒsi,tjV(Zhz3v{Jr`.J0P'(.k0…~`zQeg+%]4FF#'A׭O$";>+|xa]0Q*IG[XO_5Y*KĖ] yX@ܛ#_`igD:=c4NSlˑ@Igb$ p.ܦ ֝NuEyr'џ)tU'9U4])>װ`0Fa$-'RhWÿG.M{&Bń(nyU-Up]xAE`OI >q%  = z fYDn+TY B$+\2 J0%`Ut(729 `_7 9gKM]39z҇%ӌ^iֵZb=NO?W}Qisˆyv|`yY/A]g ]GE{e@w6l8.U4' 5aJj\JvSb9 Ș,B>ygXk<_xSgԡa,/쯷4ɫ0eYrDhiT'!7F6;`)~d Cf~ )-G%*'Bj2b3Љ䂤=5x}\Q!t  @}ĔJ~Εv̹  6;"vQ_jx)zDs&r;tQp>/k@rc^nck^ f߿mT lKt=%>O.Mu;c)%PB==loPhᦲeoJ$@(#3ɸm|n&<}Gbf쑹Տhx%:tșy>pu~('1JruSM%eA|h[DBۊ}V'™+Ha&]Qd:?$!䳺f5"{~p?qR>E{TDg/wqd; ~9g K&[FXC ~@ӑ W%WLܳS!.IFRh>&A>(m{7ƬZX{d{ڷ?Ok?Q.}.ZpŁ˨?cYL$χ9H=&F>-,ªc$1~)z;VGL;/J!/8 KvDbl@-X5|B_]$ N 1:|%)!;p=tqZ71WHaלv_g@қaq/q/h']oPW ^V;ؚXW0':;:S[vߘҁ o f 4d\Gg@YTFK1.Xy.5tjf%Si?\.%L^uCڔ~8^qVyzPpgy'o 4]TIiԎ\o!2FQ;+(!x#a}('>vg0q{zq=l vu9H u^p~h]P1&qBl^Ovf]j?\ 埼覴C8$'!u<Ka;W`& Tꗇ.G2U1mS)Ǻ.$wGd7'W*Vuؗ$?xIĝ2~\an}b>X'͌YL'Fvfb I+iR{)Iu4g0 zjK.MVM7ZpQðD%F_1|l|m2 m9s=h6#gOb ̉KVΕ,U*YꛩQ 'B܅}FW|]%bin,$!DnA[qݵ/_pmu0}@ qbwKa މNү`ok%q qova+]DkD/ۄ9H݀^f/ A~}ڻt/Z)h4 6*'~`2V7:#9{o.# K/ct|EL#.hh-HY2]ƮȸD)*]^1ަ @Dy{νwCS%ۆcayLǎ}/ֳ"(syx4~7>|9y&s2n?8UBgMg:.-U7&qE/TFk=Jgr̗e ۅXŀ ] VfJ/;W_RGA@rjԃ 軖C?;KNYAJ;y JΨ}!6exSPXd*mʘ~j WxIt(bp3Y>'%/S~2 t94JF2\"/tä_rFmomWr%Qm{[[}0hjWWd|Ed\Y"r#otis{=;1F_2U=ܣC[F]fG" 3L%>zJvnp$ypkG:#ߨx)Ϻb04QQm;}3;‹#χ3 rJd߁&7%*}ǴNzտkVG!:[ 'bՃ8KS*e 4GY0"p ) Ndt.ώM~azXX wR}X}cŀv&a\ :23<  v~ 8>2~V(ɢOvgRUYoOYK-T'3ޣ h^6JD SzygVd9uŻh%W0JXEA ͒T |g4[Pb?t{3+K $$ 3RҎp&sј],m.vo{"걳p\w϶?riaH;\A<oUU; !57MM_Z"'b Wt%=&/蒠Ⱥؒ_zaC䂩haJ{$Q>5شnaϗ/ ~ё=A3!owX#<2ɽ<үV']ҨTWyI}tp= aB_3Jm9Q38!i 7ӵmC ִ%Չӹ1#k KB'~-i=2;g?\~5uhnJa9&mjϨ(dw"H']*m,\<).nYs]O+" ajX_mqZs ]\/JIIխQwr3@0R3T25*"CEi5Lmm.N!(:?]$sQIQ0,KyK Q|8nS%8o6h!X?×s4˦n!\7i@sAtQ=b{$eD@܄j Q",jE*bZMY`k9"D(0m4[D&!v=nAV㵎.-pffEePs /qilG@$Nxj0\.cM 0cS&{8P8UR <#8[JC.7_ǛKkҥ>gHh~+&}Q*'m q|n. UOiPL|tLa­F/֋yJճ#rݿJp3C ^Ɣ;Z'G&e=DTg-z:r?AgK|,XESj*J~ؑn9?WATnZRqJҚD~JLRRJf~V[T7NGr4{cC8aW4[xDTh,|M+ k7LQeKgu>Vժۃ_^41=Dc۳Ȉ`lĪRLFhPO9ɣf̙`bkHOR oHin& #Vb쮿~01y+*€0DˠK 8[kfǣ~֔c_]+hOb=,sc4uh7l!ڴOÚ@ bV̯<!IP,=:0@ٯ0|u~hXԞH 6!vEg\k7W { *ɖFz ѭde%qtaI͛<0·S0Bn˻ǩ!ⱞ.d-H5a'R0hwO` J;育qTFS ZΨcq7 홱,z34Z82,ɲAP-s`%` _tQ,^Đ֬|C;1GaKJ]~18^v5EI#9sS6^<6@sҒ[F"8GiK9- CdA]L*ҵD{|Oz`Zf',Bᕮ"\E]@m3k9>.m9p+/h\'2"[ 1Z×5-swq 3K54&cذpTvpX3|x5#IiM_!03ץ5 ֵ:ZJFI7 96f_2N 968€'[KG9?!IV><.0①6[˰lgš]3QV(qᗳ-Hٸ͈yhPkv \|J>3d)t0Z,#FC-tX@Pp"I f]]Y>1^{Yv`2 O;ԥLXVռ}s?S-6^;ŻjLAƛ|rC!k NY9&?]<ulNue_e"ӍXWCn@:oB#\|fyG(wt wR'BGC Bދu`%k I ˊtJdroUiI(9w^6˺u_") |%[iiU"ҁN_Uq>PY~s 楷1n R[wy Rqi; S5^O,:D·.;o<,'VpurvEi|5F{սDXF2'veRE>v-ϱH'"𕊉b4_N|rUk9M/(Jl-zzYF[7Hl\,'!PG-wղE₠t_9_7*evG}u@6:\FO(^JJ$TU1TK.n?gQWs6l Ρu{N|r"u00 {X$91bh`JDLB [&%eOphm[d%D,b qx^5P_w`  pqmt:ΰ +9H +Ps<)Ob?a3A!`-cg7G1Z#^( 5$K5A3"[`Z88ROPl +HFIomW_t{<\՘ƛ꫑]jCe4w"z(ּV+l3(K2SwA=Y@\o`'V!EJ]P63ۨ\"PPjqo,K7mdZ+~Z=(h|Ę4/#}Eٹi L_T_A_ȇV%,qGal&Q^2>Bᰙ08D7x̽A\"AKр]ڗ2T|g\9uȳf/ڴ+%pee||M_gbr`lsz6 ( N [XNLJd{p汶Xbq~C79D+ g&.@,>Id$ gy*-unoDF9ڝ[UR+&HW_.U[Y:H$u'.w?38RapʕKf>Ѹr8rS fò'Zi.b|:QU9NrYo|kTG%g{6Ģn>PcQA= ^s"G3,U/E"ѺLݏHf/H İe"!aєX7Jy $iE2cEEt+)]Z)JG0%<-=4|"CS8$_- {=^СycsӠus"ȚzCo}lġB[5Y"3f5F]?J_%GA翁I⼩uOqa@U9X_~G&f jUeIv9a 1zA?2DE~d?;S7:dҘɲz[ hWִC.{X1|ǝEizo0fyH_XF9ԦDv4COॻfgG "rt1M};0'Y|fS9N{$J$A[Hv*b|-@VM'͊\*4%j aΏ8j!q/j!(oWS\ ,]cwwsgh3hRZ ed!G-/La+_<- Uj۾^~dՏ, VdB']tŨ "A\Vyx"ݫP[GLW!'gE*{.] ?wIӄ~8ef-g4a@ KQbpLQYF,yY^}`orM}Fog9!`d.otqBS6=`2Q1_FȫXWp&gZ{v])VK.jdmwa߽Y:|&6~Lq=#+(Lʡq[3^\m1xjy1 :.{&7ts'qnE*!~Q2'l4P/,(l`Q+S$.3"=dH{wZ9>rc#ѽZRLzN,öpԫh]$Er ?0jPeRߠVUen\Uإ *v zaBD_6Trk+"(m07x@<]-;P,PQ y4 o`[Z%8O1x2zs U[Ctx= a,[3Һ 0."dYp'Y0*#bj?{yPiE Eq4 ߍ4{~U G9]f?\?B]FhvhQ V7AD1zKfb/[gC^(Y͚-C4Fi%g=GlV#N2d kl%>mSh~YuY&='`)ob'U.D<@Iő LʌQ5ޣmZLH+6L$CXO9LҀ3uFe!u,X+6N  5thY'%?*% X9xW \F+="J-sܭ|v۪/) ~1Fw:"]&>(VKk0V7K%-XctR. dg+hָ wV #,ίRIhkDG9Gx8S~cOAtq:@HҿUV$\~]н20vpV("b9 .h/IL$.P)~C3*vRci.0qӲABBCD!Lg}V$Պ.*H cn2 r˴a;qZԂh[EU"-6l\h^N>U}h~O4WML4N~ yO 0,?lc`K G,jQ,2r=K 됀m[=FQo4ڦ1Cgng}Um]@E{UZp #|v}Osf|?8ƪ|FŐiyτwk]~QSˤ%K.nX*bV4Woֺ$>s2)ETMاp2U=1LceIzi5e)iMZIP(챵8i( =xX(4Ƥp2,d> ru'\IbU#%,)ztק¨a6ڿ̲wۈ& S$RDqsHωq5*nU^;ܣ`EWS,vH359p:F{,yb3=c>GH !y尃Q!S/>m@5ell(er_gKlC,A> EPOTpi `_ʾwU].~₊.X_j Jf+"n9gk3YB5쟇t%4RWHEIGia@q~ $;C X.zƧ aC8]峋`+"̓o v~K{7.16P'K T+ENf|Yl(܈/YqeZ}ib@j [W6"ɦlU>7_"zɫ Y#ɊcR@yӇ[ɉ|4v D,@_ub LUQRBz)U+ mI|C m5M]b͈Zeh46~BDͦɋ@פR,ŢiGoӨZ/lMbIO4#YDB39Z=h*(v7\bn(4{Jǻg|SNgaasVe4 CQ{SOQ_.!C#G9sSjJ)<\> !K2}9Yyv'o~|HxMnRT[MYD}E2/>x`[12GU'a)D?[Ƶ2X|Cm+Rmx\kTc= #oT+A'LB)?pBz*^ɲy[zW.ht@ G1Rڬw<R VBK\%Gp=PUɟ[qJ6-(6ooЁ6f{{l`;-d)Mv6+JQbr](DMѰ_\{Ik:nx}Z $Pқ $i N&"V#If85ҟqdoWPOVڀ~I!~פ_FHX㑞VQZt+YBbW2G\;_ǑE#{uou-0/ sM•y] b$֊2fŊC%#=-r>?ʴaw M9N&$_,_J)?SY a(^:km_[PFu7EnLe%Ld{ m4R,TJL>HU=Q^%-5v!T KnAkMy|ZffP[RSXz(~68x\WHlk,ځHK) I8ĎQ1JQ$RRg D=wlw#c"e:Dw #O| Vce5LUS>}Mbbtzޝ(Jz)%X$b-q.$y7[ ӫRh4 U}c6%j *@.qPښdbV MG<'I  G =n峺L:U4J>g *T`#H^j4㪂&JbEW9Hw1 gcq<Լd6i&>|pRpŁh ExXT"kM5>fm! 3,__ڦu(6߀mW疵"ܞ xkU:@ c>=% An7.RM I`+X:?:1pk+e$xiǘ zpwcg #a ^2O+wSۅrnsoE E.MBXr5n6ju`'"Mő1 9= :Rk%cT 8r }plaְDNT@9N :R8V46 9.;ڡ(_Vo]|%1Nm屆H!B=J>u)Xh]b'*lIBMEӦ|1Bۄ kuO1q2.'$Ul4`ѣMuBI`LO'(#UT&5 @n'ٸEXw_4_iˌqGt4|S]8qldS,}a όL/XP̓U k6hv%FW@ݾ&QvO6q=V4 :Ѓ \s]axS\8ȱE}?Wట|KG)!@CHKx!q/قL,O6q4nbJYrM&îl;8H?.#BL+FAQoԲ-ոf7M3P$B۴m ~1lA~w5r:i7|wܜR!qA$doBRJ4GwGS5'NXK0&}U !lȃ `91U,21ްo;?21spEڐCФ 8P#he= ~xطcjZVY(EiwDCCA J/yvM˜ pku+Bv4]˓8fXQ7GNv E=]QSwh';Z~E}~Ubܚ׏aL$ϳ3XNE8V\ԲRGAZA/<=9Rp F*]""ߛ>؛U[GˆF›-T {M \_AZ*qIwMLmE?A'.{&"@"@x$If!KȹXB|ʗ8Z1vt9x u‡9ɥ. [φƍ~+fep].y{o4s_NT_7<6h X@\=:z_wڄ=+7Aw7w}C@z=U㽤{jdg9QV7mx|<"ElBcKN閶a"|Ulo&*!4ڈ.jNɿ~WtJ5G`PvDiS!ۺga6$Av?DHD(?Ш4x ]R&yQI-}~(&مQ8yXN2?ۗY KŒZ}ʉO& *;*Nyoԟ)CRCYǀ! d5uJiP*] ,EqtVe;7K(CB,履]l?>GJ hc*T!T!.@²a{Q- ܷS['#Ex02D9B>1I Řyi/Inđ8{ʼ[S%i\9ʖFÓ@qqkU 5TlX9c/uݭDG$"^ww4h`PhOwYޗ 1Ousgn9Y H,~bh'"A6`#t8^ P\}cO'`95>\ڊnΡx^ɫ.l4}&"P)r2vY]=^)Ώ17±EP/$+ʹө;pԭ9T;|i^J*|"x-/?c ւPl&je%'_LcR)s9y_IХ3!aoy=*=D! hM=Gz>UsGB{^A#Gi&S5T[4٪ؓuD PU iGǹnKgym ShIfyb@_G 4-jFfj[1y A?P'<\f{2JE3I*F9OJxMU8 )ǍMt/=XM3Ѓ9]e2ؙlLIt4v+Ba_I&KaZ_@dԇE}:=)o" a#T' e_2M(8m^e^k 1'vH:L>T\;Y!ҫd; $yTa;y>vZF GLwm's%A> stream xڭucxeݖuTlJŶ+m''ɉmVŶ*bUlU}wsusL&B/djg ugf`)k(Y[d饜fvrrG3VD&37779@dn ࠦ/?H'-hmgoug d ((jIK$@[G. ,h9ٚj͉K `p>€&@ := 9l?flٚXU>2E;'g'G3#?t0r+ؙ}xڙlu8ݝe 쭍<>r;. dk @s#GSk_WԽv{G g'3GN [ƿvSb@ǿDמ(` 4C`sH ''5O{ZZww @%2/F6 k.=5Rhbm?l?f`$r*M,fFۮfk t?4{zf&T-@&V E4e5ԔiΪ@O!ggX^̜LzV&cq٘}1k-gr01011>|71[;ӿv&_ㇶ{@;`ou8:=̐! E5v~[ܕ/! _Ss2";Ո:݄`RWR/y!hgu;ZIvg$> "dhpmN<9odgCǛ7'WN ħ.t*OKͯbw}J%r/hӬ|bUx9U jtPM#dqEeQ#@n $8hqF4 Ј5o;a!1oo\yҾ8_#DT&SJoY Al `ߺi3Y]Vyz_\b)' N2iGeSXmf48O0IMYK P$G!.B΀Actj|>.96uf?:PD:^Kj辟|bNM*F}(6o؉6-N芩J ٻZQotWސμ/?AMPzƯiǽ#ד,+;(5Xz;WNg_p=^8d>H,K{2`pwTeMEk:Ǡj$q2t?8Cj͋-DT~a0qޣZZeov^wjg7[-O%{W2sПWیg(-p"br邵a`[d.RgAf_JwESꬉCy ~UaȜDH {=OudnL_tJ@fZ$ #EU:y-1Ku::LH3O4,.pɷf틊 #> )A&am#LC+cFW+.t4͝ }ҧf ] 7[ p(L$y,r+G Y6x^ƛ\#uJ N& _3O)X˴ ҈9Vo?>s*W< wB stW(e_  sDŽlSd u1yE݆W_tb#]N-E"7'0FƷ ƼyuIl%'3 d!+{o:R͛X&R&Jk@Zt!췔wgٶ${+`\aܧ"­*pY==f=˹WbN8q?~m3ibv3(NR|6YPw3gT!|aXtjTj/xb m7;p!~9~dINo` ZH쳀:_#֬~uG{eXaṶHNanKp+̾=ifջ(2_L]e1WU'v;N4eeک:k<Cq0`xshrFXp\Y>^ P1HVQZoJz8T}/,!>FA_Tp}%K:*/f0a\Oq|+ *mjp֟v#&_dͨ ݕQ1b`hG~BG2ݍg*ʓ*#뼼<- y$n#/4|qL#!!?ʋ99GW(9c3Xj§;rDHk)"+RɊb֤P Wا=t+e>O;٧nݥ@B+|II/uL963˄)QwWZE-G|&}vb4s+mn]1‰{TFdo 0fm.wɊ[@*1EKz 9s;^i :]hA3(6SJbIw> flj.Y tQEYgB- d*ɘAJfx%y9=0؇>LIPS+_xD(,Q÷ 4GBczgϵF vU 0w<0NElW3fYx_i ]?=pzA6f/]զ')0d,-uuR␲fM"8 2*ψ{U(DnL(qƻ;։\A٫=`z7x5dn'^Oy{XSu&Uwa ;@kL{ZQ4'P_քGC$ s."dI%3Zʹ'z6-${TbIqlLl*FAeǮ覒Ǝ}gg;j\:x(\Nl',.6/|oCXq_ mHt_?K:KsN)9%۾=n4}R[{D]BrQ֑p1qVjj_|QNM'S˜X%'^)T6Ģ(TJpVNyjg]"U4փσxCZt]TN8GMύQȞ%T^7usC qA*I^GrR򱠤MW%aͼ쵅 LI#+OԻ *ƥpN/g*>өf>`f m?8uUoj5j-(k:x{U8Bza-wWQ?>ۻP^s HWl=Xn/Y5MxP8$EWܛ=)>s}C]&t(nk~v諶Zffl7t!Dۚ械#|m;UDK4uG.U&l25* 8ɔC#R xoF]$ WSoTJ(wQlS.AI-#PwXTjOOmY~TRz[oWq bBf.`#"oWY0&xCܻ}.MPWlIr&VLZA+DbxS](Qa#*ˡII;rr1Y = SvCߝpR! [djeljB⒒j3r=rg%V:Z3UY\ 5ڎ7J`J-~p`88;Ѧ-dE%!.N44~SFкv;ꌇ)3O;<+-yng|O[@r\qj{Z$jpX5L(˾"-)LiyQ3g2GLVdjjFi=;:{y C[~6ؓԧJ~eq!"x_X2'o^POjr {ԚՇYI2*g9ٱ#X36uD1?yFq0styCip n8>VKCp໧Rgj0JΎ׾,x*Dfhx0rW6 r3_UEo("QZV `񛅞y#K.`Ը}|#_'t[E$sIɐǕ{ "41Ha! 'WR޸H$ emVqik" 4d(L֊Nb_.)I?.鿷&Q.ܷ [?pQNm|`/-%G }{Ib$(:U7tI_Ie}o8AWX[MKyu!t8y?KW-Ҙ^s6)}9G? g,HUBfwk#ItԖJC\doxecɛN؊NΆ VyO͒-{q.b"E b+YFy\Hi *p4SвETNG'Eb50FE#0te8킇(Žfp.hpCʱLN8$p߅}c14&I3GwY* o6,t.&+x1/^0>,mG9ſށ.r. HXn=[u;R3z:U1p+DLr`>P NRR^O@8!8-YYWCNXĄ [\NHHrt& uy7M` 3n!17 j..Oʹy|@ePPKLMW;Ӗ DLP,DZ0?7ִL+jֲ .67*(/~6FE~5րI @d88@#5Ogtq+x\Uzk8ʥ[ܳ`8N.i# T̹xL->Q3V.ȳ9k #he.CoCTu!O k+9OXE `Ep@B־lm=vT!\#nnKO׸|}1q =k3j[K}MT%X}FRۧtP.B_c7f_#7B-BB+YE!_aJ]{wx#"~h;C9 Gsg Aȇ"xm&1;w|vF2j#>K"u\zDRStC5ۡR󡒴6I*fJȉ>lRetwvC%|zrec$wi?,U 1]`Vl+́8.sEnA4==҃=.. j7t#FHU2Q:im7liN)k2B0'i Ѝ{н-#i~+lʮa CITy v]JQ^bˌ$O,)P< kGioF䔪a*\K,8OBU3L߷&\w"*a Ԋ(J'q3ڢ9^N gnEllJ/\@`hcX&(X=\< 1$x‚§uHP4.@g^rBXT|y9)vR+\X2DӟZ^xǒ-'M^k֓yDثt'9?a9\,PبrzL$TZ #0[6+tP6LO{P?wy=ʏ?9.G=yXq󀩝&iyQe4~Y! Ӹ.EX{W'ש- 7*[E5u_~r)e=̾mt;ۨX|b4ÍY~ԦL ? 7榫;tY]m'l]XF4UꯌZhY}eS jH  ØL "8HXUM a)?*L8`5 #^tͶ/9JL_wٿA$˺*WG1mRT%RMI.v&?PmPGe}*ZN):kCgsg^ yHK>oo8 o3qؑ%SDV *}^%fWEX>Ʉ$s̒} k^|nŷ"F-FZ-c)<2? ׵uP\k/թjZUv~ )sXTorq~7ԏ6Bg?OODWXϜ׫7*{[oa)qֺ:5neFHJ2cpp6[?6T#5—*B#D_ipZʅ%[is~?N: _3 [4 .C~Dr=رJy1;\qWP?7n %P 9}Y%&+^)G.nGȏہ bO^uPLa}Z$]LoӇ}ipHĸOgkbP1LVrP>N+voXHUۙ-2lXSm5Nw;Kj]EMo\LS+ Sylf6n)Wn;u_Vt (-4,_/,{9+ r} tcv45[B/}@ކB$3u%PD %&3~Y’{UnudDJ0.Jj ShF#N9o; t~Y!{ſK[yi!Ka*H?Ub˒%Dw jv\ ZE1O~5glBkM_'W~o锾7H2qDBmLkD&ɜR\qVaq;mͥT'ӳ⻏_p4ȩ.=sS~~))8oSѱRy!M,U(#F6Q6`.n{(0zg%vB%R&WJs**5 r c49whRgxD1 ~-oS~Bh*w2K!sOD]=I`@Gݰ&oiˢA$czmR2}9?| ]upoʓNm#$?cZ0Ca$#E76'>Uģrx';ҳ;ZT~k)GB#mѡ$e.゚zRt ᷼ݘ/֭`?J6g>SH Ar意Jw̫#'_]iI˶n5{w?"5΋c(@Qx-KPK}97k3B1Ink69pQ@3Otdpd?ScH=9߸ӠkقTy,黽rcu~4`=}w mRq52<U|@3J?/؋JuTAթލKYx]*uɵ9KQ~hcX#OEzvla$o% 9LjsS `%xhjlimWt))6K^(VMmx/=H?O BK|Y~צ;q3igo2UhBj@5)p)n|HSDydeSPʄ]ږA\Y#pr}$-|Cs+=[QllL>1P[Lz^}ԦeR+ RSU!o(bHr`2MN9iaq߻ {[^ ̢̐0㧀K#ƖhD4qӣ 7f>"i14&- xlxwVt 仴2+PqQE|l3<7U&rNǹC [ !6mKIU:HfG8T$g+JJ<ȵ^MjVN *6V?3dಬ.ݢräJƌ HT&\ e'TI\[Jk(f#ʥ_{F:] kr4R 'f-%BU-"{%$?;ࠪux)6pO'%܌3KkPq^)lK0$1ੲ21t@A8 dӅ"Zv >ꘊDlg(ei(ˀ\,"c*% v5Qt:]YT֫ƀuйdڃ=ݍmRAFVt A;Ůf  ai4@!:j++wcW$B^^ ʥ!״B9߬!2&e;;~.JpJ}37ă3;K^%6~l`[DiHrG8>_x(O"m}rCECIXό+!04wuR^IX8;21sХxo,X06X@0o|˚* )aZOte]'#F"ږ^֌?'l'6 ª\Oz7 R}?8ZfHBKl։ws,ՖQupJJКb26A@WD=-]߷]&ӹNj*p]39YBhю&Ƈ.(9ޡ6k3f ɩ.uy30Ы%y1C,f@; _CO:Qܳuyv9"*xz$Lʷ+4DY?OSd^_֙Y"nnlIA+W ըQq0Hu#ƒ4N$w\i 5Q1=IWp8l6vg䵟IL3](*\iodZRNwjB db\wŴ}p} C//$TccF{r;GK7/q<6͏CQA-h&y=#5L endstream endobj 648 0 obj << /Type /ObjStm /N 100 /First 917 /Length 3343 /Filter /FlateDecode >> stream xZYoF~_>/ `qGva$ҬG3_U}TcyyXfi]Uh4ъ5\o8)e=4V6 B7 ZF(Y#,g3E#* B7R[׶.t kQFpQ8Z6NN\93K&m 4MpM5=@ .ЉF[\h9wF41Z4p5F0܈иGBcD78QM͖:/@e[+`'gIJ{qhl='YMxRSyظ$a}Y Ol-a刉M=Y c—G92?w)̥wJKӁPxd((C'AxCd8KP%tOkg=W0pxNTSHA 3J1w96<$&1`'ⰈicK "PCHSz>|Ñ~@KH}PAO_1z ua#}|_V[}%PQOdbTx7(ubhFy8t8yl2@k+s7OI/OآNTJN:3/)C˾(@׈Y1?s-SEHԫ_gn}^wf5y˯/Gzy;ma}~9 if 5kmϻi-.vd׷Yn\[]._vsg(ҡn|vujMY/m˃/po>*g/=løQ<=p_v޴]WKĿχvzUHзnE s0*$z}>mnO__} rj/0|)l/7|mګU,yZϺvqI)[oղ{ Ӻm".۫vޯ.Pzal߷ڿڿͺ( IE@2P/ Y%xWx:_.T3 a'YNav6C }aĆ;FG=@=lOGgEl3?<:(|}}=(ϻ)As7!\ڃ6f"H׻l9Fk5lM׵?סdR8~RVt}=?P=Z9/-Vϊճ0(vzO} ]T߱~׵- XOw+_. wϗ**=_ nxC?d_ ZHt~ů%0euDMSNK2v*^UCpxuRrS ogrf:__,Vzm?Ǽ]7U +]J}X<o!!aSx' aDƩX %z 2[: :;~5R |Dlo!"xl]"B0i,6!=.Pjg{"UJNy69l3wb^ǞgR >gS;wnbǾk \ӟõb욝rM4ܻ>k5s VT~oOO&oo"..l5M؁Sէh@[)}lCR5"c3޻xĂ`c:c d[鷍h$Ӑ@ 6x/,=\F8z]C?0q!K)i{ZWt^t^:蒦"-m֓PxjT%'u񡮺_"bu]Q*L嗳"*9MrMlJXRQsXfi>%ajXI]Ugs5KuqWӕAE]Wg37QR x[4JӗJF&Y+ YfX ,(]D MAٲ H+x$&u6Y7%j,ͧ og*z6(k'uBW/k.5kȆHd]+Jt2%MCu`C/iJ6(c`0hTC6?lYҥmfR*t z u]A:5Π|i(XڻJjdIuq A٠ԤtUclPbRW_꺢te4Saz W5C>0:(܀7-*_Cd6K/'Qڔ. φd(+&3M&HpLEY; dFeLiWpED(2wŇy|t1t]c1|Ęd$cu]:j\Nˊ,Q]_ݒC1|Ęd$iL]:kle &-N Ei2 @,3M, XpSr2c&Ca4#ѯҼ.mCm*<C %BM#dd>fxGw>yT A HFO e"+\d.9Fs$f2ȳ"főń4G袁IH t y9r6DB"arb&-d !7MV5C$ȑj#P֒c1Ѱ67O0.{#d1yt9"xVӕ0G=ĀIbSU_:( Ϛ056Aa46 Ȟ&] endstream endobj 726 0 obj << /Author()/Title()/Subject()/Creator(DBLaTeX-0.3.11py3)/Producer(pdfTeX-1.40.16)/Keywords() /CreationDate (D:20211011193122Z) /ModDate (D:20211011193122Z) /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.16 (Web2C 2015) kpathsea version 6.2.1) >> endobj 673 0 obj << /Type /ObjStm /N 91 /First 825 /Length 3026 /Filter /FlateDecode >> stream xڭ[ߏ ~ه͉DI@ HЗiOEpmٛ9&_RmCYMQ>hͬC;4 Zϟf@bgG0Yd5!8{1ѸS"Ґ"'`&38"_qpZ0XHE|3G#<`< 1ȴЛ: kDy,޳:;`m00ge$<לWcKzmfmZ[j>K8=vC+}{yyqc҆ŤF"ӟ=jӧ85 IHkb2(!.ڤkF65q5NC ]k&bҬ#&M؁(8 B qkŤ[X #tr9"a*G)t*GƊ` I&3l N_Ls`\lTrc\I.ݼk#n`uLFÜ#vs$btkuw HD\DbXŵI!.DT*FiqѮ R!Nw _ũ_rē]lk99V9BKM8-Gܒ#n7G܊__x{j:3{sk)s ܸB۸m\ƻ=۫}NM߶uhќl/Z]YDhw!.%rfuKۉm'NUKK?~rhkO⦟Mdg[onN>_}߯׻!8߿|xtpW駇p7P}kOx>=dL1;am OC='1=d6'$OVc?I1Q-<,+w5z³ũ3P;y--t70cgg@~ϗ?/,.>>/}RV<?>Hj~#>ql y9{}>]Q"A*)شԜu&~ :U؆NNW> ג@{&r0o{"ҘzA! *5Tg 4VE;k>4,.CMcg7PuD%4ZbR0ҏiZdb>\ DK0hӒ^* ATȪ$U'着DAq;]bcjuəS}EKxa,jQ7!oi5s$֔\ԼΖQ#$_UTed]g}JZW<}lmH]RSʋA膖.]N [z: "2(Mꄆ4{uCٚQ3~]KGI 2 B i MLmmܶl#]166׈-Gqk?r2CcRjE;4FCAuq[ )c$gFaۯw"69ksr[MnUmH]x5~)Xj#1E CtMq>Xa: ska̻u)4!-mВier]}YR^fK}u!Ԇ O@wy)5Aȩ,4(E;9t./;3?޳*#* ЭAu~1Ql_PJIm7 sB:R9}Q9qߍitʻ)O*{KJdBDn(_TUkh0C0nP>cLm_XjɼP6Py*:#PP^fg?k L_X!l~ۇQ~ȵt:'/orڧa^NJ endstream endobj 727 0 obj << /Type /XRef /Index [0 728] /Size 728 /W [1 3 1] /Root 725 0 R /Info 726 0 R /ID [<2624AB07489B6A00BD9994FD80517FCA> <2624AB07489B6A00BD9994FD80517FCA>] /Length 1576 /Filter /FlateDecode >> stream x%7eY{z;fwvώ A@BJ ,BH 7(ґHɧ}U_z۩ap߃`y%UN 95L+Y0[)\a,EGY` Va/+aԧX `=| 6& [`za{nv. {`/p!8 G(pN)gڰ7upp . :܀^x n ~6S|<'sx// F߷ajIAJP%fKb6p#n7 .*zKpUz`I0,aFp#n7Fp#nV_lF#b>g`O.GFp#n7Fp#n7adq [+s#n7Fp#n7&"hZ^nthZ-AE"hZ-A(-C=ܲ*Hn$7ɍFr#Hn}#YdDh.kʴHZ$-I4E"iHZI6/ 7ɍFr#xPKehCԴ%iH}#Hn$7ɍFr#dmj=$T~v͗C9o7է|IZ6Gu4I$M$/OOXZbokm%CɡPCPYP>VV׈OI6seuRRYUVȕojaNYY~PN>Esm43뤙0KV sk0O4(WK ar(WJR idTX\*(kzu%R'ʺ姰AH 6*6fi 8&2`rv*wniUV~,TVOa UqeNIeM3pV^: pQVP.e|-]W t n+_Hwt(?>ǧ#D*P~|,oP~)?>Y(?֢K %i&vʏxx[2N voJ)?FgIx]TuU>wfڛ.KP:;/$wʏ&))?^()?w|x^|ȍNND^))?()?SS~<)QS~h|x\|NNDNRRG~n^IKGV)_@հR~T-knV׫֐KRQW_JR~D^WK{)_|/7K|(Q5KR~D^)K2bhSRXOA)_?ɜ63浶i~kw\iAki}JԖTZ e6?6]t=P>fyj<EO@m 390b9ar x0qO(0??f>=u?:AOgPg_M3( endstream endobj startxref 160515 %%EOF man.dnssec-revoke.html000064400000012511152530214170010754 0ustar00 dnssec-revoke

Name

dnssec-revoke — set the REVOKED bit on a DNSSEC key

Synopsis

dnssec-revoke [-hr] [-v level] [-V] [-K directory] [-E engine] [-f] [-R] {keyfile}

DESCRIPTION

dnssec-revoke reads a DNSSEC key file, sets the REVOKED bit on the key as defined in RFC 5011, and creates a new pair of key files containing the now-revoked key.

OPTIONS

-h

Emit usage message and exit.

-K directory

Sets the directory in which the key files are to reside.

-r

After writing the new keyset files remove the original keyset files.

-v level

Sets the debugging level.

-V

Prints version information.

-E engine

Specifies the cryptographic hardware to use, when applicable.

When BIND is built with OpenSSL PKCS#11 support, this defaults to the string "pkcs11", which identifies an OpenSSL engine that can drive a cryptographic accelerator or hardware service module. When BIND is built with native PKCS#11 cryptography (--enable-native-pkcs11), it defaults to the path of the PKCS#11 provider library specified via "--with-pkcs11".

-f

Force overwrite: Causes dnssec-revoke to write the new key pair even if a file already exists matching the algorithm and key ID of the revoked key.

-R

Print the key tag of the key with the REVOKE bit set but do not revoke the key.

SEE ALSO

dnssec-keygen(8), BIND 9 Administrator Reference Manual, RFC 5011.

BIND 9.11.36 (Extended Support Version)

man.pkcs11-tokens.html000064400000007413152530214170010614 0ustar00 pkcs11-tokens

Name

pkcs11-tokens — list PKCS#11 available tokens

Synopsis

pkcs11-tokens [-m module] [-v]

DESCRIPTION

pkcs11-tokens lists the PKCS#11 available tokens with defaults from the slot/token scan performed at application initialization.

ARGUMENTS

-m module

Specify the PKCS#11 provider module. This must be the full path to a shared library object implementing the PKCS#11 API for the device.

-v

Make the PKCS#11 libisc initialization verbose.

SEE ALSO

pkcs11-destroy(8), pkcs11-keygen(8), pkcs11-list(8)

BIND 9.11.36 (Extended Support Version)

man.named-journalprint.html000064400000010117152530214170012015 0ustar00 named-journalprint

Name

named-journalprint — print zone journal in human-readable form

Synopsis

named-journalprint {journal}

DESCRIPTION

named-journalprint prints the contents of a zone journal file in a human-readable form.

Journal files are automatically created by named when changes are made to dynamic zones (e.g., by nsupdate). They record each addition or deletion of a resource record, in binary format, allowing the changes to be re-applied to the zone when the server is restarted after a shutdown or crash. By default, the name of the journal file is formed by appending the extension .jnl to the name of the corresponding zone file.

named-journalprint converts the contents of a given journal file into a human-readable text format. Each line begins with "add" or "del", to indicate whether the record was added or deleted, and continues with the resource record in master-file format.

SEE ALSO

named(8), nsupdate(1), BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

man.named-checkzone.html000064400000046376152530214170011257 0ustar00 named-checkzone

Name

named-checkzone, named-compilezone — zone file validity checking or converting tool

Synopsis

named-checkzone [-d] [-h] [-j] [-q] [-v] [-c class] [-f format] [-F format] [-J filename] [-i mode] [-k mode] [-m mode] [-M mode] [-n mode] [-l ttl] [-L serial] [-o filename] [-r mode] [-s style] [-S mode] [-t directory] [-T mode] [-w directory] [-D] [-W mode] {zonename} {filename}

named-compilezone [-d] [-j] [-q] [-v] [-c class] [-C mode] [-f format] [-F format] [-J filename] [-i mode] [-k mode] [-m mode] [-n mode] [-l ttl] [-L serial] [-r mode] [-s style] [-t directory] [-T mode] [-w directory] [-D] [-W mode] {-o filename} {zonename} {filename}

DESCRIPTION

named-checkzone checks the syntax and integrity of a zone file. It performs the same checks as named does when loading a zone. This makes named-checkzone useful for checking zone files before configuring them into a name server.

named-compilezone is similar to named-checkzone, but it always dumps the zone contents to a specified file in a specified format. Additionally, it applies stricter check levels by default, since the dump output will be used as an actual zone file loaded by named. When manually specified otherwise, the check levels must at least be as strict as those specified in the named configuration file.

OPTIONS

-d

Enable debugging.

-h

Print the usage summary and exit.

-q

Quiet mode - exit code only.

-v

Print the version of the named-checkzone program and exit.

-j

When loading a zone file, read the journal if it exists. The journal file name is assumed to be the zone file name appended with the string .jnl.

-J filename

When loading the zone file read the journal from the given file, if it exists. (Implies -j.)

-c class

Specify the class of the zone. If not specified, "IN" is assumed.

-i mode

Perform post-load zone integrity checks. Possible modes are "full" (default), "full-sibling", "local", "local-sibling" and "none".

Mode "full" checks that MX records refer to A or AAAA record (both in-zone and out-of-zone hostnames). Mode "local" only checks MX records which refer to in-zone hostnames.

Mode "full" checks that SRV records refer to A or AAAA record (both in-zone and out-of-zone hostnames). Mode "local" only checks SRV records which refer to in-zone hostnames.

Mode "full" checks that delegation NS records refer to A or AAAA record (both in-zone and out-of-zone hostnames). It also checks that glue address records in the zone match those advertised by the child. Mode "local" only checks NS records which refer to in-zone hostnames or that some required glue exists, that is when the nameserver is in a child zone.

Mode "full-sibling" and "local-sibling" disable sibling glue checks but are otherwise the same as "full" and "local" respectively.

Mode "none" disables the checks.

-f format

Specify the format of the zone file. Possible formats are "text" (default), "raw", and "map".

-F format

Specify the format of the output file specified. For named-checkzone, this does not cause any effects unless it dumps the zone contents.

Possible formats are "text" (default), which is the standard textual representation of the zone, and "map", "raw", and "raw=N", which store the zone in a binary format for rapid loading by named. "raw=N" specifies the format version of the raw zone file: if N is 0, the raw file can be read by any version of named; if N is 1, the file can be read by release 9.9.0 or higher; the default is 1.

-k mode

Perform "check-names" checks with the specified failure mode. Possible modes are "fail" (default for named-compilezone), "warn" (default for named-checkzone) and "ignore".

-l ttl

Sets a maximum permissible TTL for the input file. Any record with a TTL higher than this value will cause the zone to be rejected. This is similar to using the max-zone-ttl option in named.conf.

-L serial

When compiling a zone to "raw" or "map" format, set the "source serial" value in the header to the specified serial number. (This is expected to be used primarily for testing purposes.)

-m mode

Specify whether MX records should be checked to see if they are addresses. Possible modes are "fail", "warn" (default) and "ignore".

-M mode

Check if a MX record refers to a CNAME. Possible modes are "fail", "warn" (default) and "ignore".

-n mode

Specify whether NS records should be checked to see if they are addresses. Possible modes are "fail" (default for named-compilezone), "warn" (default for named-checkzone) and "ignore".

-o filename

Write zone output to filename. If filename is - then write to standard out. This is mandatory for named-compilezone.

-r mode

Check for records that are treated as different by DNSSEC but are semantically equal in plain DNS. Possible modes are "fail", "warn" (default) and "ignore".

-s style

Specify the style of the dumped zone file. Possible styles are "full" (default) and "relative". The full format is most suitable for processing automatically by a separate script. On the other hand, the relative format is more human-readable and is thus suitable for editing by hand. For named-checkzone this does not cause any effects unless it dumps the zone contents. It also does not have any meaning if the output format is not text.

-S mode

Check if a SRV record refers to a CNAME. Possible modes are "fail", "warn" (default) and "ignore".

-t directory

Chroot to directory so that include directives in the configuration file are processed as if run by a similarly chrooted named.

-T mode

Check if Sender Policy Framework (SPF) records exist and issues a warning if an SPF-formatted TXT record is not also present. Possible modes are "warn" (default), "ignore".

-w directory

chdir to directory so that relative filenames in master file $INCLUDE directives work. This is similar to the directory clause in named.conf.

-D

Dump zone file in canonical format. This is always enabled for named-compilezone.

-W mode

Specify whether to check for non-terminal wildcards. Non-terminal wildcards are almost always the result of a failure to understand the wildcard matching algorithm (RFC 1034). Possible modes are "warn" (default) and "ignore".

zonename

The domain name of the zone being checked.

filename

The name of the zone file.

RETURN VALUES

named-checkzone returns an exit status of 1 if errors were detected and 0 otherwise.

SEE ALSO

named(8), named-checkconf(8), RFC 1035, BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

man.dnstap-read.html000064400000010334152530214170010407 0ustar00 dnstap-read

Name

dnstap-read — print dnstap data in human-readable form

Synopsis

dnstap-read [-m] [-p] [-y] {file}

DESCRIPTION

dnstap-read reads dnstap data from a specified file and prints it in a human-readable format. By default, dnstap data is printed in a short summary format, but if the -y option is specified, then a longer and more detailed YAML format is used instead.

OPTIONS

-m

Trace memory allocations; used for debugging memory leaks.

-p

After printing the dnstap data, print the text form of the DNS message that was encapsulated in the dnstap frame.

-y

Print dnstap data in a detailed YAML format.

SEE ALSO

named(8), rndc(8), BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

man.pkcs11-destroy.html000064400000012420152530214170010774 0ustar00 pkcs11-destroy

Name

pkcs11-destroy — destroy PKCS#11 objects

Synopsis

pkcs11-destroy [-m module] [-s slot] { -i ID | -l label } [-p PIN] [-w seconds]

DESCRIPTION

pkcs11-destroy destroys keys stored in a PKCS#11 device, identified by their ID or label.

Matching keys are displayed before being destroyed. By default, there is a five second delay to allow the user to interrupt the process before the destruction takes place.

ARGUMENTS

-m module

Specify the PKCS#11 provider module. This must be the full path to a shared library object implementing the PKCS#11 API for the device.

-s slot

Open the session with the given PKCS#11 slot. The default is slot 0.

-i ID

Destroy keys with the given object ID.

-l label

Destroy keys with the given label.

-p PIN

Specify the PIN for the device. If no PIN is provided on the command line, pkcs11-destroy will prompt for it.

-w seconds

Specify how long to pause before carrying out key destruction. The default is five seconds. If set to 0, destruction will be immediate.

SEE ALSO

pkcs11-keygen(8), pkcs11-list(8), pkcs11-tokens(8)

BIND 9.11.36 (Extended Support Version)

Bv9ARM.ch03.html000064400000070033152530214170007171 0ustar00 Chapter3.Name Server Configuration

Chapter3.Name Server Configuration

In this chapter we provide some suggested configurations, along with guidelines for their use. We suggest reasonable values for certain option settings.

Sample Configurations

A Caching-only Name Server

The following sample configuration is appropriate for a caching-only name server for use by clients internal to a corporation. All queries from outside clients are refused using the allow-query option. The same effect can be achieved using suitable firewall rules.

// Two corporate subnets we wish to allow queries from.
acl corpnets { 192.168.4.0/24; 192.168.7.0/24; };
options {
     // Working directory
     directory "/etc/namedb";

     allow-query { corpnets; };
};
// Provide a reverse mapping for the loopback
// address 127.0.0.1
zone "0.0.127.in-addr.arpa" {
     type master;
     file "localhost.rev";
     notify no;
};

An Authoritative-only Name Server

This sample configuration is for an authoritative-only server that is the primary server for "example.com" and a secondary server for the subdomain "eng.example.com".

options {
     // Working directory
     directory "/etc/namedb";
     // Do not allow access to cache
     allow-query-cache { none; };
     // This is the default
     allow-query { any; };
     // Do not provide recursive service
     recursion no;
};

// Provide a reverse mapping for the loopback
// address 127.0.0.1
zone "0.0.127.in-addr.arpa" {
     type master;
     file "localhost.rev";
     notify no;
};
// We are the primary server for example.com
zone "example.com" {
     type master;
     file "example.com.db";
     // IP addresses of secondary servers allowed to
     // transfer example.com
     allow-transfer {
          192.168.4.14;
          192.168.5.53;
     };
};
// We are a secondary server for eng.example.com
zone "eng.example.com" {
     type slave;
     file "eng.example.com.bk";
     // IP address of eng.example.com primary server
     masters { 192.168.4.12; };
};

Load Balancing

A primitive form of load balancing can be achieved in the DNS by using multiple records (such as multiple A records) for one name.

For example, assuming three HTTP servers with network addresses of 10.0.0.1, 10.0.0.2, and 10.0.0.3, a set of records such as the following means that clients will connect to each machine one-third of the time:

Name

TTL

CLASS

TYPE

Resource Record (RR) Data

www

600

IN

A

10.0.0.1

600

IN

A

10.0.0.2

600

IN

A

10.0.0.3

When a resolver queries for these records, BIND rotates them and responds to the query with the records in a different order. In the example above, clients randomly receive records in the order 1, 2, 3; 2, 3, 1; and 3, 1, 2. Most clients use the first record returned and discard the rest.

For more detail on ordering responses, check the rrset-order sub-statement in the options statement, see RRset Ordering.

Name Server Operations

Tools for Use With the Name Server Daemon

This section describes several indispensable diagnostic, administrative, and monitoring tools available to the system administrator for controlling and debugging the name server daemon.

Diagnostic Tools

The dig, host, and nslookup programs are all command-line tools for manually querying name servers. They differ in style and output format.

dig

dig is the most versatile and complete of these lookup tools. It has two modes: simple interactive mode for a single query, and batch mode, which executes a query for each in a list of several query lines. All query options are accessible from the command line.

dig [@server] domain [query-type] [query-class] [+query-option] [-dig-option] [%comment]

The usual simple use of dig takes the form

dig @server domain query-type query-class

For more information and a list of available commands and options, see the dig man page.

host

The host utility emphasizes simplicity and ease of use. By default, it converts between host names and Internet addresses, but its functionality can be extended with the use of options.

host [-aCdlnrsTwv] [-c class] [-N ndots] [-t type] [-W timeout] [-R retries] [-m flag] [-4] [-6] hostname [server]

For more information and a list of available commands and options, see the host man page.

nslookup

nslookup has two modes: interactive and non-interactive. Interactive mode allows the user to query name servers for information about various hosts and domains, or to print a list of hosts in a domain. Non-interactive mode is used to print just the name and requested information for a host or domain.

nslookup [-option...] [[host-to-find] | [- [server]]]

Interactive mode is entered when no arguments are given (the default name server is used) or when the first argument is a hyphen ("-") and the second argument is the host name or Internet address of a name server.

Non-interactive mode is used when the name or Internet address of the host to be looked up is given as the first argument. The optional second argument specifies the host name or address of a name server.

Due to its arcane user interface and frequently inconsistent behavior, we do not recommend the use of nslookup. Use dig instead.

Administrative Tools

Administrative tools play an integral part in the management of a server.

named-checkconf

The named-checkconf program checks the syntax of a named.conf file.

named-checkconf [-jvz] [-t directory] [filename]

named-checkzone

The named-checkzone program checks a zone file for syntax and consistency.

named-checkzone [-djqvD] [-c class] [-o output] [-t directory] [-w directory] [-k (ignore|warn|fail)] [-n (ignore|warn|fail)] [-W (ignore|warn)] zone [filename]

named-compilezone

This tool is similar to named-checkzone, but it always dumps the zone content to a specified file (typically in a different format).

rndc

The remote name daemon control (rndc) program allows the system administrator to control the operation of a name server. If rndc is run without any options, it displays a usage message as follows:

rndc [-c config] [-s server] [-p port] [-y key] command [command...]

See rndc(8) for details of the available rndc commands.

rndc requires a configuration file, since all communication with the server is authenticated with digital signatures that rely on a shared secret, and there is no way to provide that secret other than with a configuration file. The default location for the rndc configuration file is /etc/rndc.conf, but an alternate location can be specified with the -c option. If the configuration file is not found, rndc also looks in /etc/rndc.key (or whatever sysconfdir was defined when the BIND build was configured). The rndc.key file is generated by running rndc-confgen -a as described in the section called “controls Statement Definition and Usage”.

The format of the configuration file is similar to that of named.conf, but is limited to only four statements: the options, key, server, and include statements. These statements are what associate the secret keys to the servers with which they are meant to be shared. The order of statements is not significant.

The options statement has three clauses: default-server, default-key, and default-port. default-server takes a host name or address argument and represents the server that is contacted if no -s option is provided on the command line. default-key takes the name of a key as its argument, as defined by a key statement. default-port specifies the port to which rndc should connect if no port is given on the command line or in a server statement.

The key statement defines a key to be used by rndc when authenticating with named. Its syntax is identical to the key statement in named.conf. The keyword key is followed by a key name, which must be a valid domain name, though it need not actually be hierarchical; thus, a string like "rndc_key" is a valid name. The key statement has two clauses: algorithm and secret. While the configuration parser accepts any string as the argument to algorithm, currently only the strings "hmac-md5", "hmac-sha1", "hmac-sha224", "hmac-sha256", "hmac-sha384", and "hmac-sha512" have any meaning. The secret is a Base64-encoded string as specified in RFC 3548.

The server statement associates a key defined using the key statement with a server. The keyword server is followed by a host name or address. The server statement has two clauses: key and port. The key clause specifies the name of the key to be used when communicating with this server, and the port clause can be used to specify the port rndc should connect to on the server.

A sample minimal configuration file is as follows:

key rndc_key {
     algorithm "hmac-sha256";
     secret
       "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};
options {
     default-server 127.0.0.1;
     default-key    rndc_key;
};

This file, if installed as /etc/rndc.conf, allows the command:

$ rndc reload

to connect to 127.0.0.1 port 953 and causes the name server to reload, if a name server on the local machine is running with following controls statements:

controls {
        inet 127.0.0.1
            allow { localhost; } keys { rndc_key; };
};

and it has an identical key statement for rndc_key.

Running the rndc-confgen program conveniently creates an rndc.conf file, and also displays the corresponding controls statement needed to add to named.conf. Alternatively, it is possible to run rndc-confgen -a to set up an rndc.key file and not modify named.conf at all.

Signals

Certain Unix signals cause the name server to take specific actions, as described in the following table. These signals can be sent using the kill command.

SIGHUP

Causes the server to read named.conf and reload the database.

SIGTERM

Causes the server to clean up and exit.

SIGINT

Causes the server to clean up and exit.

BIND 9.11.36 (Extended Support Version)

man.rndc.conf.html000064400000023726152530214170010070 0ustar00 rndc.conf

Name

rndc.conf — rndc configuration file

Synopsis

rndc.conf

DESCRIPTION

rndc.conf is the configuration file for rndc, the BIND 9 name server control utility. This file has a similar structure and syntax to named.conf. Statements are enclosed in braces and terminated with a semi-colon. Clauses in the statements are also semi-colon terminated. The usual comment styles are supported:

C style: /* */

C++ style: // to end of line

Unix style: # to end of line

rndc.conf is much simpler than named.conf. The file uses three statements: an options statement, a server statement and a key statement.

The options statement contains five clauses. The default-server clause is followed by the name or address of a name server. This host will be used when no name server is given as an argument to rndc. The default-key clause is followed by the name of a key which is identified by a key statement. If no keyid is provided on the rndc command line, and no key clause is found in a matching server statement, this default key will be used to authenticate the server's commands and responses. The default-port clause is followed by the port to connect to on the remote name server. If no port option is provided on the rndc command line, and no port clause is found in a matching server statement, this default port will be used to connect. The default-source-address and default-source-address-v6 clauses which can be used to set the IPv4 and IPv6 source addresses respectively.

After the server keyword, the server statement includes a string which is the hostname or address for a name server. The statement has three possible clauses: key, port and addresses. The key name must match the name of a key statement in the file. The port number specifies the port to connect to. If an addresses clause is supplied these addresses will be used instead of the server name. Each address can take an optional port. If an source-address or source-address-v6 of supplied then these will be used to specify the IPv4 and IPv6 source addresses respectively.

The key statement begins with an identifying string, the name of the key. The statement has two clauses. algorithm identifies the authentication algorithm for rndc to use; currently only HMAC-MD5 (for compatibility), HMAC-SHA1, HMAC-SHA224, HMAC-SHA256 (default), HMAC-SHA384 and HMAC-SHA512 are supported. This is followed by a secret clause which contains the base-64 encoding of the algorithm's authentication key. The base-64 string is enclosed in double quotes.

There are two common ways to generate the base-64 string for the secret. The BIND 9 program rndc-confgen can be used to generate a random key, or the mmencode program, also known as mimencode, can be used to generate a base-64 string from known input. mmencode does not ship with BIND 9 but is available on many systems. See the EXAMPLE section for sample command lines for each.

EXAMPLE

      options {
        default-server  localhost;
        default-key     samplekey;
      };

      server localhost {
        key             samplekey;
      };

      server testserver {
        key		testkey;
        addresses	{ localhost port 5353; };
      };

      key samplekey {
        algorithm       hmac-sha256;
        secret          "6FMfj43Osz4lyb24OIe2iGEz9lf1llJO+lz";
      };

      key testkey {
        algorithm	hmac-sha256;
        secret		"R3HI8P6BKw9ZwXwN3VZKuQ==";
      };
    

In the above example, rndc will by default use the server at localhost (127.0.0.1) and the key called samplekey. Commands to the localhost server will use the samplekey key, which must also be defined in the server's configuration file with the same name and secret. The key statement indicates that samplekey uses the HMAC-SHA256 algorithm and its secret clause contains the base-64 encoding of the HMAC-SHA256 secret enclosed in double quotes.

If rndc -s testserver is used then rndc will connect to server on localhost port 5353 using the key testkey.

To generate a random secret with rndc-confgen:

rndc-confgen

A complete rndc.conf file, including the randomly generated key, will be written to the standard output. Commented-out key and controls statements for named.conf are also printed.

To generate a base-64 secret with mmencode:

echo "known plaintext for a secret" | mmencode

NAME SERVER CONFIGURATION

The name server must be configured to accept rndc connections and to recognize the key specified in the rndc.conf file, using the controls statement in named.conf. See the sections on the controls statement in the BIND 9 Administrator Reference Manual for details.

SEE ALSO

rndc(8), rndc-confgen(8), mmencode(1), BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

Bv9ARM.html000064400000102077152530214170006441 0ustar00 BIND 9 Administrator Reference Manual

BIND 9 Administrator Reference Manual

BIND Version 9.11.36


Table of Contents

1. Introduction
Scope of Document
Organization of This Document
Conventions Used in This Document
The Domain Name System (DNS)
DNS Fundamentals
Domains and Domain Names
Zones
Authoritative Name Servers
Caching Name Servers
Name Servers in Multiple Roles
2. BIND Resource Requirements
Hardware requirements
CPU Requirements
Memory Requirements
Name Server-Intensive Environment Issues
Supported Operating Systems
3. Name Server Configuration
Sample Configurations
A Caching-only Name Server
An Authoritative-only Name Server
Load Balancing
Name Server Operations
Tools for Use With the Name Server Daemon
Signals
4. Advanced DNS Features
Notify
Dynamic Update
The Journal File
Incremental Zone Transfers (IXFR)
Split DNS
Example Split DNS Setup
TSIG
Generating a Shared Key
Loading a New Key
Instructing the Server to Use a Key
TSIG-Based Access Control
Errors
TKEY
SIG(0)
DNSSEC
Generating Keys
Signing the Zone
Configuring Servers for DNSSEC
DNSSEC, Dynamic Zones, and Automatic Signing
Converting from insecure to secure
Dynamic DNS Update Method
Fully Automatic Zone Signing
Private Type Records
DNSKEY Rollovers
Dynamic DNS Update Method
Automatic Key Rollovers
NSEC3PARAM Rollovers via UPDATE
Converting From NSEC to NSEC3
Converting From NSEC3 to NSEC
Converting From Secure to Insecure
Periodic Re-signing
NSEC3 and OPTOUT
Dynamic Trust Anchor Management
Validating Resolver
Authoritative Server
PKCS#11 (Cryptoki) Support
Prerequisites
Native PKCS#11
OpenSSL-based PKCS#11
PKCS#11 Tools
Using the HSM
Specifying the engine on the command line
Running named with automatic zone re-signing
DLZ (Dynamically Loadable Zones)
Configuring DLZ
Sample DLZ Driver
Dynamic Database (DynDB)
Configuring DynDB
Sample DynDB Module
Catalog Zones
Principle of Operation
Configuring Catalog Zones
Catalog Zone Format
IPv6 Support in BIND 9
Address Lookups Using AAAA Records
Address-to-Name Lookups Using Nibble Format
5. The BIND 9 Lightweight Resolver
The Lightweight Resolver Library
Running a Resolver Daemon
6. BIND 9 Configuration Reference
Configuration File Elements
Address Match Lists
Comment Syntax
Configuration File Grammar
acl Statement Grammar
acl Statement Definition and Usage
controls Statement Grammar
controls Statement Definition and Usage
include Statement Grammar
include Statement Definition and Usage
key Statement Grammar
key Statement Definition and Usage
logging Statement Grammar
logging Statement Definition and Usage
lwres Statement Grammar
lwres Statement Definition and Usage
masters Statement Grammar
masters Statement Definition and Usage
options Statement Grammar
options Statement Definition and Usage
server Statement Grammar
server Statement Definition and Usage
statistics-channels Statement Grammar
statistics-channels Statement Definition and Usage
trusted-keys Statement Grammar
trusted-keys Statement Definition and Usage
managed-keys Statement Grammar
managed-keys Statement Definition and Usage
view Statement Grammar
view Statement Definition and Usage
zone Statement Grammar
zone Statement Definition and Usage
Zone File
Types of Resource Records and When to Use Them
Discussion of MX Records
Setting TTLs
Inverse Mapping in IPv4
Other Zone File Directives
BIND Primary File Extension: the $GENERATE Directive
Additional File Formats
BIND 9 Statistics
The Statistics File
Statistics Counters
7. BIND 9 Security Considerations
Access Control Lists
Chroot and Setuid
The chroot Environment
Using the setuid Function
Dynamic Update Security
8. Troubleshooting
Common Problems
It's Not Working; How Can I Figure Out What's Wrong?
Incrementing and Changing the Serial Number
Where Can I Get Help?
A. Release Notes
Release Notes for BIND Version 9.11.36
Introduction
Download
License Change
Notes for BIND 9.11.36
Notes for BIND 9.11.35
Notes for BIND 9.11.34
Notes for BIND 9.11.33
Notes for BIND 9.11.32
Notes for BIND 9.11.31
Notes for BIND 9.11.30
Notes for BIND 9.11.29
Notes for BIND 9.11.28
Notes for BIND 9.11.27
Notes for BIND 9.11.26
Notes for BIND 9.11.25
Notes for BIND 9.11.24
Notes for BIND 9.11.23
Notes for BIND 9.11.22
Notes for BIND 9.11.21
Notes for BIND 9.11.20
Notes for BIND 9.11.19
Notes for BIND 9.11.18
Notes for BIND 9.11.17
Notes for BIND 9.11.16
Notes for BIND 9.11.15
Notes for BIND 9.11.14
Notes for BIND 9.11.13
Notes for BIND 9.11.12
Notes for BIND 9.11.11
Notes for BIND 9.11.10
Notes for BIND 9.11.9
Notes for BIND 9.11.8
Notes for BIND 9.11.7
Notes for BIND 9.11.6
Notes for BIND 9.11.5
Notes for BIND 9.11.4
Notes for BIND 9.11.3
Notes for BIND 9.11.2
Notes for BIND 9.11.1
Notes for BIND 9.11.0
End of Life
Thank You
B. A Brief History of the DNS and BIND
C. General DNS Reference Information
IPv6 addresses (AAAA)
Bibliography (and Suggested Reading)
Requests for Comments (RFCs)
Internet Drafts
Other Documents About BIND
D. BIND 9 DNS Library Support
BIND 9 DNS Library Support
Installation
Known Defects/Restrictions
The dns.conf File
Sample Applications
Library References
I. Manual pages
arpaname — translate IP addresses to the corresponding ARPA names
ddns-confgen — ddns key generation tool
delv — DNS lookup and validation utility
dig — DNS lookup utility
dnssec-checkds — DNSSEC delegation consistency checking tool
dnssec-coverage — checks future DNSKEY coverage for a zone
dnssec-dsfromkey — DNSSEC DS RR generation tool
dnssec-importkey — import DNSKEY records from external systems so they can be managed
dnssec-keyfromlabel — DNSSEC key generation tool
dnssec-keygen — DNSSEC key generation tool
dnssec-keymgr — Ensures correct DNSKEY coverage for a zone based on a defined policy
dnssec-revoke — set the REVOKED bit on a DNSSEC key
dnssec-settime — set the key timing metadata for a DNSSEC key
dnssec-signzone — DNSSEC zone signing tool
dnssec-verify — DNSSEC zone verification tool
dnstap-read — print dnstap data in human-readable form
genrandom — generate a file containing random data
host — DNS lookup utility
isc-hmac-fixup — fixes HMAC keys generated by older versions of BIND
lwresd — lightweight resolver daemon
mdig — DNS pipelined lookup utility
named-checkconf — named configuration file syntax checking tool
named-checkzone — zone file validity checking or converting tool
named-journalprint — print zone journal in human-readable form
named-nzd2nzf — Convert an NZD database to NZF text format
named-rrchecker — syntax checker for individual DNS resource records
named.conf — configuration file for named
named — Internet domain name server
nsec3hash — generate NSEC3 hash
nslookup — query Internet name servers interactively
nsupdate — Dynamic DNS update utility
pkcs11-destroy — destroy PKCS#11 objects
pkcs11-keygen — generate keys on a PKCS#11 device
pkcs11-list — list PKCS#11 objects
pkcs11-tokens — list PKCS#11 available tokens
rndc-confgen — rndc key generation tool
rndc.conf — rndc configuration file
rndc — name server control utility

BIND 9.11.36 (Extended Support Version)

man.arpaname.html000064400000005612152530214170007774 0ustar00 arpaname

Name

arpaname — translate IP addresses to the corresponding ARPA names

Synopsis

arpaname {ipaddress ...}

DESCRIPTION

arpaname translates IP addresses (IPv4 and IPv6) to the corresponding IN-ADDR.ARPA or IP6.ARPA names.

SEE ALSO

BIND 9 Administrator Reference Manual.

BIND 9.11.36 (Extended Support Version)

named.conf.default000064400000003251152530214170010123 0ustar00// // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; allow-query { localhost; }; /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-enable yes; dnssec-validation yes; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */ include "/etc/crypto-policies/back-ends/bind.config"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";