diff options
| author | Doug Barton <dougb@FreeBSD.org> | 2008-07-12 08:28:36 +0000 |
|---|---|---|
| committer | Doug Barton <dougb@FreeBSD.org> | 2008-07-12 08:28:36 +0000 |
| commit | 218ea97b9e01d8e16190789f89493723232ae1f0 (patch) | |
| tree | 6b71f5fa714ae5d1b0e548b08fe2025e1c5439ad | |
| parent | cba78608de638f8cc6d1d48a2b3072e82386b70d (diff) | |
Vendor import of BIND 9.3.5-P1vendor/bind9/9.3.5-P1
Notes
svn path=/vendor/bind9/dist-9.3/; revision=180473
svn path=/vendor/bind9/9.3.5-P1/; revision=180474; tag=vendor/bind9/9.3.5-P1
| -rw-r--r-- | CHANGES | 5 | ||||
| -rw-r--r-- | bin/named/client.c | 10 | ||||
| -rw-r--r-- | bin/named/server.c | 34 | ||||
| -rw-r--r-- | doc/arm/Bv9ARM-book.xml | 12 | ||||
| -rw-r--r-- | doc/arm/Bv9ARM.ch06.html | 12 | ||||
| -rw-r--r-- | doc/arm/Bv9ARM.pdf | 1700 | ||||
| -rw-r--r-- | lib/dns/api | 6 | ||||
| -rw-r--r-- | lib/dns/dispatch.c | 707 | ||||
| -rw-r--r-- | lib/dns/include/dns/dispatch.h | 13 | ||||
| -rw-r--r-- | lib/dns/resolver.c | 43 | ||||
| -rw-r--r-- | version | 6 |
11 files changed, 1176 insertions, 1372 deletions
@@ -1,3 +1,8 @@ + --- 9.3.5-P1 released --- + +2375. [security] Fully randomize UDP query ports to improve + forgery resilience. [RT #17949] + --- 9.3.5 released --- --- 9.3.5rc2 released --- diff --git a/bin/named/client.c b/bin/named/client.c index 6d4cc91a4e4c..3215c6e63732 100644 --- a/bin/named/client.c +++ b/bin/named/client.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: client.c,v 1.176.2.13.4.38 2007/08/28 07:19:08 tbox Exp $ */ +/* $Id: client.c,v 1.176.2.13.4.38.4.1 2008/05/22 21:11:13 each Exp $ */ #include <config.h> @@ -1349,14 +1349,6 @@ client_request(isc_task_t *task, isc_event_t *event) { } /* - * Hash the incoming request here as it is after - * dns_dispatch_importrecv(). - */ - dns_dispatch_hash(&client->now, sizeof(client->now)); - dns_dispatch_hash(isc_buffer_base(buffer), - isc_buffer_usedlength(buffer)); - - /* * It's a request. Parse it. */ result = dns_message_parse(client->message, buffer, 0); diff --git a/bin/named/server.c b/bin/named/server.c index a01e5e79cfe3..c705af0ddcb1 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: server.c,v 1.339.2.15.2.78 2008/01/17 23:45:27 tbox Exp $ */ +/* $Id: server.c,v 1.339.2.15.2.78.4.1 2008/05/22 21:11:14 each Exp $ */ #include <config.h> @@ -485,6 +485,14 @@ get_view_querysource_dispatch(const cfg_obj_t **maps, attrs |= DNS_DISPATCHATTR_IPV6; break; } + + if (isc_sockaddr_getport(&sa) != 0) { + INSIST(obj != NULL); + cfg_obj_log(obj, ns_g_lctx, ISC_LOG_INFO, + "using specific query-source port suppresses port " + "randomization and can be insecure."); + } + attrmask = 0; attrmask |= DNS_DISPATCHATTR_UDP; attrmask |= DNS_DISPATCHATTR_TCP; @@ -494,7 +502,7 @@ get_view_querysource_dispatch(const cfg_obj_t **maps, disp = NULL; result = dns_dispatch_getudp(ns_g_dispatchmgr, ns_g_socketmgr, ns_g_taskmgr, &sa, 4096, - 1000, 32768, 16411, 16433, + 1024, 32768, 16411, 16433, attrs, attrmask, &disp); if (result != ISC_R_SUCCESS) { isc_sockaddr_t any; @@ -1866,7 +1874,9 @@ scan_interfaces(ns_server_t *server, isc_boolean_t verbose) { } static isc_result_t -add_listenelt(isc_mem_t *mctx, ns_listenlist_t *list, isc_sockaddr_t *addr) { +add_listenelt(isc_mem_t *mctx, ns_listenlist_t *list, isc_sockaddr_t *addr, + isc_boolean_t wcardport_ok) +{ ns_listenelt_t *lelt = NULL; dns_acl_t *src_acl = NULL; dns_aclelement_t aelt; @@ -1876,7 +1886,8 @@ add_listenelt(isc_mem_t *mctx, ns_listenlist_t *list, isc_sockaddr_t *addr) { REQUIRE(isc_sockaddr_pf(addr) == AF_INET6); isc_sockaddr_any6(&any_sa6); - if (!isc_sockaddr_equal(&any_sa6, addr)) { + if (!isc_sockaddr_equal(&any_sa6, addr) && + (wcardport_ok || isc_sockaddr_getport(addr) != 0)) { aelt.type = dns_aclelementtype_ipprefix; aelt.negative = ISC_FALSE; aelt.u.ip_prefix.prefixlen = 128; @@ -1935,7 +1946,16 @@ adjust_interfaces(ns_server_t *server, isc_mem_t *mctx) { result = dns_dispatch_getlocaladdress(dispatch6, &addr); if (result != ISC_R_SUCCESS) goto fail; - result = add_listenelt(mctx, list, &addr); + + /* + * We always add non-wildcard address regardless of whether + * the port is 'any' (the fourth arg is TRUE): if the port is + * specific, we need to add it since it may conflict with a + * listening interface; if it's zero, we'll dynamically open + * query ports, and some of them may override an existing + * wildcard IPv6 port. + */ + result = add_listenelt(mctx, list, &addr, ISC_TRUE); if (result != ISC_R_SUCCESS) goto fail; } @@ -1965,12 +1985,12 @@ adjust_interfaces(ns_server_t *server, isc_mem_t *mctx) { continue; addrp = dns_zone_getnotifysrc6(zone); - result = add_listenelt(mctx, list, addrp); + result = add_listenelt(mctx, list, addrp, ISC_FALSE); if (result != ISC_R_SUCCESS) goto fail; addrp = dns_zone_getxfrsource6(zone); - result = add_listenelt(mctx, list, addrp); + result = add_listenelt(mctx, list, addrp, ISC_FALSE); if (result != ISC_R_SUCCESS) goto fail; } diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml index 67f8c8973624..710cd36c1d1d 100644 --- a/doc/arm/Bv9ARM-book.xml +++ b/doc/arm/Bv9ARM-book.xml @@ -18,7 +18,7 @@ - PERFORMANCE OF THIS SOFTWARE. --> -<!-- File: $Id: Bv9ARM-book.xml,v 1.155.2.27.2.88 2008/01/18 23:45:32 tbox Exp $ --> +<!-- File: $Id: Bv9ARM-book.xml,v 1.155.2.27.2.88.2.1 2008/05/22 21:11:14 each Exp $ --> <book> <title>BIND 9 Administrator Reference Manual</title> @@ -3732,7 +3732,15 @@ IPv6, there is a separate <command>query-source-v6</command> option. If <command>address</command> is <command>*</command> (asterisk) or is omitted, a wildcard IP address (<command>INADDR_ANY</command>) will be used. If <command>port</command> is <command>*</command> or is omitted, -a random unprivileged port will be used. The <command>avoid-v4-udp-ports</command> +a random unprivileged port number is picked up and will be +used for each query. +It is generally strongly discouraged to +specify a particular port for the +<command>query-source</command> or +<command>query-source-v6</command> options; +it implicitly disables the use of randomized port numbers +and leads to insecure operation. +The <command>avoid-v4-udp-ports</command> and <command>avoid-v6-udp-ports</command> options can be used to prevent named from selecting certain ports. The defaults are:</para> <programlisting>query-source address * port *; diff --git a/doc/arm/Bv9ARM.ch06.html b/doc/arm/Bv9ARM.ch06.html index dd8d8ca33f67..d59d9d198b61 100644 --- a/doc/arm/Bv9ARM.ch06.html +++ b/doc/arm/Bv9ARM.ch06.html @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch06.html,v 1.56.2.12.2.54 2008/01/19 01:52:14 marka Exp $ --> +<!-- $Id: Bv9ARM.ch06.html,v 1.56.2.12.2.54.2.1 2008/05/27 22:09:04 each Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -1892,7 +1892,15 @@ IPv6, there is a separate <span><strong class="command">query-source-v6</strong> If <span><strong class="command">address</strong></span> is <span><strong class="command">*</strong></span> (asterisk) or is omitted, a wildcard IP address (<span><strong class="command">INADDR_ANY</strong></span>) will be used. If <span><strong class="command">port</strong></span> is <span><strong class="command">*</strong></span> or is omitted, -a random unprivileged port will be used. The <span><strong class="command">avoid-v4-udp-ports</strong></span> +a random unprivileged port number is picked up and will be +used for each query. +It is generally strongly discouraged to +specify a particular port for the +<span><strong class="command">query-source</strong></span> or +<span><strong class="command">query-source-v6</strong></span> options; +it implicitly disables the use of randomized port numbers +and leads to insecure operation. +The <span><strong class="command">avoid-v4-udp-ports</strong></span> and <span><strong class="command">avoid-v6-udp-ports</strong></span> options can be used to prevent named from selecting certain ports. The defaults are:</p> <pre class="programlisting">query-source address * port *; diff --git a/doc/arm/Bv9ARM.pdf b/doc/arm/Bv9ARM.pdf index 7c74c3935bc0..7b599bab06e6 100644 --- a/doc/arm/Bv9ARM.pdf +++ b/doc/arm/Bv9ARM.pdf @@ -889,8 +889,8 @@ endobj /Filter /FlateDecode >> stream -xڍ�=O1���[����I�V|$P6���^�I큎���5P!��<X��M^_� zI -!)�'�͡��Rf�
}1j��"��c�$ F��cD���~ᤊAbg�0������2P@&S�; M����}�������RM�������_��z�v��
���������|_$�0��I�˃���"��$�oc���rQ3{��u>���:1����q��QUendstream +xڍ�=O1���[�3�l���(�pj��R{HG���z�B�eHl?��TCt$M!:���P���}�g�\�M�TkM��4B-1��L~b�p6à1A����_����8���-�%B +.o^&����i-N�4^��a��ޏ}s|���s�m��[�c�l��f?]��"����]N0P(�G�Y?I,�ϱQ���A���6_>��:��۷/kP�endstream endobj 594 0 obj << /Type /Page @@ -3225,22 +3225,19 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 977 0 obj << -/Length 2580 +/Length 2662 /Filter /FlateDecode >> stream -xڵY_s�8ϧ�=�}S��+��S6M{�٦�lvnnv�A��ZS[r-9���}�R�l%�]zә�A -k��A�#��~��ѻ����ϯ'��xvy��ҵWp��|9��>Z��?�q��5�{���pN�6g�(f�R��>����V`g�/�Q�+�j5�@�X����Y�h�v}-� ,�g]�M^N�rz��\��D(��mST%xI�qQ�W���Di*���|^,t ���w�l��uY��r -��N3i�i��8����4�~xM�8�/�;�����9����0�ģ�m��,�چ���]^��q,9� -�[� D�7�d�Z;��(pڕ�C����x��acTr�5�Չ���}O�į)��U}%1��L��$�C�6��S�A։oN;� �i���$$�FL�E���(��H�$N�&.�f���)5d☖�(�ܨ���e(2ڎ�l��f��|��l�u���� +�#r �A�2l� -�m�R���ܵ��*r�� -z����q�MVo��P���熷96�������!�yU��MMT��^�_�Xi�h���O_E-a'��xV�1���� -���� -�x'"��G�ʿ���!໙89�(�7���8c� -�,.��bAj��V�Ag@S˔4i]�w�|��i�1�E8JB��/[q�@�:\������;&C��HbR�G���)=��)��"w-TM���t �"j*�#��C�7ñOͰ��>�#���z54v괝<�R����W��K�1��oC�1�M�4�T��g�t�j��h��<M -V���/h���4bRvW�非��)9XY��6��P� -a�ɨ��/����]��ʜ;z�������s�Z�U��|u���b�I-[O�C�R���f�/3h�
L������Z�>��� -�v%{���f��;0���\[ +xڭ]�۶��~��T]DŽ�I����|v����E�L'�O�NK�,Rw�v��(��b���A�b��]�' &~bb
�*Փ$��pa&���<�ܻ�q��u���_�|�I��XƓ��C�2n��̗�L��~�q~swIç1��Ļ��n�$����og�~���L�t>�pK�7w7��7���F�z�)�Y�v�����z�������7�V����+���/�������3�Z3y��D����BŌV*@6?^���̺�c�3�2ce2�@��hR+����� +AW���' �O�#�E���E�@�����ǖA�eC�C�b�>>��!=>��`J%��y
:�����+vX���b�A���4�ψ���zyB���s���4�M8���I�b��?�l���u=�d��Z��b�Xk�5�,Yj�7�(�������OTz���f�b}�"ڽI��<�_bR�J��L�m��4,M�n4����Oq~'���d +~�u�@]��
�6��Y,��FY5�/�u�`6a�.�gMN�!�i 1��u���#
e�O�i�-�4B_�Q����v) +\R�4����uI�]O�=#$3 7ǝ]�{�ϱU�8��Q��2"m8�����JR��D(��1����D2h*�]�L@>�#���6 �[G"�vO\:G.�v��0�G��^�r�/�M��f�sè<l�O��R�ү�����\/�)d)w���F5B��J� +z +��~Po�|��c��`"~�8ӭ�\z&�eQ/�ӳ����ɖ���#�彮džB����������Ľ��m(L
z�3�Y 0�D�p� )G"��h��hV���@�o�+�b�X�kr������w�u2tﰢ2��_����{aD� P��
4�u0�l,Š{Ś�{Y�C��.��U����ܽ-Pպ���*�ѣ��]DW�� +J9��p�����d�l�'�[,��Z,ʵXm�DHP�/�1':}Ae���>X�6rE��
�&_4���"�7Y�+-DZ���Ƕu�As�K;J
��/���J
귎p"�aF� +��U��&A��D{%����Ex�s�ڛS���L��;N�ӊ�X�eO�g/I����7�D"�R�U���Y��XR��kX���hZ~V�k��*����j�w",^�Ӗ�}��kᓖQ�?~��|E���4� +B�D(h�h߇ ���l0��o�p}��a�.i��SI��9�'S��K��u9�-��a�m������ե�.���}�]5�~z�0}\�w��Ѫ�)�k����A���2��#�w�i�u��� endobj 976 0 obj << /Type /Page @@ -3253,10 +3250,10 @@ endobj /D [976 0 R /XYZ 85.0394 794.5015 null] >> endobj 370 0 obj << -/D [976 0 R /XYZ 85.0394 419.653 null] +/D [976 0 R /XYZ 85.0394 388.7711 null] >> endobj 979 0 obj << -/D [976 0 R /XYZ 85.0394 393.5443 null] +/D [976 0 R /XYZ 85.0394 358.9876 null] >> endobj 975 0 obj << /Font << /F62 638 0 R /F43 604 0 R /F42 601 0 R /F57 628 0 R /F84 802 0 R /F86 982 0 R >> @@ -3264,30 +3261,18 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 985 0 obj << -/Length 3187 +/Length 2975 /Filter /FlateDecode >> stream -x��Z�s�6�_��35�}����l/�k�����]��Rb�ʒג7M��(K��l�7��L� ? h���I*R��"s�H�J��\�C�w�yV�i5����⛷�^8�R�.n�FcY!�U����(Z,a�~w������������r�����%Q߽����/W�&*z��W?�\���������
�8*���������ח�_o�����2^������_墀e!�q6Y<���9��^ĉIlL��/>\�kp���������� -���i��%����K�`�ώE�$��d�1��4u"�.���R�%�F��Z�L���!� -�{���H�X!��"1�TE7�_GO�C�Lg��Z�ʼn�J��9C<#گ���⛫�Z�ia=�ђ¸���~E6p -L�"�RXk���C[�{�`U�re���H�"2o -"J橫rO5E[2��Dt�ݮ��XF���������E������_3�ž�x����Q�ܼ��U?(����R��#�+�n B��m�A��:�`
ۿ�g�R@��
�Sj���sf&5`\�̨Td�)e�߶)��,�R�>o��rߍ������%���4�6yGĶ\o���]5T���k
Ⱦ�2���u�T��>�K���)�'a -M�ֲ����C��]���/:G�Q�k�ܷ� ��2�W<�����@��[_��Ul�3mP>�d�)���P�Mw۪����XyU27����0��mU]��P�?���7��0�}Ƀ4������*y�,���tYa�
[��PF��>9' ��fSm�����Y�m�ͼ�>�
Wq��̘���Ӕ���:���˥ 3uh%��ϯqXp�=��{���}U���;�TGl�xУ�BA�]9����TA��Xs���觍�gf7�dB%ƍ7���|-d��@��� -\�H��zIq&,�P�K2p͈2E���&�Ѥ4�)���#! h<�X���}�uT�� 5 K
Ȃ�l:�.�fp)�:���� -����[�7hkJ_ -��\�5p�7R��j�R��Sϋ2p��2�V -ʒ���0�=������.S�96U�]H�Zyno�� -�a�S�zG�"dž]ƀr"��M�����2�b�A� -\��,� X���\3�L͕��a��22@�H9�WR���^A9c����W2`��z{% [K�����/ߋ������`0���fi��%�y����l���z���z��P�W{L����~>/ -�Q���Ì���*���x�����G��͛�*����h�,�H��O�!��DP7H���0"��*0�� -O��FCv'czX��<��3�kw���2�*��7Y�����t�fR#^\yS�8�s�?�k�a�6��㪕��K��I�K��� n�g^r�Y��A\G��v��MPż�u��n�7�2��a���B9kִ<oTT*4�y_0*#�g�J�:�ފ�s�����0;��L>�(ڈ4F�2�� -գ] -x�fҒ1(9 �xb�΅�ҿ���y��fE�f8�W�`3�'��<���A�3�<ŝIj���IJ[�|B5��ϐ=��I6K����(�Ŵav:���塉�]��w�&W�;� o���dz���ˠ��DQ�h��Ѐ�Po�?P
g���X�f��'��;Ԇg"���ڊ�5i8 ���p"VC|��?����f��9ʀ�L���Ʋk��>qQe�����fV��Zn���H��Pk�� -��G��g߶��4�J�}��� m�[�@�S��{P�[ -|�#_�J@P�����3�y�溦| "����g�ýCY�1;��น�Xc�o�L�Ղ�����ߡT�ׁ�p"t��?�'!�˛n!��MN��c�0Rǽ��~ל���'�P�)�еw\��2I -��sFT�i�A�q�/��,YP�Go�X�S����]��'j���Gc��{W�;F�g� �M �NO��As�Wp&���/�~��_��g�X{&o�!Ċ-�B� -b�4`�B�E���N?endstream +x��Z�s�6�_��R3�~ +��-] �U���F����B����z��!@'Q����� ��gO̳-�)|˺.�MDs����;�Qh)ڶ���%sQ�)���b:_��E�3��j�|�7����m���G�W���:� }#n����gqz��TNX��2�JE&�RF������r���| +�.��aST�gР�e@�e�6Ժ���"��Q�a]R�.Dh���e���D��No��Z���XG?��K��0�R}U�����
d�
�6���IaxUs۪����XyY07�ݏ�0��}�vKԧC���}��pka滂'�h,,1߶j�峪W��e)��8���A�^Q5����l�
�65$h�-��w���&~��vʎ����SY�KC��`d�>��i!Ŷ$��հ�}�.�
�wj�N_��I�Q =�r�U�tcm9��0ob�D����pfrL&�r�M�7� ��ch�PR@��'dZ-�NLW@OH� +�ܐ�g�}�ny{�L��.n�Ö�f���}����W�Ȋ�]��H�1�r�la��P*Dc�L�q�ɂ��j��� ͻh�]�(�'I1�Zݞ׃y&��
P��Pg���n�j�s�P�J��6:T���;*��y(*�cX]�H#weuhn&$!u��]� PetU�S����P��d��
��
��
Y{8آ�v��9����ڲ���7k,�H�Y$(�����V@R��4�:�I$���$��LX���k�qM�2D��Sv��M�C��I!:>��FO�����Z}=�:d�Yp��M�B���.��R#p)�qZ���JOaK������D�u��z\g��N���>�Rp:WN�W���e���%�}e�ZV#�ű*�����} �h�}�"*�R�)Ou��<��ʉDJ7���2�J��3�<��\�!�q��V���b9vϨ�qM�2WV#G�!ed���r��:�+�}���D���>^ɀ-��$l�C���J��(�X +gW5:��$����|���=���._��2�.>���b��<c`��� +0τ��L*���j���m�w���9Y�.�@�=�X��U��O���R�.oZ���7^����cM�7�����$��Y`u����l.8���=�Նt�.�;��X��e��P{sTP��I���A��&�Ӗ�T��Jw�n�I�U�Y}dzUE�P�?��M^��u�S�����8!���9$m�@{-�@3/�/@�V���ޔ�hN+���=l�Vq���=�tW����,�,�p��M\�xu��NE�T8�N�~�,�&�9�Z�ȧD�7 m��,�=��%_� �18Ȁ+���.U8 J��д�����V��zF�$('Ú�'� +qt&����\��J�5�ޒ��EY�>#�y&�"�6"�!��_�y���6�hcN #M�p.O�>��B�q< +�ۧNB0H�������endstream endobj 984 0 obj << /Type /Page @@ -3300,34 +3285,29 @@ endobj /D [984 0 R /XYZ 56.6929 794.5015 null] >> endobj 374 0 obj << -/D [984 0 R /XYZ 56.6929 645.6366 null] +/D [984 0 R /XYZ 56.6929 573.6377 null] >> endobj 741 0 obj << -/D [984 0 R /XYZ 56.6929 622.1818 null] +/D [984 0 R /XYZ 56.6929 551.8981 null] >> endobj 983 0 obj << -/Font << /F62 638 0 R /F43 604 0 R /F84 802 0 R /F42 601 0 R >> +/Font << /F62 638 0 R /F43 604 0 R /F84 802 0 R /F86 982 0 R /F42 601 0 R >> /XObject << /Im1 795 0 R >> /ProcSet [ /PDF /Text ] >> endobj 989 0 obj << -/Length 3155 +/Length 3506 /Filter /FlateDecode >> stream -xڭ]s�6�ݿBo'�D,�>���s��r��]�J�mN%R)���.����ɍg�� -!�"�b-�����7�w6�-�Ǿl�6 -}�?�e�� ��W�4>U� �r��ݾ-W�'#V�P����7�` f��\|� -��B)3����p�uA -#V*�[��yݞ�6�u��LE�5BFrb�3kY��A�� �؈�(XNw����c�d��,���E��e��D����`4�o�*OM���� }9����˚@Zv�t%��b��ܡY��Z����P��P�g�J(�Yã_c6;˭5� ٫�p+?� -�X�d89g����{���|��Sm�>4�|#>F�π��3������UGx����t��a�%���;$�/�=)�K<�!Ke�L�A/�.� �>��6�(��J�7�[�p\:PFS�� -Q�hIϴ4�X -�4���C�| 0�@�O�ՊD��h�e0��
6����n>=*�n�}" -��̑Q -��?7䁡#����5�~�ʧ��#�8�0=3�τ!�z�"��ŨP�L���Ϙ0��}F���C�������A�|J����,�ٟ�tgQ����f7��ꌎ�y����l�8����O�������w) -1��-\���_´ -�+I?]�tJJ��e�-B46,h�6V -a��V�[�6b!Y�-~�O���C:�ݎ��DI��D�yU~L�F�`j���^�� +xڭ]s�6�ݿBo'�D,�?���sMr9wn�>Pes*��H�u��b��(ٙ�d,�%�X�7�'����^M�W�f\O�+6����xę%�Y������1�7�L�V��\Ɯ㓻��w������Lh65��L6����4�y��������ڪ����4�������n�g�iߋ����ㆠ?���緟������;K���I<�W���&K8�OW,����tXƽ�͕�2�J�4�����?�{���1�i�2�a��=r�2�}f�����k�ES��(�x���E�eC�yl�uӔ�uD-�����l����y���{����i�ޛ�z��U�T욈ݧ��=s�#rw�Qq�b��/��EYT�r:߷���Q]�� j��m�k�%n8� �2絘�8ϼ +!0��}B�3*D��Zs���6
w��{��싦m�@P[���h'������M��T��$̋���}S,�{sLu����a�1
� 2��ר�)���k�.Ka�vXC)L�jN�Q��:o.S�a��18�ᙵ�� svF�$a�����9vH��b�Y��,��<b�����]4�p0�B���(\B�<a54��VҲ��-���Aѵ��FC-|���B�B�����Ę�μ��� y�W +�]���%�]b �w��y�UL�A/�.� �>��.RmN�'�(~Q� -�0t.�dEy, +��.cK����Ⱥl�3@���"n3c��Z�b���*/�M$�Z��
0�^%u��g����ٽ<� +^m����H��ˉ��6�-s�5�҅�L7�����DH�_�>c�T���4K�A +�\��a!l��?�|a��2R�WV.%H�-�F�r]�π��!�7En^��!LXį�\=�;ڂ9���;���,����2�y�̤6|�r�ՌX��7�X9��AS�Bax�Q��A쇊 ~+��L�1��ǟI���7T9��.�Mp���量w���C���^X�3F�2L�X�Ie,�Je,㨌eRVa�Vю��`�t��e<>:�5�>'�O�G� +Q�3��b-:�֭�g_�zv0�N^�h��`3߱7'i!��|�@��8��r�� +���rՕ-2��鈅d]��Ϳn=��W��`1��!?�(��D�W�cʻ�����?�o%Yendstream endobj 988 0 obj << /Type /Page @@ -3340,23 +3320,23 @@ endobj /D [988 0 R /XYZ 85.0394 794.5015 null] >> endobj 987 0 obj << -/Font << /F62 638 0 R /F42 601 0 R /F43 604 0 R /F57 628 0 R /F84 802 0 R /F86 982 0 R >> +/Font << /F62 638 0 R /F43 604 0 R /F42 601 0 R /F57 628 0 R /F84 802 0 R /F86 982 0 R >> /XObject << /Im1 795 0 R >> /ProcSet [ /PDF /Text ] >> endobj 994 0 obj << -/Length 3150 +/Length 2914 /Filter /FlateDecode >> stream -xڭZ�s�8�_�Ufj.�E�=u۴םݶ�d���A��DWY�Zr��_ -r��(y��L0��L͠���??�ㇵ��m`C������ߒ��R�ŀ�)4�,u^ᛦʷ`�&)�˹�Y��5�zE�"�Te���US�����6��5O�H�ue}O����n��|��m�tw�x������ -L�R�-��{.�`�(�خѲ�|a���@;_���~���fd�R�`����e������r5���j3"����� �5� �5�UK�p����o`��K:�L$9~88}��@sG#ph:� B�!KC�qh�D?�=��SYU4�q����D8gZ�4z>a�-P��BfN$�s��8֖�5Q�,x��.85��;D&#�<�� C��~(ڂ&*MĀ,����|չ�s͚&�M�z��Z��{�f[86��ȱΆN�fr���)Q��Ȣ�M�B�&�����v�W�T\~���sWl�§�2iv��Tv4����c�I�WS����=�n��-���]��ݕ�Eh,���+���VTx9�Ϸ����b�����}^�S~ϧ�=��iSls -r��&�&�eE�t���r�{,��|�w#]���~hih�PFM�2K�y��hh �o(�_�55�K�J+����e^yc��Ǽ��e9���j��*K���1 -���X�є�.e@u�R"��,����b�9+8M>��T1L� ��R����v\�����X7�P�uq}�W���Kɽ���eb�Ҕ�oG�/
)�ݫg��*Y��AN��b ]�V��^tRhz܇�~_z�qCy2�ԡ��b*1Z�K8����jU& -"V$`W�LͣXBY>����&��kC�
dVP3<J�p�@���6LF�QL7��n��B+@�0ŵ}�k)a��4�~M0��Ls� }H�h��|nv@̡b+[�'0-�9�D�8��z��҄�� ����������i�$ r�Y��� -y?���H4!w�m�1=�c�!�M�a�Ի���̔��QC���}:�@�j3<��⍯͠�lj�5����B$���^�}���t�J���Ų����Kix˄�/\��̕F*�D]��2�g��B�</9MHVOV@�7=��� 0�����e=���J��r��O��b�Czx�r���f�!O��w3P�{���1*�
K>�ou2pΗ|؈���i���p��!��`\��<�^�%2��;R��KȊ�˺+�5�g��O���˅��� ��E�?�R�;�S -DZmx[�Cj�T�í�{����wu�u�z��h���;Ť6���D�U8�E����8��ӿ�*��'Ύ�G)�� +xڥZ_s�8ϧ��*35��E�=u۴��n�K�O{� �J��,���4�� HY�崽Ng*�� +8#
3F�i0,�6��g��:F=���{��q���1 ~`�l��H�H4��:�2�)��|(?!d��J�"&?Vs`����J�_�-v
��������'����+��mQwc��Op2� +|�\�>(Z6��\X��Q����/,s �h�+b���O4��l��e.�[�L�<���)W�G=߭6s"�:8�BYc�XE����![�l#���bIg��$���o;�h�hM��0ei�6��W��<�x*���<p��N�I+��C�(���I��v�:ε�}M�C��W��t�Єs��'^~a�X��E[�B��D�#�m`���Q�;�֬ia��4��������=m����F�u6tj���c?N�ʖfnb^�i�9��s.iOyU�N���݈��]�
>��I����{��v�|}8V��|5�-UE�}���S���S��V}����E����F"��'���qB�C�X�ÿ�=���z*��T�g!�?n�mNY��D�ĺ�����]N`��R�ߍt�������B
}(�,Y��s���a���P�~��4X.*U��3�Jn�y� V�j?ˉ]x��扨���p�AL9��>(O�t��&�0@Db�5_o����A1&L_m��� ��.U���e-�L��5�W^�8'�q�T +�,��J�pRO�5�9�#�{!�N�%욶�F����}y�/��b2�(���\��kW#N(�S(xԟ� +�BXp6y�h%��2����C��� +{ �6b���P��hT�c�� +���
��^0J���]~�()��G� �FI5��H0&�E{�`���
Ci�n��k���=x^a<.%�r�F�Ĵ�P?���
)�ëg��I�:+�x��b�H�^����0������`ㆪc��C���b�,�����
TMX +Q+�_ԡ':Vb�W/Ǵ endobj 993 0 obj << /Type /Page @@ -3364,82 +3344,82 @@ endobj /Resources 992 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 991 0 R -/Annots [ 998 0 R 1000 0 R ] +/Annots [ 998 0 R ] >> endobj 998 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [361.118 468.8579 409.8647 480.9176] +/Rect [361.118 436.2023 409.8647 448.2619] /Subtype /Link /A << /S /GoTo /D (configuration_file_elements) >> >> endobj -1000 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [347.1258 85.4256 404.2417 97.4853] -/Subtype /Link -/A << /S /GoTo /D (journal) >> ->> endobj 995 0 obj << /D [993 0 R /XYZ 56.6929 794.5015 null] >> endobj 378 0 obj << -/D [993 0 R /XYZ 56.6929 647.7963 null] +/D [993 0 R /XYZ 56.6929 621.8163 null] >> endobj 996 0 obj << -/D [993 0 R /XYZ 56.6929 624.4206 null] +/D [993 0 R /XYZ 56.6929 597.0941 null] >> endobj 382 0 obj << -/D [993 0 R /XYZ 56.6929 550.3829 null] +/D [993 0 R /XYZ 56.6929 519.9904 null] >> endobj 997 0 obj << -/D [993 0 R /XYZ 56.6929 524.5365 null] +/D [993 0 R /XYZ 56.6929 492.7975 null] >> endobj 386 0 obj << -/D [993 0 R /XYZ 56.6929 216.2206 null] +/D [993 0 R /XYZ 56.6929 176.8325 null] >> endobj 999 0 obj << -/D [993 0 R /XYZ 56.6929 192.8449 null] +/D [993 0 R /XYZ 56.6929 152.1104 null] >> endobj 992 0 obj << /Font << /F62 638 0 R /F43 604 0 R /F84 802 0 R /F42 601 0 R /F57 628 0 R >> /XObject << /Im1 795 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1003 0 obj << -/Length 2948 +1002 0 obj << +/Length 3192 /Filter /FlateDecode >> stream -xڥZKs�6��W�tU��A��3O֩��z���l�D۬�HE��8�~�� -�{+g�V�Rh���m�weە�v���8�9�.�B��x�%z�-�Hn�~����5_�x��$�h�H�]�.�˘(Z�"@�r{ؒx}خ�=
4����ht� �u�/iB�t
1Wa�/Ůg�Z&wM��X,5(�,��SJx����*�0W�!�)kjG^���Q8,�t�9חOt,u�D{)�j_���|)���ړ�T.5<� -�Ԍ�����T�H`�� -�C�Hж0\uy]4�����N(l�����rص�! -sy�^jf�I�K��N���(̡Ӈ9���= -s����ç_���b�'��缋�_�a��@����t�q�ԧ��4�2��X�"U6��r�: f��|��a��&.�X����R�"X|��\Q,����4�˔9i.��K�(0�+�f�j�
*�Q!��K�ms�c��(@��}@�'<$ Y��8_<` -�v��T��s��v��Wn -F*2zx�1ԯ��Χ+�Rn�{�j$u!]E�X�*��E���P�9P�G^֠��Q��r%�T���\B�M�,�/���';���ɭ��-��x���>N��ž.*���n��RȀe#@L�,�4��&�+P�y �=!2�[!+mސAC����+�HAY�ȹ�0�ܼ���7�|�C�)�e2�<� ���!^Yυmܽ -��;���x�杜7�:��z)��3�w)�1��Q�����8�1n�Ը˷� b����&{<�#� ]5O�MÞMqܩT:֙��8�g -'�~��xc���ߦ!� -d�b:�2j���c�c��+�f��Re�����(�q/�Q�,8�� +xڥZKs�6��W�tU��A��q2�d�J����=ds�$��E*"e����F$(QrR)� +9X9��r�B+o�ߖ�o����]�{y�l�y�1�5���5���T�Z��H3�᧲�a�,)�JU�ÖN+G=�{"�b�L�W��cL�e��ʓ��\��6z��?-���6S���u_�
i���c}2�Se��lށ�-N��` +��oX����k�?��-J��Ou�`R�S��p�n�M����k"�Iݮ\W(���ػ/�42�ڭ�j�^k�M���s_4]���W���16^��S+?\�v[�պ��7�6]�ӿܶ/��"9K�h��M�X�U�o�I��<�8X�9Y����U�u��݀���&=gz�P|��L�Ff�D��t!�=N��v������[BH���M���ө +���1+B��u�ŝ�&$m�'�!��t�B�������rO�k����qu4R6��"��--u��������2�k{�p
:+���;���.� ��0�ACϨ���K�ej-��73�:�����r}�w�K�\�(םl&D|.��\Ta���a���4g�N��d�$(��&���$�9{aT4e{舋��/����|�u� +�L
hՆ4H� +jB^N��=.���/�и�
��<��xN|m������ �C�cc�r8 +��v�jp���۽b�"ü���
;h��RE�� +���s_��K1�E�Gw�]�/-�� ���Md�Wl�@��f�<�ΈϠNf���x�ś���Jοb*�niq^�I�߆#}����Hx�/�ٴ�=r�`��|��� ^���VP}a�wNU1ׅ0\��W�~U��8���u�f��&x*��S-(��320���{�x�m�:7E��z�+��4�}E��uԷ-��]�@w���;���{�W��82x�Ise��=��n27�L�v �?���c�\nb�7Ix�|�ľ�����m�U�_}�% +�iF�i=2��JNu�76:Ӎցʆ�I�4e���?�C�IԹ�"$KUfÝؼ �47/�Oj��e)i�,�J݂Qŭv��O�*|���(g_�p;��ů�{���Ƚ#�Q6�7�8�F��;�����ђ8��w�ct��16�lpc��OJ&��zc?�D�n��\�³n:(^I><:L>��z}A��/�N>�*�*?�?��).��U +���d�*�Mn9���)���5�+W��oׂ%�oL�%cGCO�-��oə�S-�\D��{� 6�ֳ�j��|i�
�L�b�+���J�$��b�8�/�S#l��*EY�3��?7J̇W��.ќ�endstream endobj -1002 0 obj << +1001 0 obj << /Type /Page -/Contents 1003 0 R -/Resources 1001 0 R +/Contents 1002 0 R +/Resources 1000 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 991 0 R +/Annots [ 1004 0 R ] >> endobj 1004 0 obj << -/D [1002 0 R /XYZ 85.0394 794.5015 null] +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.4723 755.8266 432.5882 767.8862] +/Subtype /Link +/A << /S /GoTo /D (journal) >> +>> endobj +1003 0 obj << +/D [1001 0 R /XYZ 85.0394 794.5015 null] >> endobj 390 0 obj << -/D [1002 0 R /XYZ 85.0394 449.5881 null] +/D [1001 0 R /XYZ 85.0394 427.5127 null] >> endobj 1005 0 obj << -/D [1002 0 R /XYZ 85.0394 421.8763 null] +/D [1001 0 R /XYZ 85.0394 402.5515 null] >> endobj -1001 0 obj << +1000 0 obj << /Font << /F62 638 0 R /F42 601 0 R /F43 604 0 R /F57 628 0 R /F84 802 0 R >> /XObject << /Im1 795 0 R >> /ProcSet [ /PDF /Text ] @@ -5335,7 +5315,7 @@ endobj stream x��te\���6� �t�����ݡ�000� ������R"��t �ȋ>������?��?��w���^�Z�7����5� ���r�pr�t���P(�W琅C��fL9g0���]�� -��{fXE +��{fXE 0�����a֏��O�o������?��x����=� a.��Ab���9Y�
���/z{x�*�����2#�Dj,���8��E�y��;�o��n
�A����ߋ(��X>�.3v�ms�W`g��Ϩ�"� rn���蚗ߡR�w�9�_�ҹ�_8=�e4%v>oF�k(�?`Lٽ�`��4����&9[~��;26cL�|r)S�j���l(�� b��7�����V�h9���,�I��R���e��߷R�%=���
�t��(��%�LǏ�)��>1٥����^�2��O�� %��>�pjÕr{2��w��<�g��-j�!3c��akI�,A�$�L��ƋJ��n��U��m�މD3 @@ -5358,7 +5338,7 @@ $O����ŀD� t���=��b���w�6�"���µ?��J�OP2R�oQo+��1)�w�����d�I��Z�V͝�(e��� �"[vQ��F�s(�F�$'�qL �/�!��
�Hvk։�h�ȉ��؉�o?�a:���q�c��g�!_Q�~�W�1�a��U�Gm�Y�mn%�R�r9���0q�5�/�E�(�ړ��,W��$�����Lx���|�奕�w�Z|�V���,�Od �y�G�
����3l�4���\�T2Z��Ag�.7�#�P��v�eŦQL����O���\� ��ĵJ��(�3�].�*,M�>�Bx�(�S��|D�u��ޡ�{:ґ��2G9�C�{ɕ<|?��K����@F)�,�w��?�� ���a��h%ٱo^��{�6��@�-��%�~j�wXjz1��i���%u�3^��g��`d+�K[�De��]��Y����?�>��Hj�,�kѸ�h�8���v_�
[�J֮�9m=����?\�k>�ଇ�*�ѳ�,Y
�<���u�Z/ZV$S��#�mNO��5M@��r��0H�7�&7[��A���O�Ƨ���5�pE6~d��^.x�T1���$��7��4����j��G1���po��3�Q��Z:�N����,0����Zg����)�Q����X""���0�����BvFA�)Y9(�YÖ���S�|�����qb��N.L�X��_��¿�%�%�����|�D>W�7}C��#�ZR��$�`b�Gο�a�9g�S%\��/���hC|�?s��g����)��m}�v��k��.b�&O ���+uqf�`�a�����,I�㯽/������ݛ��'P6ߢH��?����ٹ���9��mHr7:pMRY�#� '�W���KC�|-�mW�躖nᲶ�0����3���=j���-,n��e����b�i�;��H�l<)�L.��Y���ڷ)�wL=(�����L|�)=�'��-�@����<�Nr�6�E�ʃ3�d�k�����%�����(kD~�(�_y��;���f�O�{&*��yү9ۏB�T�d>�.<S��X3p7��~�"럽��l˴��DQ�f��� -*s"}Y
;҉��{Y����]p��ݯ���Xo���} +*s"}Y
;҉��{Y����]p��ݯ���Xo���} endobj 1195 0 obj << /Type /Font @@ -5367,14 +5347,14 @@ endobj /FirstChar 67 /LastChar 85 /Widths 1348 0 R -/BaseFont /FJYMCJ+URWPalladioL-Bold-Slant_167 +/BaseFont /UCTAZU+URWPalladioL-Bold-Slant_167 /FontDescriptor 1193 0 R >> endobj 1193 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 -/FontName /FJYMCJ+URWPalladioL-Bold-Slant_167 +/FontName /UCTAZU+URWPalladioL-Bold-Slant_167 /ItalicAngle -9 /StemV 123 /XHeight 471 @@ -5394,13 +5374,15 @@ endobj /Filter /FlateDecode >> stream -x��RkTSW�����RI�zX%2yj �@�X0<�!1��ܒ�K/7�4��*�ʲ��.y��RaU��Zb��/�*� -��� -��G ��u�]�|!o��ǧ�@0�n��T5���$>iaQ*P SjXK�P*4@�)�00�H��&od�up�g���� --�1�����:Ɓ�`�N��ߊ����N�J �Q��T
��L�ʷ8�!A�0�J5P)4���t%�S:X�H�$8�����JF(��2�À�{*���&�$��l6�$���)iZ31�� M\�P��@!���x�� -�z -!=�a=��XobJ����;��&W\�y̞���|dk��m��~��^?��x�OQ�G�9os�9�T2�
R����E���������F��/��P9��<�rY[�ڃ;�Y�7z?��������uk�s��ԑ5�n�z��������5�9TBI*;�f/�ϻEW'�bU��������\_[��w��n;��2��
���9l�^��A�H[l�+��g/��Sn6�{�����e���<��wK�sJ�b�ѣ�U�(kh�C���p}��m -�uXej��=�?�yL�7��n���ʥ��k���M����&˞D��F ����ѿ.��p�%� �)g�ny_�m�P�Z[03��$�T-i�����p]�7�I�8Ի���E��]x㋎}v����$��8r�gQ��Жi����}�;^�b���=i�q}PT6#r_����Z�c������8v��瞊�~P��E��+|ӳ��6چ+�� ����)L<>�lK+���'ƍ�ܳ�l��%���8��P�q����o�\�cE���3 ���?/�}�u�'T��,njO�������؇��;����fi@���?�VE2�Ϊ(#[�]h�?A��+��n4�m�r�"���n��~/}�Z��M�%��U%1����U�|<�5c�BT�TzZ��fƝ�cOJ���^�7��oWD�����5��s�2R��˙2��M�|o�|U�A�9/���t�S�>����'�/�_�65n�����F@�٪۷_w���l��Ϗ�u�۽�S��J�5-���+�;��RV���^1���1uC��e���B�Fec�i���bǏc4�xiT���v��ò���vp�����4�Z�s��n��e�+�^p���sN������"5%�*WL�'� �~���{�!�K�Ğ5�T���-/�_��j�C���4U��ͭq��^����+�kN��ۋ�y���S�/_'�Z���!���mzڲ&B��`!�k{]��yy�Ҡ��F��
���~A��
ԉ���s8�y���Y�b�ݬ�]�����j���qKҵ�/G#w�_Z�X��"��X�͛g��4+�p~����.���OPj`N`Z�F�7����endstream +x��RkTSW�����RI�zX%2yj b,��{CnIH@��TeY�F�<EE����J-� +S�ia�q��U�5�����̯YsΟ�������M�1D��P��ar� X*�p<��-����!r�@�VkՀ���B� +!�O��`,C�#i*x�'I| ��8���@*'T�������S 0�g�Z
�M����Lς!&��� �F8
A)�IMT��[�f�Ke�x&) +xMɤR$��j=�`%��#���������C�j�Z�f���S��5�Z�;�dh R�qt:5~+N +C�V3=+!�jD!B��0`pV2�+��Hf(���H�P��R�΄�p��+!�������$1Q�T2R��D�>�?�S1珘4 Gt ��d�9$���N�Ӛ�Q!h��|���z +9Dd�@P�XG*f1Q� � +�H�ֺlx/��p��5'��%���ǩˈ��O-w�V�Z� �1> +k]�
�GZ�ǵ}M.���|QYP��]#���������1�F�D{��9��|V@�,|��n����&|�]j
p삸5�ZQ;�/-�,zr1CN���ͳl|�y���Z7�����' +('0�O���ߌ�endstream endobj 1166 0 obj << /Type /Font @@ -5409,14 +5391,14 @@ endobj /FirstChar 60 /LastChar 62 /Widths 1350 0 R -/BaseFont /FQSFCW+CMMI10 +/BaseFont /MAGIUQ+CMMI10 /FontDescriptor 1164 0 R >> endobj 1164 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 -/FontName /FQSFCW+CMMI10 +/FontName /MAGIUQ+CMMI10 /ItalicAngle -14.04 /StemV 72 /XHeight 431 @@ -5436,7 +5418,7 @@ endobj /Length1 1608 /Length2 6751 /Length3 532 -/Length 7596 +/Length 7597 /Filter /FlateDecode >> stream @@ -5445,30 +5427,32 @@ x��tuT���6��J �Cw�� �RRRD� fg�p��r������;`�����I4���p�N�P��|�0�P�-��<��� ���3���> -jg����h�
�
�����O����� ���4�O�?9�0h(�V�(|S���mC �^-�- -���D��>?O���;\I��Xf=$��-p6\������R�
�G h�Q?���X���U���>���>rW�C�#9.P�%լ�Ǥ�ޘ���?�����3C��%��M�(w��<:rə\a:��]�������cRd#_�P��xu -VJ�y��ӥ���:s�&�b�WI�����L������M)��9�cF���>��(Ї�v;)s,7� -��i� ��˯�m��}&�q>�����?\K>�gp�z�� te�9|��_�h��X��P8� "H>I -������m3���&R��5����`��/ScF��oΞ�<��IK�2�f��#2:=2��J��Yn�*��:j��lo�J�>�q.�|X�-0�d�,��SA�+�H��N���ӌ���3U -��k8�XOf��Lrٌm�X?�O.+%`�N]m�/( -M((7���uk�ݝ�|~'Ņ����K����cԸ��"UE���, -�0
$���{�Dl�5�u.
lQ"��1�WO�6i$הH��V�}^��+�۵�R|��W̞�.�l�RT���ו�^���_���Q1���j�&�/�pe�G�&h������
ݥ�NjW&���t'�o:�ɫ�L�8tİ�4���lTI/\��2�<�*�;�7��:Uz �&��mĻ�x��`T)�5-�(���)�[��f�U��ƙZ�H�u�u�U�4�Kk!���b�"-8�Io�+�K�?��S]m�����7w�,����x8��j&j��_��!4�|&x��#o'�XL�r�<��=;�)h�x�beS"�G}Zh#�rV��e����%<E>�-�H���L荒����;�=ׅ����w{�fՊ�s��k�5W"��X��洗-�K��P�v���{�Zt�I����z縦Vc%�W������>�z̏�R6�V'��$ྚ���O9�IK�X�bw���9��
��O9��-q�.|��J�5��$e�"�hl�wN���"i6�C�N� ��~Q�Z{�8��S��\%��LܽB{혪{^
��S6w� -�K��V\Jr���n�.�����3`E����'[��\�.E��
J�$�ܲ�zK� 4����� m�;2�\�uʘ�&S���������lQKK��;|cf�ѯl��g������/�����M�ʪ�:E�"��5����_�������<���۹��Z�`�<D��|҄�-�u���}���9.�Uy�ZB��ه��(��[��3x�|�F��^�>/�y"ϳ�Z>���'��7q���'�A�Q5��beV��YƯx H�r2'���~����l�F4��R���������\�?s�D�N��$e��[�(UQ�� ���ݞW��p�5E��'7�x�D�"���Q]A��jN?�}\ۻ�ۨX $����*D�\J���Y<LI�[�>悝�K��V��b�=Ug����L�n�4�]�>���u�zj핫�^=s�6�Yv��M:G�!�U:��-��J_�.NJ?�wr�JxvQI - -&�����fԋ�R�����/�\|E�a��������)EԫY��s���Uĵ�*���}�p'8���*u�.�gvƽ3��yiw�ɖ�������4�v�/�((Ѭ�g�����泠3�Bݿ���"��a�:E��6���>���s��O��B�:=.% �Cʿ�tY�(���e���e�&���35n:�wSk��m�<�"x��ɕ -E?��y�x�` j$d�}V]`[�?�z�_�.��C���v�x��k7�V��6u��U��erI����q��ݔ�9�?�=��ό�-�{m�4<¡������q*q��:���/S+��{�}P~T$k�#w�+k��Ū�W6����LT�~�n�=������͎�X�.
�����͇�UY��0��ՂU�Q�n��7]�f%#n]Ye/������SU�t��7M��{��ݞi�z��')�� n���1*&�R��R�_H�߽�'�8�Q���Eg���#b��Lz�k�#&�6��MvB?�@#���˄![>=�wo��o��&�4��)�����1�L6��햘nj}��� ��c�2�[<�/���8�͵���F�5�4��Q{�z��_ז��K��Z�E�4����-���٥�W��N�L7�>'�,��|���3��ٖQSF9N!�b�|XH.�f0 -�� -��ʓ�_c�gaJ�0˛J2lb��O���>�^>@K:[�I�0,�)q�!��1?��::�����xs��ICA��� 3&��p$Y@�L����K���T��� ��~p� -�9���R}�wݎ�q}9�sh��@ͬ������ܷ�v�/����7K���\/$D?$ �֩�NWy�pw��������D���]�~<
&��\��'�vAd&4�2��9x��M��C�pX�˅� -�%�mK� -���8m�����x1h���DfTF�������Cl��+��#~R $W1�\5�!��*n&�o��ç�)���+���f����s(�aW+�iw�cf;��=���v�Է��u/��Mm.��4%2��m뷨<6�D��y�g,�q��-7��E��+���X����Y�٘�b6�t#� �O��KS����4���D4U��L����#z�V��Y�1�
���WZE�E.��_G��=��l��U��?�]�h^��N>ъ�V~$F�b��fQD}J �� ��������¥_���K"!q]K�қ�ݕ�<F�� }��`�K�!������/�f��I#34��:x�<��92&�t�9�Lކ�r��] m}M��ke�d�H�����;�Mk��]�e6{4�O�2;�&�&�N:��`����X^����!��ؠa�f������ʚ+�\�lG�k_@�^wAir�!�~��{�Ĝ�w��u����{��U����s_bt�d%�}'7A�u���q`1Y��5���䒘�1ʷ,3x�5<i[-��m��P1dm�H�V��f�+i�i�sQ5�CŁո����9 ��[m��G��o÷�@�ƥ�&�<4��Zo��=%s`���[��q�c ����Cy>���A�Q=C
G�ͩ��&:�)|�+)eeG쭱�GGxp�"�����
�ic���� -��N�?�$��L�v�Z�ޚ2[3��Z�Q�i�q2a#�k̔��S�w����L�g]�|�=����Gd��9�B�8TN.R���}���߈�1�����A8:��z�ձFA�q|�I@���X����s:;�B��f� -AQ�lj8 �)��a���yᛶ��8�@��ܼo�XN��VU���`�����7^��r��1vx��|e�@��ՇI!Ԫ�C�)
V���3�k -�F�����ȅ��5*�.���5�w�Z~�&s`��p�I��Bl\"����]�X�\-���B{�2I��+�.�<u︊�@�NK�(��p�f)� -�,��N��B�h��M�� -{�ԱP���$^�N��2� ���
;����7��)�����,�!�S�j�f�����ae��q�0�`$Θ�L��fX�cW~�v�\j��D�n�g�n���� -������rE�����C�o4��`�h��Q��#�S2I�쯈�����g��? -��T��K��sr&�gы[9�ҽ�X.Wދ5���/_�Ή��Wj!Y��@��n�oz�"K�ɍh�fċ�������[K�[�����#V�FKi�s#��g\Dޓ����=b;�ш�by�w� TS�E;r��?W)�z���L#Wt�=�}r]�L;���t�F��\�8��
����#.:$����Vb�"�Z��_���?�� +jg����h�
�
�����O����� ���4�O�?9�0h(�V�(|S���mC �^-�- +��{c*>o�d?�s��
c�x�6���YX����%gr��GLw�W�pV�/:�I��|C
���}(X)Q�gf�kbO��+r��՛̋m_%-��#3
�7��G7���b��62L���@����̱���:
�8�2ԷI�f���VN��"4�� L?ժ�*Ns�a �������GP��<�����D�b��=5�y�y�GDv����'���>J��la�d�/������<Z �E�Ym�Gc��$��}�]v���,�[�3h��o��ߜ�j0��G�IѺE�Q��ª�=S��j +a?�"�=;������Y1��a�\'���E2�_�rBebP��y<�55J+qD*ᄑC-�n���]�y,%�ԧ����������$��=+�:��<L�,Jd�zo}�7���ō z���/�jI�}�|�4����lfc{0Y[F�y�D�`; ٸ.���R�ϰH +>��:�B���r������䣠s��i��r��dx�a�rCV��� +Rrd
���aAf�|��G�A;�R:?+�C�݂��.�v���� ���ܯF���p-m�P������$Е�h��~)���cE�C�' � �$���]�Z���)͌j(H�;KDldv`��͠����HSJ���c�uTf�L�)>�9{r�`�'-M�0��7B����P��*d�g�9��O���9�)*��pĹ��a���(�����_O��\"U#;�ҿN3vl���|T)D<���c=�-g��2�e3��c�D>������:at���D� +|� +8T��>�A�*�^��3�fhC���9����d���\�<�U��e�e��*4���Jj�/֭Yvw�r����"�/1^xx6"�Q�J�T9o� +����\��
��״m�,zi��=[mI�jk)<�4��wo�1�q +��c��y5`j8N��q#(t.�[q)�M��
����,J5J�ןl��r!��.6(!�r˦�-�����n�_��}��D�tr]�)cr�L��G3��6~�
D--�N����aG�����^�˻��G�sn.p7mB(�����P����N� ++���s����J�����n�v�k}�%����I2�����#|�8��Vu�-�k �3gzn���oo�~��U�M^{��L|�<��k��3�����ū_��IG�H狕Y�.�g��% �ɜ��^��J�$��=TH�4�He^"�[` +��S�7�p%�Ph����9�ꓔ=zn�TE�ւpr�w{^a��}��f���L�� �s��;x�Fu�f�9e��qm�o�b��̺�{���r)��Vf�0%�n��v�.�"[e��[�a�T�q&bn2
�Sd��w)��*��ꩵW�^ jx�̭�Pf���7��s�T0V�����*}�g�|+���Y�m|�+��E%) +���d�Eu�)�dK�bƛQ/.K
������s��fL� +O�[>`��Q�fiXWow��b�W��X���!Ý�|���m����������qXZ$[�+��ڗҰۥ����D�N�}f�V��ς�P�Su�־[j�Hχ�Q��t\~�L�wB�M�R0<Qv� + ����$\)��e٣8n�Y?���t���Ը���M��z;��̊\t�=:'W�)��z��y���� �u��YuY�ul���k��|1��ᓶ�e��ï�(Z�_j�� �Wq[��%q���'Ǚ�?tS��������N?3RܶX0�)����~қ�SƩ������k�L�d���A�Q��a���E^��;\ٌf'3Q������H�wB"7;b��4|/Ȟ�7�We���`��WV��F���O�t-蚕�t�ueq��8c"�;�OU͋ҥ��4�~�]{xw{��F�r��(���ݪbcĨ���K��J�,d|!�}� +�,l�G���E�ʏ�Eblȃ2�5����|\��6Y� �\$��J"�/�l���ܽ�K�Is�L�'Ҡ��8���T3�*�[b������'�f��g�n� +��'�:N`J��Z�a��8�\k?Q�^��"A��<�0��,P�Ye�Kn~A�=S����}l�ul��� _�����"EzT��p��um��-5���I�4��swo�� +ai(�3(O�~��K��)��,of(ɰ!��R@�?��c��z� +Go����J�E�QEAN��o��_�u�x3H3��I%�\�4r���~�����٫���4��H~����.ΡP�]�4G���9��l��TO�{��R�ޫ�U��7����ҔȰ"���ߢ�|ؼS�;�Q������ܨ��]�����b���g�^dc�����ҍ`&4>�/M��F���Ċ��|T�3����[�*g����7�f_iu�`�~��|²�VUZ�_� w��y��;:�D+�[���Y��E�a(���b$��&P��[w�c���~� +V.�L��u-�bHovW���W������p.���Z㫞'���q��&<���������Ș���h�x3y�{ȭx>ty���5
(ή�m��#Ux�G���6I���w�����x?��쬚���;q�$z�>����wcyŎ�r��+gd`��m��vߣR+k�Hsm���}A{}��ɩ�\��&��s��Y�� t@�bWd�Ij�STq욾��}��}�����)���Ɓ�ld�z�����KbJ�(߲��)��m�� +ж�>BŐ��#5Z%�o��]���E�`�V�vҗ�$�o��vej�
�6e����4���jk�-0��́���n�_�͎���2;���b�?5F�5�7��ʻ�輧�u���U������E���0~��N6����?�d���FdeG��\-]?^j~�Ӗ�����s�b0࿃�&ow����RԶ�BcĈD^�8���K�)��ҽ}����=�;,'�ǔ{}����!��E�I�g���d�<�I��f���Ҕ|�0����zj�,v�,M����w�Ӳ�%.����]M�;w�nU���+0��:1�d��"21ۅk!zk�l�DD�k�Fѧ��Ʉ���1S��Oq��ˢ2e�u-��4�"�����4a�{�xP9�H�R���#�|#��,v2S����V�����&m#`b�J���� ���Q+EI���$8�<ꇡ���o����e�r�c8�&[U�>T���f��x���=�������-��ͫW&�P�^Y�4X�z��h�j�G +��I���/.^�v#�N�q�J�K��Y��}�������{!�����4R�N�_Bo TΨ<k�K*��0��4��(�f�HZ+��Ύʾ#Ζר ��no�TX0�-k�A�́�3��'M��q�p���v
[`�s�������$�֮pS�LX��Խ�*��:-ɢP��Ñ���EC]�pe��xa������3���-Q:X*�;����bS�����jOh��@\j-��>~��{Y�_MNA"yZ��Żƈ��!�}vwRC%fB@��G����Qc(�Za}6���1���[���U�d5�{� +v��� +�ͶD=�-z��ݸY,��S-��Ӻ���@6WptL�ZJ:�]�e�b�\�*(R��;1�3���W4� +*��R�B��w�x�:�&ˬ3$��K6����/�����RZ��H��N)�-��JZ + ��*ƍ���9�8c�2�a]�]���Ur�a����m�9��&*�F�/b3��fr*ݾ9�0��%�azcD�z��N�$�粿"�G'[DL�Uf�(p^R� +/Q��ə�E/n��J�6c�L\y/Ԙ0��|�:'�_��dAe��UO�鹊,�&7��/~���.Co-�Gn��C�JR�X)-�yύ,��9pyO:�f��M�PF#���ߡ�PMY�ȁRB�\����o�3�\�)�p��ue2A�0.�>��sE>r���N7�h�kv����Cd؛RZ��X�j�[��#�� endobj 982 0 obj << /Type /Font @@ -5477,14 +5461,14 @@ endobj /FirstChar 36 /LastChar 121 /Widths 1351 0 R -/BaseFont /TSWFRI+NimbusSanL-Bold +/BaseFont /DOHFNV+NimbusSanL-Bold /FontDescriptor 980 0 R >> endobj 980 0 obj << /Ascent 722 /CapHeight 722 /Descent -217 -/FontName /TSWFRI+NimbusSanL-Bold +/FontName /DOHFNV+NimbusSanL-Bold /ItalicAngle 0 /StemV 141 /XHeight 532 @@ -5508,7 +5492,7 @@ x��zeT\ݶ%���Z���R�C ��B����!� �Aܝ` �A�$M�������W�����8{Ϲ�\{ͽΨ��(v��<������ х"]�6P���~e�����٣ ������AQ -��P�-����{@(�;���'��OH +��P�-����{@(�;���'��OH �������R�����9�ݝ��r��v ��ӷ��8�@��������@��R���s�������C۸#����A���sn�_ ���[�u��sx�vU+O�ɿ=��W���;�^��� Бz�y�C������4uͩn��tpI^�N�bf�O�P4�s� @@ -5540,7 +5524,7 @@ QL��Y��v�)��-�G�j�z��gh���.���&$RD Ls�p��J�'+�*�p-r��smD_�.:.��W�lK���e�� +o�=(n��n�꽎��,�Y���|�{|�c�pQ'c7�Ҭ��zZ��tg����E�v��!��C�K�;��>]� ���zp�sB�����Ѭ�&����*=�Ʀ(�I�X�Rw����*�����V�Jl�fF}�ˍ.G$=�"���_dm-n��e�ul}h���E��G|d#±���Ռ�������f��W4��Е(Y�q}Gk�w�u^�I_�ry*p��t7AN gN����7�� _���։��:�0h"�Qo�����'�,E@����jĀ"p.a����{��g���(g��pX���o -�&+����[%B�YZ�J�4���A�&�����3�/��J�ŭL�8��r?�.�B�u����u��뷧�@u�Q����5�tΥ������"K�"�az���$&��%����#�y����x����+xS��"���L=�#�x�{��.^7���|��������Na�9��U��<�F'�ZB��K�-��BE�~l�Q�TJ�3��DYr<TϜy5Yq8��8gme�
�Ц�q�sR������7���Udn�� s ���'���kQ�������#Zy�gU?���y;�� +�&+����[%B�YZ�J�4���A�&�����3�/��J�ŭL�8��r?�.�B�u����u��뷧�@u�Q����5�tΥ������"K�"�az���$&��%����#�y����x����+xS��"���L=�#�x�{��.^7���|��������Na�9��U��<�F'�ZB��K�-��BE�~l�Q�TJ�3��DYr<TϜy5Yq8��8gme�
�Ц�q�sR������7���Udn�� s ���'���kQ�������#Zy�gU?���y;�� endobj 802 0 obj << /Type /Font @@ -5549,14 +5533,14 @@ endobj /FirstChar 2 /LastChar 151 /Widths 1352 0 R -/BaseFont /XOQSPH+NimbusSanL-Regu +/BaseFont /PNUUAQ+NimbusSanL-Regu /FontDescriptor 800 0 R >> endobj 800 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /XOQSPH+NimbusSanL-Regu +/FontName /PNUUAQ+NimbusSanL-Regu /ItalicAngle 0 /StemV 85 /XHeight 523 @@ -5576,33 +5560,30 @@ endobj /Filter /FlateDecode >> stream -x��WgP�붦�H�ޅ���A�W���$$���^�)*�Ez� -"]�t�H�"����3��_��_wnf����Y�Y�Yߚ ����aQG�1"�² -�@df0@��Dddd�� -����114������/��ן�
u������c��kG#�q� - -��p�bX2}���H -�HM�Z�&T��Ի�گ�|�ùH���U �w�^~��w��TS��~l�|m��s^�T��
2^2��';�,��i����8�c��;;���t)t%��2Iv9ޜ|qANzLb���ʦ9i�,v�*�:Ԝ��fՁ@�8s�f��f�����O9ݢ�ԟ#A�W����%�J�'WN_*�T�ˮ̛?�ΞU�7V�) -�s��'���e -��j�T��+��7"��O m�lA�2*�Z� 4�,���^>��fi�
i����6����\��@����e��[�V�Y� -�~s��Ω��䘤�;�K��fb�>��x��|���5�0�9����������� -y%�\֯�5���e՛�E��%X؞��tᐧY�Q�uV���2�4e����hJia��6[G���;��0}H��3d6�r9�3:`�H �����h~���%`�ӵa�8"N�Kw��E��w�|�2{�����Jڜ�9�ښ��|J9��mj�cpM�!���hr'ntk>a;:�|�K��*M/x���[#�< -#�xr�>C�]�K�pP݅qNIOu���W�C��2tX���!+�5��Iv�|e�7�C����}h�W����"]xN2R̮%d�m��ղU}O.���Q��� ����ws ��3�� s�}�f_,�[�<7�W�(�y�F�ٽJ�)����ţ�%|�TA��"��c�
�c�Z�R<���^N畋x����{gc�G�$��(���S�~�GB����
w8�a�e��%m���3�-b?Q�㩗2��W��xosL��]�,[Mbh��@F&�1�=�g����r��49|�1����+��-�`�|��qfH�+�6��H��M���5!��w|zz_��L}'�D��L�e�Al2���E��4��[����>�}+[�K7�����>��(��`cWߔz�� �d^���B�y���y�Ȕ?U����G�'��D0�|��Q�~���^��qVA��A �
�c��3&"��.R[q��i���c���ѭ -���� -.h����+�GU�M�d�$Y������@���H���x�|�y����GV3O��}>;l�^Tu�����?��U����!�C�ިo�M�]_D��� ��\-q�X�j�4ʪ[���J�zx�d}����'�u �mQh.�G$Z��I� -ٮ+}����`�KT�Qh�����QDn�@�Uv���j
�@T|��z�_�����j.jY$]�~�}vV���x_U����x��5�T�{歚3(���d��o�3tA����ٞ�r�w̶t��/u-��Ό���>#]����v��%���Q���vu'�� -�<�V��4���a�$4.x8��
BSP��x������JQ����7�3�����
)���O{F^j�[Pߜud�c�ŵu��F ?6E6k}�͏S���f�)�hhZ��ίF�I�Ł��#a,�k�1�t�*��qʒBp%v2f�N�=��hS -�&�e}S� -�Y/;����8��M�r�,Nys<�d{�$ƈ
7�g�0�����\���
�j+�Tp�&{[��\��9��"��`��r�v�_���7���툗���x�a�����b]�.�x��Ez\]S�$�oZzq -��_��mgU���c\��Nɷ�%bsG�]�!��e1JE"����ˡȍBkn�T|�f������<\ʋ���.�x#ϛqsƆ��I)_�T�;ʯ�r��ؼ|9�R��&�r��YG� -.lo& -AlJ�&�$)�=W��
��U}I�J��^U�'���=&�7���B?ޣ,|
~�(q�٠��%_����x��0� -�qf�b��G?vCo�[ᡃ����������垴��;�WC#$#}ר�5F��eJ�:�K^�:�)F{�N�m���⿔M5�9Rq9�:)1H6���fѫ -�+��� |�H5O�v��q���Ò��HG�`��!o�?��1[E�;� Ѣ���^��q�j��8e_P�DF��>M��X�e��qJ@�K]�~-��w��^�$C�}j�kz� t�c?�?�Q54[f��+�N�؋�XZ�\����% -(ۼ�6�gb�N��e�V�w�.e��6*6Z�Ѵ�'r�p��~6}�X�G�J �}5e�Z9��� �3&58�� VGh�}�uj -�� -���|�K -�4v_yF����R��@��6�4��'�m��w�����wX^ʩ�M<�����#��#r����@*�g�k�dU͘�xO����Y�O
F@V27�t(:?��ŷj}�<��'����"�0�Kyq�W�d{�b��a�S���3�ec%s�Z�$��(�3��[�䚽��!��� �� \�(g��B:��endstream +x��WgP�붦�t�w! E@z/�4�^B ����{�ޑ��{Q��� ҥIW�4)��>���u��u�f&��}���U����ps� +*����8FPTHD�u�uEk#��U0��- +��$�ܪ(E�Հ���A@ +�\�����!~'�D!��XK��@c� �`����#O��+6��;�%r�U�oK�E1@(
�@<0�b�B +���7[�����x@@$ӟ �`Ǵ�tLCN�;5��vQ��da���|� +D�_Z��l��Ee�Pݰ��[ω-��/�W���a�m)��<V�[|�T�<M����V���ۦ�-\3�1Y]z�o`Upq��p�8�h�����[�?-�1��)(��]3euՋ�m�č�c�ޞ�}��/,ϟs˻]#��wydn\����>0DEj��<�9�M�4�M�}VB?��j��
V��HC�Hi9�{��_���k�h�?�>�
���e�ϩ�:ý�������|~)P+"r>r��;�,��}����ⴎ
(���8�Wӥؕ�J�,��pc���ae��J>��U������3N�U���,=�����&���*�?�u� +R~��]%�動`�+��^M8~�d`VC/��l��<˨�o��S��Z�>#n��c`�`�Y�eq�*.�TOo-��6�/�R�$���^!�8�ro8�����&yԺ�m����c�@چ�u:;�P�X5��j!%#��QZ�߭�g��IK�5����5�fQ�����>�fc�43 B��ۥ���cJ��)�T|��!܉Ju��=3��7H +�<���}���I-ې�^ze�츍ר"�Sskk�O2ÍM-�������d���]�9QN5�Lm/������0U��f�r5�;��.�*�iݽ L����R���65��5ܒ����ߠ�;��YIO�RS���b��Ưij�L.�����Զ����@���۞�~'1qv�CY����o+���M�-��Ў��I�}��g`O�f��p���ă�ji��9I��̲{��6����_�^�IVH�[u3�E�T=ݱ���fH��#wϓl��n�cn�⑇��l���f`�+�fk�Q�iS>P�s�{RNA�����y�˻�o��[�����Δ�����h�!e���t���6���a7"7�P�&�����&ƞ�S��ϗ�_Wl�ݴ +��I
_ծ"�i��<�_Hǣ�˭N������vV�x�nmhm���������/U쟕���w���o��媚"T"�K)�I���CZ5[�L�ʄ1VD��}�� +�^ˇ��,M�!�7�<&�R��������u���b�y��9+���o�И9U3����z�82�L���ߚ��� +��ƣ�)wCp�L�X/'zFCf"����S�b�)�_��qZkwm�6�H�E���#|���6��̑�2n�R�.��@����f���D�J^xj���\��E�$����7�< ݚOُ-2tH�^��m>zk��joR}���]G�|�� #X�e%臈ϸ�jYJ�l
��*�8h�-�j�h�� 6OLO&��&��&�ߥ����.c���]$T����:�s0����y�i�� dzv5�$+�]�����k�_�x����Rj5�çJј/!�j#z�d�o�`Y��B��(�w��ƪLIz�~���a��MHMT. +�Sq��qz����rn�h^�x�뒚�:�
���:[8�~�s�A�j������eN�9�,+�TK��%Tu�����r}7�p��p1$�/��~p�x듏��ѫ��V�ZK4:0W����5�hu2����own���x{�_Q��R�10�ԅRG"%�}P��%����_�F㩪U��p�Y����|����9¦�3�����d9�TZ�̏{������k+�֟�78��%�5Bf���uS}��#g6�\��Q_O�Џx�@�R�@*;���y���j�Nf\�T-��� +�,�Y:'�`�Ǎ�x���<KR�y��:� +�>Qΰ ��s��?�Y���|��x���F�ֳ�r�%�Z�8A�i7��� +�4r��?Ke7bC���%Qx\�pX)���;�"O����w�#;9���O��#o�R�b��@?�=y��Ϝ�Ƭ�#���-Wr�Hر �Y�+_~����
o�pGC� +�n�Th~5��KBL� c%[ˍ���T/���K��+հ3�>�xZ�!r�!% +�Z�l�S��-=�v�ˌ��9��$�w7�����씅-�p8u>�}P\��ġ�ݹ�SF��C58UZ:���P>�T�ymçț>��0}�9;#}���kTr������2��-�U�K�;iS���_:�N}A2/"��Z=��Kd����?"WL`:%�����.-s|F�ܯ%��S�v��V�z��:�RI��Q����~lIֈ��C�fn�D���tқ$3i����/����M���A��p��� �����r:�����9���ґ�k�a�O" V�3e\����mz��q����Hrw�_ʄ�����:�\��� +&�U��˰���hɞw��2R���-聕SNX�_��'W;�R���IXud"�}�)��On��VQ�nj*J�(E�h���k��V;6N�X5�+̶�G0!^s����D�2Щ�R�֩_��ޝ�1����I�8������E�{�8���L�Y�ኳS�vb?V�V�+W��:�l(A͋���Ok�����vD"�7�x�&ZSf4���8��A^S�*�ڇ���8e��,���uV���7T�UK[k�a�{fѯ=k +h�q��Ph2�"e�=�H��Κ���Z���Ɲ#���%&R�O���;��h����ǹ�c��)��g��,>��}1b�C�nD +D=�o��E�.�9 �6.ğS3U�,�{^�nIb(�5Kq�G�Q��1��3�;+ ��[����J�߹{M���o�-t}<��������s���c�H�)��a"rt��|x��4ns%�����ҏ-�F�P�� +��'���q�Fm!�b���̎��'���Z�ޥ�t�crڰ�p�G�J��!�;c��*�(����b�"�rEA��g�kp��>�����5��3�� + ��5�uVҔ]��pH�2����VK�B>���J["g���x��%��{�o�h��罶W �#Ӡ�O*�sm�|�W�1��R�i!9w��j�r������d��2��'��3` �m��� 0d��)��������8���;����.z�u陀�w>ꡟK�i�+A�&b3��*�?;��s���
��(Z��������L�6(V��!?h��"x���N��ȥ��6��Sb,�K/�������|�@�w�#6��%����&p +?V,�Y +��|6������Q���$2��۽��C�m���z����)�e&���l���x
�W����v_zD:���Q��D��6�7��'�n+��v��3�J�:,�?�R�&��C�QΑ|�=_z��S0�{D��5�V�f�j���ۄ�ڃg�# KY/�m������Z�>X���}��}�O�橲8�#]�=x1��(홟3LU3�dјN�R��^+E�=J��.���!�f'�o~H�����0g ʉ� endobj 715 0 obj << /Type /Font @@ -5611,14 +5592,14 @@ endobj /FirstChar 46 /LastChar 122 /Widths 1353 0 R -/BaseFont /KQTSTM+NimbusMonL-BoldObli +/BaseFont /NXYYRQ+NimbusMonL-BoldObli /FontDescriptor 713 0 R >> endobj 713 0 obj << /Ascent 624 /CapHeight 552 /Descent -126 -/FontName /KQTSTM+NimbusMonL-BoldObli +/FontName /NXYYRQ+NimbusMonL-BoldObli /ItalicAngle -12 /StemV 103 /XHeight 439 @@ -5639,7 +5620,7 @@ endobj >> stream x��weP���-�<��Npw��0�� -r��X��_��]���9 +r��X��_��]���9 �ٝA��`a�y\�@��Y~���K㛖%��! ��B(ֆ��ػ����
��,��b���*w3���m�$� �@}�){�w���x�ˋD���#^�2j���p���[����q����R�}�Lӥ�%'!*=w�v�*����,T��ˆ<vI�"4P��}��� @@ -5660,7 +5641,7 @@ K^{�{��D�,kG�����+L��� �nTJ��<�� �-ű��2y� �V���&rG\@�2;�����pq1�n�#�����L��r�q��Y"�*��,��0�� �͕�,� 4[����e��d?i����b!Z�O;�,��0�*�j���p细�KL���orͥ�;�\����Yq�I�� �ih�x�6��Ŧl���}K�i��`�YKq�>��X�8% De�)eZ=��5�8����@H���,�թ��c����S���-�ό����^�z2gt_�^)��q�;AQ3p��������v8%������n��.��$�'�����<S�e���9�V��ˠ09�������D0�tkl+����T����I��p��E�%��K_�Z�S�w�SșEU�O�cm�#��#���%�?�>MW��D���<R��v��H�JB4B1CPHxB�v?�s���> A~X��i�Z���������`�+p솭�Y��du��:���}'F4�ɯ2���k��~�e���rB�A|t#�]v�=~gW��F�Ap)jK�}*3�4W`����/�兓Dz����/|�8/m�'*�~V��|s�fbr��]�ه���I:�S��g�Ԥ-�D8fv��R����@���a����b&%dY7����Gˣ��� �~%��H�j7ޛ���i�%�S<�P�l�M�����5�k�*�B���&�����ͲD ���� ���5w�S~A�}f�
`s���f����k��ڋ�I����P�;Сv�5e� Z���hҮ���`q��^kM�7�5 �X�w��4�<mc��b�<f���������F��d�=�}��������"~a��{�./� ?*�A/sP죙���pL�]Ձ��-a��P��;�y��te`��{ ,�I�0��vI�B�qN�^ Ų�*[�3�Q��V婁�6*%`�"���oβ����n�`��Q$���I]��w�Z���*�m���ň -U��%۸T?�x��h�K�d��������:������ңw��-����D6�� >QuO}��*�ڥ�&v�]ɚ��U�^�M%f��+��S��Ϫs�]̙�
�4"� �?�'%����9���}��q�]�]k�8xE�k��eEJ4�����Bۜ!¿E,~�TS`�$螺��)��X�w��}��g�������m�Z��π��w�e��6���@M�S�7nDA�ُg�u{\�zo�iC&�R�V��dA�W"M���X]2P���.�Y��Y.oi����U��kZl�!�9(1��d�aw�ɾ ��Q1���9�Dv2@&*����A���OX��fή��f�v(�x�bmendstream +U��%۸T?�x��h�K�d��������:������ңw��-����D6�� >QuO}��*�ڥ�&v�]ɚ��U�^�M%f��+��S��Ϫs�]̙�
�4"� �?�'%����9���}��q�]�]k�8xE�k��eEJ4�����Bۜ!¿E,~�TS`�$螺��)��X�w��}��g�������m�Z��π��w�e��6���@M�S�7nDA�ُg�u{\�zo�iC&�R�V��dA�W"M���X]2P���.�Y��Y.oi����U��kZl�!�9(1��d�aw�ɾ ��Q1���9�Dv2@&*����A���OX��fή��f�v(���bYendstream endobj 707 0 obj << /Type /Font @@ -5669,14 +5650,14 @@ endobj /FirstChar 40 /LastChar 122 /Widths 1354 0 R -/BaseFont /PYOUGV+NimbusMonL-ReguObli +/BaseFont /ZFUKPF+NimbusMonL-ReguObli /FontDescriptor 705 0 R >> endobj 705 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /PYOUGV+NimbusMonL-ReguObli +/FontName /ZFUKPF+NimbusMonL-ReguObli /ItalicAngle -12 /StemV 43 /XHeight 426 @@ -5698,7 +5679,7 @@ endobj stream x���UT�]�%��kቻ;���N�Z���;����;��Z�����t�������y�ω�#N�8�Y���XQ�^����L��΅��������hdccd ���W��5�5�Ñ��8�� -rp���a��K�h���l�tp�ͪ(*�ou�X�����؛��4�7q�gK�����E]��v� +rp���a��K�h���l�tp�ͪ(*�ou�X�����؛��4�7q�gK�����E]��v� ��V���^Nc_��iܐ�槕Q�ъ�+���P�Y���Z#����6S��S7C�0��D�X>�O�ƶa�l�J���Ҋuw����h���7n- �}������[�w� g�����נ�����ۭ�IZR
� �Y�u#1��t,����CMMW�M���Ӗ$�I�]��}}���(+�X{���H�=s]Ԑ��<���b57U�Ct��# �@
�KC�F���5�0� ��ʩ�t��N�����u�T��4F�䂙ϸ��:�0��z2.�8���"�@b��:�(o`ԿkM.Z�#�2GY�nplw��m݆�f[8�")�-�>���"���,��6�#�VE��4� �T� �����X}�F;�yhȱ��x�!:�<�?-p�y�>sd�aEG2��iħ��_,�:���I� �����.���^�!Oz�(~�@��ʨJ� �(�)I�ɒ!�[��7O�0 �(��/��#?��tss��w�gWW��;� @@ -5770,7 +5751,7 @@ Pпܠ�ST �jD�G�@�=��0V�23q�8@R��Sx����Q�k>֘Iۻ��n�@���+7�� #xA& V��2��u=���"��
�}��Rp�G0�|�����v���#�i�j3�T��(3Z��]��6$�H�.�2r�"��.Q}�[�(~�a��|�g7L���i G�zB�������y,<ri5��<�Q��"�@X1p�J9���{5�XO�!��D��-���{��|���|�Ȕ�;��U�FrE���>����%���.�c�G�3*ٺr��.��S�Z����i�����"�8�[�o��i��tB!N�Ma3_#�֑3?z25Q��%Tb�����S�\ ��`�D�����"�һK$��� W�P-$�"ta�5�.��i�"2a ��Eg|�����O-,�'�Ƥ�p|�̔��7r����������!�v����0�B�y\�q�XkʀX��;my��(~a��{�|�ob���֭�x�=���` �罦(h
��85]��C����U�u���4 �?0 -t��t�q���?p�?��'Lľ�\�m�����>��endstream +t��t�q���?p�?��'Lľ�\�m�����6��endstream endobj 638 0 obj << /Type /Font @@ -5779,14 +5760,14 @@ endobj /FirstChar 40 /LastChar 90 /Widths 1355 0 R -/BaseFont /IKWPAS+URWPalladioL-Roma-Slant_167 +/BaseFont /DCPNPJ+URWPalladioL-Roma-Slant_167 /FontDescriptor 636 0 R >> endobj 636 0 obj << /Ascent 715 /CapHeight 680 /Descent -282 -/FontName /IKWPAS+URWPalladioL-Roma-Slant_167 +/FontName /DCPNPJ+URWPalladioL-Roma-Slant_167 /ItalicAngle -9 /StemV 84 /XHeight 469 @@ -5811,7 +5792,7 @@ x���ePeݲ% �k䀣�u9��lŌ��� � t�W������$�L�l�= -F6����
c��s���b�l@�������7�������6ۚ�������F���h��lb03��ۣ��lM��� [�_-��F +F6����
c��s���b�l@�������7�������6ۚ�������F���h��lb03��ۣ��lM��� [�_-��F �ݡ$�6;�� �S�F���9Lq��#7���A�Oy���k��0\���)�ڊ�P���_�����+WX��4�qW%�3A pǂy�Nј�h�F�����H�Q�v�;�0p�]�t�~xd,���x��6m$��b��a���a�Q���ZCE{�V>$zytg�C� ���~^�Z�'�4v̢��Q(�����E$9�>R��vJr��!V��Q�-��
�]k��#L�)N[ Y'L Ml%�:Tid�� @@ -5856,7 +5837,7 @@ S�ŕ���?U�h���~�ܭ�����F�̽�
�`2��;�_�ۥ��%�%B\a�Pbs������xۊ͏P��"2�'�\s�a �--�T��?�שּׁ~Ig.�s#IR�1�d�0s��l��)w�C�5Z�D��A|aK]��Q�)�э�ۥf�-6w��n�ԑ�Z����e��KQ��!q�l���;��`����j�"�Fd�(��%Х����:�K�����j?�0GL��/����s�mt�7@F.�v�\�`�_��@��+߭'9/���Q��;*��~��\݂���"@�w�> ���h����;f&���tYPX�(�ї��*�R�͋MI.riAۏ�eBapX,&L��F�qO�i/z�-J�َX!|���{/��l��2�L��$��y�r���tA3�����MT�˹#��_��C��%3(�BN�fMݱd[�0i�����e�n��,2����>Q~E�l�чd��K � �X�� �S�M�kh_v.�Z�X�Y��~d�Z��q�z3�=p��*S�ᣍ.rY�8xz��m:���fkl��3V�y�ݪ"|pA�q+K����5���X��3�S�K�8�Xg�y6V�O���n�|@a������\1-��$j���Y�6I���Q����.���!�" ���#k��@n���.MV5�ҞpɾT �L$*jsK��kU3P"���ǂ�\e,Ѷ��Ue�ATI���#DR���f���D�4��;��"_u��+E�8崕�.a�M�eə�m��b�B�_S���,�5�L(�����l�O���,��V"��e��ŗ��~,���������gq8��Z���}�/�'la��S�q�t���^H��Nw��taES<hpFE��u�F,p?��8*��z"��>���lf���~,��Ni`��ύgC�@2|���>�6.�W��>��ؓM�+�
$g;���G�ޗ��EڧqkER���c{��Z��Zd;_P��t���/QO�I��g����%E:)�7��zz��t�Z�� -�9���N�өGn����,���:�5�=�x�=Z����Q�Gc]q��_������'�(�DZ���J���I�'�_��:��HjD�l��,�q�`G���\�@�������ܪ�X��Q<�i8��|#�����O(m�m�8�7�r�j�"T�y�
Z�|A��Pq��
[���3V�l�
�V�lb��.۞F
�o�J��� +�9���N�өGn����,���:�5�=�x�=Z����Q�Gc]q��_������'�(�DZ���J���I�'�_��:��HjD�l��,�q�`G���\�@�������ܪ�X��Q<�i8��|#�����O(m�m�8�7�r�j�"T�y�
Z�|A��Pq��
[���3V�l�
�V�lb��.۞F
�o�J��� endobj 631 0 obj << /Type /Font @@ -5865,14 +5846,14 @@ endobj /FirstChar 34 /LastChar 125 /Widths 1356 0 R -/BaseFont /IQJBXB+NimbusMonL-Bold +/BaseFont /EGSTMX+NimbusMonL-Bold /FontDescriptor 629 0 R >> endobj 629 0 obj << /Ascent 624 /CapHeight 552 /Descent -126 -/FontName /IQJBXB+NimbusMonL-Bold +/FontName /EGSTMX+NimbusMonL-Bold /ItalicAngle 0 /StemV 101 /XHeight 439 @@ -5894,7 +5875,7 @@ endobj stream xڬ�c�f��%��Y�'UiVڶm?i۶]i�Ҷmۨ�U�����_�s������c�kƌ���؛�XA�N���(fg�L�D�����1rq�����S�� t�W�(����$M�l�= -��� +��� ���t�F�����YQv6�5�;^����������:����
:�4�[[�3��L�Lw�������e�/mP)*���K��0x� �o���l�X:��8���=ڋeMѓ ����!��+@����N�;�A�1�\=��zQfB��Q��ޤ��^�;�t�G��?T����dO�H��?��0;QA�j�ο'��y�깅�;ģɉ�%�v�@��ǯ�Z�A�ބ�w�~�I�����GN�Ki#�`��n�.����ϓ$�(�zX��u3?�#�4�9����B.��ӄ?�7kE4� ]O8�vC���UkSM�ڇ��02��YZ��uH�H7�R�$�j�D"$m|/���K|ZT7��蝳�9�1��u����@�v�y��Vh�x+20%3�t�%7!AZ|����{�ڏG�P�����
_����X���"���'y���
��o)8[�̗3 !�,� �h!k<L��l�8�}�-��4��4�e�nv���@��+��Z�F�h�������??jb��S�cj��F�א���yx㰢�B;^��tlY���H�� �ǭ^���=�D��bx:3p�=�c��#�],�qGĮ�k� �H�f�Ж��������� ӓ�|#9�$�|S��W�mMQ$TY�ZQ^��P�LR`�!T��|ބl�lFO���S�gc8FR����S?߰���l8DN�ޝ�l����y���4ۭ�L��K ����4|Eu��ﴀ�f @@ -5966,7 +5947,7 @@ d�\�xy�>��� �M�b�����@o�1�%Hy.�y�?.��rn���T��p�Z[��4��ɏ�H�y��#I�H���g�1�rw�eB��?�ɾj��o�[�V���3PTc�=,r�?s0��)�:K�+�b�J�'(g�c?8Ⱦ<χ��ų���氅SvU'�N������m�iG�D���Q�
�V|Q�i��-(�P�1W��s+�A�rl�xHԆD�# ���Z���V���
.u�&̺�E� V��|���Ko��N69]�?%����:��GI
��m��i�y�Y�^\���㿾�ޫ�`Q�|��i��<{�Ds���ѩ�6�&`��WJܓ �+�W|S#3L�+uۭ�`D��dh��Vd��+�{�"o�� �x���$������\D`�}��c��͆\�Z.�[ۆ��]D�D1��DSM���C�:-��٦��hj9 [�J�G)��D�U��QG^D:���!5�ޫ� e�'�7�d��c��h�0�ݔ}tw�ֲ���6qj%�y?x�`*O�z����mD����g���|[w��P0���3ij�naT���rļ��[�D�� ���� -bi}j2�s ���o����Ha�)y�c�H��i��6a�1����Rm8 �8�%���N�� ���"@��9c��}�1��� +bi}j2�s ���o����Ha�)y�c�H��i��6a�1����Rm8 �8�%���N�� ���"@��9c��}�1��� endobj 628 0 obj << /Type /Font @@ -5975,14 +5956,14 @@ endobj /FirstChar 33 /LastChar 125 /Widths 1357 0 R -/BaseFont /YTDMMS+NimbusMonL-Regu +/BaseFont /SIBBBC+NimbusMonL-Regu /FontDescriptor 626 0 R >> endobj 626 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /YTDMMS+NimbusMonL-Regu +/FontName /SIBBBC+NimbusMonL-Regu /ItalicAngle 0 /StemV 41 /XHeight 426 @@ -6004,7 +5985,7 @@ endobj stream xڬzSx�]�e�Tlc�v%�ض��ضmۨ�m�b�b�6����ӧ��}�}.�~�5ǜcb����xɉ��M쌀bv����L\ �����:���T��@���5 ,��))'��S�m���Pp1��0�Xm��� -�(g��7%���Me��>��$�o��E��?q��F��!��=���Z���Z���� ��1 +�(g��7%���Me��>��$�o��E��?q��F��!��=���Z���Z���� ��1 Hk \P3�ة��%��Q��sy1*�����3�W���;7 K�y�m�Z�h\H�������|���_�D��!)?�o��r$q0>����O�<X) @@ -6087,7 +6068,7 @@ lş�$f_dq_����C�C'O�_��͢z��7Ͱ5�A��`E��Kࣃ�>�҄r�:���䗈�֒"�J��K4��N� @���o_U�;���e?Z*���O��ͦcZ�6z�*� �mK1�����:��<f:��V.sF���N�����EQ�g���u�,��vz�!�uS,�#\���6KѯA�I�)�SX1�~��<& �;�]z�)ZP=�N�кg�)Q���}�>z_#�*��s,b��o&��]���Ҭ�{����x�Z��\�.��q�5�]�_��~wX~��U�"bg�%̗��bٶ�¾V�3a��$����!�L;ENL��[��(�z�����
:\�o������d��n�j�P�n���{:}*PDv�w*[�@9� �0a����[��r��%�\q��]�����|O-F�kދ��'�Q�.��Tq�������)R�c�����D�V����5y�L�R�wO��ͳ���Ʋ��x��uj2a�� d�M�a�x��]&e9�};��q�m��ʳ� $j��V�_y��6�W3���R��ѹc�Es�N1}�Nj�Ǟ�c�!\��1��,,���\XM������Dʟ&�~9F=�'KJk� -����i<��i��?�l��endstream +����i<��i��?o���endstream endobj 622 0 obj << /Type /Font @@ -6096,14 +6077,14 @@ endobj /FirstChar 2 /LastChar 151 /Widths 1358 0 R -/BaseFont /XDWPTM+URWPalladioL-Ital +/BaseFont /ZCVAEP+URWPalladioL-Ital /FontDescriptor 620 0 R >> endobj 620 0 obj << /Ascent 722 /CapHeight 693 /Descent -261 -/FontName /XDWPTM+URWPalladioL-Ital +/FontName /ZCVAEP+URWPalladioL-Ital /ItalicAngle -9.5 /StemV 78 /XHeight 482 @@ -6119,19 +6100,18 @@ endobj /Length1 862 /Length2 1251 /Length3 532 -/Length 1861 +/Length 1860 /Filter /FlateDecode >> stream x��UkTgn�J�+ŀ�� -�2�@ �,��K -�#l�������a6O"X�2���r�a� -�`>��3l�^�;��!��e��Pq��G�#�h� ��b?����5�߄, ��B�����[sx��`X -�p���!)$�:�"��s��������Rݫ��W��c��P�z��KG��W��� -��Y'u���_N��^��VT�Om"���#�dk^Y��2��N|�4�5��|�m{����6��l�йƹ�n퍖�',M7����x>r�q���ڸ��;Y��1�x�K����4
�>�p" -+����*�Q}��z��&��T��g�>�ҙ�X���o�i�癩e�|婅k2�_�-O��$e��m4v3j{h�}����C�Q0y�z�őZ���G��S^�47��>/�Bjr��<� -��~��~|F��S���˵���@�]w{�3_jyth�Q�%Wfe���c$��MG�������|��W@
.�ry���2<x�ZE�T�egd�偗���kE%�D%��i�G���]�}�x��X�$#M/7�j�#��WY6o����Ԝ���t�5��YQz -Y�8��9�=��������B#�ps^R�g�3���y��2�̎�- c��d����VS�qm�ŮR�C�H�b���L��S���*��i�A�����[��͍�J=��鋸�?&��XB�1�rhB��=7�np���L�Y�P]flB��K� ��9���v�'�ց��\�S��㲎���05t=�e��j���Bfw�Dh�?+��V#���pM��{&?ԾT�=rrǏj����ۚ}������7��<𬃮��Q�?tg��/������<e}�K��������P�d����7�W�DB�Dk��"[���I���c���2��e��,�i��Ԟ���*�GUM�=u�)����0订�c�<�y�2^�0YY�O�����8��s���/'I���kԵJ��|�U)S�%Z���2�ڇ<�dsV�tJ��k3H���o�cg���R��u㾊�h{��Fg��:O~�Ӽ�7��1���p�����j�J}�(�vOP1F�+L;��ǮBeJ�|Ė��k���1�}Z��0��2�B�Mf�t�qq�BI%@�6\�.��$�^6��O��&>-Jh�g�uIrrr<䗣ș�K�b�V�r|qO�%Q�8ʨ��!���S�v���sN�/����VEk����t)�m]�e�n�5�2�tUK�o��iAv�) +�2�@ �&X4�;*(R���LP� +A@0�P�TZ)�`��b���Y#BAn�\u��إ?w�ٙ?�>���3����Y�y��l$vEDHi����A��D2����! �$0
+ߢ}�>��n6o�HzA|�d_d�߫k�}����e@ +�2�� +ݮ:Pǽ���:�Z�w��y
��( ?4f��ugwɣ8�zF�}�X�K��\_k�7
�F�1�w:�X~u�se�jq��q��Z�Q��fG'�@=�~8;�9�L5��^��q�8�J���Z���rE���v�*3�@i&���9gtg2�ҽ=���j�n�M�|����(V���6�)~�O��<��r`�fR<�K��Y�ll _�w���צ��]�f*�춛���:yIY��ɔs�0;�����C?E[�k!��dM���,�=Wy�:U���{��C"pΨ<�M��)��mPǡ=(�᱙G�Gͼ��=��W�t����&�|FW�xh�?+�S��^�ઞ��vM|�{9�g�Զ�4ki�w���A���ox�q�y;�0�п���k^����W{�{�q�5�~�������y�n)�)�����[��T�ч��7F��7�,�$�m���3�쀒\��?j<#YW�V�+�k璃��a�=e姴9���u��i��$����_c��I����"�I�z�U�"3)�cT&ON봼���6�9` ���fP�VI�4�Tǝ}��vqf/�&sl^3�L�v���6��?�{��ݦ��yyώkE'+� +��5��+Ԛ�&a�����QbmA�_=v����"6�
^o(�q �����������W V�o3*��W���W +���e1���:;4����X��V����:�'����?|p�o�?� endobj 612 0 obj << /Type /Font @@ -6140,14 +6120,14 @@ endobj /FirstChar 13 /LastChar 110 /Widths 1360 0 R -/BaseFont /FHPWHM+CMSY10 +/BaseFont /AKTMYL+CMSY10 /FontDescriptor 610 0 R >> endobj 610 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 -/FontName /FHPWHM+CMSY10 +/FontName /AKTMYL+CMSY10 /ItalicAngle -14.035 /StemV 85 /XHeight 431 @@ -6171,7 +6151,7 @@ endobj /Filter /FlateDecode >> stream -xڬ�c��]�%\]��.۶m۶m۶m��v�m���}�ܹ��̯��G����8;v�>'�z2��@N������X��Ɖ�������*�oe�odn+E�`k��kf�"&t0�w2���w2� +xڬ�c��]�%\]��.۶m۶m۶m��v�m���}�ܹ��̯��G����8;v�>'�z2��@N������X��Ɖ�������*�oe�odn+E�`k��kf�"&t0�w2���w2� �V���^MV��O Y'������ߑ��+�1.��L�/�}j���^N�I-�����Y�Л��'����6��M�7��o��1�m��'=Uf�1K�w;9<�~�� ��|��#W����"*�>�w����5�� zѷ����_?F#�h�zݕ��������뾬 ��Daܔ��֖x���3� 4v�_P���?2ք���γ��;�,f'+@��V��y��Ɂv(�މ���7Gf� q�}-W)��/�^�e�����k��*(|���Ɛ)��d��P>�,U���D�"w("Z��Q�D�xy�.Մ�0��.��'�6h¬N������&2�S 5@Uc7VC���Nx��a���ݻT��E uFB�j5̘P����M{�o�� ��e�`����ͰU����Ƀ�����
Le�rػ�#���J�쏗�U>���!+�x��p�|m��-Z� @@ -6282,7 +6262,7 @@ D�})�;\l�������f�>���z@��_9�6�c�Q�Ϋ��5����S��tW�� ��eI?�1k�����N���U~^����s���Ҥ�O��2N�#,��>������U�Q�?c"x� �Km������A��|���X��鰭���DSZM�*,���^X䢨���xp{M� ]�2b�h7�����k�<���.�`�L��lv �w§��;�w�xS(��N�51����K�|�RJ���7�����䠆��!��+�����[�u;r+ i��^jm�3����O3Ҥ�/v�+����E����CD��+ō2��3�W�-C�R*ݤ���9�d<�[����9�xu���i$�E�yZ� �t0�=�&A�_�39�M�䮩�����gF��@1Bz�*���. -4:o��g��t2+,d�@w�/-���k���l�*��!�|�3����������c��7�lS��/���� �����������-�� +4:o��g��t2+,d�@w�/-���k���l�*��!�|�3����������c��7�lS��/���� �����������-�� endobj 604 0 obj << /Type /Font @@ -6291,14 +6271,14 @@ endobj /FirstChar 2 /LastChar 216 /Widths 1361 0 R -/BaseFont /QLANNN+URWPalladioL-Roma +/BaseFont /PFLJOO+URWPalladioL-Roma /FontDescriptor 602 0 R >> endobj 602 0 obj << /Ascent 715 /CapHeight 680 /Descent -282 -/FontName /QLANNN+URWPalladioL-Roma +/FontName /PFLJOO+URWPalladioL-Roma /ItalicAngle 0 /StemV 84 /XHeight 469 @@ -6319,7 +6299,7 @@ endobj >> stream xڬzc�e߳eٶ�m�˶m۶mWuٶm�6���.����4�f>ͼ'����+W�ʽ�ވCF��L'hbod*fo�B�D��
PURW0��14������1�5���� ;��X�ۉ��r�MM -7�3u2�(��Xd,�M�M� +7�3u2�(��Xd,�M�M� �|I� �wȻ8hN����3/�c�o�e�����N���J? �g�X��n�P����>; ��7ƣw#5����$O>��L1<16:�w>p�K�M��O���˯�Z)Z�L~ӑm�{��*��RƢ)�0=��g�\"nsY�{s�?��iE�vY���9��Η�5{���r=Fa����BL���J|��u�áq��x&��2�r&G-H.��"]pY���� "+0Tj�kə����yF @@ -6426,7 +6406,7 @@ L���%�Le̿+1�-�*��0�G70�o2��"��d��\g�i�7���s�qL�7!���ϝ�{�r%tC����A@� 6_m�q'2~��=aF���М�?� �Z�._|;l[�OX��J�+QG�i�ZɏP&Yyf2�<��r�G�75���3��#z�FF⨾��F4�N��5�c��6P���e� ��k��u_K���L�*���0MH�Cr�T>�㇟x F��R�B_!�i�N�%$h�]t�������s���=n��<�����Y����QK���gF==�3���sC�G��!Y�
W�a� +��Y�]�h��!{�#i���"����4bw�Z�X�2&��.�l=b, �,�l<a�r�7�')�͋RQ�.)�2�.�я��r�u��)R�\-C�" �{0���eh饑@�s����V>��A��G��5W0!��B�V\��6���ߥ�����;RЭ$��v(�@�ICM��v��_��/# � ���������2�6�w��{0��+/6A3C�X ���? -�0�jT���q�]����'DY�
�.g���¨�;AJҴ��ͭ[��H�aA@�� ?�J�A�tI�%[ح$ҍ�"ɾs��?��� +�0�jT���q�]����'DY�
�.g���¨�;AJҴ��ͭ[��H�aA@�� ?�J�A�tI�%[ح$ҍ�"ɾs��?��� endobj 601 0 obj << /Type /Font @@ -6435,14 +6415,14 @@ endobj /FirstChar 2 /LastChar 151 /Widths 1362 0 R -/BaseFont /INPKTB+URWPalladioL-Bold +/BaseFont /WEGQVN+URWPalladioL-Bold /FontDescriptor 599 0 R >> endobj 599 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 -/FontName /INPKTB+URWPalladioL-Bold +/FontName /WEGQVN+URWPalladioL-Bold /ItalicAngle 0 /StemV 123 /XHeight 471 @@ -6506,7 +6486,7 @@ endobj /Type /Pages /Count 6 /Parent 1364 0 R -/Kids [988 0 R 993 0 R 1002 0 R 1007 0 R 1015 0 R 1022 0 R] +/Kids [988 0 R 993 0 R 1001 0 R 1007 0 R 1015 0 R 1022 0 R] >> endobj 1035 0 obj << /Type /Pages @@ -7631,7 +7611,7 @@ endobj /Count -4 >> endobj 1368 0 obj << -/Names [(Access_Control_Lists) 1185 0 R (Bv9ARM.ch01) 617 0 R (Bv9ARM.ch02) 671 0 R (Bv9ARM.ch03) 686 0 R (Bv9ARM.ch04) 734 0 R (Bv9ARM.ch05) 819 0 R (Bv9ARM.ch06) 831 0 R (Bv9ARM.ch07) 1184 0 R (Bv9ARM.ch08) 1203 0 R (Bv9ARM.ch09) 1218 0 R (Configuration_File_Grammar) 855 0 R (DNSSEC) 787 0 R (Doc-Start) 598 0 R (Setting_TTLs) 1152 0 R (access_control) 970 0 R (acl) 863 0 R (address_match_lists) 836 0 R (admin_tools) 708 0 R (appendix.A) 558 0 R (bibliography) 1234 0 R (boolean_options) 740 0 R (builtin) 1031 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 230 0 R (chapter.6) 242 0 R (chapter.7) 514 0 R (chapter.8) 538 0 R (cite.RFC1034) 1244 0 R (cite.RFC1035) 1246 0 R (cite.RFC1101) 1302 0 R (cite.RFC1123) 1304 0 R (cite.RFC1183) 1286 0 R (cite.RFC1464) 1322 0 R (cite.RFC1535) 1273 0 R (cite.RFC1536) 1275 0 R (cite.RFC1537) 1312 0 R (cite.RFC1591) 1306 0 R (cite.RFC1706) 1288 0 R (cite.RFC1712) 1336 0 R (cite.RFC1713) 1324 0 R (cite.RFC1794) 1326 0 R (cite.RFC1876) 1290 0 R (cite.RFC1886) 1265 0 R (cite.RFC1912) 1314 0 R (cite.RFC1982) 1277 0 R (cite.RFC1995) 1251 0 R (cite.RFC1996) 1253 0 R (cite.RFC2010) 1316 0 R (cite.RFC2052) 1292 0 R (cite.RFC2065) 1267 0 R (cite.RFC2136) 1255 0 R (cite.RFC2137) 1269 0 R (cite.RFC2163) 1294 0 R (cite.RFC2168) 1296 0 R (cite.RFC2181) 1257 0 R (cite.RFC2219) 1318 0 R (cite.RFC2230) 1298 0 R (cite.RFC2240) 1328 0 R (cite.RFC2308) 1259 0 R (cite.RFC2317) 1308 0 R (cite.RFC2345) 1330 0 R (cite.RFC2352) 1332 0 R (cite.RFC2845) 1261 0 R (cite.RFC974) 1248 0 R (cite.id2492151) 1345 0 R (configuration_file_elements) 832 0 R (controls_statement_definition_and_usage) 722 0 R (diagnostic_tools) 659 0 R (dynamic_update) 738 0 R (dynamic_update_policies) 779 0 R (dynamic_update_security) 974 0 R (historical_dns_information) 1225 0 R (id2465952) 643 0 R (id2466044) 619 0 R (id2466730) 623 0 R (id2466739) 624 0 R (id2466914) 639 0 R (id2467034) 618 0 R (id2467398) 641 0 R (id2467418) 642 0 R (id2467436) 996 0 R (id2467452) 997 0 R (id2467554) 999 0 R (id2467742) 646 0 R (id2467817) 653 0 R (id2467840) 656 0 R (id2467861) 657 0 R (id2467880) 658 0 R (id2467977) 664 0 R (id2468009) 665 0 R (id2468035) 666 0 R (id2468135) 672 0 R (id2468160) 673 0 R (id2468170) 674 0 R (id2468184) 675 0 R (id2468193) 681 0 R (id2468224) 688 0 R (id2468240) 689 0 R (id2468330) 694 0 R (id2468346) 695 0 R (id2468613) 698 0 R (id2468618) 699 0 R (id2469880) 727 0 R (id2469892) 728 0 R (id2470305) 749 0 R (id2470322) 750 0 R (id2470869) 766 0 R (id2470885) 767 0 R (id2470919) 768 0 R (id2470935) 774 0 R (id2470944) 775 0 R (id2470983) 776 0 R (id2471035) 777 0 R (id2471147) 784 0 R (id2471161) 785 0 R (id2471210) 786 0 R (id2471413) 792 0 R (id2471480) 793 0 R (id2471623) 794 0 R (id2471692) 810 0 R (id2471819) 812 0 R (id2471840) 813 0 R (id2471940) 820 0 R (id2472078) 833 0 R (id2472779) 841 0 R (id2472806) 842 0 R (id2472968) 847 0 R (id2472983) 848 0 R (id2473012) 849 0 R (id2473089) 856 0 R (id2473658) 862 0 R (id2473700) 864 0 R (id2473827) 866 0 R (id2474104) 874 0 R (id2474121) 875 0 R (id2474144) 876 0 R (id2474167) 877 0 R (id2474238) 886 0 R (id2474433) 887 0 R (id2474553) 888 0 R (id2475111) 903 0 R (id2475571) 909 0 R (id2475643) 910 0 R (id2475774) 918 0 R (id2475818) 919 0 R (id2475833) 920 0 R (id2477449) 940 0 R (id2478728) 962 0 R (id2478778) 964 0 R (id2478957) 973 0 R (id2479114) 979 0 R (id2482003) 1005 0 R (id2482477) 1019 0 R (id2482944) 1033 0 R (id2483640) 1048 0 R (id2483690) 1049 0 R (id2483774) 1055 0 R (id2484992) 1068 0 R (id2484998) 1069 0 R (id2485002) 1070 0 R (id2485236) 1077 0 R (id2485403) 1078 0 R (id2486371) 1115 0 R (id2486530) 1117 0 R (id2486548) 1118 0 R (id2486569) 1121 0 R (id2486777) 1127 0 R (id2487428) 1133 0 R (id2487537) 1135 0 R (id2487558) 1141 0 R (id2487915) 1143 0 R (id2488030) 1145 0 R (id2488049) 1146 0 R (id2488354) 1153 0 R (id2488528) 1155 0 R (id2488541) 1156 0 R (id2488633) 1158 0 R (id2488652) 1159 0 R (id2488708) 1167 0 R (id2488771) 1168 0 R (id2488802) 1169 0 R (id2488862) 1174 0 R (id2489260) 1196 0 R (id2489336) 1197 0 R (id2489394) 1198 0 R (id2489601) 1204 0 R (id2489606) 1205 0 R (id2489618) 1206 0 R (id2489635) 1207 0 R (id2489833) 1219 0 R (id2489838) 1220 0 R (id2489972) 1226 0 R (id2490352) 1228 0 R (id2490628) 1240 0 R (id2490630) 1242 0 R (id2490638) 1247 0 R (id2490730) 1243 0 R (id2490754) 1245 0 R (id2490791) 1256 0 R (id2490817) 1258 0 R (id2490842) 1250 0 R (id2490867) 1252 0 R (id2490890) 1254 0 R (id2490946) 1260 0 R (id2491006) 1263 0 R (id2491021) 1264 0 R (id2491060) 1266 0 R (id2491099) 1268 0 R (id2491127) 1271 0 R (id2491136) 1272 0 R (id2491161) 1274 0 R (id2491228) 1276 0 R (id2491265) 1284 0 R (id2491270) 1285 0 R (id2491328) 1287 0 R (id2491365) 1295 0 R (id2491400) 1289 0 R (id2491454) 1291 0 R (id2491494) 1293 0 R (id2491521) 1297 0 R (id2491547) 1300 0 R (id2491555) 1301 0 R (id2491580) 1303 0 R (id2491604) 1305 0 R (id2491625) 1307 0 R (id2491740) 1310 0 R (id2491748) 1311 0 R (id2491773) 1313 0 R (id2491800) 1315 0 R (id2491836) 1317 0 R (id2491876) 1320 0 R (id2491896) 1321 0 R (id2491918) 1323 0 R (id2491943) 1325 0 R (id2491968) 1327 0 R (id2491990) 1329 0 R (id2492036) 1331 0 R (id2492060) 1334 0 R (id2492067) 1335 0 R (id2492139) 1342 0 R (id2492149) 1344 0 R (id2492151) 1346 0 R (incremental_zone_transfers) 746 0 R (internet_drafts) 1341 0 R (ipv6addresses) 814 0 R (journal) 739 0 R (lwresd) 821 0 R (notify) 735 0 R (options) 929 0 R (page.1) 597 0 R (page.10) 693 0 R (page.11) 704 0 R (page.12) 712 0 R (page.13) 719 0 R (page.14) 726 0 R (page.15) 733 0 R (page.16) 745 0 R (page.17) 755 0 R (page.18) 760 0 R (page.19) 764 0 R (page.2) 609 0 R (page.20) 773 0 R (page.21) 783 0 R (page.22) 791 0 R (page.23) 799 0 R (page.24) 809 0 R (page.25) 818 0 R (page.26) 826 0 R (page.27) 830 0 R (page.28) 840 0 R (page.29) 846 0 R (page.3) 616 0 R (page.30) 854 0 R (page.31) 861 0 R (page.32) 871 0 R (page.33) 885 0 R (page.34) 892 0 R (page.35) 896 0 R (page.36) 902 0 R (page.37) 908 0 R (page.38) 917 0 R (page.39) 924 0 R (page.4) 635 0 R (page.40) 928 0 R (page.41) 933 0 R (page.42) 939 0 R (page.43) 945 0 R (page.44) 955 0 R (page.45) 961 0 R (page.46) 969 0 R (page.47) 978 0 R (page.48) 986 0 R (page.49) 990 0 R (page.5) 652 0 R (page.50) 995 0 R (page.51) 1004 0 R (page.52) 1009 0 R (page.53) 1017 0 R (page.54) 1024 0 R (page.55) 1030 0 R (page.56) 1040 0 R (page.57) 1045 0 R (page.58) 1054 0 R (page.59) 1059 0 R (page.6) 663 0 R (page.60) 1063 0 R (page.61) 1067 0 R (page.62) 1076 0 R (page.63) 1088 0 R (page.64) 1098 0 R (page.65) 1114 0 R (page.66) 1126 0 R (page.67) 1132 0 R (page.68) 1140 0 R (page.69) 1151 0 R (page.7) 670 0 R (page.70) 1163 0 R (page.71) 1173 0 R (page.72) 1179 0 R (page.73) 1183 0 R (page.74) 1192 0 R (page.75) 1202 0 R (page.76) 1213 0 R (page.77) 1217 0 R (page.78) 1224 0 R (page.79) 1233 0 R (page.8) 680 0 R (page.80) 1282 0 R (page.81) 1340 0 R (page.9) 685 0 R (proposed_standards) 751 0 R (rfcs) 648 0 R (rndc) 881 0 R (rrset_ordering) 700 0 R (sample_configuration) 687 0 R (section*.1) 1239 0 R (section*.10) 1333 0 R (section*.11) 1343 0 R (section*.2) 1241 0 R (section*.3) 1249 0 R (section*.4) 1262 0 R (section*.5) 1270 0 R (section*.6) 1283 0 R (section*.7) 1299 0 R (section*.8) 1309 0 R (section*.9) 1319 0 R (section.1.1) 10 0 R (section.1.2) 14 0 R (section.1.3) 18 0 R (section.1.4) 22 0 R (section.2.1) 70 0 R (section.2.2) 74 0 R (section.2.3) 78 0 R (section.2.4) 82 0 R (section.2.5) 86 0 R (section.3.1) 94 0 R (section.3.2) 106 0 R (section.3.3) 110 0 R (section.4.1) 134 0 R (section.4.2) 138 0 R (section.4.3) 146 0 R (section.4.4) 150 0 R (section.4.5) 158 0 R (section.4.6) 194 0 R (section.4.7) 198 0 R (section.4.8) 202 0 R (section.4.9) 218 0 R (section.5.1) 234 0 R (section.5.2) 238 0 R (section.6.1) 246 0 R (section.6.2) 274 0 R (section.6.3) 466 0 R (section.7.1) 518 0 R (section.7.2) 522 0 R (section.7.3) 534 0 R (section.8.1) 542 0 R (section.8.2) 550 0 R (section.8.3) 554 0 R (section.A.1) 562 0 R (section.A.2) 570 0 R (section.A.3) 578 0 R (server_statement_definition_and_usage) 951 0 R (server_statement_grammar) 1041 0 R (statsfile) 935 0 R (subsection.1.4.1) 26 0 R (subsection.1.4.2) 30 0 R (subsection.1.4.3) 34 0 R (subsection.1.4.4) 38 0 R (subsection.1.4.5) 54 0 R (subsection.1.4.6) 62 0 R (subsection.3.1.1) 98 0 R (subsection.3.1.2) 102 0 R (subsection.3.3.1) 114 0 R (subsection.3.3.2) 126 0 R (subsection.4.2.1) 142 0 R (subsection.4.4.1) 154 0 R (subsection.4.5.1) 162 0 R (subsection.4.5.2) 174 0 R (subsection.4.5.3) 178 0 R (subsection.4.5.4) 182 0 R (subsection.4.5.5) 186 0 R (subsection.4.5.6) 190 0 R (subsection.4.8.1) 206 0 R (subsection.4.8.2) 210 0 R (subsection.4.8.3) 214 0 R (subsection.4.9.1) 222 0 R (subsection.4.9.2) 226 0 R (subsection.6.1.1) 250 0 R (subsection.6.1.2) 262 0 R (subsection.6.2.1) 278 0 R (subsection.6.2.10) 314 0 R (subsection.6.2.11) 326 0 R (subsection.6.2.12) 330 0 R (subsection.6.2.13) 334 0 R (subsection.6.2.14) 338 0 R (subsection.6.2.15) 342 0 R (subsection.6.2.16) 346 0 R (subsection.6.2.17) 418 0 R (subsection.6.2.18) 422 0 R (subsection.6.2.19) 426 0 R (subsection.6.2.2) 282 0 R (subsection.6.2.20) 430 0 R (subsection.6.2.21) 434 0 R (subsection.6.2.22) 438 0 R (subsection.6.2.23) 442 0 R (subsection.6.2.24) 446 0 R (subsection.6.2.3) 286 0 R (subsection.6.2.4) 290 0 R (subsection.6.2.5) 294 0 R (subsection.6.2.6) 298 0 R (subsection.6.2.7) 302 0 R (subsection.6.2.8) 306 0 R (subsection.6.2.9) 310 0 R (subsection.6.3.1) 470 0 R (subsection.6.3.2) 482 0 R (subsection.6.3.3) 486 0 R (subsection.6.3.4) 490 0 R (subsection.6.3.5) 494 0 R (subsection.6.3.6) 510 0 R (subsection.7.2.1) 526 0 R (subsection.7.2.2) 530 0 R (subsection.8.1.1) 546 0 R (subsection.A.1.1) 566 0 R (subsection.A.2.1) 574 0 R (subsection.A.3.1) 582 0 R (subsection.A.3.2) 586 0 R (subsection.A.3.3) 590 0 R (subsubsection.1.4.4.1) 42 0 R (subsubsection.1.4.4.2) 46 0 R (subsubsection.1.4.4.3) 50 0 R (subsubsection.1.4.5.1) 58 0 R (subsubsection.3.3.1.1) 118 0 R (subsubsection.3.3.1.2) 122 0 R (subsubsection.4.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 254 0 R (subsubsection.6.1.1.2) 258 0 R (subsubsection.6.1.2.1) 266 0 R (subsubsection.6.1.2.2) 270 0 R (subsubsection.6.2.10.1) 318 0 R (subsubsection.6.2.10.2) 322 0 R (subsubsection.6.2.16.1) 350 0 R (subsubsection.6.2.16.10) 386 0 R (subsubsection.6.2.16.11) 390 0 R (subsubsection.6.2.16.12) 394 0 R (subsubsection.6.2.16.13) 398 0 R (subsubsection.6.2.16.14) 402 0 R (subsubsection.6.2.16.15) 406 0 R (subsubsection.6.2.16.16) 410 0 R (subsubsection.6.2.16.17) 414 0 R (subsubsection.6.2.16.2) 354 0 R (subsubsection.6.2.16.3) 358 0 R (subsubsection.6.2.16.4) 362 0 R (subsubsection.6.2.16.5) 366 0 R (subsubsection.6.2.16.6) 370 0 R (subsubsection.6.2.16.7) 374 0 R (subsubsection.6.2.16.8) 378 0 R (subsubsection.6.2.16.9) 382 0 R (subsubsection.6.2.24.1) 450 0 R (subsubsection.6.2.24.2) 454 0 R (subsubsection.6.2.24.3) 458 0 R (subsubsection.6.2.24.4) 462 0 R (subsubsection.6.3.1.1) 474 0 R (subsubsection.6.3.1.2) 478 0 R (subsubsection.6.3.5.1) 498 0 R (subsubsection.6.3.5.2) 502 0 R (subsubsection.6.3.5.3) 506 0 R (table.1.1) 625 0 R (table.1.2) 640 0 R (table.3.1) 696 0 R (table.3.2) 729 0 R (table.6.1) 834 0 R (table.6.10) 1122 0 R (table.6.11) 1128 0 R (table.6.12) 1134 0 R (table.6.13) 1142 0 R (table.6.14) 1144 0 R (table.6.15) 1147 0 R (table.6.16) 1154 0 R (table.6.17) 1157 0 R (table.6.18) 1175 0 R (table.6.2) 857 0 R (table.6.3) 865 0 R (table.6.4) 904 0 R (table.6.5) 941 0 R (table.6.6) 1020 0 R (table.6.7) 1034 0 R (table.6.8) 1071 0 R (table.6.9) 1116 0 R (table.A.1) 1227 0 R (table.A.2) 1229 0 R (the_category_phrase) 898 0 R (the_sortlist_statement) 1011 0 R (topology) 1010 0 R (tsig) 765 0 R (tuning) 1025 0 R (types_of_resource_records_and_when_to_use_them) 647 0 R (view_statement_grammar) 1036 0 R (zone_statement_grammar) 965 0 R (zone_transfers) 741 0 R] +/Names [(Access_Control_Lists) 1185 0 R (Bv9ARM.ch01) 617 0 R (Bv9ARM.ch02) 671 0 R (Bv9ARM.ch03) 686 0 R (Bv9ARM.ch04) 734 0 R (Bv9ARM.ch05) 819 0 R (Bv9ARM.ch06) 831 0 R (Bv9ARM.ch07) 1184 0 R (Bv9ARM.ch08) 1203 0 R (Bv9ARM.ch09) 1218 0 R (Configuration_File_Grammar) 855 0 R (DNSSEC) 787 0 R (Doc-Start) 598 0 R (Setting_TTLs) 1152 0 R (access_control) 970 0 R (acl) 863 0 R (address_match_lists) 836 0 R (admin_tools) 708 0 R (appendix.A) 558 0 R (bibliography) 1234 0 R (boolean_options) 740 0 R (builtin) 1031 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 230 0 R (chapter.6) 242 0 R (chapter.7) 514 0 R (chapter.8) 538 0 R (cite.RFC1034) 1244 0 R (cite.RFC1035) 1246 0 R (cite.RFC1101) 1302 0 R (cite.RFC1123) 1304 0 R (cite.RFC1183) 1286 0 R (cite.RFC1464) 1322 0 R (cite.RFC1535) 1273 0 R (cite.RFC1536) 1275 0 R (cite.RFC1537) 1312 0 R (cite.RFC1591) 1306 0 R (cite.RFC1706) 1288 0 R (cite.RFC1712) 1336 0 R (cite.RFC1713) 1324 0 R (cite.RFC1794) 1326 0 R (cite.RFC1876) 1290 0 R (cite.RFC1886) 1265 0 R (cite.RFC1912) 1314 0 R (cite.RFC1982) 1277 0 R (cite.RFC1995) 1251 0 R (cite.RFC1996) 1253 0 R (cite.RFC2010) 1316 0 R (cite.RFC2052) 1292 0 R (cite.RFC2065) 1267 0 R (cite.RFC2136) 1255 0 R (cite.RFC2137) 1269 0 R (cite.RFC2163) 1294 0 R (cite.RFC2168) 1296 0 R (cite.RFC2181) 1257 0 R (cite.RFC2219) 1318 0 R (cite.RFC2230) 1298 0 R (cite.RFC2240) 1328 0 R (cite.RFC2308) 1259 0 R (cite.RFC2317) 1308 0 R (cite.RFC2345) 1330 0 R (cite.RFC2352) 1332 0 R (cite.RFC2845) 1261 0 R (cite.RFC974) 1248 0 R (cite.id2492088) 1345 0 R (configuration_file_elements) 832 0 R (controls_statement_definition_and_usage) 722 0 R (diagnostic_tools) 659 0 R (dynamic_update) 738 0 R (dynamic_update_policies) 779 0 R (dynamic_update_security) 974 0 R (historical_dns_information) 1225 0 R (id2465952) 643 0 R (id2466044) 619 0 R (id2466730) 623 0 R (id2466739) 624 0 R (id2466914) 639 0 R (id2467034) 618 0 R (id2467398) 641 0 R (id2467418) 642 0 R (id2467442) 996 0 R (id2467458) 997 0 R (id2467559) 999 0 R (id2467742) 646 0 R (id2467817) 653 0 R (id2467840) 656 0 R (id2467861) 657 0 R (id2467880) 658 0 R (id2467977) 664 0 R (id2468009) 665 0 R (id2468035) 666 0 R (id2468135) 672 0 R (id2468160) 673 0 R (id2468170) 674 0 R (id2468184) 675 0 R (id2468193) 681 0 R (id2468224) 688 0 R (id2468240) 689 0 R (id2468330) 694 0 R (id2468346) 695 0 R (id2468613) 698 0 R (id2468618) 699 0 R (id2469880) 727 0 R (id2469892) 728 0 R (id2470305) 749 0 R (id2470322) 750 0 R (id2470869) 766 0 R (id2470885) 767 0 R (id2470919) 768 0 R (id2470935) 774 0 R (id2470944) 775 0 R (id2470983) 776 0 R (id2471035) 777 0 R (id2471147) 784 0 R (id2471161) 785 0 R (id2471210) 786 0 R (id2471413) 792 0 R (id2471480) 793 0 R (id2471623) 794 0 R (id2471692) 810 0 R (id2471819) 812 0 R (id2471840) 813 0 R (id2471940) 820 0 R (id2472078) 833 0 R (id2472779) 841 0 R (id2472806) 842 0 R (id2472968) 847 0 R (id2472983) 848 0 R (id2473012) 849 0 R (id2473089) 856 0 R (id2473658) 862 0 R (id2473700) 864 0 R (id2473827) 866 0 R (id2474104) 874 0 R (id2474121) 875 0 R (id2474144) 876 0 R (id2474167) 877 0 R (id2474238) 886 0 R (id2474433) 887 0 R (id2474553) 888 0 R (id2475111) 903 0 R (id2475571) 909 0 R (id2475643) 910 0 R (id2475774) 918 0 R (id2475818) 919 0 R (id2475833) 920 0 R (id2477449) 940 0 R (id2478728) 962 0 R (id2478778) 964 0 R (id2478957) 973 0 R (id2479114) 979 0 R (id2482008) 1005 0 R (id2482414) 1019 0 R (id2482881) 1033 0 R (id2483577) 1048 0 R (id2483627) 1049 0 R (id2483712) 1055 0 R (id2484997) 1068 0 R (id2485003) 1069 0 R (id2485008) 1070 0 R (id2485309) 1077 0 R (id2485477) 1078 0 R (id2486444) 1115 0 R (id2486603) 1117 0 R (id2486621) 1118 0 R (id2486643) 1121 0 R (id2486782) 1127 0 R (id2487433) 1133 0 R (id2487542) 1135 0 R (id2487563) 1141 0 R (id2487921) 1143 0 R (id2488036) 1145 0 R (id2488054) 1146 0 R (id2488359) 1153 0 R (id2488465) 1155 0 R (id2488478) 1156 0 R (id2488570) 1158 0 R (id2488589) 1159 0 R (id2488645) 1167 0 R (id2488708) 1168 0 R (id2488739) 1169 0 R (id2488800) 1174 0 R (id2489197) 1196 0 R (id2489410) 1197 0 R (id2489467) 1198 0 R (id2489606) 1204 0 R (id2489611) 1205 0 R (id2489623) 1206 0 R (id2489640) 1207 0 R (id2489702) 1219 0 R (id2489707) 1220 0 R (id2490045) 1226 0 R (id2490357) 1228 0 R (id2490633) 1240 0 R (id2490635) 1242 0 R (id2490644) 1247 0 R (id2490667) 1243 0 R (id2490691) 1245 0 R (id2490728) 1256 0 R (id2490754) 1258 0 R (id2490779) 1250 0 R (id2490804) 1252 0 R (id2490827) 1254 0 R (id2490883) 1260 0 R (id2490944) 1263 0 R (id2490958) 1264 0 R (id2490997) 1266 0 R (id2491036) 1268 0 R (id2491064) 1271 0 R (id2491073) 1272 0 R (id2491098) 1274 0 R (id2491165) 1276 0 R (id2491202) 1284 0 R (id2491207) 1285 0 R (id2491265) 1287 0 R (id2491302) 1295 0 R (id2491337) 1289 0 R (id2491392) 1291 0 R (id2491431) 1293 0 R (id2491458) 1297 0 R (id2491484) 1300 0 R (id2491492) 1301 0 R (id2491517) 1303 0 R (id2491541) 1305 0 R (id2491562) 1307 0 R (id2491677) 1310 0 R (id2491685) 1311 0 R (id2491710) 1313 0 R (id2491737) 1315 0 R (id2491773) 1317 0 R (id2491813) 1320 0 R (id2491833) 1321 0 R (id2491856) 1323 0 R (id2491880) 1325 0 R (id2491905) 1327 0 R (id2491927) 1329 0 R (id2491973) 1331 0 R (id2491997) 1334 0 R (id2492004) 1335 0 R (id2492076) 1342 0 R (id2492086) 1344 0 R (id2492088) 1346 0 R (incremental_zone_transfers) 746 0 R (internet_drafts) 1341 0 R (ipv6addresses) 814 0 R (journal) 739 0 R (lwresd) 821 0 R (notify) 735 0 R (options) 929 0 R (page.1) 597 0 R (page.10) 693 0 R (page.11) 704 0 R (page.12) 712 0 R (page.13) 719 0 R (page.14) 726 0 R (page.15) 733 0 R (page.16) 745 0 R (page.17) 755 0 R (page.18) 760 0 R (page.19) 764 0 R (page.2) 609 0 R (page.20) 773 0 R (page.21) 783 0 R (page.22) 791 0 R (page.23) 799 0 R (page.24) 809 0 R (page.25) 818 0 R (page.26) 826 0 R (page.27) 830 0 R (page.28) 840 0 R (page.29) 846 0 R (page.3) 616 0 R (page.30) 854 0 R (page.31) 861 0 R (page.32) 871 0 R (page.33) 885 0 R (page.34) 892 0 R (page.35) 896 0 R (page.36) 902 0 R (page.37) 908 0 R (page.38) 917 0 R (page.39) 924 0 R (page.4) 635 0 R (page.40) 928 0 R (page.41) 933 0 R (page.42) 939 0 R (page.43) 945 0 R (page.44) 955 0 R (page.45) 961 0 R (page.46) 969 0 R (page.47) 978 0 R (page.48) 986 0 R (page.49) 990 0 R (page.5) 652 0 R (page.50) 995 0 R (page.51) 1003 0 R (page.52) 1009 0 R (page.53) 1017 0 R (page.54) 1024 0 R (page.55) 1030 0 R (page.56) 1040 0 R (page.57) 1045 0 R (page.58) 1054 0 R (page.59) 1059 0 R (page.6) 663 0 R (page.60) 1063 0 R (page.61) 1067 0 R (page.62) 1076 0 R (page.63) 1088 0 R (page.64) 1098 0 R (page.65) 1114 0 R (page.66) 1126 0 R (page.67) 1132 0 R (page.68) 1140 0 R (page.69) 1151 0 R (page.7) 670 0 R (page.70) 1163 0 R (page.71) 1173 0 R (page.72) 1179 0 R (page.73) 1183 0 R (page.74) 1192 0 R (page.75) 1202 0 R (page.76) 1213 0 R (page.77) 1217 0 R (page.78) 1224 0 R (page.79) 1233 0 R (page.8) 680 0 R (page.80) 1282 0 R (page.81) 1340 0 R (page.9) 685 0 R (proposed_standards) 751 0 R (rfcs) 648 0 R (rndc) 881 0 R (rrset_ordering) 700 0 R (sample_configuration) 687 0 R (section*.1) 1239 0 R (section*.10) 1333 0 R (section*.11) 1343 0 R (section*.2) 1241 0 R (section*.3) 1249 0 R (section*.4) 1262 0 R (section*.5) 1270 0 R (section*.6) 1283 0 R (section*.7) 1299 0 R (section*.8) 1309 0 R (section*.9) 1319 0 R (section.1.1) 10 0 R (section.1.2) 14 0 R (section.1.3) 18 0 R (section.1.4) 22 0 R (section.2.1) 70 0 R (section.2.2) 74 0 R (section.2.3) 78 0 R (section.2.4) 82 0 R (section.2.5) 86 0 R (section.3.1) 94 0 R (section.3.2) 106 0 R (section.3.3) 110 0 R (section.4.1) 134 0 R (section.4.2) 138 0 R (section.4.3) 146 0 R (section.4.4) 150 0 R (section.4.5) 158 0 R (section.4.6) 194 0 R (section.4.7) 198 0 R (section.4.8) 202 0 R (section.4.9) 218 0 R (section.5.1) 234 0 R (section.5.2) 238 0 R (section.6.1) 246 0 R (section.6.2) 274 0 R (section.6.3) 466 0 R (section.7.1) 518 0 R (section.7.2) 522 0 R (section.7.3) 534 0 R (section.8.1) 542 0 R (section.8.2) 550 0 R (section.8.3) 554 0 R (section.A.1) 562 0 R (section.A.2) 570 0 R (section.A.3) 578 0 R (server_statement_definition_and_usage) 951 0 R (server_statement_grammar) 1041 0 R (statsfile) 935 0 R (subsection.1.4.1) 26 0 R (subsection.1.4.2) 30 0 R (subsection.1.4.3) 34 0 R (subsection.1.4.4) 38 0 R (subsection.1.4.5) 54 0 R (subsection.1.4.6) 62 0 R (subsection.3.1.1) 98 0 R (subsection.3.1.2) 102 0 R (subsection.3.3.1) 114 0 R (subsection.3.3.2) 126 0 R (subsection.4.2.1) 142 0 R (subsection.4.4.1) 154 0 R (subsection.4.5.1) 162 0 R (subsection.4.5.2) 174 0 R (subsection.4.5.3) 178 0 R (subsection.4.5.4) 182 0 R (subsection.4.5.5) 186 0 R (subsection.4.5.6) 190 0 R (subsection.4.8.1) 206 0 R (subsection.4.8.2) 210 0 R (subsection.4.8.3) 214 0 R (subsection.4.9.1) 222 0 R (subsection.4.9.2) 226 0 R (subsection.6.1.1) 250 0 R (subsection.6.1.2) 262 0 R (subsection.6.2.1) 278 0 R (subsection.6.2.10) 314 0 R (subsection.6.2.11) 326 0 R (subsection.6.2.12) 330 0 R (subsection.6.2.13) 334 0 R (subsection.6.2.14) 338 0 R (subsection.6.2.15) 342 0 R (subsection.6.2.16) 346 0 R (subsection.6.2.17) 418 0 R (subsection.6.2.18) 422 0 R (subsection.6.2.19) 426 0 R (subsection.6.2.2) 282 0 R (subsection.6.2.20) 430 0 R (subsection.6.2.21) 434 0 R (subsection.6.2.22) 438 0 R (subsection.6.2.23) 442 0 R (subsection.6.2.24) 446 0 R (subsection.6.2.3) 286 0 R (subsection.6.2.4) 290 0 R (subsection.6.2.5) 294 0 R (subsection.6.2.6) 298 0 R (subsection.6.2.7) 302 0 R (subsection.6.2.8) 306 0 R (subsection.6.2.9) 310 0 R (subsection.6.3.1) 470 0 R (subsection.6.3.2) 482 0 R (subsection.6.3.3) 486 0 R (subsection.6.3.4) 490 0 R (subsection.6.3.5) 494 0 R (subsection.6.3.6) 510 0 R (subsection.7.2.1) 526 0 R (subsection.7.2.2) 530 0 R (subsection.8.1.1) 546 0 R (subsection.A.1.1) 566 0 R (subsection.A.2.1) 574 0 R (subsection.A.3.1) 582 0 R (subsection.A.3.2) 586 0 R (subsection.A.3.3) 590 0 R (subsubsection.1.4.4.1) 42 0 R (subsubsection.1.4.4.2) 46 0 R (subsubsection.1.4.4.3) 50 0 R (subsubsection.1.4.5.1) 58 0 R (subsubsection.3.3.1.1) 118 0 R (subsubsection.3.3.1.2) 122 0 R (subsubsection.4.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 254 0 R (subsubsection.6.1.1.2) 258 0 R (subsubsection.6.1.2.1) 266 0 R (subsubsection.6.1.2.2) 270 0 R (subsubsection.6.2.10.1) 318 0 R (subsubsection.6.2.10.2) 322 0 R (subsubsection.6.2.16.1) 350 0 R (subsubsection.6.2.16.10) 386 0 R (subsubsection.6.2.16.11) 390 0 R (subsubsection.6.2.16.12) 394 0 R (subsubsection.6.2.16.13) 398 0 R (subsubsection.6.2.16.14) 402 0 R (subsubsection.6.2.16.15) 406 0 R (subsubsection.6.2.16.16) 410 0 R (subsubsection.6.2.16.17) 414 0 R (subsubsection.6.2.16.2) 354 0 R (subsubsection.6.2.16.3) 358 0 R (subsubsection.6.2.16.4) 362 0 R (subsubsection.6.2.16.5) 366 0 R (subsubsection.6.2.16.6) 370 0 R (subsubsection.6.2.16.7) 374 0 R (subsubsection.6.2.16.8) 378 0 R (subsubsection.6.2.16.9) 382 0 R (subsubsection.6.2.24.1) 450 0 R (subsubsection.6.2.24.2) 454 0 R (subsubsection.6.2.24.3) 458 0 R (subsubsection.6.2.24.4) 462 0 R (subsubsection.6.3.1.1) 474 0 R (subsubsection.6.3.1.2) 478 0 R (subsubsection.6.3.5.1) 498 0 R (subsubsection.6.3.5.2) 502 0 R (subsubsection.6.3.5.3) 506 0 R (table.1.1) 625 0 R (table.1.2) 640 0 R (table.3.1) 696 0 R (table.3.2) 729 0 R (table.6.1) 834 0 R (table.6.10) 1122 0 R (table.6.11) 1128 0 R (table.6.12) 1134 0 R (table.6.13) 1142 0 R (table.6.14) 1144 0 R (table.6.15) 1147 0 R (table.6.16) 1154 0 R (table.6.17) 1157 0 R (table.6.18) 1175 0 R (table.6.2) 857 0 R (table.6.3) 865 0 R (table.6.4) 904 0 R (table.6.5) 941 0 R (table.6.6) 1020 0 R (table.6.7) 1034 0 R (table.6.8) 1071 0 R (table.6.9) 1116 0 R (table.A.1) 1227 0 R (table.A.2) 1229 0 R (the_category_phrase) 898 0 R (the_sortlist_statement) 1011 0 R (topology) 1010 0 R (tsig) 765 0 R (tuning) 1025 0 R (types_of_resource_records_and_when_to_use_them) 647 0 R (view_statement_grammar) 1036 0 R (zone_statement_grammar) 965 0 R (zone_transfers) 741 0 R] /Limits [(Access_Control_Lists) (zone_transfers)] >> endobj 1369 0 obj << @@ -7650,7 +7630,7 @@ endobj >> endobj 1372 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() -/CreationDate (D:20080403035022Z) +/CreationDate (D:20080527222349Z) /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) >> endobj xref @@ -7662,591 +7642,591 @@ xref 0000000000 00000 f 0000000009 00000 n 0000018969 00000 n -0000491464 00000 n +0000491721 00000 n 0000000054 00000 n 0000000086 00000 n 0000019093 00000 n -0000491392 00000 n +0000491649 00000 n 0000000133 00000 n 0000000173 00000 n 0000019218 00000 n -0000491306 00000 n +0000491563 00000 n 0000000221 00000 n 0000000273 00000 n 0000019343 00000 n -0000491220 00000 n +0000491477 00000 n 0000000321 00000 n 0000000377 00000 n 0000023633 00000 n -0000491110 00000 n +0000491367 00000 n 0000000425 00000 n 0000000478 00000 n 0000023758 00000 n -0000491036 00000 n +0000491293 00000 n 0000000531 00000 n 0000000572 00000 n 0000023883 00000 n -0000490949 00000 n +0000491206 00000 n 0000000625 00000 n 0000000674 00000 n 0000024008 00000 n -0000490862 00000 n +0000491119 00000 n 0000000727 00000 n 0000000757 00000 n 0000028318 00000 n -0000490738 00000 n +0000490995 00000 n 0000000810 00000 n 0000000861 00000 n 0000028443 00000 n -0000490664 00000 n +0000490921 00000 n 0000000919 00000 n 0000000964 00000 n 0000028568 00000 n -0000490577 00000 n +0000490834 00000 n 0000001022 00000 n 0000001062 00000 n 0000028693 00000 n -0000490503 00000 n +0000490760 00000 n 0000001120 00000 n 0000001162 00000 n 0000031606 00000 n -0000490379 00000 n +0000490636 00000 n 0000001215 00000 n 0000001260 00000 n 0000031731 00000 n -0000490318 00000 n +0000490575 00000 n 0000001318 00000 n 0000001355 00000 n 0000031856 00000 n -0000490244 00000 n +0000490501 00000 n 0000001408 00000 n 0000001463 00000 n 0000034244 00000 n -0000490119 00000 n +0000490376 00000 n 0000001509 00000 n 0000001556 00000 n 0000034369 00000 n -0000490045 00000 n +0000490302 00000 n 0000001604 00000 n 0000001648 00000 n 0000034494 00000 n -0000489958 00000 n +0000490215 00000 n 0000001696 00000 n 0000001735 00000 n 0000034617 00000 n -0000489871 00000 n +0000490128 00000 n 0000001783 00000 n 0000001825 00000 n 0000034741 00000 n -0000489784 00000 n +0000490041 00000 n 0000001873 00000 n 0000001936 00000 n 0000035777 00000 n -0000489710 00000 n +0000489967 00000 n 0000001984 00000 n 0000002034 00000 n 0000037455 00000 n -0000489582 00000 n +0000489839 00000 n 0000002080 00000 n 0000002126 00000 n 0000037579 00000 n -0000489469 00000 n +0000489726 00000 n 0000002174 00000 n 0000002218 00000 n 0000037704 00000 n -0000489393 00000 n +0000489650 00000 n 0000002271 00000 n 0000002323 00000 n 0000037829 00000 n -0000489316 00000 n +0000489573 00000 n 0000002377 00000 n 0000002436 00000 n 0000040461 00000 n -0000489225 00000 n +0000489482 00000 n 0000002485 00000 n 0000002523 00000 n 0000040712 00000 n -0000489108 00000 n +0000489365 00000 n 0000002572 00000 n 0000002618 00000 n 0000040838 00000 n -0000488990 00000 n +0000489247 00000 n 0000002672 00000 n 0000002739 00000 n 0000044023 00000 n -0000488911 00000 n +0000489168 00000 n 0000002798 00000 n 0000002842 00000 n 0000044149 00000 n -0000488832 00000 n +0000489089 00000 n 0000002901 00000 n 0000002949 00000 n 0000054288 00000 n -0000488753 00000 n +0000489010 00000 n 0000003003 00000 n 0000003036 00000 n 0000057561 00000 n -0000488621 00000 n +0000488878 00000 n 0000003083 00000 n 0000003126 00000 n 0000057687 00000 n -0000488542 00000 n +0000488799 00000 n 0000003175 00000 n 0000003205 00000 n 0000057813 00000 n -0000488410 00000 n +0000488667 00000 n 0000003254 00000 n 0000003292 00000 n 0000057938 00000 n -0000488345 00000 n +0000488602 00000 n 0000003346 00000 n 0000003388 00000 n 0000062257 00000 n -0000488252 00000 n +0000488509 00000 n 0000003437 00000 n 0000003496 00000 n 0000062383 00000 n -0000488120 00000 n +0000488377 00000 n 0000003545 00000 n 0000003578 00000 n 0000062509 00000 n -0000488055 00000 n +0000488312 00000 n 0000003632 00000 n 0000003681 00000 n 0000069370 00000 n -0000487923 00000 n +0000488180 00000 n 0000003730 00000 n 0000003758 00000 n 0000069496 00000 n -0000487805 00000 n +0000488062 00000 n 0000003812 00000 n 0000003881 00000 n 0000069621 00000 n -0000487726 00000 n +0000487983 00000 n 0000003940 00000 n 0000003988 00000 n 0000069747 00000 n -0000487647 00000 n +0000487904 00000 n 0000004047 00000 n 0000004092 00000 n 0000072749 00000 n -0000487554 00000 n +0000487811 00000 n 0000004146 00000 n 0000004214 00000 n 0000072875 00000 n -0000487461 00000 n +0000487718 00000 n 0000004268 00000 n 0000004338 00000 n 0000073001 00000 n -0000487368 00000 n +0000487625 00000 n 0000004392 00000 n 0000004455 00000 n 0000073127 00000 n -0000487275 00000 n +0000487532 00000 n 0000004509 00000 n 0000004564 00000 n 0000076860 00000 n -0000487196 00000 n +0000487453 00000 n 0000004618 00000 n 0000004650 00000 n 0000076986 00000 n -0000487103 00000 n +0000487360 00000 n 0000004699 00000 n 0000004727 00000 n 0000077111 00000 n -0000487010 00000 n +0000487267 00000 n 0000004776 00000 n 0000004808 00000 n 0000077237 00000 n -0000486878 00000 n +0000487135 00000 n 0000004857 00000 n 0000004887 00000 n 0000080688 00000 n -0000486799 00000 n +0000487056 00000 n 0000004941 00000 n 0000004982 00000 n 0000080813 00000 n -0000486706 00000 n +0000486963 00000 n 0000005036 00000 n 0000005078 00000 n 0000080939 00000 n -0000486627 00000 n +0000486884 00000 n 0000005132 00000 n 0000005177 00000 n 0000088379 00000 n -0000486509 00000 n +0000486766 00000 n 0000005226 00000 n 0000005272 00000 n 0000088505 00000 n -0000486430 00000 n +0000486687 00000 n 0000005326 00000 n 0000005386 00000 n 0000088631 00000 n -0000486351 00000 n +0000486608 00000 n 0000005440 00000 n 0000005509 00000 n 0000091066 00000 n -0000486218 00000 n +0000486475 00000 n 0000005556 00000 n 0000005609 00000 n 0000091192 00000 n -0000486139 00000 n +0000486396 00000 n 0000005658 00000 n 0000005714 00000 n 0000091318 00000 n -0000486060 00000 n +0000486317 00000 n 0000005763 00000 n 0000005812 00000 n 0000095439 00000 n -0000485927 00000 n +0000486184 00000 n 0000005859 00000 n 0000005911 00000 n 0000095565 00000 n -0000485809 00000 n +0000486066 00000 n 0000005960 00000 n 0000006011 00000 n 0000099709 00000 n -0000485691 00000 n +0000485948 00000 n 0000006065 00000 n 0000006110 00000 n 0000099834 00000 n -0000485612 00000 n +0000485869 00000 n 0000006169 00000 n 0000006203 00000 n 0000099959 00000 n -0000485533 00000 n +0000485790 00000 n 0000006262 00000 n 0000006310 00000 n 0000103241 00000 n -0000485415 00000 n +0000485672 00000 n 0000006364 00000 n 0000006404 00000 n 0000103367 00000 n -0000485336 00000 n +0000485593 00000 n 0000006463 00000 n 0000006497 00000 n 0000103493 00000 n -0000485257 00000 n +0000485514 00000 n 0000006556 00000 n 0000006604 00000 n 0000107219 00000 n -0000485124 00000 n +0000485381 00000 n 0000006653 00000 n 0000006703 00000 n 0000111057 00000 n -0000485045 00000 n +0000485302 00000 n 0000006757 00000 n 0000006804 00000 n 0000111183 00000 n -0000484952 00000 n +0000485209 00000 n 0000006858 00000 n 0000006918 00000 n 0000111433 00000 n -0000484859 00000 n +0000485116 00000 n 0000006972 00000 n 0000007024 00000 n 0000111559 00000 n -0000484766 00000 n +0000485023 00000 n 0000007078 00000 n 0000007143 00000 n 0000116189 00000 n -0000484673 00000 n +0000484930 00000 n 0000007197 00000 n 0000007248 00000 n 0000116315 00000 n -0000484580 00000 n +0000484837 00000 n 0000007302 00000 n 0000007366 00000 n 0000116441 00000 n -0000484487 00000 n +0000484744 00000 n 0000007420 00000 n 0000007467 00000 n 0000116567 00000 n -0000484394 00000 n +0000484651 00000 n 0000007521 00000 n 0000007581 00000 n 0000119509 00000 n -0000484301 00000 n +0000484558 00000 n 0000007635 00000 n 0000007686 00000 n 0000119635 00000 n -0000484169 00000 n +0000484426 00000 n 0000007741 00000 n 0000007806 00000 n 0000119761 00000 n -0000484090 00000 n +0000484347 00000 n 0000007866 00000 n 0000007913 00000 n 0000130170 00000 n -0000484011 00000 n +0000484268 00000 n 0000007973 00000 n 0000008021 00000 n 0000133886 00000 n -0000483918 00000 n +0000484175 00000 n 0000008076 00000 n 0000008126 00000 n 0000134012 00000 n -0000483825 00000 n +0000484082 00000 n 0000008181 00000 n 0000008244 00000 n 0000135742 00000 n -0000483732 00000 n +0000483989 00000 n 0000008299 00000 n 0000008351 00000 n 0000135868 00000 n -0000483639 00000 n +0000483896 00000 n 0000008406 00000 n 0000008471 00000 n 0000135994 00000 n -0000483546 00000 n +0000483803 00000 n 0000008526 00000 n 0000008578 00000 n 0000141175 00000 n -0000483413 00000 n +0000483670 00000 n 0000008633 00000 n 0000008698 00000 n 0000145209 00000 n -0000483334 00000 n +0000483591 00000 n 0000008758 00000 n 0000008802 00000 n 0000162726 00000 n -0000483241 00000 n +0000483498 00000 n 0000008862 00000 n 0000008901 00000 n 0000162852 00000 n -0000483148 00000 n +0000483405 00000 n 0000008961 00000 n 0000009008 00000 n 0000166993 00000 n -0000483055 00000 n +0000483312 00000 n 0000009068 00000 n 0000009111 00000 n 0000167119 00000 n -0000482962 00000 n +0000483219 00000 n 0000009171 00000 n 0000009210 00000 n -0000170214 00000 n -0000482869 00000 n +0000170296 00000 n +0000483126 00000 n 0000009270 00000 n 0000009312 00000 n -0000173956 00000 n -0000482776 00000 n +0000173827 00000 n +0000483033 00000 n 0000009372 00000 n 0000009415 00000 n -0000181576 00000 n -0000482683 00000 n +0000181413 00000 n +0000482940 00000 n 0000009475 00000 n 0000009522 00000 n -0000181702 00000 n -0000482590 00000 n +0000181539 00000 n +0000482847 00000 n 0000009582 00000 n 0000009643 00000 n -0000181828 00000 n -0000482497 00000 n +0000181665 00000 n +0000482754 00000 n 0000009704 00000 n 0000009756 00000 n -0000185325 00000 n -0000482404 00000 n +0000185582 00000 n +0000482661 00000 n 0000009817 00000 n 0000009870 00000 n -0000189658 00000 n -0000482311 00000 n +0000189915 00000 n +0000482568 00000 n 0000009931 00000 n 0000009969 00000 n -0000189787 00000 n -0000482218 00000 n +0000190044 00000 n +0000482475 00000 n 0000010030 00000 n 0000010082 00000 n -0000192689 00000 n -0000482125 00000 n +0000192946 00000 n +0000482382 00000 n 0000010143 00000 n 0000010187 00000 n -0000196435 00000 n -0000482032 00000 n +0000196692 00000 n +0000482289 00000 n 0000010248 00000 n 0000010284 00000 n -0000200400 00000 n -0000481939 00000 n +0000200657 00000 n +0000482196 00000 n 0000010345 00000 n 0000010408 00000 n -0000200529 00000 n -0000481860 00000 n +0000200786 00000 n +0000482117 00000 n 0000010469 00000 n 0000010518 00000 n -0000204050 00000 n -0000481767 00000 n +0000204307 00000 n +0000482024 00000 n 0000010573 00000 n 0000010624 00000 n -0000204177 00000 n -0000481674 00000 n +0000204434 00000 n +0000481931 00000 n 0000010679 00000 n 0000010743 00000 n -0000208304 00000 n -0000481581 00000 n +0000208561 00000 n +0000481838 00000 n 0000010798 00000 n 0000010855 00000 n -0000208431 00000 n -0000481488 00000 n +0000208688 00000 n +0000481745 00000 n 0000010910 00000 n 0000010980 00000 n -0000208559 00000 n -0000481395 00000 n +0000208816 00000 n +0000481652 00000 n 0000011035 00000 n 0000011084 00000 n -0000211978 00000 n -0000481302 00000 n +0000212235 00000 n +0000481559 00000 n 0000011139 00000 n 0000011201 00000 n -0000213555 00000 n -0000481209 00000 n +0000213812 00000 n +0000481466 00000 n 0000011256 00000 n 0000011305 00000 n -0000218410 00000 n -0000481091 00000 n +0000218667 00000 n +0000481348 00000 n 0000011360 00000 n 0000011422 00000 n -0000218539 00000 n -0000481012 00000 n +0000218796 00000 n +0000481269 00000 n 0000011482 00000 n 0000011521 00000 n -0000223490 00000 n -0000480919 00000 n +0000223747 00000 n +0000481176 00000 n 0000011581 00000 n 0000011615 00000 n -0000223619 00000 n -0000480826 00000 n +0000223876 00000 n +0000481083 00000 n 0000011675 00000 n 0000011716 00000 n -0000233806 00000 n -0000480747 00000 n +0000234063 00000 n +0000481004 00000 n 0000011776 00000 n 0000011828 00000 n -0000237977 00000 n -0000480629 00000 n +0000238234 00000 n +0000480886 00000 n 0000011877 00000 n 0000011910 00000 n -0000238106 00000 n -0000480511 00000 n +0000238363 00000 n +0000480768 00000 n 0000011964 00000 n 0000012036 00000 n -0000238234 00000 n -0000480432 00000 n +0000238491 00000 n +0000480689 00000 n 0000012095 00000 n 0000012139 00000 n -0000245968 00000 n -0000480353 00000 n +0000246225 00000 n +0000480610 00000 n 0000012198 00000 n 0000012251 00000 n -0000249552 00000 n -0000480260 00000 n +0000249809 00000 n +0000480517 00000 n 0000012305 00000 n 0000012355 00000 n -0000252912 00000 n -0000480167 00000 n +0000253169 00000 n +0000480424 00000 n 0000012409 00000 n 0000012447 00000 n -0000253170 00000 n -0000480074 00000 n +0000253427 00000 n +0000480331 00000 n 0000012501 00000 n 0000012550 00000 n -0000253428 00000 n -0000479942 00000 n +0000253685 00000 n +0000480199 00000 n 0000012604 00000 n 0000012656 00000 n -0000253557 00000 n -0000479863 00000 n +0000253814 00000 n +0000480120 00000 n 0000012715 00000 n 0000012767 00000 n -0000256438 00000 n -0000479770 00000 n +0000256695 00000 n +0000480027 00000 n 0000012826 00000 n 0000012879 00000 n -0000256567 00000 n -0000479691 00000 n +0000256824 00000 n +0000479948 00000 n 0000012938 00000 n 0000012987 00000 n -0000256696 00000 n -0000479612 00000 n +0000256953 00000 n +0000479869 00000 n 0000013041 00000 n 0000013121 00000 n -0000262565 00000 n -0000479479 00000 n +0000262822 00000 n +0000479736 00000 n 0000013168 00000 n 0000013220 00000 n -0000262694 00000 n -0000479400 00000 n +0000262951 00000 n +0000479657 00000 n 0000013269 00000 n 0000013313 00000 n -0000266427 00000 n -0000479268 00000 n +0000266684 00000 n +0000479525 00000 n 0000013362 00000 n 0000013424 00000 n -0000266556 00000 n -0000479189 00000 n +0000266813 00000 n +0000479446 00000 n 0000013478 00000 n 0000013526 00000 n -0000266685 00000 n -0000479110 00000 n +0000266942 00000 n +0000479367 00000 n 0000013580 00000 n 0000013631 00000 n -0000266814 00000 n -0000479031 00000 n +0000267071 00000 n +0000479288 00000 n 0000013680 00000 n 0000013727 00000 n -0000269731 00000 n -0000478898 00000 n +0000269988 00000 n +0000479155 00000 n 0000013774 00000 n 0000013811 00000 n -0000269860 00000 n -0000478780 00000 n +0000270117 00000 n +0000479037 00000 n 0000013860 00000 n 0000013899 00000 n -0000269989 00000 n -0000478715 00000 n +0000270246 00000 n +0000478972 00000 n 0000013953 00000 n 0000014031 00000 n -0000270118 00000 n -0000478622 00000 n +0000270375 00000 n +0000478879 00000 n 0000014080 00000 n 0000014147 00000 n -0000270247 00000 n -0000478543 00000 n +0000270504 00000 n +0000478800 00000 n 0000014196 00000 n 0000014241 00000 n -0000273741 00000 n -0000478424 00000 n +0000273998 00000 n +0000478681 00000 n 0000014289 00000 n 0000014321 00000 n -0000273870 00000 n -0000478306 00000 n +0000274127 00000 n +0000478563 00000 n 0000014370 00000 n 0000014409 00000 n -0000273999 00000 n -0000478241 00000 n +0000274256 00000 n +0000478498 00000 n 0000014463 00000 n 0000014524 00000 n -0000277498 00000 n -0000478109 00000 n +0000277755 00000 n +0000478366 00000 n 0000014573 00000 n 0000014630 00000 n -0000277627 00000 n -0000478044 00000 n +0000277884 00000 n +0000478301 00000 n 0000014684 00000 n 0000014733 00000 n -0000281814 00000 n -0000477926 00000 n +0000282071 00000 n +0000478183 00000 n 0000014782 00000 n 0000014844 00000 n -0000281943 00000 n -0000477847 00000 n +0000282200 00000 n +0000478104 00000 n 0000014898 00000 n 0000014953 00000 n -0000292558 00000 n -0000477754 00000 n +0000292815 00000 n +0000478011 00000 n 0000015007 00000 n 0000015048 00000 n -0000292687 00000 n -0000477675 00000 n +0000292944 00000 n +0000477932 00000 n 0000015102 00000 n 0000015154 00000 n 0000015507 00000 n @@ -8254,20 +8234,20 @@ xref 0000015207 00000 n 0000015629 00000 n 0000015692 00000 n -0000474516 00000 n -0000448852 00000 n -0000474342 00000 n -0000447664 00000 n -0000421504 00000 n -0000447490 00000 n -0000475521 00000 n +0000474773 00000 n +0000449109 00000 n +0000474599 00000 n +0000447921 00000 n +0000421761 00000 n +0000447747 00000 n +0000475778 00000 n 0000016419 00000 n 0000016234 00000 n 0000015840 00000 n 0000016356 00000 n -0000420819 00000 n -0000418674 00000 n -0000420655 00000 n +0000421076 00000 n +0000418932 00000 n +0000420912 00000 n 0000019594 00000 n 0000018784 00000 n 0000016504 00000 n @@ -8275,25 +8255,25 @@ xref 0000019030 00000 n 0000019155 00000 n 0000019280 00000 n -0000417820 00000 n -0000397462 00000 n -0000417646 00000 n +0000418078 00000 n +0000397720 00000 n +0000417904 00000 n 0000019405 00000 n 0000019468 00000 n 0000019531 00000 n -0000396513 00000 n -0000376761 00000 n -0000396340 00000 n -0000376034 00000 n -0000359650 00000 n -0000375861 00000 n +0000396771 00000 n +0000377019 00000 n +0000396598 00000 n +0000376292 00000 n +0000359908 00000 n +0000376119 00000 n 0000024132 00000 n 0000022950 00000 n 0000019718 00000 n 0000023444 00000 n -0000359115 00000 n -0000342198 00000 n -0000358931 00000 n +0000359373 00000 n +0000342456 00000 n +0000359189 00000 n 0000023507 00000 n 0000023570 00000 n 0000023695 00000 n @@ -8302,8 +8282,8 @@ xref 0000023100 00000 n 0000023293 00000 n 0000024070 00000 n -0000238170 00000 n -0000282007 00000 n +0000238427 00000 n +0000282264 00000 n 0000028818 00000 n 0000027783 00000 n 0000024256 00000 n @@ -8331,7 +8311,7 @@ xref 0000034556 00000 n 0000034678 00000 n 0000034803 00000 n -0000475639 00000 n +0000475896 00000 n 0000035902 00000 n 0000035592 00000 n 0000034951 00000 n @@ -8355,28 +8335,28 @@ xref 0000040239 00000 n 0000040775 00000 n 0000040901 00000 n -0000192753 00000 n +0000193010 00000 n 0000044275 00000 n 0000043838 00000 n 0000041075 00000 n 0000043960 00000 n -0000341671 00000 n -0000332362 00000 n -0000341494 00000 n +0000341929 00000 n +0000332620 00000 n +0000341752 00000 n 0000044212 00000 n 0000047975 00000 n 0000047790 00000 n 0000044399 00000 n 0000047912 00000 n -0000331919 00000 n -0000325120 00000 n -0000331742 00000 n +0000332177 00000 n +0000325378 00000 n +0000332000 00000 n 0000052340 00000 n 0000051949 00000 n 0000048138 00000 n 0000052277 00000 n 0000052091 00000 n -0000475757 00000 n +0000476014 00000 n 0000111622 00000 n 0000054540 00000 n 0000054103 00000 n @@ -8396,7 +8376,7 @@ xref 0000057875 00000 n 0000058001 00000 n 0000145272 00000 n -0000174019 00000 n +0000173890 00000 n 0000062635 00000 n 0000061718 00000 n 0000058162 00000 n @@ -8406,7 +8386,7 @@ xref 0000062033 00000 n 0000062446 00000 n 0000062572 00000 n -0000282786 00000 n +0000283043 00000 n 0000065550 00000 n 0000065178 00000 n 0000062785 00000 n @@ -8424,7 +8404,7 @@ xref 0000069559 00000 n 0000069684 00000 n 0000069810 00000 n -0000475875 00000 n +0000476132 00000 n 0000073253 00000 n 0000072376 00000 n 0000070010 00000 n @@ -8434,7 +8414,7 @@ xref 0000073064 00000 n 0000073190 00000 n 0000072518 00000 n -0000233870 00000 n +0000234127 00000 n 0000077362 00000 n 0000076675 00000 n 0000073390 00000 n @@ -8455,9 +8435,9 @@ xref 0000083942 00000 n 0000081187 00000 n 0000085700 00000 n -0000324285 00000 n -0000315425 00000 n -0000324113 00000 n +0000324543 00000 n +0000315683 00000 n +0000324371 00000 n 0000085532 00000 n 0000085589 00000 n 0000085678 00000 n @@ -8469,7 +8449,7 @@ xref 0000088157 00000 n 0000088568 00000 n 0000088694 00000 n -0000277691 00000 n +0000277948 00000 n 0000091444 00000 n 0000090881 00000 n 0000088881 00000 n @@ -8477,7 +8457,7 @@ xref 0000091129 00000 n 0000091255 00000 n 0000091381 00000 n -0000475993 00000 n +0000476250 00000 n 0000091876 00000 n 0000091691 00000 n 0000091542 00000 n @@ -8522,7 +8502,7 @@ xref 0000111307 00000 n 0000111370 00000 n 0000111496 00000 n -0000476111 00000 n +0000476368 00000 n 0000116693 00000 n 0000115127 00000 n 0000111796 00000 n @@ -8536,7 +8516,7 @@ xref 0000115609 00000 n 0000115760 00000 n 0000115944 00000 n -0000293201 00000 n +0000293458 00000 n 0000119887 00000 n 0000119324 00000 n 0000116830 00000 n @@ -8568,7 +8548,7 @@ xref 0000134075 00000 n 0000133520 00000 n 0000133671 00000 n -0000476229 00000 n +0000476486 00000 n 0000136120 00000 n 0000135557 00000 n 0000134249 00000 n @@ -8590,7 +8570,7 @@ xref 0000141425 00000 n 0000145146 00000 n 0000144991 00000 n -0000200593 00000 n +0000200850 00000 n 0000149374 00000 n 0000149063 00000 n 0000145458 00000 n @@ -8605,8 +8585,8 @@ xref 0000153392 00000 n 0000153548 00000 n 0000153730 00000 n -0000476347 00000 n -0000204241 00000 n +0000476604 00000 n +0000204498 00000 n 0000158684 00000 n 0000158103 00000 n 0000154129 00000 n @@ -8620,7 +8600,7 @@ xref 0000162789 00000 n 0000162495 00000 n 0000162915 00000 n -0000213619 00000 n +0000213876 00000 n 0000167245 00000 n 0000166445 00000 n 0000163102 00000 n @@ -8629,412 +8609,412 @@ xref 0000166595 00000 n 0000166760 00000 n 0000167182 00000 n -0000266877 00000 n -0000170339 00000 n -0000170029 00000 n +0000267134 00000 n +0000170422 00000 n +0000170111 00000 n 0000167369 00000 n -0000170151 00000 n -0000170276 00000 n -0000314899 00000 n -0000307009 00000 n -0000314726 00000 n -0000174082 00000 n -0000173771 00000 n -0000170504 00000 n -0000173893 00000 n -0000177641 00000 n -0000177456 00000 n -0000174221 00000 n -0000177578 00000 n -0000476465 00000 n -0000181954 00000 n -0000181036 00000 n -0000177806 00000 n -0000181513 00000 n -0000181639 00000 n -0000181765 00000 n -0000181187 00000 n -0000181891 00000 n -0000181360 00000 n -0000185454 00000 n -0000185135 00000 n -0000182106 00000 n -0000185260 00000 n -0000185389 00000 n -0000189915 00000 n -0000189121 00000 n -0000185607 00000 n -0000189593 00000 n -0000189722 00000 n +0000170233 00000 n +0000170359 00000 n +0000315157 00000 n +0000307266 00000 n +0000314984 00000 n +0000173953 00000 n +0000173642 00000 n +0000170587 00000 n +0000173764 00000 n +0000177876 00000 n +0000177691 00000 n +0000174105 00000 n +0000177813 00000 n +0000476722 00000 n +0000181791 00000 n +0000181035 00000 n +0000178041 00000 n +0000181350 00000 n +0000181476 00000 n +0000181602 00000 n +0000181177 00000 n +0000181728 00000 n +0000185711 00000 n +0000185216 00000 n +0000181943 00000 n +0000185517 00000 n +0000185362 00000 n +0000185646 00000 n +0000190172 00000 n +0000189378 00000 n +0000185864 00000 n 0000189850 00000 n -0000189276 00000 n -0000189438 00000 n -0000192947 00000 n -0000192309 00000 n -0000190081 00000 n -0000192624 00000 n -0000192455 00000 n -0000192817 00000 n -0000192882 00000 n -0000196563 00000 n -0000196062 00000 n -0000193059 00000 n -0000196370 00000 n -0000196499 00000 n -0000196208 00000 n -0000200787 00000 n -0000200020 00000 n -0000196742 00000 n -0000200335 00000 n -0000200464 00000 n -0000200167 00000 n -0000200657 00000 n -0000200722 00000 n -0000476587 00000 n +0000189979 00000 n +0000190107 00000 n +0000189533 00000 n +0000189695 00000 n +0000193204 00000 n +0000192566 00000 n +0000190338 00000 n +0000192881 00000 n +0000192712 00000 n +0000193074 00000 n +0000193139 00000 n +0000196820 00000 n +0000196319 00000 n +0000193316 00000 n +0000196627 00000 n +0000196756 00000 n +0000196465 00000 n +0000201044 00000 n +0000200277 00000 n +0000196999 00000 n +0000200592 00000 n +0000200721 00000 n +0000200424 00000 n +0000200914 00000 n +0000200979 00000 n +0000476844 00000 n +0000208880 00000 n +0000204561 00000 n +0000204116 00000 n +0000201156 00000 n +0000204242 00000 n +0000204371 00000 n +0000208945 00000 n +0000207865 00000 n +0000204673 00000 n +0000208496 00000 n +0000208030 00000 n +0000208181 00000 n 0000208623 00000 n -0000204304 00000 n -0000203859 00000 n -0000200899 00000 n -0000203985 00000 n -0000204114 00000 n -0000208688 00000 n -0000207608 00000 n -0000204416 00000 n -0000208239 00000 n -0000207773 00000 n -0000207924 00000 n -0000208366 00000 n -0000208494 00000 n -0000208085 00000 n -0000212106 00000 n -0000211787 00000 n -0000208800 00000 n -0000211913 00000 n -0000212042 00000 n -0000213683 00000 n -0000213364 00000 n -0000212218 00000 n -0000213490 00000 n -0000215059 00000 n -0000214868 00000 n -0000213795 00000 n -0000214994 00000 n -0000218796 00000 n -0000218219 00000 n -0000215158 00000 n -0000218345 00000 n -0000218474 00000 n -0000218603 00000 n -0000218668 00000 n -0000218733 00000 n -0000476712 00000 n -0000223748 00000 n -0000222246 00000 n -0000218908 00000 n -0000223425 00000 n -0000223554 00000 n -0000223683 00000 n -0000222438 00000 n -0000222600 00000 n -0000222762 00000 n -0000222924 00000 n -0000223095 00000 n -0000223265 00000 n -0000228568 00000 n -0000227339 00000 n -0000223860 00000 n -0000228503 00000 n -0000227531 00000 n -0000227694 00000 n -0000227856 00000 n -0000228018 00000 n -0000228178 00000 n -0000228340 00000 n -0000233934 00000 n -0000231575 00000 n -0000228693 00000 n -0000233741 00000 n -0000231821 00000 n -0000231974 00000 n -0000232136 00000 n -0000232298 00000 n -0000232460 00000 n -0000232622 00000 n -0000232784 00000 n -0000232946 00000 n -0000233108 00000 n -0000233262 00000 n -0000233423 00000 n -0000233578 00000 n -0000238491 00000 n -0000237294 00000 n -0000234059 00000 n -0000237782 00000 n -0000237847 00000 n -0000237912 00000 n -0000238041 00000 n +0000208751 00000 n +0000208342 00000 n +0000212363 00000 n +0000212044 00000 n +0000209057 00000 n +0000212170 00000 n +0000212299 00000 n +0000213940 00000 n +0000213621 00000 n +0000212475 00000 n +0000213747 00000 n +0000215316 00000 n +0000215125 00000 n +0000214052 00000 n +0000215251 00000 n +0000219053 00000 n +0000218476 00000 n +0000215415 00000 n +0000218602 00000 n +0000218731 00000 n +0000218860 00000 n +0000218925 00000 n +0000218990 00000 n +0000476969 00000 n +0000224005 00000 n +0000222503 00000 n +0000219165 00000 n +0000223682 00000 n +0000223811 00000 n +0000223940 00000 n +0000222695 00000 n +0000222857 00000 n +0000223019 00000 n +0000223181 00000 n +0000223352 00000 n +0000223522 00000 n +0000228825 00000 n +0000227596 00000 n +0000224117 00000 n +0000228760 00000 n +0000227788 00000 n +0000227951 00000 n +0000228113 00000 n +0000228275 00000 n +0000228435 00000 n +0000228597 00000 n +0000234191 00000 n +0000231832 00000 n +0000228950 00000 n +0000233998 00000 n +0000232078 00000 n +0000232231 00000 n +0000232393 00000 n +0000232555 00000 n +0000232717 00000 n +0000232879 00000 n +0000233041 00000 n +0000233203 00000 n +0000233365 00000 n +0000233519 00000 n +0000233680 00000 n +0000233835 00000 n +0000238748 00000 n +0000237551 00000 n +0000234316 00000 n +0000238039 00000 n +0000238104 00000 n +0000238169 00000 n 0000238298 00000 n -0000237450 00000 n -0000237620 00000 n -0000238363 00000 n -0000238427 00000 n -0000242086 00000 n -0000241765 00000 n -0000238616 00000 n -0000241891 00000 n -0000241956 00000 n -0000242021 00000 n -0000246097 00000 n -0000245647 00000 n -0000242185 00000 n -0000245773 00000 n -0000245838 00000 n -0000245903 00000 n -0000246032 00000 n -0000476837 00000 n -0000249811 00000 n -0000249101 00000 n -0000246222 00000 n -0000249227 00000 n -0000249292 00000 n -0000249357 00000 n -0000249422 00000 n -0000249487 00000 n -0000249616 00000 n -0000249681 00000 n -0000249746 00000 n -0000253684 00000 n -0000252721 00000 n -0000249936 00000 n -0000252847 00000 n -0000252976 00000 n -0000253041 00000 n -0000253106 00000 n -0000253234 00000 n +0000238555 00000 n +0000237707 00000 n +0000237877 00000 n +0000238620 00000 n +0000238684 00000 n +0000242343 00000 n +0000242022 00000 n +0000238873 00000 n +0000242148 00000 n +0000242213 00000 n +0000242278 00000 n +0000246354 00000 n +0000245904 00000 n +0000242442 00000 n +0000246030 00000 n +0000246095 00000 n +0000246160 00000 n +0000246289 00000 n +0000477094 00000 n +0000250068 00000 n +0000249358 00000 n +0000246479 00000 n +0000249484 00000 n +0000249549 00000 n +0000249614 00000 n +0000249679 00000 n +0000249744 00000 n +0000249873 00000 n +0000249938 00000 n +0000250003 00000 n +0000253941 00000 n +0000252978 00000 n +0000250193 00000 n +0000253104 00000 n +0000253233 00000 n 0000253298 00000 n 0000253363 00000 n -0000253492 00000 n +0000253491 00000 n +0000253555 00000 n 0000253620 00000 n -0000256825 00000 n -0000256247 00000 n -0000253876 00000 n -0000256373 00000 n -0000306654 00000 n -0000304656 00000 n -0000306489 00000 n -0000256502 00000 n -0000256631 00000 n -0000256760 00000 n -0000259788 00000 n -0000259467 00000 n -0000257018 00000 n -0000259593 00000 n -0000259658 00000 n -0000259723 00000 n -0000260241 00000 n -0000260050 00000 n -0000259900 00000 n -0000260176 00000 n -0000262822 00000 n -0000261914 00000 n -0000260283 00000 n -0000262500 00000 n -0000262629 00000 n -0000262758 00000 n -0000262070 00000 n -0000262285 00000 n -0000476962 00000 n -0000266941 00000 n -0000266236 00000 n -0000262948 00000 n -0000266362 00000 n -0000304335 00000 n -0000295122 00000 n -0000304149 00000 n -0000266491 00000 n -0000266620 00000 n -0000266749 00000 n -0000270375 00000 n -0000269149 00000 n -0000267106 00000 n -0000269666 00000 n -0000269795 00000 n -0000269924 00000 n -0000270053 00000 n -0000270182 00000 n -0000270311 00000 n -0000269305 00000 n -0000269477 00000 n -0000270829 00000 n -0000270638 00000 n -0000270488 00000 n -0000270764 00000 n -0000274128 00000 n -0000273550 00000 n -0000270871 00000 n -0000273676 00000 n -0000273805 00000 n -0000273934 00000 n -0000274063 00000 n -0000278014 00000 n -0000277307 00000 n -0000274214 00000 n -0000277433 00000 n -0000277562 00000 n -0000277755 00000 n -0000277820 00000 n -0000277884 00000 n -0000277949 00000 n -0000284668 00000 n -0000280868 00000 n -0000278140 00000 n -0000281749 00000 n -0000281878 00000 n -0000281042 00000 n -0000281221 00000 n -0000281398 00000 n -0000281573 00000 n -0000282071 00000 n -0000282136 00000 n -0000282201 00000 n -0000282266 00000 n -0000282331 00000 n -0000282396 00000 n -0000282461 00000 n -0000282526 00000 n -0000282591 00000 n -0000282656 00000 n -0000282721 00000 n -0000282850 00000 n -0000282915 00000 n -0000282980 00000 n -0000283045 00000 n -0000283110 00000 n -0000283175 00000 n -0000283240 00000 n -0000283305 00000 n -0000283370 00000 n -0000283435 00000 n -0000283500 00000 n -0000283565 00000 n -0000283630 00000 n -0000283695 00000 n -0000283760 00000 n -0000283825 00000 n -0000283890 00000 n -0000283955 00000 n -0000284020 00000 n -0000284085 00000 n -0000284150 00000 n -0000284215 00000 n -0000284280 00000 n -0000284345 00000 n -0000284410 00000 n -0000284475 00000 n -0000284540 00000 n -0000284604 00000 n -0000477087 00000 n -0000291179 00000 n -0000287484 00000 n -0000284820 00000 n -0000287610 00000 n -0000287675 00000 n -0000287740 00000 n -0000287805 00000 n -0000287870 00000 n -0000287935 00000 n -0000288000 00000 n -0000288065 00000 n -0000288129 00000 n -0000288194 00000 n -0000288259 00000 n -0000288324 00000 n -0000288389 00000 n -0000288454 00000 n -0000288519 00000 n -0000288584 00000 n -0000288648 00000 n -0000288713 00000 n -0000288778 00000 n -0000288843 00000 n -0000288908 00000 n -0000288973 00000 n -0000289038 00000 n -0000289103 00000 n -0000289168 00000 n -0000289233 00000 n -0000289298 00000 n -0000289363 00000 n -0000289428 00000 n -0000289493 00000 n -0000289558 00000 n -0000289623 00000 n -0000289688 00000 n -0000289753 00000 n -0000289818 00000 n -0000289883 00000 n -0000289948 00000 n -0000290013 00000 n -0000290078 00000 n -0000290143 00000 n -0000290208 00000 n -0000290273 00000 n -0000290338 00000 n -0000290403 00000 n -0000290468 00000 n -0000290533 00000 n -0000290598 00000 n -0000290663 00000 n -0000290728 00000 n -0000290793 00000 n -0000290858 00000 n -0000290923 00000 n -0000290987 00000 n -0000291051 00000 n +0000253749 00000 n +0000253877 00000 n +0000257082 00000 n +0000256504 00000 n +0000254133 00000 n +0000256630 00000 n +0000306911 00000 n +0000304913 00000 n +0000306746 00000 n +0000256759 00000 n +0000256888 00000 n +0000257017 00000 n +0000260045 00000 n +0000259724 00000 n +0000257275 00000 n +0000259850 00000 n +0000259915 00000 n +0000259980 00000 n +0000260498 00000 n +0000260307 00000 n +0000260157 00000 n +0000260433 00000 n +0000263079 00000 n +0000262171 00000 n +0000260540 00000 n +0000262757 00000 n +0000262886 00000 n +0000263015 00000 n +0000262327 00000 n +0000262542 00000 n +0000477219 00000 n +0000267198 00000 n +0000266493 00000 n +0000263205 00000 n +0000266619 00000 n +0000304592 00000 n +0000295379 00000 n +0000304406 00000 n +0000266748 00000 n +0000266877 00000 n +0000267006 00000 n +0000270632 00000 n +0000269406 00000 n +0000267363 00000 n +0000269923 00000 n +0000270052 00000 n +0000270181 00000 n +0000270310 00000 n +0000270439 00000 n +0000270568 00000 n +0000269562 00000 n +0000269734 00000 n +0000271086 00000 n +0000270895 00000 n +0000270745 00000 n +0000271021 00000 n +0000274385 00000 n +0000273807 00000 n +0000271128 00000 n +0000273933 00000 n +0000274062 00000 n +0000274191 00000 n +0000274320 00000 n +0000278271 00000 n +0000277564 00000 n +0000274471 00000 n +0000277690 00000 n +0000277819 00000 n +0000278012 00000 n +0000278077 00000 n +0000278141 00000 n +0000278206 00000 n +0000284925 00000 n +0000281125 00000 n +0000278397 00000 n +0000282006 00000 n +0000282135 00000 n +0000281299 00000 n +0000281478 00000 n +0000281655 00000 n +0000281830 00000 n +0000282328 00000 n +0000282393 00000 n +0000282458 00000 n +0000282523 00000 n +0000282588 00000 n +0000282653 00000 n +0000282718 00000 n +0000282783 00000 n +0000282848 00000 n +0000282913 00000 n +0000282978 00000 n +0000283107 00000 n +0000283172 00000 n +0000283237 00000 n +0000283302 00000 n +0000283367 00000 n +0000283432 00000 n +0000283497 00000 n +0000283562 00000 n +0000283627 00000 n +0000283692 00000 n +0000283757 00000 n +0000283822 00000 n +0000283887 00000 n +0000283952 00000 n +0000284017 00000 n +0000284082 00000 n +0000284147 00000 n +0000284212 00000 n +0000284277 00000 n +0000284342 00000 n +0000284407 00000 n +0000284472 00000 n +0000284537 00000 n +0000284602 00000 n +0000284667 00000 n +0000284732 00000 n +0000284797 00000 n +0000284861 00000 n +0000477344 00000 n +0000291436 00000 n +0000287741 00000 n +0000285077 00000 n +0000287867 00000 n +0000287932 00000 n +0000287997 00000 n +0000288062 00000 n +0000288127 00000 n +0000288192 00000 n +0000288257 00000 n +0000288322 00000 n +0000288386 00000 n +0000288451 00000 n +0000288516 00000 n +0000288581 00000 n +0000288646 00000 n +0000288711 00000 n +0000288776 00000 n +0000288841 00000 n +0000288905 00000 n +0000288970 00000 n +0000289035 00000 n +0000289100 00000 n +0000289165 00000 n +0000289230 00000 n +0000289295 00000 n +0000289360 00000 n +0000289425 00000 n +0000289490 00000 n +0000289555 00000 n +0000289620 00000 n +0000289685 00000 n +0000289750 00000 n +0000289815 00000 n +0000289880 00000 n +0000289945 00000 n +0000290010 00000 n +0000290075 00000 n +0000290140 00000 n +0000290205 00000 n +0000290270 00000 n +0000290335 00000 n +0000290400 00000 n +0000290465 00000 n +0000290530 00000 n +0000290595 00000 n +0000290660 00000 n +0000290725 00000 n +0000290790 00000 n +0000290855 00000 n +0000290920 00000 n +0000290985 00000 n +0000291050 00000 n 0000291115 00000 n -0000293076 00000 n -0000292367 00000 n -0000291291 00000 n -0000292493 00000 n -0000292622 00000 n -0000292751 00000 n -0000292816 00000 n -0000292881 00000 n -0000292946 00000 n -0000293011 00000 n -0000293233 00000 n -0000304577 00000 n -0000306901 00000 n -0000306870 00000 n -0000315174 00000 n -0000324690 00000 n -0000332161 00000 n -0000341957 00000 n -0000359455 00000 n -0000376442 00000 n -0000397081 00000 n -0000418224 00000 n -0000421306 00000 n -0000421076 00000 n -0000448225 00000 n -0000475035 00000 n -0000477185 00000 n -0000477305 00000 n -0000477428 00000 n -0000477517 00000 n -0000477599 00000 n -0000491574 00000 n -0000503622 00000 n -0000503663 00000 n -0000503703 00000 n -0000503837 00000 n +0000291180 00000 n +0000291244 00000 n +0000291308 00000 n +0000291372 00000 n +0000293333 00000 n +0000292624 00000 n +0000291548 00000 n +0000292750 00000 n +0000292879 00000 n +0000293008 00000 n +0000293073 00000 n +0000293138 00000 n +0000293203 00000 n +0000293268 00000 n +0000293490 00000 n +0000304834 00000 n +0000307158 00000 n +0000307127 00000 n +0000315432 00000 n +0000324948 00000 n +0000332419 00000 n +0000342215 00000 n +0000359713 00000 n +0000376700 00000 n +0000397339 00000 n +0000418482 00000 n +0000421563 00000 n +0000421333 00000 n +0000448482 00000 n +0000475292 00000 n +0000477442 00000 n +0000477562 00000 n +0000477685 00000 n +0000477774 00000 n +0000477856 00000 n +0000491831 00000 n +0000503879 00000 n +0000503920 00000 n +0000503960 00000 n +0000504094 00000 n trailer << /Size 1373 /Root 1371 0 R /Info 1372 0 R -/ID [<B146BB689FDC064660D3C5269A4887DD> <B146BB689FDC064660D3C5269A4887DD>] +/ID [<01CCFD1E5FBF13DF94A8F939D2FB9838> <01CCFD1E5FBF13DF94A8F939D2FB9838>] >> startxref -504095 +504352 %%EOF diff --git a/lib/dns/api b/lib/dns/api index 520c3c3a52d3..1b3fb8d5a269 100644 --- a/lib/dns/api +++ b/lib/dns/api @@ -1,3 +1,3 @@ -LIBINTERFACE = 24 -LIBREVISION = 2 -LIBAGE = 2 +LIBINTERFACE = 25 +LIBREVISION = 0 +LIBAGE = 0 diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c index 869fd7bba01c..207432d5f357 100644 --- a/lib/dns/dispatch.c +++ b/lib/dns/dispatch.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dispatch.c,v 1.101.2.6.2.21 2007/08/28 07:19:13 tbox Exp $ */ +/* $Id: dispatch.c,v 1.101.2.6.2.21.4.1 2008/05/22 21:11:15 each Exp $ */ #include <config.h> @@ -27,6 +27,7 @@ #include <isc/mem.h> #include <isc/mutex.h> #include <isc/print.h> +#include <isc/random.h> #include <isc/string.h> #include <isc/task.h> #include <isc/time.h> @@ -43,25 +44,22 @@ typedef ISC_LIST(dns_dispentry_t) dns_displist_t; -typedef struct dns_nsid { - isc_uint16_t nsid_state; - isc_uint16_t *nsid_vtable; - isc_uint16_t *nsid_pool; - isc_uint16_t nsid_a1, nsid_a2, nsid_a3; - isc_uint16_t nsid_c1, nsid_c2, nsid_c3; - isc_uint16_t nsid_state2; - isc_boolean_t nsid_usepool; -} dns_nsid_t; - typedef struct dns_qid { unsigned int magic; unsigned int qid_nbuckets; /* hash table size */ unsigned int qid_increment; /* id increment on collision */ isc_mutex_t lock; - dns_nsid_t nsid; dns_displist_t *qid_table; /* the table itself */ } dns_qid_t; +/* ARC4 Random generator state */ +typedef struct arc4ctx { + isc_uint8_t i; + isc_uint8_t j; + isc_uint8_t s[256]; + int count; +} arc4ctx_t; + struct dns_dispatchmgr { /* Unlocked. */ unsigned int magic; @@ -74,6 +72,10 @@ struct dns_dispatchmgr { unsigned int state; ISC_LIST(dns_dispatch_t) list; + /* Locked by arc4_lock. */ + isc_mutex_t arc4_lock; + arc4ctx_t arc4ctx; /*%< ARC4 context for QID */ + /* locked by buffer lock */ dns_qid_t *qid; isc_mutex_t buffer_lock; @@ -100,6 +102,7 @@ struct dns_dispentry { unsigned int magic; dns_dispatch_t *disp; dns_messageid_t id; + in_port_t port; unsigned int bucket; isc_sockaddr_t host; isc_task_t *task; @@ -119,6 +122,7 @@ struct dns_dispatch { isc_task_t *task; /* internal task */ isc_socket_t *socket; /* isc socket attached to */ isc_sockaddr_t local; /* local address */ + in_port_t localport; /* local UDP port */ unsigned int maxrequests; /* max requests */ isc_event_t *ctlevent; @@ -161,14 +165,14 @@ struct dns_dispatch { * Statics. */ static dns_dispentry_t *bucket_search(dns_qid_t *, isc_sockaddr_t *, - dns_messageid_t, unsigned int); + dns_messageid_t, in_port_t, unsigned int); static isc_boolean_t destroy_disp_ok(dns_dispatch_t *); static void destroy_disp(isc_task_t *task, isc_event_t *event); static void udp_recv(isc_task_t *, isc_event_t *); static void tcp_recv(isc_task_t *, isc_event_t *); static void startrecv(dns_dispatch_t *); -static dns_messageid_t dns_randomid(dns_nsid_t *); -static isc_uint32_t dns_hash(dns_qid_t *, isc_sockaddr_t *, dns_messageid_t); +static isc_uint32_t dns_hash(dns_qid_t *, isc_sockaddr_t *, dns_messageid_t, + in_port_t); static void free_buffer(dns_dispatch_t *disp, void *buf, unsigned int len); static void *allocate_udp_buffer(dns_dispatch_t *disp); static inline void free_event(dns_dispatch_t *disp, dns_dispatchevent_t *ev); @@ -188,12 +192,8 @@ static isc_result_t dispatch_createudp(dns_dispatchmgr_t *mgr, static isc_boolean_t destroy_mgr_ok(dns_dispatchmgr_t *mgr); static void destroy_mgr(dns_dispatchmgr_t **mgrp); static isc_result_t qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets, - unsigned int increment, isc_boolean_t usepool, - dns_qid_t **qidp); + unsigned int increment, dns_qid_t **qidp); static void qid_destroy(isc_mem_t *mctx, dns_qid_t **qidp); -static isc_uint16_t nsid_next(dns_nsid_t *nsid); -static isc_result_t nsid_init(isc_mem_t *mctx, dns_nsid_t *nsid, isc_boolean_t usepool); -static void nsid_destroy(isc_mem_t *mctx, dns_nsid_t *nsid); #define LVL(x) ISC_LOG_DEBUG(x) @@ -274,26 +274,152 @@ request_log(dns_dispatch_t *disp, dns_dispentry_t *resp, } /* - * Return an unpredictable message ID. + * ARC4 random number generator obtained from OpenBSD */ -static dns_messageid_t -dns_randomid(dns_nsid_t *nsid) { - isc_uint32_t id; +static void +dispatch_arc4init(arc4ctx_t *actx) { + int n; + for (n = 0; n < 256; n++) + actx->s[n] = n; + actx->i = 0; + actx->j = 0; + actx->count = 0; +} + +static void +dispatch_arc4addrandom(arc4ctx_t *actx, unsigned char *dat, int datlen) { + int n; + isc_uint8_t si; + + actx->i--; + for (n = 0; n < 256; n++) { + actx->i = (actx->i + 1); + si = actx->s[actx->i]; + actx->j = (actx->j + si + dat[n % datlen]); + actx->s[actx->i] = actx->s[actx->j]; + actx->s[actx->j] = si; + } + actx->j = actx->i; +} + +static inline isc_uint8_t +dispatch_arc4get8(arc4ctx_t *actx) { + isc_uint8_t si, sj; + + actx->i = (actx->i + 1); + si = actx->s[actx->i]; + actx->j = (actx->j + si); + sj = actx->s[actx->j]; + actx->s[actx->i] = sj; + actx->s[actx->j] = si; + + return (actx->s[(si + sj) & 0xff]); +} + +static inline isc_uint16_t +dispatch_arc4get16(arc4ctx_t *actx) { + isc_uint16_t val; + + val = dispatch_arc4get8(actx) << 8; + val |= dispatch_arc4get8(actx); + + return (val); +} + +static void +dispatch_arc4stir(dns_dispatchmgr_t *mgr) { + int i; + union { + unsigned char rnd[128]; + isc_uint32_t rnd32[32]; + } rnd; + isc_result_t result; + + if (mgr->entropy != NULL) { + /* + * We accept any quality of random data to avoid blocking. + */ + result = isc_entropy_getdata(mgr->entropy, rnd.rnd, + sizeof(rnd), NULL, 0); + RUNTIME_CHECK(result == ISC_R_SUCCESS); + } else { + for (i = 0; i < 32; i++) + isc_random_get(&rnd.rnd32[i]); + } + dispatch_arc4addrandom(&mgr->arc4ctx, rnd.rnd, sizeof(rnd.rnd)); + + /* + * Discard early keystream, as per recommendations in: + * http://www.wisdom.weizmann.ac.il/~itsik/RC4/Papers/Rc4_ksa.ps + */ + for (i = 0; i < 256; i++) + (void)dispatch_arc4get8(&mgr->arc4ctx); + + /* + * Derived from OpenBSD's implementation. The rationale is not clear, + * but should be conservative enough in safety, and reasonably large + * for efficiency. + */ + mgr->arc4ctx.count = 1600000; +} + +static isc_uint16_t +dispatch_arc4random(dns_dispatchmgr_t *mgr) { + isc_uint16_t result; + + LOCK(&mgr->arc4_lock); + mgr->arc4ctx.count -= sizeof(isc_uint16_t); + if (mgr->arc4ctx.count <= 0) + dispatch_arc4stir(mgr); + result = dispatch_arc4get16(&mgr->arc4ctx); + UNLOCK(&mgr->arc4_lock); + return (result); +} + +static isc_uint16_t +dispatch_arc4uniformrandom(dns_dispatchmgr_t *mgr, isc_uint16_t upper_bound) { + isc_uint16_t min, r; + /* The caller must hold the manager lock. */ + + if (upper_bound < 2) + return (0); - id = nsid_next(nsid); + /* + * Ensure the range of random numbers [min, 0xffff] be a multiple of + * upper_bound and contain at least a half of the 16 bit range. + */ - return ((dns_messageid_t)id); + if (upper_bound > 0x8000) + min = 1 + ~upper_bound; /* 0x8000 - upper_bound */ + else + min = (isc_uint16_t)(0x10000 % (isc_uint32_t)upper_bound); + + /* + * This could theoretically loop forever but each retry has + * p > 0.5 (worst case, usually far better) of selecting a + * number inside the range we need, so it should rarely need + * to re-roll. + */ + for (;;) { + r = dispatch_arc4random(mgr); + if (r >= min) + break; + } + + return (r % upper_bound); } /* * Return a hash of the destination and message id. */ static isc_uint32_t -dns_hash(dns_qid_t *qid, isc_sockaddr_t *dest, dns_messageid_t id) { +dns_hash(dns_qid_t *qid, isc_sockaddr_t *dest, dns_messageid_t id, + in_port_t port) +{ unsigned int ret; ret = isc_sockaddr_hash(dest, ISC_TRUE); - ret ^= id; + ret ^= (id << 16) | port; ret %= qid->qid_nbuckets; INSIST(ret < qid->qid_nbuckets); @@ -410,7 +536,7 @@ destroy_disp(isc_task_t *task, isc_event_t *event) { */ static dns_dispentry_t * bucket_search(dns_qid_t *qid, isc_sockaddr_t *dest, dns_messageid_t id, - unsigned int bucket) + in_port_t port, unsigned int bucket) { dns_dispentry_t *res; @@ -419,8 +545,10 @@ bucket_search(dns_qid_t *qid, isc_sockaddr_t *dest, dns_messageid_t id, res = ISC_LIST_HEAD(qid->qid_table[bucket]); while (res != NULL) { - if ((res->id == id) && isc_sockaddr_equal(dest, &res->host)) + if ((res->id == id) && isc_sockaddr_equal(dest, &res->host) && + res->port == port) { return (res); + } res = ISC_LIST_NEXT(res, link); } @@ -622,13 +750,10 @@ udp_recv(isc_task_t *task, isc_event_t *ev_in) { goto restart; } - dns_dispatch_hash(&ev->timestamp, sizeof(&ev->timestamp)); - dns_dispatch_hash(ev->region.base, ev->region.length); - /* response */ - bucket = dns_hash(qid, &ev->address, id); + bucket = dns_hash(qid, &ev->address, id, disp->localport); LOCK(&qid->lock); - resp = bucket_search(qid, &ev->address, id, bucket); + resp = bucket_search(qid, &ev->address, id, disp->localport, bucket); dispatch_log(disp, LVL(90), "search for response in bucket %d: %s", bucket, (resp == NULL ? "not found" : "found")); @@ -859,14 +984,13 @@ tcp_recv(isc_task_t *task, isc_event_t *ev_in) { goto restart; } - dns_dispatch_hash(tcpmsg->buffer.base, tcpmsg->buffer.length); - /* * Response. */ - bucket = dns_hash(qid, &tcpmsg->address, id); + bucket = dns_hash(qid, &tcpmsg->address, id, disp->localport); LOCK(&qid->lock); - resp = bucket_search(qid, &tcpmsg->address, id, bucket); + resp = bucket_search(qid, &tcpmsg->address, id, disp->localport, + bucket); dispatch_log(disp, LVL(90), "search for response in bucket %d: %s", bucket, (resp == NULL ? "not found" : "found")); @@ -1015,6 +1139,8 @@ destroy_mgr(dns_dispatchmgr_t **mgrp) { DESTROYLOCK(&mgr->lock); mgr->state = 0; + DESTROYLOCK(&mgr->arc4_lock); + isc_mempool_destroy(&mgr->epool); isc_mempool_destroy(&mgr->rpool); isc_mempool_destroy(&mgr->dpool); @@ -1093,10 +1219,14 @@ dns_dispatchmgr_create(isc_mem_t *mctx, isc_entropy_t *entropy, if (result != ISC_R_SUCCESS) goto deallocate; - result = isc_mutex_init(&mgr->buffer_lock); + result = isc_mutex_init(&mgr->arc4_lock); if (result != ISC_R_SUCCESS) goto kill_lock; + result = isc_mutex_init(&mgr->buffer_lock); + if (result != ISC_R_SUCCESS) + goto kill_arc4_lock; + result = isc_mutex_init(&mgr->pool_lock); if (result != ISC_R_SUCCESS) goto kill_buffer_lock; @@ -1147,6 +1277,8 @@ dns_dispatchmgr_create(isc_mem_t *mctx, isc_entropy_t *entropy, if (entropy != NULL) isc_entropy_attach(entropy, &mgr->entropy); + dispatch_arc4init(&mgr->arc4ctx); + *mgrp = mgr; return (ISC_R_SUCCESS); @@ -1158,6 +1290,8 @@ dns_dispatchmgr_create(isc_mem_t *mctx, isc_entropy_t *entropy, DESTROYLOCK(&mgr->pool_lock); kill_buffer_lock: DESTROYLOCK(&mgr->buffer_lock); + kill_arc4_lock: + DESTROYLOCK(&mgr->arc4_lock); kill_lock: DESTROYLOCK(&mgr->lock); deallocate: @@ -1245,7 +1379,7 @@ dns_dispatchmgr_setudp(dns_dispatchmgr_t *mgr, isc_mempool_setmaxalloc(mgr->bpool, maxbuffers); isc_mempool_associatelock(mgr->bpool, &mgr->pool_lock); - result = qid_allocate(mgr, buckets, increment, ISC_TRUE, &mgr->qid); + result = qid_allocate(mgr, buckets, increment, &mgr->qid); if (result != ISC_R_SUCCESS) goto cleanup; @@ -1284,20 +1418,27 @@ dns_dispatchmgr_destroy(dns_dispatchmgr_t **mgrp) { } static isc_boolean_t -blacklisted(dns_dispatchmgr_t *mgr, isc_socket_t *sock) { +blacklisted(dns_dispatchmgr_t *mgr, isc_socket_t *sock, + isc_sockaddr_t *sockaddrp) +{ isc_sockaddr_t sockaddr; isc_result_t result; + REQUIRE(sock != NULL || sockaddrp != NULL); + if (mgr->portlist == NULL) return (ISC_FALSE); - result = isc_socket_getsockname(sock, &sockaddr); - if (result != ISC_R_SUCCESS) - return (ISC_FALSE); + if (sock != NULL) { + sockaddrp = &sockaddr; + result = isc_socket_getsockname(sock, sockaddrp); + if (result != ISC_R_SUCCESS) + return (ISC_FALSE); + } if (mgr->portlist != NULL && - dns_portlist_match(mgr->portlist, isc_sockaddr_pf(&sockaddr), - isc_sockaddr_getport(&sockaddr))) + dns_portlist_match(mgr->portlist, isc_sockaddr_pf(sockaddrp), + isc_sockaddr_getport(sockaddrp))) return (ISC_TRUE); return (ISC_FALSE); } @@ -1318,7 +1459,7 @@ local_addr_match(dns_dispatch_t *disp, isc_sockaddr_t *addr) { if (disp->mgr->portlist != NULL && isc_sockaddr_getport(addr) == 0 && isc_sockaddr_getport(&disp->local) == 0 && - blacklisted(disp->mgr, disp->socket)) + blacklisted(disp->mgr, disp->socket, NULL)) return (ISC_FALSE); /* @@ -1391,7 +1532,7 @@ dispatch_find(dns_dispatchmgr_t *mgr, isc_sockaddr_t *local, static isc_result_t qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets, - unsigned int increment, isc_boolean_t usepool, dns_qid_t **qidp) + unsigned int increment, dns_qid_t **qidp) { dns_qid_t *qid; unsigned int i; @@ -1412,16 +1553,8 @@ qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets, return (ISC_R_NOMEMORY); } - if (nsid_init(mgr->mctx, &qid->nsid, usepool) != ISC_R_SUCCESS) { - isc_mem_put(mgr->mctx, qid->qid_table, - buckets * sizeof(dns_displist_t)); - isc_mem_put(mgr->mctx, qid, sizeof(*qid)); - return (ISC_R_NOMEMORY); - } - if (isc_mutex_init(&qid->lock) != ISC_R_SUCCESS) { UNEXPECTED_ERROR(__FILE__, __LINE__, "isc_mutex_init failed"); - nsid_destroy(mgr->mctx, &qid->nsid); isc_mem_put(mgr->mctx, qid->qid_table, buckets * sizeof(dns_displist_t)); isc_mem_put(mgr->mctx, qid, sizeof(*qid)); @@ -1449,7 +1582,6 @@ qid_destroy(isc_mem_t *mctx, dns_qid_t **qidp) { *qidp = NULL; qid->magic = 0; - nsid_destroy(mctx, &qid->nsid); isc_mem_put(mctx, qid->qid_table, qid->qid_nbuckets * sizeof(dns_displist_t)); DESTROYLOCK(&qid->lock); @@ -1486,6 +1618,7 @@ dispatch_allocate(dns_dispatchmgr_t *mgr, unsigned int maxrequests, disp->refcount = 1; disp->recv_pending = 0; memset(&disp->local, 0, sizeof(disp->local)); + disp->localport = 0; disp->shutting_down = 0; disp->shutdown_out = 0; disp->connected = 0; @@ -1593,7 +1726,7 @@ dns_dispatch_createtcp(dns_dispatchmgr_t *mgr, isc_socket_t *sock, return (result); } - result = qid_allocate(mgr, buckets, increment, ISC_FALSE, &disp->qid); + result = qid_allocate(mgr, buckets, increment, &disp->qid); if (result != ISC_R_SUCCESS) goto deallocate_dispatch; @@ -1660,7 +1793,7 @@ dns_dispatch_getudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr, dns_dispatch_t **dispp) { isc_result_t result; - dns_dispatch_t *disp; + dns_dispatch_t *disp = NULL; REQUIRE(VALID_DISPATCHMGR(mgr)); REQUIRE(sockmgr != NULL); @@ -1680,6 +1813,11 @@ dns_dispatch_getudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr, LOCK(&mgr->lock); + if ((attributes & DNS_DISPATCHATTR_RANDOMPORT) != 0) { + REQUIRE(isc_sockaddr_getport(localaddr) == 0); + goto createudp; + } + /* * First, see if we have a dispatcher that matches. */ @@ -1708,6 +1846,7 @@ dns_dispatch_getudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr, return (ISC_R_SUCCESS); } + createudp: /* * Nope, create one. */ @@ -1743,7 +1882,9 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr, dns_dispatch_t *disp; isc_socket_t *sock = NULL; isc_socket_t *held[DNS_DISPATCH_HELD]; - unsigned int i = 0, j = 0; + unsigned int i = 0, j = 0, k = 0; + isc_sockaddr_t localaddr_bound; + in_port_t localport = 0; /* * dispatch_allocate() checks mgr for us. @@ -1759,11 +1900,34 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr, * from returning the same port to us too quickly. */ memset(held, 0, sizeof(held)); + localaddr_bound = *localaddr; getsocket: - result = create_socket(sockmgr, localaddr, &sock); + if ((attributes & DNS_DISPATCHATTR_RANDOMPORT) != 0) { + in_port_t prt; + + /* XXX: should the range be configurable? */ + prt = 1024 + dispatch_arc4uniformrandom(mgr, 65535 - 1023); + isc_sockaddr_setport(&localaddr_bound, prt); + if (blacklisted(mgr, NULL, &localaddr_bound)) { + if (++k == 1024) + attributes &= ~DNS_DISPATCHATTR_RANDOMPORT; + goto getsocket; + } + result = create_socket(sockmgr, &localaddr_bound, &sock); + if (result == ISC_R_ADDRINUSE) { + if (++k == 1024) + attributes &= ~DNS_DISPATCHATTR_RANDOMPORT; + goto getsocket; + } + localport = prt; + } else + result = create_socket(sockmgr, localaddr, &sock); if (result != ISC_R_SUCCESS) goto deallocate_dispatch; - if (isc_sockaddr_getport(localaddr) == 0 && blacklisted(mgr, sock)) { + if ((attributes & DNS_DISPATCHATTR_RANDOMPORT) == 0 && + isc_sockaddr_getport(localaddr) == 0 && + blacklisted(mgr, sock, NULL)) + { if (held[i] != NULL) isc_socket_detach(&held[i]); held[i++] = sock; @@ -1784,6 +1948,7 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr, disp->socktype = isc_sockettype_udp; disp->socket = sock; disp->local = *localaddr; + disp->localport = localport; disp->task = NULL; result = isc_task_create(taskmgr, 0, &disp->task); @@ -1916,19 +2081,20 @@ dns_dispatch_addresponse(dns_dispatch_t *disp, isc_sockaddr_t *dest, /* * Try somewhat hard to find an unique ID. */ + id = (dns_messageid_t)dispatch_arc4random(disp->mgr); qid = DNS_QID(disp); LOCK(&qid->lock); - id = dns_randomid(&qid->nsid); - bucket = dns_hash(qid, dest, id); + bucket = dns_hash(qid, dest, id, disp->localport); ok = ISC_FALSE; for (i = 0; i < 64; i++) { - if (bucket_search(qid, dest, id, bucket) == NULL) { + if (bucket_search(qid, dest, id, disp->localport, bucket) == + NULL) { ok = ISC_TRUE; break; } id += qid->qid_increment; id &= 0x0000ffff; - bucket = dns_hash(qid, dest, id); + bucket = dns_hash(qid, dest, id, disp->localport); } if (!ok) { @@ -1950,6 +2116,7 @@ dns_dispatch_addresponse(dns_dispatch_t *disp, isc_sockaddr_t *dest, isc_task_attach(task, &res->task); res->disp = disp; res->id = id; + res->port = disp->localport; res->bucket = bucket; res->host = *dest; res->action = action; @@ -2261,409 +2428,3 @@ dns_dispatchmgr_dump(dns_dispatchmgr_t *mgr) { } } #endif - -/* - * Allow the user to pick one of two ID randomization algorithms. - * - * The first algorithm is an adaptation of the sequence shuffling - * algorithm discovered by Carter Bays and S. D. Durham [ACM Trans. Math. - * Software 2 (1976), 59-64], as documented as Algorithm B in Chapter - * 3.2.2 in Volume 2 of Knuth's "The Art of Computer Programming". We use - * a randomly selected linear congruential random number generator with a - * modulus of 2^16, whose increment is a randomly picked odd number, and - * whose multiplier is picked from a set which meets the following - * criteria: - * Is of the form 8*n+5, which ensures "high potency" according to - * principle iii in the summary chapter 3.6. This form also has a - * gcd(a-1,m) of 4 which is good according to principle iv. - * - * Is between 0.01 and 0.99 times the modulus as specified by - * principle iv. - * - * Passes the spectral test "with flying colors" (ut >= 1) in - * dimensions 2 through 6 as calculated by Algorithm S in Chapter - * 3.3.4 and the ratings calculated by formula 35 in section E. - * - * Of the multipliers that pass this test, pick the set that is - * best according to the theoretical bounds of the serial - * correlation test. This was calculated using a simplified - * version of Knuth's Theorem K in Chapter 3.3.3. - * - * These criteria may not be important for this use, but we might as well - * pick from the best generators since there are so many possible ones and - * we don't have that many random bits to do the picking. - * - * We use a modulus of 2^16 instead of something bigger so that we will - * tend to cycle through all the possible IDs before repeating any, - * however the shuffling will perturb this somewhat. Theoretically there - * is no minimimum interval between two uses of the same ID, but in - * practice it seems to be >64000. - * - * Our adaptatation of Algorithm B mixes the hash state which has - * captured various random events into the shuffler to perturb the - * sequence. - * - * One disadvantage of this algorithm is that if the generator parameters - * were to be guessed, it would be possible to mount a limited brute force - * attack on the ID space since the IDs are only shuffled within a limited - * range. - * - * The second algorithm uses the same random number generator to populate - * a pool of 65536 IDs. The hash state is used to pick an ID from a window - * of 4096 IDs in this pool, then the chosen ID is swapped with the ID - * at the beginning of the window and the window position is advanced. - * This means that the interval between uses of the ID will be no less - * than 65536-4096. The ID sequence in the pool will become more random - * over time. - * - * For both algorithms, two more linear congruential random number generators - * are selected. The ID from the first part of algorithm is used to seed - * the first of these generators, and its output is used to seed the second. - * The strategy is use these generators as 1 to 1 hashes to obfuscate the - * properties of the generator used in the first part of either algorithm. - * - * The first algorithm may be suitable for use in a client resolver since - * its memory requirements are fairly low and it's pretty random out of - * the box. It is somewhat succeptible to a limited brute force attack, - * so the second algorithm is probably preferable for a longer running - * program that issues a large number of queries and has time to randomize - * the pool. - */ - -#define NSID_SHUFFLE_TABLE_SIZE 100 /* Suggested by Knuth */ -/* - * Pick one of the next 4096 IDs in the pool. - * There is a tradeoff here between randomness and how often and ID is reused. - */ -#define NSID_LOOKAHEAD 4096 /* Must be a power of 2 */ -#define NSID_SHUFFLE_ONLY 1 /* algorithm 1 */ -#define NSID_USE_POOL 2 /* algorithm 2 */ -#define NSID_HASHSHIFT 3 -#define NSID_HASHROTATE(v) \ - (((v) << NSID_HASHSHIFT) | ((v) >> ((sizeof(v) * 8) - NSID_HASHSHIFT))) - -static isc_uint32_t nsid_hash_state; - -/* - * Keep a running hash of various bits of data that we'll use to - * stir the ID pool or perturb the ID generator - */ -static void -nsid_hash(void *data, size_t len) { - unsigned char *p = data; - /* - * Hash function similar to the one we use for hashing names. - * We don't fold case or toss the upper bit here, though. - * This hash doesn't do much interesting when fed binary zeros, - * so there may be a better hash function. - * This function doesn't need to be very strong since we're - * only using it to stir the pool, but it should be reasonably - * fast. - */ - /* - * We don't care about locking access to nsid_hash_state. - * In fact races make the result even more non deteministic. - */ - while (len-- > 0U) { - nsid_hash_state = NSID_HASHROTATE(nsid_hash_state); - nsid_hash_state += *p++; - } -} - -/* - * Table of good linear congruential multipliers for modulus 2^16 - * in order of increasing serial correlation bounds (so trim from - * the end). - */ -static const isc_uint16_t nsid_multiplier_table[] = { - 17565, 25013, 11733, 19877, 23989, 23997, 24997, 25421, - 26781, 27413, 35901, 35917, 35973, 36229, 38317, 38437, - 39941, 40493, 41853, 46317, 50581, 51429, 53453, 53805, - 11317, 11789, 12045, 12413, 14277, 14821, 14917, 18989, - 19821, 23005, 23533, 23573, 23693, 27549, 27709, 28461, - 29365, 35605, 37693, 37757, 38309, 41285, 45261, 47061, - 47269, 48133, 48597, 50277, 50717, 50757, 50805, 51341, - 51413, 51581, 51597, 53445, 11493, 14229, 20365, 20653, - 23485, 25541, 27429, 29421, 30173, 35445, 35653, 36789, - 36797, 37109, 37157, 37669, 38661, 39773, 40397, 41837, - 41877, 45293, 47277, 47845, 49853, 51085, 51349, 54085, - 56933, 8877, 8973, 9885, 11365, 11813, 13581, 13589, - 13613, 14109, 14317, 15765, 15789, 16925, 17069, 17205, - 17621, 17941, 19077, 19381, 20245, 22845, 23733, 24869, - 25453, 27213, 28381, 28965, 29245, 29997, 30733, 30901, - 34877, 35485, 35613, 36133, 36661, 36917, 38597, 40285, - 40693, 41413, 41541, 41637, 42053, 42349, 45245, 45469, - 46493, 48205, 48613, 50861, 51861, 52877, 53933, 54397, - 55669, 56453, 56965, 58021, 7757, 7781, 8333, 9661, - 12229, 14373, 14453, 17549, 18141, 19085, 20773, 23701, - 24205, 24333, 25261, 25317, 27181, 30117, 30477, 34757, - 34885, 35565, 35885, 36541, 37957, 39733, 39813, 41157, - 41893, 42317, 46621, 48117, 48181, 49525, 55261, 55389, - 56845, 7045, 7749, 7965, 8469, 9133, 9549, 9789, - 10173, 11181, 11285, 12253, 13453, 13533, 13757, 14477, - 15053, 16901, 17213, 17269, 17525, 17629, 18605, 19013, - 19829, 19933, 20069, 20093, 23261, 23333, 24949, 25309, - 27613, 28453, 28709, 29301, 29541, 34165, 34413, 37301, - 37773, 38045, 38405, 41077, 41781, 41925, 42717, 44437, - 44525, 44613, 45933, 45941, 47077, 50077, 50893, 52117, - 5293, 55069, 55989, 58125, 59205, 6869, 14685, 15453, - 16821, 17045, 17613, 18437, 21029, 22773, 22909, 25445, - 25757, 26541, 30709, 30909, 31093, 31149, 37069, 37725, - 37925, 38949, 39637, 39701, 40765, 40861, 42965, 44813, - 45077, 45733, 47045, 50093, 52861, 52957, 54181, 56325, - 56365, 56381, 56877, 57013, 5741, 58101, 58669, 8613, - 10045, 10261, 10653, 10733, 11461, 12261, 14069, 15877, - 17757, 21165, 23885, 24701, 26429, 26645, 27925, 28765, - 29197, 30189, 31293, 39781, 39909, 40365, 41229, 41453, - 41653, 42165, 42365, 47421, 48029, 48085, 52773, 5573, - 57037, 57637, 58341, 58357, 58901, 6357, 7789, 9093, - 10125, 10709, 10765, 11957, 12469, 13437, 13509, 14773, - 15437, 15773, 17813, 18829, 19565, 20237, 23461, 23685, - 23725, 23941, 24877, 25461, 26405, 29509, 30285, 35181, - 37229, 37893, 38565, 40293, 44189, 44581, 45701, 47381, - 47589, 48557, 4941, 51069, 5165, 52797, 53149, 5341, - 56301, 56765, 58581, 59493, 59677, 6085, 6349, 8293, - 8501, 8517, 11597, 11709, 12589, 12693, 13517, 14909, - 17397, 18085, 21101, 21269, 22717, 25237, 25661, 29189, - 30101, 31397, 33933, 34213, 34661, 35533, 36493, 37309, - 40037, 4189, 42909, 44309, 44357, 44389, 4541, 45461, - 46445, 48237, 54149, 55301, 55853, 56621, 56717, 56901, - 5813, 58437, 12493, 15365, 15989, 17829, 18229, 19341, - 21013, 21357, 22925, 24885, 26053, 27581, 28221, 28485, - 30605, 30613, 30789, 35437, 36285, 37189, 3941, 41797, - 4269, 42901, 43293, 44645, 45221, 46893, 4893, 50301, - 50325, 5189, 52109, 53517, 54053, 54485, 5525, 55949, - 56973, 59069, 59421, 60733, 61253, 6421, 6701, 6709, - 7101, 8669, 15797, 19221, 19837, 20133, 20957, 21293, - 21461, 22461, 29085, 29861, 30869, 34973, 36469, 37565, - 38125, 38829, 39469, 40061, 40117, 44093, 47429, 48341, - 50597, 51757, 5541, 57629, 58405, 59621, 59693, 59701, - 61837, 7061, 10421, 11949, 15405, 20861, 25397, 25509, - 25893, 26037, 28629, 28869, 29605, 30213, 34205, 35637, - 36365, 37285, 3773, 39117, 4021, 41061, 42653, 44509, - 4461, 44829, 4725, 5125, 52269, 56469, 59085, 5917, - 60973, 8349, 17725, 18637, 19773, 20293, 21453, 22533, - 24285, 26333, 26997, 31501, 34541, 34805, 37509, 38477, - 41333, 44125, 46285, 46997, 47637, 48173, 4925, 50253, - 50381, 50917, 51205, 51325, 52165, 52229, 5253, 5269, - 53509, 56253, 56341, 5821, 58373, 60301, 61653, 61973, - 62373, 8397, 11981, 14341, 14509, 15077, 22261, 22429, - 24261, 28165, 28685, 30661, 34021, 34445, 39149, 3917, - 43013, 43317, 44053, 44101, 4533, 49541, 49981, 5277, - 54477, 56357, 57261, 57765, 58573, 59061, 60197, 61197, - 62189, 7725, 8477, 9565, 10229, 11437, 14613, 14709, - 16813, 20029, 20677, 31445, 3165, 31957, 3229, 33541, - 36645, 3805, 38973, 3965, 4029, 44293, 44557, 46245, - 48917, 4909, 51749, 53709, 55733, 56445, 5925, 6093, - 61053, 62637, 8661, 9109, 10821, 11389, 13813, 14325, - 15501, 16149, 18845, 22669, 26437, 29869, 31837, 33709, - 33973, 34173, 3677, 3877, 3981, 39885, 42117, 4421, - 44221, 44245, 44693, 46157, 47309, 5005, 51461, 52037, - 55333, 55693, 56277, 58949, 6205, 62141, 62469, 6293, - 10101, 12509, 14029, 17997, 20469, 21149, 25221, 27109, - 2773, 2877, 29405, 31493, 31645, 4077, 42005, 42077, - 42469, 42501, 44013, 48653, 49349, 4997, 50101, 55405, - 56957, 58037, 59429, 60749, 61797, 62381, 62837, 6605, - 10541, 23981, 24533, 2701, 27333, 27341, 31197, 33805, - 3621, 37381, 3749, 3829, 38533, 42613, 44381, 45901, - 48517, 51269, 57725, 59461, 60045, 62029, 13805, 14013, - 15461, 16069, 16157, 18573, 2309, 23501, 28645, 3077, - 31541, 36357, 36877, 3789, 39429, 39805, 47685, 47949, - 49413, 5485, 56757, 57549, 57805, 58317, 59549, 62213, - 62613, 62853, 62933, 8909, 12941, 16677, 20333, 21541, - 24429, 26077, 26421, 2885, 31269, 33381, 3661, 40925, - 42925, 45173, 4525, 4709, 53133, 55941, 57413, 57797, - 62125, 62237, 62733, 6773, 12317, 13197, 16533, 16933, - 18245, 2213, 2477, 29757, 33293, 35517, 40133, 40749, - 4661, 49941, 62757, 7853, 8149, 8573, 11029, 13421, - 21549, 22709, 22725, 24629, 2469, 26125, 2669, 34253, - 36709, 41013, 45597, 46637, 52285, 52333, 54685, 59013, - 60997, 61189, 61981, 62605, 62821, 7077, 7525, 8781, - 10861, 15277, 2205, 22077, 28517, 28949, 32109, 33493, - 4661, 49941, 62757, 7853, 8149, 8573, 11029, 13421, - 21549, 22709, 22725, 24629, 2469, 26125, 2669, 34253, - 36709, 41013, 45597, 46637, 52285, 52333, 54685, 59013, - 60997, 61189, 61981, 62605, 62821, 7077, 7525, 8781, - 10861, 15277, 2205, 22077, 28517, 28949, 32109, 33493, - 3685, 39197, 39869, 42621, 44997, 48565, 5221, 57381, - 61749, 62317, 63245, 63381, 23149, 2549, 28661, 31653, - 33885, 36341, 37053, 39517, 42805, 45853, 48997, 59349, - 60053, 62509, 63069, 6525, 1893, 20181, 2365, 24893, - 27397, 31357, 32277, 33357, 34437, 36677, 37661, 43469, - 43917, 50997, 53869, 5653, 13221, 16741, 17893, 2157, - 28653, 31789, 35301, 35821, 61613, 62245, 12405, 14517, - 17453, 18421, 3149, 3205, 40341, 4109, 43941, 46869, - 48837, 50621, 57405, 60509, 62877, 8157, 12933, 12957, - 16501, 19533, 3461, 36829, 52357, 58189, 58293, 63053, - 17109, 1933, 32157, 37701, 59005, 61621, 13029, 15085, - 16493, 32317, 35093, 5061, 51557, 62221, 20765, 24613, - 2629, 30861, 33197, 33749, 35365, 37933, 40317, 48045, - 56229, 61157, 63797, 7917, 17965, 1917, 1973, 20301, - 2253, 33157, 58629, 59861, 61085, 63909, 8141, 9221, - 14757, 1581, 21637, 26557, 33869, 34285, 35733, 40933, - 42517, 43501, 53653, 61885, 63805, 7141, 21653, 54973, - 31189, 60061, 60341, 63357, 16045, 2053, 26069, 33997, - 43901, 54565, 63837, 8949, 17909, 18693, 32349, 33125, - 37293, 48821, 49053, 51309, 64037, 7117, 1445, 20405, - 23085, 26269, 26293, 27349, 32381, 33141, 34525, 36461, - 37581, 43525, 4357, 43877, 5069, 55197, 63965, 9845, - 12093, 2197, 2229, 32165, 33469, 40981, 42397, 8749, - 10853, 1453, 18069, 21693, 30573, 36261, 37421, 42533 -}; - -#define NSID_MULT_TABLE_SIZE \ - ((sizeof nsid_multiplier_table)/(sizeof nsid_multiplier_table[0])) -#define NSID_RANGE_MASK (NSID_LOOKAHEAD - 1) -#define NSID_POOL_MASK 0xFFFF /* used to wrap the pool index */ -#define NSID_SHUFFLE_ONLY 1 -#define NSID_USE_POOL 2 - -static isc_uint16_t -nsid_next(dns_nsid_t *nsid) { - isc_uint16_t id, compressed_hash; - isc_uint16_t j; - - compressed_hash = ((nsid_hash_state >> 16) ^ - (nsid_hash_state)) & 0xFFFF; - - if (nsid->nsid_usepool) { - isc_uint16_t pick; - - pick = compressed_hash & NSID_RANGE_MASK; - pick = (nsid->nsid_state + pick) & NSID_POOL_MASK; - id = nsid->nsid_pool[pick]; - if (pick != 0) { - /* Swap two IDs to stir the pool */ - nsid->nsid_pool[pick] = - nsid->nsid_pool[nsid->nsid_state]; - nsid->nsid_pool[nsid->nsid_state] = id; - } - - /* increment the base pointer into the pool */ - if (nsid->nsid_state == 65535) - nsid->nsid_state = 0; - else - nsid->nsid_state++; - } else { - /* - * This is the original Algorithm B - * j = ((u_long) NSID_SHUFFLE_TABLE_SIZE * nsid_state2) >> 16; - * - * We'll perturb it with some random stuff ... - */ - j = ((isc_uint32_t) NSID_SHUFFLE_TABLE_SIZE * - (nsid->nsid_state2 ^ compressed_hash)) >> 16; - nsid->nsid_state2 = id = nsid->nsid_vtable[j]; - nsid->nsid_state = (((isc_uint32_t) nsid->nsid_a1 * nsid->nsid_state) + - nsid->nsid_c1) & 0xFFFF; - nsid->nsid_vtable[j] = nsid->nsid_state; - } - - /* Now lets obfuscate ... */ - id = (((isc_uint32_t) nsid->nsid_a2 * id) + nsid->nsid_c2) & 0xFFFF; - id = (((isc_uint32_t) nsid->nsid_a3 * id) + nsid->nsid_c3) & 0xFFFF; - - return (id); -} - -static isc_result_t -nsid_init(isc_mem_t *mctx, dns_nsid_t *nsid, isc_boolean_t usepool) { - isc_time_t now; - pid_t mypid; - isc_uint16_t a1ndx, a2ndx, a3ndx, c1ndx, c2ndx, c3ndx; - int i; - - isc_time_now(&now); - mypid = getpid(); - - /* Initialize the state */ - memset(nsid, 0, sizeof(*nsid)); - nsid_hash(&now, sizeof now); - nsid_hash(&mypid, sizeof mypid); - - /* - * Select our random number generators and initial seed. - * We could really use more random bits at this point, - * but we'll try to make a silk purse out of a sows ear ... - */ - /* generator 1 */ - a1ndx = ((isc_uint32_t) NSID_MULT_TABLE_SIZE * - (nsid_hash_state & 0xFFFF)) >> 16; - nsid->nsid_a1 = nsid_multiplier_table[a1ndx]; - c1ndx = (nsid_hash_state >> 9) & 0x7FFF; - nsid->nsid_c1 = 2 * c1ndx + 1; - - /* generator 2, distinct from 1 */ - a2ndx = ((isc_uint32_t) (NSID_MULT_TABLE_SIZE - 1) * - ((nsid_hash_state >> 10) & 0xFFFF)) >> 16; - if (a2ndx >= a1ndx) - a2ndx++; - nsid->nsid_a2 = nsid_multiplier_table[a2ndx]; - c2ndx = nsid_hash_state % 32767; - if (c2ndx >= c1ndx) - c2ndx++; - nsid->nsid_c2 = 2*c2ndx + 1; - - /* generator 3, distinct from 1 and 2 */ - a3ndx = ((isc_uint32_t) (NSID_MULT_TABLE_SIZE - 2) * - ((nsid_hash_state >> 20) & 0xFFFF)) >> 16; - if (a3ndx >= a1ndx || a3ndx >= a2ndx) - a3ndx++; - if (a3ndx >= a1ndx && a3ndx >= a2ndx) - a3ndx++; - nsid->nsid_a3 = nsid_multiplier_table[a3ndx]; - c3ndx = nsid_hash_state % 32766; - if (c3ndx >= c1ndx || c3ndx >= c2ndx) - c3ndx++; - if (c3ndx >= c1ndx && c3ndx >= c2ndx) - c3ndx++; - nsid->nsid_c3 = 2*c3ndx + 1; - - nsid->nsid_state = - ((nsid_hash_state >> 16) ^ (nsid_hash_state)) & 0xFFFF; - - nsid->nsid_usepool = usepool; - if (nsid->nsid_usepool) { - nsid->nsid_pool = isc_mem_get(mctx, 0x10000 * sizeof(isc_uint16_t)); - if (nsid->nsid_pool == NULL) - return (ISC_R_NOMEMORY); - for (i = 0; ; i++) { - nsid->nsid_pool[i] = nsid->nsid_state; - nsid->nsid_state = - (((u_long) nsid->nsid_a1 * nsid->nsid_state) + - nsid->nsid_c1) & 0xFFFF; - if (i == 0xFFFF) - break; - } - } else { - nsid->nsid_vtable = isc_mem_get(mctx, NSID_SHUFFLE_TABLE_SIZE * - (sizeof(isc_uint16_t)) ); - if (nsid->nsid_vtable == NULL) - return (ISC_R_NOMEMORY); - - for (i = 0; i < NSID_SHUFFLE_TABLE_SIZE; i++) { - nsid->nsid_vtable[i] = nsid->nsid_state; - nsid->nsid_state = - (((isc_uint32_t) nsid->nsid_a1 * nsid->nsid_state) + - nsid->nsid_c1) & 0xFFFF; - } - nsid->nsid_state2 = nsid->nsid_state; - } - return (ISC_R_SUCCESS); -} - -static void -nsid_destroy(isc_mem_t *mctx, dns_nsid_t *nsid) { - if (nsid->nsid_usepool) - isc_mem_put(mctx, nsid->nsid_pool, - 0x10000 * sizeof(isc_uint16_t)); - else - isc_mem_put(mctx, nsid->nsid_vtable, - NSID_SHUFFLE_TABLE_SIZE * (sizeof(isc_uint16_t)) ); - memset(nsid, 0, sizeof(*nsid)); -} - -void -dns_dispatch_hash(void *data, size_t len) { - nsid_hash(data, len); -} diff --git a/lib/dns/include/dns/dispatch.h b/lib/dns/include/dns/dispatch.h index 29dd7f806385..806ab880f3cc 100644 --- a/lib/dns/include/dns/dispatch.h +++ b/lib/dns/include/dns/dispatch.h @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dispatch.h,v 1.45.2.2.4.5 2007/08/28 07:19:14 tbox Exp $ */ +/* $Id: dispatch.h,v 1.45.2.2.4.5.4.1 2008/05/22 21:11:16 each Exp $ */ #ifndef DNS_DISPATCH_H #define DNS_DISPATCH_H 1 @@ -112,6 +112,9 @@ struct dns_dispatchevent { * _MAKEQUERY * The dispatcher can be used to issue queries to other servers, and * accept replies from them. + * + * _RANDOMPORT + * Allocate UDP port randomly. */ #define DNS_DISPATCHATTR_PRIVATE 0x00000001U #define DNS_DISPATCHATTR_TCP 0x00000002U @@ -121,6 +124,7 @@ struct dns_dispatchevent { #define DNS_DISPATCHATTR_NOLISTEN 0x00000020U #define DNS_DISPATCHATTR_MAKEQUERY 0x00000040U #define DNS_DISPATCHATTR_CONNECTED 0x00000080U +#define DNS_DISPATCHATTR_RANDOMPORT 0x00000100U isc_result_t dns_dispatchmgr_create(isc_mem_t *mctx, isc_entropy_t *entropy, @@ -437,13 +441,6 @@ dns_dispatch_importrecv(dns_dispatch_t *disp, isc_event_t *event); * event != NULL */ -void -dns_dispatch_hash(void *data, size_t len); -/*%< - * Feed 'data' to the dispatch query id generator where 'len' is the size - * of 'data'. - */ - ISC_LANG_ENDDECLS #endif /* DNS_DISPATCH_H */ diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 16d22e08b332..93f10f5dd3e3 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: resolver.c,v 1.218.2.18.4.77 2008/01/17 23:45:27 tbox Exp $ */ +/* $Id: resolver.c,v 1.218.2.18.4.77.2.1 2008/05/22 21:11:15 each Exp $ */ #include <config.h> @@ -1070,17 +1070,50 @@ fctx_query(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo, * A dispatch will be created once the connect succeeds. */ } else { + isc_sockaddr_t localaddr; + unsigned int attrs, attrmask; + dns_dispatch_t *disp_base; + + attrs = 0; + attrs |= DNS_DISPATCHATTR_UDP; + attrs |= DNS_DISPATCHATTR_RANDOMPORT; + + attrmask = 0; + attrmask |= DNS_DISPATCHATTR_UDP; + attrmask |= DNS_DISPATCHATTR_TCP; + attrmask |= DNS_DISPATCHATTR_IPV4; + attrmask |= DNS_DISPATCHATTR_IPV6; + switch (isc_sockaddr_pf(&addrinfo->sockaddr)) { - case PF_INET: - dns_dispatch_attach(res->dispatchv4, &query->dispatch); + case AF_INET: + disp_base = res->dispatchv4; + attrs |= DNS_DISPATCHATTR_IPV4; break; - case PF_INET6: - dns_dispatch_attach(res->dispatchv6, &query->dispatch); + case AF_INET6: + disp_base = res->dispatchv6; + attrs |= DNS_DISPATCHATTR_IPV6; break; default: result = ISC_R_NOTIMPLEMENTED; goto cleanup_query; } + + result = dns_dispatch_getlocaladdress(disp_base, &localaddr); + if (result != ISC_R_SUCCESS) + goto cleanup_query; + if (isc_sockaddr_getport(&localaddr) == 0) { + result = dns_dispatch_getudp(res->dispatchmgr, + res->socketmgr, + res->taskmgr, + &localaddr, + 4096, 1000, 32768, + 16411, 16433, + attrs, attrmask, + &query->dispatch); + if (result != ISC_R_SUCCESS) + goto cleanup_query; + } else + dns_dispatch_attach(disp_base, &query->dispatch); /* * We should always have a valid dispatcher here. If we * don't support a protocol family, then its dispatcher @@ -1,4 +1,4 @@ -# $Id: version,v 1.26.2.17.2.31 2008/04/03 00:22:17 each Exp $ +# $Id: version,v 1.26.2.17.2.31.4.1 2008/05/22 21:11:13 each Exp $ # # This file must follow /bin/sh rules. It is imported directly via # configure. @@ -6,5 +6,5 @@ MAJORVER=9 MINORVER=3 PATCHVER=5 -RELEASETYPE= -RELEASEVER= +RELEASETYPE=-P +RELEASEVER=1 |
