[Pkg-samba-maint] r3157 - in branches/samba/experimental: . client docs docs/htmldocs/manpages docs/manpages docs-xml/manpages-3 docs-xml/smbdotconf/base docs-xml/smbdotconf/ldap docs-xml/smbdotconf/misc docs-xml/smbdotconf/tuning examples/VFS lib/tevent librpc/gen_ndr librpc/idl librpc/ndr nsswitch packaging/RHEL packaging/RHEL-CTDB pidl/lib/Parse/Pidl/Samba3 release-scripts source3 source3/auth source3/client source3/include source3/lib source3/lib/netapi source3/libads source3/libnet source3/librpc/gen_ndr source3/librpc/idl source3/libsmb source3/locking source3/m4 source3/modules source3/param source3/passdb source3/printing source3/registry source3/rpc_client source3/rpc_server source3/rpcclient source3/script source3/script/tests source3/smbd source3/torture source3/utils source3/web source3/winbindd source4/heimdal/lib/wind source4/ldap_server/devdocs source4/torture/nbench source4/torture/ndr source4/torture/rpc

bubulle at alioth.debian.org bubulle at alioth.debian.org
Wed Dec 16 21:44:08 UTC 2009


Author: bubulle
Date: 2009-12-16 21:43:48 +0000 (Wed, 16 Dec 2009)
New Revision: 3157

Added:
   branches/samba/experimental/docs-xml/smbdotconf/base/enablecorefiles.xml
   branches/samba/experimental/docs-xml/smbdotconf/ldap/ldapderef.xml
   branches/samba/experimental/docs-xml/smbdotconf/ldap/ldappagesize.xml
   branches/samba/experimental/docs-xml/smbdotconf/misc/cachedirectory.xml
   branches/samba/experimental/docs-xml/smbdotconf/misc/directorynamecachesize.xml
   branches/samba/experimental/docs-xml/smbdotconf/misc/statedirectory.xml
   branches/samba/experimental/docs-xml/smbdotconf/tuning/aiowritebehind.xml
   branches/samba/experimental/docs/manpages/manpages-3/
   branches/samba/experimental/source3/include/krb5_protos.h
   branches/samba/experimental/source3/include/smb_krb5.h
   branches/samba/experimental/source4/heimdal/lib/wind/rfc3454.txt
   branches/samba/experimental/source4/heimdal/lib/wind/rfc3490.txt
   branches/samba/experimental/source4/heimdal/lib/wind/rfc3491.txt
   branches/samba/experimental/source4/heimdal/lib/wind/rfc3492.txt
   branches/samba/experimental/source4/heimdal/lib/wind/rfc4013.txt
   branches/samba/experimental/source4/heimdal/lib/wind/rfc4518.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc2307.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc2696.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc2849.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc2891.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc3296.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4510.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4511.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4512.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4513.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4514.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4515.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4516.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4517.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4518.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4519.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4520.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4521.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4522.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4523.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4524.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4525.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4526.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4527.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4528.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4529.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4530.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4531.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4532.txt
   branches/samba/experimental/source4/ldap_server/devdocs/rfc4533.txt
   branches/samba/experimental/source4/torture/ndr/README
Removed:
   branches/samba/experimental/source3/include/rpc_client.h
Modified:
   branches/samba/experimental/WHATSNEW.txt
   branches/samba/experimental/client/cifs.upcall.c
   branches/samba/experimental/docs-xml/manpages-3/mount.cifs.8.xml
   branches/samba/experimental/docs-xml/smbdotconf/misc/dosfiletimes.xml
   branches/samba/experimental/docs-xml/smbdotconf/misc/fakedirectorycreatetimes.xml
   branches/samba/experimental/docs/Samba3-ByExample.pdf
   branches/samba/experimental/docs/Samba3-Developers-Guide.pdf
   branches/samba/experimental/docs/Samba3-HOWTO.pdf
   branches/samba/experimental/docs/htmldocs/manpages/mount.cifs.8.html
   branches/samba/experimental/examples/VFS/skel_opaque.c
   branches/samba/experimental/examples/VFS/skel_transparent.c
   branches/samba/experimental/lib/tevent/tevent_internal.h
   branches/samba/experimental/librpc/gen_ndr/cli_spoolss.c
   branches/samba/experimental/librpc/gen_ndr/cli_spoolss.h
   branches/samba/experimental/librpc/gen_ndr/drsuapi.h
   branches/samba/experimental/librpc/gen_ndr/lsa.h
   branches/samba/experimental/librpc/gen_ndr/misc.h
   branches/samba/experimental/librpc/gen_ndr/ndr_drsuapi.c
   branches/samba/experimental/librpc/gen_ndr/ndr_drsuapi.h
   branches/samba/experimental/librpc/gen_ndr/ndr_lsa.c
   branches/samba/experimental/librpc/gen_ndr/ndr_misc.c
   branches/samba/experimental/librpc/gen_ndr/ndr_spoolss.c
   branches/samba/experimental/librpc/gen_ndr/ndr_spoolss.h
   branches/samba/experimental/librpc/gen_ndr/spoolss.h
   branches/samba/experimental/librpc/gen_ndr/srv_spoolss.c
   branches/samba/experimental/librpc/idl/drsuapi.idl
   branches/samba/experimental/librpc/idl/lsa.idl
   branches/samba/experimental/librpc/idl/misc.idl
   branches/samba/experimental/librpc/idl/spoolss.idl
   branches/samba/experimental/librpc/ndr/ndr_drsuapi.c
   branches/samba/experimental/librpc/ndr/ndr_drsuapi.h
   branches/samba/experimental/librpc/ndr/ndr_spoolss_buf.c
   branches/samba/experimental/librpc/ndr/ndr_spoolss_buf.h
   branches/samba/experimental/nsswitch/pam_winbind.c
   branches/samba/experimental/nsswitch/winbind_krb5_locator.c
   branches/samba/experimental/packaging/RHEL-CTDB/samba.spec
   branches/samba/experimental/packaging/RHEL-CTDB/samba.spec.tmpl
   branches/samba/experimental/packaging/RHEL/makerpms.git.sh
   branches/samba/experimental/packaging/RHEL/makerpms.sh
   branches/samba/experimental/packaging/RHEL/makerpms.sh.tmpl
   branches/samba/experimental/packaging/RHEL/samba.spec
   branches/samba/experimental/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
   branches/samba/experimental/release-scripts/create-tarball
   branches/samba/experimental/source3/Makefile.in
   branches/samba/experimental/source3/VERSION
   branches/samba/experimental/source3/auth/auth_sam.c
   branches/samba/experimental/source3/client/client.c
   branches/samba/experimental/source3/client/clitar.c
   branches/samba/experimental/source3/configure
   branches/samba/experimental/source3/configure.in
   branches/samba/experimental/source3/include/ads.h
   branches/samba/experimental/source3/include/authdata.h
   branches/samba/experimental/source3/include/config.h.in
   branches/samba/experimental/source3/include/includes.h
   branches/samba/experimental/source3/include/local.h
   branches/samba/experimental/source3/include/nt_printing.h
   branches/samba/experimental/source3/include/ntdomain.h
   branches/samba/experimental/source3/include/passdb.h
   branches/samba/experimental/source3/include/proto.h
   branches/samba/experimental/source3/include/rpc_misc.h
   branches/samba/experimental/source3/include/smb.h
   branches/samba/experimental/source3/include/version.h
   branches/samba/experimental/source3/lib/dbwrap_ctdb.c
   branches/samba/experimental/source3/lib/debug.c
   branches/samba/experimental/source3/lib/gencache.c
   branches/samba/experimental/source3/lib/netapi/file.c
   branches/samba/experimental/source3/lib/netapi/getdc.c
   branches/samba/experimental/source3/lib/netapi/group.c
   branches/samba/experimental/source3/lib/netapi/joindomain.c
   branches/samba/experimental/source3/lib/netapi/localgroup.c
   branches/samba/experimental/source3/lib/netapi/netlogon.c
   branches/samba/experimental/source3/lib/netapi/samr.c
   branches/samba/experimental/source3/lib/netapi/serverinfo.c
   branches/samba/experimental/source3/lib/netapi/share.c
   branches/samba/experimental/source3/lib/netapi/shutdown.c
   branches/samba/experimental/source3/lib/netapi/user.c
   branches/samba/experimental/source3/lib/secdesc.c
   branches/samba/experimental/source3/lib/smbldap.c
   branches/samba/experimental/source3/lib/sysquotas.c
   branches/samba/experimental/source3/lib/system.c
   branches/samba/experimental/source3/lib/tdb_validate.c
   branches/samba/experimental/source3/lib/util.c
   branches/samba/experimental/source3/libads/ads_status.c
   branches/samba/experimental/source3/libads/authdata.c
   branches/samba/experimental/source3/libads/kerberos.c
   branches/samba/experimental/source3/libads/kerberos_keytab.c
   branches/samba/experimental/source3/libads/kerberos_verify.c
   branches/samba/experimental/source3/libads/krb5_errs.c
   branches/samba/experimental/source3/libads/krb5_setpw.c
   branches/samba/experimental/source3/libads/ldap.c
   branches/samba/experimental/source3/libads/ldap_printer.c
   branches/samba/experimental/source3/libnet/libnet.h
   branches/samba/experimental/source3/libnet/libnet_dssync.c
   branches/samba/experimental/source3/libnet/libnet_join.c
   branches/samba/experimental/source3/libnet/libnet_samsync.c
   branches/samba/experimental/source3/librpc/gen_ndr/ndr_wbint.c
   branches/samba/experimental/source3/librpc/gen_ndr/wbint.h
   branches/samba/experimental/source3/librpc/idl/wbint.idl
   branches/samba/experimental/source3/libsmb/cliconnect.c
   branches/samba/experimental/source3/libsmb/clikrb5.c
   branches/samba/experimental/source3/libsmb/clispnego.c
   branches/samba/experimental/source3/libsmb/libsmb_dir.c
   branches/samba/experimental/source3/libsmb/samlogon_cache.c
   branches/samba/experimental/source3/libsmb/trusts_util.c
   branches/samba/experimental/source3/locking/brlock.c
   branches/samba/experimental/source3/locking/locking.c
   branches/samba/experimental/source3/m4/aclocal.m4
   branches/samba/experimental/source3/modules/onefs_open.c
   branches/samba/experimental/source3/modules/vfs_acl_common.c
   branches/samba/experimental/source3/modules/vfs_acl_tdb.c
   branches/samba/experimental/source3/modules/vfs_acl_xattr.c
   branches/samba/experimental/source3/modules/vfs_afsacl.c
   branches/samba/experimental/source3/modules/vfs_audit.c
   branches/samba/experimental/source3/modules/vfs_cacheprime.c
   branches/samba/experimental/source3/modules/vfs_commit.c
   branches/samba/experimental/source3/modules/vfs_default.c
   branches/samba/experimental/source3/modules/vfs_extd_audit.c
   branches/samba/experimental/source3/modules/vfs_fileid.c
   branches/samba/experimental/source3/modules/vfs_full_audit.c
   branches/samba/experimental/source3/modules/vfs_netatalk.c
   branches/samba/experimental/source3/modules/vfs_onefs.c
   branches/samba/experimental/source3/modules/vfs_prealloc.c
   branches/samba/experimental/source3/modules/vfs_readahead.c
   branches/samba/experimental/source3/modules/vfs_readonly.c
   branches/samba/experimental/source3/modules/vfs_recycle.c
   branches/samba/experimental/source3/modules/vfs_smb_traffic_analyzer.c
   branches/samba/experimental/source3/modules/vfs_tsmsm.c
   branches/samba/experimental/source3/param/loadparm.c
   branches/samba/experimental/source3/passdb/pdb_smbpasswd.c
   branches/samba/experimental/source3/printing/nt_printing.c
   branches/samba/experimental/source3/printing/printing.c
   branches/samba/experimental/source3/registry/reg_backend_printing.c
   branches/samba/experimental/source3/registry/regfio.c
   branches/samba/experimental/source3/rpc_client/cli_lsarpc.c
   branches/samba/experimental/source3/rpc_client/cli_netlogon.c
   branches/samba/experimental/source3/rpc_client/cli_pipe.c
   branches/samba/experimental/source3/rpc_client/cli_samr.c
   branches/samba/experimental/source3/rpc_client/cli_spoolss.c
   branches/samba/experimental/source3/rpc_server/srv_dfs_nt.c
   branches/samba/experimental/source3/rpc_server/srv_dssetup_nt.c
   branches/samba/experimental/source3/rpc_server/srv_echo_nt.c
   branches/samba/experimental/source3/rpc_server/srv_eventlog_nt.c
   branches/samba/experimental/source3/rpc_server/srv_initshutdown_nt.c
   branches/samba/experimental/source3/rpc_server/srv_lsa_nt.c
   branches/samba/experimental/source3/rpc_server/srv_netlog_nt.c
   branches/samba/experimental/source3/rpc_server/srv_ntsvcs_nt.c
   branches/samba/experimental/source3/rpc_server/srv_pipe.c
   branches/samba/experimental/source3/rpc_server/srv_samr_nt.c
   branches/samba/experimental/source3/rpc_server/srv_spoolss_nt.c
   branches/samba/experimental/source3/rpc_server/srv_srvsvc_nt.c
   branches/samba/experimental/source3/rpc_server/srv_svcctl_nt.c
   branches/samba/experimental/source3/rpc_server/srv_winreg_nt.c
   branches/samba/experimental/source3/rpc_server/srv_wkssvc_nt.c
   branches/samba/experimental/source3/rpcclient/cmd_dfs.c
   branches/samba/experimental/source3/rpcclient/cmd_drsuapi.c
   branches/samba/experimental/source3/rpcclient/cmd_dssetup.c
   branches/samba/experimental/source3/rpcclient/cmd_echo.c
   branches/samba/experimental/source3/rpcclient/cmd_epmapper.c
   branches/samba/experimental/source3/rpcclient/cmd_eventlog.c
   branches/samba/experimental/source3/rpcclient/cmd_lsarpc.c
   branches/samba/experimental/source3/rpcclient/cmd_netlogon.c
   branches/samba/experimental/source3/rpcclient/cmd_ntsvcs.c
   branches/samba/experimental/source3/rpcclient/cmd_samr.c
   branches/samba/experimental/source3/rpcclient/cmd_spoolss.c
   branches/samba/experimental/source3/rpcclient/cmd_srvsvc.c
   branches/samba/experimental/source3/rpcclient/cmd_test.c
   branches/samba/experimental/source3/rpcclient/cmd_wkssvc.c
   branches/samba/experimental/source3/rpcclient/rpcclient.c
   branches/samba/experimental/source3/script/installman.sh
   branches/samba/experimental/source3/script/tests/test_posix_s3.sh
   branches/samba/experimental/source3/smbd/close.c
   branches/samba/experimental/source3/smbd/files.c
   branches/samba/experimental/source3/smbd/lanman.c
   branches/samba/experimental/source3/smbd/open.c
   branches/samba/experimental/source3/smbd/process.c
   branches/samba/experimental/source3/smbd/quotas.c
   branches/samba/experimental/source3/smbd/reply.c
   branches/samba/experimental/source3/smbd/service.c
   branches/samba/experimental/source3/smbd/smb2_tcon.c
   branches/samba/experimental/source3/smbd/trans2.c
   branches/samba/experimental/source3/torture/nsstest.c
   branches/samba/experimental/source3/utils/eventlogadm.c
   branches/samba/experimental/source3/utils/net_ads.c
   branches/samba/experimental/source3/utils/net_conf.c
   branches/samba/experimental/source3/utils/net_dom.c
   branches/samba/experimental/source3/utils/net_rpc.c
   branches/samba/experimental/source3/utils/net_rpc_audit.c
   branches/samba/experimental/source3/utils/net_rpc_join.c
   branches/samba/experimental/source3/utils/net_rpc_printer.c
   branches/samba/experimental/source3/utils/net_rpc_registry.c
   branches/samba/experimental/source3/utils/net_rpc_rights.c
   branches/samba/experimental/source3/utils/net_rpc_service.c
   branches/samba/experimental/source3/utils/net_rpc_sh_acct.c
   branches/samba/experimental/source3/utils/net_usershare.c
   branches/samba/experimental/source3/utils/net_util.c
   branches/samba/experimental/source3/utils/ntlm_auth.c
   branches/samba/experimental/source3/utils/smbget.c
   branches/samba/experimental/source3/utils/smbtree.c
   branches/samba/experimental/source3/utils/testparm.c
   branches/samba/experimental/source3/web/cgi.c
   branches/samba/experimental/source3/web/swat.c
   branches/samba/experimental/source3/winbindd/winbindd_ads.c
   branches/samba/experimental/source3/winbindd/winbindd_cm.c
   branches/samba/experimental/source3/winbindd/winbindd_cred_cache.c
   branches/samba/experimental/source3/winbindd/winbindd_dual_srv.c
   branches/samba/experimental/source3/winbindd/winbindd_misc.c
   branches/samba/experimental/source3/winbindd/winbindd_pam.c
   branches/samba/experimental/source3/winbindd/winbindd_rpc.c
   branches/samba/experimental/source4/torture/nbench/nbench.c
   branches/samba/experimental/source4/torture/ndr/spoolss.c
   branches/samba/experimental/source4/torture/rpc/samr.c
   branches/samba/experimental/source4/torture/rpc/spoolss.c
   branches/samba/experimental/source4/torture/rpc/spoolss_win.c
Log:
merge upstream 3.5.0~pre2

Modified: branches/samba/experimental/WHATSNEW.txt
===================================================================
--- branches/samba/experimental/WHATSNEW.txt	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/WHATSNEW.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1,9 +1,9 @@
                    =================================
-                   Release Notes for Samba 3.5.0pre1
-			   November 26, 2009
+                   Release Notes for Samba 3.5.0pre2
+			   December 15, 2009
                    =================================
 
-This is the first preview release of Samba 3.5.  This is *not*
+This is the second preview release of Samba 3.5.  This is *not*
 intended for production environments and is designed for testing
 purposes only.  Please report any defects via the Samba bug reporting
 system at https://bugzilla.samba.org/.
@@ -66,6 +66,7 @@
    ctdb timeout			       New	       0
    cups encrypt			       New	       no
    debug hires timestamp	       Changed Default yes
+   ldap deref			       New	       auto
    ldap follow referral		       New	       auto
 
 
@@ -82,7 +83,7 @@
 Commit Highlights
 =================
 
-o   Björn Jacke <bjacke at sernet.de>
+o   Björn Jacke <bj at sernet.de>
     * Add support for full Windows timestamp resolution.
     * Add encryption support for connections to a CUPS server.
 
@@ -96,6 +97,85 @@
     * Implement the new SMB2 protocol (experimental).
 
 
+Changes since 3.5.0pre1
+-----------------------
+
+o   Michael Adam <obnox at samba.org>
+    * Fix the build when no external talloc and tdb are installed.
+    * Fix detection of CTDB headers on systems without system-libtalloc.
+
+
+o   Jeremy Allison <jra at samba.org>
+    * BUG 6802: A created folder does not properly inherit permissions from
+      parent in vfs_acl_xattr.
+    * BUG 6837: "Too many open files" when trying to access large number of
+      files from Windows 7.
+    * BUG 6938 : No hook exists to check creation rights when using acl_xattr
+      module.
+    * Fix vfs_acl_xattr which was failing to call the NEXT connect function.
+    * Restructure the ACL code.
+    * Refactor reply_rmdir to use handle based code.
+
+
+o   Dan Cox <dan at wep.net>
+    * BUG 2350: Add LDAP Alias Dereferencing support.
+
+
+o   Günther Deschner <gd at samba.org>
+    * BUG 6929: Fix build with recent heimdal.
+    * Fix several printing issues.
+    * Fix the build on Mac OS X 10.6.2.
+    * Fix net and rpcclient after setprinterdataex changes.
+    * Add full support for level 8 printer drivers.
+    * Add more spoolss architectures to IDL.
+    * Fix enumprinter key client and server.
+    * Fix crash in EnumPrinterDataEx.
+
+
+o   Björn Jacke <bj at sernet.de>
+    * Prefer posix_fallocate for doing "strict allocate".
+
+
+o   Matt Kraai <mkraai at beckman.com>
+    * BUG 6860: Fix shared library build on QNX.
+
+
+o   Volker Lendecke <vl at samba.org>
+    * BUG 6288: SWAT adds a second share when changing parameters of an existing
+      share.
+    * BUG 6435: Fix minor memory corruption.
+    * Restore "fake directory create times" as a share parameter.
+    * Fix explicit stat64 support.
+    * Add support for NetWkstaGetInfo 101 and 102.
+    * Add rpcclient wkssvc_enumerateusers.
+    * De-deprecate "write cache size" to prevent its removal without a proper
+      alternative.
+    * Allow more than 1000 users in BUILTIN\Users.
+
+
+o   Jim McDonough <jmcd at samba.org>
+    * BUG 6967: Prevent glibc error on 'net ads join'.
+
+
+o   Lars Müller <lars at samba.org>
+    * BUG 6710: Only install the cifs.upcall man page if CIFSUPCALL_PROGS was
+      set while configure.
+
+
+o   Ian Puleston <ipuleston at sonicwall.com>
+    * Complete support for NetWkstaGetInfo/NetWkstaEnumUsers.
+
+
+o   Karolin Seeger <kseeger at samba.org>
+    * Fix the build of the example VFS modules.
+
+
+o   Bo Yang <boyang at samba.org>
+    * BUG 6879: Fix crash in Winbind.
+    * Fix crash in free_file_list().
+    * Give the user a chance to change password when password will expire soon.
+
+
 ######################################################################
 Reporting bugs & Development Discussion
 #######################################

Modified: branches/samba/experimental/client/cifs.upcall.c
===================================================================
--- branches/samba/experimental/client/cifs.upcall.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/client/cifs.upcall.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -27,6 +27,7 @@
 
 #include "includes.h"
 #include "../libcli/auth/spnego.h"
+#include "smb_krb5.h"
 #include <keyutils.h>
 #include <getopt.h>
 

Modified: branches/samba/experimental/docs/Samba3-ByExample.pdf
===================================================================
--- branches/samba/experimental/docs/Samba3-ByExample.pdf	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/docs/Samba3-ByExample.pdf	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1680,14 +1680,22 @@
 /ProcSet [ /PDF /Text ]
 >> endobj
 1117 0 obj <<
-/Length 1120      
+/Length 1116      
 /Filter /FlateDecode
 >>
 stream
-xÚÅ™K“ÛDÇïþs”ªp3Óóææ]”ÅËÆ^l*•Êa—,ª,	òíéÑc°-!³nS\$Wyôëž?fF’âG!ÅÕ좞}þÌ¢ˆ:Qÿ ‚ó"H:jQ¿¯ŠíÝãýÝ\—s´²¸ÿÔÞ«?ï?¼{(_××D0"ÁéD at e!H'æ
-Œ-â»<΃òZ¥q¼UäE3`]Λæúus]6×]Uq5bFk0V÷Ïߎ°`\6°hp·
-®êŒÑ#³ªžý2K£¤P½à¬4ëP|ÿ8{õZŠ7ô結¤H4C…·àM2ÿNlgßì1,HGžJëõƒ†#Äm%XŒ<—㌃¹´I±«µµ*ᣆh»˜¾};Ð:p”6>JP8°ivlZ%µËFe—‘‡÷¿ÙN$gɧæc¥¥ÃHpˆaÍÃ8ðÊÑUÑ\íž&v7ͽ-‰E±J÷F“ËõÍÍâb½Y”Quid±ÞlÇdBPá?†rÂN#&åhÚ€šN÷ã’"‚”þ¤©¨RmN`´a‰;aQŽÊO%¨„£iÃR/ë›j¬UyêA¶o_¥H	}Ï´§âñûŽmªgÕ¦Z]Ž9G¢8=å\Î"†ô}ô¨¥E^ôŒ¬3ƒ‘å`0:9\ #/™ŸÎöÝœÌT}.˜Ãå؇â¾DY|jï,ÉãYÌ™V¯.‡Ñµ=ÏiY.RMçüÑ–å‚ÍLziµDô,F-ƒ‘CË`ô’¦E1òúdLûR…ö/±ÏùE©eqY/׫avçPœÁ¶Š´Òÿ{ÆW‹çÕÈ^±ÞÌjI˜ƒ9™¶‹RQ×ÕDQŸÁ¾ÑôûÐþvyµêÌ¿ØTÿ¼ü<݁aÚØHwf%29–FŽƒ‘%e0úI4š× /,Fƒ‘ÃÂ`ä°0½¤Ú’æšµ+H')"Ñ»ãõfY×ÕªÝ\¼œè‘g0¯¨IؤèŽ×ïú¹µþ´÷ºéË9uî¿þö±T²¸›h£gð=BPûÒ¬Þ—Ê¿—h‹‡ÇûäOòÝgÝ)ãDo}²S#IÃ`ôIƒ”gÖ!ƒ‘cÄ`dIŒ,)ƒÑ·G:3Eú["'o´=Òa%XÄÿá©X+AÅÈ{—á"8別ÁןM¿]nÓŽ«­ëå¶{ŸQZY¼Û(^ŸàÏ@+Y¢2לqÿ'¢	+ZêòÈê‡QDŠFT.m?|ñü¢ÚŒ­Æ9ìªèÀí›=²™MÆjwëšìÒùaß|µ½Ü,oÇÆ0á,¶SX́ä£ç‡\/O6;H7"`DVÆ2MÆ*ÝôËÓV©.ûŒœCFŸ
-DŽ+ƒÑ+šV  yŠ2YQ£W”ÈŠ2¢&Щy9ÊaôŠr¢D¯(‡Ñ6ŽD8½çÄñE݇(#A¿ý›ïPîf d
+xÚÅ™K“ÛDÇïþs”ªp3ÓóææÝ(‹—½Ø
+T*•Ãn²@ª²UoOƒm	™u›â"¹Ê£_÷üû13’?
+)®fõìËçE„èЉúáœAzÐQ‹úx]lïïï溜£•Åýçö^ýy÷øñÃCù¦¾&‚N'*A:1W`|lßçq”×*à­"/šërî°Ø4×ošë²¹®èªŠ«3Zƒ±ºþvÄ€㲁Eƒ»mpUgŒ™Uõì×Y%…è
+gE )X‡âíãìõ)ÞÑŸ×B’"AüÑ}Þ‚7Éü±}»Ç° y*¬×SŽC0´•`d`1ò\Ž3æÒ&Å®ÖÖ¨„¢íbúþýP@ëÀQÚø(AáÀ¦Ù±i•Ô.•]FÞÿf;hœ%_\œš•
+”#Á!†14ãÀ+{DWEsµ{šØÝ4÷
+´$Å*ÝM.×77‹‹õfQFYÔ¥‘Åz³“	A…SüÊA;˜”£ahj:ݏKŠRú“¦¢RHµ9Ñ†%î„E9*?•ü¡Ž¦
+K½¬oª±Vå©Ù¾E|5”v4"%ô<ÓžŠÇï;¶©žW›ju9æ‰âô”s9‹Ò÷Ñ£j”yÑc0²ÎF–ƒÁèäp1€Œ¼d~:cØws2Sõ¹`—cŠûeñ¹ý½³$g1gZ½ºF×n\ôh<§e¹HU4óG[–43é9¤Õѳ9´F-ƒÑKšÅÈë“1ígHÚ¿Ä>祖Åe½\¯†ÙCqÛ*ÒJHÿï_-^T#{Å>zg0«%=`æü,m¥¢¯«‰¢>ƒ}£é÷¡ýíòjÕ™¹©þyùyºô±‘îÌJd0r,Œ#KÊ`ô
+’h4¯A2^XŒ#‡…ÁÈaa0zIµ%Í5kWNRD¢4vÇëͲ®«U»
+¸x5Ñ#Ï`^Q“°IÑ®ùéçÖú×ÐÞë¦s<|*çÔ¹?þöû§RÉân¢žÁ3ôÎì9öìáíÃã}r#9¥Ìí”2N´Ô'û2’+FŸ+¨Ayfù194F–”ÁÈ’2}W¤£Rô§¿< ròFÛ#U‚EüÏžÊßZ	*FÞ+Á)G,
+>¸þHúÝr›6Zm9/·ÝkŒÒÊâÕØ. at AðúªXÉ•ù¸öÔ;Üÿ‰hŠ–š;²Ú`T ‘"ƒ$•K»‡}ùâ¢ÚŒ-Æ9ìªèÀí›=²‡MÆjwëšìÒ±aß|µ½Ü,oÇÏ
+Æ0á,¶SX́ä£Ç†\/O6;H7"`DVÆ2MÆ*ÝôËÓV©.ûŒœCFŸ
+DŽ+ƒÑ+šV  yŠ2YQ£W”ÈŠ2¢&Ðay9ÊaôŠr¢D¯(‡Ñ6ŽD8½çÄñoDÝ÷'#A?ý›ÏO-×þ„
 endstream
 endobj
 1116 0 obj <<
@@ -83989,8 +83997,8 @@
 >> endobj
 14894 0 obj <<
 /Author()/Title()/Subject()/Creator(DBLaTeX-0.2.7)/Producer(pdfTeX-1.40.3)/Keywords()
-/CreationDate (D:20091126102853+01'00')
-/ModDate (D:20091126102853+01'00')
+/CreationDate (D:20091214094410+01'00')
+/ModDate (D:20091214094410+01'00')
 /Trapped /False
 /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6)
 >> endobj
@@ -84002,14900 +84010,14900 @@
 0000000004 00000 f 
 0000000000 00000 f 
 0000000015 00000 n 
-0000138674 00000 n 
-0004000398 00000 n 
+0000138670 00000 n 
+0004000394 00000 n 
 0000000057 00000 n 
 0000000107 00000 n 
-0000141384 00000 n 
-0004000289 00000 n 
+0000141380 00000 n 
+0004000285 00000 n 
 0000000152 00000 n 
 0000000194 00000 n 
-0000141506 00000 n 
-0004000215 00000 n 
+0000141502 00000 n 
+0004000211 00000 n 
 0000000242 00000 n 
 0000000273 00000 n 
-0000141566 00000 n 
-0004000091 00000 n 
+0000141562 00000 n 
+0004000087 00000 n 
 0000000321 00000 n 
 0000000356 00000 n 
-0000146506 00000 n 
-0003999980 00000 n 
+0000146502 00000 n 
+0003999976 00000 n 
 0000000409 00000 n 
 0000000443 00000 n 
-0000146567 00000 n 
-0003999906 00000 n 
+0000146563 00000 n 
+0003999902 00000 n 
 0000000501 00000 n 
 0000000545 00000 n 
-0000146628 00000 n 
-0003999819 00000 n 
+0000146624 00000 n 
+0003999815 00000 n 
 0000000603 00000 n 
 0000000636 00000 n 
-0000152770 00000 n 
-0003999745 00000 n 
+0000152766 00000 n 
+0003999741 00000 n 
 0000000694 00000 n 
 0000000723 00000 n 
-0000159055 00000 n 
-0003999621 00000 n 
+0000159051 00000 n 
+0003999617 00000 n 
 0000000776 00000 n 
 0000000824 00000 n 
-0000159116 00000 n 
-0003999547 00000 n 
+0000159112 00000 n 
+0003999543 00000 n 
 0000000882 00000 n 
 0000000926 00000 n 
-0000185937 00000 n 
-0003999460 00000 n 
+0000185933 00000 n 
+0003999456 00000 n 
 0000000984 00000 n 
 0000001017 00000 n 
-0000213748 00000 n 
-0003999386 00000 n 
+0000213744 00000 n 
+0003999382 00000 n 
 0000001075 00000 n 
 0000001104 00000 n 
-0000217551 00000 n 
-0003999275 00000 n 
+0000217547 00000 n 
+0003999271 00000 n 
 0000001157 00000 n 
 0000001193 00000 n 
-0000217675 00000 n 
-0003999201 00000 n 
+0000217671 00000 n 
+0003999197 00000 n 
 0000001251 00000 n 
 0000001295 00000 n 
-0000217736 00000 n 
-0003999127 00000 n 
+0000217732 00000 n 
+0003999123 00000 n 
 0000001353 00000 n 
 0000001386 00000 n 
-0000253848 00000 n 
-0003999053 00000 n 
+0000253844 00000 n 
+0003999049 00000 n 
 0000001434 00000 n 
 0000001474 00000 n 
-0000264118 00000 n 
-0003998928 00000 n 
+0000264114 00000 n 
+0003998924 00000 n 
 0000001520 00000 n 
 0000001562 00000 n 
-0000264242 00000 n 
-0003998817 00000 n 
+0000264238 00000 n 
+0003998813 00000 n 
 0000001610 00000 n 
 0000001641 00000 n 
-0000264303 00000 n 
-0003998756 00000 n 
+0000264299 00000 n 
+0003998752 00000 n 
 0000001694 00000 n 
 0000001729 00000 n 
-0000268400 00000 n 
-0003998632 00000 n 
+0000268396 00000 n 
+0003998628 00000 n 
 0000001777 00000 n 
 0000001821 00000 n 
-0000268461 00000 n 
-0003998558 00000 n 
+0000268457 00000 n 
+0003998554 00000 n 
 0000001874 00000 n 
 0000001909 00000 n 
-0000300473 00000 n 
-0003998484 00000 n 
+0000300469 00000 n 
+0003998480 00000 n 
 0000001962 00000 n 
 0000001997 00000 n 
-0000300534 00000 n 
-0003998358 00000 n 
+0000300530 00000 n 
+0003998354 00000 n 
 0000002045 00000 n 
 0000002078 00000 n 
-0000337392 00000 n 
-0003998282 00000 n 
+0000337388 00000 n 
+0003998278 00000 n 
 0000002131 00000 n 
 0000002161 00000 n 
-0000351755 00000 n 
-0003998191 00000 n 
+0000351751 00000 n 
+0003998187 00000 n 
 0000002215 00000 n 
 0000002269 00000 n 
-0000351816 00000 n 
-0003998113 00000 n 
+0000351812 00000 n 
+0003998109 00000 n 
 0000002323 00000 n 
 0000002361 00000 n 
-0000355931 00000 n 
-0003998036 00000 n 
+0000355927 00000 n 
+0003998032 00000 n 
 0000002410 00000 n 
 0000002451 00000 n 
-0000363085 00000 n 
-0003997907 00000 n 
+0000363081 00000 n 
+0003997903 00000 n 
 0000002498 00000 n 
 0000002542 00000 n 
-0000363210 00000 n 
-0003997789 00000 n 
+0000363206 00000 n 
+0003997785 00000 n 
 0000002591 00000 n 
 0000002623 00000 n 
-0000363272 00000 n 
-0003997724 00000 n 
+0000363268 00000 n 
+0003997720 00000 n 
 0000002677 00000 n 
 0000002713 00000 n 
-0000416164 00000 n 
-0003997592 00000 n 
+0000416160 00000 n 
+0003997588 00000 n 
 0000002762 00000 n 
 0000002807 00000 n 
-0000416226 00000 n 
-0003997474 00000 n 
+0000416222 00000 n 
+0003997470 00000 n 
 0000002861 00000 n 
 0000002897 00000 n 
-0000420678 00000 n 
-0003997409 00000 n 
+0000420674 00000 n 
+0003997405 00000 n 
 0000002956 00000 n 
 0000002997 00000 n 
-0000426819 00000 n 
-0003997330 00000 n 
+0000426815 00000 n 
+0003997326 00000 n 
 0000003051 00000 n 
 0000003087 00000 n 
-0000426881 00000 n 
-0003997198 00000 n 
+0000426877 00000 n 
+0003997194 00000 n 
 0000003136 00000 n 
 0000003170 00000 n 
-0000431324 00000 n 
-0003997119 00000 n 
+0000431320 00000 n 
+0003997115 00000 n 
 0000003224 00000 n 
 0000003270 00000 n 
-0000446306 00000 n 
-0003997026 00000 n 
+0000446302 00000 n 
+0003997022 00000 n 
 0000003324 00000 n 
 0000003363 00000 n 
-0000480611 00000 n 
-0003996933 00000 n 
+0000480607 00000 n 
+0003996929 00000 n 
 0000003417 00000 n 
 0000003474 00000 n 
-0000512128 00000 n 
-0003996840 00000 n 
+0000512124 00000 n 
+0003996836 00000 n 
 0000003528 00000 n 
 0000003569 00000 n 
-0000517318 00000 n 
-0003996747 00000 n 
+0000517314 00000 n 
+0003996743 00000 n 
 0000003623 00000 n 
 0000003672 00000 n 
-0000521888 00000 n 
-0003996654 00000 n 
+0000521884 00000 n 
+0003996650 00000 n 
 0000003726 00000 n 
 0000003756 00000 n 
-0000555669 00000 n 
-0003996522 00000 n 
+0000555665 00000 n 
+0003996518 00000 n 
 0000003810 00000 n 
 0000003861 00000 n 
-0000560345 00000 n 
-0003996457 00000 n 
+0000560341 00000 n 
+0003996453 00000 n 
 0000003920 00000 n 
 0000003980 00000 n 
-0000560406 00000 n 
-0003996364 00000 n 
+0000560402 00000 n 
+0003996360 00000 n 
 0000004034 00000 n 
 0000004082 00000 n 
-0000565299 00000 n 
-0003996285 00000 n 
+0000565295 00000 n 
+0003996281 00000 n 
 0000004136 00000 n 
 0000004174 00000 n 
-0000570135 00000 n 
-0003996206 00000 n 
+0000570131 00000 n 
+0003996202 00000 n 
 0000004223 00000 n 
 0000004264 00000 n 
-0000577112 00000 n 
-0003996076 00000 n 
+0000577108 00000 n 
+0003996072 00000 n 
 0000004311 00000 n 
 0000004350 00000 n 
-0000577235 00000 n 
-0003995958 00000 n 
+0000577231 00000 n 
+0003995954 00000 n 
 0000004399 00000 n 
 0000004431 00000 n 
-0000581648 00000 n 
-0003995893 00000 n 
+0000581644 00000 n 
+0003995889 00000 n 
 0000004485 00000 n 
 0000004521 00000 n 
-0000581710 00000 n 
-0003995761 00000 n 
+0000581706 00000 n 
+0003995757 00000 n 
 0000004570 00000 n 
 0000004615 00000 n 
-0000585717 00000 n 
-0003995682 00000 n 
+0000585713 00000 n 
+0003995678 00000 n 
 0000004669 00000 n 
 0000004705 00000 n 
-0000585779 00000 n 
-0003995603 00000 n 
+0000585775 00000 n 
+0003995599 00000 n 
 0000004759 00000 n 
 0000004795 00000 n 
-0000585841 00000 n 
-0003995471 00000 n 
+0000585837 00000 n 
+0003995467 00000 n 
 0000004844 00000 n 
 0000004878 00000 n 
-0000666394 00000 n 
-0003995392 00000 n 
+0000666390 00000 n 
+0003995388 00000 n 
 0000004932 00000 n 
 0000005002 00000 n 
-0000666519 00000 n 
-0003995299 00000 n 
+0000666515 00000 n 
+0003995295 00000 n 
 0000005056 00000 n 
 0000005107 00000 n 
-0000684688 00000 n 
-0003995167 00000 n 
+0000684684 00000 n 
+0003995163 00000 n 
 0000005161 00000 n 
 0000005208 00000 n 
-0000684750 00000 n 
-0003995088 00000 n 
+0000684746 00000 n 
+0003995084 00000 n 
 0000005267 00000 n 
 0000005320 00000 n 
-0000697277 00000 n 
-0003995009 00000 n 
+0000697273 00000 n 
+0003995005 00000 n 
 0000005379 00000 n 
 0000005460 00000 n 
-0000763102 00000 n 
-0003994916 00000 n 
+0000763098 00000 n 
+0003994912 00000 n 
 0000005514 00000 n 
 0000005563 00000 n 
-0000764086 00000 n 
-0003994823 00000 n 
+0000764082 00000 n 
+0003994819 00000 n 
 0000005617 00000 n 
 0000005665 00000 n 
-0000774459 00000 n 
-0003994744 00000 n 
+0000774455 00000 n 
+0003994740 00000 n 
 0000005719 00000 n 
 0000005757 00000 n 
-0000774521 00000 n 
-0003994665 00000 n 
+0000774517 00000 n 
+0003994661 00000 n 
 0000005806 00000 n 
 0000005847 00000 n 
-0000781438 00000 n 
-0003994535 00000 n 
+0000781434 00000 n 
+0003994531 00000 n 
 0000005894 00000 n 
 0000005932 00000 n 
-0000785681 00000 n 
-0003994456 00000 n 
+0000785677 00000 n 
+0003994452 00000 n 
 0000005981 00000 n 
 0000006057 00000 n 
-0000789560 00000 n 
-0003994324 00000 n 
+0000789556 00000 n 
+0003994320 00000 n 
 0000006106 00000 n 
 0000006138 00000 n 
-0000789622 00000 n 
-0003994259 00000 n 
+0000789618 00000 n 
+0003994255 00000 n 
 0000006192 00000 n 
 0000006228 00000 n 
-0000796109 00000 n 
-0003994127 00000 n 
+0000796105 00000 n 
+0003994123 00000 n 
 0000006277 00000 n 
 0000006322 00000 n 
-0000800007 00000 n 
-0003994009 00000 n 
+0000800003 00000 n 
+0003994005 00000 n 
 0000006376 00000 n 
 0000006412 00000 n 
-0000836820 00000 n 
-0003993930 00000 n 
+0000836816 00000 n 
+0003993926 00000 n 
 0000006471 00000 n 
 0000006525 00000 n 
-0000842006 00000 n 
-0003993837 00000 n 
+0000842002 00000 n 
+0003993833 00000 n 
 0000006584 00000 n 
 0000006630 00000 n 
-0000842068 00000 n 
-0003993744 00000 n 
+0000842064 00000 n 
+0003993740 00000 n 
 0000006689 00000 n 
 0000006731 00000 n 
-0000842192 00000 n 
-0003993651 00000 n 
+0000842188 00000 n 
+0003993647 00000 n 
 0000006790 00000 n 
 0000006825 00000 n 
-0000842254 00000 n 
-0003993558 00000 n 
+0000842250 00000 n 
+0003993554 00000 n 
 0000006884 00000 n 
 0000006940 00000 n 
-0000846665 00000 n 
-0003993465 00000 n 
+0000846661 00000 n 
+0003993461 00000 n 
 0000006999 00000 n 
 0000007063 00000 n 
-0000846727 00000 n 
-0003993347 00000 n 
+0000846723 00000 n 
+0003993343 00000 n 
 0000007122 00000 n 
 0000007196 00000 n 
-0000846850 00000 n 
-0003993268 00000 n 
+0000846846 00000 n 
+0003993264 00000 n 
 0000007253 00000 n 
 0000007315 00000 n 
-0000850709 00000 n 
-0003993175 00000 n 
+0000850705 00000 n 
+0003993171 00000 n 
 0000007372 00000 n 
 0000007423 00000 n 
-0000856789 00000 n 
-0003993082 00000 n 
+0000856785 00000 n 
+0003993078 00000 n 
 0000007480 00000 n 
 0000007514 00000 n 
-0000857355 00000 n 
-0003992989 00000 n 
+0000857351 00000 n 
+0003992985 00000 n 
 0000007571 00000 n 
 0000007612 00000 n 
-0000867780 00000 n 
-0003992896 00000 n 
+0000867776 00000 n 
+0003992892 00000 n 
 0000007669 00000 n 
 0000007704 00000 n 
-0000868913 00000 n 
-0003992817 00000 n 
+0000868909 00000 n 
+0003992813 00000 n 
 0000007761 00000 n 
 0000007812 00000 n 
-0000871180 00000 n 
-0003992724 00000 n 
+0000871176 00000 n 
+0003992720 00000 n 
 0000007866 00000 n 
 0000007902 00000 n 
-0000871242 00000 n 
-0003992645 00000 n 
+0000871238 00000 n 
+0003992641 00000 n 
 0000007956 00000 n 
 0000007998 00000 n 
-0000949630 00000 n 
-0003992513 00000 n 
+0000949626 00000 n 
+0003992509 00000 n 
 0000008047 00000 n 
 0000008094 00000 n 
-0000949818 00000 n 
-0003992434 00000 n 
+0000949814 00000 n 
+0003992430 00000 n 
 0000008148 00000 n 
 0000008197 00000 n 
-0000963670 00000 n 
-0003992341 00000 n 
+0000963666 00000 n 
+0003992337 00000 n 
 0000008251 00000 n 
 0000008303 00000 n 
-0000977559 00000 n 
-0003992248 00000 n 
+0000977555 00000 n 
+0003992244 00000 n 
 0000008357 00000 n 
 0000008402 00000 n 
-0000997910 00000 n 
-0003992116 00000 n 
+0000997906 00000 n 
+0003992112 00000 n 
 0000008456 00000 n 
 0000008526 00000 n 
-0000998034 00000 n 
-0003992037 00000 n 
+0000998030 00000 n 
+0003992033 00000 n 
 0000008585 00000 n 
 0000008651 00000 n 
-0001003550 00000 n 
-0003991944 00000 n 
+0001003546 00000 n 
+0003991940 00000 n 
 0000008710 00000 n 
 0000008775 00000 n 
-0001008388 00000 n 
-0003991865 00000 n 
+0001008384 00000 n 
+0003991861 00000 n 
 0000008834 00000 n 
 0000008884 00000 n 
-0001017881 00000 n 
-0003991772 00000 n 
+0001017877 00000 n 
+0003991768 00000 n 
 0000008938 00000 n 
 0000009017 00000 n 
-0001061521 00000 n 
-0003991693 00000 n 
+0001061517 00000 n 
+0003991689 00000 n 
 0000009071 00000 n 
 0000009112 00000 n 
-0001068081 00000 n 
-0003991600 00000 n 
+0001068077 00000 n 
+0003991596 00000 n 
 0000009161 00000 n 
 0000009206 00000 n 
-0001110159 00000 n 
-0003991468 00000 n 
+0001110155 00000 n 
+0003991464 00000 n 
 0000009255 00000 n 
 0000009313 00000 n 
-0001110221 00000 n 
-0003991389 00000 n 
+0001110217 00000 n 
+0003991385 00000 n 
 0000009367 00000 n 
 0000009426 00000 n 
-0001110912 00000 n 
-0003991296 00000 n 
+0001110908 00000 n 
+0003991292 00000 n 
 0000009480 00000 n 
 0000009531 00000 n 
-0001116801 00000 n 
-0003991203 00000 n 
+0001116797 00000 n 
+0003991199 00000 n 
 0000009585 00000 n 
 0000009633 00000 n 
-0001116989 00000 n 
-0003991124 00000 n 
+0001116985 00000 n 
+0003991120 00000 n 
 0000009687 00000 n 
 0000009743 00000 n 
-0001123384 00000 n 
-0003990992 00000 n 
+0001123380 00000 n 
+0003990988 00000 n 
 0000009792 00000 n 
 0000009840 00000 n 
-0001123446 00000 n 
-0003990913 00000 n 
+0001123442 00000 n 
+0003990909 00000 n 
 0000009894 00000 n 
 0000009970 00000 n 
-0001145375 00000 n 
-0003990820 00000 n 
+0001145371 00000 n 
+0003990816 00000 n 
 0000010024 00000 n 
 0000010092 00000 n 
-0001150670 00000 n 
-0003990727 00000 n 
+0001150666 00000 n 
+0003990723 00000 n 
 0000010146 00000 n 
 0000010208 00000 n 
-0001155371 00000 n 
-0003990634 00000 n 
+0001155367 00000 n 
+0003990630 00000 n 
 0000010262 00000 n 
 0000010324 00000 n 
-0001156126 00000 n 
-0003990541 00000 n 
+0001156122 00000 n 
+0003990537 00000 n 
 0000010378 00000 n 
 0000010419 00000 n 
-0001159876 00000 n 
-0003990462 00000 n 
+0001159872 00000 n 
+0003990458 00000 n 
 0000010473 00000 n 
 0000010516 00000 n 
-0001159938 00000 n 
-0003990369 00000 n 
+0001159934 00000 n 
+0003990365 00000 n 
 0000010565 00000 n 
 0000010603 00000 n 
-0001164736 00000 n 
-0003990290 00000 n 
+0001164732 00000 n 
+0003990286 00000 n 
 0000010652 00000 n 
 0000010693 00000 n 
-0001170648 00000 n 
-0003990174 00000 n 
+0001170644 00000 n 
+0003990170 00000 n 
 0000010740 00000 n 
 0000010791 00000 n 
-0001170771 00000 n 
-0003990056 00000 n 
+0001170767 00000 n 
+0003990052 00000 n 
 0000010840 00000 n 
 0000010872 00000 n 
-0001170832 00000 n 
-0003989991 00000 n 
+0001170828 00000 n 
+0003989987 00000 n 
 0000010926 00000 n 
 0000010962 00000 n 
-0001175336 00000 n 
-0003989859 00000 n 
+0001175332 00000 n 
+0003989855 00000 n 
 0000011011 00000 n 
 0000011056 00000 n 
-0001175398 00000 n 
-0003989741 00000 n 
+0001175394 00000 n 
+0003989737 00000 n 
 0000011110 00000 n 
 0000011146 00000 n 
-0001179697 00000 n 
-0003989662 00000 n 
+0001179693 00000 n 
+0003989658 00000 n 
 0000011205 00000 n 
 0000011235 00000 n 
-0001179759 00000 n 
-0003989569 00000 n 
+0001179755 00000 n 
+0003989565 00000 n 
 0000011294 00000 n 
 0000011356 00000 n 
-0001184392 00000 n 
-0003989490 00000 n 
+0001184388 00000 n 
+0003989486 00000 n 
 0000011415 00000 n 
 0000011460 00000 n 
-0001189393 00000 n 
-0003989411 00000 n 
+0001189389 00000 n 
+0003989407 00000 n 
 0000011514 00000 n 
 0000011550 00000 n 
-0001189455 00000 n 
-0003989279 00000 n 
+0001189451 00000 n 
+0003989275 00000 n 
 0000011599 00000 n 
 0000011633 00000 n 
-0001402129 00000 n 
-0003989214 00000 n 
+0001402125 00000 n 
+0003989210 00000 n 
 0000011687 00000 n 
 0000011725 00000 n 
-0001602090 00000 n 
-0003989135 00000 n 
+0001602086 00000 n 
+0003989131 00000 n 
 0000011774 00000 n 
 0000011815 00000 n 
-0001611393 00000 n 
-0003989003 00000 n 
+0001611389 00000 n 
+0003988999 00000 n 
 0000011859 00000 n 
 0000011926 00000 n 
-0001632240 00000 n 
-0003988885 00000 n 
+0001632236 00000 n 
+0003988881 00000 n 
 0000011973 00000 n 
 0000012033 00000 n 
-0001632490 00000 n 
-0003988767 00000 n 
+0001632486 00000 n 
+0003988763 00000 n 
 0000012082 00000 n 
 0000012114 00000 n 
-0001636505 00000 n 
-0003988702 00000 n 
+0001636501 00000 n 
+0003988698 00000 n 
 0000012168 00000 n 
 0000012204 00000 n 
-0001636567 00000 n 
-0003988570 00000 n 
+0001636563 00000 n 
+0003988566 00000 n 
 0000012253 00000 n 
 0000012298 00000 n 
-0001636629 00000 n 
-0003988491 00000 n 
+0001636625 00000 n 
+0003988487 00000 n 
 0000012352 00000 n 
 0000012388 00000 n 
-0001641129 00000 n 
-0003988412 00000 n 
+0001641125 00000 n 
+0003988408 00000 n 
 0000012442 00000 n 
 0000012478 00000 n 
-0001641191 00000 n 
-0003988280 00000 n 
+0001641187 00000 n 
+0003988276 00000 n 
 0000012527 00000 n 
 0000012561 00000 n 
-0001645714 00000 n 
-0003988201 00000 n 
+0001645710 00000 n 
+0003988197 00000 n 
 0000012615 00000 n 
 0000012698 00000 n 
-0001729928 00000 n 
-0003988108 00000 n 
+0001729924 00000 n 
+0003988104 00000 n 
 0000012752 00000 n 
 0000012843 00000 n 
-0001747308 00000 n 
-0003988015 00000 n 
+0001747304 00000 n 
+0003988011 00000 n 
 0000012897 00000 n 
 0000012985 00000 n 
-0001756508 00000 n 
-0003987883 00000 n 
+0001756504 00000 n 
+0003987879 00000 n 
 0000013039 00000 n 
 0000013114 00000 n 
-0001865373 00000 n 
-0003987804 00000 n 
+0001865369 00000 n 
+0003987800 00000 n 
 0000013173 00000 n 
 0000013218 00000 n 
-0001878093 00000 n 
-0003987711 00000 n 
+0001878089 00000 n 
+0003987707 00000 n 
 0000013277 00000 n 
 0000013332 00000 n 
-0001892059 00000 n 
-0003987593 00000 n 
+0001892055 00000 n 
+0003987589 00000 n 
 0000013391 00000 n 
 0000013477 00000 n 
-0001897805 00000 n 
-0003987514 00000 n 
+0001897801 00000 n 
+0003987510 00000 n 
 0000013534 00000 n 
 0000013607 00000 n 
-0001897866 00000 n 
-0003987435 00000 n 
+0001897862 00000 n 
+0003987431 00000 n 
 0000013664 00000 n 
 0000013720 00000 n 
-0001897928 00000 n 
-0003987303 00000 n 
+0001897924 00000 n 
+0003987299 00000 n 
 0000013774 00000 n 
 0000013825 00000 n 
-0001901927 00000 n 
-0003987224 00000 n 
+0001901923 00000 n 
+0003987220 00000 n 
 0000013884 00000 n 
 0000013921 00000 n 
-0001902366 00000 n 
-0003987145 00000 n 
+0001902362 00000 n 
+0003987141 00000 n 
 0000013980 00000 n 
 0000014017 00000 n 
-0001912219 00000 n 
-0003987066 00000 n 
+0001912215 00000 n 
+0003987062 00000 n 
 0000014071 00000 n 
 0000014109 00000 n 
-0001912281 00000 n 
-0003986987 00000 n 
+0001912277 00000 n 
+0003986983 00000 n 
 0000014158 00000 n 
 0000014199 00000 n 
-0001923059 00000 n 
-0003986855 00000 n 
+0001923055 00000 n 
+0003986851 00000 n 
 0000014246 00000 n 
 0000014282 00000 n 
-0001923182 00000 n 
-0003986737 00000 n 
+0001923178 00000 n 
+0003986733 00000 n 
 0000014331 00000 n 
 0000014363 00000 n 
-0001927616 00000 n 
-0003986633 00000 n 
+0001927612 00000 n 
+0003986629 00000 n 
 0000014417 00000 n 
 0000014455 00000 n 
-0001927678 00000 n 
-0003986554 00000 n 
+0001927674 00000 n 
+0003986550 00000 n 
 0000014514 00000 n 
 0000014563 00000 n 
-0001936520 00000 n 
-0003986461 00000 n 
+0001936516 00000 n 
+0003986457 00000 n 
 0000014622 00000 n 
 0000014660 00000 n 
-0001936582 00000 n 
-0003986368 00000 n 
+0001936578 00000 n 
+0003986364 00000 n 
 0000014719 00000 n 
 0000014774 00000 n 
-0001936644 00000 n 
-0003986275 00000 n 
+0001936640 00000 n 
+0003986271 00000 n 
 0000014833 00000 n 
 0000014877 00000 n 
-0001942620 00000 n 
-0003986182 00000 n 
+0001942616 00000 n 
+0003986178 00000 n 
 0000014936 00000 n 
 0000014986 00000 n 
-0001942682 00000 n 
-0003986103 00000 n 
+0001942678 00000 n 
+0003986099 00000 n 
 0000015045 00000 n 
 0000015108 00000 n 
-0001942744 00000 n 
-0003985971 00000 n 
+0001942740 00000 n 
+0003985967 00000 n 
 0000015157 00000 n 
 0000015220 00000 n 
-0001946757 00000 n 
-0003985892 00000 n 
+0001946753 00000 n 
+0003985888 00000 n 
 0000015274 00000 n 
 0000015335 00000 n 
-0001947757 00000 n 
-0003985799 00000 n 
+0001947753 00000 n 
+0003985795 00000 n 
 0000015389 00000 n 
 0000015456 00000 n 
-0001952384 00000 n 
-0003985720 00000 n 
+0001952380 00000 n 
+0003985716 00000 n 
 0000015510 00000 n 
 0000015557 00000 n 
-0001969603 00000 n 
-0003985602 00000 n 
+0001969599 00000 n 
+0003985598 00000 n 
 0000015606 00000 n 
 0000015657 00000 n 
-0001973289 00000 n 
-0003985484 00000 n 
+0001973285 00000 n 
+0003985480 00000 n 
 0000015711 00000 n 
 0000015776 00000 n 
-0001973351 00000 n 
-0003985405 00000 n 
+0001973347 00000 n 
+0003985401 00000 n 
 0000015835 00000 n 
 0000015902 00000 n 
-0001973412 00000 n 
-0003985312 00000 n 
+0001973408 00000 n 
+0003985308 00000 n 
 0000015961 00000 n 
 0000016034 00000 n 
-0001973474 00000 n 
-0003985233 00000 n 
+0001973470 00000 n 
+0003985229 00000 n 
 0000016093 00000 n 
 0000016174 00000 n 
-0001974165 00000 n 
-0003985101 00000 n 
+0001974161 00000 n 
+0003985097 00000 n 
 0000016228 00000 n 
 0000016281 00000 n 
-0001978907 00000 n 
-0003985022 00000 n 
+0001978903 00000 n 
+0003985018 00000 n 
 0000016340 00000 n 
 0000016392 00000 n 
-0001978969 00000 n 
-0003984943 00000 n 
+0001978965 00000 n 
+0003984939 00000 n 
 0000016451 00000 n 
 0000016500 00000 n 
-0001981792 00000 n 
-0003984864 00000 n 
+0001981788 00000 n 
+0003984860 00000 n 
 0000016554 00000 n 
 0000016621 00000 n 
-0001985142 00000 n 
-0003984732 00000 n 
+0001985138 00000 n 
+0003984728 00000 n 
 0000016668 00000 n 
 0000016719 00000 n 
-0001985267 00000 n 
-0003984614 00000 n 
+0001985263 00000 n 
+0003984610 00000 n 
 0000016768 00000 n 
 0000016800 00000 n 
-0001985329 00000 n 
-0003984549 00000 n 
+0001985325 00000 n 
+0003984545 00000 n 
 0000016854 00000 n 
 0000016890 00000 n 
-0001985391 00000 n 
-0003984417 00000 n 
+0001985387 00000 n 
+0003984413 00000 n 
 0000016939 00000 n 
 0000016984 00000 n 
-0002012675 00000 n 
-0003984338 00000 n 
+0002012671 00000 n 
+0003984334 00000 n 
 0000017038 00000 n 
 0000017074 00000 n 
-0002046898 00000 n 
-0003984259 00000 n 
+0002046894 00000 n 
+0003984255 00000 n 
 0000017128 00000 n 
 0000017164 00000 n 
-0002046960 00000 n 
-0003984127 00000 n 
+0002046956 00000 n 
+0003984123 00000 n 
 0000017213 00000 n 
 0000017247 00000 n 
-0002051391 00000 n 
-0003984009 00000 n 
+0002051387 00000 n 
+0003984005 00000 n 
 0000017301 00000 n 
 0000017353 00000 n 
-0002122740 00000 n 
-0003983944 00000 n 
+0002122736 00000 n 
+0003983940 00000 n 
 0000017412 00000 n 
 0000017456 00000 n 
-0002132221 00000 n 
-0003983851 00000 n 
+0002132217 00000 n 
+0003983847 00000 n 
 0000017510 00000 n 
 0000017564 00000 n 
-0002146057 00000 n 
-0003983772 00000 n 
+0002146053 00000 n 
+0003983768 00000 n 
 0000017618 00000 n 
 0000017656 00000 n 
-0002150307 00000 n 
-0003983693 00000 n 
+0002150303 00000 n 
+0003983689 00000 n 
 0000017705 00000 n 
 0000017746 00000 n 
-0002156384 00000 n 
-0003983575 00000 n 
+0002156380 00000 n 
+0003983571 00000 n 
 0000017794 00000 n 
 0000017849 00000 n 
-0002156507 00000 n 
-0003983457 00000 n 
+0002156503 00000 n 
+0003983453 00000 n 
 0000017899 00000 n 
 0000017931 00000 n 
-0002160033 00000 n 
-0003983392 00000 n 
+0002160029 00000 n 
+0003983388 00000 n 
 0000017986 00000 n 
 0000018022 00000 n 
-0002160095 00000 n 
-0003983260 00000 n 
+0002160091 00000 n 
+0003983256 00000 n 
 0000018072 00000 n 
 0000018117 00000 n 
-0002164227 00000 n 
-0003983195 00000 n 
+0002164223 00000 n 
+0003983191 00000 n 
 0000018172 00000 n 
 0000018208 00000 n 
-0002165862 00000 n 
-0003983077 00000 n 
+0002165858 00000 n 
+0003983073 00000 n 
 0000018258 00000 n 
 0000018292 00000 n 
-0002165924 00000 n 
-0003982973 00000 n 
+0002165920 00000 n 
+0003982969 00000 n 
 0000018347 00000 n 
 0000018403 00000 n 
-0002168853 00000 n 
-0003982908 00000 n 
+0002168849 00000 n 
+0003982904 00000 n 
 0000018463 00000 n 
 0000018508 00000 n 
-0002304340 00000 n 
-0003982787 00000 n 
+0002304336 00000 n 
+0003982783 00000 n 
 0000018552 00000 n 
 0000018593 00000 n 
-0002308100 00000 n 
-0003982669 00000 n 
+0002308096 00000 n 
+0003982665 00000 n 
 0000018641 00000 n 
 0000018701 00000 n 
-0002308225 00000 n 
-0003982551 00000 n 
+0002308221 00000 n 
+0003982547 00000 n 
 0000018751 00000 n 
 0000018783 00000 n 
-0002316495 00000 n 
-0003982486 00000 n 
+0002316491 00000 n 
+0003982482 00000 n 
 0000018838 00000 n 
 0000018874 00000 n 
-0002316557 00000 n 
-0003982354 00000 n 
+0002316553 00000 n 
+0003982350 00000 n 
 0000018924 00000 n 
 0000018969 00000 n 
-0002316618 00000 n 
-0003982250 00000 n 
+0002316614 00000 n 
+0003982246 00000 n 
 0000019024 00000 n 
 0000019060 00000 n 
-0002327396 00000 n 
-0003982185 00000 n 
+0002327392 00000 n 
+0003982181 00000 n 
 0000019120 00000 n 
 0000019156 00000 n 
-0002331660 00000 n 
-0003982053 00000 n 
+0002331656 00000 n 
+0003982049 00000 n 
 0000019206 00000 n 
 0000019240 00000 n 
-0002331785 00000 n 
-0003981974 00000 n 
+0002331781 00000 n 
+0003981970 00000 n 
 0000019295 00000 n 
 0000019336 00000 n 
-0002335936 00000 n 
-0003981842 00000 n 
+0002335932 00000 n 
+0003981838 00000 n 
 0000019391 00000 n 
 0000019436 00000 n 
-0002336250 00000 n 
-0003981763 00000 n 
+0002336246 00000 n 
+0003981759 00000 n 
 0000019496 00000 n 
 0000019535 00000 n 
-0002342160 00000 n 
-0003981684 00000 n 
+0002342156 00000 n 
+0003981680 00000 n 
 0000019595 00000 n 
 0000019632 00000 n 
-0002346664 00000 n 
-0003981591 00000 n 
+0002346660 00000 n 
+0003981587 00000 n 
 0000019687 00000 n 
 0000019749 00000 n 
-0002351910 00000 n 
-0003981459 00000 n 
+0002351906 00000 n 
+0003981455 00000 n 
 0000019804 00000 n 
 0000019850 00000 n 
-0002351971 00000 n 
-0003981380 00000 n 
+0002351967 00000 n 
+0003981376 00000 n 
 0000019910 00000 n 
 0000019973 00000 n 
-0002352474 00000 n 
-0003981287 00000 n 
+0002352470 00000 n 
+0003981283 00000 n 
 0000020033 00000 n 
 0000020095 00000 n 
-0002356336 00000 n 
-0003981208 00000 n 
+0002356332 00000 n 
+0003981204 00000 n 
 0000020155 00000 n 
 0000020207 00000 n 
-0002357992 00000 n 
-0003981129 00000 n 
+0002357988 00000 n 
+0003981125 00000 n 
 0000020262 00000 n 
 0000020300 00000 n 
-0002362239 00000 n 
-0003981050 00000 n 
+0002362235 00000 n 
+0003981046 00000 n 
 0000020350 00000 n 
 0000020391 00000 n 
-0002366821 00000 n 
-0003980918 00000 n 
+0002366817 00000 n 
+0003980914 00000 n 
 0000020439 00000 n 
 0000020490 00000 n 
-0002366944 00000 n 
-0003980800 00000 n 
+0002366940 00000 n 
+0003980796 00000 n 
 0000020540 00000 n 
 0000020572 00000 n 
-0002367005 00000 n 
-0003980735 00000 n 
+0002367001 00000 n 
+0003980731 00000 n 
 0000020627 00000 n 
 0000020663 00000 n 
-0002369727 00000 n 
-0003980603 00000 n 
+0002369723 00000 n 
+0003980599 00000 n 
 0000020713 00000 n 
 0000020758 00000 n 
-0002369789 00000 n 
-0003980524 00000 n 
+0002369785 00000 n 
+0003980520 00000 n 
 0000020813 00000 n 
 0000020849 00000 n 
-0002369851 00000 n 
-0003980445 00000 n 
+0002369847 00000 n 
+0003980441 00000 n 
 0000020904 00000 n 
 0000020940 00000 n 
-0002369913 00000 n 
-0003980313 00000 n 
+0002369909 00000 n 
+0003980309 00000 n 
 0000020990 00000 n 
 0000021024 00000 n 
-0002373847 00000 n 
-0003980234 00000 n 
+0002373843 00000 n 
+0003980230 00000 n 
 0000021079 00000 n 
 0000021139 00000 n 
-0002374285 00000 n 
-0003980102 00000 n 
+0002374281 00000 n 
+0003980098 00000 n 
 0000021194 00000 n 
 0000021236 00000 n 
-0002379496 00000 n 
-0003980023 00000 n 
+0002379492 00000 n 
+0003980019 00000 n 
 0000021296 00000 n 
 0000021335 00000 n 
-0002385598 00000 n 
-0003979930 00000 n 
+0002385594 00000 n 
+0003979926 00000 n 
 0000021395 00000 n 
 0000021432 00000 n 
-0002392024 00000 n 
-0003979851 00000 n 
+0002392020 00000 n 
+0003979847 00000 n 
 0000021492 00000 n 
 0000021531 00000 n 
-0002392086 00000 n 
-0003979758 00000 n 
+0002392082 00000 n 
+0003979754 00000 n 
 0000021586 00000 n 
 0000021619 00000 n 
-0002398282 00000 n 
-0003979679 00000 n 
+0002398278 00000 n 
+0003979675 00000 n 
 0000021674 00000 n 
 0000021712 00000 n 
-0002398344 00000 n 
-0003979600 00000 n 
+0002398340 00000 n 
+0003979596 00000 n 
 0000021762 00000 n 
 0000021803 00000 n 
-0002404989 00000 n 
-0003979468 00000 n 
+0002404985 00000 n 
+0003979464 00000 n 
 0000021851 00000 n 
 0000021913 00000 n 
-0002405114 00000 n 
-0003979389 00000 n 
+0002405110 00000 n 
+0003979385 00000 n 
 0000021963 00000 n 
 0000021995 00000 n 
-0002405176 00000 n 
-0003979296 00000 n 
+0002405172 00000 n 
+0003979292 00000 n 
 0000022045 00000 n 
 0000022090 00000 n 
-0002409392 00000 n 
-0003979164 00000 n 
+0002409388 00000 n 
+0003979160 00000 n 
 0000022140 00000 n 
 0000022199 00000 n 
-0002409454 00000 n 
-0003979046 00000 n 
+0002409450 00000 n 
+0003979042 00000 n 
 0000022254 00000 n 
 0000022289 00000 n 
-0002409516 00000 n 
-0003978967 00000 n 
+0002409512 00000 n 
+0003978963 00000 n 
 0000022349 00000 n 
 0000022382 00000 n 
-0002413756 00000 n 
-0003978874 00000 n 
+0002413752 00000 n 
+0003978870 00000 n 
 0000022442 00000 n 
 0000022477 00000 n 
-0002413819 00000 n 
-0003978795 00000 n 
+0002413815 00000 n 
+0003978791 00000 n 
 0000022537 00000 n 
 0000022575 00000 n 
-0002413882 00000 n 
-0003978702 00000 n 
+0002413878 00000 n 
+0003978698 00000 n 
 0000022630 00000 n 
 0000022669 00000 n 
-0002419893 00000 n 
-0003978609 00000 n 
+0002419889 00000 n 
+0003978605 00000 n 
 0000022724 00000 n 
 0000022768 00000 n 
-0002419956 00000 n 
-0003978516 00000 n 
+0002419952 00000 n 
+0003978512 00000 n 
 0000022823 00000 n 
 0000022890 00000 n 
-0002423904 00000 n 
-0003978423 00000 n 
+0002423900 00000 n 
+0003978419 00000 n 
 0000022945 00000 n 
 0000023020 00000 n 
-0002423967 00000 n 
-0003978330 00000 n 
+0002423963 00000 n 
+0003978326 00000 n 
 0000023075 00000 n 
 0000023129 00000 n 
-0002424030 00000 n 
-0003978237 00000 n 
+0002424026 00000 n 
+0003978233 00000 n 
 0000023184 00000 n 
 0000023262 00000 n 
-0002424093 00000 n 
-0003978144 00000 n 
+0002424089 00000 n 
+0003978140 00000 n 
 0000023317 00000 n 
 0000023354 00000 n 
-0002424156 00000 n 
-0003978065 00000 n 
+0002424152 00000 n 
+0003978061 00000 n 
 0000023409 00000 n 
 0000023446 00000 n 
-0002427909 00000 n 
-0003977986 00000 n 
+0002427905 00000 n 
+0003977982 00000 n 
 0000023496 00000 n 
 0000023534 00000 n 
-0002431955 00000 n 
-0003977854 00000 n 
+0002431951 00000 n 
+0003977850 00000 n 
 0000023582 00000 n 
 0000023615 00000 n 
-0002432018 00000 n 
-0003977775 00000 n 
+0002432014 00000 n 
+0003977771 00000 n 
 0000023665 00000 n 
 0000023697 00000 n 
-0002434566 00000 n 
-0003977696 00000 n 
+0002434562 00000 n 
+0003977692 00000 n 
 0000023747 00000 n 
 0000023785 00000 n 
-0002468420 00000 n 
-0003977562 00000 n 
+0002468416 00000 n 
+0003977558 00000 n 
 0000023833 00000 n 
 0000023883 00000 n 
-0002468547 00000 n 
-0003977483 00000 n 
+0002468543 00000 n 
+0003977479 00000 n 
 0000023933 00000 n 
 0000023999 00000 n 
-0002553981 00000 n 
-0003977390 00000 n 
+0002553977 00000 n 
+0003977386 00000 n 
 0000024049 00000 n 
 0000024095 00000 n 
-0002559022 00000 n 
-0003977297 00000 n 
+0002559018 00000 n 
+0003977293 00000 n 
 0000024145 00000 n 
 0000024179 00000 n 
-0002572028 00000 n 
-0003977165 00000 n 
+0002572024 00000 n 
+0003977161 00000 n 
 0000024229 00000 n 
 0000024272 00000 n 
-0002572091 00000 n 
-0003977086 00000 n 
+0002572087 00000 n 
+0003977082 00000 n 
 0000024327 00000 n 
 0000024393 00000 n 
-0002572997 00000 n 
-0003976993 00000 n 
+0002572993 00000 n 
+0003976989 00000 n 
 0000024448 00000 n 
 0000024514 00000 n 
-0002580262 00000 n 
-0003976914 00000 n 
+0002580258 00000 n 
+0003976910 00000 n 
 0000024569 00000 n 
 0000024614 00000 n 
-0002580324 00000 n 
-0003976782 00000 n 
+0002580320 00000 n 
+0003976778 00000 n 
 0000024664 00000 n 
 0000024724 00000 n 
-0002584952 00000 n 
-0003976717 00000 n 
+0002584948 00000 n 
+0003976713 00000 n 
 0000024779 00000 n 
 0000024834 00000 n 
-0002623789 00000 n 
-0003976622 00000 n 
+0002623785 00000 n 
+0003976618 00000 n 
 0000024884 00000 n 
 0000024929 00000 n 
-0003124928 00000 n 
-0003976525 00000 n 
+0003124924 00000 n 
+0003976521 00000 n 
 0000024980 00000 n 
 0000025026 00000 n 
-0003219264 00000 n 
-0003976427 00000 n 
+0003219260 00000 n 
+0003976423 00000 n 
 0000025077 00000 n 
 0000025166 00000 n 
-0003224505 00000 n 
-0003976303 00000 n 
+0003224501 00000 n 
+0003976299 00000 n 
 0000025217 00000 n 
 0000025259 00000 n 
-0003228991 00000 n 
-0003976219 00000 n 
+0003228987 00000 n 
+0003976215 00000 n 
 0000025315 00000 n 
 0000025352 00000 n 
-0003229055 00000 n 
-0003976120 00000 n 
+0003229051 00000 n 
+0003976116 00000 n 
 0000025408 00000 n 
 0000025450 00000 n 
-0003229119 00000 n 
-0003976036 00000 n 
+0003229115 00000 n 
+0003976032 00000 n 
 0000025506 00000 n 
 0000025557 00000 n 
-0003236367 00000 n 
-0003975898 00000 n 
+0003236363 00000 n 
+0003975894 00000 n 
 0000025606 00000 n 
 0000025644 00000 n 
-0003236496 00000 n 
-0003975814 00000 n 
+0003236492 00000 n 
+0003975810 00000 n 
 0000025695 00000 n 
 0000025738 00000 n 
-0003240159 00000 n 
-0003975674 00000 n 
+0003240155 00000 n 
+0003975670 00000 n 
 0000025789 00000 n 
 0000025822 00000 n 
-0003240223 00000 n 
-0003975605 00000 n 
+0003240219 00000 n 
+0003975601 00000 n 
 0000025878 00000 n 
 0000025915 00000 n 
-0003240547 00000 n 
-0003975465 00000 n 
+0003240543 00000 n 
+0003975461 00000 n 
 0000025966 00000 n 
 0000025996 00000 n 
-0003243664 00000 n 
-0003975340 00000 n 
+0003243660 00000 n 
+0003975336 00000 n 
 0000026052 00000 n 
 0000026106 00000 n 
-0003244313 00000 n 
-0003975271 00000 n 
+0003244309 00000 n 
+0003975267 00000 n 
 0000026167 00000 n 
 0000026196 00000 n 
-0003300558 00000 n 
-0003975131 00000 n 
+0003300554 00000 n 
+0003975127 00000 n 
 0000026252 00000 n 
 0000026317 00000 n 
-0003305420 00000 n 
-0003975062 00000 n 
+0003305416 00000 n 
+0003975058 00000 n 
 0000026378 00000 n 
 0000026407 00000 n 
-0003334912 00000 n 
-0003974922 00000 n 
+0003334908 00000 n 
+0003974918 00000 n 
 0000026463 00000 n 
 0000026532 00000 n 
-0003335624 00000 n 
-0003974853 00000 n 
+0003335620 00000 n 
+0003974849 00000 n 
 0000026593 00000 n 
 0000026635 00000 n 
-0003368791 00000 n 
-0003974713 00000 n 
+0003368787 00000 n 
+0003974709 00000 n 
 0000026691 00000 n 
 0000026759 00000 n 
-0003406945 00000 n 
-0003974644 00000 n 
+0003406941 00000 n 
+0003974640 00000 n 
 0000026820 00000 n 
 0000026851 00000 n 
-0003407009 00000 n 
-0003974560 00000 n 
+0003407005 00000 n 
+0003974556 00000 n 
 0000026907 00000 n 
 0000026952 00000 n 
-0003410471 00000 n 
-0003974420 00000 n 
+0003410467 00000 n 
+0003974416 00000 n 
 0000027003 00000 n 
 0000027049 00000 n 
-0003410600 00000 n 
-0003974351 00000 n 
+0003410596 00000 n 
+0003974347 00000 n 
 0000027105 00000 n 
 0000027142 00000 n 
-0003410663 00000 n 
-0003974267 00000 n 
+0003410659 00000 n 
+0003974263 00000 n 
 0000027193 00000 n 
 0000027235 00000 n 
-0003418050 00000 n 
-0003974169 00000 n 
+0003418046 00000 n 
+0003974165 00000 n 
 0000027284 00000 n 
 0000027341 00000 n 
-0003453985 00000 n 
-0003974071 00000 n 
+0003453981 00000 n 
+0003974067 00000 n 
 0000027390 00000 n 
 0000027419 00000 n 
-0003488846 00000 n 
-0003973988 00000 n 
+0003488842 00000 n 
+0003973984 00000 n 
 0000027468 00000 n 
 0000027494 00000 n 
 0000028035 00000 n 
 0000028284 00000 n 
 0000027549 00000 n 
 0000028158 00000 n 
-0003964083 00000 n 
-0003963359 00000 n 
+0003964079 00000 n 
+0003963355 00000 n 
 0000028221 00000 n 
-0003963182 00000 n 
-0003964447 00000 n 
-0000029774 00000 n 
-0000029588 00000 n 
+0003963178 00000 n 
+0003964443 00000 n 
+0000029770 00000 n 
+0000029584 00000 n 
 0000028386 00000 n 
-0000029711 00000 n 
-0003963536 00000 n 
-0000031440 00000 n 
-0000031590 00000 n 
-0000031743 00000 n 
-0000031898 00000 n 
-0000032053 00000 n 
-0000032212 00000 n 
-0000032376 00000 n 
-0000032541 00000 n 
-0000032706 00000 n 
-0000032866 00000 n 
-0000033030 00000 n 
-0000033195 00000 n 
-0000033359 00000 n 
-0000033518 00000 n 
-0000033682 00000 n 
-0000033846 00000 n 
-0000033999 00000 n 
-0000034151 00000 n 
-0000034305 00000 n 
-0000034464 00000 n 
-0000034617 00000 n 
-0000034776 00000 n 
-0000034935 00000 n 
-0000035089 00000 n 
-0000035248 00000 n 
-0000035407 00000 n 
-0000035565 00000 n 
-0000037840 00000 n 
-0000037991 00000 n 
-0000038145 00000 n 
-0000038304 00000 n 
-0000035842 00000 n 
-0000031062 00000 n 
-0000029890 00000 n 
-0000035717 00000 n 
-0000035780 00000 n 
-0003963718 00000 n 
-0000038458 00000 n 
-0000038617 00000 n 
-0000038781 00000 n 
-0000038939 00000 n 
-0000039093 00000 n 
-0000039252 00000 n 
-0000039411 00000 n 
-0000039570 00000 n 
-0000039728 00000 n 
-0000039887 00000 n 
-0000040046 00000 n 
-0000040205 00000 n 
-0000040369 00000 n 
-0000040528 00000 n 
-0000040683 00000 n 
-0000040837 00000 n 
-0000040989 00000 n 
-0000041143 00000 n 
-0000041302 00000 n 
-0000041456 00000 n 
-0000041615 00000 n 
-0000041774 00000 n 
-0000041928 00000 n 
-0000042087 00000 n 
-0000042245 00000 n 
-0000042403 00000 n 
-0000042567 00000 n 
-0000042731 00000 n 
-0000042890 00000 n 
-0000043049 00000 n 
-0000043208 00000 n 
-0000045803 00000 n 
-0000045954 00000 n 
-0000046108 00000 n 
-0000046262 00000 n 
-0000046421 00000 n 
-0000046575 00000 n 
-0000046734 00000 n 
-0000043424 00000 n 
-0000037390 00000 n 
-0000035958 00000 n 
-0000043361 00000 n 
-0003962822 00000 n 
-0000046898 00000 n 
-0000047062 00000 n 
-0000047225 00000 n 
-0000047389 00000 n 
-0000047553 00000 n 
-0000047717 00000 n 
-0000047879 00000 n 
-0000048041 00000 n 
-0000048203 00000 n 
-0000048365 00000 n 
-0000048527 00000 n 
-0000048689 00000 n 
-0000048851 00000 n 
-0000049009 00000 n 
-0000049167 00000 n 
-0000049321 00000 n 
-0000049480 00000 n 
-0000049639 00000 n 
-0000049798 00000 n 
-0000049958 00000 n 
-0000050123 00000 n 
-0000050288 00000 n 
-0000050453 00000 n 
-0000050613 00000 n 
-0000050773 00000 n 
-0000050927 00000 n 
-0000051082 00000 n 
-0000051242 00000 n 
-0000051402 00000 n 
-0000051561 00000 n 
-0000051721 00000 n 
-0000051875 00000 n 
-0000054323 00000 n 
-0000054482 00000 n 
-0000054642 00000 n 
-0000054802 00000 n 
-0000054962 00000 n 
-0000052096 00000 n 
-0000045317 00000 n 
-0000043540 00000 n 
-0000052033 00000 n 
-0000055122 00000 n 
-0000055277 00000 n 
-0000055431 00000 n 
-0000055584 00000 n 
-0000055739 00000 n 
-0000055899 00000 n 
-0000056053 00000 n 
-0000056213 00000 n 
-0000056378 00000 n 
-0000056543 00000 n 
-0000056708 00000 n 
-0000056868 00000 n 
-0000057022 00000 n 
-0000057182 00000 n 
-0000057337 00000 n 
-0000057483 00000 n 
-0000057635 00000 n 
-0000057790 00000 n 
-0000057950 00000 n 
-0000058105 00000 n 
-0000058265 00000 n 
-0000058424 00000 n 
-0000058579 00000 n 
-0000058739 00000 n 
-0000058899 00000 n 
-0000059059 00000 n 
-0000059219 00000 n 
-0000059382 00000 n 
-0000059547 00000 n 
-0000059712 00000 n 
-0000059874 00000 n 
-0000062397 00000 n 
-0000062556 00000 n 
-0000062720 00000 n 
-0000062885 00000 n 
-0000063044 00000 n 
-0000060098 00000 n 
-0000053864 00000 n 
-0000052198 00000 n 
-0000060035 00000 n 
-0000063199 00000 n 
-0000063352 00000 n 
-0000063507 00000 n 
-0000063667 00000 n 
-0000063832 00000 n 
-0000063997 00000 n 
-0000064162 00000 n 
-0000064327 00000 n 
-0000064491 00000 n 
-0000064656 00000 n 
-0000064811 00000 n 
-0000064970 00000 n 
-0000065129 00000 n 
-0000065289 00000 n 
-0000065444 00000 n 
-0000065603 00000 n 
-0000065768 00000 n 
-0000065933 00000 n 
-0000066098 00000 n 
-0000066258 00000 n 
-0000066423 00000 n 
-0000066588 00000 n 
-0000066748 00000 n 
-0000066901 00000 n 
-0000067056 00000 n 
-0000067216 00000 n 
-0000067370 00000 n 
-0000067529 00000 n 
-0000067689 00000 n 
-0000067843 00000 n 
-0000068002 00000 n 
-0000068167 00000 n 
-0000068327 00000 n 
-0000068486 00000 n 
-0000070780 00000 n 
-0000070933 00000 n 
-0000071089 00000 n 
-0000068702 00000 n 
-0000061911 00000 n 
-0000060200 00000 n 
-0000068639 00000 n 
-0003964573 00000 n 
-0000071250 00000 n 
-0000071406 00000 n 
-0000071567 00000 n 
-0000071723 00000 n 
-0000071883 00000 n 
-0000072048 00000 n 
-0000072194 00000 n 
-0000072348 00000 n 
-0000072503 00000 n 
-0000072664 00000 n 
-0000072820 00000 n 
-0000072981 00000 n 
-0000073147 00000 n 
-0000073302 00000 n 
-0000073463 00000 n 
-0000073624 00000 n 
-0000073790 00000 n 
-0000073956 00000 n 
-0000074117 00000 n 
-0000074277 00000 n 
-0000074443 00000 n 
-0000074609 00000 n 
-0000074775 00000 n 
-0000074936 00000 n 
-0000075091 00000 n 
-0000075245 00000 n 
-0000075401 00000 n 
-0000075562 00000 n 
-0000075718 00000 n 
-0000075877 00000 n 
-0000076038 00000 n 
-0000076194 00000 n 
-0000076354 00000 n 
-0000078847 00000 n 
-0000079012 00000 n 
-0000079178 00000 n 
-0000079344 00000 n 
-0000079505 00000 n 
-0000076576 00000 n 
-0000070321 00000 n 
-0000068804 00000 n 
-0000076513 00000 n 
-0000079666 00000 n 
-0000079822 00000 n 
-0000079975 00000 n 
-0000080131 00000 n 
-0000080287 00000 n 
-0000080443 00000 n 
-0000080604 00000 n 
-0000080769 00000 n 
-0000080934 00000 n 
-0000081100 00000 n 
-0000081261 00000 n 
-0000081422 00000 n 
-0000081583 00000 n 
-0000081744 00000 n 
-0000081905 00000 n 
-0000082066 00000 n 
-0000082226 00000 n 
-0000082386 00000 n 
-0000082542 00000 n 
-0000082696 00000 n 
-0000082852 00000 n 
-0000083008 00000 n 
-0000083162 00000 n 
-0000083317 00000 n 
-0000083472 00000 n 
-0000083628 00000 n 
-0000083784 00000 n 
-0000083945 00000 n 
-0000084105 00000 n 
-0000084265 00000 n 
-0000084421 00000 n 
-0000084581 00000 n 
-0000086619 00000 n 
-0000086774 00000 n 
-0000086930 00000 n 
-0000087086 00000 n 
-0000087247 00000 n 
-0000084798 00000 n 
-0000078379 00000 n 
-0000076678 00000 n 
-0000084735 00000 n 
-0000087408 00000 n 
-0000087569 00000 n 
-0000087723 00000 n 
-0000087879 00000 n 
-0000088035 00000 n 
-0000088196 00000 n 
-0000088351 00000 n 
-0000088512 00000 n 
-0000088678 00000 n 
-0000088839 00000 n 
-0000089005 00000 n 
-0000089166 00000 n 
-0000089331 00000 n 
-0000089492 00000 n 
-0000089658 00000 n 
-0000089819 00000 n 
-0000089975 00000 n 
-0000090136 00000 n 
-0000090292 00000 n 
-0000090446 00000 n 
-0000090600 00000 n 
-0000090817 00000 n 
-0000086250 00000 n 
-0000084900 00000 n 
-0000090754 00000 n 
-0000092786 00000 n 
-0000092940 00000 n 
-0000093092 00000 n 
-0000093245 00000 n 
-0000093396 00000 n 
-0000093549 00000 n 
-0000093702 00000 n 
-0000093855 00000 n 
-0000094008 00000 n 
-0000094162 00000 n 
-0000094316 00000 n 
-0000094470 00000 n 
-0000094623 00000 n 
-0000094777 00000 n 
-0000094931 00000 n 
-0000095085 00000 n 
-0000095239 00000 n 
-0000095392 00000 n 
-0000095546 00000 n 
-0000095700 00000 n 
-0000095854 00000 n 
-0000096009 00000 n 
-0000096164 00000 n 
-0000096319 00000 n 
-0000096473 00000 n 
-0000098018 00000 n 
-0000098172 00000 n 
-0000098327 00000 n 
-0000098482 00000 n 
-0000096751 00000 n 
-0000092426 00000 n 
-0000090919 00000 n 
-0000096626 00000 n 
-0000096689 00000 n 
-0000185997 00000 n 
-0000240160 00000 n 
-0000300595 00000 n 
-0000411279 00000 n 
-0000666268 00000 n 
-0000836694 00000 n 
-0000949692 00000 n 
-0001145123 00000 n 
-0001209845 00000 n 
-0001210220 00000 n 
-0001346510 00000 n 
-0001346949 00000 n 
-0001347075 00000 n 
-0001500988 00000 n 
-0001601965 00000 n 
-0001632365 00000 n 
-0001705104 00000 n 
-0001818712 00000 n 
-0002012737 00000 n 
-0002046772 00000 n 
-0002468932 00000 n 
-0002513844 00000 n 
-0002514103 00000 n 
-0002549611 00000 n 
-0002549871 00000 n 
-0000098637 00000 n 
-0000098793 00000 n 
-0000098949 00000 n 
-0000099104 00000 n 
-0000099259 00000 n 
-0000099414 00000 n 
-0000099569 00000 n 
-0000099723 00000 n 
-0000099878 00000 n 
-0000100033 00000 n 
-0000100251 00000 n 
-0000097757 00000 n 
-0000096867 00000 n 
-0000100188 00000 n 
-0002708275 00000 n 
-0002783984 00000 n 
-0002877625 00000 n 
-0003038894 00000 n 
-0003039023 00000 n 
-0003119987 00000 n 
-0003219135 00000 n 
-0003273094 00000 n 
-0003300429 00000 n 
-0003330829 00000 n 
-0003351483 00000 n 
-0003368662 00000 n 
-0003388944 00000 n 
-0003406816 00000 n 
-0000101723 00000 n 
-0000101875 00000 n 
-0000102027 00000 n 
-0000102179 00000 n 
-0000102329 00000 n 
-0000102481 00000 n 
-0000102633 00000 n 
-0000102785 00000 n 
-0000102937 00000 n 
-0000103090 00000 n 
-0000103243 00000 n 
-0000103396 00000 n 
-0000103550 00000 n 
-0000103892 00000 n 
-0000101471 00000 n 
-0000100339 00000 n 
-0000103704 00000 n 
-0000103767 00000 n 
-0000103829 00000 n 
-0003964699 00000 n 
-0000121105 00000 n 
-0000240285 00000 n 
-0000411154 00000 n 
-0000491231 00000 n 
-0000672823 00000 n 
-0000836945 00000 n 
-0000953265 00000 n 
-0001023019 00000 n 
-0001145249 00000 n 
-0002051453 00000 n 
-0002409267 00000 n 
-0003304966 00000 n 
-0003330700 00000 n 
-0000106186 00000 n 
-0000105937 00000 n 
-0000104008 00000 n 
-0000106060 00000 n 
-0000106123 00000 n 
-0003964263 00000 n 
-0000108658 00000 n 
-0000108409 00000 n 
-0000106302 00000 n 
-0000108532 00000 n 
-0000108595 00000 n 
-0000112626 00000 n 
-0000112315 00000 n 
-0000108774 00000 n 
-0000112438 00000 n 
-0000112501 00000 n 
-0000112564 00000 n 
-0000113585 00000 n 
-0000113399 00000 n 
-0000112742 00000 n 
-0000113522 00000 n 
-0000120890 00000 n 
-0000117354 00000 n 
-0000116917 00000 n 
-0000113673 00000 n 
-0000117040 00000 n 
-0000117103 00000 n 
-0000117166 00000 n 
-0000117228 00000 n 
-0000117291 00000 n 
-0000121292 00000 n 
-0000120746 00000 n 
-0000117470 00000 n 
-0000121042 00000 n 
-0000121167 00000 n 
-0000121229 00000 n 
-0003964825 00000 n 
-0000125803 00000 n 
-0000125491 00000 n 
-0000121436 00000 n 
-0000125614 00000 n 
-0000125677 00000 n 
-0000125740 00000 n 
-0003963000 00000 n 
-0000130914 00000 n 
-0000131159 00000 n 
-0000130770 00000 n 
-0000125961 00000 n 
-0000131096 00000 n 
-0000135771 00000 n 
-0000135522 00000 n 
-0000131289 00000 n 
-0000135645 00000 n 
-0000135708 00000 n 
-0000137158 00000 n 
-0000136972 00000 n 
-0000135901 00000 n 
-0000137095 00000 n 
-0003962349 00000 n 
-0000137929 00000 n 
-0000137743 00000 n 
-0000137288 00000 n 
-0000137866 00000 n 
-0000138734 00000 n 
-0000138488 00000 n 
-0000138017 00000 n 
-0000138611 00000 n 
-0003964951 00000 n 
-0000141627 00000 n 
-0000141135 00000 n 
-0000138836 00000 n 
-0000141258 00000 n 
-0000141321 00000 n 
-0000141445 00000 n 
-0000146105 00000 n 
-0000146274 00000 n 
-0000147187 00000 n 
-0000145952 00000 n 
-0000141729 00000 n 
-0000146443 00000 n 
-0000146689 00000 n 
-0000146752 00000 n 
-0000146815 00000 n 
-0000146878 00000 n 
-0000146939 00000 n 
-0000147002 00000 n 
-0000147065 00000 n 
-0000147126 00000 n 
-0000151110 00000 n 
-0000153867 00000 n 
-0000150966 00000 n 
-0000147331 00000 n 
-0000151267 00000 n 
-0000151330 00000 n 
-0000151393 00000 n 
-0003962496 00000 n 
-0000151456 00000 n 
-0000151519 00000 n 
-0000151582 00000 n 
-0000151645 00000 n 
-0000151708 00000 n 
-0000151771 00000 n 
-0000151833 00000 n 
-0000151896 00000 n 
-0000151959 00000 n 
-0000152022 00000 n 
-0000152085 00000 n 
-0000152148 00000 n 
-0000152211 00000 n 
-0000152272 00000 n 
-0000152335 00000 n 
-0000152398 00000 n 
-0000152459 00000 n 
-0000152520 00000 n 
-0000152583 00000 n 
-0000152645 00000 n 
-0000152707 00000 n 
-0000152830 00000 n 
-0000152893 00000 n 
-0000152956 00000 n 
-0000153019 00000 n 
-0000153080 00000 n 
-0000153141 00000 n 
-0000153202 00000 n 
-0000153263 00000 n 
-0000153323 00000 n 
-0000153384 00000 n 
-0000153445 00000 n 
-0000153506 00000 n 
-0000153567 00000 n 
-0000153628 00000 n 
-0000153689 00000 n 
-0000153750 00000 n 
-0000153811 00000 n 
-0000185411 00000 n 
-0000185563 00000 n 
-0000159177 00000 n 
-0000158620 00000 n 
-0000154010 00000 n 
-0000158743 00000 n 
-0000158806 00000 n 
-0000158869 00000 n 
-0000158932 00000 n 
-0000158993 00000 n 
-0000185720 00000 n 
-0000162515 00000 n 
-0000186308 00000 n 
-0000162353 00000 n 
-0000159349 00000 n 
-0000185874 00000 n 
-0000186059 00000 n 
-0000186122 00000 n 
-0000186184 00000 n 
-0000186247 00000 n 
-0000172384 00000 n 
-0002468483 00000 n 
-0003219328 00000 n 
-0000190265 00000 n 
-0000190427 00000 n 
-0000197020 00000 n 
-0000192437 00000 n 
-0000190112 00000 n 
-0000186475 00000 n 
-0000190585 00000 n 
-0000190648 00000 n 
-0000190711 00000 n 
-0000190774 00000 n 
-0000190835 00000 n 
-0000190896 00000 n 
-0000190957 00000 n 
-0000191018 00000 n 
-0000191079 00000 n 
-0000191140 00000 n 
-0000191202 00000 n 
-0000191265 00000 n 
-0000191328 00000 n 
-0000191389 00000 n 
-0000191450 00000 n 
-0000191513 00000 n 
-0000191575 00000 n 
-0000191638 00000 n 
-0000191699 00000 n 
-0000191760 00000 n 
-0000191821 00000 n 
-0000191883 00000 n 
-0000191944 00000 n 
-0000192004 00000 n 
-0000192065 00000 n 
-0000192126 00000 n 
-0000192187 00000 n 
-0000192250 00000 n 
-0000192313 00000 n 
-0000192376 00000 n 
-0003965077 00000 n 
-0000200365 00000 n 
-0000207583 00000 n 
-0000200427 00000 n 
-0000196876 00000 n 
-0000192553 00000 n 
-0000197174 00000 n 
-0000197237 00000 n 
-0000197300 00000 n 
-0000197363 00000 n 
-0000197426 00000 n 
-0000197486 00000 n 
-0000197547 00000 n 
-0000197610 00000 n 
-0000197672 00000 n 
-0000197733 00000 n 
-0000197796 00000 n 
-0000197859 00000 n 
-0000197920 00000 n 
-0000197983 00000 n 
-0000198046 00000 n 
-0000198107 00000 n 
-0000198168 00000 n 
-0000198229 00000 n 
-0000198290 00000 n 
-0000198353 00000 n 
-0000198416 00000 n 
-0000198478 00000 n 
-0000198541 00000 n 
-0000198604 00000 n 
-0000198667 00000 n 
-0000198730 00000 n 
-0000198793 00000 n 
-0000198856 00000 n 
-0000198919 00000 n 
-0000198982 00000 n 
-0000199044 00000 n 
-0000199107 00000 n 
-0000199170 00000 n 
-0000199233 00000 n 
-0000199296 00000 n 
-0000199359 00000 n 
-0000199422 00000 n 
-0000199485 00000 n 
-0000199548 00000 n 
-0000199611 00000 n 
-0000199674 00000 n 
-0000199737 00000 n 
-0000199800 00000 n 
-0000199863 00000 n 
-0000199926 00000 n 
-0000199989 00000 n 
-0000200052 00000 n 
-0000200115 00000 n 
-0000200178 00000 n 
-0000200240 00000 n 
-0000200303 00000 n 
-0000205082 00000 n 
-0000205236 00000 n 
-0000208150 00000 n 
-0000204929 00000 n 
-0000200570 00000 n 
-0000205383 00000 n 
-0000205446 00000 n 
-0000205509 00000 n 
-0000205572 00000 n 
-0000205635 00000 n 
-0000205697 00000 n 
-0000205760 00000 n 
-0000205823 00000 n 
-0000205886 00000 n 
-0000205949 00000 n 
-0000206012 00000 n 
-0000206075 00000 n 
-0000206138 00000 n 
-0000206201 00000 n 
-0000206263 00000 n 
-0000206326 00000 n 
-0000206389 00000 n 
-0000206452 00000 n 
-0000206515 00000 n 
-0000206578 00000 n 
-0000206641 00000 n 
-0000206704 00000 n 
-0000206767 00000 n 
-0000206828 00000 n 
-0000206891 00000 n 
-0000206954 00000 n 
-0000207017 00000 n 
-0000207080 00000 n 
-0000207143 00000 n 
-0000207206 00000 n 
-0000207269 00000 n 
-0000207332 00000 n 
-0000207394 00000 n 
-0000207457 00000 n 
-0000207520 00000 n 
-0000207646 00000 n 
-0000207709 00000 n 
-0000207772 00000 n 
-0000207835 00000 n 
-0000207898 00000 n 
-0000207961 00000 n 
-0000208024 00000 n 
-0000208087 00000 n 
-0000212432 00000 n 
-0000211777 00000 n 
-0000213809 00000 n 
-0000211633 00000 n 
-0000208293 00000 n 
-0000211928 00000 n 
-0000211991 00000 n 
-0000212054 00000 n 
-0000212117 00000 n 
-0000212180 00000 n 
-0000212243 00000 n 
-0000212306 00000 n 
-0000212369 00000 n 
-0000212495 00000 n 
-0000212556 00000 n 
-0000212617 00000 n 
-0000212680 00000 n 
-0000212743 00000 n 
-0000212806 00000 n 
-0000212869 00000 n 
-0000212932 00000 n 
-0000212993 00000 n 
-0000213056 00000 n 
-0000213119 00000 n 
-0000213182 00000 n 
-0000213245 00000 n 
-0000213307 00000 n 
-0000213370 00000 n 
-0000213433 00000 n 
-0000213496 00000 n 
-0000213559 00000 n 
-0000213622 00000 n 
-0000213685 00000 n 
-0000217179 00000 n 
-0000217333 00000 n 
-0000221016 00000 n 
-0000217860 00000 n 
-0000217026 00000 n 
-0000213953 00000 n 
-0000217488 00000 n 
-0000217612 00000 n 
-0000217797 00000 n 
-0000240348 00000 n 
-0000240223 00000 n 
-0000239791 00000 n 
-0000239943 00000 n 
-0000240913 00000 n 
-0000220863 00000 n 
-0000217976 00000 n 
-0000240097 00000 n 
-0000240411 00000 n 
-0000240474 00000 n 
-0000240537 00000 n 
-0000240600 00000 n 
-0000240663 00000 n 
-0000240726 00000 n 
-0000240787 00000 n 
-0000240850 00000 n 
-0000229281 00000 n 
-0000253785 00000 n 
-0000246841 00000 n 
-0000244063 00000 n 
-0000241080 00000 n 
-0000244186 00000 n 
-0000244249 00000 n 
-0000244312 00000 n 
-0000244373 00000 n 
-0000244434 00000 n 
-0000244495 00000 n 
-0000244556 00000 n 
-0000244617 00000 n 
-0000244678 00000 n 
-0000244738 00000 n 
-0000244799 00000 n 
-0000244860 00000 n 
-0000244923 00000 n 
-0000244986 00000 n 
-0000245047 00000 n 
-0000245108 00000 n 
-0000245168 00000 n 
-0000245229 00000 n 
-0000245290 00000 n 
-0000245351 00000 n 
-0000245412 00000 n 
-0000245473 00000 n 
-0000245534 00000 n 
-0000245596 00000 n 
-0000245659 00000 n 
-0000245720 00000 n 
-0000245783 00000 n 
-0000245845 00000 n 
-0000245906 00000 n 
-0000245969 00000 n 
-0000246032 00000 n 
-0000246093 00000 n 
-0000246156 00000 n 
-0000246219 00000 n 
-0000246280 00000 n 
-0000246341 00000 n 
-0000246402 00000 n 
-0000246463 00000 n 
-0000246526 00000 n 
-0000246589 00000 n 
-0000246652 00000 n 
-0000246715 00000 n 
-0000246778 00000 n 
-0003965203 00000 n 
-0000253908 00000 n 
-0000251350 00000 n 
-0000246943 00000 n 
-0000251473 00000 n 
-0000251536 00000 n 
-0000251599 00000 n 
-0000251660 00000 n 
-0000251723 00000 n 
-0000251784 00000 n 
-0000251845 00000 n 
-0000251906 00000 n 
-0000251967 00000 n 
-0000252028 00000 n 
-0000252088 00000 n 
-0000252149 00000 n 
-0000252212 00000 n 
-0000252275 00000 n 
-0000252338 00000 n 
-0000252401 00000 n 
-0000252464 00000 n 
-0000252527 00000 n 
-0000252590 00000 n 
-0000252652 00000 n 
-0000252715 00000 n 
-0000252778 00000 n 
-0000252841 00000 n 
-0000252904 00000 n 
-0000252967 00000 n 
-0000253030 00000 n 
-0000253093 00000 n 
-0000253156 00000 n 
-0000253218 00000 n 
-0000253281 00000 n 
-0000253344 00000 n 
-0000253407 00000 n 
-0000253470 00000 n 
-0000253533 00000 n 
-0000253596 00000 n 
-0000253659 00000 n 
-0000253722 00000 n 
-0000258762 00000 n 
-0000258576 00000 n 
-0000254079 00000 n 
-0000258699 00000 n 
-0000260313 00000 n 
-0000260127 00000 n 
-0000258892 00000 n 
-0000260250 00000 n 
-0000263907 00000 n 
-0000264364 00000 n 
-0000263763 00000 n 
-0000260415 00000 n 
-0000264055 00000 n 
-0000264179 00000 n 
-0000268027 00000 n 
-0000268187 00000 n 
-0000268522 00000 n 
-0000267874 00000 n 
-0000264466 00000 n 
-0000268337 00000 n 
-0000324180 00000 n 
-0000300104 00000 n 
-0000300256 00000 n 
-0000271592 00000 n 
-0000300720 00000 n 
-0000271439 00000 n 
-0000268638 00000 n 
-0000300410 00000 n 
-0000300658 00000 n 
-0003965329 00000 n 
-0000288708 00000 n 
-0001985204 00000 n 
-0000304232 00000 n 
-0000304384 00000 n 
-0000310734 00000 n 
-0000307178 00000 n 
-0000304079 00000 n 
-0000300901 00000 n 
-0000304537 00000 n 
-0000304600 00000 n 
-0000304663 00000 n 
-0000304726 00000 n 
-0000304789 00000 n 
-0000304849 00000 n 
-0000304910 00000 n 
-0000304971 00000 n 
-0000305032 00000 n 
-0000305093 00000 n 
-0000305156 00000 n 
-0000305219 00000 n 
-0000305282 00000 n 
-0000305344 00000 n 
-0000305405 00000 n 
-0000305468 00000 n 
-0000305527 00000 n 
-0000305590 00000 n 
-0000305651 00000 n 
-0000305712 00000 n 
-0000305773 00000 n 
-0000305834 00000 n 
-0000305897 00000 n 
-0000305960 00000 n 
-0000306021 00000 n 
-0000306082 00000 n 
-0000306142 00000 n 
-0000306203 00000 n 
-0000306264 00000 n 
-0000306325 00000 n 
-0000306386 00000 n 
-0000306447 00000 n 
-0000306508 00000 n 
-0000306569 00000 n 
-0000306630 00000 n 
-0000306690 00000 n 
-0000306751 00000 n 
-0000306812 00000 n 
-0000306873 00000 n 
-0000306934 00000 n 
-0000306995 00000 n 
-0000307056 00000 n 
-0000307117 00000 n 
-0000331816 00000 n 
-0000333700 00000 n 
-0000314103 00000 n 
-0000310590 00000 n 
-0000307294 00000 n 
-0000310886 00000 n 
-0000310949 00000 n 
-0000311012 00000 n 
-0000311075 00000 n 
-0000311137 00000 n 
-0000311200 00000 n 
-0000311263 00000 n 
-0000311326 00000 n 
-0000311389 00000 n 
-0000311452 00000 n 
-0000311515 00000 n 
-0000311578 00000 n 
-0000311641 00000 n 
-0000311703 00000 n 
-0000311766 00000 n 
-0000311829 00000 n 
-0000311892 00000 n 
-0000311955 00000 n 
-0000312018 00000 n 
-0000312081 00000 n 
-0000312144 00000 n 
-0000312207 00000 n 
-0000312270 00000 n 
-0000312333 00000 n 
-0000312394 00000 n 
-0000312455 00000 n 
-0000312515 00000 n 
-0000312576 00000 n 
-0000312637 00000 n 
-0000312698 00000 n 
-0000312759 00000 n 
-0000312820 00000 n 
-0000312881 00000 n 
-0000312942 00000 n 
-0000313003 00000 n 
-0000313063 00000 n 
-0000313124 00000 n 
-0000313185 00000 n 
-0000313246 00000 n 
-0000313307 00000 n 
-0000313368 00000 n 
-0000313429 00000 n 
-0000313490 00000 n 
-0000313551 00000 n 
-0000313611 00000 n 
-0000313672 00000 n 
-0000313733 00000 n 
-0000313794 00000 n 
-0000313855 00000 n 
-0000313916 00000 n 
-0000313977 00000 n 
-0000314040 00000 n 
-0000316532 00000 n 
-0000316684 00000 n 
-0000318193 00000 n 
-0000316379 00000 n 
-0000314219 00000 n 
-0000316833 00000 n 
-0000316896 00000 n 
-0000316959 00000 n 
-0000317022 00000 n 
-0000317085 00000 n 
-0000317146 00000 n 
-0000317207 00000 n 
-0000317268 00000 n 
-0000317329 00000 n 
-0000317389 00000 n 
-0000317452 00000 n 
-0000317515 00000 n 
-0000317576 00000 n 
-0000317637 00000 n 
-0000317696 00000 n 
-0000317757 00000 n 
-0000317820 00000 n 
-0000317882 00000 n 
-0000317943 00000 n 
-0000318006 00000 n 
-0000318069 00000 n 
-0000318130 00000 n 
-0000324919 00000 n 
-0000321226 00000 n 
-0000318309 00000 n 
-0000321349 00000 n 
-0000321412 00000 n 
-0000321475 00000 n 
-0000321538 00000 n 
-0000321601 00000 n 
-0000321664 00000 n 
-0000321727 00000 n 
-0000321790 00000 n 
-0000321853 00000 n 
-0000321916 00000 n 
-0000321979 00000 n 
-0000322042 00000 n 
-0000322105 00000 n 
-0000322167 00000 n 
-0000322230 00000 n 
-0000322293 00000 n 
-0000322356 00000 n 
-0000322419 00000 n 
-0000322482 00000 n 
-0000322545 00000 n 
-0000322608 00000 n 
-0000322671 00000 n 
-0000322733 00000 n 
-0000322796 00000 n 
-0000322859 00000 n 
-0000322922 00000 n 
-0000322985 00000 n 
-0000323048 00000 n 
-0000323111 00000 n 
-0000323174 00000 n 
-0000323237 00000 n 
-0000323299 00000 n 
-0000323362 00000 n 
-0000323425 00000 n 
-0000323488 00000 n 
-0000323551 00000 n 
-0000323614 00000 n 
-0000323677 00000 n 
-0000323740 00000 n 
-0000323803 00000 n 
-0000323865 00000 n 
-0000323928 00000 n 
-0000323991 00000 n 
-0000324054 00000 n 
-0000324117 00000 n 
-0000324243 00000 n 
-0000324306 00000 n 
-0000324369 00000 n 
-0000324430 00000 n 
-0000324491 00000 n 
-0000324552 00000 n 
-0000324613 00000 n 
-0000324674 00000 n 
-0000324734 00000 n 
-0000324797 00000 n 
-0000324859 00000 n 
-0000333763 00000 n 
-0000330122 00000 n 
-0000325035 00000 n 
-0000330245 00000 n 
-0000330308 00000 n 
-0000330371 00000 n 
-0000330434 00000 n 
-0000330497 00000 n 
-0000330559 00000 n 
-0000330622 00000 n 
-0000330685 00000 n 
-0000330748 00000 n 
-0000330811 00000 n 
-0000330874 00000 n 
-0000330937 00000 n 
-0000331000 00000 n 
-0000331063 00000 n 
-0000331125 00000 n 
-0000331188 00000 n 
-0000331251 00000 n 
-0000331314 00000 n 
-0000331377 00000 n 
-0000331440 00000 n 
-0000331503 00000 n 
-0000331566 00000 n 
-0000331629 00000 n 
-0000331690 00000 n 
-0000331753 00000 n 
-0000331879 00000 n 
-0000331942 00000 n 
-0000332005 00000 n 
-0000332068 00000 n 
-0000332131 00000 n 
-0000332194 00000 n 
-0000332257 00000 n 
-0000332316 00000 n 
-0000332379 00000 n 
-0000332442 00000 n 
-0000332505 00000 n 
-0000332568 00000 n 
-0000332631 00000 n 
-0000332694 00000 n 
-0000332757 00000 n 
-0000332820 00000 n 
-0000332882 00000 n 
-0000332945 00000 n 
-0000333008 00000 n 
-0000333071 00000 n 
-0000333134 00000 n 
-0000333197 00000 n 
-0000333260 00000 n 
-0000333323 00000 n 
-0000333386 00000 n 
-0000333448 00000 n 
-0000333511 00000 n 
-0000333574 00000 n 
-0000333637 00000 n 
-0000340382 00000 n 
-0000337206 00000 n 
-0000333892 00000 n 
-0000337329 00000 n 
-0000337453 00000 n 
-0000337515 00000 n 
-0000337578 00000 n 
-0000337639 00000 n 
-0000337700 00000 n 
-0000337761 00000 n 
-0000337822 00000 n 
-0000337883 00000 n 
-0000337942 00000 n 
-0000338003 00000 n 
-0000338064 00000 n 
-0000338125 00000 n 
-0000338186 00000 n 
-0000338247 00000 n 
-0000338308 00000 n 
-0000338369 00000 n 
-0000338430 00000 n 
-0000338490 00000 n 
-0000338551 00000 n 
-0000338612 00000 n 
-0000338673 00000 n 
-0000338734 00000 n 
-0000338795 00000 n 
-0000338856 00000 n 
-0000338917 00000 n 
-0000338978 00000 n 
-0000339038 00000 n 
-0000339099 00000 n 
-0000339160 00000 n 
-0000339221 00000 n 
-0000339282 00000 n 
-0000339343 00000 n 
-0000339404 00000 n 
-0000339465 00000 n 
-0000339526 00000 n 
-0000339586 00000 n 
-0000339648 00000 n 
-0000339708 00000 n 
-0000339769 00000 n 
-0000339832 00000 n 
-0000339895 00000 n 
-0000339956 00000 n 
-0000340017 00000 n 
-0000340077 00000 n 
-0000340138 00000 n 
-0000340199 00000 n 
-0000340260 00000 n 
-0000340321 00000 n 
-0003965455 00000 n 
-0000344159 00000 n 
-0000350761 00000 n 
-0000350913 00000 n 
-0000347190 00000 n 
-0000344015 00000 n 
-0000340526 00000 n 
-0000344310 00000 n 
-0000344373 00000 n 
-0000344436 00000 n 
-0000344499 00000 n 
-0000344560 00000 n 
-0000344621 00000 n 
-0000344682 00000 n 
-0000344743 00000 n 
-0000344804 00000 n 
-0000344865 00000 n 
-0000344926 00000 n 
-0000344987 00000 n 
-0000345047 00000 n 
-0000345108 00000 n 
-0000345169 00000 n 
-0000345230 00000 n 
-0000345291 00000 n 
-0000345352 00000 n 
-0000345413 00000 n 
-0000345474 00000 n 
-0000345535 00000 n 
-0000345596 00000 n 
-0000345657 00000 n 
-0000345718 00000 n 
-0000345781 00000 n 
-0000345844 00000 n 
-0000345905 00000 n 
-0000345966 00000 n 
-0000346027 00000 n 
-0000346088 00000 n 
-0000346149 00000 n 
-0000346210 00000 n 
-0000346273 00000 n 
-0000346336 00000 n 
-0000346397 00000 n 
-0000346458 00000 n 
-0000346519 00000 n 
-0000346579 00000 n 
-0000346640 00000 n 
-0000346701 00000 n 
-0000346762 00000 n 
-0000346823 00000 n 
-0000346884 00000 n 
-0000346945 00000 n 
-0000347006 00000 n 
-0000347067 00000 n 
-0000347127 00000 n 
-0000351878 00000 n 
-0000350608 00000 n 
-0000347306 00000 n 
-0000351063 00000 n 
-0000351126 00000 n 
-0000351189 00000 n 
-0000351252 00000 n 
-0000351315 00000 n 
-0000351378 00000 n 
-0000351441 00000 n 
-0000351504 00000 n 
-0000351567 00000 n 
-0000351630 00000 n 
-0000351693 00000 n 
-0002468609 00000 n 
-0000356749 00000 n 
-0000355745 00000 n 
-0000352008 00000 n 
-0000355868 00000 n 
-0000355993 00000 n 
-0000356056 00000 n 
-0000356119 00000 n 
-0000356182 00000 n 
-0000356245 00000 n 
-0000356308 00000 n 
-0000356371 00000 n 
-0000356434 00000 n 
-0000356497 00000 n 
-0000356560 00000 n 
-0000356623 00000 n 
-0000356686 00000 n 
-0003963898 00000 n 
-0000359087 00000 n 
-0000358775 00000 n 
-0000356922 00000 n 
-0000358898 00000 n 
-0000358961 00000 n 
-0000359024 00000 n 
-0000362725 00000 n 
-0000362875 00000 n 
-0000363334 00000 n 
-0000362572 00000 n 
-0000359217 00000 n 
-0000363022 00000 n 
-0000363147 00000 n 
-0000410939 00000 n 
-0000366347 00000 n 
-0000411404 00000 n 
-0000366203 00000 n 
-0000363436 00000 n 
-0000411091 00000 n 
-0000411216 00000 n 
-0000411342 00000 n 
-0003965581 00000 n 
-0000401391 00000 n 
-0000415802 00000 n 
-0000415951 00000 n 
-0000416288 00000 n 
-0000415649 00000 n 
-0000411557 00000 n 
-0000416101 00000 n 
-0000420307 00000 n 
-0000420462 00000 n 
-0000421810 00000 n 
-0000420154 00000 n 
-0000416418 00000 n 
-0000420615 00000 n 
-0000420740 00000 n 
-0000420803 00000 n 
-0000420866 00000 n 
-0000420929 00000 n 
-0000420992 00000 n 
-0000421055 00000 n 
-0000421118 00000 n 
-0000421181 00000 n 
-0000421244 00000 n 
-0000421307 00000 n 
-0000421369 00000 n 
-0000421432 00000 n 
-0000421495 00000 n 
-0000421558 00000 n 
-0000421621 00000 n 
-0000421684 00000 n 
-0000421747 00000 n 
-0000426756 00000 n 
-0000425537 00000 n 
-0000426943 00000 n 
-0000425393 00000 n 
-0000421940 00000 n 
-0000425686 00000 n 
-0000425749 00000 n 
-0000425812 00000 n 
-0000425875 00000 n 
-0000425938 00000 n 
-0000426001 00000 n 
-0000426064 00000 n 
-0000426127 00000 n 
-0000426190 00000 n 
-0000426253 00000 n 
-0000426316 00000 n 
-0000426379 00000 n 
-0000426442 00000 n 
-0000426504 00000 n 
-0000426567 00000 n 
-0000426630 00000 n 
-0000426693 00000 n 
-0000430404 00000 n 
-0000430606 00000 n 
-0000431697 00000 n 
-0000430251 00000 n 
-0000427101 00000 n 
-0000430757 00000 n 
-0000430820 00000 n 
-0000430883 00000 n 
-0000430946 00000 n 
-0000431009 00000 n 
-0000431072 00000 n 
-0000431135 00000 n 
-0000431198 00000 n 
-0000431261 00000 n 
-0000431386 00000 n 
-0000431449 00000 n 
-0000431512 00000 n 
-0000431575 00000 n 
-0000431636 00000 n 
-0000434575 00000 n 
-0000435900 00000 n 
-0000434431 00000 n 
-0000431841 00000 n 
-0000434726 00000 n 
-0000434789 00000 n 
-0000434852 00000 n 
-0000434913 00000 n 
-0000434974 00000 n 
-0000435037 00000 n 
-0000435100 00000 n 
-0000435161 00000 n 
-0000435222 00000 n 
-0000435283 00000 n 
-0000435343 00000 n 
-0000435406 00000 n 
-0000435467 00000 n 
-0000435528 00000 n 
-0000435589 00000 n 
-0000435650 00000 n 
-0000435713 00000 n 
-0000435776 00000 n 
-0000435837 00000 n 
-0000442072 00000 n 
-0000442871 00000 n 
-0000439055 00000 n 
-0000436016 00000 n 
-0000439178 00000 n 
-0000439241 00000 n 
-0000439304 00000 n 
-0000439367 00000 n 
-0000439430 00000 n 
-0000439493 00000 n 
-0000439556 00000 n 
-0000439619 00000 n 
-0000439682 00000 n 
-0000439745 00000 n 
-0000439808 00000 n 
-0000439871 00000 n 
-0000439934 00000 n 
-0000439996 00000 n 
-0000440059 00000 n 
-0000440122 00000 n 
-0000440185 00000 n 
-0000440248 00000 n 
-0000440311 00000 n 
-0000440374 00000 n 
-0000440437 00000 n 
-0000440500 00000 n 
-0000440562 00000 n 
-0000440625 00000 n 
-0000440688 00000 n 
-0000440751 00000 n 
-0000440814 00000 n 
-0000440877 00000 n 
-0000440940 00000 n 
-0000441003 00000 n 
-0000441066 00000 n 
-0000441128 00000 n 
-0000441191 00000 n 
-0000441254 00000 n 
-0000441317 00000 n 
-0000441380 00000 n 
-0000441443 00000 n 
-0000441506 00000 n 
-0000441569 00000 n 
-0000441632 00000 n 
-0000441694 00000 n 
-0000441757 00000 n 
-0000441820 00000 n 
-0000441883 00000 n 
-0000441946 00000 n 
-0000442009 00000 n 
-0000442135 00000 n 
-0000442198 00000 n 
-0000442261 00000 n 
-0000442322 00000 n 
-0000442385 00000 n 
-0000442446 00000 n 
-0000442507 00000 n 
-0000442568 00000 n 
-0000442628 00000 n 
-0000442689 00000 n 
-0000442750 00000 n 
-0000442811 00000 n 
-0003965707 00000 n 
-0000445289 00000 n 
-0000445442 00000 n 
-0000445599 00000 n 
-0000446618 00000 n 
-0000445127 00000 n 
-0000442987 00000 n 
-0000445756 00000 n 
-0000445819 00000 n 
-0000445880 00000 n 
-0000445941 00000 n 
-0000446002 00000 n 
-0000446063 00000 n 
-0000446124 00000 n 
-0000446184 00000 n 
-0000446245 00000 n 
-0000446368 00000 n 
-0000446431 00000 n 
-0000446494 00000 n 
-0000446555 00000 n 
-0000454751 00000 n 
-0000461407 00000 n 
-0000462414 00000 n 
-0000454814 00000 n 
-0000451799 00000 n 
-0000446748 00000 n 
-0000451922 00000 n 
-0000451985 00000 n 
-0000452048 00000 n 
-0000452111 00000 n 
-0000452174 00000 n 
-0000452236 00000 n 
-0000452299 00000 n 
-0000452362 00000 n 
-0000452425 00000 n 
-0000452488 00000 n 
-0000452551 00000 n 
-0000452614 00000 n 
-0000452677 00000 n 
-0000452740 00000 n 
-0000452802 00000 n 
-0000452865 00000 n 
-0000452928 00000 n 
-0000452991 00000 n 
-0000453054 00000 n 
-0000453117 00000 n 
-0000453180 00000 n 
-0000453243 00000 n 
-0000453306 00000 n 
-0000453367 00000 n 
-0000453430 00000 n 
-0000453493 00000 n 
-0000453556 00000 n 
-0000453619 00000 n 
-0000453682 00000 n 
-0000453745 00000 n 
-0000453808 00000 n 
-0000453871 00000 n 
-0000453933 00000 n 
-0000453996 00000 n 
-0000454059 00000 n 
-0000454122 00000 n 
-0000454185 00000 n 
-0000454248 00000 n 
-0000454311 00000 n 
-0000454374 00000 n 
-0000454437 00000 n 
-0000454499 00000 n 
-0000454562 00000 n 
-0000454625 00000 n 
-0000454688 00000 n 
-0000462908 00000 n 
-0000459398 00000 n 
-0000454943 00000 n 
-0000459521 00000 n 
-0000459584 00000 n 
-0000459647 00000 n 
-0000459710 00000 n 
-0000459773 00000 n 
-0000459836 00000 n 
-0000459899 00000 n 
-0000459962 00000 n 
-0000460025 00000 n 
-0000460088 00000 n 
-0000460149 00000 n 
-0000460212 00000 n 
-0000460275 00000 n 
-0000460338 00000 n 
-0000460401 00000 n 
-0000460464 00000 n 
-0000460527 00000 n 
-0000460590 00000 n 
-0000460653 00000 n 
-0000460715 00000 n 
-0000460778 00000 n 
-0000460841 00000 n 
-0000460904 00000 n 
-0000460967 00000 n 
-0000461030 00000 n 
-0000461093 00000 n 
-0000461156 00000 n 
-0000461219 00000 n 
-0000461281 00000 n 
-0000461344 00000 n 
-0000461470 00000 n 
-0000461533 00000 n 
-0000461596 00000 n 
-0000461659 00000 n 
-0000461722 00000 n 
-0000461785 00000 n 
-0000461848 00000 n 
-0000461910 00000 n 
-0000461973 00000 n 
-0000462036 00000 n 
-0000462099 00000 n 
-0000462162 00000 n 
-0000462225 00000 n 
-0000462288 00000 n 
-0000462351 00000 n 
-0000462477 00000 n 
-0000462539 00000 n 
-0000462602 00000 n 
-0000462663 00000 n 
-0000462724 00000 n 
-0000462785 00000 n 
-0000462846 00000 n 
-0000466170 00000 n 
-0000466319 00000 n 
-0000470059 00000 n 
-0000466017 00000 n 
-0000463037 00000 n 
-0000466470 00000 n 
-0000466533 00000 n 
-0000466596 00000 n 
-0000466657 00000 n 
-0000466718 00000 n 
-0000466779 00000 n 
-0000466840 00000 n 
-0000466901 00000 n 
-0000466962 00000 n 
-0000467022 00000 n 
-0000467083 00000 n 
-0000467144 00000 n 
-0000467205 00000 n 
-0000467266 00000 n 
-0000467327 00000 n 
-0000467388 00000 n 
-0000467449 00000 n 
-0000467510 00000 n 
-0000467570 00000 n 
-0000467631 00000 n 
-0000467692 00000 n 
-0000467753 00000 n 
-0000467814 00000 n 
-0000467876 00000 n 
-0000467939 00000 n 
-0000468002 00000 n 
-0000468065 00000 n 
-0000468128 00000 n 
-0000468191 00000 n 
-0000468253 00000 n 
-0000468316 00000 n 
-0000468379 00000 n 
-0000468442 00000 n 
-0000468505 00000 n 
-0000468568 00000 n 
-0000468631 00000 n 
-0000468694 00000 n 
-0000468757 00000 n 
-0000468819 00000 n 
-0000468882 00000 n 
-0000468945 00000 n 
-0000469008 00000 n 
-0000469071 00000 n 
-0000469134 00000 n 
-0000469197 00000 n 
-0000469260 00000 n 
-0000469323 00000 n 
-0000469386 00000 n 
-0000469449 00000 n 
-0000469512 00000 n 
-0000469573 00000 n 
-0000469634 00000 n 
-0000469695 00000 n 
-0000469756 00000 n 
-0000469817 00000 n 
-0000469878 00000 n 
-0000469938 00000 n 
-0000469999 00000 n 
-0000476517 00000 n 
-0000473820 00000 n 
-0000470175 00000 n 
-0000473943 00000 n 
-0000474006 00000 n 
-0000474067 00000 n 
-0000474128 00000 n 
-0000474189 00000 n 
-0000474250 00000 n 
-0000474311 00000 n 
-0000474371 00000 n 
-0000474432 00000 n 
-0000474493 00000 n 
-0000474554 00000 n 
-0000474615 00000 n 
-0000474676 00000 n 
-0000474737 00000 n 
-0000474798 00000 n 
-0000474859 00000 n 
-0000474919 00000 n 
-0000474980 00000 n 
-0000475043 00000 n 
-0000475106 00000 n 
-0000475167 00000 n 
-0000475228 00000 n 
-0000475289 00000 n 
-0000475350 00000 n 
-0000475411 00000 n 
-0000475472 00000 n 
-0000475533 00000 n 
-0000475594 00000 n 
-0000475654 00000 n 
-0000475715 00000 n 
-0000475778 00000 n 
-0000475841 00000 n 
-0000475904 00000 n 
-0000475967 00000 n 
-0000476027 00000 n 
-0000476088 00000 n 
-0000476149 00000 n 
-0000476210 00000 n 
-0000476271 00000 n 
-0000476332 00000 n 
-0000476393 00000 n 
-0000476454 00000 n 
-0000479168 00000 n 
-0000480797 00000 n 
-0000479024 00000 n 
-0000476647 00000 n 
-0000479320 00000 n 
-0000479383 00000 n 
-0000479446 00000 n 
-0000479507 00000 n 
-0000479568 00000 n 
-0000479629 00000 n 
-0000479690 00000 n 
-0000479750 00000 n 
-0000479811 00000 n 
-0000479872 00000 n 
-0000479935 00000 n 
-0000479996 00000 n 
-0000480057 00000 n 
-0000480118 00000 n 
-0000480181 00000 n 
-0000480244 00000 n 
-0000480304 00000 n 
-0000480365 00000 n 
-0000480426 00000 n 
-0000480489 00000 n 
-0000480550 00000 n 
-0000480673 00000 n 
-0000480735 00000 n 
-0003965833 00000 n 
-0000487138 00000 n 
-0000483555 00000 n 
-0000483710 00000 n 
-0000483867 00000 n 
-0000484024 00000 n 
-0000490057 00000 n 
-0000490207 00000 n 
-0000490357 00000 n 
-0000490507 00000 n 
-0000490657 00000 n 
-0000490806 00000 n 
-0000490956 00000 n 
-0000487326 00000 n 
-0000483384 00000 n 
-0000480927 00000 n 
-0000484181 00000 n 
-0000484244 00000 n 
-0000484307 00000 n 
-0000484370 00000 n 
-0000484433 00000 n 
-0000484496 00000 n 
-0000484559 00000 n 
-0000484622 00000 n 
-0000484685 00000 n 
-0000484748 00000 n 
-0000484811 00000 n 
-0000484874 00000 n 
-0000484937 00000 n 
-0000484999 00000 n 
-0000485062 00000 n 
-0000485125 00000 n 
-0000485188 00000 n 
-0000485251 00000 n 
-0000485314 00000 n 
-0000485377 00000 n 
-0000485440 00000 n 
-0000485503 00000 n 
-0000485565 00000 n 
-0000485628 00000 n 
-0000485691 00000 n 
-0000485754 00000 n 
-0000485817 00000 n 
-0000485880 00000 n 
-0000485943 00000 n 
-0000486006 00000 n 
-0000486069 00000 n 
-0000486131 00000 n 
-0000486194 00000 n 
-0000486257 00000 n 
-0000486320 00000 n 
-0000486383 00000 n 
-0000486446 00000 n 
-0000486509 00000 n 
-0000486572 00000 n 
-0000486635 00000 n 
-0000486697 00000 n 
-0000486760 00000 n 
-0000486823 00000 n 
-0000486886 00000 n 
-0000486949 00000 n 
-0000487012 00000 n 
-0000487075 00000 n 
-0000487201 00000 n 
-0000487264 00000 n 
-0000494250 00000 n 
-0000498328 00000 n 
-0000500216 00000 n 
-0000491295 00000 n 
-0000494313 00000 n 
-0000489859 00000 n 
-0000487442 00000 n 
-0000491106 00000 n 
-0000491169 00000 n 
-0000491358 00000 n 
-0000491421 00000 n 
-0000491484 00000 n 
-0000491546 00000 n 
-0000491609 00000 n 
-0000491672 00000 n 
-0000491735 00000 n 
-0000491798 00000 n 
-0000491861 00000 n 
-0000491924 00000 n 
-0000491987 00000 n 
-0000492050 00000 n 
-0000492112 00000 n 
-0000492175 00000 n 
-0000492238 00000 n 
-0000492301 00000 n 
-0000492364 00000 n 
-0000492427 00000 n 
-0000492490 00000 n 
-0000492553 00000 n 
-0000492616 00000 n 
-0000492678 00000 n 
-0000492741 00000 n 
-0000492804 00000 n 
-0000492867 00000 n 
-0000492930 00000 n 
-0000492993 00000 n 
-0000493056 00000 n 
-0000493119 00000 n 
-0000493182 00000 n 
-0000493243 00000 n 
-0000493306 00000 n 
-0000493369 00000 n 
-0000493432 00000 n 
-0000493495 00000 n 
-0000493558 00000 n 
-0000493621 00000 n 
-0000493684 00000 n 
-0000493747 00000 n 
-0000493809 00000 n 
-0000493872 00000 n 
-0000493935 00000 n 
-0000493998 00000 n 
-0000494061 00000 n 
-0000494124 00000 n 
-0000494187 00000 n 
-0002572933 00000 n 
-0002573839 00000 n 
-0002580198 00000 n 
-0000506473 00000 n 
-0000511570 00000 n 
-0000503895 00000 n 
-0000504964 00000 n 
-0000500279 00000 n 
-0000496506 00000 n 
-0000494429 00000 n 
-0000496629 00000 n 
-0000496692 00000 n 
-0000496755 00000 n 
-0000496818 00000 n 
-0000496881 00000 n 
-0000496944 00000 n 
-0000497007 00000 n 
-0000497070 00000 n 
-0000497133 00000 n 
-0000497196 00000 n 
-0000497259 00000 n 
-0000497322 00000 n 
-0000497385 00000 n 
-0000497447 00000 n 
-0000497510 00000 n 
-0000497573 00000 n 
-0000497636 00000 n 
-0000497699 00000 n 
-0000497762 00000 n 
-0000497825 00000 n 
-0000497888 00000 n 
-0000497951 00000 n 
-0000498013 00000 n 
-0000498076 00000 n 
-0000498139 00000 n 
-0000498202 00000 n 
-0000498265 00000 n 
-0000498391 00000 n 
-0000498454 00000 n 
-0000498517 00000 n 
-0000498580 00000 n 
-0000498643 00000 n 
-0000498706 00000 n 
-0000498769 00000 n 
-0000498832 00000 n 
-0000498895 00000 n 
-0000498958 00000 n 
-0000499021 00000 n 
-0000499084 00000 n 
-0000499147 00000 n 
-0000499210 00000 n 
-0000499273 00000 n 
-0000499336 00000 n 
-0000499398 00000 n 
-0000499461 00000 n 
-0000499524 00000 n 
-0000499587 00000 n 
-0000499650 00000 n 
-0000499713 00000 n 
-0000499776 00000 n 
-0000499839 00000 n 
-0000499902 00000 n 
-0000499964 00000 n 
-0000500027 00000 n 
-0000500090 00000 n 
-0000500153 00000 n 
-0000506535 00000 n 
-0000502702 00000 n 
-0000500395 00000 n 
-0000502825 00000 n 
-0000502888 00000 n 
-0000502951 00000 n 
-0000503014 00000 n 
-0000503077 00000 n 
-0000503140 00000 n 
-0000503203 00000 n 
-0000503266 00000 n 
-0000503329 00000 n 
-0000503391 00000 n 
-0000503454 00000 n 
-0000503517 00000 n 
-0000503580 00000 n 
-0000503643 00000 n 
-0000503706 00000 n 
-0000503769 00000 n 
-0000503832 00000 n 
-0000503958 00000 n 
-0000504020 00000 n 
-0000504083 00000 n 
-0000504146 00000 n 
-0000504209 00000 n 
-0000504272 00000 n 
-0000504335 00000 n 
-0000504398 00000 n 
-0000504460 00000 n 
-0000504523 00000 n 
-0000504586 00000 n 
-0000504649 00000 n 
-0000504712 00000 n 
-0000504775 00000 n 
-0000504838 00000 n 
-0000504901 00000 n 
-0000505027 00000 n 
-0000505090 00000 n 
-0000505153 00000 n 
-0000505216 00000 n 
-0000505279 00000 n 
-0000505342 00000 n 
-0000505405 00000 n 
-0000505468 00000 n 
-0000505531 00000 n 
-0000505593 00000 n 
-0000505656 00000 n 
-0000505719 00000 n 
-0000505782 00000 n 
-0000505845 00000 n 
-0000505908 00000 n 
-0000505971 00000 n 
-0000506034 00000 n 
-0000506097 00000 n 
-0000506159 00000 n 
-0000506222 00000 n 
-0000506285 00000 n 
-0000506348 00000 n 
-0000506411 00000 n 
-0000512440 00000 n 
-0000510063 00000 n 
-0000506651 00000 n 
-0000510186 00000 n 
-0000510249 00000 n 
-0000510312 00000 n 
-0000510375 00000 n 
-0000510438 00000 n 
-0000510501 00000 n 
-0000510564 00000 n 
-0000510627 00000 n 
-0000510690 00000 n 
-0000510752 00000 n 
-0000510815 00000 n 
-0000510878 00000 n 
-0000510941 00000 n 
-0000511004 00000 n 
-0000511067 00000 n 
-0000511130 00000 n 
-0000511193 00000 n 
-0000511256 00000 n 
-0000511318 00000 n 
-0000511381 00000 n 
-0000511444 00000 n 
-0000511507 00000 n 
-0000511633 00000 n 
-0000511696 00000 n 
-0000511759 00000 n 
-0000511820 00000 n 
-0000511881 00000 n 
-0000511942 00000 n 
-0000512004 00000 n 
-0000512067 00000 n 
-0000512190 00000 n 
-0000512253 00000 n 
-0000512316 00000 n 
-0000512378 00000 n 
-0000517812 00000 n 
-0000515651 00000 n 
-0000512570 00000 n 
-0000515774 00000 n 
-0000515837 00000 n 
-0000515900 00000 n 
-0000515961 00000 n 
-0000516022 00000 n 
-0000516083 00000 n 
-0000516144 00000 n 
-0000516207 00000 n 
-0000516270 00000 n 
-0000516330 00000 n 
-0000516391 00000 n 
-0000516452 00000 n 
-0000516513 00000 n 
-0000516576 00000 n 
-0000516639 00000 n 
-0000516700 00000 n 
-0000516761 00000 n 
-0000516822 00000 n 
-0000516883 00000 n 
-0000516946 00000 n 
-0000517007 00000 n 
-0000517068 00000 n 
-0000517131 00000 n 
-0000517194 00000 n 
-0000517255 00000 n 
-0000517380 00000 n 
-0000517443 00000 n 
-0000517506 00000 n 
-0000517569 00000 n 
-0000517630 00000 n 
-0000517691 00000 n 
-0000517752 00000 n 
-0003965959 00000 n 
-0000523672 00000 n 
-0000521332 00000 n 
-0000517956 00000 n 
-0000521455 00000 n 
-0000521518 00000 n 
-0000521581 00000 n 
-0000521644 00000 n 
-0000521705 00000 n 
-0000521766 00000 n 
-0000521827 00000 n 
-0000521950 00000 n 
-0000522012 00000 n 
-0000522075 00000 n 
-0000522138 00000 n 
-0000522199 00000 n 
-0000522262 00000 n 
-0000522323 00000 n 
-0000522384 00000 n 
-0000522445 00000 n 
-0000522506 00000 n 
-0000522566 00000 n 
-0000522627 00000 n 
-0000522688 00000 n 
-0000522749 00000 n 
-0000522810 00000 n 
-0000522871 00000 n 
-0000522934 00000 n 
-0000522997 00000 n 
-0000523058 00000 n 
-0000523121 00000 n 
-0000523184 00000 n 
-0000523245 00000 n 
-0000523306 00000 n 
-0000523367 00000 n 
-0000523428 00000 n 
-0000523489 00000 n 
-0000523550 00000 n 
-0000523611 00000 n 
-0000527514 00000 n 
-0000530000 00000 n 
-0000527370 00000 n 
-0000523788 00000 n 
-0000527667 00000 n 
-0000527730 00000 n 
-0000527793 00000 n 
-0000527854 00000 n 
-0000527915 00000 n 
-0000527976 00000 n 
-0000528037 00000 n 
-0000528098 00000 n 
-0000528159 00000 n 
-0000528219 00000 n 
-0000528280 00000 n 
-0000528343 00000 n 
-0000528404 00000 n 
-0000528465 00000 n 
-0000528528 00000 n 
-0000528591 00000 n 
-0000528652 00000 n 
-0000528715 00000 n 
-0000528776 00000 n 
-0000528837 00000 n 
-0000528898 00000 n 
-0000528957 00000 n 
-0000529019 00000 n 
-0000529079 00000 n 
-0000529142 00000 n 
-0000529205 00000 n 
-0000529266 00000 n 
-0000529327 00000 n 
-0000529388 00000 n 
-0000529451 00000 n 
-0000529514 00000 n 
-0000529575 00000 n 
-0000529636 00000 n 
-0000529697 00000 n 
-0000529758 00000 n 
-0000529819 00000 n 
-0000529879 00000 n 
-0000529940 00000 n 
-0000537028 00000 n 
-0000533246 00000 n 
-0000530130 00000 n 
-0000533369 00000 n 
-0000533432 00000 n 
-0000533493 00000 n 
-0000533554 00000 n 
-0000533615 00000 n 
-0000533676 00000 n 
-0000533737 00000 n 
-0000533797 00000 n 
-0000533858 00000 n 
-0000533919 00000 n 
-0000533980 00000 n 
-0000534041 00000 n 
-0000534102 00000 n 
-0000534163 00000 n 
-0000534224 00000 n 
-0000534285 00000 n 
-0000534345 00000 n 
-0000534406 00000 n 
-0000534467 00000 n 
-0000534528 00000 n 
-0000534589 00000 n 
-0000534650 00000 n 
-0000534711 00000 n 
-0000534772 00000 n 
-0000534833 00000 n 
-0000534893 00000 n 
-0000534954 00000 n 
-0000535015 00000 n 
-0000535076 00000 n 
-0000535137 00000 n 
-0000535198 00000 n 
-0000535259 00000 n 
-0000535320 00000 n 
-0000535381 00000 n 
-0000535441 00000 n 
-0000535502 00000 n 
-0000535563 00000 n 
-0000535624 00000 n 
-0000535685 00000 n 
-0000535746 00000 n 
-0000535807 00000 n 
-0000535868 00000 n 
-0000535929 00000 n 
-0000535989 00000 n 
-0000536050 00000 n 
-0000536111 00000 n 
-0000536172 00000 n 
-0000536233 00000 n 
-0000536294 00000 n 
-0000536355 00000 n 
-0000536416 00000 n 
-0000536477 00000 n 
-0000536538 00000 n 
-0000536599 00000 n 
-0000536660 00000 n 
-0000536721 00000 n 
-0000536784 00000 n 
-0000536847 00000 n 
-0000536908 00000 n 
-0000536969 00000 n 
-0000543717 00000 n 
-0000540778 00000 n 
-0000537130 00000 n 
-0000540901 00000 n 
-0000540964 00000 n 
-0000541025 00000 n 
-0000541086 00000 n 
-0000541147 00000 n 
-0000541208 00000 n 
-0000541269 00000 n 
-0000541332 00000 n 
-0000541395 00000 n 
-0000541456 00000 n 
-0000541517 00000 n 
-0000541578 00000 n 
-0000541639 00000 n 
-0000541700 00000 n 
-0000541761 00000 n 
-0000541822 00000 n 
-0000541882 00000 n 
-0000541943 00000 n 
-0000542004 00000 n 
-0000542065 00000 n 
-0000542126 00000 n 
-0000542187 00000 n 
-0000542248 00000 n 
-0000542309 00000 n 
-0000542370 00000 n 
-0000542429 00000 n 
-0000542490 00000 n 
-0000542551 00000 n 
-0000542612 00000 n 
-0000542673 00000 n 
-0000542734 00000 n 
-0000542795 00000 n 
-0000542857 00000 n 
-0000542920 00000 n 
-0000542981 00000 n 
-0000543042 00000 n 
-0000543103 00000 n 
-0000543164 00000 n 
-0000543225 00000 n 
-0000543286 00000 n 
-0000543349 00000 n 
-0000543412 00000 n 
-0000543473 00000 n 
-0000543534 00000 n 
-0000543595 00000 n 
-0000543656 00000 n 
-0000547279 00000 n 
-0000550752 00000 n 
-0000547135 00000 n 
-0000543847 00000 n 
-0000547457 00000 n 
-0000547520 00000 n 
-0000547581 00000 n 
-0000547642 00000 n 
-0000547703 00000 n 
-0000547764 00000 n 
-0000547825 00000 n 
-0000547885 00000 n 
-0000547946 00000 n 
-0000548007 00000 n 
-0000548068 00000 n 
-0000548131 00000 n 
-0000548194 00000 n 
-0000548255 00000 n 
-0000548316 00000 n 
-0000548377 00000 n 
-0000548438 00000 n 
-0000548499 00000 n 
-0000548560 00000 n 
-0000548621 00000 n 
-0000548682 00000 n 
-0000548743 00000 n 
-0000548804 00000 n 
-0000548865 00000 n 
-0000548924 00000 n 
-0000548985 00000 n 
-0000549046 00000 n 
-0000549107 00000 n 
-0000549168 00000 n 
-0000549229 00000 n 
-0000549290 00000 n 
-0000549351 00000 n 
-0000549412 00000 n 
-0000549472 00000 n 
-0000549533 00000 n 
-0000549594 00000 n 
-0000549655 00000 n 
-0000549716 00000 n 
-0000549777 00000 n 
-0000549838 00000 n 
-0000549899 00000 n 
-0000549960 00000 n 
-0000550020 00000 n 
-0000550081 00000 n 
-0000550142 00000 n 
-0000550203 00000 n 
-0000550264 00000 n 
-0000550325 00000 n 
-0000550386 00000 n 
-0000550447 00000 n 
-0000550508 00000 n 
-0000550568 00000 n 
-0000550629 00000 n 
-0000550690 00000 n 
-0000555794 00000 n 
-0000554387 00000 n 
-0000550868 00000 n 
-0000554510 00000 n 
-0000554573 00000 n 
-0000554634 00000 n 
-0000554695 00000 n 
-0000554756 00000 n 
-0000554817 00000 n 
-0000554878 00000 n 
-0000554938 00000 n 
-0000554999 00000 n 
-0000555060 00000 n 
-0000555121 00000 n 
-0000555182 00000 n 
-0000555243 00000 n 
-0000555304 00000 n 
-0000555365 00000 n 
-0000555426 00000 n 
-0000555486 00000 n 
-0000555547 00000 n 
-0000555608 00000 n 
-0000555731 00000 n 
-0003966085 00000 n 
-0000559979 00000 n 
-0000560131 00000 n 
-0000560967 00000 n 
-0000559826 00000 n 
-0000555924 00000 n 
-0000560282 00000 n 
-0000560467 00000 n 
-0000560530 00000 n 
-0000560593 00000 n 
-0000560655 00000 n 
-0000560717 00000 n 
-0000560779 00000 n 
-0000560842 00000 n 
-0000560905 00000 n 
-0000564245 00000 n 
-0000564395 00000 n 
-0000565361 00000 n 
-0000564092 00000 n 
-0000561097 00000 n 
-0000564545 00000 n 
-0000564608 00000 n 
-0000564671 00000 n 
-0000564734 00000 n 
-0000564796 00000 n 
-0000564859 00000 n 
-0000564922 00000 n 
-0000564985 00000 n 
-0000565048 00000 n 
-0000565111 00000 n 
-0000565173 00000 n 
-0000565236 00000 n 
-0000570638 00000 n 
-0000569949 00000 n 
-0000565491 00000 n 
-0000570072 00000 n 
-0000570197 00000 n 
-0000570260 00000 n 
-0000570323 00000 n 
-0000570386 00000 n 
-0000570449 00000 n 
-0000570512 00000 n 
-0000570575 00000 n 
-0000573578 00000 n 
-0000573203 00000 n 
-0000570782 00000 n 
-0000573326 00000 n 
-0000573389 00000 n 
-0000573452 00000 n 
-0000573515 00000 n 
-0000576602 00000 n 
-0000576752 00000 n 
-0000576901 00000 n 
-0000577297 00000 n 
-0000576440 00000 n 
-0000573708 00000 n 
-0000577049 00000 n 
-0000577174 00000 n 
-0000781500 00000 n 
-0000581438 00000 n 
-0000581772 00000 n 
-0000581294 00000 n 
-0000577413 00000 n 
-0000581585 00000 n 
-0003966211 00000 n 
-0000585352 00000 n 
-0000585501 00000 n 
-0000588281 00000 n 
-0000585903 00000 n 
-0000585199 00000 n 
-0000581888 00000 n 
-0000585654 00000 n 
-0000666331 00000 n 
-0000665891 00000 n 
-0000669851 00000 n 
-0000670007 00000 n 
-0000670160 00000 n 
-0000670314 00000 n 
-0000670468 00000 n 
-0000670623 00000 n 
-0000670779 00000 n 
-0000670933 00000 n 
-0000671084 00000 n 
-0000671235 00000 n 
-0000671391 00000 n 
-0000671547 00000 n 
-0000671703 00000 n 
-0000671856 00000 n 
-0000672008 00000 n 
-0000672162 00000 n 
-0000672312 00000 n 
-0000672461 00000 n 
-0000672610 00000 n 
-0000666052 00000 n 
-0000667017 00000 n 
-0000588128 00000 n 
-0000586033 00000 n 
-0000666205 00000 n 
-0000666456 00000 n 
-0000666581 00000 n 
-0000666644 00000 n 
-0000666707 00000 n 
-0000666768 00000 n 
-0000666831 00000 n 
-0000666892 00000 n 
-0000666954 00000 n 
-0000659930 00000 n 
-0000672886 00000 n 
-0000672949 00000 n 
-0000669545 00000 n 
-0000667184 00000 n 
-0000672760 00000 n 
-0000703886 00000 n 
-0000708968 00000 n 
-0000716287 00000 n 
-0000716789 00000 n 
-0000717292 00000 n 
-0000721341 00000 n 
-0000723795 00000 n 
-0000728170 00000 n 
-0000729743 00000 n 
-0000735029 00000 n 
-0000738361 00000 n 
-0000743123 00000 n 
-0000746833 00000 n 
-0000748218 00000 n 
-0000753413 00000 n 
-0000758375 00000 n 
-0000676606 00000 n 
-0000676755 00000 n 
-0000676907 00000 n 
-0000679583 00000 n 
-0000676444 00000 n 
-0000673065 00000 n 
-0000677059 00000 n 
-0000677122 00000 n 
-0000677185 00000 n 
-0000677246 00000 n 
-0000677307 00000 n 
-0000677370 00000 n 
-0000677433 00000 n 
-0000677494 00000 n 
-0000677554 00000 n 
-0000677615 00000 n 
-0000677676 00000 n 
-0000677739 00000 n 
-0000677802 00000 n 
-0000677863 00000 n 
-0000677924 00000 n 
-0000677985 00000 n 
-0000678046 00000 n 
-0000678106 00000 n 
-0000678167 00000 n 
-0000678228 00000 n 
-0000678289 00000 n 
-0000678350 00000 n 
-0000678411 00000 n 
-0000678472 00000 n 
-0000678533 00000 n 
-0000678594 00000 n 
-0000678654 00000 n 
-0000678715 00000 n 
-0000678776 00000 n 
-0000678837 00000 n 
-0000678898 00000 n 
-0000678959 00000 n 
-0000679020 00000 n 
-0000679083 00000 n 
-0000679146 00000 n 
-0000679209 00000 n 
-0000679272 00000 n 
-0000679335 00000 n 
-0000679396 00000 n 
-0000679459 00000 n 
-0000679522 00000 n 
-0000683785 00000 n 
-0000685062 00000 n 
-0000683641 00000 n 
-0000679699 00000 n 
-0000683938 00000 n 
-0000684001 00000 n 
-0000684064 00000 n 
-0000684127 00000 n 
-0000684188 00000 n 
-0000684251 00000 n 
-0000684314 00000 n 
-0000684375 00000 n 
-0000684438 00000 n 
-0000684501 00000 n 
-0000684562 00000 n 
-0000684625 00000 n 
-0003962645 00000 n 
-0000684812 00000 n 
-0000684875 00000 n 
-0000684938 00000 n 
-0000684999 00000 n 
-0000689183 00000 n 
-0000691371 00000 n 
-0000689039 00000 n 
-0000685221 00000 n 
-0000689339 00000 n 
-0000689402 00000 n 
-0000689465 00000 n 
-0000689526 00000 n 
-0000689587 00000 n 
-0000689650 00000 n 
-0000689713 00000 n 
-0000689774 00000 n 
-0000689837 00000 n 
-0000689900 00000 n 
-0000689963 00000 n 
-0000690026 00000 n 
-0000690089 00000 n 
-0000690152 00000 n 
-0000690213 00000 n 
-0000690274 00000 n 
-0000690335 00000 n 
-0000690396 00000 n 
-0000690456 00000 n 
-0000690517 00000 n 
-0000690578 00000 n 
-0000690639 00000 n 
-0000690700 00000 n 
-0000690763 00000 n 
-0000690826 00000 n 
-0000690887 00000 n 
-0000690948 00000 n 
-0000691008 00000 n 
-0000691069 00000 n 
-0000691130 00000 n 
-0000691193 00000 n 
-0000691254 00000 n 
-0000691315 00000 n 
-0003966337 00000 n 
-0000763039 00000 n 
-0000694843 00000 n 
-0000695000 00000 n 
-0000695158 00000 n 
-0000695308 00000 n 
-0000695460 00000 n 
-0000695617 00000 n 
-0000695773 00000 n 
-0000698211 00000 n 
-0000694645 00000 n 
-0000691487 00000 n 
-0000695921 00000 n 
-0000695984 00000 n 
-0000696047 00000 n 
-0000696110 00000 n 
-0000696170 00000 n 
-0000696231 00000 n 
-0000696294 00000 n 
-0000696355 00000 n 
-0000696416 00000 n 
-0000696479 00000 n 
-0000696542 00000 n 
-0000696603 00000 n 
-0000696664 00000 n 
-0000696725 00000 n 
-0000696785 00000 n 
-0000696846 00000 n 
-0000696907 00000 n 
-0000696968 00000 n 
-0000697029 00000 n 
-0000697090 00000 n 
-0000697151 00000 n 
-0000697214 00000 n 
-0000697339 00000 n 
-0000697402 00000 n 
-0000697465 00000 n 
-0000697528 00000 n 
-0000697589 00000 n 
-0000697650 00000 n 
-0000697711 00000 n 
-0000697774 00000 n 
-0000697837 00000 n 
-0000697900 00000 n 
-0000697961 00000 n 
-0000698024 00000 n 
-0000698087 00000 n 
-0000698148 00000 n 
-0000763164 00000 n 
-0000703949 00000 n 
-0000701751 00000 n 
-0000698370 00000 n 
-0000701874 00000 n 
-0000701937 00000 n 
-0000702000 00000 n 
-0000702063 00000 n 
-0000702126 00000 n 
-0000702189 00000 n 
-0000702252 00000 n 
-0000702315 00000 n 
-0000702378 00000 n 
-0000702441 00000 n 
-0000702502 00000 n 
-0000702565 00000 n 
-0000702628 00000 n 
-0000702691 00000 n 
-0000702754 00000 n 
-0000702817 00000 n 
-0000702880 00000 n 
-0000702943 00000 n 
-0000703006 00000 n 
-0000703068 00000 n 
-0000703131 00000 n 
-0000703194 00000 n 
-0000703257 00000 n 
-0000703320 00000 n 
-0000703383 00000 n 
-0000703446 00000 n 
-0000703509 00000 n 
-0000703572 00000 n 
-0000703634 00000 n 
-0000703697 00000 n 
-0000703760 00000 n 
-0000703823 00000 n 
-0000709031 00000 n 
-0000707022 00000 n 
-0000704078 00000 n 
-0000707145 00000 n 
-0000707208 00000 n 
-0000707271 00000 n 
-0000707334 00000 n 
-0000707397 00000 n 
-0000707460 00000 n 
-0000707523 00000 n 
-0000707586 00000 n 
-0000707649 00000 n 
-0000707712 00000 n 
-0000707773 00000 n 
-0000707836 00000 n 
-0000707899 00000 n 
-0000707962 00000 n 
-0000708025 00000 n 
-0000708088 00000 n 
-0000708151 00000 n 
-0000708214 00000 n 
-0000708277 00000 n 
-0000708339 00000 n 
-0000708402 00000 n 
-0000708465 00000 n 
-0000708528 00000 n 
-0000708591 00000 n 
-0000708654 00000 n 
-0000708717 00000 n 
-0000708780 00000 n 
-0000708843 00000 n 
-0000708905 00000 n 
-0000717354 00000 n 
-0000713901 00000 n 
-0000709160 00000 n 
-0000714024 00000 n 
-0000714087 00000 n 
-0000714150 00000 n 
-0000714213 00000 n 
-0000714276 00000 n 
-0000714338 00000 n 
-0000714401 00000 n 
-0000714464 00000 n 
-0000714527 00000 n 
-0000714590 00000 n 
-0000714653 00000 n 
-0000714716 00000 n 
-0000714779 00000 n 
-0000714842 00000 n 
-0000714904 00000 n 
-0000714967 00000 n 
-0000715030 00000 n 
-0000715093 00000 n 
-0000715156 00000 n 
-0000715219 00000 n 
-0000715282 00000 n 
-0000715345 00000 n 
-0000715408 00000 n 
-0000715469 00000 n 
-0000715532 00000 n 
-0000715595 00000 n 
-0000715658 00000 n 
-0000715721 00000 n 
-0000715784 00000 n 
-0000715847 00000 n 
-0000715910 00000 n 
-0000715973 00000 n 
-0000716035 00000 n 
-0000716098 00000 n 
-0000716161 00000 n 
-0000716224 00000 n 
-0000716350 00000 n 
-0000716411 00000 n 
-0000716474 00000 n 
-0000716537 00000 n 
-0000716600 00000 n 
-0000716663 00000 n 
-0000716726 00000 n 
-0000716852 00000 n 
-0000716915 00000 n 
-0000716978 00000 n 
-0000717041 00000 n 
-0000717104 00000 n 
-0000717167 00000 n 
-0000717230 00000 n 
-0000723858 00000 n 
-0000720464 00000 n 
-0000717483 00000 n 
-0000720587 00000 n 
-0000720650 00000 n 
-0000720713 00000 n 
-0000720776 00000 n 
-0000720839 00000 n 
-0000720902 00000 n 
-0000720965 00000 n 
-0000721028 00000 n 
-0000721091 00000 n 
-0000721154 00000 n 
-0000721215 00000 n 
-0000721278 00000 n 
-0000721404 00000 n 
-0000721467 00000 n 
-0000721530 00000 n 
-0000721593 00000 n 
-0000721656 00000 n 
-0000721718 00000 n 
-0000721781 00000 n 
-0000721844 00000 n 
-0000721907 00000 n 
-0000721970 00000 n 
-0000722033 00000 n 
-0000722096 00000 n 
-0000722159 00000 n 
-0000722222 00000 n 
-0000722285 00000 n 
-0000722348 00000 n 
-0000722411 00000 n 
-0000722474 00000 n 
-0000722537 00000 n 
-0000722600 00000 n 
-0000722663 00000 n 
-0000722726 00000 n 
-0000722789 00000 n 
-0000722852 00000 n 
-0000722914 00000 n 
-0000722977 00000 n 
-0000723040 00000 n 
-0000723103 00000 n 
-0000723166 00000 n 
-0000723229 00000 n 
-0000723292 00000 n 
-0000723355 00000 n 
-0000723418 00000 n 
-0000723480 00000 n 
-0000723543 00000 n 
-0000723606 00000 n 
-0000723669 00000 n 
-0000723732 00000 n 
-0000729806 00000 n 
-0000726096 00000 n 
-0000724001 00000 n 
-0000726219 00000 n 
-0000726282 00000 n 
-0000726345 00000 n 
-0000726408 00000 n 
-0000726471 00000 n 
-0000726534 00000 n 
-0000726597 00000 n 
-0000726660 00000 n 
-0000726723 00000 n 
-0000726786 00000 n 
-0000726849 00000 n 
-0000726912 00000 n 
-0000726975 00000 n 
-0000727037 00000 n 
-0000727100 00000 n 
-0000727163 00000 n 
-0000727226 00000 n 
-0000727289 00000 n 
-0000727352 00000 n 
-0000727415 00000 n 
-0000727478 00000 n 
-0000727541 00000 n 
-0000727603 00000 n 
-0000727666 00000 n 
-0000727729 00000 n 
-0000727792 00000 n 
-0000727855 00000 n 
-0000727918 00000 n 
-0000727981 00000 n 
-0000728044 00000 n 
-0000728107 00000 n 
-0000728233 00000 n 
-0000728296 00000 n 
-0000728359 00000 n 
-0000728422 00000 n 
-0000728485 00000 n 
-0000728548 00000 n 
-0000728611 00000 n 
-0000728674 00000 n 
-0000728737 00000 n 
-0000728800 00000 n 
-0000728863 00000 n 
-0000728926 00000 n 
-0000728988 00000 n 
-0000729051 00000 n 
-0000729114 00000 n 
-0000729177 00000 n 
-0000729240 00000 n 
-0000729303 00000 n 
-0000729366 00000 n 
-0000729429 00000 n 
-0000729492 00000 n 
-0000729554 00000 n 
-0000729617 00000 n 
-0000729680 00000 n 
-0003966463 00000 n 
-0000735092 00000 n 
-0000731887 00000 n 
-0000729922 00000 n 
-0000732010 00000 n 
-0000732073 00000 n 
-0000732136 00000 n 
-0000732199 00000 n 
-0000732262 00000 n 
-0000732325 00000 n 
-0000732388 00000 n 
-0000732451 00000 n 
-0000732514 00000 n 
-0000732576 00000 n 
-0000732639 00000 n 
-0000732702 00000 n 
-0000732765 00000 n 
-0000732828 00000 n 
-0000732891 00000 n 
-0000732954 00000 n 
-0000733017 00000 n 
-0000733080 00000 n 
-0000733142 00000 n 
-0000733205 00000 n 
-0000733268 00000 n 
-0000733331 00000 n 
-0000733394 00000 n 
-0000733457 00000 n 
-0000733520 00000 n 
-0000733583 00000 n 
-0000733646 00000 n 
-0000733708 00000 n 
-0000733771 00000 n 
-0000733834 00000 n 
-0000733897 00000 n 
-0000733960 00000 n 
-0000734023 00000 n 
-0000734086 00000 n 
-0000734149 00000 n 
-0000734212 00000 n 
-0000734274 00000 n 
-0000734337 00000 n 
-0000734400 00000 n 
-0000734463 00000 n 
-0000734526 00000 n 
-0000734589 00000 n 
-0000734652 00000 n 
-0000734715 00000 n 
-0000734778 00000 n 
-0000734840 00000 n 
-0000734903 00000 n 
-0000734966 00000 n 
-0000738424 00000 n 
-0000736539 00000 n 
-0000735208 00000 n 
-0000736662 00000 n 
-0000736725 00000 n 
-0000736788 00000 n 
-0000736851 00000 n 
-0000736914 00000 n 
-0000736977 00000 n 
-0000737040 00000 n 
-0000737103 00000 n 
-0000737166 00000 n 
-0000737228 00000 n 
-0000737291 00000 n 
-0000737354 00000 n 
-0000737417 00000 n 
-0000737480 00000 n 
-0000737543 00000 n 
-0000737606 00000 n 
-0000737669 00000 n 
-0000737732 00000 n 
-0000737794 00000 n 
-0000737857 00000 n 
-0000737920 00000 n 
-0000737983 00000 n 
-0000738046 00000 n 
-0000738109 00000 n 
-0000738172 00000 n 
-0000738235 00000 n 
-0000738298 00000 n 
-0000743186 00000 n 
-0000740232 00000 n 
-0000738540 00000 n 
-0000740355 00000 n 
-0000740418 00000 n 
-0000740481 00000 n 
-0000740544 00000 n 
-0000740607 00000 n 
-0000740670 00000 n 
-0000740733 00000 n 
-0000740796 00000 n 
-0000740859 00000 n 
-0000740921 00000 n 
-0000740984 00000 n 
-0000741047 00000 n 
-0000741110 00000 n 
-0000741173 00000 n 
-0000741236 00000 n 
-0000741299 00000 n 
-0000741362 00000 n 
-0000741425 00000 n 
-0000741487 00000 n 
-0000741550 00000 n 
-0000741613 00000 n 
-0000741676 00000 n 
-0000741739 00000 n 
-0000741802 00000 n 
-0000741865 00000 n 
-0000741928 00000 n 
-0000741991 00000 n 
-0000742053 00000 n 
-0000742116 00000 n 
-0000742179 00000 n 
-0000742242 00000 n 
-0000742305 00000 n 
-0000742368 00000 n 
-0000742431 00000 n 
-0000742494 00000 n 
-0000742557 00000 n 
-0000742619 00000 n 
-0000742682 00000 n 
-0000742745 00000 n 
-0000742808 00000 n 
-0000742871 00000 n 
-0000742934 00000 n 
-0000742997 00000 n 
-0000743060 00000 n 
-0000748281 00000 n 
-0000745263 00000 n 
-0000743302 00000 n 
-0000745386 00000 n 
-0000745449 00000 n 
-0000745512 00000 n 
-0000745575 00000 n 
-0000745638 00000 n 
-0000745701 00000 n 
-0000745764 00000 n 
-0000745827 00000 n 
-0000745890 00000 n 
-0000745952 00000 n 
-0000746015 00000 n 
-0000746078 00000 n 
-0000746141 00000 n 
-0000746204 00000 n 
-0000746267 00000 n 
-0000746330 00000 n 
-0000746393 00000 n 
-0000746456 00000 n 
-0000746518 00000 n 
-0000746581 00000 n 
-0000746644 00000 n 
-0000746707 00000 n 
-0000746770 00000 n 
-0000746896 00000 n 
-0000746959 00000 n 
-0000747021 00000 n 
-0000747084 00000 n 
-0000747147 00000 n 
-0000747210 00000 n 
-0000747273 00000 n 
-0000747336 00000 n 
-0000747399 00000 n 
-0000747462 00000 n 
-0000747525 00000 n 
-0000747588 00000 n 
-0000747651 00000 n 
-0000747714 00000 n 
-0000747777 00000 n 
-0000747840 00000 n 
-0000747903 00000 n 
-0000747966 00000 n 
-0000748029 00000 n 
-0000748092 00000 n 
-0000748155 00000 n 
-0000753476 00000 n 
-0000750334 00000 n 
-0000748397 00000 n 
-0000750457 00000 n 
-0000750520 00000 n 
-0000750583 00000 n 
-0000750646 00000 n 
-0000750709 00000 n 
-0000750772 00000 n 
-0000750835 00000 n 
-0000750898 00000 n 
-0000750961 00000 n 
-0000751023 00000 n 
-0000751086 00000 n 
-0000751149 00000 n 
-0000751212 00000 n 
-0000751275 00000 n 
-0000751338 00000 n 
-0000751401 00000 n 
-0000751464 00000 n 
-0000751527 00000 n 
-0000751589 00000 n 
-0000751652 00000 n 
-0000751715 00000 n 
-0000751778 00000 n 
-0000751841 00000 n 
-0000751904 00000 n 
-0000751967 00000 n 
-0000752030 00000 n 
-0000752093 00000 n 
-0000752155 00000 n 
-0000752218 00000 n 
-0000752281 00000 n 
-0000752344 00000 n 
-0000752407 00000 n 
-0000752470 00000 n 
-0000752533 00000 n 
-0000752596 00000 n 
-0000752659 00000 n 
-0000752721 00000 n 
-0000752784 00000 n 
-0000752847 00000 n 
-0000752910 00000 n 
-0000752973 00000 n 
-0000753036 00000 n 
-0000753099 00000 n 
-0000753162 00000 n 
-0000753225 00000 n 
-0000753287 00000 n 
-0000753350 00000 n 
-0000758438 00000 n 
-0000755359 00000 n 
-0000753592 00000 n 
-0000755482 00000 n 
-0000755545 00000 n 
-0000755608 00000 n 
-0000755671 00000 n 
-0000755734 00000 n 
-0000755797 00000 n 
-0000755860 00000 n 
-0000755923 00000 n 
-0000755986 00000 n 
-0000756048 00000 n 
-0000756111 00000 n 
-0000756174 00000 n 
-0000756237 00000 n 
-0000756300 00000 n 
-0000756363 00000 n 
-0000756426 00000 n 
-0000756489 00000 n 
-0000756552 00000 n 
-0000756614 00000 n 
-0000756677 00000 n 
-0000756740 00000 n 
-0000756803 00000 n 
-0000756866 00000 n 
-0000756929 00000 n 
-0000756992 00000 n 
-0000757055 00000 n 
-0000757118 00000 n 
-0000757180 00000 n 
-0000757243 00000 n 
-0000757306 00000 n 
-0000757369 00000 n 
-0000757432 00000 n 
-0000757495 00000 n 
-0000757558 00000 n 
-0000757621 00000 n 
-0000757684 00000 n 
-0000757746 00000 n 
-0000757809 00000 n 
-0000757872 00000 n 
-0000757935 00000 n 
-0000757998 00000 n 
-0000758061 00000 n 
-0000758124 00000 n 
-0000758187 00000 n 
-0000758250 00000 n 
-0000758312 00000 n 
-0003966589 00000 n 
-0000768603 00000 n 
-0000768754 00000 n 
-0000764274 00000 n 
-0000761720 00000 n 
-0000758554 00000 n 
-0000761843 00000 n 
-0000761906 00000 n 
-0000761969 00000 n 
-0000762032 00000 n 
-0000762095 00000 n 
-0000762158 00000 n 
-0000762221 00000 n 
-0000762284 00000 n 
-0000762347 00000 n 
-0000762410 00000 n 
-0000762473 00000 n 
-0000762536 00000 n 
-0000762599 00000 n 
-0000762661 00000 n 
-0000762724 00000 n 
-0000762787 00000 n 
-0000762850 00000 n 
-0000762913 00000 n 
-0000762976 00000 n 
-0000763227 00000 n 
-0000763290 00000 n 
-0000763353 00000 n 
-0000763413 00000 n 
-0000763474 00000 n 
-0000763535 00000 n 
-0000763596 00000 n 
-0000763657 00000 n 
-0000763719 00000 n 
-0000763782 00000 n 
-0000763843 00000 n 
-0000763904 00000 n 
-0000763965 00000 n 
-0000764025 00000 n 
-0000764148 00000 n 
-0000764211 00000 n 
-0000768905 00000 n 
-0000769056 00000 n 
-0000774249 00000 n 
-0000770341 00000 n 
-0000768432 00000 n 
-0000764404 00000 n 
-0000769207 00000 n 
-0000769270 00000 n 
-0000769333 00000 n 
-0000769396 00000 n 
-0000769459 00000 n 
-0000769522 00000 n 
-0000769585 00000 n 
-0000769648 00000 n 
-0000769711 00000 n 
-0000769774 00000 n 
-0000769837 00000 n 
-0000769900 00000 n 
-0000769963 00000 n 
-0000770026 00000 n 
-0000770089 00000 n 
-0000770152 00000 n 
-0000770215 00000 n 
-0000770278 00000 n 
-0000774833 00000 n 
-0000774105 00000 n 
-0000770457 00000 n 
-0000774396 00000 n 
-0000774583 00000 n 
-0000774645 00000 n 
-0000774707 00000 n 
-0000774770 00000 n 
-0000777009 00000 n 
-0000776823 00000 n 
-0000774992 00000 n 
-0000776946 00000 n 
-0000781221 00000 n 
-0000780584 00000 n 
-0000781561 00000 n 
-0000780440 00000 n 
-0000777139 00000 n 
-0000781375 00000 n 
-0000781109 00000 n 
-0000781199 00000 n 
-0000785743 00000 n 
-0000785495 00000 n 
-0000781720 00000 n 
-0000785618 00000 n 
-0003966715 00000 n 
-0000789810 00000 n 
-0000789374 00000 n 
-0000785859 00000 n 
-0000789497 00000 n 
-0000789684 00000 n 
-0000789747 00000 n 
-0000793975 00000 n 
-0000794165 00000 n 
-0000794378 00000 n 
-0000794603 00000 n 
-0000794812 00000 n 
-0000794988 00000 n 
-0000795157 00000 n 
-0000795344 00000 n 
-0000795508 00000 n 
-0000795689 00000 n 
-0000795861 00000 n 
-0000796171 00000 n 
-0000793741 00000 n 
-0000789926 00000 n 
-0000796046 00000 n 
-0000799213 00000 n 
-0000799390 00000 n 
-0000799585 00000 n 
-0000799785 00000 n 
-0000802961 00000 n 
-0000800069 00000 n 
-0000799042 00000 n 
-0000796287 00000 n 
-0000799944 00000 n 
-0000836757 00000 n 
-0000837069 00000 n 
-0000802838 00000 n 
-0000800185 00000 n 
-0000836631 00000 n 
-0000836882 00000 n 
-0000837007 00000 n 
-0000818028 00000 n 
-0000841389 00000 n 
-0000841542 00000 n 
-0000842316 00000 n 
-0000841227 00000 n 
-0000837236 00000 n 
-0000841943 00000 n 
-0000842130 00000 n 
-0000841743 00000 n 
-0001123508 00000 n 
-0000846432 00000 n 
-0000846912 00000 n 
-0000846288 00000 n 
-0000842474 00000 n 
-0000846602 00000 n 
-0000846787 00000 n 
-0003966841 00000 n 
-0000853979 00000 n 
-0000850523 00000 n 
-0000847071 00000 n 
-0000850646 00000 n 
-0000850771 00000 n 
-0000850834 00000 n 
-0000850897 00000 n 
-0000850960 00000 n 
-0000851023 00000 n 
-0000851086 00000 n 
-0000851149 00000 n 
-0000851212 00000 n 
-0000851275 00000 n 
-0000851338 00000 n 
-0000851400 00000 n 
-0000851463 00000 n 
-0000851526 00000 n 
-0000851589 00000 n 
-0000851652 00000 n 
-0000851715 00000 n 
-0000851778 00000 n 
-0000851841 00000 n 
-0000851904 00000 n 
-0000851966 00000 n 
-0000852029 00000 n 
-0000852092 00000 n 
-0000852155 00000 n 
-0000852218 00000 n 
-0000852281 00000 n 
-0000852344 00000 n 
-0000852407 00000 n 
-0000852470 00000 n 
-0000852532 00000 n 
-0000852595 00000 n 
-0000852658 00000 n 
-0000852721 00000 n 
-0000852784 00000 n 
-0000852847 00000 n 
-0000852910 00000 n 
-0000852973 00000 n 
-0000853036 00000 n 
-0000853098 00000 n 
-0000853161 00000 n 
-0000853224 00000 n 
-0000853287 00000 n 
-0000853350 00000 n 
-0000853413 00000 n 
-0000853476 00000 n 
-0000853539 00000 n 
-0000853602 00000 n 
-0000853664 00000 n 
-0000853727 00000 n 
-0000853790 00000 n 
-0000853853 00000 n 
-0000853916 00000 n 
-0000856381 00000 n 
-0000857732 00000 n 
-0000856237 00000 n 
-0000854109 00000 n 
-0000856537 00000 n 
-0000856600 00000 n 
-0000856663 00000 n 
-0000856726 00000 n 
-0000856851 00000 n 
-0000856914 00000 n 
-0000856977 00000 n 
-0000857040 00000 n 
-0000857103 00000 n 
-0000857166 00000 n 
-0000857229 00000 n 
-0000857292 00000 n 
-0000857417 00000 n 
-0000857480 00000 n 
-0000857543 00000 n 
-0000857606 00000 n 
-0000857669 00000 n 
-0000954392 00000 n 
-0000863391 00000 n 
-0000861183 00000 n 
-0000857862 00000 n 
-0000861306 00000 n 
-0000861369 00000 n 
-0000861432 00000 n 
-0000861495 00000 n 
-0000861555 00000 n 
-0000861616 00000 n 
-0000861677 00000 n 
-0000861738 00000 n 
-0000861799 00000 n 
-0000861860 00000 n 
-0000861921 00000 n 
-0000861982 00000 n 
-0000862043 00000 n 
-0000862103 00000 n 
-0000862166 00000 n 
-0000862227 00000 n 
-0000862290 00000 n 
-0000862351 00000 n 
-0000862413 00000 n 
-0000862470 00000 n 
-0000862531 00000 n 
-0000862594 00000 n 
-0000862657 00000 n 
-0000862718 00000 n 
-0000862781 00000 n 
-0000862844 00000 n 
-0000862905 00000 n 
-0000862966 00000 n 
-0000863027 00000 n 
-0000863088 00000 n 
-0000863149 00000 n 
-0000863210 00000 n 
-0000863271 00000 n 
-0000863332 00000 n 
-0000868975 00000 n 
-0000866435 00000 n 
-0000863493 00000 n 
-0000866558 00000 n 
-0000866621 00000 n 
-0000866682 00000 n 
-0000866743 00000 n 
-0000866804 00000 n 
-0000866865 00000 n 
-0000866926 00000 n 
-0000866986 00000 n 
-0000867047 00000 n 
-0000867108 00000 n 
-0000867169 00000 n 
-0000867230 00000 n 
-0000867291 00000 n 
-0000867352 00000 n 
-0000867413 00000 n 
-0000867474 00000 n 
-0000867534 00000 n 
-0000867595 00000 n 
-0000867656 00000 n 
-0000867717 00000 n 
-0000867842 00000 n 
-0000867905 00000 n 
-0000867968 00000 n 
-0000868031 00000 n 
-0000868094 00000 n 
-0000868157 00000 n 
-0000868220 00000 n 
-0000868283 00000 n 
-0000868346 00000 n 
-0000868409 00000 n 
-0000868472 00000 n 
-0000868535 00000 n 
-0000868598 00000 n 
-0000868661 00000 n 
-0000868724 00000 n 
-0000868787 00000 n 
-0000868850 00000 n 
-0000870963 00000 n 
-0000948803 00000 n 
-0000875264 00000 n 
-0000872751 00000 n 
-0000870819 00000 n 
-0000869105 00000 n 
-0000871117 00000 n 
-0000871304 00000 n 
-0000871367 00000 n 
-0000871430 00000 n 
-0000871493 00000 n 
-0000871556 00000 n 
-0000871619 00000 n 
-0000871681 00000 n 
-0000871744 00000 n 
-0000871806 00000 n 
-0000871869 00000 n 
-0000871932 00000 n 
-0000871995 00000 n 
-0000872058 00000 n 
-0000872121 00000 n 
-0000872184 00000 n 
-0000872247 00000 n 
-0000872310 00000 n 
-0000872373 00000 n 
-0000872436 00000 n 
-0000872499 00000 n 
-0000872562 00000 n 
-0000872625 00000 n 
-0000872688 00000 n 
-0000948954 00000 n 
-0000949108 00000 n 
-0000949268 00000 n 
-0000949419 00000 n 
-0000952886 00000 n 
-0000949943 00000 n 
-0000875084 00000 n 
-0000872853 00000 n 
-0000949567 00000 n 
-0000949755 00000 n 
-0000949880 00000 n 
-0003966967 00000 n 
-0000943006 00000 n 
-0000953328 00000 n 
-0000953046 00000 n 
-0000954455 00000 n 
-0000952733 00000 n 
-0000950096 00000 n 
-0000953202 00000 n 
-0000953391 00000 n 
-0000953454 00000 n 
-0000953517 00000 n 
-0000953580 00000 n 
-0000953641 00000 n 
-0000953702 00000 n 
-0000953765 00000 n 
-0000953828 00000 n 
-0000953891 00000 n 
-0000953952 00000 n 
-0000954015 00000 n 
-0000954078 00000 n 
-0000954141 00000 n 
-0000954204 00000 n 
-0000954266 00000 n 
-0000954329 00000 n 
-0000960006 00000 n 
-0000961072 00000 n 
-0000957117 00000 n 
-0000954571 00000 n 
-0000957240 00000 n 
-0000957303 00000 n 
-0000957366 00000 n 
-0000957429 00000 n 
-0000957492 00000 n 
-0000957555 00000 n 
-0000957618 00000 n 
-0000957681 00000 n 
-0000957744 00000 n 
-0000957807 00000 n 
-0000957870 00000 n 
-0000957933 00000 n 
-0000957996 00000 n 
-0000958058 00000 n 
-0000958121 00000 n 
-0000958184 00000 n 
-0000958247 00000 n 
-0000958310 00000 n 
-0000958373 00000 n 
-0000958436 00000 n 
-0000958499 00000 n 
-0000958562 00000 n 
-0000958624 00000 n 
-0000958687 00000 n 
-0000958750 00000 n 
-0000958813 00000 n 
-0000958876 00000 n 
-0000958939 00000 n 
-0000959002 00000 n 
-0000959065 00000 n 
-0000959128 00000 n 
-0000959190 00000 n 
-0000959253 00000 n 
-0000959316 00000 n 
-0000959379 00000 n 
-0000959442 00000 n 
-0000959505 00000 n 
-0000959568 00000 n 
-0000959631 00000 n 
-0000959694 00000 n 
-0000959756 00000 n 
-0000959819 00000 n 
-0000959882 00000 n 
-0000959945 00000 n 
-0000960067 00000 n 
-0000960130 00000 n 
-0000960193 00000 n 
-0000960256 00000 n 
-0000960319 00000 n 
-0000960382 00000 n 
-0000960445 00000 n 
-0000960508 00000 n 
-0000960570 00000 n 
-0000960633 00000 n 
-0000960696 00000 n 
-0000960759 00000 n 
-0000960822 00000 n 
-0000960885 00000 n 
-0000960948 00000 n 
-0000961010 00000 n 
-0000965242 00000 n 
-0000963484 00000 n 
-0000961188 00000 n 
-0000963607 00000 n 
-0000963732 00000 n 
-0000963795 00000 n 
-0000963858 00000 n 
-0000963921 00000 n 
-0000963984 00000 n 
-0000964047 00000 n 
-0000964110 00000 n 
-0000964173 00000 n 
-0000964236 00000 n 
-0000964299 00000 n 
-0000964362 00000 n 
-0000964425 00000 n 
-0000964488 00000 n 
-0000964551 00000 n 
-0000964614 00000 n 
-0000964677 00000 n 
-0000964740 00000 n 
-0000964803 00000 n 
-0000964866 00000 n 
-0000964929 00000 n 
-0000964992 00000 n 
-0000965053 00000 n 
-0000965116 00000 n 
-0000965179 00000 n 
-0000969017 00000 n 
-0000969171 00000 n 
-0000971763 00000 n 
-0000968864 00000 n 
-0000965386 00000 n 
-0000969326 00000 n 
-0000969389 00000 n 
-0000969452 00000 n 
-0000969515 00000 n 
-0000969578 00000 n 
-0000969641 00000 n 
-0000969704 00000 n 
-0000969767 00000 n 
-0000969830 00000 n 
-0000969893 00000 n 
-0000969956 00000 n 
-0000970019 00000 n 
-0000970082 00000 n 
-0000970144 00000 n 
-0000970207 00000 n 
-0000970270 00000 n 
-0000970333 00000 n 
-0000970396 00000 n 
-0000970459 00000 n 
-0000970522 00000 n 
-0000970585 00000 n 
-0000970648 00000 n 
-0000970710 00000 n 
-0000970773 00000 n 
-0000970836 00000 n 
-0000970899 00000 n 
-0000970962 00000 n 
-0000971023 00000 n 
-0000971086 00000 n 
-0000971149 00000 n 
-0000971212 00000 n 
-0000971273 00000 n 
-0000971334 00000 n 
-0000971395 00000 n 
-0000971456 00000 n 
-0000971519 00000 n 
-0000971582 00000 n 
-0000971642 00000 n 
-0000971703 00000 n 
-0000975316 00000 n 
-0000975483 00000 n 
-0000975650 00000 n 
-0000975811 00000 n 
-0000978483 00000 n 
-0000975145 00000 n 
-0000971893 00000 n 
-0000975972 00000 n 
-0000976035 00000 n 
-0000976096 00000 n 
-0000976157 00000 n 
-0000976218 00000 n 
-0000976279 00000 n 
-0000976340 00000 n 
-0000976400 00000 n 
-0000976461 00000 n 
-0000976522 00000 n 
-0000976583 00000 n 
-0000976644 00000 n 
-0000976707 00000 n 
-0000976767 00000 n 
-0000976828 00000 n 
-0000976889 00000 n 
-0000976950 00000 n 
-0000977011 00000 n 
-0000977072 00000 n 
-0000977133 00000 n 
-0000977194 00000 n 
-0000977255 00000 n 
-0000977315 00000 n 
-0000977376 00000 n 
-0000977437 00000 n 
-0000977498 00000 n 
-0000977621 00000 n 
-0000977683 00000 n 
-0000977746 00000 n 
-0000977809 00000 n 
-0000977872 00000 n 
-0000977931 00000 n 
-0000977994 00000 n 
-0000978055 00000 n 
-0000978118 00000 n 
-0000978179 00000 n 
-0000978240 00000 n 
-0000978301 00000 n 
-0000978362 00000 n 
-0000978423 00000 n 
-0000991277 00000 n 
-0000997847 00000 n 
-0001104269 00000 n 
-0001106156 00000 n 
-0000984611 00000 n 
-0000982147 00000 n 
-0000978613 00000 n 
-0000982270 00000 n 
-0000982333 00000 n 
-0000982394 00000 n 
-0000982455 00000 n 
-0000982516 00000 n 
-0000982577 00000 n 
-0000982638 00000 n 
-0000982698 00000 n 
-0000982759 00000 n 
-0000982820 00000 n 
-0000982883 00000 n 
-0000982946 00000 n 
-0000983007 00000 n 
-0000983068 00000 n 
-0000983128 00000 n 
-0000983189 00000 n 
-0000983252 00000 n 
-0000983315 00000 n 
-0000983376 00000 n 
-0000983439 00000 n 
-0000983500 00000 n 
-0000983563 00000 n 
-0000983626 00000 n 
-0000983687 00000 n 
-0000983748 00000 n 
-0000983811 00000 n 
-0000983872 00000 n 
-0000983933 00000 n 
-0000983994 00000 n 
-0000984055 00000 n 
-0000984116 00000 n 
-0000984176 00000 n 
-0000984237 00000 n 
-0000984300 00000 n 
-0000984361 00000 n 
-0000984424 00000 n 
-0000984487 00000 n 
-0000984550 00000 n 
-0003967093 00000 n 
-0000991340 00000 n 
-0000989143 00000 n 
-0000984727 00000 n 
-0000989266 00000 n 
-0000989329 00000 n 
-0000989392 00000 n 
-0000989453 00000 n 
-0000989516 00000 n 
-0000989579 00000 n 
-0000989641 00000 n 
-0000989704 00000 n 
-0000989767 00000 n 
-0000989830 00000 n 
-0000989893 00000 n 
-0000989956 00000 n 
-0000990019 00000 n 
-0000990082 00000 n 
-0000990145 00000 n 
-0000990207 00000 n 
-0000990270 00000 n 
-0000990333 00000 n 
-0000990396 00000 n 
-0000990459 00000 n 
-0000990522 00000 n 
-0000990585 00000 n 
-0000990648 00000 n 
-0000990711 00000 n 
-0000990773 00000 n 
-0000990836 00000 n 
-0000990899 00000 n 
-0000990962 00000 n 
-0000991025 00000 n 
-0000991088 00000 n 
-0000991151 00000 n 
-0000991214 00000 n 
-0000995935 00000 n 
-0000996119 00000 n 
-0000996319 00000 n 
-0000998713 00000 n 
-0000995773 00000 n 
-0000991483 00000 n 
-0000996526 00000 n 
-0000996589 00000 n 
-0000996652 00000 n 
-0000996715 00000 n 
-0000996778 00000 n 
-0000996840 00000 n 
-0000996903 00000 n 
-0000996966 00000 n 
-0000997029 00000 n 
-0000997092 00000 n 
-0000997155 00000 n 
-0000997218 00000 n 
-0000997281 00000 n 
-0000997344 00000 n 
-0000997406 00000 n 
-0000997469 00000 n 
-0000997532 00000 n 
-0000997595 00000 n 
-0000997658 00000 n 
-0000997721 00000 n 
-0000997784 00000 n 
-0000997971 00000 n 
-0000998096 00000 n 
-0000998159 00000 n 
-0000998222 00000 n 
-0000998283 00000 n 
-0000998344 00000 n 
-0000998405 00000 n 
-0000998465 00000 n 
-0000998526 00000 n 
-0000998587 00000 n 
-0000998650 00000 n 
-0001001890 00000 n 
-0001002045 00000 n 
-0001004732 00000 n 
-0001001737 00000 n 
-0000998870 00000 n 
-0001002197 00000 n 
-0001002260 00000 n 
-0001002323 00000 n 
-0001002384 00000 n 
-0001002445 00000 n 
-0001002506 00000 n 
-0001002567 00000 n 
-0001002628 00000 n 
-0001002689 00000 n 
-0001002749 00000 n 
-0001002812 00000 n 
-0001002875 00000 n 
-0001002936 00000 n 
-0001002997 00000 n 
-0001003058 00000 n 
-0001003119 00000 n 
-0001003180 00000 n 
-0001003241 00000 n 
-0001003304 00000 n 
-0001003367 00000 n 
-0001003428 00000 n 
-0001003489 00000 n 
-0001003612 00000 n 
-0001003675 00000 n 
-0001003738 00000 n 
-0001003799 00000 n 
-0001003862 00000 n 
-0001003925 00000 n 
-0001003986 00000 n 
-0001004049 00000 n 
-0001004110 00000 n 
-0001004173 00000 n 
-0001004236 00000 n 
-0001004297 00000 n 
-0001004358 00000 n 
-0001004421 00000 n 
-0001004484 00000 n 
-0001004545 00000 n 
-0001004608 00000 n 
-0001004671 00000 n 
-0001008450 00000 n 
-0001011627 00000 n 
-0001008202 00000 n 
-0001004848 00000 n 
-0001008325 00000 n 
-0001008513 00000 n 
-0001008576 00000 n 
-0001008639 00000 n 
-0001008700 00000 n 
-0001008762 00000 n 
-0001008824 00000 n 
-0001008885 00000 n 
-0001008948 00000 n 
-0001009009 00000 n 
-0001009070 00000 n 
-0001009131 00000 n 
-0001009192 00000 n 
-0001009252 00000 n 
-0001009313 00000 n 
-0001009374 00000 n 
-0001009435 00000 n 
-0001009496 00000 n 
-0001009557 00000 n 
-0001009618 00000 n 
-0001009679 00000 n 
-0001009740 00000 n 
-0001009801 00000 n 
-0001009862 00000 n 
-0001009923 00000 n 
-0001009984 00000 n 
-0001010045 00000 n 
-0001010106 00000 n 
-0001010167 00000 n 
-0001010228 00000 n 
-0001010289 00000 n 
-0001010350 00000 n 
-0001010410 00000 n 
-0001010471 00000 n 
-0001010532 00000 n 
-0001010593 00000 n 
-0001010654 00000 n 
-0001010715 00000 n 
-0001010776 00000 n 
-0001010837 00000 n 
-0001010898 00000 n 
-0001010958 00000 n 
-0001011019 00000 n 
-0001011080 00000 n 
-0001011141 00000 n 
-0001011202 00000 n 
-0001011263 00000 n 
-0001011324 00000 n 
-0001011385 00000 n 
-0001011446 00000 n 
-0001011506 00000 n 
-0001011567 00000 n 
-0001017943 00000 n 
-0001015135 00000 n 
-0001011743 00000 n 
-0001015258 00000 n 
-0001015321 00000 n 
-0001015382 00000 n 
-0001015443 00000 n 
-0001015504 00000 n 
-0001015565 00000 n 
-0001015626 00000 n 
-0001015686 00000 n 
-0001015747 00000 n 
-0001015808 00000 n 
-0001015869 00000 n 
-0001015930 00000 n 
-0001015991 00000 n 
-0001016052 00000 n 
-0001016113 00000 n 
-0001016174 00000 n 
-0001016234 00000 n 
-0001016295 00000 n 
-0001016356 00000 n 
-0001016417 00000 n 
-0001016478 00000 n 
-0001016539 00000 n 
-0001016600 00000 n 
-0001016661 00000 n 
-0001016722 00000 n 
-0001016782 00000 n 
-0001016843 00000 n 
-0001016904 00000 n 
-0001016965 00000 n 
-0001017026 00000 n 
-0001017087 00000 n 
-0001017148 00000 n 
-0001017209 00000 n 
-0001017270 00000 n 
-0001017330 00000 n 
-0001017391 00000 n 
-0001017452 00000 n 
-0001017513 00000 n 
-0001017574 00000 n 
-0001017635 00000 n 
-0001017696 00000 n 
-0001017757 00000 n 
-0001017818 00000 n 
-0001022492 00000 n 
-0001022644 00000 n 
-0001022798 00000 n 
-0001023639 00000 n 
-0001022330 00000 n 
-0001018059 00000 n 
-0001022956 00000 n 
-0001023082 00000 n 
-0001023145 00000 n 
-0001023208 00000 n 
-0001023271 00000 n 
-0001023332 00000 n 
-0001023392 00000 n 
-0001023455 00000 n 
-0001023518 00000 n 
-0001023580 00000 n 
-0003967219 00000 n 
-0002580387 00000 n 
-0001027107 00000 n 
-0001030147 00000 n 
-0001026963 00000 n 
-0001023769 00000 n 
-0001027264 00000 n 
-0001027327 00000 n 
-0001027390 00000 n 
-0001027451 00000 n 
-0001027512 00000 n 
-0001027573 00000 n 
-0001027634 00000 n 
-0001027695 00000 n 
-0001027756 00000 n 
-0001027817 00000 n 
-0001027878 00000 n 
-0001027938 00000 n 
-0001027999 00000 n 
-0001028060 00000 n 
-0001028121 00000 n 
-0001028182 00000 n 
-0001028243 00000 n 
-0001028304 00000 n 
-0001028365 00000 n 
-0001028426 00000 n 
-0001028487 00000 n 
-0001028548 00000 n 
-0001028609 00000 n 
-0001028670 00000 n 
-0001028731 00000 n 
-0001028792 00000 n 
-0001028855 00000 n 
-0001028918 00000 n 
-0001028979 00000 n 
-0001029040 00000 n 
-0001029102 00000 n 
-0001029163 00000 n 
-0001029224 00000 n 
-0001029285 00000 n 
-0001029348 00000 n 
-0001029411 00000 n 
-0001029471 00000 n 
-0001029532 00000 n 
-0001029593 00000 n 
-0001029656 00000 n 
-0001029719 00000 n 
-0001029780 00000 n 
-0001029841 00000 n 
-0001029900 00000 n 
-0001029963 00000 n 
-0001030024 00000 n 
-0001030085 00000 n 
-0001110097 00000 n 
-0001036743 00000 n 
-0001032959 00000 n 
-0001030263 00000 n 
-0001033082 00000 n 
-0001033145 00000 n 
-0001033208 00000 n 
-0001033269 00000 n 
-0001033330 00000 n 
-0001033391 00000 n 
-0001033452 00000 n 
-0001033513 00000 n 
-0001033574 00000 n 
-0001033634 00000 n 
-0001033695 00000 n 
-0001033756 00000 n 
-0001033817 00000 n 
-0001033878 00000 n 
-0001033939 00000 n 
-0001034000 00000 n 
-0001034061 00000 n 
-0001034122 00000 n 
-0001034182 00000 n 
-0001034243 00000 n 
-0001034304 00000 n 
-0001034365 00000 n 
-0001034426 00000 n 
-0001034487 00000 n 
-0001034548 00000 n 
-0001034609 00000 n 
-0001034670 00000 n 
-0001034730 00000 n 
-0001034791 00000 n 
-0001034852 00000 n 
-0001034913 00000 n 
-0001034974 00000 n 
-0001035035 00000 n 
-0001035098 00000 n 
-0001035161 00000 n 
-0001035222 00000 n 
-0001035283 00000 n 
-0001035344 00000 n 
-0001035405 00000 n 
-0001035466 00000 n 
-0001035526 00000 n 
-0001035587 00000 n 
-0001035648 00000 n 
-0001035709 00000 n 
-0001035770 00000 n 
-0001035831 00000 n 
-0001035892 00000 n 
-0001035953 00000 n 
-0001036014 00000 n 
-0001036074 00000 n 
-0001036135 00000 n 
-0001036196 00000 n 
-0001036257 00000 n 
-0001036318 00000 n 
-0001036379 00000 n 
-0001036440 00000 n 
-0001036501 00000 n 
-0001036562 00000 n 
-0001036622 00000 n 
-0001036683 00000 n 
-0001040043 00000 n 
-0001043071 00000 n 
-0001039899 00000 n 
-0001036845 00000 n 
-0001040194 00000 n 
-0001040257 00000 n 
-0001040318 00000 n 
-0001040379 00000 n 
-0001040440 00000 n 
-0001040501 00000 n 
-0001040562 00000 n 
-0001040622 00000 n 
-0001040683 00000 n 
-0001040744 00000 n 
-0001040805 00000 n 
-0001040866 00000 n 
-0001040927 00000 n 
-0001040988 00000 n 
-0001041050 00000 n 
-0001041113 00000 n 
-0001041174 00000 n 
-0001041235 00000 n 
-0001041296 00000 n 
-0001041357 00000 n 
-0001041418 00000 n 
-0001041479 00000 n 
-0001041540 00000 n 
-0001041600 00000 n 
-0001041663 00000 n 
-0001041725 00000 n 
-0001041785 00000 n 
-0001041846 00000 n 
-0001041907 00000 n 
-0001041968 00000 n 
-0001042029 00000 n 
-0001042090 00000 n 
-0001042151 00000 n 
-0001042212 00000 n 
-0001042273 00000 n 
-0001042336 00000 n 
-0001042399 00000 n 
-0001042460 00000 n 
-0001042521 00000 n 
-0001042582 00000 n 
-0001042643 00000 n 
-0001042704 00000 n 
-0001042765 00000 n 
-0001042825 00000 n 
-0001042886 00000 n 
-0001042947 00000 n 
-0001043008 00000 n 
-0001049625 00000 n 
-0001046561 00000 n 
-0001043187 00000 n 
-0001046684 00000 n 
-0001046747 00000 n 
-0001046810 00000 n 
-0001046871 00000 n 
-0001046932 00000 n 
-0001046995 00000 n 
-0001047057 00000 n 
-0001047118 00000 n 
-0001047178 00000 n 
-0001047241 00000 n 
-0001047304 00000 n 
-0001047365 00000 n 
-0001047426 00000 n 
-0001047487 00000 n 
-0001047550 00000 n 
-0001047613 00000 n 
-0001047674 00000 n 
-0001047735 00000 n 
-0001047796 00000 n 
-0001047857 00000 n 
-0001047918 00000 n 
-0001047979 00000 n 
-0001048039 00000 n 
-0001048102 00000 n 
-0001048165 00000 n 
-0001048225 00000 n 
-0001048286 00000 n 
-0001048347 00000 n 
-0001048408 00000 n 
-0001048469 00000 n 
-0001048530 00000 n 
-0001048591 00000 n 
-0001048652 00000 n 
-0001048713 00000 n 
-0001048773 00000 n 
-0001048834 00000 n 
-0001048895 00000 n 
-0001048956 00000 n 
-0001049017 00000 n 
-0001049078 00000 n 
-0001049139 00000 n 
-0001049200 00000 n 
-0001049261 00000 n 
-0001049321 00000 n 
-0001049382 00000 n 
-0001049443 00000 n 
-0001049504 00000 n 
-0001049565 00000 n 
-0001055711 00000 n 
-0001053073 00000 n 
-0001049727 00000 n 
-0001053196 00000 n 
-0001053259 00000 n 
-0001053322 00000 n 
-0001053385 00000 n 
-0001053446 00000 n 
-0001053507 00000 n 
-0001053568 00000 n 
-0001053631 00000 n 
-0001053693 00000 n 
-0001053754 00000 n 
-0001053815 00000 n 
-0001053876 00000 n 
-0001053937 00000 n 
-0001053998 00000 n 
-0001054059 00000 n 
-0001054120 00000 n 
-0001054179 00000 n 
-0001054240 00000 n 
-0001054302 00000 n 
-0001054364 00000 n 
-0001054425 00000 n 
-0001054485 00000 n 
-0001054546 00000 n 
-0001054607 00000 n 
-0001054668 00000 n 
-0001054729 00000 n 
-0001054790 00000 n 
-0001054851 00000 n 
-0001054914 00000 n 
-0001054977 00000 n 
-0001055037 00000 n 
-0001055098 00000 n 
-0001055159 00000 n 
-0001055220 00000 n 
-0001055281 00000 n 
-0001055342 00000 n 
-0001055403 00000 n 
-0001055464 00000 n 
-0001055525 00000 n 
-0001055588 00000 n 
-0001055651 00000 n 
-0001065214 00000 n 
-0001065363 00000 n 
-0001065515 00000 n 
-0001061646 00000 n 
-0001058764 00000 n 
-0001055827 00000 n 
-0001058887 00000 n 
-0001058950 00000 n 
-0001059013 00000 n 
-0001059074 00000 n 
-0001059137 00000 n 
-0001059200 00000 n 
-0001059261 00000 n 
-0001059324 00000 n 
-0001059386 00000 n 
-0001059447 00000 n 
-0001059507 00000 n 
-0001059568 00000 n 
-0001059629 00000 n 
-0001059690 00000 n 
-0001059751 00000 n 
-0001059812 00000 n 
-0001059873 00000 n 
-0001059934 00000 n 
-0001059995 00000 n 
-0001060055 00000 n 
-0001060116 00000 n 
-0001060177 00000 n 
-0001060238 00000 n 
-0001060299 00000 n 
-0001060360 00000 n 
-0001060421 00000 n 
-0001060482 00000 n 
-0001060543 00000 n 
-0001060603 00000 n 
-0001060664 00000 n 
-0001060727 00000 n 
-0001060790 00000 n 
-0001060851 00000 n 
-0001060912 00000 n 
-0001060973 00000 n 
-0001061033 00000 n 
-0001061094 00000 n 
-0001061155 00000 n 
-0001061216 00000 n 
-0001061277 00000 n 
-0001061338 00000 n 
-0001061399 00000 n 
-0001061460 00000 n 
-0001061583 00000 n 
-0003967345 00000 n 
-0001065666 00000 n 
-0001065828 00000 n 
-0001065988 00000 n 
-0001066148 00000 n 
-0001066305 00000 n 
-0001068458 00000 n 
-0001065007 00000 n 
-0001061776 00000 n 
-0001066463 00000 n 
-0001066526 00000 n 
-0001066589 00000 n 
-0001066652 00000 n 
-0001066715 00000 n 
-0001066778 00000 n 
-0001066840 00000 n 
-0001066901 00000 n 
-0001066962 00000 n 
-0001067025 00000 n 
-0001067088 00000 n 
-0001067149 00000 n 
-0001067212 00000 n 
-0001067275 00000 n 
-0001067336 00000 n 
-0001067399 00000 n 
-0001067461 00000 n 
-0001067522 00000 n 
-0001067585 00000 n 
-0001067648 00000 n 
-0001067709 00000 n 
-0001067772 00000 n 
-0001067835 00000 n 
-0001067898 00000 n 
-0001067959 00000 n 
-0001068020 00000 n 
-0001068143 00000 n 
-0001068206 00000 n 
-0001068269 00000 n 
-0001068332 00000 n 
-0001068395 00000 n 
-0001091889 00000 n 
-0001074620 00000 n 
-0001071497 00000 n 
-0001068588 00000 n 
-0001071620 00000 n 
-0001071683 00000 n 
-0001071746 00000 n 
-0001071807 00000 n 
-0001071870 00000 n 
-0001071931 00000 n 
-0001071994 00000 n 
-0001072055 00000 n 
-0001072116 00000 n 
-0001072177 00000 n 
-0001072238 00000 n 
-0001072299 00000 n 
-0001072359 00000 n 
-0001072420 00000 n 
-0001072481 00000 n 
-0001072542 00000 n 
-0001072603 00000 n 
-0001072664 00000 n 
-0001072725 00000 n 
-0001072786 00000 n 
-0001072847 00000 n 
-0001072907 00000 n 
-0001072970 00000 n 
-0001073033 00000 n 
-0001073093 00000 n 
-0001073154 00000 n 
-0001073215 00000 n 
-0001073276 00000 n 
-0001073337 00000 n 
-0001073398 00000 n 
-0001073459 00000 n 
-0001073520 00000 n 
-0001073581 00000 n 
-0001073641 00000 n 
-0001073702 00000 n 
-0001073763 00000 n 
-0001073824 00000 n 
-0001073885 00000 n 
-0001073946 00000 n 
-0001074007 00000 n 
-0001074068 00000 n 
-0001074129 00000 n 
-0001074189 00000 n 
-0001074250 00000 n 
-0001074311 00000 n 
-0001074372 00000 n 
-0001074435 00000 n 
-0001074498 00000 n 
-0001074559 00000 n 
-0001080599 00000 n 
-0001077837 00000 n 
-0001074722 00000 n 
-0001077960 00000 n 
-0001078023 00000 n 
-0001078086 00000 n 
-0001078149 00000 n 
-0001078210 00000 n 
-0001078271 00000 n 
-0001078332 00000 n 
-0001078395 00000 n 
-0001078458 00000 n 
-0001078519 00000 n 
-0001078580 00000 n 
-0001078643 00000 n 
-0001078706 00000 n 
-0001078767 00000 n 
-0001078828 00000 n 
-0001078889 00000 n 
-0001078950 00000 n 
-0001079011 00000 n 
-0001079072 00000 n 
-0001079132 00000 n 
-0001079193 00000 n 
-0001079254 00000 n 
-0001079315 00000 n 
-0001079376 00000 n 
-0001079437 00000 n 
-0001079498 00000 n 
-0001079559 00000 n 
-0001079620 00000 n 
-0001079680 00000 n 
-0001079741 00000 n 
-0001079802 00000 n 
-0001079863 00000 n 
-0001079924 00000 n 
-0001079985 00000 n 
-0001080048 00000 n 
-0001080111 00000 n 
-0001080172 00000 n 
-0001080233 00000 n 
-0001080294 00000 n 
-0001080355 00000 n 
-0001080416 00000 n 
-0001080477 00000 n 
-0001080538 00000 n 
-0001083433 00000 n 
-0001083596 00000 n 
-0001083757 00000 n 
-0001083918 00000 n 
-0001085613 00000 n 
-0001083262 00000 n 
-0001080701 00000 n 
-0001084074 00000 n 
-0001084137 00000 n 
-0001084200 00000 n 
-0001084263 00000 n 
-0001084323 00000 n 
-0001084386 00000 n 
-0001084447 00000 n 
-0001084510 00000 n 
-0001084571 00000 n 
-0001084632 00000 n 
-0001084695 00000 n 
-0001084758 00000 n 
-0001084819 00000 n 
-0001084880 00000 n 
-0001084940 00000 n 
-0001085001 00000 n 
-0001085062 00000 n 
-0001085123 00000 n 
-0001085184 00000 n 
-0001085245 00000 n 
-0001085306 00000 n 
-0001085367 00000 n 
-0001085428 00000 n 
-0001085487 00000 n 
-0001085550 00000 n 
-0001098256 00000 n 
-0001091952 00000 n 
-0001089502 00000 n 
-0001085715 00000 n 
-0001089625 00000 n 
-0001089688 00000 n 
-0001089751 00000 n 
-0001089814 00000 n 
-0001089877 00000 n 
-0001089940 00000 n 
-0001090003 00000 n 
-0001090066 00000 n 
-0001090129 00000 n 
-0001090192 00000 n 
-0001090253 00000 n 
-0001090316 00000 n 
-0001090379 00000 n 
-0001090442 00000 n 
-0001090505 00000 n 
-0001090568 00000 n 
-0001090631 00000 n 
-0001090694 00000 n 
-0001090757 00000 n 
-0001090819 00000 n 
-0001090882 00000 n 
-0001090945 00000 n 
-0001091008 00000 n 
-0001091071 00000 n 
-0001091134 00000 n 
-0001091197 00000 n 
-0001091260 00000 n 
-0001091323 00000 n 
-0001091385 00000 n 
-0001091448 00000 n 
-0001091511 00000 n 
-0001091574 00000 n 
-0001091637 00000 n 
-0001091700 00000 n 
-0001091763 00000 n 
-0001091826 00000 n 
-0001098319 00000 n 
-0001095869 00000 n 
-0001092081 00000 n 
-0001095992 00000 n 
-0001096055 00000 n 
-0001096118 00000 n 
-0001096181 00000 n 
-0001096244 00000 n 
-0001096307 00000 n 
-0001096370 00000 n 
-0001096433 00000 n 
-0001096496 00000 n 
-0001096559 00000 n 
-0001096620 00000 n 
-0001096683 00000 n 
-0001096746 00000 n 
-0001096809 00000 n 
-0001096872 00000 n 
-0001096935 00000 n 
-0001096998 00000 n 
-0001097061 00000 n 
-0001097124 00000 n 
-0001097186 00000 n 
-0001097249 00000 n 
-0001097312 00000 n 
-0001097375 00000 n 
-0001097438 00000 n 
-0001097501 00000 n 
-0001097564 00000 n 
-0001097627 00000 n 
-0001097690 00000 n 
-0001097752 00000 n 
-0001097815 00000 n 
-0001097878 00000 n 
-0001097941 00000 n 
-0001098004 00000 n 
-0001098067 00000 n 
-0001098130 00000 n 
-0001098193 00000 n 
-0003967471 00000 n 
-0001106219 00000 n 
-0001102511 00000 n 
-0001098448 00000 n 
-0001102634 00000 n 
-0001102697 00000 n 
-0001102760 00000 n 
-0001102823 00000 n 
-0001102886 00000 n 
-0001102949 00000 n 
-0001103012 00000 n 
-0001103075 00000 n 
-0001103138 00000 n 
-0001103201 00000 n 
-0001103262 00000 n 
-0001103325 00000 n 
-0001103388 00000 n 
-0001103451 00000 n 
-0001103514 00000 n 
-0001103577 00000 n 
-0001103640 00000 n 
-0001103703 00000 n 
-0001103766 00000 n 
-0001103828 00000 n 
-0001103891 00000 n 
-0001103954 00000 n 
-0001104017 00000 n 
-0001104080 00000 n 
-0001104143 00000 n 
-0001104206 00000 n 
-0001104332 00000 n 
-0001104395 00000 n 
-0001104458 00000 n 
-0001104521 00000 n 
-0001104584 00000 n 
-0001104647 00000 n 
-0001104710 00000 n 
-0001104772 00000 n 
-0001104835 00000 n 
-0001104898 00000 n 
-0001104961 00000 n 
-0001105024 00000 n 
-0001105087 00000 n 
-0001105150 00000 n 
-0001105213 00000 n 
-0001105276 00000 n 
-0001105338 00000 n 
-0001105401 00000 n 
-0001105464 00000 n 
-0001105527 00000 n 
-0001105590 00000 n 
-0001105653 00000 n 
-0001105716 00000 n 
-0001105779 00000 n 
-0001105842 00000 n 
-0001105904 00000 n 
-0001105967 00000 n 
-0001106030 00000 n 
-0001106093 00000 n 
-0001111917 00000 n 
-0001109534 00000 n 
-0001106334 00000 n 
-0001109657 00000 n 
-0001109720 00000 n 
-0001109783 00000 n 
-0001109846 00000 n 
-0001109909 00000 n 
-0001109972 00000 n 
-0001110035 00000 n 
-0001110283 00000 n 
-0001110346 00000 n 
-0001110409 00000 n 
-0001110472 00000 n 
-0001110535 00000 n 
-0001110598 00000 n 
-0001110661 00000 n 
-0001110723 00000 n 
-0001110786 00000 n 
-0001110849 00000 n 
-0001110974 00000 n 
-0001111037 00000 n 
-0001111100 00000 n 
-0001111163 00000 n 
-0001111226 00000 n 
-0001111288 00000 n 
-0001111351 00000 n 
-0001111414 00000 n 
-0001111477 00000 n 
-0001111540 00000 n 
-0001111603 00000 n 
-0001111666 00000 n 
-0001111729 00000 n 
-0001111792 00000 n 
-0001111854 00000 n 
-0001116053 00000 n 
-0001116254 00000 n 
-0001117540 00000 n 
-0001115900 00000 n 
-0001112061 00000 n 
-0001116424 00000 n 
-0001116487 00000 n 
-0001116550 00000 n 
-0001116612 00000 n 
-0001116675 00000 n 
-0001116738 00000 n 
-0001116863 00000 n 
-0001116926 00000 n 
-0001117051 00000 n 
-0001117114 00000 n 
-0001117177 00000 n 
-0001117240 00000 n 
-0001117301 00000 n 
-0001117362 00000 n 
-0001117423 00000 n 
-0001117484 00000 n 
-0001120788 00000 n 
-0001123571 00000 n 
-0001120644 00000 n 
-0001117670 00000 n 
-0001120999 00000 n 
-0001121062 00000 n 
-0001121125 00000 n 
-0001121188 00000 n 
-0001121249 00000 n 
-0001121310 00000 n 
-0001121371 00000 n 
-0001121433 00000 n 
-0001121496 00000 n 
-0001121557 00000 n 
-0001121618 00000 n 
-0001121679 00000 n 
-0001121740 00000 n 
-0001121801 00000 n 
-0001121862 00000 n 
-0001121923 00000 n 
-0001121983 00000 n 
-0001122044 00000 n 
-0001122105 00000 n 
-0001122166 00000 n 
-0001122227 00000 n 
-0001122288 00000 n 
-0001122349 00000 n 
-0001122410 00000 n 
-0001122471 00000 n 
-0001122531 00000 n 
-0001122592 00000 n 
-0001122653 00000 n 
-0001122714 00000 n 
-0001122775 00000 n 
-0001122836 00000 n 
-0001122897 00000 n 
-0001122958 00000 n 
-0001123019 00000 n 
-0001123079 00000 n 
-0001123140 00000 n 
-0001123201 00000 n 
-0001123262 00000 n 
-0001123323 00000 n 
-0001126936 00000 n 
-0001127092 00000 n 
-0001127244 00000 n 
-0001130589 00000 n 
-0001128342 00000 n 
-0001126774 00000 n 
-0001123687 00000 n 
-0001127404 00000 n 
-0001127467 00000 n 
-0001127530 00000 n 
-0001127593 00000 n 
-0001127656 00000 n 
-0001127719 00000 n 
-0001127782 00000 n 
-0001127843 00000 n 
-0001127904 00000 n 
-0001127967 00000 n 
-0001128030 00000 n 
-0001128092 00000 n 
-0001128155 00000 n 
-0001128216 00000 n 
-0001128279 00000 n 
-0001145186 00000 n 
-0001145312 00000 n 
-0001145689 00000 n 
-0001130466 00000 n 
-0001128472 00000 n 
-0001145060 00000 n 
-0001145437 00000 n 
-0001145500 00000 n 
-0001145563 00000 n 
-0001145626 00000 n 
-0003967597 00000 n 
-0001149761 00000 n 
-0001149949 00000 n 
-0001150732 00000 n 
-0001149608 00000 n 
-0001145842 00000 n 
-0001150168 00000 n 
-0001150231 00000 n 
-0001150294 00000 n 
-0001150357 00000 n 
-0001150420 00000 n 
-0001150483 00000 n 
-0001150546 00000 n 
-0001150608 00000 n 
-0001155005 00000 n 
-0001155157 00000 n 
-0001156188 00000 n 
-0001154852 00000 n 
-0001150876 00000 n 
-0001155308 00000 n 
-0001155433 00000 n 
-0001155496 00000 n 
-0001155559 00000 n 
-0001155622 00000 n 
-0001155685 00000 n 
-0001155748 00000 n 
-0001155811 00000 n 
-0001155874 00000 n 
-0001155937 00000 n 
-0001156000 00000 n 
-0001156063 00000 n 
-0001159607 00000 n 
-0001160000 00000 n 
-0001159463 00000 n 
-0001156318 00000 n 
-0001159813 00000 n 
-0001164798 00000 n 
-0001164550 00000 n 
-0001160102 00000 n 
-0001164673 00000 n 
-0001167135 00000 n 
-0001166949 00000 n 
-0001164928 00000 n 
-0001167072 00000 n 
-0001170436 00000 n 
-0001170894 00000 n 
-0001170292 00000 n 
-0001167265 00000 n 
-0001170585 00000 n 
-0001170710 00000 n 
-0003967723 00000 n 
-0001174981 00000 n 
-0001175127 00000 n 
-0001175460 00000 n 
-0001174828 00000 n 
-0001171010 00000 n 
-0001175273 00000 n 
-0001179487 00000 n 
-0001179821 00000 n 
-0001179343 00000 n 
-0001175604 00000 n 
-0001179634 00000 n 
-0001188728 00000 n 
-0001184454 00000 n 
-0001184206 00000 n 
-0001179937 00000 n 
-0001184329 00000 n 
-0001188875 00000 n 
-0001189024 00000 n 
-0001189176 00000 n 
-0001191562 00000 n 
-0001189517 00000 n 
-0001188557 00000 n 
-0001184570 00000 n 
-0001189330 00000 n 
-0001501051 00000 n 
-0001602028 00000 n 
-0001209908 00000 n 
-0001209470 00000 n 
-0001206953 00000 n 
-0001209627 00000 n 
-0001212585 00000 n 
-0001210660 00000 n 
-0001191409 00000 n 
-0001189633 00000 n 
-0001209782 00000 n 
-0001209970 00000 n 
-0001210032 00000 n 
-0001210095 00000 n 
-0001210157 00000 n 
-0001210283 00000 n 
-0001210345 00000 n 
-0001210408 00000 n 
-0001210471 00000 n 
-0001210534 00000 n 
-0001210597 00000 n 
-0001201703 00000 n 
-0001208885 00000 n 
-0001346573 00000 n 
-0001346140 00000 n 
-0001223296 00000 n 
-0001346294 00000 n 
-0001259935 00000 n 
-0001347200 00000 n 
-0001212432 00000 n 
-0001210829 00000 n 
-0001346447 00000 n 
-0001346636 00000 n 
-0001346698 00000 n 
-0001346761 00000 n 
-0001346823 00000 n 
-0001346886 00000 n 
-0001347012 00000 n 
-0001347137 00000 n 
-0003967849 00000 n 
-0001219433 00000 n 
-0001233328 00000 n 
-0001272436 00000 n 
-0001350437 00000 n 
-0001350585 00000 n 
-0001350744 00000 n 
-0001352821 00000 n 
-0001350275 00000 n 
-0001347370 00000 n 
-0001350902 00000 n 
-0001350965 00000 n 
-0001351028 00000 n 
-0001351091 00000 n 
-0001351152 00000 n 
-0001351215 00000 n 
-0001351276 00000 n 
-0001351339 00000 n 
-0001351402 00000 n 
-0001351465 00000 n 
-0001351526 00000 n 
-0001351587 00000 n 
-0001351648 00000 n 
-0001351709 00000 n 
-0001351768 00000 n 
-0001351829 00000 n 
-0001351890 00000 n 
-0001351951 00000 n 
-0001352012 00000 n 
-0001352073 00000 n 
-0001352134 00000 n 
-0001352197 00000 n 
-0001352260 00000 n 
-0001352321 00000 n 
-0001352384 00000 n 
-0001352447 00000 n 
-0001352508 00000 n 
-0001352571 00000 n 
-0001352634 00000 n 
-0001352697 00000 n 
-0001352760 00000 n 
-0001367375 00000 n 
-0001372281 00000 n 
-0001356002 00000 n 
-0001359338 00000 n 
-0001355858 00000 n 
-0001352937 00000 n 
-0001356151 00000 n 
-0001356214 00000 n 
-0001356277 00000 n 
-0001356338 00000 n 
-0001356399 00000 n 
-0001356460 00000 n 
-0001356521 00000 n 
-0001356582 00000 n 
-0001356643 00000 n 
-0001356703 00000 n 
-0001356764 00000 n 
-0001356825 00000 n 
-0001356886 00000 n 
-0001356947 00000 n 
-0001357008 00000 n 
-0001357069 00000 n 
-0001357130 00000 n 
-0001357191 00000 n 
-0001357251 00000 n 
-0001357312 00000 n 
-0001357373 00000 n 
-0001357434 00000 n 
-0001357497 00000 n 
-0001357560 00000 n 
-0001357621 00000 n 
-0001357682 00000 n 
-0001357745 00000 n 
-0001357806 00000 n 
-0001357867 00000 n 
-0001357930 00000 n 
-0001357992 00000 n 
-0001358053 00000 n 
-0001358114 00000 n 
-0001358175 00000 n 
-0001358236 00000 n 
-0001358299 00000 n 
-0001358362 00000 n 
-0001358423 00000 n 
-0001358486 00000 n 
-0001358548 00000 n 
-0001358609 00000 n 
-0001358669 00000 n 
-0001358730 00000 n 
-0001358791 00000 n 
-0001358852 00000 n 
-0001358913 00000 n 
-0001358974 00000 n 
-0001359035 00000 n 
-0001359096 00000 n 
-0001359157 00000 n 
-0001359217 00000 n 
-0001359278 00000 n 
-0001361028 00000 n 
-0001361344 00000 n 
-0001362121 00000 n 
-0001360866 00000 n 
-0001359454 00000 n 
-0001361503 00000 n 
-0001361566 00000 n 
-0001361627 00000 n 
-0001361688 00000 n 
-0001361749 00000 n 
-0001361810 00000 n 
-0001361871 00000 n 
-0001361934 00000 n 
-0001361186 00000 n 
-0001361997 00000 n 
-0001362060 00000 n 
-0001380213 00000 n 
-0001395622 00000 n 
-0001367438 00000 n 
-0001364421 00000 n 
-0001362223 00000 n 
-0001364544 00000 n 
-0001364607 00000 n 
-0001364670 00000 n 
-0001364733 00000 n 
-0001364796 00000 n 
-0001364859 00000 n 
-0001364922 00000 n 
-0001364985 00000 n 
-0001365048 00000 n 
-0001365111 00000 n 
-0001365174 00000 n 
-0001365237 00000 n 
-0001365300 00000 n 
-0001365362 00000 n 
-0001365425 00000 n 
-0001365488 00000 n 
-0001365551 00000 n 
-0001365614 00000 n 
-0001365677 00000 n 
-0001365740 00000 n 
-0001365803 00000 n 
-0001365866 00000 n 
-0001365928 00000 n 
-0001365991 00000 n 
-0001366054 00000 n 
-0001366117 00000 n 
-0001366180 00000 n 
-0001366243 00000 n 
-0001366306 00000 n 
-0001366369 00000 n 
-0001366432 00000 n 
-0001366494 00000 n 
-0001366557 00000 n 
-0001366620 00000 n 
-0001366683 00000 n 
-0001366746 00000 n 
-0001366809 00000 n 
-0001366872 00000 n 
-0001366935 00000 n 
-0001366998 00000 n 
-0001367060 00000 n 
-0001367123 00000 n 
-0001367186 00000 n 
-0001367249 00000 n 
-0001367312 00000 n 
-0001372344 00000 n 
-0001369579 00000 n 
-0001367554 00000 n 
-0001369702 00000 n 
-0001369765 00000 n 
-0001369828 00000 n 
-0001369891 00000 n 
-0001369954 00000 n 
-0001370017 00000 n 
-0001370080 00000 n 
-0001370143 00000 n 
-0001370206 00000 n 
-0001370269 00000 n 
-0001370332 00000 n 
-0001370395 00000 n 
-0001370458 00000 n 
-0001370520 00000 n 
-0001370583 00000 n 
-0001370646 00000 n 
-0001370709 00000 n 
-0001370772 00000 n 
-0001370835 00000 n 
-0001370898 00000 n 
-0001370961 00000 n 
-0001371024 00000 n 
-0001371086 00000 n 
-0001371149 00000 n 
-0001371212 00000 n 
-0001371275 00000 n 
-0001371338 00000 n 
-0001371401 00000 n 
-0001371464 00000 n 
-0001371527 00000 n 
-0001371590 00000 n 
-0001371652 00000 n 
-0001371715 00000 n 
-0001371778 00000 n 
-0001371841 00000 n 
-0001371904 00000 n 
-0001371967 00000 n 
-0001372030 00000 n 
-0001372093 00000 n 
-0001372156 00000 n 
-0001372218 00000 n 
-0001380276 00000 n 
-0001377324 00000 n 
-0001372460 00000 n 
-0001377447 00000 n 
-0001377510 00000 n 
-0001377573 00000 n 
-0001377636 00000 n 
-0001377699 00000 n 
-0001377761 00000 n 
-0001377824 00000 n 
-0001377887 00000 n 
-0001377950 00000 n 
-0001378013 00000 n 
-0001378076 00000 n 
-0001378139 00000 n 
-0001378202 00000 n 
-0001378265 00000 n 
-0001378327 00000 n 
-0001378390 00000 n 
-0001378453 00000 n 
-0001378516 00000 n 
-0001378579 00000 n 
-0001378642 00000 n 
-0001378705 00000 n 
-0001378768 00000 n 
-0001378831 00000 n 
-0001378892 00000 n 
-0001378955 00000 n 
-0001379018 00000 n 
-0001379081 00000 n 
-0001379144 00000 n 
-0001379207 00000 n 
-0001379270 00000 n 
-0001379333 00000 n 
-0001379396 00000 n 
-0001379458 00000 n 
-0001379521 00000 n 
-0001379584 00000 n 
-0001379647 00000 n 
-0001379710 00000 n 
-0001379773 00000 n 
-0001379836 00000 n 
-0001379899 00000 n 
-0001379962 00000 n 
-0001380024 00000 n 
-0001380087 00000 n 
-0001380150 00000 n 
-0003967975 00000 n 
-0001388278 00000 n 
-0001384511 00000 n 
-0001380405 00000 n 
-0001384634 00000 n 
-0001384697 00000 n 
-0001384760 00000 n 
-0001384823 00000 n 
-0001384886 00000 n 
-0001384948 00000 n 
-0001385011 00000 n 
-0001385074 00000 n 
-0001385137 00000 n 
-0001385200 00000 n 
-0001385263 00000 n 
-0001385326 00000 n 
-0001385389 00000 n 
-0001385452 00000 n 
-0001385514 00000 n 
-0001385577 00000 n 
-0001385640 00000 n 
-0001385703 00000 n 
-0001385766 00000 n 
-0001385829 00000 n 
-0001385892 00000 n 
-0001385955 00000 n 
-0001386018 00000 n 
-0001386079 00000 n 
-0001386142 00000 n 
-0001386205 00000 n 
-0001386268 00000 n 
-0001386331 00000 n 
-0001386394 00000 n 
-0001386457 00000 n 
-0001386520 00000 n 
-0001386583 00000 n 
-0001386646 00000 n 
-0001386705 00000 n 
-0001386768 00000 n 
-0001386831 00000 n 
-0001386894 00000 n 
-0001386957 00000 n 
-0001387020 00000 n 
-0001387083 00000 n 
-0001387146 00000 n 
-0001387209 00000 n 
-0001387271 00000 n 
-0001387334 00000 n 
-0001387397 00000 n 
-0001387460 00000 n 
-0001387523 00000 n 
-0001387586 00000 n 
-0001387649 00000 n 
-0001387712 00000 n 
-0001387775 00000 n 
-0001387837 00000 n 
-0001387900 00000 n 
-0001387963 00000 n 
-0001388026 00000 n 
-0001388089 00000 n 
-0001388152 00000 n 
-0001388215 00000 n 
-0001395685 00000 n 
-0001392733 00000 n 
-0001388393 00000 n 
-0001392856 00000 n 
-0001392919 00000 n 
-0001392982 00000 n 
-0001393045 00000 n 
-0001393108 00000 n 
-0001393170 00000 n 
-0001393233 00000 n 
-0001393296 00000 n 
-0001393359 00000 n 
-0001393422 00000 n 
-0001393485 00000 n 
-0001393548 00000 n 
-0001393611 00000 n 
-0001393674 00000 n 
-0001393736 00000 n 
-0001393799 00000 n 
-0001393862 00000 n 
-0001393925 00000 n 
-0001393988 00000 n 
-0001394051 00000 n 
-0001394114 00000 n 
-0001394177 00000 n 
-0001394240 00000 n 
-0001394301 00000 n 
-0001394364 00000 n 
-0001394427 00000 n 
-0001394490 00000 n 
-0001394553 00000 n 
-0001394616 00000 n 
-0001394679 00000 n 
-0001394742 00000 n 
-0001394805 00000 n 
-0001394867 00000 n 
-0001394930 00000 n 
-0001394993 00000 n 
-0001395056 00000 n 
-0001395119 00000 n 
-0001395182 00000 n 
-0001395245 00000 n 
-0001395308 00000 n 
-0001395371 00000 n 
-0001395433 00000 n 
-0001395496 00000 n 
-0001395559 00000 n 
-0001402974 00000 n 
-0001502167 00000 n 
-0001402191 00000 n 
-0001399554 00000 n 
-0001395814 00000 n 
-0001399677 00000 n 
-0001399740 00000 n 
-0001399803 00000 n 
-0001399866 00000 n 
-0001399929 00000 n 
-0001399991 00000 n 
-0001400054 00000 n 
-0001400117 00000 n 
-0001400180 00000 n 
-0001400243 00000 n 
-0001400306 00000 n 
-0001400369 00000 n 
-0001400432 00000 n 
-0001400495 00000 n 
-0001400557 00000 n 
-0001400620 00000 n 
-0001400683 00000 n 
-0001400746 00000 n 
-0001400809 00000 n 
-0001400872 00000 n 
-0001400935 00000 n 
-0001400998 00000 n 
-0001401061 00000 n 
-0001401122 00000 n 
-0001401185 00000 n 
-0001401248 00000 n 
-0001401311 00000 n 
-0001401374 00000 n 
-0001401437 00000 n 
-0001401500 00000 n 
-0001401563 00000 n 
-0001401626 00000 n 
-0001401688 00000 n 
-0001401751 00000 n 
-0001401814 00000 n 
-0001401877 00000 n 
-0001401940 00000 n 
-0001402003 00000 n 
-0001402066 00000 n 
-0001501113 00000 n 
-0001402851 00000 n 
-0001402320 00000 n 
-0001500925 00000 n 
-0001602152 00000 n 
-0001502044 00000 n 
-0001501239 00000 n 
-0001601902 00000 n 
-0001606808 00000 n 
-0001606957 00000 n 
-0001607113 00000 n 
-0001607266 00000 n 
-0001607859 00000 n 
-0001606637 00000 n 
-0001602306 00000 n 
-0001607418 00000 n 
-0001607481 00000 n 
-0001607544 00000 n 
-0001607607 00000 n 
-0001607670 00000 n 
-0001607733 00000 n 
-0001607796 00000 n 
-0003968101 00000 n 
-0001610603 00000 n 
-0001610417 00000 n 
-0001608003 00000 n 
-0001610540 00000 n 
-0001611455 00000 n 
-0001611207 00000 n 
-0001610705 00000 n 
-0001611330 00000 n 
-0001631735 00000 n 
-0001631959 00000 n 
-0001613478 00000 n 
-0001632552 00000 n 
-0001613325 00000 n 
-0001611557 00000 n 
-0001632114 00000 n 
-0001632177 00000 n 
-0001632302 00000 n 
-0001632427 00000 n 
-0001636690 00000 n 
-0001636319 00000 n 
-0001632706 00000 n 
-0001636442 00000 n 
-0001641253 00000 n 
-0001640943 00000 n 
-0001636834 00000 n 
-0001641066 00000 n 
-0001645498 00000 n 
-0001648879 00000 n 
-0001645839 00000 n 
-0001645354 00000 n 
-0001641397 00000 n 
-0001645651 00000 n 
-0001645776 00000 n 
-0003968227 00000 n 
-0001705167 00000 n 
-0001704132 00000 n 
-0001704281 00000 n 
-0001704436 00000 n 
-0001704582 00000 n 
-0001704735 00000 n 
-0001704888 00000 n 
-0001706091 00000 n 
-0001648690 00000 n 
-0001645997 00000 n 
-0001705041 00000 n 
-0001705230 00000 n 
-0001705291 00000 n 
-0001705354 00000 n 
-0001705417 00000 n 
-0001705478 00000 n 
-0001705539 00000 n 
-0001705601 00000 n 
-0001705664 00000 n 
-0001705727 00000 n 
-0001705788 00000 n 
-0001705849 00000 n 
-0001705910 00000 n 
-0001705970 00000 n 
-0001706031 00000 n 
-0001695634 00000 n 
-0001723874 00000 n 
-0001728543 00000 n 
-0001729865 00000 n 
-0001709892 00000 n 
-0001712134 00000 n 
-0001709748 00000 n 
-0001706231 00000 n 
-0001710044 00000 n 
-0001710107 00000 n 
-0001710168 00000 n 
-0001710229 00000 n 
-0001710290 00000 n 
-0001710351 00000 n 
-0001710412 00000 n 
-0001710472 00000 n 
-0001710533 00000 n 
-0001710594 00000 n 
-0001710657 00000 n 
-0001710718 00000 n 
-0001710779 00000 n 
-0001710839 00000 n 
-0001710900 00000 n 
-0001710961 00000 n 
-0001711022 00000 n 
-0001711083 00000 n 
-0001711144 00000 n 
-0001711205 00000 n 
-0001711268 00000 n 
-0001711331 00000 n 
-0001711392 00000 n 
-0001711453 00000 n 
-0001711514 00000 n 
-0001711577 00000 n 
-0001711638 00000 n 
-0001711699 00000 n 
-0001711762 00000 n 
-0001711825 00000 n 
-0001711886 00000 n 
-0001711949 00000 n 
-0001712012 00000 n 
-0001712073 00000 n 
-0001724314 00000 n 
-0001716022 00000 n 
-0001714605 00000 n 
-0001712250 00000 n 
-0001714728 00000 n 
-0001714791 00000 n 
-0001714854 00000 n 
-0001714915 00000 n 
-0001714978 00000 n 
-0001715039 00000 n 
-0001715100 00000 n 
-0001715161 00000 n 
-0001715222 00000 n 
-0001715282 00000 n 
-0001715343 00000 n 
-0001715404 00000 n 
-0001715465 00000 n 
-0001715526 00000 n 
-0001715587 00000 n 
-0001715650 00000 n 
-0001715711 00000 n 
-0001715772 00000 n 
-0001715835 00000 n 
-0001715898 00000 n 
-0001715959 00000 n 
-0001724377 00000 n 
-0001720922 00000 n 
-0001716138 00000 n 
-0001721045 00000 n 
-0001721108 00000 n 
-0001721171 00000 n 
-0001721234 00000 n 
-0001721297 00000 n 
-0001721359 00000 n 
-0001721422 00000 n 
-0001721485 00000 n 
-0001721548 00000 n 
-0001721611 00000 n 
-0001721674 00000 n 
-0001721737 00000 n 
-0001721800 00000 n 
-0001721863 00000 n 
-0001721925 00000 n 
-0001721988 00000 n 
-0001722051 00000 n 
-0001722114 00000 n 
-0001722177 00000 n 
-0001722240 00000 n 
-0001722303 00000 n 
-0001722366 00000 n 
-0001722429 00000 n 
-0001722490 00000 n 
-0001722553 00000 n 
-0001722616 00000 n 
-0001722679 00000 n 
-0001722742 00000 n 
-0001722805 00000 n 
-0001722868 00000 n 
-0001722931 00000 n 
-0001722994 00000 n 
-0001723056 00000 n 
-0001723119 00000 n 
-0001723182 00000 n 
-0001723245 00000 n 
-0001723308 00000 n 
-0001723371 00000 n 
-0001723434 00000 n 
-0001723497 00000 n 
-0001723560 00000 n 
-0001723622 00000 n 
-0001723685 00000 n 
-0001723748 00000 n 
-0001723811 00000 n 
-0001723937 00000 n 
-0001724000 00000 n 
-0001724063 00000 n 
-0001724126 00000 n 
-0001724188 00000 n 
-0001724251 00000 n 
-0001730053 00000 n 
-0001727476 00000 n 
-0001724520 00000 n 
-0001727599 00000 n 
-0001727662 00000 n 
-0001727725 00000 n 
-0001727788 00000 n 
-0001727851 00000 n 
-0001727914 00000 n 
-0001727977 00000 n 
-0001728040 00000 n 
-0001728103 00000 n 
-0001728166 00000 n 
-0001728229 00000 n 
-0001728292 00000 n 
-0001728355 00000 n 
-0001728417 00000 n 
-0001728480 00000 n 
-0001728606 00000 n 
-0001728669 00000 n 
-0001728732 00000 n 
-0001728795 00000 n 
-0001728858 00000 n 
-0001728921 00000 n 
-0001728984 00000 n 
-0001729047 00000 n 
-0001729110 00000 n 
-0001729173 00000 n 
-0001729236 00000 n 
-0001729299 00000 n 
-0001729362 00000 n 
-0001729425 00000 n 
-0001729488 00000 n 
-0001729551 00000 n 
-0001729613 00000 n 
-0001729676 00000 n 
-0001729739 00000 n 
-0001729802 00000 n 
-0001729990 00000 n 
-0001733354 00000 n 
-0001733509 00000 n 
-0001736661 00000 n 
-0001733201 00000 n 
-0001730183 00000 n 
-0001733663 00000 n 
-0001733726 00000 n 
-0001733788 00000 n 
-0001733851 00000 n 
-0001733914 00000 n 
-0001733977 00000 n 
-0001734038 00000 n 
-0001734099 00000 n 
-0001734162 00000 n 
-0001734225 00000 n 
-0001734286 00000 n 
-0001734347 00000 n 
-0001734408 00000 n 
-0001734469 00000 n 
-0001734530 00000 n 
-0001734591 00000 n 
-0001734652 00000 n 
-0001734712 00000 n 
-0001734773 00000 n 
-0001734834 00000 n 
-0001734897 00000 n 
-0001734958 00000 n 
-0001735019 00000 n 
-0001735080 00000 n 
-0001735141 00000 n 
-0001735201 00000 n 
-0001735262 00000 n 
-0001735323 00000 n 
-0001735386 00000 n 
-0001735448 00000 n 
-0001735509 00000 n 
-0001735569 00000 n 
-0001735630 00000 n 
-0001735691 00000 n 
-0001735752 00000 n 
-0001735813 00000 n 
-0001735874 00000 n 
-0001735935 00000 n 
-0001735996 00000 n 
-0001736057 00000 n 
-0001736117 00000 n 
-0001736178 00000 n 
-0001736239 00000 n 
-0001736300 00000 n 
-0001736361 00000 n 
-0001736422 00000 n 
-0001736483 00000 n 
-0001736544 00000 n 
-0001736605 00000 n 
-0003968353 00000 n 
-0001745062 00000 n 
-0001745125 00000 n 
-0001741625 00000 n 
-0001736777 00000 n 
-0001741748 00000 n 
-0001741811 00000 n 
-0001741874 00000 n 
-0001741935 00000 n 
-0001741996 00000 n 
-0001742057 00000 n 
-0001742118 00000 n 
-0001742178 00000 n 
-0001742239 00000 n 
-0001742300 00000 n 
-0001742361 00000 n 
-0001742422 00000 n 
-0001742483 00000 n 
-0001742546 00000 n 
-0001742609 00000 n 
-0001742672 00000 n 
-0001742735 00000 n 
-0001742798 00000 n 
-0001742861 00000 n 
-0001742924 00000 n 
-0001742986 00000 n 
-0001743049 00000 n 
-0001743112 00000 n 
-0001743175 00000 n 
-0001743238 00000 n 
-0001743301 00000 n 
-0001743364 00000 n 
-0001743427 00000 n 
-0001743490 00000 n 
-0001743552 00000 n 
-0001743615 00000 n 
-0001743678 00000 n 
-0001743741 00000 n 
-0001743804 00000 n 
-0001743867 00000 n 
-0001743930 00000 n 
-0001743993 00000 n 
-0001744056 00000 n 
-0001744118 00000 n 
-0001744181 00000 n 
-0001744244 00000 n 
-0001744307 00000 n 
-0001744370 00000 n 
-0001744433 00000 n 
-0001744496 00000 n 
-0001744559 00000 n 
-0001744622 00000 n 
-0001744684 00000 n 
-0001744747 00000 n 
-0001744810 00000 n 
-0001744873 00000 n 
-0001744936 00000 n 
-0001744999 00000 n 
-0001747090 00000 n 
-0001747870 00000 n 
-0001746946 00000 n 
-0001745268 00000 n 
-0001747245 00000 n 
-0001747370 00000 n 
-0001747433 00000 n 
-0001747496 00000 n 
-0001747559 00000 n 
-0001747622 00000 n 
-0001747683 00000 n 
-0001747744 00000 n 
-0001747807 00000 n 
-0001756445 00000 n 
-0001753777 00000 n 
-0001756633 00000 n 
-0001753633 00000 n 
-0001748000 00000 n 
-0001753930 00000 n 
-0001753993 00000 n 
-0001754056 00000 n 
-0001754119 00000 n 
-0001754182 00000 n 
-0001754244 00000 n 
-0001754307 00000 n 
-0001754370 00000 n 
-0001754433 00000 n 
-0001754496 00000 n 
-0001754559 00000 n 
-0001754622 00000 n 
-0001754685 00000 n 
-0001754748 00000 n 
-0001754810 00000 n 
-0001754873 00000 n 
-0001754936 00000 n 
-0001754999 00000 n 
-0001755062 00000 n 
-0001755125 00000 n 
-0001755188 00000 n 
-0001755251 00000 n 
-0001755314 00000 n 
-0001755375 00000 n 
-0001755438 00000 n 
-0001755501 00000 n 
-0001755564 00000 n 
-0001755627 00000 n 
-0001755690 00000 n 
-0001755753 00000 n 
-0001755816 00000 n 
-0001755879 00000 n 
-0001755941 00000 n 
-0001756004 00000 n 
-0001756067 00000 n 
-0001756130 00000 n 
-0001756193 00000 n 
-0001756256 00000 n 
-0001756319 00000 n 
-0001756382 00000 n 
-0001756570 00000 n 
-0001818775 00000 n 
-0001759262 00000 n 
-0001820181 00000 n 
-0001759139 00000 n 
-0001756776 00000 n 
-0001818649 00000 n 
-0001818838 00000 n 
-0001818901 00000 n 
-0001818963 00000 n 
-0001819024 00000 n 
-0001819084 00000 n 
-0001819145 00000 n 
-0001819206 00000 n 
-0001819267 00000 n 
-0001819328 00000 n 
-0001819389 00000 n 
-0001819450 00000 n 
-0001819511 00000 n 
-0001819572 00000 n 
-0001819632 00000 n 
-0001819693 00000 n 
-0001819754 00000 n 
-0001819815 00000 n 
-0001819876 00000 n 
-0001819937 00000 n 
-0001820000 00000 n 
-0001820060 00000 n 
-0001820121 00000 n 
-0001810394 00000 n 
-0001823642 00000 n 
-0001823810 00000 n 
-0001823964 00000 n 
-0001826567 00000 n 
-0001823480 00000 n 
-0001820321 00000 n 
-0001824116 00000 n 
-0001824179 00000 n 
-0001824240 00000 n 
-0001824301 00000 n 
-0001824362 00000 n 
-0001824423 00000 n 
-0001824484 00000 n 
-0001824544 00000 n 
-0001824605 00000 n 
-0001824666 00000 n 
-0001824727 00000 n 
-0001824788 00000 n 
-0001824849 00000 n 
-0001824910 00000 n 
-0001824971 00000 n 
-0001825032 00000 n 
-0001825092 00000 n 
-0001825153 00000 n 
-0001825214 00000 n 
-0001825275 00000 n 
-0001825336 00000 n 
-0001825399 00000 n 
-0001825460 00000 n 
-0001825521 00000 n 
-0001825582 00000 n 
-0001825643 00000 n 
-0001825704 00000 n 
-0001825764 00000 n 
-0001825825 00000 n 
-0001825886 00000 n 
-0001825947 00000 n 
-0001826008 00000 n 
-0001826071 00000 n 
-0001826133 00000 n 
-0001826193 00000 n 
-0001826256 00000 n 
-0001826316 00000 n 
-0001826379 00000 n 
-0001826441 00000 n 
-0001826504 00000 n 
-0001865310 00000 n 
-0001832182 00000 n 
-0001829971 00000 n 
-0001826683 00000 n 
-0001830094 00000 n 
-0001830157 00000 n 
-0001830220 00000 n 
-0001830281 00000 n 
-0001830344 00000 n 
-0001830407 00000 n 
-0001830468 00000 n 
-0001830531 00000 n 
-0001830594 00000 n 
-0001830655 00000 n 
-0001830716 00000 n 
-0001830777 00000 n 
-0001830840 00000 n 
-0001830902 00000 n 
-0001830963 00000 n 
-0001831023 00000 n 
-0001831084 00000 n 
-0001831145 00000 n 
-0001831206 00000 n 
-0001831267 00000 n 
-0001831328 00000 n 
-0001831389 00000 n 
-0001831450 00000 n 
-0001831511 00000 n 
-0001831571 00000 n 
-0001831632 00000 n 
-0001831693 00000 n 
-0001831754 00000 n 
-0001831815 00000 n 
-0001831876 00000 n 
-0001831937 00000 n 
-0001831998 00000 n 
-0001832059 00000 n 
-0001832119 00000 n 
-0003968479 00000 n 
-0001838347 00000 n 
-0001835041 00000 n 
-0001832298 00000 n 
-0001835164 00000 n 
-0001835227 00000 n 
-0001835290 00000 n 
-0001835353 00000 n 
-0001835414 00000 n 
-0001835475 00000 n 
-0001835536 00000 n 
-0001835597 00000 n 
-0001835657 00000 n 
-0001835718 00000 n 
-0001835781 00000 n 
-0001835842 00000 n 
-0001835903 00000 n 
-0001835964 00000 n 
-0001836025 00000 n 
-0001836086 00000 n 
-0001836147 00000 n 
-0001836208 00000 n 
-0001836269 00000 n 
-0001836330 00000 n 
-0001836391 00000 n 
-0001836454 00000 n 
-0001836517 00000 n 
-0001836578 00000 n 
-0001836639 00000 n 
-0001836700 00000 n 
-0001836760 00000 n 
-0001836821 00000 n 
-0001836882 00000 n 
-0001836943 00000 n 
-0001837004 00000 n 
-0001837065 00000 n 
-0001837126 00000 n 
-0001837187 00000 n 
-0001837248 00000 n 
-0001837309 00000 n 
-0001837369 00000 n 
-0001837430 00000 n 
-0001837491 00000 n 
-0001837552 00000 n 
-0001837613 00000 n 
-0001837674 00000 n 
-0001837735 00000 n 
-0001837796 00000 n 
-0001837857 00000 n 
-0001837917 00000 n 
-0001837978 00000 n 
-0001838041 00000 n 
-0001838104 00000 n 
-0001838165 00000 n 
-0001838226 00000 n 
-0001838287 00000 n 
-0001845339 00000 n 
-0001841678 00000 n 
-0001838449 00000 n 
-0001841801 00000 n 
-0001841864 00000 n 
-0001841925 00000 n 
-0001841986 00000 n 
-0001842047 00000 n 
-0001842108 00000 n 
-0001842169 00000 n 
-0001842232 00000 n 
-0001842295 00000 n 
-0001842356 00000 n 
-0001842417 00000 n 
-0001842478 00000 n 
-0001842539 00000 n 
-0001842600 00000 n 
-0001842660 00000 n 
-0001842721 00000 n 
-0001842782 00000 n 
-0001842843 00000 n 
-0001842904 00000 n 
-0001842965 00000 n 
-0001843026 00000 n 
-0001843087 00000 n 
-0001843148 00000 n 
-0001843209 00000 n 
-0001843269 00000 n 
-0001843330 00000 n 
-0001843391 00000 n 
-0001843452 00000 n 
-0001843513 00000 n 
-0001843574 00000 n 
-0001843635 00000 n 
-0001843696 00000 n 
-0001843757 00000 n 
-0001843817 00000 n 
-0001843878 00000 n 
-0001843939 00000 n 
-0001844000 00000 n 
-0001844061 00000 n 
-0001844122 00000 n 
-0001844183 00000 n 
-0001844244 00000 n 
-0001844305 00000 n 
-0001844365 00000 n 
-0001844426 00000 n 
-0001844487 00000 n 
-0001844548 00000 n 
-0001844609 00000 n 
-0001844670 00000 n 
-0001844731 00000 n 
-0001844792 00000 n 
-0001844853 00000 n 
-0001844913 00000 n 
-0001844974 00000 n 
-0001845035 00000 n 
-0001845096 00000 n 
-0001845157 00000 n 
-0001845218 00000 n 
-0001845279 00000 n 
-0001852024 00000 n 
-0001848360 00000 n 
-0001845441 00000 n 
-0001848483 00000 n 
-0001848546 00000 n 
-0001848607 00000 n 
-0001848668 00000 n 
-0001848729 00000 n 
-0001848790 00000 n 
-0001848851 00000 n 
-0001848911 00000 n 
-0001848972 00000 n 
-0001849033 00000 n 
-0001849094 00000 n 
-0001849155 00000 n 
-0001849216 00000 n 
-0001849277 00000 n 
-0001849338 00000 n 
-0001849399 00000 n 
-0001849459 00000 n 
-0001849520 00000 n 
-0001849581 00000 n 
-0001849642 00000 n 
-0001849703 00000 n 
-0001849764 00000 n 
-0001849825 00000 n 
-0001849886 00000 n 
-0001849949 00000 n 
-0001850012 00000 n 
-0001850075 00000 n 
-0001850138 00000 n 
-0001850201 00000 n 
-0001850264 00000 n 
-0001850327 00000 n 
-0001850390 00000 n 
-0001850453 00000 n 
-0001850516 00000 n 
-0001850579 00000 n 
-0001850642 00000 n 
-0001850705 00000 n 
-0001850767 00000 n 
-0001850830 00000 n 
-0001850893 00000 n 
-0001850956 00000 n 
-0001851019 00000 n 
-0001851082 00000 n 
-0001851145 00000 n 
-0001851208 00000 n 
-0001851271 00000 n 
-0001851333 00000 n 
-0001851396 00000 n 
-0001851459 00000 n 
-0001851522 00000 n 
-0001851585 00000 n 
-0001851648 00000 n 
-0001851711 00000 n 
-0001851774 00000 n 
-0001851837 00000 n 
-0001851899 00000 n 
-0001851962 00000 n 
-0001857484 00000 n 
-0001854216 00000 n 
-0001852126 00000 n 
-0001854339 00000 n 
-0001854402 00000 n 
-0001854465 00000 n 
-0001854528 00000 n 
-0001854591 00000 n 
-0001854654 00000 n 
-0001854717 00000 n 
-0001854779 00000 n 
-0001854842 00000 n 
-0001854905 00000 n 
-0001854968 00000 n 
-0001855031 00000 n 
-0001855094 00000 n 
-0001855157 00000 n 
-0001855220 00000 n 
-0001855283 00000 n 
-0001855345 00000 n 
-0001855408 00000 n 
-0001855471 00000 n 
-0001855534 00000 n 
-0001855597 00000 n 
-0001855660 00000 n 
-0001855723 00000 n 
-0001855786 00000 n 
-0001855849 00000 n 
-0001855911 00000 n 
-0001855974 00000 n 
-0001856037 00000 n 
-0001856100 00000 n 
-0001856163 00000 n 
-0001856226 00000 n 
-0001856289 00000 n 
-0001856352 00000 n 
-0001856415 00000 n 
-0001856477 00000 n 
-0001856540 00000 n 
-0001856603 00000 n 
-0001856666 00000 n 
-0001856729 00000 n 
-0001856792 00000 n 
-0001856855 00000 n 
-0001856918 00000 n 
-0001856981 00000 n 
-0001857043 00000 n 
-0001857106 00000 n 
-0001857169 00000 n 
-0001857232 00000 n 
-0001857295 00000 n 
-0001857358 00000 n 
-0001857421 00000 n 
-0001862701 00000 n 
-0001865434 00000 n 
-0001862557 00000 n 
-0001857586 00000 n 
-0001862858 00000 n 
-0001862921 00000 n 
-0001862984 00000 n 
-0001863047 00000 n 
-0001863110 00000 n 
-0001863172 00000 n 
-0001863235 00000 n 
-0001863298 00000 n 
-0001863361 00000 n 
-0001863424 00000 n 
-0001863487 00000 n 
-0001863550 00000 n 
-0001863613 00000 n 
-0001863676 00000 n 
-0001863738 00000 n 
-0001863801 00000 n 
-0001863864 00000 n 
-0001863927 00000 n 
-0001863990 00000 n 
-0001864053 00000 n 
-0001864116 00000 n 
-0001864179 00000 n 
-0001864242 00000 n 
-0001864303 00000 n 
-0001864366 00000 n 
-0001864429 00000 n 
-0001864492 00000 n 
-0001864555 00000 n 
-0001864618 00000 n 
-0001864681 00000 n 
-0001864744 00000 n 
-0001864807 00000 n 
-0001864869 00000 n 
-0001864932 00000 n 
-0001864995 00000 n 
-0001865058 00000 n 
-0001865121 00000 n 
-0001865184 00000 n 
-0001865247 00000 n 
-0001871458 00000 n 
-0001872826 00000 n 
-0001870077 00000 n 
-0001865605 00000 n 
-0001870200 00000 n 
-0001870263 00000 n 
-0001870326 00000 n 
-0001870389 00000 n 
-0001870452 00000 n 
-0001870514 00000 n 
-0001870577 00000 n 
-0001870640 00000 n 
-0001870703 00000 n 
-0001870766 00000 n 
-0001870829 00000 n 
-0001870892 00000 n 
-0001870955 00000 n 
-0001871018 00000 n 
-0001871080 00000 n 
-0001871143 00000 n 
-0001871206 00000 n 
-0001871269 00000 n 
-0001871332 00000 n 
-0001871395 00000 n 
-0001871521 00000 n 
-0001871584 00000 n 
-0001871647 00000 n 
-0001871710 00000 n 
-0001871773 00000 n 
-0001871835 00000 n 
-0001871898 00000 n 
-0001871961 00000 n 
-0001872024 00000 n 
-0001872087 00000 n 
-0001872150 00000 n 
-0001872213 00000 n 
-0001872276 00000 n 
-0001872337 00000 n 
-0001872397 00000 n 
-0001872458 00000 n 
-0001872521 00000 n 
-0001872582 00000 n 
-0001872643 00000 n 
-0001872704 00000 n 
-0001872765 00000 n 
-0003968605 00000 n 
-0001877568 00000 n 
-0001880544 00000 n 
-0001877424 00000 n 
-0001872983 00000 n 
-0001877719 00000 n 
-0001877782 00000 n 
-0001877845 00000 n 
-0001877908 00000 n 
-0001877971 00000 n 
-0001878032 00000 n 
-0001878155 00000 n 
-0001878218 00000 n 
-0001878280 00000 n 
-0001878343 00000 n 
-0001878406 00000 n 
-0001878469 00000 n 
-0001878532 00000 n 
-0001878595 00000 n 
-0001878658 00000 n 
-0001878721 00000 n 
-0001878784 00000 n 
-0001878846 00000 n 
-0001878909 00000 n 
-0001878972 00000 n 
-0001879035 00000 n 
-0001879098 00000 n 
-0001879161 00000 n 
-0001879224 00000 n 
-0001879287 00000 n 
-0001879350 00000 n 
-0001879413 00000 n 
-0001879476 00000 n 
-0001879539 00000 n 
-0001879602 00000 n 
-0001879665 00000 n 
-0001879728 00000 n 
-0001879791 00000 n 
-0001879854 00000 n 
-0001879917 00000 n 
-0001879979 00000 n 
-0001880042 00000 n 
-0001880105 00000 n 
-0001880168 00000 n 
-0001880231 00000 n 
-0001880294 00000 n 
-0001880357 00000 n 
-0001880420 00000 n 
-0001880483 00000 n 
-0001883583 00000 n 
-0001886143 00000 n 
-0001883439 00000 n 
-0001880715 00000 n 
-0001883751 00000 n 
-0001883814 00000 n 
-0001883877 00000 n 
-0001883940 00000 n 
-0001884003 00000 n 
-0001884066 00000 n 
-0001884129 00000 n 
-0001884191 00000 n 
-0001884254 00000 n 
-0001884317 00000 n 
-0001884380 00000 n 
-0001884443 00000 n 
-0001884506 00000 n 
-0001884569 00000 n 
-0001884632 00000 n 
-0001884695 00000 n 
-0001884758 00000 n 
-0001884821 00000 n 
-0001884884 00000 n 
-0001884947 00000 n 
-0001885010 00000 n 
-0001885073 00000 n 
-0001885136 00000 n 
-0001885199 00000 n 
-0001885262 00000 n 
-0001885325 00000 n 
-0001885388 00000 n 
-0001885451 00000 n 
-0001885514 00000 n 
-0001885577 00000 n 
-0001885640 00000 n 
-0001885702 00000 n 
-0001885765 00000 n 
-0001885828 00000 n 
-0001885891 00000 n 
-0001885954 00000 n 
-0001886017 00000 n 
-0001886080 00000 n 
-0001890305 00000 n 
-0001893127 00000 n 
-0001890161 00000 n 
-0001886273 00000 n 
-0001890460 00000 n 
-0001890523 00000 n 
-0001890586 00000 n 
-0001890647 00000 n 
-0001890708 00000 n 
-0001890769 00000 n 
-0001890830 00000 n 
-0001890891 00000 n 
-0001890952 00000 n 
-0001891012 00000 n 
-0001891073 00000 n 
-0001891134 00000 n 
-0001891195 00000 n 
-0001891256 00000 n 
-0001891317 00000 n 
-0001891378 00000 n 
-0001891439 00000 n 
-0001891500 00000 n 
-0001891563 00000 n 
-0001891626 00000 n 
-0001891687 00000 n 
-0001891748 00000 n 
-0001891809 00000 n 
-0001891872 00000 n 
-0001891935 00000 n 
-0001891996 00000 n 
-0001892121 00000 n 
-0001892184 00000 n 
-0001892246 00000 n 
-0001892309 00000 n 
-0001892372 00000 n 
-0001892435 00000 n 
-0001892498 00000 n 
-0001892561 00000 n 
-0001892624 00000 n 
-0001892687 00000 n 
-0001892750 00000 n 
-0001892812 00000 n 
-0001892875 00000 n 
-0001892938 00000 n 
-0001893001 00000 n 
-0001893064 00000 n 
-0001896127 00000 n 
-0001896313 00000 n 
-0001896544 00000 n 
-0001896710 00000 n 
-0001896879 00000 n 
-0001897990 00000 n 
-0001895947 00000 n 
-0001893284 00000 n 
-0001897049 00000 n 
-0001897112 00000 n 
-0001897175 00000 n 
-0001897238 00000 n 
-0001897301 00000 n 
-0001897364 00000 n 
-0001897427 00000 n 
-0001897490 00000 n 
-0001897553 00000 n 
-0001897616 00000 n 
-0001897679 00000 n 
-0001897742 00000 n 
-0001901090 00000 n 
-0001901240 00000 n 
-0001901398 00000 n 
-0001901548 00000 n 
-0001901705 00000 n 
-0001902742 00000 n 
-0001900910 00000 n 
-0001898106 00000 n 
-0001901864 00000 n 
-0001901989 00000 n 
-0001902051 00000 n 
-0001902114 00000 n 
-0001902177 00000 n 
-0001902240 00000 n 
-0001902303 00000 n 
-0001902428 00000 n 
-0001902491 00000 n 
-0001902553 00000 n 
-0001902616 00000 n 
-0001902679 00000 n 
-0001906105 00000 n 
-0001912156 00000 n 
-0001907174 00000 n 
-0001904663 00000 n 
-0001902858 00000 n 
-0001904786 00000 n 
-0001904849 00000 n 
-0001904912 00000 n 
-0001904975 00000 n 
-0001905038 00000 n 
-0001905101 00000 n 
-0001905164 00000 n 
-0001905227 00000 n 
-0001905288 00000 n 
-0001905351 00000 n 
-0001905414 00000 n 
-0001905477 00000 n 
-0001905540 00000 n 
-0001905603 00000 n 
-0001905666 00000 n 
-0001905729 00000 n 
-0001905792 00000 n 
-0001905854 00000 n 
-0001905917 00000 n 
-0001905980 00000 n 
-0001906043 00000 n 
-0001906167 00000 n 
-0001906230 00000 n 
-0001906293 00000 n 
-0001906356 00000 n 
-0001906419 00000 n 
-0001906482 00000 n 
-0001906545 00000 n 
-0001906608 00000 n 
-0001906670 00000 n 
-0001906733 00000 n 
-0001906796 00000 n 
-0001906859 00000 n 
-0001906922 00000 n 
-0001906985 00000 n 
-0001907048 00000 n 
-0001907111 00000 n 
-0003968731 00000 n 
-0001912343 00000 n 
-0001910648 00000 n 
-0001907290 00000 n 
-0001910771 00000 n 
-0001910834 00000 n 
-0001910897 00000 n 
-0001910960 00000 n 
-0001911023 00000 n 
-0001911086 00000 n 
-0001911149 00000 n 
-0001911212 00000 n 
-0001911275 00000 n 
-0001911338 00000 n 
-0001911401 00000 n 
-0001911464 00000 n 
-0001911527 00000 n 
-0001911589 00000 n 
-0001911652 00000 n 
-0001911715 00000 n 
-0001911778 00000 n 
-0001911841 00000 n 
-0001911904 00000 n 
-0001911967 00000 n 
-0001912030 00000 n 
-0001912093 00000 n 
-0001918072 00000 n 
-0001917634 00000 n 
-0001912501 00000 n 
-0001917757 00000 n 
-0001917820 00000 n 
-0001917883 00000 n 
-0001917946 00000 n 
-0001918009 00000 n 
-0001920038 00000 n 
-0001919726 00000 n 
-0001918216 00000 n 
-0001919849 00000 n 
-0001919912 00000 n 
-0001919975 00000 n 
-0001923244 00000 n 
-0001922873 00000 n 
-0001920154 00000 n 
-0001922996 00000 n 
-0001923121 00000 n 
-0001927860 00000 n 
-0001927430 00000 n 
-0001923375 00000 n 
-0001927553 00000 n 
-0001927740 00000 n 
-0001927802 00000 n 
-0001932797 00000 n 
-0001931232 00000 n 
-0001927990 00000 n 
-0001931355 00000 n 
-0001931418 00000 n 
-0001931481 00000 n 
-0001931544 00000 n 
-0001931607 00000 n 
-0001931670 00000 n 
-0001931733 00000 n 
-0001931796 00000 n 
-0001931858 00000 n 
-0001931921 00000 n 
-0001931984 00000 n 
-0001932047 00000 n 
-0001932110 00000 n 
-0001932173 00000 n 
-0001932236 00000 n 
-0001932299 00000 n 
-0001932362 00000 n 
-0001932425 00000 n 
-0001932488 00000 n 
-0001932551 00000 n 
-0001932614 00000 n 
-0001932673 00000 n 
-0001932735 00000 n 
-0003968857 00000 n 
-0001937712 00000 n 
-0001936334 00000 n 
-0001932927 00000 n 
-0001936457 00000 n 
-0001936706 00000 n 
-0001936769 00000 n 
-0001936832 00000 n 
-0001936895 00000 n 
-0001936958 00000 n 
-0001937020 00000 n 
-0001937083 00000 n 
-0001937146 00000 n 
-0001937209 00000 n 
-0001937272 00000 n 
-0001937335 00000 n 
-0001937398 00000 n 
-0001937461 00000 n 
-0001937524 00000 n 
-0001937587 00000 n 
-0001937650 00000 n 
-0001941563 00000 n 
-0001942806 00000 n 
-0001941419 00000 n 
-0001937856 00000 n 
-0001941739 00000 n 
-0001941802 00000 n 
-0001941865 00000 n 
-0001941928 00000 n 
-0001941991 00000 n 
-0001942054 00000 n 
-0001942117 00000 n 
-0001942179 00000 n 
-0001942242 00000 n 
-0001942305 00000 n 
-0001942368 00000 n 
-0001942431 00000 n 
-0001942494 00000 n 
-0001942557 00000 n 
-0001946239 00000 n 
-0001946388 00000 n 
-0001946538 00000 n 
-0001947819 00000 n 
-0001946077 00000 n 
-0001942922 00000 n 
-0001946694 00000 n 
-0001946819 00000 n 
-0001946882 00000 n 
-0001946945 00000 n 
-0001947008 00000 n 
-0001947071 00000 n 
-0001947133 00000 n 
-0001947196 00000 n 
-0001947259 00000 n 
-0001947321 00000 n 
-0001947384 00000 n 
-0001947447 00000 n 
-0001947510 00000 n 
-0001947573 00000 n 
-0001947634 00000 n 
-0001947694 00000 n 
-0001952172 00000 n 
-0001955276 00000 n 
-0001952028 00000 n 
-0001947963 00000 n 
-0001952321 00000 n 
-0001952446 00000 n 
-0001952509 00000 n 
-0001952572 00000 n 
-0001952635 00000 n 
-0001952698 00000 n 
-0001952761 00000 n 
-0001952823 00000 n 
-0001952886 00000 n 
-0001952949 00000 n 
-0001953012 00000 n 
-0001953075 00000 n 
-0001953138 00000 n 
-0001953201 00000 n 
-0001953264 00000 n 
-0001953327 00000 n 
-0001953390 00000 n 
-0001953453 00000 n 
-0001953516 00000 n 
-0001953579 00000 n 
-0001953642 00000 n 
-0001953705 00000 n 
-0001953768 00000 n 
-0001953831 00000 n 
-0001953894 00000 n 
-0001953957 00000 n 
-0001954019 00000 n 
-0001954082 00000 n 
-0001954145 00000 n 
-0001954208 00000 n 
-0001954271 00000 n 
-0001954334 00000 n 
-0001954397 00000 n 
-0001954460 00000 n 
-0001954523 00000 n 
-0001954585 00000 n 
-0001954648 00000 n 
-0001954711 00000 n 
-0001954774 00000 n 
-0001954837 00000 n 
-0001954900 00000 n 
-0001954963 00000 n 
-0001955026 00000 n 
-0001955089 00000 n 
-0001955151 00000 n 
-0001955214 00000 n 
-0001962973 00000 n 
-0001958888 00000 n 
-0001955420 00000 n 
-0001959011 00000 n 
-0001959074 00000 n 
-0001959137 00000 n 
-0001959200 00000 n 
-0001959263 00000 n 
-0001959326 00000 n 
-0001959389 00000 n 
-0001959451 00000 n 
-0001959514 00000 n 
-0001959577 00000 n 
-0001959640 00000 n 
-0001959703 00000 n 
-0001959766 00000 n 
-0001959829 00000 n 
-0001959892 00000 n 
-0001959955 00000 n 
-0001960017 00000 n 
-0001960080 00000 n 
-0001960143 00000 n 
-0001960206 00000 n 
-0001960269 00000 n 
-0001960332 00000 n 
-0001960395 00000 n 
-0001960458 00000 n 
-0001960521 00000 n 
-0001960583 00000 n 
-0001960646 00000 n 
-0001960709 00000 n 
-0001960772 00000 n 
-0001960835 00000 n 
-0001960898 00000 n 
-0001960961 00000 n 
-0001961024 00000 n 
-0001961087 00000 n 
-0001961149 00000 n 
-0001961212 00000 n 
-0001961275 00000 n 
-0001961338 00000 n 
-0001961401 00000 n 
-0001961464 00000 n 
-0001961527 00000 n 
-0001961590 00000 n 
-0001961653 00000 n 
-0001961715 00000 n 
-0001961778 00000 n 
-0001961841 00000 n 
-0001961904 00000 n 
-0001961967 00000 n 
-0001962030 00000 n 
-0001962093 00000 n 
-0001962156 00000 n 
-0001962219 00000 n 
-0001962282 00000 n 
-0001962345 00000 n 
-0001962408 00000 n 
-0001962471 00000 n 
-0001962534 00000 n 
-0001962597 00000 n 
-0001962660 00000 n 
-0001962723 00000 n 
-0001962786 00000 n 
-0001962849 00000 n 
-0001962911 00000 n 
-0001966812 00000 n 
-0001969665 00000 n 
-0001966668 00000 n 
-0001963075 00000 n 
-0001966961 00000 n 
-0001967024 00000 n 
-0001967087 00000 n 
-0001967150 00000 n 
-0001967213 00000 n 
-0001967276 00000 n 
-0001967339 00000 n 
-0001967401 00000 n 
-0001967464 00000 n 
-0001967527 00000 n 
-0001967590 00000 n 
-0001967653 00000 n 
-0001967716 00000 n 
-0001967779 00000 n 
-0001967842 00000 n 
-0001967905 00000 n 
-0001967967 00000 n 
-0001968030 00000 n 
-0001968093 00000 n 
-0001968156 00000 n 
-0001968219 00000 n 
-0001968282 00000 n 
-0001968345 00000 n 
-0001968408 00000 n 
-0001968471 00000 n 
-0001968533 00000 n 
-0001968596 00000 n 
-0001968659 00000 n 
-0001968722 00000 n 
-0001968785 00000 n 
-0001968848 00000 n 
-0001968911 00000 n 
-0001968974 00000 n 
-0001969037 00000 n 
-0001969099 00000 n 
-0001969162 00000 n 
-0001969225 00000 n 
-0001969288 00000 n 
-0001969351 00000 n 
-0001969414 00000 n 
-0001969477 00000 n 
-0001969540 00000 n 
-0003968983 00000 n 
-0001973072 00000 n 
-0001978540 00000 n 
-0001974227 00000 n 
-0001972928 00000 n 
-0001969781 00000 n 
-0001973226 00000 n 
-0001973536 00000 n 
-0001973599 00000 n 
-0001973661 00000 n 
-0001973724 00000 n 
-0001973787 00000 n 
-0001973850 00000 n 
-0001973913 00000 n 
-0001973976 00000 n 
-0001974039 00000 n 
-0001974102 00000 n 
-0001978695 00000 n 
-0001979031 00000 n 
-0001978387 00000 n 
-0001974385 00000 n 
-0001978844 00000 n 
-0001982168 00000 n 
-0001981606 00000 n 
-0001979175 00000 n 
-0001981729 00000 n 
-0001981854 00000 n 
-0001981916 00000 n 
-0001981979 00000 n 
-0001982042 00000 n 
-0001982105 00000 n 
-0001985453 00000 n 
-0001984956 00000 n 
-0001982298 00000 n 
-0001985079 00000 n 
-0002012458 00000 n 
-0001989048 00000 n 
-0002015028 00000 n 
-0002012863 00000 n 
-0001988904 00000 n 
-0001985612 00000 n 
-0002012612 00000 n 
-0002012800 00000 n 
-0001998705 00000 n 
-0002046259 00000 n 
-0002046407 00000 n 
-0002046561 00000 n 
-0002050863 00000 n 
-0002047022 00000 n 
-0002014866 00000 n 
-0002013031 00000 n 
-0002046709 00000 n 
-0002046835 00000 n 
-0003969109 00000 n 
-0002051023 00000 n 
-0002051173 00000 n 
-0002051579 00000 n 
-0002050701 00000 n 
-0002047190 00000 n 
-0002051328 00000 n 
-0002051516 00000 n 
-0002059986 00000 n 
-0002057034 00000 n 
-0002051738 00000 n 
-0002057157 00000 n 
-0002057220 00000 n 
-0002057283 00000 n 
-0002057346 00000 n 
-0002057409 00000 n 
-0002057472 00000 n 
-0002057535 00000 n 
-0002057598 00000 n 
-0002057660 00000 n 
-0002057723 00000 n 
-0002057786 00000 n 
-0002057849 00000 n 
-0002057912 00000 n 
-0002057975 00000 n 
-0002058038 00000 n 
-0002058101 00000 n 
-0002058164 00000 n 
-0002058226 00000 n 
-0002058289 00000 n 
-0002058352 00000 n 
-0002058415 00000 n 
-0002058478 00000 n 
-0002058541 00000 n 
-0002058604 00000 n 
-0002058667 00000 n 
-0002058730 00000 n 
-0002058791 00000 n 
-0002058854 00000 n 
-0002058917 00000 n 
-0002058980 00000 n 
-0002059043 00000 n 
-0002059106 00000 n 
-0002059169 00000 n 
-0002059232 00000 n 
-0002059295 00000 n 
-0002059358 00000 n 
-0002059421 00000 n 
-0002059484 00000 n 
-0002059547 00000 n 
-0002059610 00000 n 
-0002059673 00000 n 
-0002059736 00000 n 
-0002059799 00000 n 
-0002059862 00000 n 
-0002059924 00000 n 
-0002065808 00000 n 
-0002063233 00000 n 
-0002060129 00000 n 
-0002063356 00000 n 
-0002063419 00000 n 
-0002063482 00000 n 
-0002063545 00000 n 
-0002063608 00000 n 
-0002063670 00000 n 
-0002063733 00000 n 
-0002063796 00000 n 
-0002063859 00000 n 
-0002063922 00000 n 
-0002063985 00000 n 
-0002064048 00000 n 
-0002064111 00000 n 
-0002064174 00000 n 
-0002064236 00000 n 
-0002064299 00000 n 
-0002064362 00000 n 
-0002064425 00000 n 
-0002064488 00000 n 
-0002064551 00000 n 
-0002064614 00000 n 
-0002064677 00000 n 
-0002064740 00000 n 
-0002064801 00000 n 
-0002064864 00000 n 
-0002064927 00000 n 
-0002064990 00000 n 
-0002065053 00000 n 
-0002065116 00000 n 
-0002065179 00000 n 
-0002065242 00000 n 
-0002065305 00000 n 
-0002065367 00000 n 
-0002065430 00000 n 
-0002065493 00000 n 
-0002065556 00000 n 
-0002065619 00000 n 
-0002065682 00000 n 
-0002065745 00000 n 
-0002072455 00000 n 
-0002068495 00000 n 
-0002065923 00000 n 
-0002068618 00000 n 
-0002068681 00000 n 
-0002068744 00000 n 
-0002068807 00000 n 
-0002068870 00000 n 
-0002068933 00000 n 
-0002068996 00000 n 
-0002069059 00000 n 
-0002069122 00000 n 
-0002069185 00000 n 
-0002069248 00000 n 
-0002069311 00000 n 
-0002069374 00000 n 
-0002069436 00000 n 
-0002069499 00000 n 
-0002069562 00000 n 
-0002069625 00000 n 
-0002069688 00000 n 
-0002069751 00000 n 
-0002069814 00000 n 
-0002069877 00000 n 
-0002069940 00000 n 
-0002070002 00000 n 
-0002070065 00000 n 
-0002070128 00000 n 
-0002070191 00000 n 
-0002070254 00000 n 
-0002070317 00000 n 
-0002070380 00000 n 
-0002070443 00000 n 
-0002070506 00000 n 
-0002070569 00000 n 
-0002070632 00000 n 
-0002070695 00000 n 
-0002070758 00000 n 
-0002070821 00000 n 
-0002070884 00000 n 
-0002070947 00000 n 
-0002071010 00000 n 
-0002071073 00000 n 
-0002071136 00000 n 
-0002071199 00000 n 
-0002071262 00000 n 
-0002071325 00000 n 
-0002071387 00000 n 
-0002071450 00000 n 
-0002071513 00000 n 
-0002071576 00000 n 
-0002071639 00000 n 
-0002071702 00000 n 
-0002071765 00000 n 
-0002071828 00000 n 
-0002071891 00000 n 
-0002071953 00000 n 
-0002072016 00000 n 
-0002072079 00000 n 
-0002072142 00000 n 
-0002072205 00000 n 
-0002072268 00000 n 
-0002072331 00000 n 
-0002072393 00000 n 
-0002077280 00000 n 
-0002074451 00000 n 
-0002072571 00000 n 
-0002074574 00000 n 
-0002074637 00000 n 
-0002074700 00000 n 
-0002074763 00000 n 
-0002074826 00000 n 
-0002074889 00000 n 
-0002074952 00000 n 
-0002075015 00000 n 
-0002075078 00000 n 
-0002075141 00000 n 
-0002075204 00000 n 
-0002075267 00000 n 
-0002075330 00000 n 
-0002075392 00000 n 
-0002075455 00000 n 
-0002075518 00000 n 
-0002075581 00000 n 
-0002075644 00000 n 
-0002075707 00000 n 
-0002075770 00000 n 
-0002075833 00000 n 
-0002075896 00000 n 
-0002075959 00000 n 
-0002076022 00000 n 
-0002076085 00000 n 
-0002076146 00000 n 
-0002076209 00000 n 
-0002076272 00000 n 
-0002076335 00000 n 
-0002076398 00000 n 
-0002076461 00000 n 
-0002076524 00000 n 
-0002076587 00000 n 
-0002076650 00000 n 
-0002076713 00000 n 
-0002076776 00000 n 
-0002076839 00000 n 
-0002076902 00000 n 
-0002076965 00000 n 
-0002077028 00000 n 
-0002077091 00000 n 
-0002077154 00000 n 
-0002077217 00000 n 
-0002081125 00000 n 
-0002081278 00000 n 
-0002081432 00000 n 
-0002081588 00000 n 
-0002084484 00000 n 
-0002080954 00000 n 
-0002077396 00000 n 
-0002081740 00000 n 
-0002081803 00000 n 
-0002081866 00000 n 
-0002081929 00000 n 
-0002081992 00000 n 
-0002082055 00000 n 
-0002082118 00000 n 
-0002082181 00000 n 
-0002082244 00000 n 
-0002082307 00000 n 
-0002082370 00000 n 
-0002082433 00000 n 
-0002082496 00000 n 
-0002082558 00000 n 
-0002082621 00000 n 
-0002082684 00000 n 
-0002082747 00000 n 
-0002082810 00000 n 
-0002082873 00000 n 
-0002082936 00000 n 
-0002082999 00000 n 
-0002083062 00000 n 
-0002083124 00000 n 
-0002083187 00000 n 
-0002083250 00000 n 
-0002083313 00000 n 
-0002083376 00000 n 
-0002083439 00000 n 
-0002083502 00000 n 
-0002083565 00000 n 
-0002083628 00000 n 
-0002083689 00000 n 
-0002083749 00000 n 
-0002083810 00000 n 
-0002083871 00000 n 
-0002083932 00000 n 
-0002083993 00000 n 
-0002084054 00000 n 
-0002084115 00000 n 
-0002084176 00000 n 
-0002084239 00000 n 
-0002084302 00000 n 
-0002084363 00000 n 
-0002084424 00000 n 
-0003969235 00000 n 
-0002088461 00000 n 
-0002092095 00000 n 
-0002088317 00000 n 
-0002084600 00000 n 
-0002088614 00000 n 
-0002088677 00000 n 
-0002088740 00000 n 
-0002088801 00000 n 
-0002088864 00000 n 
-0002088925 00000 n 
-0002088988 00000 n 
-0002089051 00000 n 
-0002089112 00000 n 
-0002089173 00000 n 
-0002089234 00000 n 
-0002089295 00000 n 
-0002089356 00000 n 
-0002089416 00000 n 
-0002089477 00000 n 
-0002089538 00000 n 
-0002089599 00000 n 
-0002089660 00000 n 
-0002089721 00000 n 
-0002089782 00000 n 
-0002089843 00000 n 
-0002089904 00000 n 
-0002089964 00000 n 
-0002090025 00000 n 
-0002090086 00000 n 
-0002090147 00000 n 
-0002090208 00000 n 
-0002090269 00000 n 
-0002090330 00000 n 
-0002090391 00000 n 
-0002090452 00000 n 
-0002090513 00000 n 
-0002090573 00000 n 
-0002090634 00000 n 
-0002090695 00000 n 
-0002090756 00000 n 
-0002090817 00000 n 
-0002090878 00000 n 
-0002090939 00000 n 
-0002091000 00000 n 
-0002091061 00000 n 
-0002091121 00000 n 
-0002091182 00000 n 
-0002091243 00000 n 
-0002091304 00000 n 
-0002091365 00000 n 
-0002091426 00000 n 
-0002091487 00000 n 
-0002091548 00000 n 
-0002091609 00000 n 
-0002091669 00000 n 
-0002091730 00000 n 
-0002091791 00000 n 
-0002091852 00000 n 
-0002091913 00000 n 
-0002091974 00000 n 
-0002092035 00000 n 
-0002095822 00000 n 
-0002099095 00000 n 
-0002095678 00000 n 
-0002092211 00000 n 
-0002095975 00000 n 
-0002096038 00000 n 
-0002096099 00000 n 
-0002096160 00000 n 
-0002096221 00000 n 
-0002096282 00000 n 
-0002096343 00000 n 
-0002096403 00000 n 
-0002096464 00000 n 
-0002096525 00000 n 
-0002096586 00000 n 
-0002096647 00000 n 
-0002096708 00000 n 
-0002096769 00000 n 
-0002096830 00000 n 
-0002096891 00000 n 
-0002096951 00000 n 
-0002097012 00000 n 
-0002097073 00000 n 
-0002097134 00000 n 
-0002097195 00000 n 
-0002097256 00000 n 
-0002097317 00000 n 
-0002097378 00000 n 
-0002097439 00000 n 
-0002097499 00000 n 
-0002097560 00000 n 
-0002097621 00000 n 
-0002097682 00000 n 
-0002097743 00000 n 
-0002097804 00000 n 
-0002097865 00000 n 
-0002097926 00000 n 
-0002097987 00000 n 
-0002098047 00000 n 
-0002098108 00000 n 
-0002098171 00000 n 
-0002098234 00000 n 
-0002098295 00000 n 
-0002098358 00000 n 
-0002098421 00000 n 
-0002098484 00000 n 
-0002098545 00000 n 
-0002098605 00000 n 
-0002098666 00000 n 
-0002098729 00000 n 
-0002098792 00000 n 
-0002098853 00000 n 
-0002098914 00000 n 
-0002098974 00000 n 
-0002099035 00000 n 
-0002105468 00000 n 
-0002102163 00000 n 
-0002099197 00000 n 
-0002102286 00000 n 
-0002102349 00000 n 
-0002102410 00000 n 
-0002102471 00000 n 
-0002102532 00000 n 
-0002102593 00000 n 
-0002102654 00000 n 
-0002102714 00000 n 
-0002102775 00000 n 
-0002102836 00000 n 
-0002102897 00000 n 
-0002102958 00000 n 
-0002103019 00000 n 
-0002103080 00000 n 
-0002103141 00000 n 
-0002103202 00000 n 
-0002103262 00000 n 
-0002103325 00000 n 
-0002103388 00000 n 
-0002103448 00000 n 
-0002103509 00000 n 
-0002103572 00000 n 
-0002103635 00000 n 
-0002103696 00000 n 
-0002103757 00000 n 
-0002103818 00000 n 
-0002103878 00000 n 
-0002103939 00000 n 
-0002104000 00000 n 
-0002104061 00000 n 
-0002104122 00000 n 
-0002104183 00000 n 
-0002104246 00000 n 
-0002104307 00000 n 
-0002104368 00000 n 
-0002104429 00000 n 
-0002104489 00000 n 
-0002104550 00000 n 
-0002104611 00000 n 
-0002104672 00000 n 
-0002104733 00000 n 
-0002104794 00000 n 
-0002104855 00000 n 
-0002104916 00000 n 
-0002104977 00000 n 
-0002105038 00000 n 
-0002105099 00000 n 
-0002105162 00000 n 
-0002105225 00000 n 
-0002105286 00000 n 
-0002105347 00000 n 
-0002105408 00000 n 
-0002108889 00000 n 
-0002112288 00000 n 
-0002108745 00000 n 
-0002105570 00000 n 
-0002109040 00000 n 
-0002109103 00000 n 
-0002109166 00000 n 
-0002109229 00000 n 
-0002109290 00000 n 
-0002109351 00000 n 
-0002109412 00000 n 
-0002109473 00000 n 
-0002109536 00000 n 
-0002109598 00000 n 
-0002109659 00000 n 
-0002109720 00000 n 
-0002109781 00000 n 
-0002109842 00000 n 
-0002109903 00000 n 
-0002109966 00000 n 
-0002110027 00000 n 
-0002110088 00000 n 
-0002110149 00000 n 
-0002110210 00000 n 
-0002110271 00000 n 
-0002110331 00000 n 
-0002110392 00000 n 
-0002110453 00000 n 
-0002110514 00000 n 
-0002110575 00000 n 
-0002110636 00000 n 
-0002110697 00000 n 
-0002110758 00000 n 
-0002110821 00000 n 
-0002110884 00000 n 
-0002110945 00000 n 
-0002111006 00000 n 
-0002111069 00000 n 
-0002111131 00000 n 
-0002111192 00000 n 
-0002111253 00000 n 
-0002111314 00000 n 
-0002111375 00000 n 
-0002111436 00000 n 
-0002111497 00000 n 
-0002111558 00000 n 
-0002111619 00000 n 
-0002111680 00000 n 
-0002111741 00000 n 
-0002111801 00000 n 
-0002111862 00000 n 
-0002111923 00000 n 
-0002111984 00000 n 
-0002112045 00000 n 
-0002112106 00000 n 
-0002112167 00000 n 
-0002112228 00000 n 
-0002122802 00000 n 
-0002119123 00000 n 
-0002115702 00000 n 
-0002112390 00000 n 
-0002115825 00000 n 
-0002115888 00000 n 
-0002115949 00000 n 
-0002116010 00000 n 
-0002116071 00000 n 
-0002116132 00000 n 
-0002116193 00000 n 
-0002116253 00000 n 
-0002116314 00000 n 
-0002116375 00000 n 
-0002116436 00000 n 
-0002116497 00000 n 
-0002116558 00000 n 
-0002116619 00000 n 
-0002116682 00000 n 
-0002116745 00000 n 
-0002116806 00000 n 
-0002116867 00000 n 
-0002116928 00000 n 
-0002116989 00000 n 
-0002117049 00000 n 
-0002117110 00000 n 
-0002117171 00000 n 
-0002117232 00000 n 
-0002117293 00000 n 
-0002117354 00000 n 
-0002117415 00000 n 
-0002117476 00000 n 
-0002117537 00000 n 
-0002117597 00000 n 
-0002117658 00000 n 
-0002117719 00000 n 
-0002117780 00000 n 
-0002117841 00000 n 
-0002117902 00000 n 
-0002117963 00000 n 
-0002118024 00000 n 
-0002118085 00000 n 
-0002118145 00000 n 
-0002118206 00000 n 
-0002118267 00000 n 
-0002118328 00000 n 
-0002118391 00000 n 
-0002118453 00000 n 
-0002118515 00000 n 
-0002118576 00000 n 
-0002118637 00000 n 
-0002118698 00000 n 
-0002118759 00000 n 
-0002118820 00000 n 
-0002118881 00000 n 
-0002118942 00000 n 
-0002119002 00000 n 
-0002119063 00000 n 
-0002122150 00000 n 
-0002125695 00000 n 
-0002122006 00000 n 
-0002119267 00000 n 
-0002122305 00000 n 
-0002122368 00000 n 
-0002122429 00000 n 
-0002122490 00000 n 
-0002122551 00000 n 
-0002122614 00000 n 
-0002122677 00000 n 
-0002122865 00000 n 
-0002122928 00000 n 
-0002122991 00000 n 
-0002123054 00000 n 
-0002123117 00000 n 
-0002123180 00000 n 
-0002123242 00000 n 
-0002123305 00000 n 
-0002123368 00000 n 
-0002123431 00000 n 
-0002123494 00000 n 
-0002123557 00000 n 
-0002123620 00000 n 
-0002123683 00000 n 
-0002123746 00000 n 
-0002123809 00000 n 
-0002123872 00000 n 
-0002123935 00000 n 
-0002123998 00000 n 
-0002124061 00000 n 
-0002124124 00000 n 
-0002124187 00000 n 
-0002124250 00000 n 
-0002124313 00000 n 
-0002124376 00000 n 
-0002124438 00000 n 
-0002124501 00000 n 
-0002124564 00000 n 
-0002124627 00000 n 
-0002124690 00000 n 
-0002124753 00000 n 
-0002124816 00000 n 
-0002124879 00000 n 
-0002124942 00000 n 
-0002125004 00000 n 
-0002125067 00000 n 
-0002125130 00000 n 
-0002125193 00000 n 
-0002125256 00000 n 
-0002125319 00000 n 
-0002125382 00000 n 
-0002125445 00000 n 
-0002125508 00000 n 
-0002125570 00000 n 
-0002125633 00000 n 
-0003969361 00000 n 
-0002129110 00000 n 
-0002132471 00000 n 
-0002128966 00000 n 
-0002125811 00000 n 
-0002129265 00000 n 
-0002129328 00000 n 
-0002129391 00000 n 
-0002129454 00000 n 
-0002129517 00000 n 
-0002129580 00000 n 
-0002129643 00000 n 
-0002129705 00000 n 
-0002129768 00000 n 
-0002129831 00000 n 
-0002129894 00000 n 
-0002129957 00000 n 
-0002130020 00000 n 
-0002130083 00000 n 
-0002130146 00000 n 
-0002130209 00000 n 
-0002130271 00000 n 
-0002130334 00000 n 
-0002130397 00000 n 
-0002130460 00000 n 
-0002130523 00000 n 
-0002130586 00000 n 
-0002130649 00000 n 
-0002130712 00000 n 
-0002130775 00000 n 
-0002130837 00000 n 
-0002130900 00000 n 
-0002130963 00000 n 
-0002131026 00000 n 
-0002131089 00000 n 
-0002131152 00000 n 
-0002131215 00000 n 
-0002131278 00000 n 
-0002131341 00000 n 
-0002131403 00000 n 
-0002131466 00000 n 
-0002131529 00000 n 
-0002131592 00000 n 
-0002131655 00000 n 
-0002131718 00000 n 
-0002131781 00000 n 
-0002131844 00000 n 
-0002131907 00000 n 
-0002131969 00000 n 
-0002132032 00000 n 
-0002132095 00000 n 
-0002132158 00000 n 
-0002132283 00000 n 
-0002132346 00000 n 
-0002132409 00000 n 
-0002139459 00000 n 
-0002135668 00000 n 
-0002132615 00000 n 
-0002135791 00000 n 
-0002135854 00000 n 
-0002135917 00000 n 
-0002135980 00000 n 
-0002136041 00000 n 
-0002136102 00000 n 
-0002136165 00000 n 
-0002136228 00000 n 
-0002136289 00000 n 
-0002136350 00000 n 
-0002136411 00000 n 
-0002136472 00000 n 
-0002136533 00000 n 
-0002136594 00000 n 
-0002136655 00000 n 
-0002136715 00000 n 
-0002136776 00000 n 
-0002136837 00000 n 
-0002136898 00000 n 
-0002136959 00000 n 
-0002137020 00000 n 
-0002137081 00000 n 
-0002137142 00000 n 
-0002137203 00000 n 
-0002137263 00000 n 
-0002137324 00000 n 
-0002137385 00000 n 
-0002137446 00000 n 
-0002137507 00000 n 
-0002137568 00000 n 
-0002137629 00000 n 
-0002137690 00000 n 
-0002137751 00000 n 
-0002137811 00000 n 
-0002137872 00000 n 
-0002137933 00000 n 
-0002137994 00000 n 
-0002138055 00000 n 
-0002138116 00000 n 
-0002138177 00000 n 
-0002138238 00000 n 
-0002138299 00000 n 
-0002138360 00000 n 
-0002138421 00000 n 
-0002138484 00000 n 
-0002138547 00000 n 
-0002138608 00000 n 
-0002138669 00000 n 
-0002138730 00000 n 
-0002138790 00000 n 
-0002138851 00000 n 
-0002138912 00000 n 
-0002138973 00000 n 
-0002139034 00000 n 
-0002139095 00000 n 
-0002139156 00000 n 
-0002139217 00000 n 
-0002139278 00000 n 
-0002139338 00000 n 
-0002139399 00000 n 
-0002146119 00000 n 
-0002142878 00000 n 
-0002139561 00000 n 
-0002143001 00000 n 
-0002143064 00000 n 
-0002143125 00000 n 
-0002143186 00000 n 
-0002143247 00000 n 
-0002143308 00000 n 
-0002143369 00000 n 
-0002143429 00000 n 
-0002143490 00000 n 
-0002143551 00000 n 
-0002143612 00000 n 
-0002143673 00000 n 
-0002143734 00000 n 
-0002143795 00000 n 
-0002143858 00000 n 
-0002143921 00000 n 
-0002143982 00000 n 
-0002144043 00000 n 
-0002144104 00000 n 
-0002144165 00000 n 
-0002144226 00000 n 
-0002144287 00000 n 
-0002144348 00000 n 
-0002144408 00000 n 
-0002144469 00000 n 
-0002144530 00000 n 
-0002144591 00000 n 
-0002144652 00000 n 
-0002144713 00000 n 
-0002144774 00000 n 
-0002144835 00000 n 
-0002144896 00000 n 
-0002144956 00000 n 
-0002145017 00000 n 
-0002145078 00000 n 
-0002145139 00000 n 
-0002145200 00000 n 
-0002145263 00000 n 
-0002145325 00000 n 
-0002145385 00000 n 
-0002145446 00000 n 
-0002145507 00000 n 
-0002145568 00000 n 
-0002145629 00000 n 
-0002145690 00000 n 
-0002145751 00000 n 
-0002145812 00000 n 
-0002145873 00000 n 
-0002145933 00000 n 
-0002145994 00000 n 
-0002150369 00000 n 
-0002150121 00000 n 
-0002146249 00000 n 
-0002150244 00000 n 
-0002153166 00000 n 
-0002152980 00000 n 
-0002150527 00000 n 
-0002153103 00000 n 
-0002156569 00000 n 
-0002156198 00000 n 
-0002153296 00000 n 
-0002156321 00000 n 
-0002156446 00000 n 
-0003969487 00000 n 
-0002159821 00000 n 
-0002160157 00000 n 
-0002159677 00000 n 
-0002156685 00000 n 
-0002159970 00000 n 
-0002163848 00000 n 
-0002163998 00000 n 
-0002165986 00000 n 
-0002163695 00000 n 
-0002160273 00000 n 
-0002164164 00000 n 
-0002164289 00000 n 
-0002164352 00000 n 
-0002164415 00000 n 
-0002164478 00000 n 
-0002164541 00000 n 
-0002164604 00000 n 
-0002164667 00000 n 
-0002164730 00000 n 
-0002164793 00000 n 
-0002164856 00000 n 
-0002164919 00000 n 
-0002164982 00000 n 
-0002165045 00000 n 
-0002165107 00000 n 
-0002165170 00000 n 
-0002165233 00000 n 
-0002165296 00000 n 
-0002165359 00000 n 
-0002165422 00000 n 
-0002165485 00000 n 
-0002165548 00000 n 
-0002165611 00000 n 
-0002165673 00000 n 
-0002165736 00000 n 
-0002165799 00000 n 
-0002171619 00000 n 
-0002168667 00000 n 
-0002166116 00000 n 
-0002168790 00000 n 
-0002168915 00000 n 
-0002168978 00000 n 
-0002169041 00000 n 
-0002169104 00000 n 
-0002169166 00000 n 
-0002169229 00000 n 
-0002169292 00000 n 
-0002169355 00000 n 
-0002169418 00000 n 
-0002169481 00000 n 
-0002169544 00000 n 
-0002169607 00000 n 
-0002169670 00000 n 
-0002169733 00000 n 
-0002169796 00000 n 
-0002169859 00000 n 
-0002169922 00000 n 
-0002169985 00000 n 
-0002170048 00000 n 
-0002170111 00000 n 
-0002170174 00000 n 
-0002170237 00000 n 
-0002170300 00000 n 
-0002170362 00000 n 
-0002170425 00000 n 
-0002170488 00000 n 
-0002170551 00000 n 
-0002170614 00000 n 
-0002170677 00000 n 
-0002170740 00000 n 
-0002170803 00000 n 
-0002170866 00000 n 
-0002170928 00000 n 
-0002170991 00000 n 
-0002171054 00000 n 
-0002171117 00000 n 
-0002171180 00000 n 
-0002171243 00000 n 
-0002171306 00000 n 
-0002171369 00000 n 
-0002171432 00000 n 
-0002171494 00000 n 
-0002171557 00000 n 
-0002178737 00000 n 
-0002174652 00000 n 
-0002171735 00000 n 
-0002174775 00000 n 
-0002174838 00000 n 
-0002174901 00000 n 
-0002174964 00000 n 
-0002175027 00000 n 
-0002175090 00000 n 
-0002175153 00000 n 
-0002175215 00000 n 
-0002175278 00000 n 
-0002175341 00000 n 
-0002175404 00000 n 
-0002175467 00000 n 
-0002175530 00000 n 
-0002175593 00000 n 
-0002175656 00000 n 
-0002175719 00000 n 
-0002175781 00000 n 
-0002175844 00000 n 
-0002175907 00000 n 
-0002175970 00000 n 
-0002176033 00000 n 
-0002176096 00000 n 
-0002176159 00000 n 
-0002176222 00000 n 
-0002176285 00000 n 
-0002176347 00000 n 
-0002176410 00000 n 
-0002176473 00000 n 
-0002176536 00000 n 
-0002176599 00000 n 
-0002176662 00000 n 
-0002176725 00000 n 
-0002176788 00000 n 
-0002176851 00000 n 
-0002176913 00000 n 
-0002176976 00000 n 
-0002177039 00000 n 
-0002177102 00000 n 
-0002177165 00000 n 
-0002177228 00000 n 
-0002177291 00000 n 
-0002177354 00000 n 
-0002177417 00000 n 
-0002177479 00000 n 
-0002177542 00000 n 
-0002177605 00000 n 
-0002177668 00000 n 
-0002177731 00000 n 
-0002177794 00000 n 
-0002177857 00000 n 
-0002177920 00000 n 
-0002177983 00000 n 
-0002178046 00000 n 
-0002178109 00000 n 
-0002178172 00000 n 
-0002178235 00000 n 
-0002178298 00000 n 
-0002178361 00000 n 
-0002178424 00000 n 
-0002178487 00000 n 
-0002178550 00000 n 
-0002178613 00000 n 
-0002178675 00000 n 
-0002181613 00000 n 
-0002185350 00000 n 
-0002181469 00000 n 
-0002178839 00000 n 
-0002181764 00000 n 
-0002181827 00000 n 
-0002181890 00000 n 
-0002181953 00000 n 
-0002182016 00000 n 
-0002182079 00000 n 
-0002182142 00000 n 
-0002182204 00000 n 
-0002182267 00000 n 
-0002182330 00000 n 
-0002182393 00000 n 
-0002182456 00000 n 
-0002182519 00000 n 
-0002182582 00000 n 
-0002182645 00000 n 
-0002182708 00000 n 
-0002182770 00000 n 
-0002182833 00000 n 
-0002182896 00000 n 
-0002182959 00000 n 
-0002183022 00000 n 
-0002183085 00000 n 
-0002183148 00000 n 
-0002183211 00000 n 
-0002183274 00000 n 
-0002183336 00000 n 
-0002183399 00000 n 
-0002183462 00000 n 
-0002183525 00000 n 
-0002183588 00000 n 
-0002183651 00000 n 
-0002183714 00000 n 
-0002183777 00000 n 
-0002183840 00000 n 
-0002183902 00000 n 
-0002183965 00000 n 
-0002184028 00000 n 
-0002184091 00000 n 
-0002184154 00000 n 
-0002184217 00000 n 
-0002184280 00000 n 
-0002184343 00000 n 
-0002184406 00000 n 
-0002184468 00000 n 
-0002184531 00000 n 
-0002184594 00000 n 
-0002184657 00000 n 
-0002184720 00000 n 
-0002184783 00000 n 
-0002184846 00000 n 
-0002184909 00000 n 
-0002184972 00000 n 
-0002185035 00000 n 
-0002185098 00000 n 
-0002185161 00000 n 
-0002185224 00000 n 
-0002185287 00000 n 
-0002191562 00000 n 
-0002188833 00000 n 
-0002192191 00000 n 
-0002188689 00000 n 
-0002185452 00000 n 
-0002188983 00000 n 
-0002189046 00000 n 
-0002189109 00000 n 
-0002189172 00000 n 
-0002189235 00000 n 
-0002189298 00000 n 
-0002189361 00000 n 
-0002189424 00000 n 
-0002189487 00000 n 
-0002189550 00000 n 
-0002189613 00000 n 
-0002189676 00000 n 
-0002189739 00000 n 
-0002189801 00000 n 
-0002189864 00000 n 
-0002189927 00000 n 
-0002189990 00000 n 
-0002190053 00000 n 
-0002190116 00000 n 
-0002190179 00000 n 
-0002190242 00000 n 
-0002190305 00000 n 
-0002190367 00000 n 
-0002190430 00000 n 
-0002190493 00000 n 
-0002190556 00000 n 
-0002190619 00000 n 
-0002190682 00000 n 
-0002190745 00000 n 
-0002190808 00000 n 
-0002190871 00000 n 
-0002190933 00000 n 
-0002190996 00000 n 
-0002191059 00000 n 
-0002191122 00000 n 
-0002191185 00000 n 
-0002191248 00000 n 
-0002191311 00000 n 
-0002191374 00000 n 
-0002191437 00000 n 
-0002191499 00000 n 
-0002191625 00000 n 
-0002191688 00000 n 
-0002191751 00000 n 
-0002191814 00000 n 
-0002191877 00000 n 
-0002191940 00000 n 
-0002192003 00000 n 
-0002192066 00000 n 
-0002192128 00000 n 
-0003969613 00000 n 
-0002197818 00000 n 
-0002195234 00000 n 
-0002195400 00000 n 
-0002197881 00000 n 
-0002195081 00000 n 
-0002192307 00000 n 
-0002195553 00000 n 
-0002195616 00000 n 
-0002195679 00000 n 
-0002195742 00000 n 
-0002195805 00000 n 
-0002195868 00000 n 
-0002195931 00000 n 
-0002195994 00000 n 
-0002196057 00000 n 
-0002196120 00000 n 
-0002196183 00000 n 
-0002196246 00000 n 
-0002196309 00000 n 
-0002196371 00000 n 
-0002196434 00000 n 
-0002196497 00000 n 
-0002196560 00000 n 
-0002196623 00000 n 
-0002196686 00000 n 
-0002196749 00000 n 
-0002196812 00000 n 
-0002196875 00000 n 
-0002196937 00000 n 
-0002197000 00000 n 
-0002197063 00000 n 
-0002197126 00000 n 
-0002197189 00000 n 
-0002197252 00000 n 
-0002197315 00000 n 
-0002197378 00000 n 
-0002197441 00000 n 
-0002197503 00000 n 
-0002197566 00000 n 
-0002197629 00000 n 
-0002197692 00000 n 
-0002197755 00000 n 
-0002205320 00000 n 
-0002205382 00000 n 
-0002202620 00000 n 
-0002197997 00000 n 
-0002202743 00000 n 
-0002202806 00000 n 
-0002202869 00000 n 
-0002202932 00000 n 
-0002202995 00000 n 
-0002203057 00000 n 
-0002203120 00000 n 
-0002203183 00000 n 
-0002203246 00000 n 
-0002203309 00000 n 
-0002203372 00000 n 
-0002203435 00000 n 
-0002203498 00000 n 
-0002203561 00000 n 
-0002203623 00000 n 
-0002203686 00000 n 
-0002203749 00000 n 
-0002203812 00000 n 
-0002203875 00000 n 
-0002203938 00000 n 
-0002204001 00000 n 
-0002204064 00000 n 
-0002204127 00000 n 
-0002204188 00000 n 
-0002204251 00000 n 
-0002204314 00000 n 
-0002204377 00000 n 
-0002204440 00000 n 
-0002204503 00000 n 
-0002204566 00000 n 
-0002204629 00000 n 
-0002204692 00000 n 
-0002204754 00000 n 
-0002204817 00000 n 
-0002204880 00000 n 
-0002204943 00000 n 
-0002205006 00000 n 
-0002205069 00000 n 
-0002205132 00000 n 
-0002205195 00000 n 
-0002205258 00000 n 
-0002211120 00000 n 
-0002208671 00000 n 
-0002205511 00000 n 
-0002208794 00000 n 
-0002208857 00000 n 
-0002208920 00000 n 
-0002208983 00000 n 
-0002209046 00000 n 
-0002209108 00000 n 
-0002209171 00000 n 
-0002209234 00000 n 
-0002209297 00000 n 
-0002209360 00000 n 
-0002209423 00000 n 
-0002209486 00000 n 
-0002209549 00000 n 
-0002209612 00000 n 
-0002209674 00000 n 
-0002209737 00000 n 
-0002209800 00000 n 
-0002209863 00000 n 
-0002209926 00000 n 
-0002209989 00000 n 
-0002210052 00000 n 
-0002210115 00000 n 
-0002210178 00000 n 
-0002210239 00000 n 
-0002210302 00000 n 
-0002210365 00000 n 
-0002210428 00000 n 
-0002210491 00000 n 
-0002210554 00000 n 
-0002210617 00000 n 
-0002210680 00000 n 
-0002210743 00000 n 
-0002210805 00000 n 
-0002210868 00000 n 
-0002210931 00000 n 
-0002210994 00000 n 
-0002211057 00000 n 
-0002217138 00000 n 
-0002214626 00000 n 
-0002211235 00000 n 
-0002214749 00000 n 
-0002214812 00000 n 
-0002214875 00000 n 
-0002214938 00000 n 
-0002215001 00000 n 
-0002215063 00000 n 
-0002215126 00000 n 
-0002215189 00000 n 
-0002215252 00000 n 
-0002215315 00000 n 
-0002215378 00000 n 
-0002215441 00000 n 
-0002215504 00000 n 
-0002215567 00000 n 
-0002215629 00000 n 
-0002215692 00000 n 
-0002215755 00000 n 
-0002215818 00000 n 
-0002215881 00000 n 
-0002215944 00000 n 
-0002216007 00000 n 
-0002216070 00000 n 
-0002216133 00000 n 
-0002216194 00000 n 
-0002216257 00000 n 
-0002216320 00000 n 
-0003962201 00000 n 
-0002216383 00000 n 
-0002216446 00000 n 
-0002216509 00000 n 
-0002216572 00000 n 
-0002216635 00000 n 
-0002216697 00000 n 
-0002216760 00000 n 
-0002216823 00000 n 
-0002216886 00000 n 
-0002216949 00000 n 
-0002217012 00000 n 
-0002217075 00000 n 
-0002225300 00000 n 
-0002221408 00000 n 
-0002217282 00000 n 
-0002221531 00000 n 
-0002221594 00000 n 
-0002221657 00000 n 
-0002221720 00000 n 
-0002221783 00000 n 
-0002221845 00000 n 
-0002221908 00000 n 
-0002221971 00000 n 
-0002222034 00000 n 
-0002222097 00000 n 
-0002222160 00000 n 
-0002222223 00000 n 
-0002222286 00000 n 
-0002222349 00000 n 
-0002222411 00000 n 
-0002222474 00000 n 
-0002222537 00000 n 
-0002222600 00000 n 
-0002222663 00000 n 
-0002222726 00000 n 
-0002222789 00000 n 
-0002222852 00000 n 
-0002222915 00000 n 
-0002222976 00000 n 
-0002223039 00000 n 
-0002223102 00000 n 
-0002223165 00000 n 
-0002223228 00000 n 
-0002223291 00000 n 
-0002223354 00000 n 
-0002223417 00000 n 
-0002223480 00000 n 
-0002223542 00000 n 
-0002223605 00000 n 
-0002223668 00000 n 
-0002223731 00000 n 
-0002223794 00000 n 
-0002223857 00000 n 
-0002223920 00000 n 
-0002223981 00000 n 
-0002224044 00000 n 
-0002224107 00000 n 
-0002224170 00000 n 
-0002224233 00000 n 
-0002224296 00000 n 
-0002224359 00000 n 
-0002224422 00000 n 
-0002224485 00000 n 
-0002224547 00000 n 
-0002224610 00000 n 
-0002224673 00000 n 
-0002224736 00000 n 
-0002224799 00000 n 
-0002224862 00000 n 
-0002224925 00000 n 
-0002224988 00000 n 
-0002225051 00000 n 
-0002225113 00000 n 
-0002225176 00000 n 
-0002225238 00000 n 
-0002229432 00000 n 
-0002229582 00000 n 
-0002232562 00000 n 
-0002229279 00000 n 
-0002225415 00000 n 
-0002229731 00000 n 
-0002229794 00000 n 
-0002229857 00000 n 
-0002229920 00000 n 
-0002229983 00000 n 
-0002230046 00000 n 
-0002230108 00000 n 
-0002230171 00000 n 
-0002230234 00000 n 
-0002230297 00000 n 
-0002230360 00000 n 
-0002230423 00000 n 
-0002230486 00000 n 
-0002230549 00000 n 
-0002230612 00000 n 
-0002230674 00000 n 
-0002230737 00000 n 
-0002230800 00000 n 
-0002230863 00000 n 
-0002230926 00000 n 
-0002230989 00000 n 
-0002231052 00000 n 
-0002231115 00000 n 
-0002231178 00000 n 
-0002231240 00000 n 
-0002231303 00000 n 
-0002231366 00000 n 
-0002231429 00000 n 
-0002231492 00000 n 
-0002231555 00000 n 
-0002231618 00000 n 
-0002231681 00000 n 
-0002231744 00000 n 
-0002231807 00000 n 
-0002231870 00000 n 
-0002231932 00000 n 
-0002231995 00000 n 
-0002232058 00000 n 
-0002232121 00000 n 
-0002232184 00000 n 
-0002232247 00000 n 
-0002232310 00000 n 
-0002232373 00000 n 
-0002232436 00000 n 
-0002232499 00000 n 
-0003969739 00000 n 
-0002234120 00000 n 
-0002234266 00000 n 
-0002234607 00000 n 
-0002233967 00000 n 
-0002232678 00000 n 
-0002234418 00000 n 
-0002234481 00000 n 
-0002234544 00000 n 
-0002240262 00000 n 
-0002240325 00000 n 
-0002237119 00000 n 
-0002234723 00000 n 
-0002237242 00000 n 
-0002237305 00000 n 
-0002237368 00000 n 
-0002237431 00000 n 
-0002237494 00000 n 
-0002237557 00000 n 
-0002237620 00000 n 
-0002237683 00000 n 
-0002237746 00000 n 
-0002237809 00000 n 
-0002237872 00000 n 
-0002237935 00000 n 
-0002237998 00000 n 
-0002238060 00000 n 
-0002238123 00000 n 
-0002238186 00000 n 
-0002238249 00000 n 
-0002238312 00000 n 
-0002238375 00000 n 
-0002238438 00000 n 
-0002238501 00000 n 
-0002238564 00000 n 
-0002238626 00000 n 
-0002238689 00000 n 
-0002238752 00000 n 
-0002238815 00000 n 
-0002238878 00000 n 
-0002238941 00000 n 
-0002239004 00000 n 
-0002239067 00000 n 
-0002239130 00000 n 
-0002239192 00000 n 
-0002239255 00000 n 
-0002239318 00000 n 
-0002239381 00000 n 
-0002239444 00000 n 
-0002239507 00000 n 
-0002239570 00000 n 
-0002239633 00000 n 
-0002239696 00000 n 
-0002239758 00000 n 
-0002239821 00000 n 
-0002239884 00000 n 
-0002239947 00000 n 
-0002240010 00000 n 
-0002240073 00000 n 
-0002240136 00000 n 
-0002240199 00000 n 
-0002245090 00000 n 
-0002242387 00000 n 
-0002240441 00000 n 
-0002242510 00000 n 
-0002242573 00000 n 
-0002242636 00000 n 
-0002242699 00000 n 
-0002242762 00000 n 
-0002242825 00000 n 
-0002242888 00000 n 
-0002242951 00000 n 
-0002243014 00000 n 
-0002243077 00000 n 
-0002243140 00000 n 
-0002243203 00000 n 
-0002243266 00000 n 
-0002243328 00000 n 
-0002243391 00000 n 
-0002243454 00000 n 
-0002243517 00000 n 
-0002243580 00000 n 
-0002243643 00000 n 
-0002243706 00000 n 
-0002243769 00000 n 
-0002243832 00000 n 
-0002243894 00000 n 
-0002243957 00000 n 
-0002244020 00000 n 
-0002244083 00000 n 
-0002244146 00000 n 
-0002244209 00000 n 
-0002244272 00000 n 
-0002244335 00000 n 
-0002244398 00000 n 
-0002244460 00000 n 
-0002244523 00000 n 
-0002244586 00000 n 
-0002244649 00000 n 
-0002244712 00000 n 
-0002244775 00000 n 
-0002244838 00000 n 
-0002244901 00000 n 
-0002244964 00000 n 
-0002245027 00000 n 
-0002250245 00000 n 
-0002247354 00000 n 
-0002245206 00000 n 
-0002247477 00000 n 
-0002247540 00000 n 
-0002247603 00000 n 
-0002247666 00000 n 
-0002247729 00000 n 
-0002247792 00000 n 
-0002247855 00000 n 
-0002247918 00000 n 
-0002247981 00000 n 
-0002248044 00000 n 
-0002248107 00000 n 
-0002248170 00000 n 
-0002248233 00000 n 
-0002248295 00000 n 
-0002248358 00000 n 
-0002248421 00000 n 
-0002248484 00000 n 
-0002248547 00000 n 
-0002248610 00000 n 
-0002248673 00000 n 
-0002248736 00000 n 
-0002248799 00000 n 
-0002248861 00000 n 
-0002248924 00000 n 
-0002248987 00000 n 
-0002249050 00000 n 
-0002249113 00000 n 
-0002249176 00000 n 
-0002249239 00000 n 
-0002249302 00000 n 
-0002249365 00000 n 
-0002249427 00000 n 
-0002249490 00000 n 
-0002249553 00000 n 
-0002249616 00000 n 
-0002249679 00000 n 
-0002249742 00000 n 
-0002249805 00000 n 
-0002249868 00000 n 
-0002249931 00000 n 
-0002249993 00000 n 
-0002250056 00000 n 
-0002250119 00000 n 
-0002250182 00000 n 
-0002257250 00000 n 
-0002253478 00000 n 
-0002250361 00000 n 
-0002253601 00000 n 
-0002253664 00000 n 
-0002253727 00000 n 
-0002253790 00000 n 
-0002253853 00000 n 
-0002253916 00000 n 
-0002253979 00000 n 
-0002254042 00000 n 
-0002254105 00000 n 
-0002254168 00000 n 
-0002254231 00000 n 
-0002254294 00000 n 
-0002254357 00000 n 
-0002254419 00000 n 
-0002254482 00000 n 
-0002254545 00000 n 
-0002254608 00000 n 
-0002254671 00000 n 
-0002254734 00000 n 
-0002254797 00000 n 
-0002254860 00000 n 
-0002254923 00000 n 
-0002254985 00000 n 
-0002255048 00000 n 
-0002255111 00000 n 
-0002255174 00000 n 
-0002255237 00000 n 
-0002255300 00000 n 
-0002255363 00000 n 
-0002255426 00000 n 
-0002255489 00000 n 
-0002255551 00000 n 
-0002255614 00000 n 
-0002255677 00000 n 
-0002255740 00000 n 
-0002255803 00000 n 
-0002255866 00000 n 
-0002255929 00000 n 
-0002255992 00000 n 
-0002256055 00000 n 
-0002256117 00000 n 
-0002256180 00000 n 
-0002256243 00000 n 
-0002256306 00000 n 
-0002256369 00000 n 
-0002256432 00000 n 
-0002256495 00000 n 
-0002256558 00000 n 
-0002256621 00000 n 
-0002256684 00000 n 
-0002256747 00000 n 
-0002256810 00000 n 
-0002256873 00000 n 
-0002256936 00000 n 
-0002256999 00000 n 
-0002257062 00000 n 
-0002257125 00000 n 
-0002257188 00000 n 
-0002263773 00000 n 
-0002260884 00000 n 
-0002257366 00000 n 
-0002261007 00000 n 
-0002261070 00000 n 
-0002261133 00000 n 
-0002261196 00000 n 
-0002261259 00000 n 
-0002261322 00000 n 
-0002261385 00000 n 
-0002261447 00000 n 
-0002261510 00000 n 
-0002261573 00000 n 
-0002261636 00000 n 
-0002261699 00000 n 
-0002261760 00000 n 
-0002261823 00000 n 
-0002261886 00000 n 
-0002261949 00000 n 
-0002262012 00000 n 
-0002262075 00000 n 
-0002262138 00000 n 
-0002262201 00000 n 
-0002262264 00000 n 
-0002262326 00000 n 
-0002262389 00000 n 
-0002262452 00000 n 
-0002262515 00000 n 
-0002262578 00000 n 
-0002262641 00000 n 
-0002262704 00000 n 
-0002262767 00000 n 
-0002262830 00000 n 
-0002262892 00000 n 
-0002262955 00000 n 
-0002263018 00000 n 
-0002263081 00000 n 
-0002263144 00000 n 
-0002263207 00000 n 
-0002263270 00000 n 
-0002263333 00000 n 
-0002263396 00000 n 
-0002263458 00000 n 
-0002263521 00000 n 
-0002263584 00000 n 
-0002263647 00000 n 
-0002263710 00000 n 
-0003969865 00000 n 
-0002270218 00000 n 
-0002267014 00000 n 
-0002263889 00000 n 
-0002267137 00000 n 
-0002267200 00000 n 
-0002267263 00000 n 
-0002267326 00000 n 
-0002267389 00000 n 
-0002267452 00000 n 
-0002267515 00000 n 
-0002267578 00000 n 
-0002267641 00000 n 
-0002267704 00000 n 
-0002267767 00000 n 
-0002267830 00000 n 
-0002267893 00000 n 
-0002267955 00000 n 
-0002268018 00000 n 
-0002268081 00000 n 
-0002268144 00000 n 
-0002268207 00000 n 
-0002268270 00000 n 
-0002268333 00000 n 
-0002268396 00000 n 
-0002268459 00000 n 
-0002268521 00000 n 
-0002268584 00000 n 
-0002268647 00000 n 
-0002268710 00000 n 
-0002268773 00000 n 
-0002268836 00000 n 
-0002268899 00000 n 
-0002268962 00000 n 
-0002269025 00000 n 
-0002269087 00000 n 
-0002269150 00000 n 
-0002269213 00000 n 
-0002269276 00000 n 
-0002269339 00000 n 
-0002269402 00000 n 
-0002269465 00000 n 
-0002269528 00000 n 
-0002269591 00000 n 
-0002269653 00000 n 
-0002269716 00000 n 
-0002269779 00000 n 
-0002269842 00000 n 
-0002269905 00000 n 
-0002269968 00000 n 
-0002270031 00000 n 
-0002270093 00000 n 
-0002270156 00000 n 
-0002272959 00000 n 
-0002273128 00000 n 
-0002275102 00000 n 
-0002272806 00000 n 
-0002270320 00000 n 
-0002273278 00000 n 
-0002273341 00000 n 
-0002273404 00000 n 
-0002273467 00000 n 
-0002273530 00000 n 
-0002273593 00000 n 
-0002273656 00000 n 
-0002273718 00000 n 
-0002273781 00000 n 
-0002273844 00000 n 
-0002273907 00000 n 
-0002273970 00000 n 
-0002274033 00000 n 
-0002274096 00000 n 
-0002274159 00000 n 
-0002274222 00000 n 
-0002274284 00000 n 
-0002274347 00000 n 
-0002274410 00000 n 
-0002274473 00000 n 
-0002274536 00000 n 
-0002274599 00000 n 
-0002274662 00000 n 
-0002274725 00000 n 
-0002274788 00000 n 
-0002274851 00000 n 
-0002274914 00000 n 
-0002274976 00000 n 
-0002275039 00000 n 
-0002278674 00000 n 
-0002278737 00000 n 
-0002276789 00000 n 
-0002275204 00000 n 
-0002276912 00000 n 
-0002276975 00000 n 
-0002277038 00000 n 
-0002277101 00000 n 
-0002277164 00000 n 
-0002277227 00000 n 
-0002277290 00000 n 
-0002277353 00000 n 
-0002277416 00000 n 
-0002277479 00000 n 
-0002277542 00000 n 
-0002277605 00000 n 
-0002277668 00000 n 
-0002277730 00000 n 
-0002277793 00000 n 
-0002277856 00000 n 
-0002277919 00000 n 
-0002277982 00000 n 
-0002278045 00000 n 
-0002278108 00000 n 
-0002278171 00000 n 
-0002278234 00000 n 
-0002278296 00000 n 
-0002278359 00000 n 
-0002278422 00000 n 
-0002278485 00000 n 
-0002278548 00000 n 
-0002278611 00000 n 
-0002282913 00000 n 
-0002280651 00000 n 
-0002278853 00000 n 
-0002280774 00000 n 
-0002280837 00000 n 
-0002280900 00000 n 
-0002280963 00000 n 
-0002281026 00000 n 
-0002281089 00000 n 
-0002281152 00000 n 
-0002281215 00000 n 
-0002281278 00000 n 
-0002281340 00000 n 
-0002281403 00000 n 
-0002281466 00000 n 
-0002281529 00000 n 
-0002281592 00000 n 
-0002281655 00000 n 
-0002281718 00000 n 
-0002281781 00000 n 
-0002281844 00000 n 
-0002281906 00000 n 
-0002281969 00000 n 
-0002282032 00000 n 
-0002282095 00000 n 
-0002282158 00000 n 
-0002282221 00000 n 
-0002282284 00000 n 
-0002282347 00000 n 
-0002282410 00000 n 
-0002282472 00000 n 
-0002282535 00000 n 
-0002282598 00000 n 
-0002282661 00000 n 
-0002282724 00000 n 
-0002282787 00000 n 
-0002282850 00000 n 
-0002288945 00000 n 
-0002285739 00000 n 
-0002283029 00000 n 
-0002285862 00000 n 
-0002285925 00000 n 
-0002285988 00000 n 
-0002286051 00000 n 
-0002286114 00000 n 
-0002286177 00000 n 
-0002286240 00000 n 
-0002286303 00000 n 
-0002286366 00000 n 
-0002286429 00000 n 
-0002286492 00000 n 
-0002286555 00000 n 
-0002286618 00000 n 
-0002286680 00000 n 
-0002286743 00000 n 
-0002286806 00000 n 
-0002286869 00000 n 
-0002286932 00000 n 
-0002286995 00000 n 
-0002287058 00000 n 
-0002287121 00000 n 
-0002287184 00000 n 
-0002287246 00000 n 
-0002287309 00000 n 
-0002287372 00000 n 
-0002287435 00000 n 
-0002287498 00000 n 
-0002287561 00000 n 
-0002287624 00000 n 
-0002287687 00000 n 
-0002287750 00000 n 
-0002287812 00000 n 
-0002287875 00000 n 
-0002287938 00000 n 
-0002288001 00000 n 
-0002288064 00000 n 
-0002288127 00000 n 
-0002288190 00000 n 
-0002288253 00000 n 
-0002288316 00000 n 
-0002288378 00000 n 
-0002288441 00000 n 
-0002288504 00000 n 
-0002288567 00000 n 
-0002288630 00000 n 
-0002288693 00000 n 
-0002288756 00000 n 
-0002288819 00000 n 
-0002288882 00000 n 
-0002295813 00000 n 
-0002292106 00000 n 
-0002289061 00000 n 
-0002292229 00000 n 
-0002292292 00000 n 
-0002292355 00000 n 
-0002292418 00000 n 
-0002292481 00000 n 
-0002292544 00000 n 
-0002292607 00000 n 
-0002292670 00000 n 
-0002292733 00000 n 
-0002292796 00000 n 
-0002292859 00000 n 
-0002292922 00000 n 
-0002292985 00000 n 
-0002293047 00000 n 
-0002293110 00000 n 
-0002293173 00000 n 
-0002293236 00000 n 
-0002293299 00000 n 
-0002293362 00000 n 
-0002293425 00000 n 
-0002293488 00000 n 
-0002293551 00000 n 
-0002293613 00000 n 
-0002293676 00000 n 
-0002293739 00000 n 
-0002293802 00000 n 
-0002293865 00000 n 
-0002293928 00000 n 
-0002293991 00000 n 
-0002294054 00000 n 
-0002294117 00000 n 
-0002294179 00000 n 
-0002294242 00000 n 
-0002294305 00000 n 
-0002294368 00000 n 
-0002294430 00000 n 
-0002294492 00000 n 
-0002294555 00000 n 
-0002294618 00000 n 
-0002294681 00000 n 
-0002294743 00000 n 
-0002294806 00000 n 
-0002294869 00000 n 
-0002294932 00000 n 
-0002294995 00000 n 
-0002295058 00000 n 
-0002295121 00000 n 
-0002295184 00000 n 
-0002295247 00000 n 
-0002295309 00000 n 
-0002295372 00000 n 
-0002295435 00000 n 
-0002295498 00000 n 
-0002295561 00000 n 
-0002295624 00000 n 
-0002295687 00000 n 
-0002295750 00000 n 
-0003969991 00000 n 
-0002300831 00000 n 
-0002300079 00000 n 
-0002295929 00000 n 
-0002300202 00000 n 
-0002300265 00000 n 
-0002300328 00000 n 
-0002300391 00000 n 
-0002300454 00000 n 
-0002300516 00000 n 
-0002300579 00000 n 
-0002300642 00000 n 
-0002300705 00000 n 
-0002300768 00000 n 
-0002303369 00000 n 
-0002303601 00000 n 
-0002303225 00000 n 
-0002300961 00000 n 
-0002303538 00000 n 
-0002304402 00000 n 
-0002304154 00000 n 
-0002303689 00000 n 
-0002304277 00000 n 
-0002308287 00000 n 
-0002307851 00000 n 
-0002304504 00000 n 
-0002307974 00000 n 
-0002308037 00000 n 
-0002308162 00000 n 
-0002312513 00000 n 
-0002312327 00000 n 
-0002308389 00000 n 
-0002312450 00000 n 
-0002316679 00000 n 
-0002316309 00000 n 
-0002312615 00000 n 
-0002316432 00000 n 
-0003970117 00000 n 
-0002321294 00000 n 
-0002326330 00000 n 
-0002326532 00000 n 
-0002321508 00000 n 
-0002321150 00000 n 
-0002316795 00000 n 
-0002321445 00000 n 
-0002331722 00000 n 
-0002326737 00000 n 
-0002326915 00000 n 
-0002327142 00000 n 
-0002327457 00000 n 
-0002326150 00000 n 
-0002321624 00000 n 
-0002327333 00000 n 
-0002331379 00000 n 
-0002332287 00000 n 
-0002331235 00000 n 
-0002327587 00000 n 
-0002331597 00000 n 
-0002331847 00000 n 
-0002331910 00000 n 
-0002331973 00000 n 
-0002332036 00000 n 
-0002332099 00000 n 
-0002332162 00000 n 
-0002332225 00000 n 
-0002337066 00000 n 
-0002335750 00000 n 
-0002332431 00000 n 
-0002335873 00000 n 
-0002335998 00000 n 
-0002336061 00000 n 
-0002336124 00000 n 
-0002336187 00000 n 
-0002336312 00000 n 
-0002336374 00000 n 
-0002336436 00000 n 
-0002336499 00000 n 
-0002336562 00000 n 
-0002336625 00000 n 
-0002336688 00000 n 
-0002336751 00000 n 
-0002336814 00000 n 
-0002336877 00000 n 
-0002336940 00000 n 
-0002337003 00000 n 
-0002342663 00000 n 
-0002341030 00000 n 
-0002337210 00000 n 
-0002341153 00000 n 
-0002341216 00000 n 
-0002341279 00000 n 
-0002341342 00000 n 
-0002341405 00000 n 
-0002341468 00000 n 
-0002341531 00000 n 
-0002341594 00000 n 
-0002341657 00000 n 
-0002341720 00000 n 
-0002341783 00000 n 
-0002341846 00000 n 
-0002341909 00000 n 
-0002341972 00000 n 
-0002342035 00000 n 
-0002342098 00000 n 
-0002342222 00000 n 
-0002342285 00000 n 
-0002342348 00000 n 
-0002342411 00000 n 
-0002342474 00000 n 
-0002342537 00000 n 
-0002342600 00000 n 
-0002347843 00000 n 
-0002346478 00000 n 
-0002342793 00000 n 
-0002346601 00000 n 
-0002346726 00000 n 
-0002346789 00000 n 
-0002346852 00000 n 
-0002346914 00000 n 
-0002346977 00000 n 
-0002347040 00000 n 
-0002347103 00000 n 
-0002347166 00000 n 
-0002347227 00000 n 
-0002347288 00000 n 
-0002347349 00000 n 
-0002347409 00000 n 
-0002347472 00000 n 
-0002347534 00000 n 
-0002347594 00000 n 
-0002347657 00000 n 
-0002347720 00000 n 
-0002347781 00000 n 
-0003970243 00000 n 
-0002352723 00000 n 
-0002351537 00000 n 
-0002347959 00000 n 
-0002351660 00000 n 
-0002351723 00000 n 
-0002351786 00000 n 
-0002351847 00000 n 
-0002352033 00000 n 
-0002352096 00000 n 
-0002352159 00000 n 
-0002352222 00000 n 
-0002352285 00000 n 
-0002352348 00000 n 
-0002352411 00000 n 
-0002352536 00000 n 
-0002352599 00000 n 
-0002352662 00000 n 
-0002358054 00000 n 
-0002356150 00000 n 
-0002352853 00000 n 
-0002356273 00000 n 
-0002356398 00000 n 
-0002356461 00000 n 
-0002356522 00000 n 
-0002356584 00000 n 
-0002356645 00000 n 
-0002356708 00000 n 
-0002356769 00000 n 
-0002356830 00000 n 
-0002356891 00000 n 
-0002356952 00000 n 
-0002357013 00000 n 
-0002357074 00000 n 
-0002357133 00000 n 
-0002357196 00000 n 
-0002357259 00000 n 
-0002357319 00000 n 
-0002357382 00000 n 
-0002357443 00000 n 
-0002357504 00000 n 
-0002357565 00000 n 
-0002357626 00000 n 
-0002357687 00000 n 
-0002357747 00000 n 
-0002357808 00000 n 
-0002357869 00000 n 
-0002357930 00000 n 
-0002362427 00000 n 
-0002362053 00000 n 
-0002358184 00000 n 
-0002362176 00000 n 
-0002362301 00000 n 
-0002362364 00000 n 
-0002363527 00000 n 
-0002363341 00000 n 
-0002362571 00000 n 
-0002363464 00000 n 
-0002367067 00000 n 
-0002366635 00000 n 
-0002363657 00000 n 
-0002366758 00000 n 
-0002366883 00000 n 
-0002369975 00000 n 
-0002369541 00000 n 
-0002367169 00000 n 
-0002369664 00000 n 
-0003970369 00000 n 
-0002373628 00000 n 
-0002374473 00000 n 
-0002373484 00000 n 
-0002370091 00000 n 
-0002373784 00000 n 
-0002373909 00000 n 
-0002373972 00000 n 
-0002374035 00000 n 
-0002374098 00000 n 
-0002374161 00000 n 
-0002374223 00000 n 
-0002374347 00000 n 
-0002374410 00000 n 
-0002379307 00000 n 
-0002377805 00000 n 
-0002377974 00000 n 
-0002378152 00000 n 
-0002380240 00000 n 
-0002377643 00000 n 
-0002374589 00000 n 
-0002378306 00000 n 
-0002378369 00000 n 
-0002378432 00000 n 
-0002378495 00000 n 
-0002378556 00000 n 
-0002378619 00000 n 
-0002378680 00000 n 
-0002378741 00000 n 
-0002378804 00000 n 
-0002378867 00000 n 
-0002378930 00000 n 
-0002378992 00000 n 
-0002379055 00000 n 
-0002379118 00000 n 
-0002379181 00000 n 
-0002379244 00000 n 
-0002379370 00000 n 
-0002379433 00000 n 
-0002379558 00000 n 
-0002379621 00000 n 
-0002379684 00000 n 
-0002379747 00000 n 
-0002379810 00000 n 
-0002379871 00000 n 
-0002379933 00000 n 
-0002379996 00000 n 
-0002380057 00000 n 
-0002380116 00000 n 
-0002380177 00000 n 
-0002391585 00000 n 
-0002383227 00000 n 
-0002385660 00000 n 
-0002383083 00000 n 
-0002380370 00000 n 
-0002383385 00000 n 
-0002383448 00000 n 
-0002383511 00000 n 
-0002383572 00000 n 
-0002383633 00000 n 
-0002383696 00000 n 
-0002383757 00000 n 
-0002383818 00000 n 
-0002383879 00000 n 
-0002383940 00000 n 
-0002384000 00000 n 
-0002384061 00000 n 
-0002384122 00000 n 
-0002384185 00000 n 
-0002384246 00000 n 
-0002384307 00000 n 
-0002384368 00000 n 
-0002384429 00000 n 
-0002384490 00000 n 
-0002384551 00000 n 
-0002384612 00000 n 
-0002384672 00000 n 
-0002384733 00000 n 
-0002384794 00000 n 
-0002384857 00000 n 
-0002384920 00000 n 
-0002384981 00000 n 
-0002385042 00000 n 
-0002385104 00000 n 
-0002385165 00000 n 
-0002385228 00000 n 
-0002385291 00000 n 
-0002385352 00000 n 
-0002385413 00000 n 
-0002385476 00000 n 
-0002385537 00000 n 
-0002391962 00000 n 
-0002390021 00000 n 
-0002390175 00000 n 
-0002393079 00000 n 
-0002389868 00000 n 
-0002385790 00000 n 
-0002390327 00000 n 
-0002390390 00000 n 
-0002390453 00000 n 
-0002390516 00000 n 
-0002390579 00000 n 
-0002390641 00000 n 
-0002390704 00000 n 
-0002390767 00000 n 
-0002390830 00000 n 
-0002390893 00000 n 
-0002390956 00000 n 
-0002391019 00000 n 
-0002391082 00000 n 
-0002391145 00000 n 
-0002391207 00000 n 
-0002391270 00000 n 
-0002391333 00000 n 
-0002391396 00000 n 
-0002391459 00000 n 
-0002391522 00000 n 
-0002391648 00000 n 
-0002391711 00000 n 
-0002391774 00000 n 
-0002391837 00000 n 
-0002391900 00000 n 
-0002392148 00000 n 
-0002392211 00000 n 
-0002392274 00000 n 
-0002392337 00000 n 
-0002392400 00000 n 
-0002392461 00000 n 
-0002392524 00000 n 
-0002392586 00000 n 
-0002392646 00000 n 
-0002392707 00000 n 
-0002392770 00000 n 
-0002392833 00000 n 
-0002392894 00000 n 
-0002392955 00000 n 
-0002393017 00000 n 
-0002397275 00000 n 
-0002398219 00000 n 
-0002398406 00000 n 
-0002396528 00000 n 
-0002393236 00000 n 
-0002396651 00000 n 
-0002396714 00000 n 
-0002396777 00000 n 
-0002396838 00000 n 
-0002396901 00000 n 
-0002396963 00000 n 
-0002397024 00000 n 
-0002397086 00000 n 
-0002397149 00000 n 
-0002397212 00000 n 
-0002397338 00000 n 
-0002397401 00000 n 
-0002397464 00000 n 
-0002397527 00000 n 
-0002397590 00000 n 
-0002397653 00000 n 
-0002397716 00000 n 
-0002397778 00000 n 
-0002397841 00000 n 
-0002397904 00000 n 
-0002397967 00000 n 
-0002398030 00000 n 
-0002398093 00000 n 
-0002398156 00000 n 
-0002401389 00000 n 
-0002401203 00000 n 
-0002398536 00000 n 
-0002401326 00000 n 
-0003970495 00000 n 
-0002404692 00000 n 
-0002405238 00000 n 
-0002404548 00000 n 
-0002401520 00000 n 
-0002404926 00000 n 
-0002405051 00000 n 
-0002409576 00000 n 
-0002409081 00000 n 
-0002405368 00000 n 
-0002409204 00000 n 
-0002409330 00000 n 
-0002413392 00000 n 
-0002413541 00000 n 
-0002413945 00000 n 
-0002413236 00000 n 
-0002409720 00000 n 
-0002413691 00000 n 
-0003236431 00000 n 
-0002418246 00000 n 
-0002420019 00000 n 
-0002418098 00000 n 
-0002414090 00000 n 
-0002418400 00000 n 
-0002418465 00000 n 
-0002418530 00000 n 
-0002418595 00000 n 
-0002418660 00000 n 
-0002418725 00000 n 
-0002418790 00000 n 
-0002418854 00000 n 
-0002418919 00000 n 
-0002418984 00000 n 
-0002419049 00000 n 
-0002419114 00000 n 
-0002419179 00000 n 
-0002419244 00000 n 
-0002419309 00000 n 
-0002419374 00000 n 
-0002419438 00000 n 
-0002419503 00000 n 
-0002419568 00000 n 
-0002419633 00000 n 
-0002419698 00000 n 
-0002419763 00000 n 
-0002419828 00000 n 
-0003224569 00000 n 
-0002424218 00000 n 
-0002423713 00000 n 
-0002420150 00000 n 
-0002423839 00000 n 
-0002427972 00000 n 
-0002427199 00000 n 
-0002424349 00000 n 
-0002427326 00000 n 
-0002427391 00000 n 
-0002427456 00000 n 
-0002427521 00000 n 
-0002427586 00000 n 
-0002427651 00000 n 
-0002427716 00000 n 
-0002427779 00000 n 
-0002427844 00000 n 
-0003970624 00000 n 
-0002431347 00000 n 
-0002431529 00000 n 
-0002431714 00000 n 
-0002432080 00000 n 
-0002431178 00000 n 
-0002428117 00000 n 
-0002431890 00000 n 
-0002434312 00000 n 
-0002434629 00000 n 
-0002434163 00000 n 
-0002432197 00000 n 
-0002434501 00000 n 
-0002468202 00000 n 
-0002436332 00000 n 
-0002469060 00000 n 
-0002436183 00000 n 
-0002434732 00000 n 
-0002468355 00000 n 
-0002468673 00000 n 
-0002468738 00000 n 
-0002468803 00000 n 
-0002468867 00000 n 
-0002468996 00000 n 
-0002513194 00000 n 
-0002470509 00000 n 
-0002513347 00000 n 
-0002500361 00000 n 
-0002513500 00000 n 
-0002516493 00000 n 
-0002514298 00000 n 
-0002470340 00000 n 
-0002469202 00000 n 
-0002513649 00000 n 
-0002513714 00000 n 
-0002513779 00000 n 
-0002513909 00000 n 
-0002513973 00000 n 
-0002514038 00000 n 
-0002514168 00000 n 
-0002514233 00000 n 
-0002549676 00000 n 
-0002549176 00000 n 
-0002529456 00000 n 
-0002549329 00000 n 
-0002550066 00000 n 
-0002516334 00000 n 
-0002514442 00000 n 
-0002549481 00000 n 
-0002549546 00000 n 
-0002549741 00000 n 
-0002549806 00000 n 
-0002549936 00000 n 
-0002550001 00000 n 
-0002555470 00000 n 
-0002553789 00000 n 
-0002550210 00000 n 
-0002553916 00000 n 
-0002554044 00000 n 
-0002554109 00000 n 
-0002554174 00000 n 
-0002554239 00000 n 
-0002554304 00000 n 
-0002554369 00000 n 
-0002554434 00000 n 
-0002554499 00000 n 
-0002554564 00000 n 
-0002554629 00000 n 
-0002554694 00000 n 
-0002554759 00000 n 
-0002554820 00000 n 
-0002554885 00000 n 
-0002554950 00000 n 
-0002555015 00000 n 
-0002555080 00000 n 
-0002555145 00000 n 
-0002555210 00000 n 
-0002555275 00000 n 
-0002555340 00000 n 
-0002555405 00000 n 
-0003970757 00000 n 
-0002561420 00000 n 
-0002558116 00000 n 
-0002555601 00000 n 
-0002558243 00000 n 
-0002558308 00000 n 
-0002558373 00000 n 
-0002558438 00000 n 
-0002558503 00000 n 
-0002558568 00000 n 
-0002558633 00000 n 
-0002558698 00000 n 
-0002558763 00000 n 
-0002558827 00000 n 
-0002558892 00000 n 
-0002558957 00000 n 
-0002559084 00000 n 
-0002559149 00000 n 
-0002559214 00000 n 
-0002559279 00000 n 
-0002559344 00000 n 
-0002559409 00000 n 
-0002559474 00000 n 
-0002559538 00000 n 
-0002559603 00000 n 
-0002559668 00000 n 
-0002559733 00000 n 
-0002559798 00000 n 
-0002559863 00000 n 
-0002559928 00000 n 
-0002559993 00000 n 
-0002560058 00000 n 
-0002560122 00000 n 
-0002560187 00000 n 
-0002560252 00000 n 
-0002560317 00000 n 
-0002560382 00000 n 
-0002560447 00000 n 
-0002560512 00000 n 
-0002560577 00000 n 
-0002560642 00000 n 
-0002560706 00000 n 
-0002560771 00000 n 
-0002560836 00000 n 
-0002560901 00000 n 
-0002560966 00000 n 
-0002561031 00000 n 
-0002561096 00000 n 
-0002561161 00000 n 
-0002561226 00000 n 
-0002561290 00000 n 
-0002561355 00000 n 
-0002568259 00000 n 
-0002565020 00000 n 
-0002561551 00000 n 
-0002565147 00000 n 
-0002565212 00000 n 
-0002565277 00000 n 
-0002565341 00000 n 
-0002565406 00000 n 
-0002565471 00000 n 
-0002565536 00000 n 
-0002565601 00000 n 
-0002565666 00000 n 
-0002565731 00000 n 
-0002565796 00000 n 
-0002565861 00000 n 
-0002565925 00000 n 
-0002565990 00000 n 
-0002566055 00000 n 
-0002566120 00000 n 
-0002566185 00000 n 
-0002566250 00000 n 
-0002566315 00000 n 
-0002566380 00000 n 
-0002566445 00000 n 
-0002566509 00000 n 
-0002566574 00000 n 
-0002566639 00000 n 
-0002566704 00000 n 
-0002566769 00000 n 
-0002566834 00000 n 
-0002566899 00000 n 
-0002566964 00000 n 
-0002567029 00000 n 
-0002567092 00000 n 
-0002567157 00000 n 
-0002567222 00000 n 
-0002567287 00000 n 
-0002567352 00000 n 
-0002567417 00000 n 
-0002567482 00000 n 
-0002567547 00000 n 
-0002567612 00000 n 
-0002567676 00000 n 
-0002567741 00000 n 
-0002567806 00000 n 
-0002567871 00000 n 
-0002567936 00000 n 
-0002568001 00000 n 
-0002568066 00000 n 
-0002568131 00000 n 
-0002568195 00000 n 
-0002571351 00000 n 
-0002571502 00000 n 
-0002571658 00000 n 
-0002571811 00000 n 
-0002573903 00000 n 
-0002571172 00000 n 
-0002568390 00000 n 
-0002571963 00000 n 
-0002572154 00000 n 
-0002572219 00000 n 
-0002572284 00000 n 
-0002572348 00000 n 
-0002572413 00000 n 
-0002572478 00000 n 
-0002572543 00000 n 
-0002572608 00000 n 
-0002572673 00000 n 
-0002572738 00000 n 
-0002572803 00000 n 
-0002572868 00000 n 
-0002573060 00000 n 
-0002573125 00000 n 
-0002573190 00000 n 
-0002573255 00000 n 
-0002573320 00000 n 
-0002573384 00000 n 
-0002573449 00000 n 
-0002573514 00000 n 
-0002573579 00000 n 
-0002573644 00000 n 
-0002573709 00000 n 
-0002573774 00000 n 
-0002576996 00000 n 
-0002580451 00000 n 
-0002576847 00000 n 
-0002574034 00000 n 
-0002577148 00000 n 
-0002577213 00000 n 
-0002577278 00000 n 
-0002577343 00000 n 
-0002577408 00000 n 
-0002577473 00000 n 
-0002577538 00000 n 
-0002577603 00000 n 
-0002577668 00000 n 
-0002577732 00000 n 
-0002577797 00000 n 
-0002577862 00000 n 
-0002577927 00000 n 
-0002577992 00000 n 
-0002578057 00000 n 
-0002578122 00000 n 
-0002578187 00000 n 
-0002578252 00000 n 
-0002578316 00000 n 
-0002578381 00000 n 
-0002578446 00000 n 
-0002578511 00000 n 
-0002578576 00000 n 
-0002578641 00000 n 
-0002578706 00000 n 
-0002578771 00000 n 
-0002578836 00000 n 
-0002578900 00000 n 
-0002578965 00000 n 
-0002579030 00000 n 
-0002579095 00000 n 
-0002579160 00000 n 
-0002579225 00000 n 
-0002579290 00000 n 
-0002579355 00000 n 
-0002579420 00000 n 
-0002579484 00000 n 
-0002579549 00000 n 
-0002579614 00000 n 
-0002579679 00000 n 
-0002579744 00000 n 
-0002579809 00000 n 
-0002579874 00000 n 
-0002579939 00000 n 
-0002580004 00000 n 
-0002580068 00000 n 
-0002580133 00000 n 
-0002584078 00000 n 
-0002584241 00000 n 
-0002584404 00000 n 
-0002584567 00000 n 
-0002584727 00000 n 
-0002587856 00000 n 
-0002583889 00000 n 
-0002580582 00000 n 
-0002584887 00000 n 
-0002585015 00000 n 
-0002585080 00000 n 
-0002585144 00000 n 
-0002585207 00000 n 
-0002585269 00000 n 
-0002585332 00000 n 
-0002585397 00000 n 
-0002585462 00000 n 
-0002585527 00000 n 
-0002585592 00000 n 
-0002585655 00000 n 
-0002585718 00000 n 
-0002585781 00000 n 
-0002585843 00000 n 
-0002585906 00000 n 
-0002585969 00000 n 
-0002586032 00000 n 
-0002586095 00000 n 
-0002586158 00000 n 
-0002586221 00000 n 
-0002586284 00000 n 
-0002586347 00000 n 
-0002586410 00000 n 
-0002586472 00000 n 
-0002586535 00000 n 
-0002586598 00000 n 
-0002586661 00000 n 
-0002586724 00000 n 
-0002586787 00000 n 
-0002586850 00000 n 
-0002586913 00000 n 
-0002586976 00000 n 
-0002587038 00000 n 
-0002587101 00000 n 
-0002587164 00000 n 
-0002587227 00000 n 
-0002587290 00000 n 
-0002587353 00000 n 
-0002587416 00000 n 
-0002587479 00000 n 
-0002587542 00000 n 
-0002587604 00000 n 
-0002587667 00000 n 
-0002587730 00000 n 
-0002587793 00000 n 
-0002603238 00000 n 
-0002608311 00000 n 
-0002613337 00000 n 
-0002618512 00000 n 
-0002623724 00000 n 
-0002594666 00000 n 
-0002590879 00000 n 
-0002587973 00000 n 
-0002591006 00000 n 
-0002591071 00000 n 
-0002591136 00000 n 
-0002591199 00000 n 
-0002591262 00000 n 
-0002591325 00000 n 
-0002591388 00000 n 
-0002591451 00000 n 
-0002591514 00000 n 
-0002591576 00000 n 
-0002591639 00000 n 
-0002591702 00000 n 
-0002591765 00000 n 
-0002591828 00000 n 
-0002591892 00000 n 
-0002591955 00000 n 
-0002592017 00000 n 
-0002592080 00000 n 
-0002592143 00000 n 
-0002592206 00000 n 
-0002592269 00000 n 
-0002592332 00000 n 
-0002592395 00000 n 
-0002592458 00000 n 
-0002592521 00000 n 
-0002592583 00000 n 
-0002592646 00000 n 
-0002592709 00000 n 
-0002592772 00000 n 
-0002592835 00000 n 
-0002592898 00000 n 
-0002592961 00000 n 
-0002593024 00000 n 
-0002593087 00000 n 
-0002593149 00000 n 
-0002593212 00000 n 
-0002593275 00000 n 
-0002593338 00000 n 
-0002593401 00000 n 
-0002593464 00000 n 
-0002593527 00000 n 
-0002593590 00000 n 
-0002593653 00000 n 
-0002593715 00000 n 
-0002593778 00000 n 
-0002593841 00000 n 
-0002593904 00000 n 
-0002593969 00000 n 
-0002594034 00000 n 
-0002594097 00000 n 
-0002594162 00000 n 
-0002594227 00000 n 
-0002594290 00000 n 
-0002594353 00000 n 
-0002594416 00000 n 
-0002594479 00000 n 
-0002594541 00000 n 
-0002594604 00000 n 
-0003970890 00000 n 
-0002598188 00000 n 
-0002596298 00000 n 
-0002594769 00000 n 
-0002596425 00000 n 
-0002596490 00000 n 
-0002596553 00000 n 
-0002596616 00000 n 
-0002596679 00000 n 
-0002596742 00000 n 
-0002596805 00000 n 
-0002596867 00000 n 
-0002596930 00000 n 
-0002596993 00000 n 
-0002597056 00000 n 
-0002597119 00000 n 
-0002597182 00000 n 
-0002597245 00000 n 
-0002597308 00000 n 
-0002597371 00000 n 
-0002597433 00000 n 
-0002597496 00000 n 
-0002597559 00000 n 
-0002597622 00000 n 
-0002597685 00000 n 
-0002597748 00000 n 
-0002597811 00000 n 
-0002597874 00000 n 
-0002597937 00000 n 
-0002597999 00000 n 
-0002598062 00000 n 
-0002598125 00000 n 
-0002603303 00000 n 
-0002600320 00000 n 
-0002598291 00000 n 
-0002600447 00000 n 
-0002600512 00000 n 
-0002600577 00000 n 
-0002600642 00000 n 
-0002600707 00000 n 
-0002600772 00000 n 
-0002600837 00000 n 
-0002600902 00000 n 
-0002600967 00000 n 
-0002601032 00000 n 
-0002601097 00000 n 
-0002601162 00000 n 
-0002601227 00000 n 
-0002601291 00000 n 
-0002601356 00000 n 
-0002601421 00000 n 
-0002601486 00000 n 
-0002601551 00000 n 
-0002601616 00000 n 
-0002601681 00000 n 
-0002601746 00000 n 
-0002601811 00000 n 
-0002601875 00000 n 
-0002601940 00000 n 
-0002602005 00000 n 
-0002602070 00000 n 
-0002602135 00000 n 
-0002602200 00000 n 
-0002602265 00000 n 
-0002602330 00000 n 
-0002602395 00000 n 
-0002602459 00000 n 
-0002602524 00000 n 
-0002602589 00000 n 
-0002602654 00000 n 
-0002602719 00000 n 
-0002602784 00000 n 
-0002602849 00000 n 
-0002602914 00000 n 
-0002602979 00000 n 
-0002603043 00000 n 
-0002603108 00000 n 
-0002603173 00000 n 
-0002608376 00000 n 
-0002605458 00000 n 
-0002603420 00000 n 
-0002605585 00000 n 
-0002605650 00000 n 
-0002605715 00000 n 
-0002605780 00000 n 
-0002605845 00000 n 
-0002605910 00000 n 
-0002605975 00000 n 
-0002606040 00000 n 
-0002606105 00000 n 
-0002606170 00000 n 
-0002606235 00000 n 
-0002606300 00000 n 
-0002606365 00000 n 
-0002606429 00000 n 
-0002606494 00000 n 
-0002606559 00000 n 
-0002606624 00000 n 
-0002606689 00000 n 
-0002606754 00000 n 
-0002606819 00000 n 
-0002606884 00000 n 
-0002606949 00000 n 
-0002607013 00000 n 
-0002607078 00000 n 
-0002607143 00000 n 
-0002607208 00000 n 
-0002607273 00000 n 
-0002607338 00000 n 
-0002607403 00000 n 
-0002607468 00000 n 
-0002607533 00000 n 
-0002607597 00000 n 
-0002607662 00000 n 
-0002607727 00000 n 
-0002607792 00000 n 
-0002607857 00000 n 
-0002607922 00000 n 
-0002607987 00000 n 
-0002608052 00000 n 
-0002608117 00000 n 
-0002608181 00000 n 
-0002608246 00000 n 
-0002613402 00000 n 
-0002610678 00000 n 
-0002608493 00000 n 
-0002610805 00000 n 
-0002610870 00000 n 
-0002610935 00000 n 
-0002611000 00000 n 
-0002611065 00000 n 
-0002611130 00000 n 
-0002611195 00000 n 
-0002611260 00000 n 
-0002611325 00000 n 
-0002611390 00000 n 
-0002611455 00000 n 
-0002611520 00000 n 
-0002611585 00000 n 
-0002611649 00000 n 
-0002611714 00000 n 
-0002611779 00000 n 
-0002611844 00000 n 
-0002611909 00000 n 
-0002611974 00000 n 
-0002612039 00000 n 
-0002612104 00000 n 
-0002612169 00000 n 
-0002612233 00000 n 
-0002612298 00000 n 
-0002612363 00000 n 
-0002612428 00000 n 
-0002612493 00000 n 
-0002612558 00000 n 
-0002612623 00000 n 
-0002612688 00000 n 
-0002612753 00000 n 
-0002612817 00000 n 
-0002612882 00000 n 
-0002612947 00000 n 
-0002613012 00000 n 
-0002613077 00000 n 
-0002613142 00000 n 
-0002613207 00000 n 
-0002613272 00000 n 
-0002618577 00000 n 
-0002615399 00000 n 
-0002613519 00000 n 
-0002615526 00000 n 
-0002615591 00000 n 
-0002615656 00000 n 
-0002615721 00000 n 
-0002615786 00000 n 
-0002615851 00000 n 
-0002615916 00000 n 
-0002615981 00000 n 
-0002616046 00000 n 
-0002616111 00000 n 
-0002616176 00000 n 
-0002616241 00000 n 
-0002616306 00000 n 
-0002616370 00000 n 
-0002616435 00000 n 
-0002616500 00000 n 
-0002616565 00000 n 
-0002616630 00000 n 
-0002616695 00000 n 
-0002616760 00000 n 
-0002616825 00000 n 
-0002616890 00000 n 
-0002616954 00000 n 
-0002617019 00000 n 
-0002617084 00000 n 
-0002617149 00000 n 
-0002617214 00000 n 
-0002617279 00000 n 
-0002617344 00000 n 
-0002617409 00000 n 
-0002617474 00000 n 
-0002617538 00000 n 
-0002617603 00000 n 
-0002617668 00000 n 
-0002617733 00000 n 
-0002617798 00000 n 
-0002617863 00000 n 
-0002617928 00000 n 
-0002617993 00000 n 
-0002618058 00000 n 
-0002618122 00000 n 
-0002618187 00000 n 
-0002618252 00000 n 
-0002618317 00000 n 
-0002618382 00000 n 
-0002618447 00000 n 
-0002621292 00000 n 
-0002621478 00000 n 
-0002623852 00000 n 
-0002621133 00000 n 
-0002618694 00000 n 
-0002621647 00000 n 
-0002621712 00000 n 
-0002621777 00000 n 
-0002621842 00000 n 
-0002621907 00000 n 
-0002621972 00000 n 
-0002622037 00000 n 
-0002622102 00000 n 
-0002622167 00000 n 
-0002622232 00000 n 
-0002622297 00000 n 
-0002622362 00000 n 
-0002622427 00000 n 
-0002622491 00000 n 
-0002622556 00000 n 
-0002622621 00000 n 
-0002622686 00000 n 
-0002622751 00000 n 
-0002622816 00000 n 
-0002622881 00000 n 
-0002622946 00000 n 
-0002623011 00000 n 
-0002623075 00000 n 
-0002623140 00000 n 
-0002623205 00000 n 
-0002623270 00000 n 
-0002623335 00000 n 
-0002623400 00000 n 
-0002623465 00000 n 
-0002623530 00000 n 
-0002623595 00000 n 
-0002623659 00000 n 
-0003971023 00000 n 
-0002627188 00000 n 
-0002627339 00000 n 
-0002627509 00000 n 
-0002627661 00000 n 
-0002630424 00000 n 
-0002629094 00000 n 
-0002627009 00000 n 
-0002623983 00000 n 
-0002627814 00000 n 
-0002627879 00000 n 
-0002627944 00000 n 
-0002628009 00000 n 
-0002628072 00000 n 
-0002628137 00000 n 
-0002628200 00000 n 
-0002628265 00000 n 
-0002628330 00000 n 
-0002628395 00000 n 
-0002628458 00000 n 
-0002628521 00000 n 
-0002628584 00000 n 
-0002628647 00000 n 
-0002628710 00000 n 
-0002628775 00000 n 
-0002628840 00000 n 
-0002628903 00000 n 
-0002628966 00000 n 
-0002629029 00000 n 
-0003120569 00000 n 
-0003124863 00000 n 
-0002708339 00000 n 
-0002708056 00000 n 
-0002709980 00000 n 
-0002708404 00000 n 
-0002630275 00000 n 
-0002629211 00000 n 
-0002708210 00000 n 
-0002707123 00000 n 
-0002784048 00000 n 
-0002783766 00000 n 
-0002785127 00000 n 
-0002784113 00000 n 
-0002709831 00000 n 
-0002708532 00000 n 
-0002783919 00000 n 
-0002877689 00000 n 
-0002877248 00000 n 
-0002877402 00000 n 
-0002878823 00000 n 
-0002963185 00000 n 
-0002877754 00000 n 
-0002784968 00000 n 
-0002784241 00000 n 
-0002877560 00000 n 
-0002876240 00000 n 
-0003038958 00000 n 
-0003039087 00000 n 
-0003038676 00000 n 
-0003041184 00000 n 
-0003039152 00000 n 
-0002878674 00000 n 
-0002877882 00000 n 
-0003038829 00000 n 
-0002962329 00000 n 
-0003037929 00000 n 
-0003120051 00000 n 
-0003120634 00000 n 
-0003041057 00000 n 
-0003039296 00000 n 
-0003119922 00000 n 
-0003120116 00000 n 
-0003120181 00000 n 
-0003120246 00000 n 
-0003120311 00000 n 
-0003120374 00000 n 
-0003120439 00000 n 
-0003120504 00000 n 
-0003971156 00000 n 
-0003119195 00000 n 
-0003123021 00000 n 
-0003127532 00000 n 
-0003124992 00000 n 
-0003122872 00000 n 
-0003120790 00000 n 
-0003123175 00000 n 
-0003123240 00000 n 
-0003123305 00000 n 
-0003123370 00000 n 
-0003123435 00000 n 
-0003123500 00000 n 
-0003123565 00000 n 
-0003123630 00000 n 
-0003123695 00000 n 
-0003123759 00000 n 
-0003123824 00000 n 
-0003123889 00000 n 
-0003123954 00000 n 
-0003124019 00000 n 
-0003124084 00000 n 
-0003124149 00000 n 
-0003124214 00000 n 
-0003124279 00000 n 
-0003124343 00000 n 
-0003124408 00000 n 
-0003124473 00000 n 
-0003124538 00000 n 
-0003124603 00000 n 
-0003124668 00000 n 
-0003124733 00000 n 
-0003124798 00000 n 
-0003219199 00000 n 
-0003218705 00000 n 
-0003218882 00000 n 
-0003219652 00000 n 
-0003127373 00000 n 
-0003125123 00000 n 
-0003219070 00000 n 
-0003219392 00000 n 
-0003219457 00000 n 
-0003219522 00000 n 
-0003219587 00000 n 
-0003224634 00000 n 
-0003222688 00000 n 
-0003219822 00000 n 
-0003222815 00000 n 
-0003222880 00000 n 
-0003222945 00000 n 
-0003223010 00000 n 
-0003223075 00000 n 
-0003223140 00000 n 
-0003223205 00000 n 
-0003223270 00000 n 
-0003223335 00000 n 
-0003223400 00000 n 
-0003223465 00000 n 
-0003223530 00000 n 
-0003223595 00000 n 
-0003223660 00000 n 
-0003223725 00000 n 
-0003223790 00000 n 
-0003223855 00000 n 
-0003223920 00000 n 
-0003223985 00000 n 
-0003224050 00000 n 
-0003224115 00000 n 
-0003224180 00000 n 
-0003224245 00000 n 
-0003224310 00000 n 
-0003224375 00000 n 
-0003224440 00000 n 
-0003228323 00000 n 
-0003228530 00000 n 
-0003228736 00000 n 
-0003229635 00000 n 
-0003228154 00000 n 
-0003224751 00000 n 
-0003228926 00000 n 
-0003229181 00000 n 
-0003229246 00000 n 
-0003229311 00000 n 
-0003229376 00000 n 
-0003229440 00000 n 
-0003229505 00000 n 
-0003229570 00000 n 
-0003232282 00000 n 
-0003231181 00000 n 
-0003229766 00000 n 
-0003231308 00000 n 
-0003231373 00000 n 
-0003231438 00000 n 
-0003231503 00000 n 
-0003231568 00000 n 
-0003231633 00000 n 
-0003231698 00000 n 
-0003231763 00000 n 
-0003231828 00000 n 
-0003231893 00000 n 
-0003231958 00000 n 
-0003232023 00000 n 
-0003232088 00000 n 
-0003232153 00000 n 
-0003232218 00000 n 
-0003235789 00000 n 
-0003235963 00000 n 
-0003236151 00000 n 
-0003239943 00000 n 
-0003236560 00000 n 
-0003235620 00000 n 
-0003232385 00000 n 
-0003236302 00000 n 
-0003971289 00000 n 
-0003410535 00000 n 
-0003240611 00000 n 
-0003239794 00000 n 
-0003236677 00000 n 
-0003240094 00000 n 
-0003240287 00000 n 
-0003240352 00000 n 
-0003240417 00000 n 
-0003240482 00000 n 
-0003410727 00000 n 
-0003243138 00000 n 
-0003243296 00000 n 
-0003243449 00000 n 
-0003245180 00000 n 
-0003275344 00000 n 
-0003244377 00000 n 
-0003242969 00000 n 
-0003240756 00000 n 
-0003243599 00000 n 
-0003243728 00000 n 
-0003243793 00000 n 
-0003243858 00000 n 
-0003243923 00000 n 
-0003243988 00000 n 
-0003244053 00000 n 
-0003244118 00000 n 
-0003244183 00000 n 
-0003244248 00000 n 
-0003300621 00000 n 
-0003273158 00000 n 
-0003300493 00000 n 
-0003273223 00000 n 
-0003245053 00000 n 
-0003244522 00000 n 
-0003273029 00000 n 
-0003300209 00000 n 
-0003300945 00000 n 
-0003275195 00000 n 
-0003273351 00000 n 
-0003300364 00000 n 
-0003300686 00000 n 
-0003300751 00000 n 
-0003300816 00000 n 
-0003300881 00000 n 
-0003305030 00000 n 
-0003304591 00000 n 
-0003304744 00000 n 
-0003307488 00000 n 
-0003305483 00000 n 
-0003304432 00000 n 
-0003301115 00000 n 
-0003304901 00000 n 
-0003305095 00000 n 
-0003305160 00000 n 
-0003305225 00000 n 
-0003305290 00000 n 
-0003305355 00000 n 
-0003330764 00000 n 
-0003330893 00000 n 
-0003330957 00000 n 
-0003307361 00000 n 
-0003305600 00000 n 
-0003330635 00000 n 
-0003971422 00000 n 
-0003334691 00000 n 
-0003336935 00000 n 
-0003335688 00000 n 
-0003334542 00000 n 
-0003331099 00000 n 
-0003334847 00000 n 
-0003334976 00000 n 
-0003335041 00000 n 
-0003335105 00000 n 
-0003335170 00000 n 
-0003335235 00000 n 
-0003335300 00000 n 
-0003335365 00000 n 
-0003335430 00000 n 
-0003335495 00000 n 
-0003335559 00000 n 
-0003351547 00000 n 
-0003351262 00000 n 
-0003353888 00000 n 
-0003351612 00000 n 
-0003336786 00000 n 
-0003335847 00000 n 
-0003351418 00000 n 
-0003368726 00000 n 
-0003369244 00000 n 
-0003353761 00000 n 
-0003351754 00000 n 
-0003368597 00000 n 
-0003368855 00000 n 
-0003368920 00000 n 
-0003368985 00000 n 
-0003369050 00000 n 
-0003369115 00000 n 
-0003369180 00000 n 
-0003372207 00000 n 
-0003372359 00000 n 
-0003374084 00000 n 
-0003391101 00000 n 
-0003373289 00000 n 
-0003372048 00000 n 
-0003369428 00000 n 
-0003372511 00000 n 
-0003372576 00000 n 
-0003372641 00000 n 
-0003372705 00000 n 
-0003372770 00000 n 
-0003372835 00000 n 
-0003372900 00000 n 
-0003372965 00000 n 
-0003373030 00000 n 
-0003373095 00000 n 
-0003373159 00000 n 
-0003373224 00000 n 
-0003389008 00000 n 
-0003406880 00000 n 
-0003389073 00000 n 
-0003373957 00000 n 
-0003373420 00000 n 
-0003388879 00000 n 
-0003407073 00000 n 
-0003390974 00000 n 
-0003389201 00000 n 
-0003406751 00000 n 
-0003971555 00000 n 
-0003410196 00000 n 
-0003410792 00000 n 
-0003410047 00000 n 
-0003407229 00000 n 
-0003410406 00000 n 
-0003414756 00000 n 
-0003414564 00000 n 
-0003410937 00000 n 
-0003414691 00000 n 
-0003417821 00000 n 
-0003418114 00000 n 
-0003417672 00000 n 
-0003414915 00000 n 
-0003417985 00000 n 
-0003421933 00000 n 
-0003421741 00000 n 
-0003418217 00000 n 
-0003421868 00000 n 
-0003425496 00000 n 
-0003425174 00000 n 
-0003422036 00000 n 
-0003425301 00000 n 
-0003425366 00000 n 
-0003425431 00000 n 
-0003430177 00000 n 
-0003429530 00000 n 
-0003425599 00000 n 
-0003429657 00000 n 
-0003429722 00000 n 
-0003429787 00000 n 
-0003429852 00000 n 
-0003429917 00000 n 
-0003429982 00000 n 
-0003430047 00000 n 
-0003430112 00000 n 
-0003971688 00000 n 
-0003434550 00000 n 
-0003433968 00000 n 
-0003430280 00000 n 
-0003434095 00000 n 
-0003434160 00000 n 
-0003434225 00000 n 
-0003434290 00000 n 
-0003434355 00000 n 
-0003434420 00000 n 
-0003434485 00000 n 
-0003438149 00000 n 
-0003437957 00000 n 
-0003434653 00000 n 
-0003438084 00000 n 
-0003442353 00000 n 
-0003442161 00000 n 
-0003438252 00000 n 
-0003442288 00000 n 
-0003446466 00000 n 
-0003445821 00000 n 
-0003442456 00000 n 
-0003445948 00000 n 
-0003446013 00000 n 
-0003446078 00000 n 
-0003446143 00000 n 
-0003446208 00000 n 
-0003446273 00000 n 
-0003446337 00000 n 
-0003446402 00000 n 
-0003449133 00000 n 
-0003449483 00000 n 
-0003450849 00000 n 
-0003448954 00000 n 
-0003446583 00000 n 
-0003449876 00000 n 
-0003449941 00000 n 
-0003450006 00000 n 
-0003450071 00000 n 
-0003450136 00000 n 
-0003450201 00000 n 
-0003450266 00000 n 
-0003450330 00000 n 
-0003450395 00000 n 
-0003450460 00000 n 
-0003450525 00000 n 
-0003450590 00000 n 
-0003450655 00000 n 
-0003450719 00000 n 
-0003450784 00000 n 
-0003449311 00000 n 
-0003449680 00000 n 
-0003453748 00000 n 
-0003454049 00000 n 
-0003453599 00000 n 
-0003450952 00000 n 
-0003453920 00000 n 
-0003971821 00000 n 
-0003458049 00000 n 
-0003457857 00000 n 
-0003454180 00000 n 
-0003457984 00000 n 
-0003459421 00000 n 
-0003459659 00000 n 
-0003459272 00000 n 
-0003458166 00000 n 
-0003459594 00000 n 
-0003463364 00000 n 
-0003463514 00000 n 
-0003463665 00000 n 
-0003463817 00000 n 
-0003463967 00000 n 
-0003464119 00000 n 
-0003464271 00000 n 
-0003464422 00000 n 
-0003464574 00000 n 
-0003464726 00000 n 
-0003464878 00000 n 
-0003465030 00000 n 
-0003465182 00000 n 
-0003465335 00000 n 
-0003465488 00000 n 
-0003465641 00000 n 
-0003465790 00000 n 
-0003465942 00000 n 
-0003466094 00000 n 
-0003466246 00000 n 
-0003466398 00000 n 
-0003466549 00000 n 
-0003466702 00000 n 
-0003466854 00000 n 
-0003467007 00000 n 
-0003467160 00000 n 
-0003467313 00000 n 
-0003467466 00000 n 
-0003467619 00000 n 
-0003467771 00000 n 
-0003467924 00000 n 
-0003468076 00000 n 
-0003468227 00000 n 
-0003468378 00000 n 
-0003468529 00000 n 
-0003468681 00000 n 
-0003468833 00000 n 
-0003468985 00000 n 
-0003469137 00000 n 
-0003469290 00000 n 
-0003469441 00000 n 
-0003469592 00000 n 
-0003469742 00000 n 
-0003469894 00000 n 
-0003470046 00000 n 
-0003470198 00000 n 
-0003470350 00000 n 
-0003470502 00000 n 
-0003470655 00000 n 
-0003470808 00000 n 
-0003470961 00000 n 
-0003471112 00000 n 
-0003471264 00000 n 
-0003471416 00000 n 
-0003471568 00000 n 
-0003471719 00000 n 
-0003471872 00000 n 
-0003472024 00000 n 
-0003472176 00000 n 
-0003472328 00000 n 
-0003472481 00000 n 
-0003472633 00000 n 
-0003472786 00000 n 
-0003472938 00000 n 
-0003473091 00000 n 
-0003473243 00000 n 
-0003473396 00000 n 
-0003473548 00000 n 
-0003473701 00000 n 
-0003473854 00000 n 
-0003474006 00000 n 
-0003474158 00000 n 
-0003474310 00000 n 
-0003474461 00000 n 
-0003474613 00000 n 
-0003474765 00000 n 
-0003474917 00000 n 
-0003475070 00000 n 
-0003475223 00000 n 
-0003475374 00000 n 
-0003475527 00000 n 
-0003475680 00000 n 
-0003475833 00000 n 
-0003475984 00000 n 
-0003476136 00000 n 
-0003476288 00000 n 
-0003476440 00000 n 
-0003476593 00000 n 
-0003476744 00000 n 
-0003476895 00000 n 
-0003477046 00000 n 
-0003477199 00000 n 
-0003477351 00000 n 
-0003477504 00000 n 
-0003477657 00000 n 
-0003477809 00000 n 
-0003477961 00000 n 
-0003478114 00000 n 
-0003478265 00000 n 
-0003478418 00000 n 
-0003478569 00000 n 
-0003478720 00000 n 
-0003478869 00000 n 
-0003479022 00000 n 
-0003479175 00000 n 
-0003479327 00000 n 
-0003479480 00000 n 
-0003479632 00000 n 
-0003479784 00000 n 
-0003479934 00000 n 
-0003480087 00000 n 
-0003480240 00000 n 
-0003480391 00000 n 
-0003480544 00000 n 
-0003480697 00000 n 
-0003480849 00000 n 
-0003481002 00000 n 
-0003481154 00000 n 
-0003481307 00000 n 
-0003481460 00000 n 
-0003481612 00000 n 
-0003481765 00000 n 
-0003481918 00000 n 
-0003482071 00000 n 
-0003482224 00000 n 
-0003482377 00000 n 
-0003482530 00000 n 
-0003482683 00000 n 
-0003482836 00000 n 
-0003482988 00000 n 
-0003483141 00000 n 
-0003483294 00000 n 
-0003483447 00000 n 
-0003483600 00000 n 
-0003483753 00000 n 
-0003483906 00000 n 
-0003484059 00000 n 
-0003484212 00000 n 
-0003484365 00000 n 
-0003484517 00000 n 
-0003484670 00000 n 
-0003484823 00000 n 
-0003484976 00000 n 
-0003485129 00000 n 
-0003485282 00000 n 
-0003485434 00000 n 
-0003485587 00000 n 
-0003485740 00000 n 
-0003485893 00000 n 
-0003486045 00000 n 
-0003486196 00000 n 
-0003486348 00000 n 
-0003486500 00000 n 
-0003486653 00000 n 
-0003486806 00000 n 
-0003486959 00000 n 
-0003487112 00000 n 
-0003487265 00000 n 
-0003487418 00000 n 
-0003487568 00000 n 
-0003487720 00000 n 
-0003487871 00000 n 
-0003488023 00000 n 
-0003488175 00000 n 
-0003488326 00000 n 
-0003488478 00000 n 
-0003488630 00000 n 
-0003492752 00000 n 
-0003488909 00000 n 
-0003461555 00000 n 
-0003459776 00000 n 
-0003488781 00000 n 
-0003492905 00000 n 
-0003493058 00000 n 
-0003493209 00000 n 
-0003493361 00000 n 
-0003493513 00000 n 
-0003493666 00000 n 
-0003493819 00000 n 
-0003493969 00000 n 
-0003494122 00000 n 
-0003494274 00000 n 
-0003494427 00000 n 
-0003494579 00000 n 
-0003494731 00000 n 
-0003494884 00000 n 
-0003495035 00000 n 
-0003495187 00000 n 
-0003495339 00000 n 
-0003495491 00000 n 
-0003495643 00000 n 
-0003495794 00000 n 
-0003495946 00000 n 
-0003496098 00000 n 
-0003496250 00000 n 
-0003496402 00000 n 
-0003496552 00000 n 
-0003496705 00000 n 
-0003496857 00000 n 
-0003497010 00000 n 
-0003497162 00000 n 
-0003497314 00000 n 
-0003497466 00000 n 
-0003497618 00000 n 
-0003497770 00000 n 
-0003497923 00000 n 
-0003498076 00000 n 
-0003498228 00000 n 
-0003498380 00000 n 
-0003498532 00000 n 
-0003498685 00000 n 
-0003498838 00000 n 
-0003498990 00000 n 
-0003499142 00000 n 
-0003499295 00000 n 
-0003499446 00000 n 
-0003499598 00000 n 
-0003499750 00000 n 
-0003499902 00000 n 
-0003500053 00000 n 
-0003500205 00000 n 
-0003500356 00000 n 
-0003500504 00000 n 
-0003500657 00000 n 
-0003500810 00000 n 
-0003500962 00000 n 
-0003501114 00000 n 
-0003501266 00000 n 
-0003501418 00000 n 
-0003501571 00000 n 
-0003501721 00000 n 
-0003501872 00000 n 
-0003502025 00000 n 
-0003502178 00000 n 
-0003502331 00000 n 
-0003502484 00000 n 
-0003502637 00000 n 
-0003502790 00000 n 
-0003502943 00000 n 
-0003503095 00000 n 
-0003503246 00000 n 
-0003503399 00000 n 
-0003503551 00000 n 
-0003503703 00000 n 
-0003503856 00000 n 
-0003504009 00000 n 
-0003504161 00000 n 
-0003504312 00000 n 
-0003504464 00000 n 
-0003504612 00000 n 
-0003504765 00000 n 
-0003504917 00000 n 
-0003505069 00000 n 
-0003505221 00000 n 
-0003505373 00000 n 
-0003505524 00000 n 
-0003505676 00000 n 
-0003505827 00000 n 
-0003505980 00000 n 
-0003506133 00000 n 
-0003506286 00000 n 
-0003506438 00000 n 
-0003506591 00000 n 
-0003506744 00000 n 
-0003506897 00000 n 
-0003507048 00000 n 
-0003507201 00000 n 
-0003507353 00000 n 
-0003507505 00000 n 
-0003507657 00000 n 
-0003507808 00000 n 
-0003507960 00000 n 
-0003508111 00000 n 
-0003508263 00000 n 
-0003508416 00000 n 
-0003508569 00000 n 
-0003508722 00000 n 
-0003508875 00000 n 
-0003509026 00000 n 
-0003509179 00000 n 
-0003509332 00000 n 
-0003509485 00000 n 
-0003509637 00000 n 
-0003509790 00000 n 
-0003509943 00000 n 
-0003510096 00000 n 
-0003510249 00000 n 
-0003510402 00000 n 
-0003510555 00000 n 
-0003510708 00000 n 
-0003510860 00000 n 
-0003511013 00000 n 
-0003511166 00000 n 
-0003511319 00000 n 
-0003511472 00000 n 
-0003511625 00000 n 
-0003511778 00000 n 
-0003511929 00000 n 
-0003512082 00000 n 
-0003512235 00000 n 
-0003512387 00000 n 
-0003512538 00000 n 
-0003512689 00000 n 
-0003512841 00000 n 
-0003512993 00000 n 
-0003513146 00000 n 
-0003513297 00000 n 
-0003513447 00000 n 
-0003513599 00000 n 
-0003513751 00000 n 
-0003513903 00000 n 
-0003514054 00000 n 
-0003514207 00000 n 
-0003514360 00000 n 
-0003514512 00000 n 
-0003514664 00000 n 
-0003514817 00000 n 
-0003514969 00000 n 
-0003515121 00000 n 
-0003515274 00000 n 
-0003515426 00000 n 
-0003515578 00000 n 
-0003515731 00000 n 
-0003515883 00000 n 
-0003516036 00000 n 
-0003516189 00000 n 
-0003516341 00000 n 
-0003516493 00000 n 
-0003520524 00000 n 
-0003516708 00000 n 
-0003491043 00000 n 
-0003489040 00000 n 
-0003516643 00000 n 
-0003520676 00000 n 
-0003520829 00000 n 
-0003520982 00000 n 
-0003521135 00000 n 
-0003521287 00000 n 
-0003521439 00000 n 
-0003521591 00000 n 
-0003521744 00000 n 
-0003521896 00000 n 
-0003522048 00000 n 
-0003522201 00000 n 
-0003522354 00000 n 
-0003522506 00000 n 
-0003522658 00000 n 
-0003522811 00000 n 
-0003522964 00000 n 
-0003523117 00000 n 
-0003523270 00000 n 
-0003523422 00000 n 
-0003523575 00000 n 
-0003523727 00000 n 
-0003523880 00000 n 
-0003524033 00000 n 
-0003524184 00000 n 
-0003524337 00000 n 
-0003524490 00000 n 
-0003524641 00000 n 
-0003524794 00000 n 
-0003524947 00000 n 
-0003525100 00000 n 
-0003525253 00000 n 
-0003525402 00000 n 
-0003525553 00000 n 
-0003525704 00000 n 
-0003525856 00000 n 
-0003526007 00000 n 
-0003526157 00000 n 
-0003526310 00000 n 
-0003526463 00000 n 
-0003526614 00000 n 
-0003526767 00000 n 
-0003526920 00000 n 
-0003527072 00000 n 
-0003527224 00000 n 
-0003527377 00000 n 
-0003527528 00000 n 
-0003527681 00000 n 
-0003527829 00000 n 
-0003527979 00000 n 
-0003528130 00000 n 
-0003528279 00000 n 
-0003528430 00000 n 
-0003528581 00000 n 
-0003528732 00000 n 
-0003528883 00000 n 
-0003529033 00000 n 
-0003529185 00000 n 
-0003529336 00000 n 
-0003529488 00000 n 
-0003529640 00000 n 
-0003529792 00000 n 
-0003529945 00000 n 
-0003530094 00000 n 
-0003530246 00000 n 
-0003530399 00000 n 
-0003530547 00000 n 
-0003530698 00000 n 
-0003530850 00000 n 
-0003531002 00000 n 
-0003531154 00000 n 
-0003531306 00000 n 
-0003531458 00000 n 
-0003531610 00000 n 
-0003531763 00000 n 
-0003531914 00000 n 
-0003532066 00000 n 
-0003532219 00000 n 
-0003532372 00000 n 
-0003532523 00000 n 
-0003532674 00000 n 
-0003532826 00000 n 
-0003532978 00000 n 
-0003533128 00000 n 
-0003533279 00000 n 
-0003533432 00000 n 
-0003533585 00000 n 
-0003533738 00000 n 
-0003533891 00000 n 
-0003534041 00000 n 
-0003534193 00000 n 
-0003534343 00000 n 
-0003534495 00000 n 
-0003534647 00000 n 
-0003534800 00000 n 
-0003534952 00000 n 
-0003535105 00000 n 
-0003535258 00000 n 
-0003535408 00000 n 
-0003535561 00000 n 
-0003535713 00000 n 
-0003535866 00000 n 
-0003536018 00000 n 
-0003536171 00000 n 
-0003536324 00000 n 
-0003536477 00000 n 
-0003536628 00000 n 
-0003536780 00000 n 
-0003536932 00000 n 
-0003537084 00000 n 
-0003537236 00000 n 
-0003537389 00000 n 
-0003537541 00000 n 
-0003537694 00000 n 
-0003537847 00000 n 
-0003537999 00000 n 
-0003538152 00000 n 
-0003538305 00000 n 
-0003538457 00000 n 
-0003538609 00000 n 
-0003538761 00000 n 
-0003538913 00000 n 
-0003539065 00000 n 
-0003539216 00000 n 
-0003539368 00000 n 
-0003539521 00000 n 
-0003539674 00000 n 
-0003539826 00000 n 
-0003539979 00000 n 
-0003540132 00000 n 
-0003540283 00000 n 
-0003540436 00000 n 
-0003540588 00000 n 
-0003540741 00000 n 
-0003540893 00000 n 
-0003541044 00000 n 
-0003541196 00000 n 
-0003541347 00000 n 
-0003541499 00000 n 
-0003541651 00000 n 
-0003541803 00000 n 
-0003541954 00000 n 
-0003542107 00000 n 
-0003542259 00000 n 
-0003542411 00000 n 
-0003542564 00000 n 
-0003542717 00000 n 
-0003542870 00000 n 
-0003543023 00000 n 
-0003543176 00000 n 
-0003543329 00000 n 
-0003543482 00000 n 
-0003543632 00000 n 
-0003543783 00000 n 
-0003543933 00000 n 
-0003544081 00000 n 
-0003544231 00000 n 
-0003544382 00000 n 
-0003544533 00000 n 
-0003544684 00000 n 
-0003548222 00000 n 
-0003544898 00000 n 
-0003518785 00000 n 
-0003516825 00000 n 
-0003544833 00000 n 
-0003548374 00000 n 
-0003548527 00000 n 
-0003548680 00000 n 
-0003548833 00000 n 
-0003548986 00000 n 
-0003549139 00000 n 
-0003549291 00000 n 
-0003549444 00000 n 
-0003549594 00000 n 
-0003549745 00000 n 
-0003549898 00000 n 
-0003550050 00000 n 
-0003550202 00000 n 
-0003550355 00000 n 
-0003550505 00000 n 
-0003550657 00000 n 
-0003550809 00000 n 
-0003550962 00000 n 
-0003551114 00000 n 
-0003551267 00000 n 
-0003551420 00000 n 
-0003551573 00000 n 
-0003551725 00000 n 
-0003551878 00000 n 
-0003552031 00000 n 
-0003552183 00000 n 
-0003552336 00000 n 
-0003552489 00000 n 
-0003552642 00000 n 
-0003552795 00000 n 
-0003552948 00000 n 
-0003553101 00000 n 
-0003553254 00000 n 
-0003553406 00000 n 
-0003553559 00000 n 
-0003553711 00000 n 
-0003553864 00000 n 
-0003554017 00000 n 
-0003554170 00000 n 
-0003554322 00000 n 
-0003554475 00000 n 
-0003554627 00000 n 
-0003554780 00000 n 
-0003554933 00000 n 
-0003555086 00000 n 
-0003555239 00000 n 
-0003555392 00000 n 
-0003555545 00000 n 
-0003555697 00000 n 
-0003555849 00000 n 
-0003556002 00000 n 
-0003556154 00000 n 
-0003556306 00000 n 
-0003556459 00000 n 
-0003556612 00000 n 
-0003556765 00000 n 
-0003556918 00000 n 
-0003557070 00000 n 
-0003557223 00000 n 
-0003557376 00000 n 
-0003557526 00000 n 
-0003557677 00000 n 
-0003557828 00000 n 
-0003557980 00000 n 
-0003558133 00000 n 
-0003558286 00000 n 
-0003558435 00000 n 
-0003558585 00000 n 
-0003558736 00000 n 
-0003558889 00000 n 
-0003559041 00000 n 
-0003559192 00000 n 
-0003559344 00000 n 
-0003559497 00000 n 
-0003559649 00000 n 
-0003559802 00000 n 
-0003559955 00000 n 
-0003560107 00000 n 
-0003560260 00000 n 
-0003560412 00000 n 
-0003560564 00000 n 
-0003560716 00000 n 
-0003560869 00000 n 
-0003561022 00000 n 
-0003561174 00000 n 
-0003561326 00000 n 
-0003561479 00000 n 
-0003561632 00000 n 
-0003561784 00000 n 
-0003561936 00000 n 
-0003562089 00000 n 
-0003562241 00000 n 
-0003562394 00000 n 
-0003562546 00000 n 
-0003562699 00000 n 
-0003562851 00000 n 
-0003563003 00000 n 
-0003563156 00000 n 
-0003563309 00000 n 
-0003563462 00000 n 
-0003563615 00000 n 
-0003563767 00000 n 
-0003563920 00000 n 
-0003564073 00000 n 
-0003564225 00000 n 
-0003564378 00000 n 
-0003564528 00000 n 
-0003564680 00000 n 
-0003564831 00000 n 
-0003564983 00000 n 
-0003565135 00000 n 
-0003565286 00000 n 
-0003565439 00000 n 
-0003565591 00000 n 
-0003565743 00000 n 
-0003565892 00000 n 
-0003566041 00000 n 
-0003566194 00000 n 
-0003566347 00000 n 
-0003566498 00000 n 
-0003566650 00000 n 
-0003566803 00000 n 
-0003566954 00000 n 
-0003567104 00000 n 
-0003567254 00000 n 
-0003571217 00000 n 
-0003567469 00000 n 
-0003546823 00000 n 
-0003545015 00000 n 
-0003567404 00000 n 
-0003971954 00000 n 
-0003571370 00000 n 
-0003571521 00000 n 
-0003571674 00000 n 
-0003571824 00000 n 
-0003571976 00000 n 
-0003572129 00000 n 
-0003572280 00000 n 
-0003572431 00000 n 
-0003572583 00000 n 
-0003572736 00000 n 
-0003572887 00000 n 
-0003573039 00000 n 
-0003573191 00000 n 
-0003573344 00000 n 
-0003573495 00000 n 
-0003573644 00000 n 
-0003573795 00000 n 
-0003573947 00000 n 
-0003574100 00000 n 
-0003574251 00000 n 
-0003574402 00000 n 
-0003574555 00000 n 
-0003574708 00000 n 
-0003574860 00000 n 
-0003575012 00000 n 
-0003575164 00000 n 
-0003575317 00000 n 
-0003575468 00000 n 
-0003575621 00000 n 
-0003575773 00000 n 
-0003575926 00000 n 
-0003576079 00000 n 
-0003576231 00000 n 
-0003576382 00000 n 
-0003576534 00000 n 
-0003576685 00000 n 
-0003576837 00000 n 
-0003576989 00000 n 
-0003577141 00000 n 
-0003577293 00000 n 
-0003577445 00000 n 
-0003577597 00000 n 
-0003577749 00000 n 
-0003577901 00000 n 
-0003578054 00000 n 
-0003578207 00000 n 
-0003578360 00000 n 
-0003578511 00000 n 
-0003578663 00000 n 
-0003578816 00000 n 
-0003578969 00000 n 
-0003579121 00000 n 
-0003579271 00000 n 
-0003579422 00000 n 
-0003579574 00000 n 
-0003579725 00000 n 
-0003579877 00000 n 
-0003580029 00000 n 
-0003580180 00000 n 
-0003580333 00000 n 
-0003580486 00000 n 
-0003580639 00000 n 
-0003580792 00000 n 
-0003580944 00000 n 
-0003581096 00000 n 
-0003581248 00000 n 
-0003581398 00000 n 
-0003581550 00000 n 
-0003581702 00000 n 
-0003581855 00000 n 
-0003582007 00000 n 
-0003582159 00000 n 
-0003582311 00000 n 
-0003582464 00000 n 
-0003582616 00000 n 
-0003582767 00000 n 
-0003582919 00000 n 
-0003583071 00000 n 
-0003583222 00000 n 
-0003583374 00000 n 
-0003583527 00000 n 
-0003583680 00000 n 
-0003583833 00000 n 
-0003583986 00000 n 
-0003584139 00000 n 
-0003584292 00000 n 
-0003584444 00000 n 
-0003584596 00000 n 
-0003584749 00000 n 
-0003584901 00000 n 
-0003585053 00000 n 
-0003585203 00000 n 
-0003585356 00000 n 
-0003585508 00000 n 
-0003585661 00000 n 
-0003585814 00000 n 
-0003585967 00000 n 
-0003586120 00000 n 
-0003586272 00000 n 
-0003586425 00000 n 
-0003586577 00000 n 
-0003586729 00000 n 
-0003586882 00000 n 
-0003587035 00000 n 
-0003587188 00000 n 
-0003587341 00000 n 
-0003587492 00000 n 
-0003587644 00000 n 
-0003587797 00000 n 
-0003587949 00000 n 
-0003588100 00000 n 
-0003588249 00000 n 
-0003588401 00000 n 
-0003588553 00000 n 
-0003588704 00000 n 
-0003588855 00000 n 
-0003589008 00000 n 
-0003589161 00000 n 
-0003589313 00000 n 
-0003589465 00000 n 
-0003589616 00000 n 
-0003589768 00000 n 
-0003589920 00000 n 
-0003590072 00000 n 
-0003590225 00000 n 
-0003590378 00000 n 
-0003590531 00000 n 
-0003590684 00000 n 
-0003590837 00000 n 
-0003590989 00000 n 
-0003591141 00000 n 
-0003591293 00000 n 
-0003591446 00000 n 
-0003591599 00000 n 
-0003591752 00000 n 
-0003591904 00000 n 
-0003592057 00000 n 
-0003592209 00000 n 
-0003592362 00000 n 
-0003592515 00000 n 
-0003592666 00000 n 
-0003592818 00000 n 
-0003592970 00000 n 
-0003593123 00000 n 
-0003593275 00000 n 
-0003593428 00000 n 
-0003593580 00000 n 
-0003593731 00000 n 
-0003593884 00000 n 
-0003594037 00000 n 
-0003594190 00000 n 
-0003594342 00000 n 
-0003594493 00000 n 
-0003594645 00000 n 
-0003594797 00000 n 
-0003594949 00000 n 
-0003599029 00000 n 
-0003595163 00000 n 
-0003569508 00000 n 
-0003567586 00000 n 
-0003595098 00000 n 
-0003599181 00000 n 
-0003599332 00000 n 
-0003599484 00000 n 
-0003599637 00000 n 
-0003599790 00000 n 
-0003599943 00000 n 
-0003600095 00000 n 
-0003600246 00000 n 
-0003600397 00000 n 
-0003600548 00000 n 
-0003600699 00000 n 
-0003600849 00000 n 
-0003601000 00000 n 
-0003601151 00000 n 
-0003601303 00000 n 
-0003601454 00000 n 
-0003601607 00000 n 
-0003601758 00000 n 
-0003601910 00000 n 
-0003602063 00000 n 
-0003602216 00000 n 
-0003602369 00000 n 
-0003602522 00000 n 
-0003602675 00000 n 
-0003602827 00000 n 
-0003602980 00000 n 
-0003603132 00000 n 
-0003603285 00000 n 
-0003603438 00000 n 
-0003603591 00000 n 
-0003603743 00000 n 
-0003603895 00000 n 
-0003604048 00000 n 
-0003604200 00000 n 
-0003604352 00000 n 
-0003604504 00000 n 
-0003604655 00000 n 
-0003604803 00000 n 
-0003604953 00000 n 
-0003605103 00000 n 
-0003605254 00000 n 
-0003605405 00000 n 
-0003605557 00000 n 
-0003605710 00000 n 
-0003605863 00000 n 
-0003606016 00000 n 
-0003606169 00000 n 
-0003606322 00000 n 
-0003606474 00000 n 
-0003606627 00000 n 
-0003606776 00000 n 
-0003606926 00000 n 
-0003607077 00000 n 
-0003607228 00000 n 
-0003607380 00000 n 
-0003607532 00000 n 
-0003607684 00000 n 
-0003607835 00000 n 
-0003607987 00000 n 
-0003608138 00000 n 
-0003608290 00000 n 
-0003608442 00000 n 
-0003608595 00000 n 
-0003608748 00000 n 
-0003608900 00000 n 
-0003609053 00000 n 
-0003609206 00000 n 
-0003609359 00000 n 
-0003609512 00000 n 
-0003609665 00000 n 
-0003609818 00000 n 
-0003609969 00000 n 
-0003610121 00000 n 
-0003610273 00000 n 
-0003610426 00000 n 
-0003610579 00000 n 
-0003610732 00000 n 
-0003610885 00000 n 
-0003611037 00000 n 
-0003611188 00000 n 
-0003611341 00000 n 
-0003611494 00000 n 
-0003611647 00000 n 
-0003611800 00000 n 
-0003611953 00000 n 
-0003612103 00000 n 
-0003612254 00000 n 
-0003612403 00000 n 
-0003612556 00000 n 
-0003612707 00000 n 
-0003612860 00000 n 
-0003613013 00000 n 
-0003613166 00000 n 
-0003613318 00000 n 
-0003613470 00000 n 
-0003613623 00000 n 
-0003613774 00000 n 
-0003613927 00000 n 
-0003614080 00000 n 
-0003614233 00000 n 
-0003614386 00000 n 
-0003614539 00000 n 
-0003614692 00000 n 
-0003614845 00000 n 
-0003614998 00000 n 
-0003615151 00000 n 
-0003615303 00000 n 
-0003615455 00000 n 
-0003615607 00000 n 
-0003615760 00000 n 
-0003615912 00000 n 
-0003616065 00000 n 
-0003616217 00000 n 
-0003616370 00000 n 
-0003616522 00000 n 
-0003616675 00000 n 
-0003616827 00000 n 
-0003616980 00000 n 
-0003617133 00000 n 
-0003617286 00000 n 
-0003617439 00000 n 
-0003617591 00000 n 
-0003617742 00000 n 
-0003617892 00000 n 
-0003618044 00000 n 
-0003618197 00000 n 
-0003618350 00000 n 
-0003618503 00000 n 
-0003618656 00000 n 
-0003618809 00000 n 
-0003618961 00000 n 
-0003619113 00000 n 
-0003619264 00000 n 
-0003619417 00000 n 
-0003619570 00000 n 
-0003619722 00000 n 
-0003619874 00000 n 
-0003620025 00000 n 
-0003620176 00000 n 
-0003620328 00000 n 
-0003620480 00000 n 
-0003620633 00000 n 
-0003620786 00000 n 
-0003620938 00000 n 
-0003621089 00000 n 
-0003621240 00000 n 
-0003621393 00000 n 
-0003621546 00000 n 
-0003621697 00000 n 
-0003621850 00000 n 
-0003622002 00000 n 
-0003622153 00000 n 
-0003622304 00000 n 
-0003622455 00000 n 
-0003622607 00000 n 
-0003622760 00000 n 
-0003626597 00000 n 
-0003622978 00000 n 
-0003597320 00000 n 
-0003595280 00000 n 
-0003622913 00000 n 
-0003626748 00000 n 
-0003626899 00000 n 
-0003627051 00000 n 
-0003627203 00000 n 
-0003627356 00000 n 
-0003627509 00000 n 
-0003627661 00000 n 
-0003627812 00000 n 
-0003627965 00000 n 
-0003628118 00000 n 
-0003628270 00000 n 
-0003628422 00000 n 
-0003628573 00000 n 
-0003628725 00000 n 
-0003628878 00000 n 
-0003629030 00000 n 
-0003629181 00000 n 
-0003629333 00000 n 
-0003629485 00000 n 
-0003629637 00000 n 
-0003629790 00000 n 
-0003629942 00000 n 
-0003630094 00000 n 
-0003630247 00000 n 
-0003630399 00000 n 
-0003630551 00000 n 
-0003630703 00000 n 
-0003630855 00000 n 
-0003631007 00000 n 
-0003631160 00000 n 
-0003631313 00000 n 
-0003631466 00000 n 
-0003631617 00000 n 
-0003631768 00000 n 
-0003631920 00000 n 
-0003632072 00000 n 
-0003632223 00000 n 
-0003632376 00000 n 
-0003632527 00000 n 
-0003632679 00000 n 
-0003632830 00000 n 
-0003632983 00000 n 
-0003633136 00000 n 
-0003633289 00000 n 
-0003633442 00000 n 
-0003633594 00000 n 
-0003633745 00000 n 
-0003633897 00000 n 
-0003634048 00000 n 
-0003634200 00000 n 
-0003634352 00000 n 
-0003634504 00000 n 
-0003634656 00000 n 
-0003634807 00000 n 
-0003634958 00000 n 
-0003635110 00000 n 
-0003635263 00000 n 
-0003635415 00000 n 
-0003635568 00000 n 
-0003635721 00000 n 
-0003635873 00000 n 
-0003636026 00000 n 
-0003636179 00000 n 
-0003636331 00000 n 
-0003636481 00000 n 
-0003636634 00000 n 
-0003636786 00000 n 
-0003636939 00000 n 
-0003637092 00000 n 
-0003637244 00000 n 
-0003637396 00000 n 
-0003637547 00000 n 
-0003637697 00000 n 
-0003637849 00000 n 
-0003638002 00000 n 
-0003638153 00000 n 
-0003638306 00000 n 
-0003638459 00000 n 
-0003638611 00000 n 
-0003638762 00000 n 
-0003638915 00000 n 
-0003639066 00000 n 
-0003639218 00000 n 
-0003639370 00000 n 
-0003639520 00000 n 
-0003639672 00000 n 
-0003639824 00000 n 
-0003639977 00000 n 
-0003640128 00000 n 
-0003640279 00000 n 
-0003640431 00000 n 
-0003640583 00000 n 
-0003640734 00000 n 
-0003640886 00000 n 
-0003641038 00000 n 
-0003641191 00000 n 
-0003641343 00000 n 
-0003641495 00000 n 
-0003641648 00000 n 
-0003641801 00000 n 
-0003641952 00000 n 
-0003642104 00000 n 
-0003642257 00000 n 
-0003642409 00000 n 
-0003642560 00000 n 
-0003642712 00000 n 
-0003642865 00000 n 
-0003643017 00000 n 
-0003643170 00000 n 
-0003643321 00000 n 
-0003643474 00000 n 
-0003643627 00000 n 
-0003643780 00000 n 
-0003643932 00000 n 
-0003644085 00000 n 
-0003644238 00000 n 
-0003644391 00000 n 
-0003644544 00000 n 
-0003644697 00000 n 
-0003644850 00000 n 
-0003645003 00000 n 
-0003645156 00000 n 
-0003645309 00000 n 
-0003645462 00000 n 
-0003645613 00000 n 
-0003645765 00000 n 
-0003645918 00000 n 
-0003646070 00000 n 
-0003646223 00000 n 
-0003646375 00000 n 
-0003646528 00000 n 
-0003646680 00000 n 
-0003646832 00000 n 
-0003646984 00000 n 
-0003647136 00000 n 
-0003647289 00000 n 
-0003647442 00000 n 
-0003647593 00000 n 
-0003647746 00000 n 
-0003647896 00000 n 
-0003648048 00000 n 
-0003648199 00000 n 
-0003648351 00000 n 
-0003648503 00000 n 
-0003652557 00000 n 
-0003652709 00000 n 
-0003652860 00000 n 
-0003648718 00000 n 
-0003625008 00000 n 
-0003623095 00000 n 
-0003648653 00000 n 
-0003653012 00000 n 
-0003653164 00000 n 
-0003653317 00000 n 
-0003653470 00000 n 
-0003653622 00000 n 
-0003653774 00000 n 
-0003653927 00000 n 
-0003654079 00000 n 
-0003654231 00000 n 
-0003654382 00000 n 
-0003654534 00000 n 
-0003654686 00000 n 
-0003654839 00000 n 
-0003654991 00000 n 
-0003655144 00000 n 
-0003655297 00000 n 
-0003655449 00000 n 
-0003655601 00000 n 
-0003655752 00000 n 
-0003655905 00000 n 
-0003656057 00000 n 
-0003656210 00000 n 
-0003656363 00000 n 
-0003656515 00000 n 
-0003656666 00000 n 
-0003656817 00000 n 
-0003656970 00000 n 
-0003657122 00000 n 
-0003657274 00000 n 
-0003657425 00000 n 
-0003657578 00000 n 
-0003657731 00000 n 
-0003657883 00000 n 
-0003658035 00000 n 
-0003658186 00000 n 
-0003658337 00000 n 
-0003658490 00000 n 
-0003658642 00000 n 
-0003658794 00000 n 
-0003658947 00000 n 
-0003659098 00000 n 
-0003659249 00000 n 
-0003659401 00000 n 
-0003659554 00000 n 
-0003659706 00000 n 
-0003659859 00000 n 
-0003660012 00000 n 
-0003660165 00000 n 
-0003660316 00000 n 
-0003660469 00000 n 
-0003660622 00000 n 
-0003660773 00000 n 
-0003660925 00000 n 
-0003661076 00000 n 
-0003661225 00000 n 
-0003661375 00000 n 
-0003661526 00000 n 
-0003661679 00000 n 
-0003661832 00000 n 
-0003661985 00000 n 
-0003662138 00000 n 
-0003662288 00000 n 
-0003662438 00000 n 
-0003662589 00000 n 
-0003662739 00000 n 
-0003662891 00000 n 
-0003663043 00000 n 
-0003663195 00000 n 
-0003663347 00000 n 
-0003663500 00000 n 
-0003663653 00000 n 
-0003663806 00000 n 
-0003663956 00000 n 
-0003664108 00000 n 
-0003664259 00000 n 
-0003664411 00000 n 
-0003664563 00000 n 
-0003664715 00000 n 
-0003664866 00000 n 
-0003665018 00000 n 
-0003665169 00000 n 
-0003665322 00000 n 
-0003665474 00000 n 
-0003665627 00000 n 
-0003665780 00000 n 
-0003665933 00000 n 
-0003666086 00000 n 
-0003666239 00000 n 
-0003666390 00000 n 
-0003666543 00000 n 
-0003666696 00000 n 
-0003666848 00000 n 
-0003667001 00000 n 
-0003667152 00000 n 
-0003667305 00000 n 
-0003667457 00000 n 
-0003667609 00000 n 
-0003667761 00000 n 
-0003667914 00000 n 
-0003668066 00000 n 
-0003668218 00000 n 
-0003668371 00000 n 
-0003668522 00000 n 
-0003668671 00000 n 
-0003668823 00000 n 
-0003668976 00000 n 
-0003669129 00000 n 
-0003669282 00000 n 
-0003669435 00000 n 
-0003669587 00000 n 
-0003669740 00000 n 
-0003669893 00000 n 
-0003670046 00000 n 
-0003670199 00000 n 
-0003670352 00000 n 
-0003670505 00000 n 
-0003670657 00000 n 
-0003670810 00000 n 
-0003670961 00000 n 
-0003671113 00000 n 
-0003671265 00000 n 
-0003671418 00000 n 
-0003671571 00000 n 
-0003671724 00000 n 
-0003671876 00000 n 
-0003672027 00000 n 
-0003672179 00000 n 
-0003672330 00000 n 
-0003672483 00000 n 
-0003672636 00000 n 
-0003672788 00000 n 
-0003672941 00000 n 
-0003673094 00000 n 
-0003673245 00000 n 
-0003673396 00000 n 
-0003673549 00000 n 
-0003673702 00000 n 
-0003673855 00000 n 
-0003674008 00000 n 
-0003674159 00000 n 
-0003674312 00000 n 
-0003674463 00000 n 
-0003674615 00000 n 
-0003674767 00000 n 
-0003674920 00000 n 
-0003675073 00000 n 
-0003675225 00000 n 
-0003675378 00000 n 
-0003675531 00000 n 
-0003675683 00000 n 
-0003675836 00000 n 
-0003675988 00000 n 
-0003676139 00000 n 
-0003680311 00000 n 
-0003676354 00000 n 
-0003650858 00000 n 
-0003648835 00000 n 
-0003676289 00000 n 
-0003680464 00000 n 
-0003680616 00000 n 
-0003680768 00000 n 
-0003680920 00000 n 
-0003681072 00000 n 
-0003681224 00000 n 
-0003681376 00000 n 
-0003681529 00000 n 
-0003681682 00000 n 
-0003681835 00000 n 
-0003681987 00000 n 
-0003682140 00000 n 
-0003682292 00000 n 
-0003682445 00000 n 
-0003682598 00000 n 
-0003682750 00000 n 
-0003682903 00000 n 
-0003683055 00000 n 
-0003683204 00000 n 
-0003683354 00000 n 
-0003683506 00000 n 
-0003683658 00000 n 
-0003683810 00000 n 
-0003683962 00000 n 
-0003684113 00000 n 
-0003684266 00000 n 
-0003684417 00000 n 
-0003684569 00000 n 
-0003684721 00000 n 
-0003684873 00000 n 
-0003685026 00000 n 
-0003685179 00000 n 
-0003685332 00000 n 
-0003685485 00000 n 
-0003685634 00000 n 
-0003685785 00000 n 
-0003685937 00000 n 
-0003686089 00000 n 
-0003686240 00000 n 
-0003686393 00000 n 
-0003686545 00000 n 
-0003686698 00000 n 
-0003686851 00000 n 
-0003687004 00000 n 
-0003687156 00000 n 
-0003687309 00000 n 
-0003687461 00000 n 
-0003687614 00000 n 
-0003687766 00000 n 
-0003687917 00000 n 
-0003688068 00000 n 
-0003688219 00000 n 
-0003688371 00000 n 
-0003688523 00000 n 
-0003688675 00000 n 
-0003688827 00000 n 
-0003688980 00000 n 
-0003689131 00000 n 
-0003689283 00000 n 
-0003689435 00000 n 
-0003689588 00000 n 
-0003689739 00000 n 
-0003689892 00000 n 
-0003690045 00000 n 
-0003690198 00000 n 
-0003690351 00000 n 
-0003690504 00000 n 
-0003690657 00000 n 
-0003690810 00000 n 
-0003690962 00000 n 
-0003691114 00000 n 
-0003691267 00000 n 
-0003691416 00000 n 
-0003691568 00000 n 
-0003691721 00000 n 
-0003691871 00000 n 
-0003692022 00000 n 
-0003692173 00000 n 
-0003692325 00000 n 
-0003692477 00000 n 
-0003692630 00000 n 
-0003692783 00000 n 
-0003692934 00000 n 
-0003693084 00000 n 
-0003693236 00000 n 
-0003693384 00000 n 
-0003693534 00000 n 
-0003693686 00000 n 
-0003693838 00000 n 
-0003693990 00000 n 
-0003694142 00000 n 
-0003694295 00000 n 
-0003694448 00000 n 
-0003694600 00000 n 
-0003694753 00000 n 
-0003694905 00000 n 
-0003695055 00000 n 
-0003695205 00000 n 
-0003695356 00000 n 
-0003695508 00000 n 
-0003695660 00000 n 
-0003695812 00000 n 
-0003695965 00000 n 
-0003696118 00000 n 
-0003696271 00000 n 
-0003696422 00000 n 
-0003696574 00000 n 
-0003696726 00000 n 
-0003696878 00000 n 
-0003697030 00000 n 
-0003697179 00000 n 
-0003697328 00000 n 
-0003697477 00000 n 
-0003697630 00000 n 
-0003697782 00000 n 
-0003697934 00000 n 
-0003698086 00000 n 
-0003698239 00000 n 
-0003698391 00000 n 
-0003698544 00000 n 
-0003698695 00000 n 
-0003698847 00000 n 
-0003698999 00000 n 
-0003699151 00000 n 
-0003699302 00000 n 
-0003699454 00000 n 
-0003699606 00000 n 
-0003699758 00000 n 
-0003699909 00000 n 
-0003700061 00000 n 
-0003700214 00000 n 
-0003700366 00000 n 
-0003700519 00000 n 
-0003700671 00000 n 
-0003700824 00000 n 
-0003700975 00000 n 
-0003701128 00000 n 
-0003701281 00000 n 
-0003701434 00000 n 
-0003701587 00000 n 
-0003701739 00000 n 
-0003701892 00000 n 
-0003702044 00000 n 
-0003702197 00000 n 
-0003702348 00000 n 
-0003702501 00000 n 
-0003702653 00000 n 
-0003702806 00000 n 
-0003702959 00000 n 
-0003703112 00000 n 
-0003703265 00000 n 
-0003703418 00000 n 
-0003703571 00000 n 
-0003703723 00000 n 
-0003703874 00000 n 
-0003704026 00000 n 
-0003704179 00000 n 
-0003704331 00000 n 
-0003704483 00000 n 
-0003704636 00000 n 
-0003704789 00000 n 
-0003704942 00000 n 
-0003705093 00000 n 
-0003705245 00000 n 
-0003705397 00000 n 
-0003705550 00000 n 
-0003705702 00000 n 
-0003705854 00000 n 
-0003709840 00000 n 
-0003709991 00000 n 
-0003710143 00000 n 
-0003710295 00000 n 
-0003706069 00000 n 
-0003678482 00000 n 
-0003676471 00000 n 
-0003706004 00000 n 
-0003710448 00000 n 
-0003710600 00000 n 
-0003710752 00000 n 
-0003710904 00000 n 
-0003711057 00000 n 
-0003711209 00000 n 
-0003711361 00000 n 
-0003711514 00000 n 
-0003711667 00000 n 
-0003711816 00000 n 
-0003711968 00000 n 
-0003712121 00000 n 
-0003712271 00000 n 
-0003712422 00000 n 
-0003712573 00000 n 
-0003712725 00000 n 
-0003712877 00000 n 
-0003713029 00000 n 
-0003713181 00000 n 
-0003713333 00000 n 
-0003713484 00000 n 
-0003713637 00000 n 
-0003713789 00000 n 
-0003713939 00000 n 
-0003714090 00000 n 
-0003714243 00000 n 
-0003714394 00000 n 
-0003714547 00000 n 
-0003714700 00000 n 
-0003714852 00000 n 
-0003715004 00000 n 
-0003715157 00000 n 
-0003715310 00000 n 
-0003715463 00000 n 
-0003715615 00000 n 
-0003715768 00000 n 
-0003715919 00000 n 
-0003716071 00000 n 
-0003716224 00000 n 
-0003716377 00000 n 
-0003716529 00000 n 
-0003716681 00000 n 
-0003716832 00000 n 
-0003716984 00000 n 
-0003717136 00000 n 
-0003717289 00000 n 
-0003717439 00000 n 
-0003717592 00000 n 
-0003717744 00000 n 
-0003717897 00000 n 
-0003718050 00000 n 
-0003718202 00000 n 
-0003718354 00000 n 
-0003718506 00000 n 
-0003718659 00000 n 
-0003718811 00000 n 
-0003718961 00000 n 
-0003719113 00000 n 
-0003719263 00000 n 
-0003719415 00000 n 
-0003719568 00000 n 
-0003719721 00000 n 
-0003719874 00000 n 
-0003720025 00000 n 
-0003720178 00000 n 
-0003720329 00000 n 
-0003720479 00000 n 
-0003720630 00000 n 
-0003720782 00000 n 
-0003720934 00000 n 
-0003721086 00000 n 
-0003721237 00000 n 
-0003721389 00000 n 
-0003721542 00000 n 
-0003721691 00000 n 
-0003721842 00000 n 
-0003721995 00000 n 
-0003722146 00000 n 
-0003722298 00000 n 
-0003722447 00000 n 
-0003722599 00000 n 
-0003722748 00000 n 
-0003722899 00000 n 
-0003723050 00000 n 
-0003723199 00000 n 
-0003723351 00000 n 
-0003723504 00000 n 
-0003723657 00000 n 
-0003723810 00000 n 
-0003723962 00000 n 
-0003724115 00000 n 
-0003724267 00000 n 
-0003724420 00000 n 
-0003724573 00000 n 
-0003724726 00000 n 
-0003724879 00000 n 
-0003725031 00000 n 
-0003725184 00000 n 
-0003725337 00000 n 
-0003725488 00000 n 
-0003725641 00000 n 
-0003725793 00000 n 
-0003725946 00000 n 
-0003726098 00000 n 
-0003726248 00000 n 
-0003726400 00000 n 
-0003726553 00000 n 
-0003726706 00000 n 
-0003726859 00000 n 
-0003727012 00000 n 
-0003727164 00000 n 
-0003727316 00000 n 
-0003727469 00000 n 
-0003727621 00000 n 
-0003727774 00000 n 
-0003727926 00000 n 
-0003728077 00000 n 
-0003728229 00000 n 
-0003728381 00000 n 
-0003728534 00000 n 
-0003728686 00000 n 
-0003728839 00000 n 
-0003728991 00000 n 
-0003729144 00000 n 
-0003729297 00000 n 
-0003729449 00000 n 
-0003729602 00000 n 
-0003729753 00000 n 
-0003729905 00000 n 
-0003730058 00000 n 
-0003730211 00000 n 
-0003730364 00000 n 
-0003730517 00000 n 
-0003730670 00000 n 
-0003730823 00000 n 
-0003730976 00000 n 
-0003731129 00000 n 
-0003731282 00000 n 
-0003731434 00000 n 
-0003731585 00000 n 
-0003731738 00000 n 
-0003731890 00000 n 
-0003732043 00000 n 
-0003732196 00000 n 
-0003732348 00000 n 
-0003732501 00000 n 
-0003732653 00000 n 
-0003732804 00000 n 
-0003732955 00000 n 
-0003733108 00000 n 
-0003733261 00000 n 
-0003733414 00000 n 
-0003733567 00000 n 
-0003733720 00000 n 
-0003733873 00000 n 
-0003734025 00000 n 
-0003734176 00000 n 
-0003738790 00000 n 
-0003734393 00000 n 
-0003708091 00000 n 
-0003706186 00000 n 
-0003734328 00000 n 
-0003972087 00000 n 
-0003738941 00000 n 
-0003739093 00000 n 
-0003739244 00000 n 
-0003739397 00000 n 
-0003739550 00000 n 
-0003739703 00000 n 
-0003739856 00000 n 
-0003740009 00000 n 
-0003740161 00000 n 
-0003740312 00000 n 
-0003740464 00000 n 
-0003740615 00000 n 
-0003740763 00000 n 
-0003740913 00000 n 
-0003741065 00000 n 
-0003741218 00000 n 
-0003741371 00000 n 
-0003741524 00000 n 
-0003741677 00000 n 
-0003741830 00000 n 
-0003741983 00000 n 
-0003742136 00000 n 
-0003742289 00000 n 
-0003742442 00000 n 
-0003742595 00000 n 
-0003742748 00000 n 
-0003742900 00000 n 
-0003743053 00000 n 
-0003743205 00000 n 
-0003743355 00000 n 
-0003743506 00000 n 
-0003743659 00000 n 
-0003743812 00000 n 
-0003743965 00000 n 
-0003744118 00000 n 
-0003744271 00000 n 
-0003744424 00000 n 
-0003744577 00000 n 
-0003744730 00000 n 
-0003744883 00000 n 
-0003745036 00000 n 
-0003745188 00000 n 
-0003745340 00000 n 
-0003745491 00000 n 
-0003745644 00000 n 
-0003745797 00000 n 
-0003745947 00000 n 
-0003746100 00000 n 
-0003746251 00000 n 
-0003746403 00000 n 
-0003746556 00000 n 
-0003746708 00000 n 
-0003746860 00000 n 
-0003747012 00000 n 
-0003747162 00000 n 
-0003747314 00000 n 
-0003747464 00000 n 
-0003747617 00000 n 
-0003747766 00000 n 
-0003747916 00000 n 
-0003748068 00000 n 
-0003748219 00000 n 
-0003748368 00000 n 
-0003748517 00000 n 
-0003748669 00000 n 
-0003748821 00000 n 
-0003748974 00000 n 
-0003749125 00000 n 
-0003749278 00000 n 
-0003749431 00000 n 
-0003749584 00000 n 
-0003749735 00000 n 
-0003749888 00000 n 
-0003750041 00000 n 
-0003750193 00000 n 
-0003750346 00000 n 
-0003750498 00000 n 
-0003750650 00000 n 
-0003750802 00000 n 
-0003750954 00000 n 
-0003751107 00000 n 
-0003751260 00000 n 
-0003751413 00000 n 
-0003751566 00000 n 
-0003751719 00000 n 
-0003751872 00000 n 
-0003752025 00000 n 
-0003752178 00000 n 
-0003752331 00000 n 
-0003752484 00000 n 
-0003752637 00000 n 
-0003752790 00000 n 
-0003752940 00000 n 
-0003753090 00000 n 
-0003753242 00000 n 
-0003753394 00000 n 
-0003753546 00000 n 
-0003753698 00000 n 
-0003753850 00000 n 
-0003754001 00000 n 
-0003754153 00000 n 
-0003754305 00000 n 
-0003754457 00000 n 
-0003754610 00000 n 
-0003754763 00000 n 
-0003754914 00000 n 
-0003755067 00000 n 
-0003755219 00000 n 
-0003755372 00000 n 
-0003755525 00000 n 
-0003755678 00000 n 
-0003755831 00000 n 
-0003755984 00000 n 
-0003756137 00000 n 
-0003756290 00000 n 
-0003756442 00000 n 
-0003756595 00000 n 
-0003756748 00000 n 
-0003756901 00000 n 
-0003757053 00000 n 
-0003757205 00000 n 
-0003757358 00000 n 
-0003757510 00000 n 
-0003757663 00000 n 
-0003757815 00000 n 
-0003757967 00000 n 
-0003758120 00000 n 
-0003758272 00000 n 
-0003758425 00000 n 
-0003758577 00000 n 
-0003758730 00000 n 
-0003758881 00000 n 
-0003759033 00000 n 
-0003759184 00000 n 
-0003759337 00000 n 
-0003759489 00000 n 
-0003759641 00000 n 
-0003759794 00000 n 
-0003759946 00000 n 
-0003760099 00000 n 
-0003760252 00000 n 
-0003760405 00000 n 
-0003760556 00000 n 
-0003760708 00000 n 
-0003760860 00000 n 
-0003761012 00000 n 
-0003761164 00000 n 
-0003761316 00000 n 
-0003761466 00000 n 
-0003761617 00000 n 
-0003761768 00000 n 
-0003761920 00000 n 
-0003762072 00000 n 
-0003762224 00000 n 
-0003762375 00000 n 
-0003762528 00000 n 
-0003762681 00000 n 
-0003762834 00000 n 
-0003762985 00000 n 
-0003763138 00000 n 
-0003763290 00000 n 
-0003763442 00000 n 
-0003763595 00000 n 
-0003763748 00000 n 
-0003763899 00000 n 
-0003764052 00000 n 
-0003764204 00000 n 
-0003764357 00000 n 
-0003764510 00000 n 
-0003764661 00000 n 
-0003764814 00000 n 
-0003764967 00000 n 
-0003765119 00000 n 
-0003765270 00000 n 
-0003765423 00000 n 
-0003765575 00000 n 
-0003765727 00000 n 
-0003765880 00000 n 
-0003766030 00000 n 
-0003766180 00000 n 
-0003766332 00000 n 
-0003766482 00000 n 
-0003766634 00000 n 
-0003766787 00000 n 
-0003766940 00000 n 
-0003767093 00000 n 
-0003767246 00000 n 
-0003767399 00000 n 
-0003767552 00000 n 
-0003767704 00000 n 
-0003767857 00000 n 
-0003768010 00000 n 
-0003768161 00000 n 
-0003768313 00000 n 
-0003768466 00000 n 
-0003768617 00000 n 
-0003768770 00000 n 
-0003768923 00000 n 
-0003769075 00000 n 
-0003769227 00000 n 
-0003769377 00000 n 
-0003769527 00000 n 
-0003773863 00000 n 
-0003774012 00000 n 
-0003774162 00000 n 
-0003774311 00000 n 
-0003774461 00000 n 
-0003774613 00000 n 
-0003774765 00000 n 
-0003774917 00000 n 
-0003775069 00000 n 
-0003775220 00000 n 
-0003775372 00000 n 
-0003775524 00000 n 
-0003769742 00000 n 
-0003736621 00000 n 
-0003734510 00000 n 
-0003769677 00000 n 
-0003775676 00000 n 
-0003775827 00000 n 
-0003775979 00000 n 
-0003776132 00000 n 
-0003776285 00000 n 
-0003776438 00000 n 
-0003776591 00000 n 
-0003776742 00000 n 
-0003776894 00000 n 
-0003777046 00000 n 
-0003777197 00000 n 
-0003777347 00000 n 
-0003777497 00000 n 
-0003777649 00000 n 
-0003777799 00000 n 
-0003777952 00000 n 
-0003778103 00000 n 
-0003778255 00000 n 
-0003778408 00000 n 
-0003778560 00000 n 
-0003778712 00000 n 
-0003778864 00000 n 
-0003779015 00000 n 
-0003779168 00000 n 
-0003779320 00000 n 
-0003779473 00000 n 
-0003779625 00000 n 
-0003779777 00000 n 
-0003779930 00000 n 
-0003780081 00000 n 
-0003780234 00000 n 
-0003780386 00000 n 
-0003780535 00000 n 
-0003780686 00000 n 
-0003780838 00000 n 
-0003780991 00000 n 
-0003781144 00000 n 
-0003781297 00000 n 
-0003781448 00000 n 
-0003781601 00000 n 
-0003781754 00000 n 
-0003781907 00000 n 
-0003782058 00000 n 
-0003782210 00000 n 
-0003782362 00000 n 
-0003782514 00000 n 
-0003782666 00000 n 
-0003782818 00000 n 
-0003782971 00000 n 
-0003783122 00000 n 
-0003783273 00000 n 
-0003783423 00000 n 
-0003783576 00000 n 
-0003783728 00000 n 
-0003783879 00000 n 
-0003784030 00000 n 
-0003784183 00000 n 
-0003784336 00000 n 
-0003784488 00000 n 
-0003784641 00000 n 
-0003784794 00000 n 
-0003784947 00000 n 
-0003785099 00000 n 
-0003785251 00000 n 
-0003785401 00000 n 
-0003785551 00000 n 
-0003785702 00000 n 
-0003785854 00000 n 
-0003786005 00000 n 
-0003786157 00000 n 
-0003786309 00000 n 
-0003786459 00000 n 
-0003786611 00000 n 
-0003786764 00000 n 
-0003786916 00000 n 
-0003787069 00000 n 
-0003787221 00000 n 
-0003787374 00000 n 
-0003787527 00000 n 
-0003787678 00000 n 
-0003787830 00000 n 
-0003787982 00000 n 
-0003788133 00000 n 
-0003788285 00000 n 
-0003788438 00000 n 
-0003788591 00000 n 
-0003788743 00000 n 
-0003788895 00000 n 
-0003789048 00000 n 
-0003789199 00000 n 
-0003789350 00000 n 
-0003789501 00000 n 
-0003789654 00000 n 
-0003789806 00000 n 
-0003789957 00000 n 
-0003790109 00000 n 
-0003790261 00000 n 
-0003790413 00000 n 
-0003790566 00000 n 
-0003790719 00000 n 
-0003790871 00000 n 
-0003791023 00000 n 
-0003791175 00000 n 
-0003791326 00000 n 
-0003791478 00000 n 
-0003791631 00000 n 
-0003791784 00000 n 
-0003791937 00000 n 
-0003792090 00000 n 
-0003792243 00000 n 
-0003792395 00000 n 
-0003792547 00000 n 
-0003792700 00000 n 
-0003792853 00000 n 
-0003793005 00000 n 
-0003793158 00000 n 
-0003793311 00000 n 
-0003793463 00000 n 
-0003793616 00000 n 
-0003793769 00000 n 
-0003793922 00000 n 
-0003794075 00000 n 
-0003794228 00000 n 
-0003794380 00000 n 
-0003794531 00000 n 
-0003794683 00000 n 
-0003794836 00000 n 
-0003794988 00000 n 
-0003795140 00000 n 
-0003795291 00000 n 
-0003795443 00000 n 
-0003795595 00000 n 
-0003795748 00000 n 
-0003795901 00000 n 
-0003796053 00000 n 
-0003796205 00000 n 
-0003796357 00000 n 
-0003796510 00000 n 
-0003796662 00000 n 
-0003796815 00000 n 
-0003796966 00000 n 
-0003797119 00000 n 
-0003797272 00000 n 
-0003797424 00000 n 
-0003797577 00000 n 
-0003797729 00000 n 
-0003797882 00000 n 
-0003798035 00000 n 
-0003798188 00000 n 
-0003798340 00000 n 
-0003798492 00000 n 
-0003798644 00000 n 
-0003798796 00000 n 
-0003798949 00000 n 
-0003799101 00000 n 
-0003799253 00000 n 
-0003799406 00000 n 
-0003799559 00000 n 
-0003799712 00000 n 
-0003799865 00000 n 
-0003800016 00000 n 
-0003800169 00000 n 
-0003800322 00000 n 
-0003800473 00000 n 
-0003800625 00000 n 
-0003800778 00000 n 
-0003800931 00000 n 
-0003801084 00000 n 
-0003801237 00000 n 
-0003801390 00000 n 
-0003801541 00000 n 
-0003803446 00000 n 
-0003801757 00000 n 
-0003771894 00000 n 
-0003769859 00000 n 
-0003801692 00000 n 
-0003803598 00000 n 
-0003803751 00000 n 
-0003803902 00000 n 
-0003804053 00000 n 
-0003804206 00000 n 
-0003804359 00000 n 
-0003804511 00000 n 
-0003804660 00000 n 
-0003804811 00000 n 
-0003804961 00000 n 
-0003805112 00000 n 
-0003805263 00000 n 
-0003805414 00000 n 
-0003805565 00000 n 
-0003805716 00000 n 
-0003805868 00000 n 
-0003806020 00000 n 
-0003806172 00000 n 
-0003806325 00000 n 
-0003806477 00000 n 
-0003806629 00000 n 
-0003806782 00000 n 
-0003806934 00000 n 
-0003807087 00000 n 
-0003807238 00000 n 
-0003807390 00000 n 
-0003807542 00000 n 
-0003807694 00000 n 
-0003807847 00000 n 
-0003807999 00000 n 
-0003808150 00000 n 
-0003808301 00000 n 
-0003808452 00000 n 
-0003808605 00000 n 
-0003808758 00000 n 
-0003808911 00000 n 
-0003809064 00000 n 
-0003809216 00000 n 
-0003809369 00000 n 
-0003809518 00000 n 
-0003809669 00000 n 
-0003809821 00000 n 
-0003809971 00000 n 
-0003810189 00000 n 
-0003802867 00000 n 
-0003801874 00000 n 
-0003810124 00000 n 
-0003810306 00000 n 
-0003961598 00000 n 
-0003810333 00000 n 
-0003810526 00000 n 
-0003810655 00000 n 
-0003810692 00000 n 
-0003810904 00000 n 
-0003811277 00000 n 
-0003811754 00000 n 
-0003812151 00000 n 
-0003812732 00000 n 
-0003812969 00000 n 
-0003813548 00000 n 
-0003814128 00000 n 
-0003815072 00000 n 
-0003816742 00000 n 
-0003816981 00000 n 
-0003818469 00000 n 
-0003818720 00000 n 
-0003820574 00000 n 
-0003820806 00000 n 
-0003828158 00000 n 
-0003828423 00000 n 
-0003848970 00000 n 
-0003849629 00000 n 
-0003862968 00000 n 
-0003863388 00000 n 
-0003876590 00000 n 
-0003877079 00000 n 
-0003887687 00000 n 
-0003888179 00000 n 
-0003894221 00000 n 
-0003894515 00000 n 
-0003911485 00000 n 
-0003911966 00000 n 
-0003920239 00000 n 
-0003920523 00000 n 
-0003943134 00000 n 
-0003943864 00000 n 
-0003961078 00000 n 
-0003972200 00000 n 
-0003972328 00000 n 
-0003972456 00000 n 
-0003972584 00000 n 
-0003972712 00000 n 
-0003972840 00000 n 
-0003972968 00000 n 
-0003973096 00000 n 
-0003973224 00000 n 
-0003973357 00000 n 
-0003973491 00000 n 
-0003973574 00000 n 
-0003973709 00000 n 
-0003973834 00000 n 
-0003973911 00000 n 
-0004000511 00000 n 
-0004000713 00000 n 
-0004000896 00000 n 
-0004001090 00000 n 
-0004001283 00000 n 
-0004001477 00000 n 
-0004001670 00000 n 
-0004001864 00000 n 
-0004002057 00000 n 
-0004002251 00000 n 
-0004002443 00000 n 
-0004002635 00000 n 
-0004002829 00000 n 
-0004003022 00000 n 
-0004003216 00000 n 
-0004003409 00000 n 
-0004003603 00000 n 
-0004003796 00000 n 
-0004003990 00000 n 
-0004004183 00000 n 
-0004004377 00000 n 
-0004004566 00000 n 
-0004004760 00000 n 
-0004004952 00000 n 
-0004005144 00000 n 
-0004005338 00000 n 
-0004005531 00000 n 
-0004005725 00000 n 
-0004005918 00000 n 
-0004006112 00000 n 
-0004006305 00000 n 
-0004006499 00000 n 
-0004006692 00000 n 
-0004006886 00000 n 
-0004007078 00000 n 
-0004007270 00000 n 
-0004007464 00000 n 
-0004007657 00000 n 
-0004007851 00000 n 
-0004008042 00000 n 
-0004008236 00000 n 
-0004008429 00000 n 
-0004008623 00000 n 
-0004008816 00000 n 
-0004009010 00000 n 
-0004009203 00000 n 
-0004009397 00000 n 
-0004009589 00000 n 
-0004009781 00000 n 
-0004009975 00000 n 
-0004010168 00000 n 
-0004010362 00000 n 
-0004010555 00000 n 
-0004010749 00000 n 
-0004010942 00000 n 
-0004011136 00000 n 
-0004011329 00000 n 
-0004011523 00000 n 
-0004011712 00000 n 
-0004011906 00000 n 
-0004012098 00000 n 
-0004012290 00000 n 
-0004012484 00000 n 
-0004012677 00000 n 
-0004012871 00000 n 
-0004013064 00000 n 
-0004013258 00000 n 
-0004013451 00000 n 
-0004013645 00000 n 
-0004013838 00000 n 
-0004014032 00000 n 
-0004014224 00000 n 
-0004014416 00000 n 
-0004014610 00000 n 
-0004014803 00000 n 
-0004014997 00000 n 
-0004015188 00000 n 
-0004015382 00000 n 
-0004015575 00000 n 
-0004015769 00000 n 
-0004015962 00000 n 
-0004016156 00000 n 
-0004016349 00000 n 
-0004016543 00000 n 
-0004016735 00000 n 
-0004016927 00000 n 
-0004017121 00000 n 
-0004017314 00000 n 
-0004017508 00000 n 
-0004017701 00000 n 
-0004017895 00000 n 
-0004018088 00000 n 
-0004018282 00000 n 
-0004018475 00000 n 
-0004018669 00000 n 
-0004018858 00000 n 
-0004019052 00000 n 
-0004019244 00000 n 
-0004019436 00000 n 
-0004019630 00000 n 
-0004019823 00000 n 
-0004020017 00000 n 
-0004020210 00000 n 
-0004020404 00000 n 
-0004020597 00000 n 
-0004020791 00000 n 
-0004020984 00000 n 
-0004021178 00000 n 
-0004021370 00000 n 
-0004021562 00000 n 
-0004021756 00000 n 
-0004021949 00000 n 
-0004022143 00000 n 
-0004022334 00000 n 
-0004022528 00000 n 
-0004022721 00000 n 
-0004022915 00000 n 
-0004023108 00000 n 
-0004023302 00000 n 
-0004023495 00000 n 
-0004023689 00000 n 
-0004023881 00000 n 
-0004024073 00000 n 
-0004024267 00000 n 
-0004024460 00000 n 
-0004024654 00000 n 
-0004024847 00000 n 
-0004025041 00000 n 
-0004025234 00000 n 
-0004025428 00000 n 
-0004025621 00000 n 
-0004025815 00000 n 
-0004026004 00000 n 
-0004026198 00000 n 
-0004026390 00000 n 
-0004026582 00000 n 
-0004026776 00000 n 
-0004026969 00000 n 
-0004027163 00000 n 
-0004027356 00000 n 
-0004027550 00000 n 
-0004027743 00000 n 
-0004027937 00000 n 
-0004028130 00000 n 
-0004028324 00000 n 
-0004028516 00000 n 
-0004028708 00000 n 
-0004028902 00000 n 
-0004029095 00000 n 
-0004029289 00000 n 
-0004029480 00000 n 
-0004029674 00000 n 
-0004029867 00000 n 
-0004030061 00000 n 
-0004030254 00000 n 
-0004030448 00000 n 
-0004030641 00000 n 
-0004030835 00000 n 
-0004031027 00000 n 
-0004031219 00000 n 
-0004031413 00000 n 
-0004031606 00000 n 
-0004031800 00000 n 
-0004031993 00000 n 
-0004032187 00000 n 
-0004032380 00000 n 
-0004032574 00000 n 
-0004032767 00000 n 
-0004032961 00000 n 
-0004033150 00000 n 
-0004033344 00000 n 
-0004033536 00000 n 
-0004033728 00000 n 
-0004033922 00000 n 
-0004034115 00000 n 
-0004034309 00000 n 
-0004034502 00000 n 
-0004034696 00000 n 
-0004034889 00000 n 
-0004035083 00000 n 
-0004035276 00000 n 
-0004035470 00000 n 
-0004035662 00000 n 
-0004035854 00000 n 
-0004036048 00000 n 
-0004036241 00000 n 
-0004036435 00000 n 
-0004036622 00000 n 
-0004036816 00000 n 
-0004037009 00000 n 
-0004037203 00000 n 
-0004037396 00000 n 
-0004037590 00000 n 
-0004037783 00000 n 
-0004037977 00000 n 
-0004038170 00000 n 
-0004038364 00000 n 
-0004038556 00000 n 
-0004038748 00000 n 
-0004038942 00000 n 
-0004039135 00000 n 
-0004039329 00000 n 
-0004039522 00000 n 
-0004039716 00000 n 
-0004039909 00000 n 
-0004040103 00000 n 
-0004040294 00000 n 
-0004040488 00000 n 
-0004040681 00000 n 
-0004040875 00000 n 
-0004041067 00000 n 
-0004041259 00000 n 
-0004041453 00000 n 
-0004041646 00000 n 
-0004041840 00000 n 
-0004042033 00000 n 
-0004042227 00000 n 
-0004042420 00000 n 
-0004042614 00000 n 
-0004042807 00000 n 
-0004043001 00000 n 
-0004043193 00000 n 
-0004043385 00000 n 
-0004043579 00000 n 
-0004043769 00000 n 
-0004043963 00000 n 
-0004044156 00000 n 
-0004044350 00000 n 
-0004044543 00000 n 
-0004044737 00000 n 
-0004044930 00000 n 
-0004045124 00000 n 
-0004045317 00000 n 
-0004045511 00000 n 
-0004045703 00000 n 
-0004045895 00000 n 
-0004046089 00000 n 
-0004046282 00000 n 
-0004046476 00000 n 
-0004046669 00000 n 
-0004046863 00000 n 
-0004047056 00000 n 
-0004047250 00000 n 
-0004047441 00000 n 
-0004047635 00000 n 
-0004047828 00000 n 
-0004048022 00000 n 
-0004048214 00000 n 
-0004048406 00000 n 
-0004048600 00000 n 
-0004048793 00000 n 
-0004048987 00000 n 
-0004049180 00000 n 
-0004049374 00000 n 
-0004049567 00000 n 
-0004049761 00000 n 
-0004049954 00000 n 
-0004050148 00000 n 
-0004050340 00000 n 
-0004050532 00000 n 
-0004050726 00000 n 
-0004050916 00000 n 
-0004051110 00000 n 
-0004051303 00000 n 
-0004051497 00000 n 
-0004051690 00000 n 
-0004051884 00000 n 
-0004052077 00000 n 
-0004052271 00000 n 
-0004052464 00000 n 
-0004052658 00000 n 
-0004052850 00000 n 
-0004053042 00000 n 
-0004053236 00000 n 
-0004053429 00000 n 
-0004053623 00000 n 
-0004053816 00000 n 
-0004054010 00000 n 
-0004054203 00000 n 
-0004054397 00000 n 
-0004054588 00000 n 
-0004054782 00000 n 
-0004054975 00000 n 
-0004055169 00000 n 
-0004055361 00000 n 
-0004055553 00000 n 
-0004055747 00000 n 
-0004055940 00000 n 
-0004056134 00000 n 
-0004056327 00000 n 
-0004056521 00000 n 
-0004056714 00000 n 
-0004056908 00000 n 
-0004057101 00000 n 
-0004057295 00000 n 
-0004057487 00000 n 
-0004057679 00000 n 
-0004057873 00000 n 
-0004058063 00000 n 
-0004058257 00000 n 
-0004058450 00000 n 
-0004058644 00000 n 
-0004058837 00000 n 
-0004059031 00000 n 
-0004059224 00000 n 
-0004059418 00000 n 
-0004059611 00000 n 
-0004059805 00000 n 
-0004059997 00000 n 
-0004060189 00000 n 
-0004060383 00000 n 
-0004060576 00000 n 
-0004060770 00000 n 
-0004060963 00000 n 
-0004061157 00000 n 
-0004061350 00000 n 
-0004061544 00000 n 
-0004061735 00000 n 
-0004061929 00000 n 
-0004062122 00000 n 
-0004062316 00000 n 
-0004062508 00000 n 
-0004062700 00000 n 
-0004062894 00000 n 
-0004063087 00000 n 
-0004063281 00000 n 
-0004063474 00000 n 
-0004063668 00000 n 
-0004063861 00000 n 
-0004064055 00000 n 
-0004064248 00000 n 
-0004064442 00000 n 
-0004064634 00000 n 
-0004064826 00000 n 
-0004065020 00000 n 
-0004065210 00000 n 
-0004065404 00000 n 
-0004065597 00000 n 
-0004065791 00000 n 
-0004065984 00000 n 
-0004066178 00000 n 
-0004066371 00000 n 
-0004066565 00000 n 
-0004066758 00000 n 
-0004066952 00000 n 
-0004067144 00000 n 
-0004067336 00000 n 
-0004067530 00000 n 
-0004067723 00000 n 
-0004067917 00000 n 
-0004068110 00000 n 
-0004068304 00000 n 
-0004068497 00000 n 
-0004068691 00000 n 
-0004068882 00000 n 
-0004069076 00000 n 
-0004069269 00000 n 
-0004069463 00000 n 
-0004069655 00000 n 
-0004069847 00000 n 
-0004070041 00000 n 
-0004070234 00000 n 
-0004070428 00000 n 
-0004070621 00000 n 
-0004070815 00000 n 
-0004071008 00000 n 
-0004071202 00000 n 
-0004071395 00000 n 
-0004071589 00000 n 
-0004071781 00000 n 
-0004071973 00000 n 
-0004072167 00000 n 
-0004072354 00000 n 
-0004072546 00000 n 
-0004072738 00000 n 
-0004072932 00000 n 
-0004073125 00000 n 
-0004073319 00000 n 
-0004073512 00000 n 
-0004073706 00000 n 
-0004073899 00000 n 
-0004074093 00000 n 
-0004074286 00000 n 
-0004074480 00000 n 
-0004074672 00000 n 
-0004074864 00000 n 
-0004075058 00000 n 
-0004075251 00000 n 
-0004075445 00000 n 
-0004075643 00000 n 
-0004075843 00000 n 
-0004076038 00000 n 
-0004076238 00000 n 
-0004076436 00000 n 
-0004076636 00000 n 
-0004076834 00000 n 
-0004077034 00000 n 
-0004077231 00000 n 
-0004077428 00000 n 
-0004077628 00000 n 
-0004077826 00000 n 
-0004078026 00000 n 
-0004078224 00000 n 
-0004078424 00000 n 
-0004078622 00000 n 
-0004078822 00000 n 
-0004079020 00000 n 
-0004079220 00000 n 
-0004079417 00000 n 
-0004079612 00000 n 
-0004079809 00000 n 
-0004080006 00000 n 
-0004080206 00000 n 
-0004080404 00000 n 
-0004080604 00000 n 
-0004080802 00000 n 
-0004081002 00000 n 
-0004081200 00000 n 
-0004081400 00000 n 
-0004081598 00000 n 
-0004081798 00000 n 
-0004081995 00000 n 
-0004082192 00000 n 
-0004082392 00000 n 
-0004082590 00000 n 
-0004082790 00000 n 
-0004082988 00000 n 
-0004083188 00000 n 
-0004083383 00000 n 
-0004083569 00000 n 
-0004083754 00000 n 
-0004083940 00000 n 
-0004084125 00000 n 
-0004084311 00000 n 
-0004084496 00000 n 
-0004084682 00000 n 
-0004084866 00000 n 
-0004085050 00000 n 
-0004085236 00000 n 
-0004085421 00000 n 
-0004085607 00000 n 
-0004085790 00000 n 
-0004085976 00000 n 
-0004086161 00000 n 
-0004086347 00000 n 
-0004086532 00000 n 
-0004086718 00000 n 
-0004086903 00000 n 
-0004087089 00000 n 
-0004087273 00000 n 
-0004087457 00000 n 
-0004087643 00000 n 
-0004087828 00000 n 
-0004088014 00000 n 
-0004088199 00000 n 
-0004088385 00000 n 
-0004088570 00000 n 
-0004088756 00000 n 
-0004088941 00000 n 
-0004089127 00000 n 
-0004089308 00000 n 
-0004089494 00000 n 
-0004089678 00000 n 
-0004089862 00000 n 
-0004090048 00000 n 
-0004090233 00000 n 
-0004090419 00000 n 
-0004090604 00000 n 
-0004090790 00000 n 
-0004090975 00000 n 
-0004091161 00000 n 
-0004091346 00000 n 
-0004091532 00000 n 
-0004091716 00000 n 
-0004091900 00000 n 
-0004092086 00000 n 
-0004092271 00000 n 
-0004092457 00000 n 
-0004092640 00000 n 
-0004092826 00000 n 
-0004093011 00000 n 
-0004093197 00000 n 
-0004093382 00000 n 
-0004093568 00000 n 
-0004093753 00000 n 
-0004093939 00000 n 
-0004094123 00000 n 
-0004094307 00000 n 
-0004094493 00000 n 
-0004094678 00000 n 
-0004094864 00000 n 
-0004095049 00000 n 
-0004095235 00000 n 
-0004095420 00000 n 
-0004095606 00000 n 
-0004095791 00000 n 
-0004095977 00000 n 
-0004096158 00000 n 
-0004096344 00000 n 
-0004096528 00000 n 
-0004096712 00000 n 
-0004096898 00000 n 
-0004097083 00000 n 
-0004097269 00000 n 
-0004097454 00000 n 
-0004097640 00000 n 
-0004097825 00000 n 
-0004098011 00000 n 
-0004098196 00000 n 
-0004098382 00000 n 
-0004098566 00000 n 
-0004098750 00000 n 
-0004098936 00000 n 
-0004099121 00000 n 
-0004099307 00000 n 
-0004099490 00000 n 
-0004099676 00000 n 
-0004099861 00000 n 
-0004100047 00000 n 
-0004100232 00000 n 
-0004100418 00000 n 
-0004100603 00000 n 
-0004100789 00000 n 
-0004100973 00000 n 
-0004101157 00000 n 
-0004101343 00000 n 
-0004101528 00000 n 
-0004101714 00000 n 
-0004101899 00000 n 
-0004102085 00000 n 
-0004102270 00000 n 
-0004102456 00000 n 
-0004102641 00000 n 
-0004102827 00000 n 
-0004103008 00000 n 
-0004103194 00000 n 
-0004103378 00000 n 
-0004103562 00000 n 
-0004103748 00000 n 
-0004103933 00000 n 
-0004104119 00000 n 
-0004104304 00000 n 
-0004104490 00000 n 
-0004104675 00000 n 
-0004104861 00000 n 
-0004105046 00000 n 
-0004105232 00000 n 
-0004105416 00000 n 
-0004105600 00000 n 
-0004105786 00000 n 
-0004105971 00000 n 
-0004106157 00000 n 
-0004106338 00000 n 
-0004106528 00000 n 
-0004106724 00000 n 
-0004106915 00000 n 
-0004107119 00000 n 
-0004107319 00000 n 
-0004107526 00000 n 
-0004107726 00000 n 
-0004107940 00000 n 
-0004108150 00000 n 
-0004108382 00000 n 
-0004108616 00000 n 
-0004108856 00000 n 
-0004109067 00000 n 
-0004109252 00000 n 
-0004109442 00000 n 
-0004109649 00000 n 
-0004109870 00000 n 
-0004110067 00000 n 
-0004110266 00000 n 
-0004110464 00000 n 
-0004110661 00000 n 
-0004110848 00000 n 
-0004111052 00000 n 
-0004111245 00000 n 
-0004111448 00000 n 
-0004111674 00000 n 
-0004111897 00000 n 
-0004112115 00000 n 
-0004112334 00000 n 
-0004112562 00000 n 
-0004112783 00000 n 
-0004112996 00000 n 
-0004113214 00000 n 
-0004113424 00000 n 
-0004113638 00000 n 
-0004113848 00000 n 
-0004114058 00000 n 
-0004114271 00000 n 
-0004114484 00000 n 
-0004114694 00000 n 
-0004114902 00000 n 
-0004115113 00000 n 
-0004115323 00000 n 
-0004115533 00000 n 
-0004115738 00000 n 
-0004115940 00000 n 
-0004116142 00000 n 
-0004116338 00000 n 
-0004116539 00000 n 
-0004116740 00000 n 
-0004116990 00000 n 
-0004117239 00000 n 
-0004117489 00000 n 
-0004117738 00000 n 
-0004117980 00000 n 
-0004118246 00000 n 
-0004118512 00000 n 
-0004118778 00000 n 
-0004119044 00000 n 
-0004119310 00000 n 
-0004119576 00000 n 
-0004119842 00000 n 
-0004120108 00000 n 
-0004120374 00000 n 
-0004120640 00000 n 
-0004120906 00000 n 
-0004121175 00000 n 
-0004121447 00000 n 
-0004121719 00000 n 
-0004121991 00000 n 
-0004122263 00000 n 
-0004122535 00000 n 
-0004122807 00000 n 
-0004123057 00000 n 
-0004123307 00000 n 
-0004123557 00000 n 
-0004123811 00000 n 
-0004124069 00000 n 
-0004124322 00000 n 
-0004124572 00000 n 
-0004124822 00000 n 
-0004125072 00000 n 
-0004125322 00000 n 
-0004125572 00000 n 
-0004125822 00000 n 
-0004126072 00000 n 
-0004126328 00000 n 
-0004126586 00000 n 
-0004126844 00000 n 
-0004127102 00000 n 
-0004127360 00000 n 
-0004127618 00000 n 
-0004127876 00000 n 
-0004128134 00000 n 
-0004128392 00000 n 
-0004128650 00000 n 
-0004128908 00000 n 
-0004129166 00000 n 
-0004129424 00000 n 
-0004129682 00000 n 
-0004129940 00000 n 
-0004130198 00000 n 
-0004130456 00000 n 
-0004130714 00000 n 
-0004130972 00000 n 
-0004131230 00000 n 
-0004131488 00000 n 
-0004131746 00000 n 
-0004132004 00000 n 
-0004132262 00000 n 
-0004132520 00000 n 
-0004132778 00000 n 
-0004133036 00000 n 
-0004133294 00000 n 
-0004133552 00000 n 
-0004133810 00000 n 
-0004134068 00000 n 
-0004134326 00000 n 
-0004134584 00000 n 
-0004134842 00000 n 
-0004135100 00000 n 
-0004135358 00000 n 
-0004135616 00000 n 
-0004135874 00000 n 
-0004136132 00000 n 
-0004136390 00000 n 
-0004136648 00000 n 
-0004136906 00000 n 
-0004137164 00000 n 
-0004137422 00000 n 
-0004137680 00000 n 
-0004137938 00000 n 
-0004138196 00000 n 
-0004138456 00000 n 
-0004138712 00000 n 
-0004138968 00000 n 
-0004139226 00000 n 
-0004139481 00000 n 
-0004139731 00000 n 
-0004139989 00000 n 
-0004140246 00000 n 
-0004140504 00000 n 
-0004140754 00000 n 
-0004141009 00000 n 
-0004141267 00000 n 
-0004141523 00000 n 
-0004141779 00000 n 
-0004142034 00000 n 
-0004142284 00000 n 
-0004142534 00000 n 
-0004142784 00000 n 
-0004143034 00000 n 
-0004143292 00000 n 
-0004143549 00000 n 
-0004143807 00000 n 
-0004144064 00000 n 
-0004144320 00000 n 
-0004144570 00000 n 
-0004144828 00000 n 
-0004145085 00000 n 
-0004145343 00000 n 
-0004145596 00000 n 
-0004145849 00000 n 
-0004146107 00000 n 
-0004146364 00000 n 
-0004146614 00000 n 
-0004146869 00000 n 
-0004147127 00000 n 
-0004147383 00000 n 
-0004147639 00000 n 
-0004147897 00000 n 
-0004148154 00000 n 
-0004148410 00000 n 
-0004148662 00000 n 
-0004148920 00000 n 
-0004149177 00000 n 
-0004149431 00000 n 
-0004149683 00000 n 
-0004149941 00000 n 
-0004150198 00000 n 
-0004150456 00000 n 
-0004150713 00000 n 
-0004150971 00000 n 
-0004151225 00000 n 
-0004151478 00000 n 
-0004151736 00000 n 
-0004151990 00000 n 
-0004152240 00000 n 
-0004152498 00000 n 
-0004152753 00000 n 
-0004153003 00000 n 
-0004153259 00000 n 
-0004153515 00000 n 
-0004153773 00000 n 
-0004154030 00000 n 
-0004154288 00000 n 
-0004154545 00000 n 
-0004154799 00000 n 
-0004155053 00000 n 
-0004155311 00000 n 
-0004155568 00000 n 
-0004155826 00000 n 
-0004156082 00000 n 
-0004156338 00000 n 
-0004156593 00000 n 
-0004156846 00000 n 
-0004157102 00000 n 
-0004157352 00000 n 
-0004157605 00000 n 
-0004157863 00000 n 
-0004158120 00000 n 
-0004158378 00000 n 
-0004158635 00000 n 
-0004158893 00000 n 
-0004159149 00000 n 
-0004159405 00000 n 
-0004159657 00000 n 
-0004159907 00000 n 
-0004160157 00000 n 
-0004160407 00000 n 
-0004160657 00000 n 
-0004160907 00000 n 
-0004161163 00000 n 
-0004161419 00000 n 
-0004161677 00000 n 
-0004161934 00000 n 
-0004162192 00000 n 
-0004162449 00000 n 
-0004162699 00000 n 
-0004162954 00000 n 
-0004163204 00000 n 
-0004163460 00000 n 
-0004163716 00000 n 
-0004163968 00000 n 
-0004164222 00000 n 
-0004164480 00000 n 
-0004164733 00000 n 
-0004164982 00000 n 
-0004165232 00000 n 
-0004165481 00000 n 
-0004165731 00000 n 
-0004165978 00000 n 
-0004166220 00000 n 
-0004166470 00000 n 
-0004166719 00000 n 
-0004166969 00000 n 
-0004167218 00000 n 
-0004167462 00000 n 
-0004167715 00000 n 
-0004167973 00000 n 
-0004168229 00000 n 
-0004168483 00000 n 
-0004168735 00000 n 
-0004168993 00000 n 
-0004169246 00000 n 
-0004169498 00000 n 
-0004169756 00000 n 
-0004170013 00000 n 
-0004170271 00000 n 
-0004170528 00000 n 
-0004170780 00000 n 
-0004171035 00000 n 
-0004171293 00000 n 
-0004171549 00000 n 
-0004171805 00000 n 
-0004172060 00000 n 
-0004172312 00000 n 
-0004172570 00000 n 
-0004172827 00000 n 
-0004173080 00000 n 
-0004173333 00000 n 
-0004173591 00000 n 
-0004173848 00000 n 
-0004174104 00000 n 
-0004174354 00000 n 
-0004174604 00000 n 
-0004174854 00000 n 
-0004175109 00000 n 
-0004175361 00000 n 
-0004175611 00000 n 
-0004175861 00000 n 
-0004176111 00000 n 
-0004176365 00000 n 
-0004176623 00000 n 
-0004176880 00000 n 
-0004177138 00000 n 
-0004177394 00000 n 
-0004177650 00000 n 
-0004177904 00000 n 
-0004178158 00000 n 
-0004178416 00000 n 
-0004178673 00000 n 
-0004178931 00000 n 
-0004179187 00000 n 
-0004179442 00000 n 
-0004179694 00000 n 
-0004179952 00000 n 
-0004180209 00000 n 
-0004180467 00000 n 
-0004180724 00000 n 
-0004180982 00000 n 
-0004181236 00000 n 
-0004181489 00000 n 
-0004181747 00000 n 
-0004182004 00000 n 
-0004182258 00000 n 
-0004182510 00000 n 
-0004182768 00000 n 
-0004183025 00000 n 
-0004183281 00000 n 
-0004183531 00000 n 
-0004183787 00000 n 
-0004184043 00000 n 
-0004184301 00000 n 
-0004184558 00000 n 
-0004184816 00000 n 
-0004185073 00000 n 
-0004185323 00000 n 
-0004185581 00000 n 
-0004185838 00000 n 
-0004186096 00000 n 
-0004186353 00000 n 
-0004186608 00000 n 
-0004186858 00000 n 
-0004187111 00000 n 
-0004187369 00000 n 
-0004187626 00000 n 
-0004187884 00000 n 
-0004188141 00000 n 
-0004188399 00000 n 
-0004188652 00000 n 
-0004188902 00000 n 
-0004189155 00000 n 
-0004189405 00000 n 
-0004189660 00000 n 
-0004189916 00000 n 
-0004190166 00000 n 
-0004190421 00000 n 
-0004190679 00000 n 
-0004190935 00000 n 
-0004191191 00000 n 
-0004191449 00000 n 
-0004191703 00000 n 
-0004191952 00000 n 
-0004192202 00000 n 
-0004192451 00000 n 
-0004192695 00000 n 
-0004192946 00000 n 
-0004193204 00000 n 
-0004193461 00000 n 
-0004193719 00000 n 
-0004193975 00000 n 
-0004194229 00000 n 
-0004194482 00000 n 
-0004194740 00000 n 
-0004194997 00000 n 
-0004195255 00000 n 
-0004195512 00000 n 
-0004195770 00000 n 
-0004196026 00000 n 
-0004196282 00000 n 
-0004196540 00000 n 
-0004196797 00000 n 
-0004197055 00000 n 
-0004197312 00000 n 
-0004197570 00000 n 
-0004197827 00000 n 
-0004198082 00000 n 
-0004198340 00000 n 
-0004198596 00000 n 
-0004198852 00000 n 
-0004199110 00000 n 
-0004199362 00000 n 
-0004199617 00000 n 
-0004199872 00000 n 
-0004200122 00000 n 
-0004200372 00000 n 
-0004200627 00000 n 
-0004200881 00000 n 
-0004201131 00000 n 
-0004201389 00000 n 
-0004201643 00000 n 
-0004201893 00000 n 
-0004202146 00000 n 
-0004202396 00000 n 
-0004202646 00000 n 
-0004202899 00000 n 
-0004203151 00000 n 
-0004203405 00000 n 
-0004203655 00000 n 
-0004203905 00000 n 
-0004204159 00000 n 
-0004204415 00000 n 
-0004204665 00000 n 
-0004204920 00000 n 
-0004205170 00000 n 
-0004205424 00000 n 
-0004205682 00000 n 
-0004205934 00000 n 
-0004206184 00000 n 
-0004206434 00000 n 
-0004206684 00000 n 
-0004206934 00000 n 
-0004207189 00000 n 
-0004207447 00000 n 
-0004207701 00000 n 
-0004207951 00000 n 
-0004208212 00000 n 
-0004208478 00000 n 
-0004208742 00000 n 
-0004209006 00000 n 
-0004209272 00000 n 
-0004209537 00000 n 
-0004209803 00000 n 
-0004210068 00000 n 
-0004210334 00000 n 
-0004210590 00000 n 
-0004210848 00000 n 
-0004211105 00000 n 
-0004211363 00000 n 
-0004211620 00000 n 
-0004211878 00000 n 
-0004212135 00000 n 
-0004212393 00000 n 
-0004212650 00000 n 
-0004212908 00000 n 
-0004213164 00000 n 
-0004213420 00000 n 
-0004213678 00000 n 
-0004213935 00000 n 
-0004214193 00000 n 
-0004214447 00000 n 
-0004214697 00000 n 
-0004214953 00000 n 
-0004215209 00000 n 
-0004215467 00000 n 
-0004215724 00000 n 
-0004215982 00000 n 
-0004216239 00000 n 
-0004216489 00000 n 
-0004216747 00000 n 
-0004217004 00000 n 
-0004217262 00000 n 
-0004217519 00000 n 
-0004217774 00000 n 
-0004218026 00000 n 
-0004218284 00000 n 
-0004218541 00000 n 
-0004218795 00000 n 
-0004219047 00000 n 
-0004219305 00000 n 
-0004219562 00000 n 
-0004219820 00000 n 
-0004220074 00000 n 
-0004220326 00000 n 
-0004220584 00000 n 
-0004220834 00000 n 
-0004221088 00000 n 
-0004221346 00000 n 
-0004221599 00000 n 
-0004221851 00000 n 
-0004222109 00000 n 
-0004222364 00000 n 
-0004222614 00000 n 
-0004222870 00000 n 
-0004223126 00000 n 
-0004223384 00000 n 
-0004223641 00000 n 
-0004223899 00000 n 
-0004224156 00000 n 
-0004224414 00000 n 
-0004224671 00000 n 
-0004224929 00000 n 
-0004225186 00000 n 
-0004225444 00000 n 
-0004225700 00000 n 
-0004225956 00000 n 
-0004226214 00000 n 
-0004226471 00000 n 
-0004226727 00000 n 
-0004226983 00000 n 
-0004227237 00000 n 
-0004227489 00000 n 
-0004227755 00000 n 
-0004228020 00000 n 
-0004228286 00000 n 
-0004228551 00000 n 
-0004228817 00000 n 
-0004229082 00000 n 
-0004229348 00000 n 
-0004229613 00000 n 
-0004229879 00000 n 
-0004230143 00000 n 
-0004230407 00000 n 
-0004230666 00000 n 
-0004230924 00000 n 
-0004231181 00000 n 
-0004231439 00000 n 
-0004231696 00000 n 
-0004231954 00000 n 
-0004232211 00000 n 
-0004232469 00000 n 
-0004232725 00000 n 
-0004232981 00000 n 
-0004233239 00000 n 
-0004233496 00000 n 
-0004233754 00000 n 
-0004234011 00000 n 
-0004234269 00000 n 
-0004234526 00000 n 
-0004234784 00000 n 
-0004235041 00000 n 
-0004235299 00000 n 
-0004235555 00000 n 
-0004235810 00000 n 
-0004236060 00000 n 
-0004236310 00000 n 
-0004236566 00000 n 
-0004236822 00000 n 
-0004237080 00000 n 
-0004237337 00000 n 
-0004237591 00000 n 
-0004237844 00000 n 
-0004238102 00000 n 
-0004238359 00000 n 
-0004238617 00000 n 
-0004238874 00000 n 
-0004239130 00000 n 
-0004239380 00000 n 
-0004239638 00000 n 
-0004239895 00000 n 
-0004240153 00000 n 
-0004240410 00000 n 
-0004240663 00000 n 
-0004240917 00000 n 
-0004241175 00000 n 
-0004241432 00000 n 
-0004241690 00000 n 
-0004241946 00000 n 
-0004242196 00000 n 
-0004242452 00000 n 
-0004242708 00000 n 
-0004242966 00000 n 
-0004243223 00000 n 
-0004243476 00000 n 
-0004243730 00000 n 
-0004243988 00000 n 
-0004244242 00000 n 
-0004244492 00000 n 
-0004244750 00000 n 
-0004245007 00000 n 
-0004245265 00000 n 
-0004245515 00000 n 
-0004245768 00000 n 
-0004246018 00000 n 
-0004246272 00000 n 
-0004246530 00000 n 
-0004246787 00000 n 
-0004247045 00000 n 
-0004247301 00000 n 
-0004247557 00000 n 
-0004247815 00000 n 
-0004248065 00000 n 
-0004248323 00000 n 
-0004248580 00000 n 
-0004248838 00000 n 
-0004249095 00000 n 
-0004249353 00000 n 
-0004249603 00000 n 
-0004249859 00000 n 
-0004250115 00000 n 
-0004250373 00000 n 
-0004250630 00000 n 
-0004250888 00000 n 
-0004251143 00000 n 
-0004251395 00000 n 
-0004251653 00000 n 
-0004251910 00000 n 
-0004252168 00000 n 
-0004252425 00000 n 
-0004252683 00000 n 
-0004252940 00000 n 
-0004253192 00000 n 
-0004253448 00000 n 
-0004253702 00000 n 
-0004253952 00000 n 
-0004254210 00000 n 
-0004254467 00000 n 
-0004254725 00000 n 
-0004254982 00000 n 
-0004255236 00000 n 
-0004255486 00000 n 
-0004255738 00000 n 
-0004255996 00000 n 
-0004256253 00000 n 
-0004256511 00000 n 
-0004256768 00000 n 
-0004257021 00000 n 
-0004257275 00000 n 
-0004257533 00000 n 
-0004257788 00000 n 
-0004258038 00000 n 
-0004258288 00000 n 
-0004258543 00000 n 
-0004258801 00000 n 
-0004259057 00000 n 
-0004259309 00000 n 
-0004259563 00000 n 
-0004259821 00000 n 
-0004260078 00000 n 
-0004260336 00000 n 
-0004260587 00000 n 
-0004260841 00000 n 
-0004261099 00000 n 
-0004261356 00000 n 
-0004261614 00000 n 
-0004261870 00000 n 
-0004262126 00000 n 
-0004262384 00000 n 
-0004262634 00000 n 
-0004262892 00000 n 
-0004263149 00000 n 
-0004263407 00000 n 
-0004263664 00000 n 
-0004263916 00000 n 
-0004264171 00000 n 
-0004264427 00000 n 
-0004264677 00000 n 
-0004264927 00000 n 
-0004265177 00000 n 
-0004265427 00000 n 
-0004265677 00000 n 
-0004265927 00000 n 
-0004266177 00000 n 
-0004266427 00000 n 
-0004266676 00000 n 
-0004266926 00000 n 
-0004267171 00000 n 
-0004267415 00000 n 
-0004267673 00000 n 
-0004267926 00000 n 
-0004268176 00000 n 
-0004268425 00000 n 
-0004268675 00000 n 
-0004268923 00000 n 
-0004269169 00000 n 
-0004269414 00000 n 
-0004269667 00000 n 
-0004269917 00000 n 
-0004270178 00000 n 
-0004270438 00000 n 
-0004270694 00000 n 
-0004270950 00000 n 
-0004271209 00000 n 
-0004271471 00000 n 
-0004271727 00000 n 
-0004271984 00000 n 
-0004272240 00000 n 
-0004272501 00000 n 
-0004272765 00000 n 
-0004273027 00000 n 
-0004273289 00000 n 
-0004273550 00000 n 
-0004273808 00000 n 
-0004274072 00000 n 
-0004274335 00000 n 
-0004274599 00000 n 
-0004274862 00000 n 
-0004275126 00000 n 
-0004275389 00000 n 
-0004275647 00000 n 
-0004275904 00000 n 
-0004276162 00000 n 
-0004276418 00000 n 
-0004276678 00000 n 
-0004276942 00000 n 
-0004277205 00000 n 
-0004277469 00000 n 
-0004277731 00000 n 
-0004277993 00000 n 
-0004278255 00000 n 
-0004278513 00000 n 
-0004278777 00000 n 
-0004279040 00000 n 
-0004279304 00000 n 
-0004279567 00000 n 
-0004279831 00000 n 
-0004280090 00000 n 
-0004280350 00000 n 
-0004280614 00000 n 
-0004280877 00000 n 
-0004281141 00000 n 
-0004281403 00000 n 
-0004281665 00000 n 
-0004281921 00000 n 
-0004282185 00000 n 
-0004282448 00000 n 
-0004282712 00000 n 
-0004282975 00000 n 
-0004283237 00000 n 
-0004283493 00000 n 
-0004283757 00000 n 
-0004284020 00000 n 
-0004284284 00000 n 
-0004284547 00000 n 
-0004284811 00000 n 
-0004285074 00000 n 
-0004285332 00000 n 
-0004285594 00000 n 
-0004285856 00000 n 
-0004286120 00000 n 
-0004286381 00000 n 
-0004286637 00000 n 
-0004286895 00000 n 
-0004287159 00000 n 
-0004287422 00000 n 
-0004287681 00000 n 
-0004287937 00000 n 
-0004288193 00000 n 
-0004288449 00000 n 
-0004288705 00000 n 
-0004288962 00000 n 
-0004289218 00000 n 
-0004289474 00000 n 
-0004289734 00000 n 
-0004289994 00000 n 
-0004290250 00000 n 
-0004290502 00000 n 
-0004290748 00000 n 
-0004290990 00000 n 
-0004291238 00000 n 
-0004291480 00000 n 
-0004291712 00000 n 
-0004291913 00000 n 
-0004292097 00000 n 
-0004292281 00000 n 
-0004292467 00000 n 
-0004292652 00000 n 
-0004292838 00000 n 
-0004293023 00000 n 
-0004293209 00000 n 
-0004293394 00000 n 
-0004293580 00000 n 
-0004293765 00000 n 
-0004293951 00000 n 
-0004294135 00000 n 
-0004294319 00000 n 
-0004294505 00000 n 
-0004294690 00000 n 
-0004294876 00000 n 
-0004295061 00000 n 
-0004295247 00000 n 
-0004295430 00000 n 
-0004295616 00000 n 
-0004295801 00000 n 
-0004295987 00000 n 
-0004296172 00000 n 
-0004296358 00000 n 
-0004296542 00000 n 
-0004296726 00000 n 
-0004296912 00000 n 
-0004297097 00000 n 
-0004297283 00000 n 
-0004297468 00000 n 
-0004297654 00000 n 
-0004297843 00000 n 
-0004298035 00000 n 
-0004298225 00000 n 
-0004298417 00000 n 
-0004298606 00000 n 
-0004298793 00000 n 
-0004298982 00000 n 
-0004299171 00000 n 
-0004299363 00000 n 
-0004299553 00000 n 
-0004299745 00000 n 
-0004299935 00000 n 
-0004300127 00000 n 
-0004300314 00000 n 
-0004300491 00000 n 
-0004300669 00000 n 
-0004300846 00000 n 
-0004301024 00000 n 
-0004301201 00000 n 
-0004301379 00000 n 
-0004301556 00000 n 
-0004301734 00000 n 
-0004301910 00000 n 
-0004302086 00000 n 
-0004302264 00000 n 
-0004302441 00000 n 
-0004302622 00000 n 
-0004302808 00000 n 
-0004302994 00000 n 
-0004303224 00000 n 
-0004303464 00000 n 
-0004303642 00000 n 
-0004303838 00000 n 
-0004304039 00000 n 
-0004304291 00000 n 
-0004304541 00000 n 
-0004304794 00000 n 
-0004305026 00000 n 
-0004305241 00000 n 
-0004305428 00000 n 
-0004305621 00000 n 
-0004305832 00000 n 
-0004306034 00000 n 
-0004306246 00000 n 
-0004306458 00000 n 
-0004306670 00000 n 
-0004306884 00000 n 
-0004307102 00000 n 
-0004307303 00000 n 
-0004307507 00000 n 
-0004307711 00000 n 
-0004307915 00000 n 
-0004308119 00000 n 
-0004308323 00000 n 
-0004308524 00000 n 
-0004308771 00000 n 
-0004309023 00000 n 
-0004309275 00000 n 
-0004309527 00000 n 
-0004309779 00000 n 
-0004310035 00000 n 
-0004310293 00000 n 
-0004310533 00000 n 
-0004310777 00000 n 
-0004311021 00000 n 
-0004311265 00000 n 
-0004311509 00000 n 
-0004311753 00000 n 
-0004311997 00000 n 
-0004312241 00000 n 
-0004312485 00000 n 
-0004312729 00000 n 
-0004312973 00000 n 
-0004313217 00000 n 
-0004313486 00000 n 
-0004313771 00000 n 
-0004314063 00000 n 
-0004314357 00000 n 
-0004314646 00000 n 
-0004314930 00000 n 
-0004315214 00000 n 
-0004315498 00000 n 
-0004315782 00000 n 
-0004316066 00000 n 
-0004316259 00000 n 
-0004316456 00000 n 
-0004316650 00000 n 
-0004316823 00000 n 
-0004316957 00000 n 
-0004317084 00000 n 
-0004317211 00000 n 
-0004317337 00000 n 
-0004317464 00000 n 
-0004317591 00000 n 
-0004317718 00000 n 
-0004317844 00000 n 
-0004317971 00000 n 
-0004318098 00000 n 
-0004318225 00000 n 
-0004318351 00000 n 
-0004318478 00000 n 
-0004318605 00000 n 
-0004318732 00000 n 
-0004318859 00000 n 
-0004318985 00000 n 
-0004319112 00000 n 
-0004319239 00000 n 
-0004319366 00000 n 
-0004319492 00000 n 
-0004319619 00000 n 
-0004319746 00000 n 
-0004319873 00000 n 
-0004319999 00000 n 
-0004320126 00000 n 
-0004320253 00000 n 
-0004320380 00000 n 
-0004320505 00000 n 
-0004320632 00000 n 
-0004320759 00000 n 
-0004320886 00000 n 
-0004321012 00000 n 
-0004321139 00000 n 
-0004321266 00000 n 
-0004321393 00000 n 
-0004321519 00000 n 
-0004321646 00000 n 
-0004321773 00000 n 
-0004321900 00000 n 
-0004322027 00000 n 
-0004322153 00000 n 
-0004322280 00000 n 
-0004322407 00000 n 
-0004322534 00000 n 
-0004322660 00000 n 
-0004322787 00000 n 
-0004322914 00000 n 
-0004323041 00000 n 
-0004323167 00000 n 
-0004323294 00000 n 
-0004323421 00000 n 
-0004323548 00000 n 
-0004323675 00000 n 
-0004323802 00000 n 
-0004323929 00000 n 
-0004324056 00000 n 
-0004324183 00000 n 
-0004324310 00000 n 
-0004324437 00000 n 
-0004324564 00000 n 
-0004324689 00000 n 
-0004324815 00000 n 
-0004324942 00000 n 
-0004325069 00000 n 
-0004325196 00000 n 
-0004325322 00000 n 
-0004325449 00000 n 
-0004325576 00000 n 
-0004325703 00000 n 
-0004325829 00000 n 
-0004325955 00000 n 
-0004326080 00000 n 
-0004326205 00000 n 
-0004326329 00000 n 
-0004326454 00000 n 
-0004326579 00000 n 
-0004326704 00000 n 
-0004326828 00000 n 
-0004326953 00000 n 
-0004327078 00000 n 
-0004327203 00000 n 
-0004327328 00000 n 
-0004327452 00000 n 
-0004327577 00000 n 
-0004327702 00000 n 
-0004327827 00000 n 
-0004327951 00000 n 
-0004328076 00000 n 
-0004328201 00000 n 
-0004328326 00000 n 
-0004328450 00000 n 
-0004328577 00000 n 
-0004328714 00000 n 
-0004328842 00000 n 
-0004328972 00000 n 
-0004329101 00000 n 
-0004329233 00000 n 
-0004329364 00000 n 
-0004329492 00000 n 
-0004329625 00000 n 
-0004329767 00000 n 
-0004329912 00000 n 
-0004330057 00000 n 
-0004330201 00000 n 
-0004330343 00000 n 
-0004330485 00000 n 
-0004330628 00000 n 
-0004330771 00000 n 
-0004330914 00000 n 
-0004331057 00000 n 
-0004331200 00000 n 
-0004331343 00000 n 
-0004331486 00000 n 
-0004331628 00000 n 
-0004331770 00000 n 
-0004331912 00000 n 
-0004332054 00000 n 
-0004332196 00000 n 
-0004332338 00000 n 
-0004332480 00000 n 
-0004332623 00000 n 
-0004332766 00000 n 
-0004332909 00000 n 
-0004333051 00000 n 
-0004333192 00000 n 
-0004333335 00000 n 
-0004333477 00000 n 
-0004333619 00000 n 
-0004333761 00000 n 
-0004333902 00000 n 
-0004334043 00000 n 
-0004334184 00000 n 
-0004334325 00000 n 
-0004334467 00000 n 
-0004334610 00000 n 
-0004334752 00000 n 
-0004334893 00000 n 
-0004335034 00000 n 
-0004335175 00000 n 
-0004335318 00000 n 
-0004335461 00000 n 
-0004335603 00000 n 
-0004335745 00000 n 
-0004335887 00000 n 
-0004336029 00000 n 
-0004336171 00000 n 
-0004336312 00000 n 
-0004336454 00000 n 
-0004336597 00000 n 
-0004336740 00000 n 
-0004336883 00000 n 
-0004337026 00000 n 
-0004337169 00000 n 
-0004337312 00000 n 
-0004337454 00000 n 
-0004337595 00000 n 
-0004337736 00000 n 
-0004337877 00000 n 
-0004338020 00000 n 
-0004338165 00000 n 
-0004338309 00000 n 
-0004338452 00000 n 
-0004338593 00000 n 
-0004338735 00000 n 
-0004338878 00000 n 
-0004339021 00000 n 
-0004339164 00000 n 
-0004339306 00000 n 
-0004339449 00000 n 
-0004339592 00000 n 
-0004339735 00000 n 
-0004339879 00000 n 
-0004340024 00000 n 
-0004340167 00000 n 
-0004340309 00000 n 
-0004340452 00000 n 
-0004340594 00000 n 
-0004340735 00000 n 
-0004340876 00000 n 
-0004341017 00000 n 
-0004341158 00000 n 
-0004341300 00000 n 
-0004341443 00000 n 
-0004341585 00000 n 
-0004341728 00000 n 
-0004341871 00000 n 
-0004342014 00000 n 
-0004342157 00000 n 
-0004342300 00000 n 
-0004342443 00000 n 
-0004342586 00000 n 
-0004342729 00000 n 
-0004342871 00000 n 
-0004343012 00000 n 
-0004343155 00000 n 
-0004343297 00000 n 
-0004343438 00000 n 
-0004343579 00000 n 
-0004343720 00000 n 
-0004343862 00000 n 
-0004344005 00000 n 
-0004344147 00000 n 
-0004344289 00000 n 
-0004344431 00000 n 
-0004344573 00000 n 
-0004344716 00000 n 
-0004344859 00000 n 
-0004345002 00000 n 
-0004345144 00000 n 
-0004345286 00000 n 
-0004345428 00000 n 
-0004345569 00000 n 
-0004345709 00000 n 
-0004345841 00000 n 
-0004345966 00000 n 
-0004346091 00000 n 
-0004346216 00000 n 
-0004346341 00000 n 
-0004346466 00000 n 
-0004346591 00000 n 
-0004346715 00000 n 
-0004346838 00000 n 
-0004346962 00000 n 
-0004347093 00000 n 
-0004347223 00000 n 
-0004347353 00000 n 
-0004347485 00000 n 
-0004347622 00000 n 
-0004347764 00000 n 
-0004347905 00000 n 
-0004348051 00000 n 
-0004348202 00000 n 
-0004348341 00000 n 
-0004348417 00000 n 
-0004348551 00000 n 
-0004348677 00000 n 
-0004348804 00000 n 
-0004348931 00000 n 
-0004349057 00000 n 
-0004349184 00000 n 
-0004349311 00000 n 
-0004349438 00000 n 
-0004349565 00000 n 
-0004349692 00000 n 
-0004349819 00000 n 
-0004349944 00000 n 
-0004350069 00000 n 
-0004350194 00000 n 
-0004350319 00000 n 
-0004350447 00000 n 
-0004350582 00000 n 
-0004350726 00000 n 
-0004350869 00000 n 
-0004351012 00000 n 
-0004351153 00000 n 
-0004351295 00000 n 
-0004351436 00000 n 
-0004351578 00000 n 
-0004351721 00000 n 
-0004351863 00000 n 
-0004352005 00000 n 
-0004352148 00000 n 
-0004352291 00000 n 
-0004352433 00000 n 
-0004352575 00000 n 
-0004352718 00000 n 
-0004352860 00000 n 
-0004353001 00000 n 
-0004353142 00000 n 
-0004353275 00000 n 
-0004353399 00000 n 
-0004353526 00000 n 
-0004353655 00000 n 
-0004353731 00000 n 
-0004353865 00000 n 
-0004353991 00000 n 
-0004354125 00000 n 
-0004354268 00000 n 
-0004354410 00000 n 
-0004354543 00000 n 
-0004354646 00000 n 
-0004354779 00000 n 
-0004354852 00000 n 
-0004354943 00000 n 
-0004354985 00000 n 
-0004355177 00000 n 
+0000029707 00000 n 
+0003963532 00000 n 
+0000031436 00000 n 
+0000031586 00000 n 
+0000031739 00000 n 
+0000031894 00000 n 
+0000032049 00000 n 
+0000032208 00000 n 
+0000032372 00000 n 
+0000032537 00000 n 
+0000032702 00000 n 
+0000032862 00000 n 
+0000033026 00000 n 
+0000033191 00000 n 
+0000033355 00000 n 
+0000033514 00000 n 
+0000033678 00000 n 
+0000033842 00000 n 
+0000033995 00000 n 
+0000034147 00000 n 
+0000034301 00000 n 
+0000034460 00000 n 
+0000034613 00000 n 
+0000034772 00000 n 
+0000034931 00000 n 
+0000035085 00000 n 
+0000035244 00000 n 
+0000035403 00000 n 
+0000035561 00000 n 
+0000037836 00000 n 
+0000037987 00000 n 
+0000038141 00000 n 
+0000038300 00000 n 
+0000035838 00000 n 
+0000031058 00000 n 
+0000029886 00000 n 
+0000035713 00000 n 
+0000035776 00000 n 
+0003963714 00000 n 
+0000038454 00000 n 
+0000038613 00000 n 
+0000038777 00000 n 
+0000038935 00000 n 
+0000039089 00000 n 
+0000039248 00000 n 
+0000039407 00000 n 
+0000039566 00000 n 
+0000039724 00000 n 
+0000039883 00000 n 
+0000040042 00000 n 
+0000040201 00000 n 
+0000040365 00000 n 
+0000040524 00000 n 
+0000040679 00000 n 
+0000040833 00000 n 
+0000040985 00000 n 
+0000041139 00000 n 
+0000041298 00000 n 
+0000041452 00000 n 
+0000041611 00000 n 
+0000041770 00000 n 
+0000041924 00000 n 
+0000042083 00000 n 
+0000042241 00000 n 
+0000042399 00000 n 
+0000042563 00000 n 
+0000042727 00000 n 
+0000042886 00000 n 
+0000043045 00000 n 
+0000043204 00000 n 
+0000045799 00000 n 
+0000045950 00000 n 
+0000046104 00000 n 
+0000046258 00000 n 
+0000046417 00000 n 
+0000046571 00000 n 
+0000046730 00000 n 
+0000043420 00000 n 
+0000037386 00000 n 
+0000035954 00000 n 
+0000043357 00000 n 
+0003962818 00000 n 
+0000046894 00000 n 
+0000047058 00000 n 
+0000047221 00000 n 
+0000047385 00000 n 
+0000047549 00000 n 
+0000047713 00000 n 
+0000047875 00000 n 
+0000048037 00000 n 
+0000048199 00000 n 
+0000048361 00000 n 
+0000048523 00000 n 
+0000048685 00000 n 
+0000048847 00000 n 
+0000049005 00000 n 
+0000049163 00000 n 
+0000049317 00000 n 
+0000049476 00000 n 
+0000049635 00000 n 
+0000049794 00000 n 
+0000049954 00000 n 
+0000050119 00000 n 
+0000050284 00000 n 
+0000050449 00000 n 
+0000050609 00000 n 
+0000050769 00000 n 
+0000050923 00000 n 
+0000051078 00000 n 
+0000051238 00000 n 
+0000051398 00000 n 
+0000051557 00000 n 
+0000051717 00000 n 
+0000051871 00000 n 
+0000054319 00000 n 
+0000054478 00000 n 
+0000054638 00000 n 
+0000054798 00000 n 
+0000054958 00000 n 
+0000052092 00000 n 
+0000045313 00000 n 
+0000043536 00000 n 
+0000052029 00000 n 
+0000055118 00000 n 
+0000055273 00000 n 
+0000055427 00000 n 
+0000055580 00000 n 
+0000055735 00000 n 
+0000055895 00000 n 
+0000056049 00000 n 
+0000056209 00000 n 
+0000056374 00000 n 
+0000056539 00000 n 
+0000056704 00000 n 
+0000056864 00000 n 
+0000057018 00000 n 
+0000057178 00000 n 
+0000057333 00000 n 
+0000057479 00000 n 
+0000057631 00000 n 
+0000057786 00000 n 
+0000057946 00000 n 
+0000058101 00000 n 
+0000058261 00000 n 
+0000058420 00000 n 
+0000058575 00000 n 
+0000058735 00000 n 
+0000058895 00000 n 
+0000059055 00000 n 
+0000059215 00000 n 
+0000059378 00000 n 
+0000059543 00000 n 
+0000059708 00000 n 
+0000059870 00000 n 
+0000062393 00000 n 
+0000062552 00000 n 
+0000062716 00000 n 
+0000062881 00000 n 
+0000063040 00000 n 
+0000060094 00000 n 
+0000053860 00000 n 
+0000052194 00000 n 
+0000060031 00000 n 
+0000063195 00000 n 
+0000063348 00000 n 
+0000063503 00000 n 
+0000063663 00000 n 
+0000063828 00000 n 
+0000063993 00000 n 
+0000064158 00000 n 
+0000064323 00000 n 
+0000064487 00000 n 
+0000064652 00000 n 
+0000064807 00000 n 
+0000064966 00000 n 
+0000065125 00000 n 
+0000065285 00000 n 
+0000065440 00000 n 
+0000065599 00000 n 
+0000065764 00000 n 
+0000065929 00000 n 
+0000066094 00000 n 
+0000066254 00000 n 
+0000066419 00000 n 
+0000066584 00000 n 
+0000066744 00000 n 
+0000066897 00000 n 
+0000067052 00000 n 
+0000067212 00000 n 
+0000067366 00000 n 
+0000067525 00000 n 
+0000067685 00000 n 
+0000067839 00000 n 
+0000067998 00000 n 
+0000068163 00000 n 
+0000068323 00000 n 
+0000068482 00000 n 
+0000070776 00000 n 
+0000070929 00000 n 
+0000071085 00000 n 
+0000068698 00000 n 
+0000061907 00000 n 
+0000060196 00000 n 
+0000068635 00000 n 
+0003964569 00000 n 
+0000071246 00000 n 
+0000071402 00000 n 
+0000071563 00000 n 
+0000071719 00000 n 
+0000071879 00000 n 
+0000072044 00000 n 
+0000072190 00000 n 
+0000072344 00000 n 
+0000072499 00000 n 
+0000072660 00000 n 
+0000072816 00000 n 
+0000072977 00000 n 
+0000073143 00000 n 
+0000073298 00000 n 
+0000073459 00000 n 
+0000073620 00000 n 
+0000073786 00000 n 
+0000073952 00000 n 
+0000074113 00000 n 
+0000074273 00000 n 
+0000074439 00000 n 
+0000074605 00000 n 
+0000074771 00000 n 
+0000074932 00000 n 
+0000075087 00000 n 
+0000075241 00000 n 
+0000075397 00000 n 
+0000075558 00000 n 
+0000075714 00000 n 
+0000075873 00000 n 
+0000076034 00000 n 
+0000076190 00000 n 
+0000076350 00000 n 
+0000078843 00000 n 
+0000079008 00000 n 
+0000079174 00000 n 
+0000079340 00000 n 
+0000079501 00000 n 
+0000076572 00000 n 
+0000070317 00000 n 
+0000068800 00000 n 
+0000076509 00000 n 
+0000079662 00000 n 
+0000079818 00000 n 
+0000079971 00000 n 
+0000080127 00000 n 
+0000080283 00000 n 
+0000080439 00000 n 
+0000080600 00000 n 
+0000080765 00000 n 
+0000080930 00000 n 
+0000081096 00000 n 
+0000081257 00000 n 
+0000081418 00000 n 
+0000081579 00000 n 
+0000081740 00000 n 
+0000081901 00000 n 
+0000082062 00000 n 
+0000082222 00000 n 
+0000082382 00000 n 
+0000082538 00000 n 
+0000082692 00000 n 
+0000082848 00000 n 
+0000083004 00000 n 
+0000083158 00000 n 
+0000083313 00000 n 
+0000083468 00000 n 
+0000083624 00000 n 
+0000083780 00000 n 
+0000083941 00000 n 
+0000084101 00000 n 
+0000084261 00000 n 
+0000084417 00000 n 
+0000084577 00000 n 
+0000086615 00000 n 
+0000086770 00000 n 
+0000086926 00000 n 
+0000087082 00000 n 
+0000087243 00000 n 
+0000084794 00000 n 
+0000078375 00000 n 
+0000076674 00000 n 
+0000084731 00000 n 
+0000087404 00000 n 
+0000087565 00000 n 
+0000087719 00000 n 
+0000087875 00000 n 
+0000088031 00000 n 
+0000088192 00000 n 
+0000088347 00000 n 
+0000088508 00000 n 
+0000088674 00000 n 
+0000088835 00000 n 
+0000089001 00000 n 
+0000089162 00000 n 
+0000089327 00000 n 
+0000089488 00000 n 
+0000089654 00000 n 
+0000089815 00000 n 
+0000089971 00000 n 
+0000090132 00000 n 
+0000090288 00000 n 
+0000090442 00000 n 
+0000090596 00000 n 
+0000090813 00000 n 
+0000086246 00000 n 
+0000084896 00000 n 
+0000090750 00000 n 
+0000092782 00000 n 
+0000092936 00000 n 
+0000093088 00000 n 
+0000093241 00000 n 
+0000093392 00000 n 
+0000093545 00000 n 
+0000093698 00000 n 
+0000093851 00000 n 
+0000094004 00000 n 
+0000094158 00000 n 
+0000094312 00000 n 
+0000094466 00000 n 
+0000094619 00000 n 
+0000094773 00000 n 
+0000094927 00000 n 
+0000095081 00000 n 
+0000095235 00000 n 
+0000095388 00000 n 
+0000095542 00000 n 
+0000095696 00000 n 
+0000095850 00000 n 
+0000096005 00000 n 
+0000096160 00000 n 
+0000096315 00000 n 
+0000096469 00000 n 
+0000098014 00000 n 
+0000098168 00000 n 
+0000098323 00000 n 
+0000098478 00000 n 
+0000096747 00000 n 
+0000092422 00000 n 
+0000090915 00000 n 
+0000096622 00000 n 
+0000096685 00000 n 
+0000185993 00000 n 
+0000240156 00000 n 
+0000300591 00000 n 
+0000411275 00000 n 
+0000666264 00000 n 
+0000836690 00000 n 
+0000949688 00000 n 
+0001145119 00000 n 
+0001209841 00000 n 
+0001210216 00000 n 
+0001346506 00000 n 
+0001346945 00000 n 
+0001347071 00000 n 
+0001500984 00000 n 
+0001601961 00000 n 
+0001632361 00000 n 
+0001705100 00000 n 
+0001818708 00000 n 
+0002012733 00000 n 
+0002046768 00000 n 
+0002468928 00000 n 
+0002513840 00000 n 
+0002514099 00000 n 
+0002549607 00000 n 
+0002549867 00000 n 
+0000098633 00000 n 
+0000098789 00000 n 
+0000098945 00000 n 
+0000099100 00000 n 
+0000099255 00000 n 
+0000099410 00000 n 
+0000099565 00000 n 
+0000099719 00000 n 
+0000099874 00000 n 
+0000100029 00000 n 
+0000100247 00000 n 
+0000097753 00000 n 
+0000096863 00000 n 
+0000100184 00000 n 
+0002708271 00000 n 
+0002783980 00000 n 
+0002877621 00000 n 
+0003038890 00000 n 
+0003039019 00000 n 
+0003119983 00000 n 
+0003219131 00000 n 
+0003273090 00000 n 
+0003300425 00000 n 
+0003330825 00000 n 
+0003351479 00000 n 
+0003368658 00000 n 
+0003388940 00000 n 
+0003406812 00000 n 
+0000101719 00000 n 
+0000101871 00000 n 
+0000102023 00000 n 
+0000102175 00000 n 
+0000102325 00000 n 
+0000102477 00000 n 
+0000102629 00000 n 
+0000102781 00000 n 
+0000102933 00000 n 
+0000103086 00000 n 
+0000103239 00000 n 
+0000103392 00000 n 
+0000103546 00000 n 
+0000103888 00000 n 
+0000101467 00000 n 
+0000100335 00000 n 
+0000103700 00000 n 
+0000103763 00000 n 
+0000103825 00000 n 
+0003964695 00000 n 
+0000121101 00000 n 
+0000240281 00000 n 
+0000411150 00000 n 
+0000491227 00000 n 
+0000672819 00000 n 
+0000836941 00000 n 
+0000953261 00000 n 
+0001023015 00000 n 
+0001145245 00000 n 
+0002051449 00000 n 
+0002409263 00000 n 
+0003304962 00000 n 
+0003330696 00000 n 
+0000106182 00000 n 
+0000105933 00000 n 
+0000104004 00000 n 
+0000106056 00000 n 
+0000106119 00000 n 
+0003964259 00000 n 
+0000108654 00000 n 
+0000108405 00000 n 
+0000106298 00000 n 
+0000108528 00000 n 
+0000108591 00000 n 
+0000112622 00000 n 
+0000112311 00000 n 
+0000108770 00000 n 
+0000112434 00000 n 
+0000112497 00000 n 
+0000112560 00000 n 
+0000113581 00000 n 
+0000113395 00000 n 
+0000112738 00000 n 
+0000113518 00000 n 
+0000120886 00000 n 
+0000117350 00000 n 
+0000116913 00000 n 
+0000113669 00000 n 
+0000117036 00000 n 
+0000117099 00000 n 
+0000117162 00000 n 
+0000117224 00000 n 
+0000117287 00000 n 
+0000121288 00000 n 
+0000120742 00000 n 
+0000117466 00000 n 
+0000121038 00000 n 
+0000121163 00000 n 
+0000121225 00000 n 
+0003964821 00000 n 
+0000125799 00000 n 
+0000125487 00000 n 
+0000121432 00000 n 
+0000125610 00000 n 
+0000125673 00000 n 
+0000125736 00000 n 
+0003962996 00000 n 
+0000130910 00000 n 
+0000131155 00000 n 
+0000130766 00000 n 
+0000125957 00000 n 
+0000131092 00000 n 
+0000135767 00000 n 
+0000135518 00000 n 
+0000131285 00000 n 
+0000135641 00000 n 
+0000135704 00000 n 
+0000137154 00000 n 
+0000136968 00000 n 
+0000135897 00000 n 
+0000137091 00000 n 
+0003962345 00000 n 
+0000137925 00000 n 
+0000137739 00000 n 
+0000137284 00000 n 
+0000137862 00000 n 
+0000138730 00000 n 
+0000138484 00000 n 
+0000138013 00000 n 
+0000138607 00000 n 
+0003964947 00000 n 
+0000141623 00000 n 
+0000141131 00000 n 
+0000138832 00000 n 
+0000141254 00000 n 
+0000141317 00000 n 
+0000141441 00000 n 
+0000146101 00000 n 
+0000146270 00000 n 
+0000147183 00000 n 
+0000145948 00000 n 
+0000141725 00000 n 
+0000146439 00000 n 
+0000146685 00000 n 
+0000146748 00000 n 
+0000146811 00000 n 
+0000146874 00000 n 
+0000146935 00000 n 
+0000146998 00000 n 
+0000147061 00000 n 
+0000147122 00000 n 
+0000151106 00000 n 
+0000153863 00000 n 
+0000150962 00000 n 
+0000147327 00000 n 
+0000151263 00000 n 
+0000151326 00000 n 
+0000151389 00000 n 
+0003962492 00000 n 
+0000151452 00000 n 
+0000151515 00000 n 
+0000151578 00000 n 
+0000151641 00000 n 
+0000151704 00000 n 
+0000151767 00000 n 
+0000151829 00000 n 
+0000151892 00000 n 
+0000151955 00000 n 
+0000152018 00000 n 
+0000152081 00000 n 
+0000152144 00000 n 
+0000152207 00000 n 
+0000152268 00000 n 
+0000152331 00000 n 
+0000152394 00000 n 
+0000152455 00000 n 
+0000152516 00000 n 
+0000152579 00000 n 
+0000152641 00000 n 
+0000152703 00000 n 
+0000152826 00000 n 
+0000152889 00000 n 
+0000152952 00000 n 
+0000153015 00000 n 
+0000153076 00000 n 
+0000153137 00000 n 
+0000153198 00000 n 
+0000153259 00000 n 
+0000153319 00000 n 
+0000153380 00000 n 
+0000153441 00000 n 
+0000153502 00000 n 
+0000153563 00000 n 
+0000153624 00000 n 
+0000153685 00000 n 
+0000153746 00000 n 
+0000153807 00000 n 
+0000185407 00000 n 
+0000185559 00000 n 
+0000159173 00000 n 
+0000158616 00000 n 
+0000154006 00000 n 
+0000158739 00000 n 
+0000158802 00000 n 
+0000158865 00000 n 
+0000158928 00000 n 
+0000158989 00000 n 
+0000185716 00000 n 
+0000162511 00000 n 
+0000186304 00000 n 
+0000162349 00000 n 
+0000159345 00000 n 
+0000185870 00000 n 
+0000186055 00000 n 
+0000186118 00000 n 
+0000186180 00000 n 
+0000186243 00000 n 
+0000172380 00000 n 
+0002468479 00000 n 
+0003219324 00000 n 
+0000190261 00000 n 
+0000190423 00000 n 
+0000197016 00000 n 
+0000192433 00000 n 
+0000190108 00000 n 
+0000186471 00000 n 
+0000190581 00000 n 
+0000190644 00000 n 
+0000190707 00000 n 
+0000190770 00000 n 
+0000190831 00000 n 
+0000190892 00000 n 
+0000190953 00000 n 
+0000191014 00000 n 
+0000191075 00000 n 
+0000191136 00000 n 
+0000191198 00000 n 
+0000191261 00000 n 
+0000191324 00000 n 
+0000191385 00000 n 
+0000191446 00000 n 
+0000191509 00000 n 
+0000191571 00000 n 
+0000191634 00000 n 
+0000191695 00000 n 
+0000191756 00000 n 
+0000191817 00000 n 
+0000191879 00000 n 
+0000191940 00000 n 
+0000192000 00000 n 
+0000192061 00000 n 
+0000192122 00000 n 
+0000192183 00000 n 
+0000192246 00000 n 
+0000192309 00000 n 
+0000192372 00000 n 
+0003965073 00000 n 
+0000200361 00000 n 
+0000207579 00000 n 
+0000200423 00000 n 
+0000196872 00000 n 
+0000192549 00000 n 
+0000197170 00000 n 
+0000197233 00000 n 
+0000197296 00000 n 
+0000197359 00000 n 
+0000197422 00000 n 
+0000197482 00000 n 
+0000197543 00000 n 
+0000197606 00000 n 
+0000197668 00000 n 
+0000197729 00000 n 
+0000197792 00000 n 
+0000197855 00000 n 
+0000197916 00000 n 
+0000197979 00000 n 
+0000198042 00000 n 
+0000198103 00000 n 
+0000198164 00000 n 
+0000198225 00000 n 
+0000198286 00000 n 
+0000198349 00000 n 
+0000198412 00000 n 
+0000198474 00000 n 
+0000198537 00000 n 
+0000198600 00000 n 
+0000198663 00000 n 
+0000198726 00000 n 
+0000198789 00000 n 
+0000198852 00000 n 
+0000198915 00000 n 
+0000198978 00000 n 
+0000199040 00000 n 
+0000199103 00000 n 
+0000199166 00000 n 
+0000199229 00000 n 
+0000199292 00000 n 
+0000199355 00000 n 
+0000199418 00000 n 
+0000199481 00000 n 
+0000199544 00000 n 
+0000199607 00000 n 
+0000199670 00000 n 
+0000199733 00000 n 
+0000199796 00000 n 
+0000199859 00000 n 
+0000199922 00000 n 
+0000199985 00000 n 
+0000200048 00000 n 
+0000200111 00000 n 
+0000200174 00000 n 
+0000200236 00000 n 
+0000200299 00000 n 
+0000205078 00000 n 
+0000205232 00000 n 
+0000208146 00000 n 
+0000204925 00000 n 
+0000200566 00000 n 
+0000205379 00000 n 
+0000205442 00000 n 
+0000205505 00000 n 
+0000205568 00000 n 
+0000205631 00000 n 
+0000205693 00000 n 
+0000205756 00000 n 
+0000205819 00000 n 
+0000205882 00000 n 
+0000205945 00000 n 
+0000206008 00000 n 
+0000206071 00000 n 
+0000206134 00000 n 
+0000206197 00000 n 
+0000206259 00000 n 
+0000206322 00000 n 
+0000206385 00000 n 
+0000206448 00000 n 
+0000206511 00000 n 
+0000206574 00000 n 
+0000206637 00000 n 
+0000206700 00000 n 
+0000206763 00000 n 
+0000206824 00000 n 
+0000206887 00000 n 
+0000206950 00000 n 
+0000207013 00000 n 
+0000207076 00000 n 
+0000207139 00000 n 
+0000207202 00000 n 
+0000207265 00000 n 
+0000207328 00000 n 
+0000207390 00000 n 
+0000207453 00000 n 
+0000207516 00000 n 
+0000207642 00000 n 
+0000207705 00000 n 
+0000207768 00000 n 
+0000207831 00000 n 
+0000207894 00000 n 
+0000207957 00000 n 
+0000208020 00000 n 
+0000208083 00000 n 
+0000212428 00000 n 
+0000211773 00000 n 
+0000213805 00000 n 
+0000211629 00000 n 
+0000208289 00000 n 
+0000211924 00000 n 
+0000211987 00000 n 
+0000212050 00000 n 
+0000212113 00000 n 
+0000212176 00000 n 
+0000212239 00000 n 
+0000212302 00000 n 
+0000212365 00000 n 
+0000212491 00000 n 
+0000212552 00000 n 
+0000212613 00000 n 
+0000212676 00000 n 
+0000212739 00000 n 
+0000212802 00000 n 
+0000212865 00000 n 
+0000212928 00000 n 
+0000212989 00000 n 
+0000213052 00000 n 
+0000213115 00000 n 
+0000213178 00000 n 
+0000213241 00000 n 
+0000213303 00000 n 
+0000213366 00000 n 
+0000213429 00000 n 
+0000213492 00000 n 
+0000213555 00000 n 
+0000213618 00000 n 
+0000213681 00000 n 
+0000217175 00000 n 
+0000217329 00000 n 
+0000221012 00000 n 
+0000217856 00000 n 
+0000217022 00000 n 
+0000213949 00000 n 
+0000217484 00000 n 
+0000217608 00000 n 
+0000217793 00000 n 
+0000240344 00000 n 
+0000240219 00000 n 
+0000239787 00000 n 
+0000239939 00000 n 
+0000240909 00000 n 
+0000220859 00000 n 
+0000217972 00000 n 
+0000240093 00000 n 
+0000240407 00000 n 
+0000240470 00000 n 
+0000240533 00000 n 
+0000240596 00000 n 
+0000240659 00000 n 
+0000240722 00000 n 
+0000240783 00000 n 
+0000240846 00000 n 
+0000229277 00000 n 
+0000253781 00000 n 
+0000246837 00000 n 
+0000244059 00000 n 
+0000241076 00000 n 
+0000244182 00000 n 
+0000244245 00000 n 
+0000244308 00000 n 
+0000244369 00000 n 
+0000244430 00000 n 
+0000244491 00000 n 
+0000244552 00000 n 
+0000244613 00000 n 
+0000244674 00000 n 
+0000244734 00000 n 
+0000244795 00000 n 
+0000244856 00000 n 
+0000244919 00000 n 
+0000244982 00000 n 
+0000245043 00000 n 
+0000245104 00000 n 
+0000245164 00000 n 
+0000245225 00000 n 
+0000245286 00000 n 
+0000245347 00000 n 
+0000245408 00000 n 
+0000245469 00000 n 
+0000245530 00000 n 
+0000245592 00000 n 
+0000245655 00000 n 
+0000245716 00000 n 
+0000245779 00000 n 
+0000245841 00000 n 
+0000245902 00000 n 
+0000245965 00000 n 
+0000246028 00000 n 
+0000246089 00000 n 
+0000246152 00000 n 
+0000246215 00000 n 
+0000246276 00000 n 
+0000246337 00000 n 
+0000246398 00000 n 
+0000246459 00000 n 
+0000246522 00000 n 
+0000246585 00000 n 
+0000246648 00000 n 
+0000246711 00000 n 
+0000246774 00000 n 
+0003965199 00000 n 
+0000253904 00000 n 
+0000251346 00000 n 
+0000246939 00000 n 
+0000251469 00000 n 
+0000251532 00000 n 
+0000251595 00000 n 
+0000251656 00000 n 
+0000251719 00000 n 
+0000251780 00000 n 
+0000251841 00000 n 
+0000251902 00000 n 
+0000251963 00000 n 
+0000252024 00000 n 
+0000252084 00000 n 
+0000252145 00000 n 
+0000252208 00000 n 
+0000252271 00000 n 
+0000252334 00000 n 
+0000252397 00000 n 
+0000252460 00000 n 
+0000252523 00000 n 
+0000252586 00000 n 
+0000252648 00000 n 
+0000252711 00000 n 
+0000252774 00000 n 
+0000252837 00000 n 
+0000252900 00000 n 
+0000252963 00000 n 
+0000253026 00000 n 
+0000253089 00000 n 
+0000253152 00000 n 
+0000253214 00000 n 
+0000253277 00000 n 
+0000253340 00000 n 
+0000253403 00000 n 
+0000253466 00000 n 
+0000253529 00000 n 
+0000253592 00000 n 
+0000253655 00000 n 
+0000253718 00000 n 
+0000258758 00000 n 
+0000258572 00000 n 
+0000254075 00000 n 
+0000258695 00000 n 
+0000260309 00000 n 
+0000260123 00000 n 
+0000258888 00000 n 
+0000260246 00000 n 
+0000263903 00000 n 
+0000264360 00000 n 
+0000263759 00000 n 
+0000260411 00000 n 
+0000264051 00000 n 
+0000264175 00000 n 
+0000268023 00000 n 
+0000268183 00000 n 
+0000268518 00000 n 
+0000267870 00000 n 
+0000264462 00000 n 
+0000268333 00000 n 
+0000324176 00000 n 
+0000300100 00000 n 
+0000300252 00000 n 
+0000271588 00000 n 
+0000300716 00000 n 
+0000271435 00000 n 
+0000268634 00000 n 
+0000300406 00000 n 
+0000300654 00000 n 
+0003965325 00000 n 
+0000288704 00000 n 
+0001985200 00000 n 
+0000304228 00000 n 
+0000304380 00000 n 
+0000310730 00000 n 
+0000307174 00000 n 
+0000304075 00000 n 
+0000300897 00000 n 
+0000304533 00000 n 
+0000304596 00000 n 
+0000304659 00000 n 
+0000304722 00000 n 
+0000304785 00000 n 
+0000304845 00000 n 
+0000304906 00000 n 
+0000304967 00000 n 
+0000305028 00000 n 
+0000305089 00000 n 
+0000305152 00000 n 
+0000305215 00000 n 
+0000305278 00000 n 
+0000305340 00000 n 
+0000305401 00000 n 
+0000305464 00000 n 
+0000305523 00000 n 
+0000305586 00000 n 
+0000305647 00000 n 
+0000305708 00000 n 
+0000305769 00000 n 
+0000305830 00000 n 
+0000305893 00000 n 
+0000305956 00000 n 
+0000306017 00000 n 
+0000306078 00000 n 
+0000306138 00000 n 
+0000306199 00000 n 
+0000306260 00000 n 
+0000306321 00000 n 
+0000306382 00000 n 
+0000306443 00000 n 
+0000306504 00000 n 
+0000306565 00000 n 
+0000306626 00000 n 
+0000306686 00000 n 
+0000306747 00000 n 
+0000306808 00000 n 
+0000306869 00000 n 
+0000306930 00000 n 
+0000306991 00000 n 
+0000307052 00000 n 
+0000307113 00000 n 
+0000331812 00000 n 
+0000333696 00000 n 
+0000314099 00000 n 
+0000310586 00000 n 
+0000307290 00000 n 
+0000310882 00000 n 
+0000310945 00000 n 
+0000311008 00000 n 
+0000311071 00000 n 
+0000311133 00000 n 
+0000311196 00000 n 
+0000311259 00000 n 
+0000311322 00000 n 
+0000311385 00000 n 
+0000311448 00000 n 
+0000311511 00000 n 
+0000311574 00000 n 
+0000311637 00000 n 
+0000311699 00000 n 
+0000311762 00000 n 
+0000311825 00000 n 
+0000311888 00000 n 
+0000311951 00000 n 
+0000312014 00000 n 
+0000312077 00000 n 
+0000312140 00000 n 
+0000312203 00000 n 
+0000312266 00000 n 
+0000312329 00000 n 
+0000312390 00000 n 
+0000312451 00000 n 
+0000312511 00000 n 
+0000312572 00000 n 
+0000312633 00000 n 
+0000312694 00000 n 
+0000312755 00000 n 
+0000312816 00000 n 
+0000312877 00000 n 
+0000312938 00000 n 
+0000312999 00000 n 
+0000313059 00000 n 
+0000313120 00000 n 
+0000313181 00000 n 
+0000313242 00000 n 
+0000313303 00000 n 
+0000313364 00000 n 
+0000313425 00000 n 
+0000313486 00000 n 
+0000313547 00000 n 
+0000313607 00000 n 
+0000313668 00000 n 
+0000313729 00000 n 
+0000313790 00000 n 
+0000313851 00000 n 
+0000313912 00000 n 
+0000313973 00000 n 
+0000314036 00000 n 
+0000316528 00000 n 
+0000316680 00000 n 
+0000318189 00000 n 
+0000316375 00000 n 
+0000314215 00000 n 
+0000316829 00000 n 
+0000316892 00000 n 
+0000316955 00000 n 
+0000317018 00000 n 
+0000317081 00000 n 
+0000317142 00000 n 
+0000317203 00000 n 
+0000317264 00000 n 
+0000317325 00000 n 
+0000317385 00000 n 
+0000317448 00000 n 
+0000317511 00000 n 
+0000317572 00000 n 
+0000317633 00000 n 
+0000317692 00000 n 
+0000317753 00000 n 
+0000317816 00000 n 
+0000317878 00000 n 
+0000317939 00000 n 
+0000318002 00000 n 
+0000318065 00000 n 
+0000318126 00000 n 
+0000324915 00000 n 
+0000321222 00000 n 
+0000318305 00000 n 
+0000321345 00000 n 
+0000321408 00000 n 
+0000321471 00000 n 
+0000321534 00000 n 
+0000321597 00000 n 
+0000321660 00000 n 
+0000321723 00000 n 
+0000321786 00000 n 
+0000321849 00000 n 
+0000321912 00000 n 
+0000321975 00000 n 
+0000322038 00000 n 
+0000322101 00000 n 
+0000322163 00000 n 
+0000322226 00000 n 
+0000322289 00000 n 
+0000322352 00000 n 
+0000322415 00000 n 
+0000322478 00000 n 
+0000322541 00000 n 
+0000322604 00000 n 
+0000322667 00000 n 
+0000322729 00000 n 
+0000322792 00000 n 
+0000322855 00000 n 
+0000322918 00000 n 
+0000322981 00000 n 
+0000323044 00000 n 
+0000323107 00000 n 
+0000323170 00000 n 
+0000323233 00000 n 
+0000323295 00000 n 
+0000323358 00000 n 
+0000323421 00000 n 
+0000323484 00000 n 
+0000323547 00000 n 
+0000323610 00000 n 
+0000323673 00000 n 
+0000323736 00000 n 
+0000323799 00000 n 
+0000323861 00000 n 
+0000323924 00000 n 
+0000323987 00000 n 
+0000324050 00000 n 
+0000324113 00000 n 
+0000324239 00000 n 
+0000324302 00000 n 
+0000324365 00000 n 
+0000324426 00000 n 
+0000324487 00000 n 
+0000324548 00000 n 
+0000324609 00000 n 
+0000324670 00000 n 
+0000324730 00000 n 
+0000324793 00000 n 
+0000324855 00000 n 
+0000333759 00000 n 
+0000330118 00000 n 
+0000325031 00000 n 
+0000330241 00000 n 
+0000330304 00000 n 
+0000330367 00000 n 
+0000330430 00000 n 
+0000330493 00000 n 
+0000330555 00000 n 
+0000330618 00000 n 
+0000330681 00000 n 
+0000330744 00000 n 
+0000330807 00000 n 
+0000330870 00000 n 
+0000330933 00000 n 
+0000330996 00000 n 
+0000331059 00000 n 
+0000331121 00000 n 
+0000331184 00000 n 
+0000331247 00000 n 
+0000331310 00000 n 
+0000331373 00000 n 
+0000331436 00000 n 
+0000331499 00000 n 
+0000331562 00000 n 
+0000331625 00000 n 
+0000331686 00000 n 
+0000331749 00000 n 
+0000331875 00000 n 
+0000331938 00000 n 
+0000332001 00000 n 
+0000332064 00000 n 
+0000332127 00000 n 
+0000332190 00000 n 
+0000332253 00000 n 
+0000332312 00000 n 
+0000332375 00000 n 
+0000332438 00000 n 
+0000332501 00000 n 
+0000332564 00000 n 
+0000332627 00000 n 
+0000332690 00000 n 
+0000332753 00000 n 
+0000332816 00000 n 
+0000332878 00000 n 
+0000332941 00000 n 
+0000333004 00000 n 
+0000333067 00000 n 
+0000333130 00000 n 
+0000333193 00000 n 
+0000333256 00000 n 
+0000333319 00000 n 
+0000333382 00000 n 
+0000333444 00000 n 
+0000333507 00000 n 
+0000333570 00000 n 
+0000333633 00000 n 
+0000340378 00000 n 
+0000337202 00000 n 
+0000333888 00000 n 
+0000337325 00000 n 
+0000337449 00000 n 
+0000337511 00000 n 
+0000337574 00000 n 
+0000337635 00000 n 
+0000337696 00000 n 
+0000337757 00000 n 
+0000337818 00000 n 
+0000337879 00000 n 
+0000337938 00000 n 
+0000337999 00000 n 
+0000338060 00000 n 
+0000338121 00000 n 
+0000338182 00000 n 
+0000338243 00000 n 
+0000338304 00000 n 
+0000338365 00000 n 
+0000338426 00000 n 
+0000338486 00000 n 
+0000338547 00000 n 
+0000338608 00000 n 
+0000338669 00000 n 
+0000338730 00000 n 
+0000338791 00000 n 
+0000338852 00000 n 
+0000338913 00000 n 
+0000338974 00000 n 
+0000339034 00000 n 
+0000339095 00000 n 
+0000339156 00000 n 
+0000339217 00000 n 
+0000339278 00000 n 
+0000339339 00000 n 
+0000339400 00000 n 
+0000339461 00000 n 
+0000339522 00000 n 
+0000339582 00000 n 
+0000339644 00000 n 
+0000339704 00000 n 
+0000339765 00000 n 
+0000339828 00000 n 
+0000339891 00000 n 
+0000339952 00000 n 
+0000340013 00000 n 
+0000340073 00000 n 
+0000340134 00000 n 
+0000340195 00000 n 
+0000340256 00000 n 
+0000340317 00000 n 
+0003965451 00000 n 
+0000344155 00000 n 
+0000350757 00000 n 
+0000350909 00000 n 
+0000347186 00000 n 
+0000344011 00000 n 
+0000340522 00000 n 
+0000344306 00000 n 
+0000344369 00000 n 
+0000344432 00000 n 
+0000344495 00000 n 
+0000344556 00000 n 
+0000344617 00000 n 
+0000344678 00000 n 
+0000344739 00000 n 
+0000344800 00000 n 
+0000344861 00000 n 
+0000344922 00000 n 
+0000344983 00000 n 
+0000345043 00000 n 
+0000345104 00000 n 
+0000345165 00000 n 
+0000345226 00000 n 
+0000345287 00000 n 
+0000345348 00000 n 
+0000345409 00000 n 
+0000345470 00000 n 
+0000345531 00000 n 
+0000345592 00000 n 
+0000345653 00000 n 
+0000345714 00000 n 
+0000345777 00000 n 
+0000345840 00000 n 
+0000345901 00000 n 
+0000345962 00000 n 
+0000346023 00000 n 
+0000346084 00000 n 
+0000346145 00000 n 
+0000346206 00000 n 
+0000346269 00000 n 
+0000346332 00000 n 
+0000346393 00000 n 
+0000346454 00000 n 
+0000346515 00000 n 
+0000346575 00000 n 
+0000346636 00000 n 
+0000346697 00000 n 
+0000346758 00000 n 
+0000346819 00000 n 
+0000346880 00000 n 
+0000346941 00000 n 
+0000347002 00000 n 
+0000347063 00000 n 
+0000347123 00000 n 
+0000351874 00000 n 
+0000350604 00000 n 
+0000347302 00000 n 
+0000351059 00000 n 
+0000351122 00000 n 
+0000351185 00000 n 
+0000351248 00000 n 
+0000351311 00000 n 
+0000351374 00000 n 
+0000351437 00000 n 
+0000351500 00000 n 
+0000351563 00000 n 
+0000351626 00000 n 
+0000351689 00000 n 
+0002468605 00000 n 
+0000356745 00000 n 
+0000355741 00000 n 
+0000352004 00000 n 
+0000355864 00000 n 
+0000355989 00000 n 
+0000356052 00000 n 
+0000356115 00000 n 
+0000356178 00000 n 
+0000356241 00000 n 
+0000356304 00000 n 
+0000356367 00000 n 
+0000356430 00000 n 
+0000356493 00000 n 
+0000356556 00000 n 
+0000356619 00000 n 
+0000356682 00000 n 
+0003963894 00000 n 
+0000359083 00000 n 
+0000358771 00000 n 
+0000356918 00000 n 
+0000358894 00000 n 
+0000358957 00000 n 
+0000359020 00000 n 
+0000362721 00000 n 
+0000362871 00000 n 
+0000363330 00000 n 
+0000362568 00000 n 
+0000359213 00000 n 
+0000363018 00000 n 
+0000363143 00000 n 
+0000410935 00000 n 
+0000366343 00000 n 
+0000411400 00000 n 
+0000366199 00000 n 
+0000363432 00000 n 
+0000411087 00000 n 
+0000411212 00000 n 
+0000411338 00000 n 
+0003965577 00000 n 
+0000401387 00000 n 
+0000415798 00000 n 
+0000415947 00000 n 
+0000416284 00000 n 
+0000415645 00000 n 
+0000411553 00000 n 
+0000416097 00000 n 
+0000420303 00000 n 
+0000420458 00000 n 
+0000421806 00000 n 
+0000420150 00000 n 
+0000416414 00000 n 
+0000420611 00000 n 
+0000420736 00000 n 
+0000420799 00000 n 
+0000420862 00000 n 
+0000420925 00000 n 
+0000420988 00000 n 
+0000421051 00000 n 
+0000421114 00000 n 
+0000421177 00000 n 
+0000421240 00000 n 
+0000421303 00000 n 
+0000421365 00000 n 
+0000421428 00000 n 
+0000421491 00000 n 
+0000421554 00000 n 
+0000421617 00000 n 
+0000421680 00000 n 
+0000421743 00000 n 
+0000426752 00000 n 
+0000425533 00000 n 
+0000426939 00000 n 
+0000425389 00000 n 
+0000421936 00000 n 
+0000425682 00000 n 
+0000425745 00000 n 
+0000425808 00000 n 
+0000425871 00000 n 
+0000425934 00000 n 
+0000425997 00000 n 
+0000426060 00000 n 
+0000426123 00000 n 
+0000426186 00000 n 
+0000426249 00000 n 
+0000426312 00000 n 
+0000426375 00000 n 
+0000426438 00000 n 
+0000426500 00000 n 
+0000426563 00000 n 
+0000426626 00000 n 
+0000426689 00000 n 
+0000430400 00000 n 
+0000430602 00000 n 
+0000431693 00000 n 
+0000430247 00000 n 
+0000427097 00000 n 
+0000430753 00000 n 
+0000430816 00000 n 
+0000430879 00000 n 
+0000430942 00000 n 
+0000431005 00000 n 
+0000431068 00000 n 
+0000431131 00000 n 
+0000431194 00000 n 
+0000431257 00000 n 
+0000431382 00000 n 
+0000431445 00000 n 
+0000431508 00000 n 
+0000431571 00000 n 
+0000431632 00000 n 
+0000434571 00000 n 
+0000435896 00000 n 
+0000434427 00000 n 
+0000431837 00000 n 
+0000434722 00000 n 
+0000434785 00000 n 
+0000434848 00000 n 
+0000434909 00000 n 
+0000434970 00000 n 
+0000435033 00000 n 
+0000435096 00000 n 
+0000435157 00000 n 
+0000435218 00000 n 
+0000435279 00000 n 
+0000435339 00000 n 
+0000435402 00000 n 
+0000435463 00000 n 
+0000435524 00000 n 
+0000435585 00000 n 
+0000435646 00000 n 
+0000435709 00000 n 
+0000435772 00000 n 
+0000435833 00000 n 
+0000442068 00000 n 
+0000442867 00000 n 
+0000439051 00000 n 
+0000436012 00000 n 
+0000439174 00000 n 
+0000439237 00000 n 
+0000439300 00000 n 
+0000439363 00000 n 
+0000439426 00000 n 
+0000439489 00000 n 
+0000439552 00000 n 
+0000439615 00000 n 
+0000439678 00000 n 
+0000439741 00000 n 
+0000439804 00000 n 
+0000439867 00000 n 
+0000439930 00000 n 
+0000439992 00000 n 
+0000440055 00000 n 
+0000440118 00000 n 
+0000440181 00000 n 
+0000440244 00000 n 
+0000440307 00000 n 
+0000440370 00000 n 
+0000440433 00000 n 
+0000440496 00000 n 
+0000440558 00000 n 
+0000440621 00000 n 
+0000440684 00000 n 
+0000440747 00000 n 
+0000440810 00000 n 
+0000440873 00000 n 
+0000440936 00000 n 
+0000440999 00000 n 
+0000441062 00000 n 
+0000441124 00000 n 
+0000441187 00000 n 
+0000441250 00000 n 
+0000441313 00000 n 
+0000441376 00000 n 
+0000441439 00000 n 
+0000441502 00000 n 
+0000441565 00000 n 
+0000441628 00000 n 
+0000441690 00000 n 
+0000441753 00000 n 
+0000441816 00000 n 
+0000441879 00000 n 
+0000441942 00000 n 
+0000442005 00000 n 
+0000442131 00000 n 
+0000442194 00000 n 
+0000442257 00000 n 
+0000442318 00000 n 
+0000442381 00000 n 
+0000442442 00000 n 
+0000442503 00000 n 
+0000442564 00000 n 
+0000442624 00000 n 
+0000442685 00000 n 
+0000442746 00000 n 
+0000442807 00000 n 
+0003965703 00000 n 
+0000445285 00000 n 
+0000445438 00000 n 
+0000445595 00000 n 
+0000446614 00000 n 
+0000445123 00000 n 
+0000442983 00000 n 
+0000445752 00000 n 
+0000445815 00000 n 
+0000445876 00000 n 
+0000445937 00000 n 
+0000445998 00000 n 
+0000446059 00000 n 
+0000446120 00000 n 
+0000446180 00000 n 
+0000446241 00000 n 
+0000446364 00000 n 
+0000446427 00000 n 
+0000446490 00000 n 
+0000446551 00000 n 
+0000454747 00000 n 
+0000461403 00000 n 
+0000462410 00000 n 
+0000454810 00000 n 
+0000451795 00000 n 
+0000446744 00000 n 
+0000451918 00000 n 
+0000451981 00000 n 
+0000452044 00000 n 
+0000452107 00000 n 
+0000452170 00000 n 
+0000452232 00000 n 
+0000452295 00000 n 
+0000452358 00000 n 
+0000452421 00000 n 
+0000452484 00000 n 
+0000452547 00000 n 
+0000452610 00000 n 
+0000452673 00000 n 
+0000452736 00000 n 
+0000452798 00000 n 
+0000452861 00000 n 
+0000452924 00000 n 
+0000452987 00000 n 
+0000453050 00000 n 
+0000453113 00000 n 
+0000453176 00000 n 
+0000453239 00000 n 
+0000453302 00000 n 
+0000453363 00000 n 
+0000453426 00000 n 
+0000453489 00000 n 
+0000453552 00000 n 
+0000453615 00000 n 
+0000453678 00000 n 
+0000453741 00000 n 
+0000453804 00000 n 
+0000453867 00000 n 
+0000453929 00000 n 
+0000453992 00000 n 
+0000454055 00000 n 
+0000454118 00000 n 
+0000454181 00000 n 
+0000454244 00000 n 
+0000454307 00000 n 
+0000454370 00000 n 
+0000454433 00000 n 
+0000454495 00000 n 
+0000454558 00000 n 
+0000454621 00000 n 
+0000454684 00000 n 
+0000462904 00000 n 
+0000459394 00000 n 
+0000454939 00000 n 
+0000459517 00000 n 
+0000459580 00000 n 
+0000459643 00000 n 
+0000459706 00000 n 
+0000459769 00000 n 
+0000459832 00000 n 
+0000459895 00000 n 
+0000459958 00000 n 
+0000460021 00000 n 
+0000460084 00000 n 
+0000460145 00000 n 
+0000460208 00000 n 
+0000460271 00000 n 
+0000460334 00000 n 
+0000460397 00000 n 
+0000460460 00000 n 
+0000460523 00000 n 
+0000460586 00000 n 
+0000460649 00000 n 
+0000460711 00000 n 
+0000460774 00000 n 
+0000460837 00000 n 
+0000460900 00000 n 
+0000460963 00000 n 
+0000461026 00000 n 
+0000461089 00000 n 
+0000461152 00000 n 
+0000461215 00000 n 
+0000461277 00000 n 
+0000461340 00000 n 
+0000461466 00000 n 
+0000461529 00000 n 
+0000461592 00000 n 
+0000461655 00000 n 
+0000461718 00000 n 
+0000461781 00000 n 
+0000461844 00000 n 
+0000461906 00000 n 
+0000461969 00000 n 
+0000462032 00000 n 
+0000462095 00000 n 
+0000462158 00000 n 
+0000462221 00000 n 
+0000462284 00000 n 
+0000462347 00000 n 
+0000462473 00000 n 
+0000462535 00000 n 
+0000462598 00000 n 
+0000462659 00000 n 
+0000462720 00000 n 
+0000462781 00000 n 
+0000462842 00000 n 
+0000466166 00000 n 
+0000466315 00000 n 
+0000470055 00000 n 
+0000466013 00000 n 
+0000463033 00000 n 
+0000466466 00000 n 
+0000466529 00000 n 
+0000466592 00000 n 
+0000466653 00000 n 
+0000466714 00000 n 
+0000466775 00000 n 
+0000466836 00000 n 
+0000466897 00000 n 
+0000466958 00000 n 
+0000467018 00000 n 
+0000467079 00000 n 
+0000467140 00000 n 
+0000467201 00000 n 
+0000467262 00000 n 
+0000467323 00000 n 
+0000467384 00000 n 
+0000467445 00000 n 
+0000467506 00000 n 
+0000467566 00000 n 
+0000467627 00000 n 
+0000467688 00000 n 
+0000467749 00000 n 
+0000467810 00000 n 
+0000467872 00000 n 
+0000467935 00000 n 
+0000467998 00000 n 
+0000468061 00000 n 
+0000468124 00000 n 
+0000468187 00000 n 
+0000468249 00000 n 
+0000468312 00000 n 
+0000468375 00000 n 
+0000468438 00000 n 
+0000468501 00000 n 
+0000468564 00000 n 
+0000468627 00000 n 
+0000468690 00000 n 
+0000468753 00000 n 
+0000468815 00000 n 
+0000468878 00000 n 
+0000468941 00000 n 
+0000469004 00000 n 
+0000469067 00000 n 
+0000469130 00000 n 
+0000469193 00000 n 
+0000469256 00000 n 
+0000469319 00000 n 
+0000469382 00000 n 
+0000469445 00000 n 
+0000469508 00000 n 
+0000469569 00000 n 
+0000469630 00000 n 
+0000469691 00000 n 
+0000469752 00000 n 
+0000469813 00000 n 
+0000469874 00000 n 
+0000469934 00000 n 
+0000469995 00000 n 
+0000476513 00000 n 
+0000473816 00000 n 
+0000470171 00000 n 
+0000473939 00000 n 
+0000474002 00000 n 
+0000474063 00000 n 
+0000474124 00000 n 
+0000474185 00000 n 
+0000474246 00000 n 
+0000474307 00000 n 
+0000474367 00000 n 
+0000474428 00000 n 
+0000474489 00000 n 
+0000474550 00000 n 
+0000474611 00000 n 
+0000474672 00000 n 
+0000474733 00000 n 
+0000474794 00000 n 
+0000474855 00000 n 
+0000474915 00000 n 
+0000474976 00000 n 
+0000475039 00000 n 
+0000475102 00000 n 
+0000475163 00000 n 
+0000475224 00000 n 
+0000475285 00000 n 
+0000475346 00000 n 
+0000475407 00000 n 
+0000475468 00000 n 
+0000475529 00000 n 
+0000475590 00000 n 
+0000475650 00000 n 
+0000475711 00000 n 
+0000475774 00000 n 
+0000475837 00000 n 
+0000475900 00000 n 
+0000475963 00000 n 
+0000476023 00000 n 
+0000476084 00000 n 
+0000476145 00000 n 
+0000476206 00000 n 
+0000476267 00000 n 
+0000476328 00000 n 
+0000476389 00000 n 
+0000476450 00000 n 
+0000479164 00000 n 
+0000480793 00000 n 
+0000479020 00000 n 
+0000476643 00000 n 
+0000479316 00000 n 
+0000479379 00000 n 
+0000479442 00000 n 
+0000479503 00000 n 
+0000479564 00000 n 
+0000479625 00000 n 
+0000479686 00000 n 
+0000479746 00000 n 
+0000479807 00000 n 
+0000479868 00000 n 
+0000479931 00000 n 
+0000479992 00000 n 
+0000480053 00000 n 
+0000480114 00000 n 
+0000480177 00000 n 
+0000480240 00000 n 
+0000480300 00000 n 
+0000480361 00000 n 
+0000480422 00000 n 
+0000480485 00000 n 
+0000480546 00000 n 
+0000480669 00000 n 
+0000480731 00000 n 
+0003965829 00000 n 
+0000487134 00000 n 
+0000483551 00000 n 
+0000483706 00000 n 
+0000483863 00000 n 
+0000484020 00000 n 
+0000490053 00000 n 
+0000490203 00000 n 
+0000490353 00000 n 
+0000490503 00000 n 
+0000490653 00000 n 
+0000490802 00000 n 
+0000490952 00000 n 
+0000487322 00000 n 
+0000483380 00000 n 
+0000480923 00000 n 
+0000484177 00000 n 
+0000484240 00000 n 
+0000484303 00000 n 
+0000484366 00000 n 
+0000484429 00000 n 
+0000484492 00000 n 
+0000484555 00000 n 
+0000484618 00000 n 
+0000484681 00000 n 
+0000484744 00000 n 
+0000484807 00000 n 
+0000484870 00000 n 
+0000484933 00000 n 
+0000484995 00000 n 
+0000485058 00000 n 
+0000485121 00000 n 
+0000485184 00000 n 
+0000485247 00000 n 
+0000485310 00000 n 
+0000485373 00000 n 
+0000485436 00000 n 
+0000485499 00000 n 
+0000485561 00000 n 
+0000485624 00000 n 
+0000485687 00000 n 
+0000485750 00000 n 
+0000485813 00000 n 
+0000485876 00000 n 
+0000485939 00000 n 
+0000486002 00000 n 
+0000486065 00000 n 
+0000486127 00000 n 
+0000486190 00000 n 
+0000486253 00000 n 
+0000486316 00000 n 
+0000486379 00000 n 
+0000486442 00000 n 
+0000486505 00000 n 
+0000486568 00000 n 
+0000486631 00000 n 
+0000486693 00000 n 
+0000486756 00000 n 
+0000486819 00000 n 
+0000486882 00000 n 
+0000486945 00000 n 
+0000487008 00000 n 
+0000487071 00000 n 
+0000487197 00000 n 
+0000487260 00000 n 
+0000494246 00000 n 
+0000498324 00000 n 
+0000500212 00000 n 
+0000491291 00000 n 
+0000494309 00000 n 
+0000489855 00000 n 
+0000487438 00000 n 
+0000491102 00000 n 
+0000491165 00000 n 
+0000491354 00000 n 
+0000491417 00000 n 
+0000491480 00000 n 
+0000491542 00000 n 
+0000491605 00000 n 
+0000491668 00000 n 
+0000491731 00000 n 
+0000491794 00000 n 
+0000491857 00000 n 
+0000491920 00000 n 
+0000491983 00000 n 
+0000492046 00000 n 
+0000492108 00000 n 
+0000492171 00000 n 
+0000492234 00000 n 
+0000492297 00000 n 
+0000492360 00000 n 
+0000492423 00000 n 
+0000492486 00000 n 
+0000492549 00000 n 
+0000492612 00000 n 
+0000492674 00000 n 
+0000492737 00000 n 
+0000492800 00000 n 
+0000492863 00000 n 
+0000492926 00000 n 
+0000492989 00000 n 
+0000493052 00000 n 
+0000493115 00000 n 
+0000493178 00000 n 
+0000493239 00000 n 
+0000493302 00000 n 
+0000493365 00000 n 
+0000493428 00000 n 
+0000493491 00000 n 
+0000493554 00000 n 
+0000493617 00000 n 
+0000493680 00000 n 
+0000493743 00000 n 
+0000493805 00000 n 
+0000493868 00000 n 
+0000493931 00000 n 
+0000493994 00000 n 
+0000494057 00000 n 
+0000494120 00000 n 
+0000494183 00000 n 
+0002572929 00000 n 
+0002573835 00000 n 
+0002580194 00000 n 
+0000506469 00000 n 
+0000511566 00000 n 
+0000503891 00000 n 
+0000504960 00000 n 
+0000500275 00000 n 
+0000496502 00000 n 
+0000494425 00000 n 
+0000496625 00000 n 
+0000496688 00000 n 
+0000496751 00000 n 
+0000496814 00000 n 
+0000496877 00000 n 
+0000496940 00000 n 
+0000497003 00000 n 
+0000497066 00000 n 
+0000497129 00000 n 
+0000497192 00000 n 
+0000497255 00000 n 
+0000497318 00000 n 
+0000497381 00000 n 
+0000497443 00000 n 
+0000497506 00000 n 
+0000497569 00000 n 
+0000497632 00000 n 
+0000497695 00000 n 
+0000497758 00000 n 
+0000497821 00000 n 
+0000497884 00000 n 
+0000497947 00000 n 
+0000498009 00000 n 
+0000498072 00000 n 
+0000498135 00000 n 
+0000498198 00000 n 
+0000498261 00000 n 
+0000498387 00000 n 
+0000498450 00000 n 
+0000498513 00000 n 
+0000498576 00000 n 
+0000498639 00000 n 
+0000498702 00000 n 
+0000498765 00000 n 
+0000498828 00000 n 
+0000498891 00000 n 
+0000498954 00000 n 
+0000499017 00000 n 
+0000499080 00000 n 
+0000499143 00000 n 
+0000499206 00000 n 
+0000499269 00000 n 
+0000499332 00000 n 
+0000499394 00000 n 
+0000499457 00000 n 
+0000499520 00000 n 
+0000499583 00000 n 
+0000499646 00000 n 
+0000499709 00000 n 
+0000499772 00000 n 
+0000499835 00000 n 
+0000499898 00000 n 
+0000499960 00000 n 
+0000500023 00000 n 
+0000500086 00000 n 
+0000500149 00000 n 
+0000506531 00000 n 
+0000502698 00000 n 
+0000500391 00000 n 
+0000502821 00000 n 
+0000502884 00000 n 
+0000502947 00000 n 
+0000503010 00000 n 
+0000503073 00000 n 
+0000503136 00000 n 
+0000503199 00000 n 
+0000503262 00000 n 
+0000503325 00000 n 
+0000503387 00000 n 
+0000503450 00000 n 
+0000503513 00000 n 
+0000503576 00000 n 
+0000503639 00000 n 
+0000503702 00000 n 
+0000503765 00000 n 
+0000503828 00000 n 
+0000503954 00000 n 
+0000504016 00000 n 
+0000504079 00000 n 
+0000504142 00000 n 
+0000504205 00000 n 
+0000504268 00000 n 
+0000504331 00000 n 
+0000504394 00000 n 
+0000504456 00000 n 
+0000504519 00000 n 
+0000504582 00000 n 
+0000504645 00000 n 
+0000504708 00000 n 
+0000504771 00000 n 
+0000504834 00000 n 
+0000504897 00000 n 
+0000505023 00000 n 
+0000505086 00000 n 
+0000505149 00000 n 
+0000505212 00000 n 
+0000505275 00000 n 
+0000505338 00000 n 
+0000505401 00000 n 
+0000505464 00000 n 
+0000505527 00000 n 
+0000505589 00000 n 
+0000505652 00000 n 
+0000505715 00000 n 
+0000505778 00000 n 
+0000505841 00000 n 
+0000505904 00000 n 
+0000505967 00000 n 
+0000506030 00000 n 
+0000506093 00000 n 
+0000506155 00000 n 
+0000506218 00000 n 
+0000506281 00000 n 
+0000506344 00000 n 
+0000506407 00000 n 
+0000512436 00000 n 
+0000510059 00000 n 
+0000506647 00000 n 
+0000510182 00000 n 
+0000510245 00000 n 
+0000510308 00000 n 
+0000510371 00000 n 
+0000510434 00000 n 
+0000510497 00000 n 
+0000510560 00000 n 
+0000510623 00000 n 
+0000510686 00000 n 
+0000510748 00000 n 
+0000510811 00000 n 
+0000510874 00000 n 
+0000510937 00000 n 
+0000511000 00000 n 
+0000511063 00000 n 
+0000511126 00000 n 
+0000511189 00000 n 
+0000511252 00000 n 
+0000511314 00000 n 
+0000511377 00000 n 
+0000511440 00000 n 
+0000511503 00000 n 
+0000511629 00000 n 
+0000511692 00000 n 
+0000511755 00000 n 
+0000511816 00000 n 
+0000511877 00000 n 
+0000511938 00000 n 
+0000512000 00000 n 
+0000512063 00000 n 
+0000512186 00000 n 
+0000512249 00000 n 
+0000512312 00000 n 
+0000512374 00000 n 
+0000517808 00000 n 
+0000515647 00000 n 
+0000512566 00000 n 
+0000515770 00000 n 
+0000515833 00000 n 
+0000515896 00000 n 
+0000515957 00000 n 
+0000516018 00000 n 
+0000516079 00000 n 
+0000516140 00000 n 
+0000516203 00000 n 
+0000516266 00000 n 
+0000516326 00000 n 
+0000516387 00000 n 
+0000516448 00000 n 
+0000516509 00000 n 
+0000516572 00000 n 
+0000516635 00000 n 
+0000516696 00000 n 
+0000516757 00000 n 
+0000516818 00000 n 
+0000516879 00000 n 
+0000516942 00000 n 
+0000517003 00000 n 
+0000517064 00000 n 
+0000517127 00000 n 
+0000517190 00000 n 
+0000517251 00000 n 
+0000517376 00000 n 
+0000517439 00000 n 
+0000517502 00000 n 
+0000517565 00000 n 
+0000517626 00000 n 
+0000517687 00000 n 
+0000517748 00000 n 
+0003965955 00000 n 
+0000523668 00000 n 
+0000521328 00000 n 
+0000517952 00000 n 
+0000521451 00000 n 
+0000521514 00000 n 
+0000521577 00000 n 
+0000521640 00000 n 
+0000521701 00000 n 
+0000521762 00000 n 
+0000521823 00000 n 
+0000521946 00000 n 
+0000522008 00000 n 
+0000522071 00000 n 
+0000522134 00000 n 
+0000522195 00000 n 
+0000522258 00000 n 
+0000522319 00000 n 
+0000522380 00000 n 
+0000522441 00000 n 
+0000522502 00000 n 
+0000522562 00000 n 
+0000522623 00000 n 
+0000522684 00000 n 
+0000522745 00000 n 
+0000522806 00000 n 
+0000522867 00000 n 
+0000522930 00000 n 
+0000522993 00000 n 
+0000523054 00000 n 
+0000523117 00000 n 
+0000523180 00000 n 
+0000523241 00000 n 
+0000523302 00000 n 
+0000523363 00000 n 
+0000523424 00000 n 
+0000523485 00000 n 
+0000523546 00000 n 
+0000523607 00000 n 
+0000527510 00000 n 
+0000529996 00000 n 
+0000527366 00000 n 
+0000523784 00000 n 
+0000527663 00000 n 
+0000527726 00000 n 
+0000527789 00000 n 
+0000527850 00000 n 
+0000527911 00000 n 
+0000527972 00000 n 
+0000528033 00000 n 
+0000528094 00000 n 
+0000528155 00000 n 
+0000528215 00000 n 
+0000528276 00000 n 
+0000528339 00000 n 
+0000528400 00000 n 
+0000528461 00000 n 
+0000528524 00000 n 
+0000528587 00000 n 
+0000528648 00000 n 
+0000528711 00000 n 
+0000528772 00000 n 
+0000528833 00000 n 
+0000528894 00000 n 
+0000528953 00000 n 
+0000529015 00000 n 
+0000529075 00000 n 
+0000529138 00000 n 
+0000529201 00000 n 
+0000529262 00000 n 
+0000529323 00000 n 
+0000529384 00000 n 
+0000529447 00000 n 
+0000529510 00000 n 
+0000529571 00000 n 
+0000529632 00000 n 
+0000529693 00000 n 
+0000529754 00000 n 
+0000529815 00000 n 
+0000529875 00000 n 
+0000529936 00000 n 
+0000537024 00000 n 
+0000533242 00000 n 
+0000530126 00000 n 
+0000533365 00000 n 
+0000533428 00000 n 
+0000533489 00000 n 
+0000533550 00000 n 
+0000533611 00000 n 
+0000533672 00000 n 
+0000533733 00000 n 
+0000533793 00000 n 
+0000533854 00000 n 
+0000533915 00000 n 
+0000533976 00000 n 
+0000534037 00000 n 
+0000534098 00000 n 
+0000534159 00000 n 
+0000534220 00000 n 
+0000534281 00000 n 
+0000534341 00000 n 
+0000534402 00000 n 
+0000534463 00000 n 
+0000534524 00000 n 
+0000534585 00000 n 
+0000534646 00000 n 
+0000534707 00000 n 
+0000534768 00000 n 
+0000534829 00000 n 
+0000534889 00000 n 
+0000534950 00000 n 
+0000535011 00000 n 
+0000535072 00000 n 
+0000535133 00000 n 
+0000535194 00000 n 
+0000535255 00000 n 
+0000535316 00000 n 
+0000535377 00000 n 
+0000535437 00000 n 
+0000535498 00000 n 
+0000535559 00000 n 
+0000535620 00000 n 
+0000535681 00000 n 
+0000535742 00000 n 
+0000535803 00000 n 
+0000535864 00000 n 
+0000535925 00000 n 
+0000535985 00000 n 
+0000536046 00000 n 
+0000536107 00000 n 
+0000536168 00000 n 
+0000536229 00000 n 
+0000536290 00000 n 
+0000536351 00000 n 
+0000536412 00000 n 
+0000536473 00000 n 
+0000536534 00000 n 
+0000536595 00000 n 
+0000536656 00000 n 
+0000536717 00000 n 
+0000536780 00000 n 
+0000536843 00000 n 
+0000536904 00000 n 
+0000536965 00000 n 
+0000543713 00000 n 
+0000540774 00000 n 
+0000537126 00000 n 
+0000540897 00000 n 
+0000540960 00000 n 
+0000541021 00000 n 
+0000541082 00000 n 
+0000541143 00000 n 
+0000541204 00000 n 
+0000541265 00000 n 
+0000541328 00000 n 
+0000541391 00000 n 
+0000541452 00000 n 
+0000541513 00000 n 
+0000541574 00000 n 
+0000541635 00000 n 
+0000541696 00000 n 
+0000541757 00000 n 
+0000541818 00000 n 
+0000541878 00000 n 
+0000541939 00000 n 
+0000542000 00000 n 
+0000542061 00000 n 
+0000542122 00000 n 
+0000542183 00000 n 
+0000542244 00000 n 
+0000542305 00000 n 
+0000542366 00000 n 
+0000542425 00000 n 
+0000542486 00000 n 
+0000542547 00000 n 
+0000542608 00000 n 
+0000542669 00000 n 
+0000542730 00000 n 
+0000542791 00000 n 
+0000542853 00000 n 
+0000542916 00000 n 
+0000542977 00000 n 
+0000543038 00000 n 
+0000543099 00000 n 
+0000543160 00000 n 
+0000543221 00000 n 
+0000543282 00000 n 
+0000543345 00000 n 
+0000543408 00000 n 
+0000543469 00000 n 
+0000543530 00000 n 
+0000543591 00000 n 
+0000543652 00000 n 
+0000547275 00000 n 
+0000550748 00000 n 
+0000547131 00000 n 
+0000543843 00000 n 
+0000547453 00000 n 
+0000547516 00000 n 
+0000547577 00000 n 
+0000547638 00000 n 
+0000547699 00000 n 
+0000547760 00000 n 
+0000547821 00000 n 
+0000547881 00000 n 
+0000547942 00000 n 
+0000548003 00000 n 
+0000548064 00000 n 
+0000548127 00000 n 
+0000548190 00000 n 
+0000548251 00000 n 
+0000548312 00000 n 
+0000548373 00000 n 
+0000548434 00000 n 
+0000548495 00000 n 
+0000548556 00000 n 
+0000548617 00000 n 
+0000548678 00000 n 
+0000548739 00000 n 
+0000548800 00000 n 
+0000548861 00000 n 
+0000548920 00000 n 
+0000548981 00000 n 
+0000549042 00000 n 
+0000549103 00000 n 
+0000549164 00000 n 
+0000549225 00000 n 
+0000549286 00000 n 
+0000549347 00000 n 
+0000549408 00000 n 
+0000549468 00000 n 
+0000549529 00000 n 
+0000549590 00000 n 
+0000549651 00000 n 
+0000549712 00000 n 
+0000549773 00000 n 
+0000549834 00000 n 
+0000549895 00000 n 
+0000549956 00000 n 
+0000550016 00000 n 
+0000550077 00000 n 
+0000550138 00000 n 
+0000550199 00000 n 
+0000550260 00000 n 
+0000550321 00000 n 
+0000550382 00000 n 
+0000550443 00000 n 
+0000550504 00000 n 
+0000550564 00000 n 
+0000550625 00000 n 
+0000550686 00000 n 
+0000555790 00000 n 
+0000554383 00000 n 
+0000550864 00000 n 
+0000554506 00000 n 
+0000554569 00000 n 
+0000554630 00000 n 
+0000554691 00000 n 
+0000554752 00000 n 
+0000554813 00000 n 
+0000554874 00000 n 
+0000554934 00000 n 
+0000554995 00000 n 
+0000555056 00000 n 
+0000555117 00000 n 
+0000555178 00000 n 
+0000555239 00000 n 
+0000555300 00000 n 
+0000555361 00000 n 
+0000555422 00000 n 
+0000555482 00000 n 
+0000555543 00000 n 
+0000555604 00000 n 
+0000555727 00000 n 
+0003966081 00000 n 
+0000559975 00000 n 
+0000560127 00000 n 
+0000560963 00000 n 
+0000559822 00000 n 
+0000555920 00000 n 
+0000560278 00000 n 
+0000560463 00000 n 
+0000560526 00000 n 
+0000560589 00000 n 
+0000560651 00000 n 
+0000560713 00000 n 
+0000560775 00000 n 
+0000560838 00000 n 
+0000560901 00000 n 
+0000564241 00000 n 
+0000564391 00000 n 
+0000565357 00000 n 
+0000564088 00000 n 
+0000561093 00000 n 
+0000564541 00000 n 
+0000564604 00000 n 
+0000564667 00000 n 
+0000564730 00000 n 
+0000564792 00000 n 
+0000564855 00000 n 
+0000564918 00000 n 
+0000564981 00000 n 
+0000565044 00000 n 
+0000565107 00000 n 
+0000565169 00000 n 
+0000565232 00000 n 
+0000570634 00000 n 
+0000569945 00000 n 
+0000565487 00000 n 
+0000570068 00000 n 
+0000570193 00000 n 
+0000570256 00000 n 
+0000570319 00000 n 
+0000570382 00000 n 
+0000570445 00000 n 
+0000570508 00000 n 
+0000570571 00000 n 
+0000573574 00000 n 
+0000573199 00000 n 
+0000570778 00000 n 
+0000573322 00000 n 
+0000573385 00000 n 
+0000573448 00000 n 
+0000573511 00000 n 
+0000576598 00000 n 
+0000576748 00000 n 
+0000576897 00000 n 
+0000577293 00000 n 
+0000576436 00000 n 
+0000573704 00000 n 
+0000577045 00000 n 
+0000577170 00000 n 
+0000781496 00000 n 
+0000581434 00000 n 
+0000581768 00000 n 
+0000581290 00000 n 
+0000577409 00000 n 
+0000581581 00000 n 
+0003966207 00000 n 
+0000585348 00000 n 
+0000585497 00000 n 
+0000588277 00000 n 
+0000585899 00000 n 
+0000585195 00000 n 
+0000581884 00000 n 
+0000585650 00000 n 
+0000666327 00000 n 
+0000665887 00000 n 
+0000669847 00000 n 
+0000670003 00000 n 
+0000670156 00000 n 
+0000670310 00000 n 
+0000670464 00000 n 
+0000670619 00000 n 
+0000670775 00000 n 
+0000670929 00000 n 
+0000671080 00000 n 
+0000671231 00000 n 
+0000671387 00000 n 
+0000671543 00000 n 
+0000671699 00000 n 
+0000671852 00000 n 
+0000672004 00000 n 
+0000672158 00000 n 
+0000672308 00000 n 
+0000672457 00000 n 
+0000672606 00000 n 
+0000666048 00000 n 
+0000667013 00000 n 
+0000588124 00000 n 
+0000586029 00000 n 
+0000666201 00000 n 
+0000666452 00000 n 
+0000666577 00000 n 
+0000666640 00000 n 
+0000666703 00000 n 
+0000666764 00000 n 
+0000666827 00000 n 
+0000666888 00000 n 
+0000666950 00000 n 
+0000659926 00000 n 
+0000672882 00000 n 
+0000672945 00000 n 
+0000669541 00000 n 
+0000667180 00000 n 
+0000672756 00000 n 
+0000703882 00000 n 
+0000708964 00000 n 
+0000716283 00000 n 
+0000716785 00000 n 
+0000717288 00000 n 
+0000721337 00000 n 
+0000723791 00000 n 
+0000728166 00000 n 
+0000729739 00000 n 
+0000735025 00000 n 
+0000738357 00000 n 
+0000743119 00000 n 
+0000746829 00000 n 
+0000748214 00000 n 
+0000753409 00000 n 
+0000758371 00000 n 
+0000676602 00000 n 
+0000676751 00000 n 
+0000676903 00000 n 
+0000679579 00000 n 
+0000676440 00000 n 
+0000673061 00000 n 
+0000677055 00000 n 
+0000677118 00000 n 
+0000677181 00000 n 
+0000677242 00000 n 
+0000677303 00000 n 
+0000677366 00000 n 
+0000677429 00000 n 
+0000677490 00000 n 
+0000677550 00000 n 
+0000677611 00000 n 
+0000677672 00000 n 
+0000677735 00000 n 
+0000677798 00000 n 
+0000677859 00000 n 
+0000677920 00000 n 
+0000677981 00000 n 
+0000678042 00000 n 
+0000678102 00000 n 
+0000678163 00000 n 
+0000678224 00000 n 
+0000678285 00000 n 
+0000678346 00000 n 
+0000678407 00000 n 
+0000678468 00000 n 
+0000678529 00000 n 
+0000678590 00000 n 
+0000678650 00000 n 
+0000678711 00000 n 
+0000678772 00000 n 
+0000678833 00000 n 
+0000678894 00000 n 
+0000678955 00000 n 
+0000679016 00000 n 
+0000679079 00000 n 
+0000679142 00000 n 
+0000679205 00000 n 
+0000679268 00000 n 
+0000679331 00000 n 
+0000679392 00000 n 
+0000679455 00000 n 
+0000679518 00000 n 
+0000683781 00000 n 
+0000685058 00000 n 
+0000683637 00000 n 
+0000679695 00000 n 
+0000683934 00000 n 
+0000683997 00000 n 
+0000684060 00000 n 
+0000684123 00000 n 
+0000684184 00000 n 
+0000684247 00000 n 
+0000684310 00000 n 
+0000684371 00000 n 
+0000684434 00000 n 
+0000684497 00000 n 
+0000684558 00000 n 
+0000684621 00000 n 
+0003962641 00000 n 
+0000684808 00000 n 
+0000684871 00000 n 
+0000684934 00000 n 
+0000684995 00000 n 
+0000689179 00000 n 
+0000691367 00000 n 
+0000689035 00000 n 
+0000685217 00000 n 
+0000689335 00000 n 
+0000689398 00000 n 
+0000689461 00000 n 
+0000689522 00000 n 
+0000689583 00000 n 
+0000689646 00000 n 
+0000689709 00000 n 
+0000689770 00000 n 
+0000689833 00000 n 
+0000689896 00000 n 
+0000689959 00000 n 
+0000690022 00000 n 
+0000690085 00000 n 
+0000690148 00000 n 
+0000690209 00000 n 
+0000690270 00000 n 
+0000690331 00000 n 
+0000690392 00000 n 
+0000690452 00000 n 
+0000690513 00000 n 
+0000690574 00000 n 
+0000690635 00000 n 
+0000690696 00000 n 
+0000690759 00000 n 
+0000690822 00000 n 
+0000690883 00000 n 
+0000690944 00000 n 
+0000691004 00000 n 
+0000691065 00000 n 
+0000691126 00000 n 
+0000691189 00000 n 
+0000691250 00000 n 
+0000691311 00000 n 
+0003966333 00000 n 
+0000763035 00000 n 
+0000694839 00000 n 
+0000694996 00000 n 
+0000695154 00000 n 
+0000695304 00000 n 
+0000695456 00000 n 
+0000695613 00000 n 
+0000695769 00000 n 
+0000698207 00000 n 
+0000694641 00000 n 
+0000691483 00000 n 
+0000695917 00000 n 
+0000695980 00000 n 
+0000696043 00000 n 
+0000696106 00000 n 
+0000696166 00000 n 
+0000696227 00000 n 
+0000696290 00000 n 
+0000696351 00000 n 
+0000696412 00000 n 
+0000696475 00000 n 
+0000696538 00000 n 
+0000696599 00000 n 
+0000696660 00000 n 
+0000696721 00000 n 
+0000696781 00000 n 
+0000696842 00000 n 
+0000696903 00000 n 
+0000696964 00000 n 
+0000697025 00000 n 
+0000697086 00000 n 
+0000697147 00000 n 
+0000697210 00000 n 
+0000697335 00000 n 
+0000697398 00000 n 
+0000697461 00000 n 
+0000697524 00000 n 
+0000697585 00000 n 
+0000697646 00000 n 
+0000697707 00000 n 
+0000697770 00000 n 
+0000697833 00000 n 
+0000697896 00000 n 
+0000697957 00000 n 
+0000698020 00000 n 
+0000698083 00000 n 
+0000698144 00000 n 
+0000763160 00000 n 
+0000703945 00000 n 
+0000701747 00000 n 
+0000698366 00000 n 
+0000701870 00000 n 
+0000701933 00000 n 
+0000701996 00000 n 
+0000702059 00000 n 
+0000702122 00000 n 
+0000702185 00000 n 
+0000702248 00000 n 
+0000702311 00000 n 
+0000702374 00000 n 
+0000702437 00000 n 
+0000702498 00000 n 
+0000702561 00000 n 
+0000702624 00000 n 
+0000702687 00000 n 
+0000702750 00000 n 
+0000702813 00000 n 
+0000702876 00000 n 
+0000702939 00000 n 
+0000703002 00000 n 
+0000703064 00000 n 
+0000703127 00000 n 
+0000703190 00000 n 
+0000703253 00000 n 
+0000703316 00000 n 
+0000703379 00000 n 
+0000703442 00000 n 
+0000703505 00000 n 
+0000703568 00000 n 
+0000703630 00000 n 
+0000703693 00000 n 
+0000703756 00000 n 
+0000703819 00000 n 
+0000709027 00000 n 
+0000707018 00000 n 
+0000704074 00000 n 
+0000707141 00000 n 
+0000707204 00000 n 
+0000707267 00000 n 
+0000707330 00000 n 
+0000707393 00000 n 
+0000707456 00000 n 
+0000707519 00000 n 
+0000707582 00000 n 
+0000707645 00000 n 
+0000707708 00000 n 
+0000707769 00000 n 
+0000707832 00000 n 
+0000707895 00000 n 
+0000707958 00000 n 
+0000708021 00000 n 
+0000708084 00000 n 
+0000708147 00000 n 
+0000708210 00000 n 
+0000708273 00000 n 
+0000708335 00000 n 
+0000708398 00000 n 
+0000708461 00000 n 
+0000708524 00000 n 
+0000708587 00000 n 
+0000708650 00000 n 
+0000708713 00000 n 
+0000708776 00000 n 
+0000708839 00000 n 
+0000708901 00000 n 
+0000717350 00000 n 
+0000713897 00000 n 
+0000709156 00000 n 
+0000714020 00000 n 
+0000714083 00000 n 
+0000714146 00000 n 
+0000714209 00000 n 
+0000714272 00000 n 
+0000714334 00000 n 
+0000714397 00000 n 
+0000714460 00000 n 
+0000714523 00000 n 
+0000714586 00000 n 
+0000714649 00000 n 
+0000714712 00000 n 
+0000714775 00000 n 
+0000714838 00000 n 
+0000714900 00000 n 
+0000714963 00000 n 
+0000715026 00000 n 
+0000715089 00000 n 
+0000715152 00000 n 
+0000715215 00000 n 
+0000715278 00000 n 
+0000715341 00000 n 
+0000715404 00000 n 
+0000715465 00000 n 
+0000715528 00000 n 
+0000715591 00000 n 
+0000715654 00000 n 
+0000715717 00000 n 
+0000715780 00000 n 
+0000715843 00000 n 
+0000715906 00000 n 
+0000715969 00000 n 
+0000716031 00000 n 
+0000716094 00000 n 
+0000716157 00000 n 
+0000716220 00000 n 
+0000716346 00000 n 
+0000716407 00000 n 
+0000716470 00000 n 
+0000716533 00000 n 
+0000716596 00000 n 
+0000716659 00000 n 
+0000716722 00000 n 
+0000716848 00000 n 
+0000716911 00000 n 
+0000716974 00000 n 
+0000717037 00000 n 
+0000717100 00000 n 
+0000717163 00000 n 
+0000717226 00000 n 
+0000723854 00000 n 
+0000720460 00000 n 
+0000717479 00000 n 
+0000720583 00000 n 
+0000720646 00000 n 
+0000720709 00000 n 
+0000720772 00000 n 
+0000720835 00000 n 
+0000720898 00000 n 
+0000720961 00000 n 
+0000721024 00000 n 
+0000721087 00000 n 
+0000721150 00000 n 
+0000721211 00000 n 
+0000721274 00000 n 
+0000721400 00000 n 
+0000721463 00000 n 
+0000721526 00000 n 
+0000721589 00000 n 
+0000721652 00000 n 
+0000721714 00000 n 
+0000721777 00000 n 
+0000721840 00000 n 
+0000721903 00000 n 
+0000721966 00000 n 
+0000722029 00000 n 
+0000722092 00000 n 
+0000722155 00000 n 
+0000722218 00000 n 
+0000722281 00000 n 
+0000722344 00000 n 
+0000722407 00000 n 
+0000722470 00000 n 
+0000722533 00000 n 
+0000722596 00000 n 
+0000722659 00000 n 
+0000722722 00000 n 
+0000722785 00000 n 
+0000722848 00000 n 
+0000722910 00000 n 
+0000722973 00000 n 
+0000723036 00000 n 
+0000723099 00000 n 
+0000723162 00000 n 
+0000723225 00000 n 
+0000723288 00000 n 
+0000723351 00000 n 
+0000723414 00000 n 
+0000723476 00000 n 
+0000723539 00000 n 
+0000723602 00000 n 
+0000723665 00000 n 
+0000723728 00000 n 
+0000729802 00000 n 
+0000726092 00000 n 
+0000723997 00000 n 
+0000726215 00000 n 
+0000726278 00000 n 
+0000726341 00000 n 
+0000726404 00000 n 
+0000726467 00000 n 
+0000726530 00000 n 
+0000726593 00000 n 
+0000726656 00000 n 
+0000726719 00000 n 
+0000726782 00000 n 
+0000726845 00000 n 
+0000726908 00000 n 
+0000726971 00000 n 
+0000727033 00000 n 
+0000727096 00000 n 
+0000727159 00000 n 
+0000727222 00000 n 
+0000727285 00000 n 
+0000727348 00000 n 
+0000727411 00000 n 
+0000727474 00000 n 
+0000727537 00000 n 
+0000727599 00000 n 
+0000727662 00000 n 
+0000727725 00000 n 
+0000727788 00000 n 
+0000727851 00000 n 
+0000727914 00000 n 
+0000727977 00000 n 
+0000728040 00000 n 
+0000728103 00000 n 
+0000728229 00000 n 
+0000728292 00000 n 
+0000728355 00000 n 
+0000728418 00000 n 
+0000728481 00000 n 
+0000728544 00000 n 
+0000728607 00000 n 
+0000728670 00000 n 
+0000728733 00000 n 
+0000728796 00000 n 
+0000728859 00000 n 
+0000728922 00000 n 
+0000728984 00000 n 
+0000729047 00000 n 
+0000729110 00000 n 
+0000729173 00000 n 
+0000729236 00000 n 
+0000729299 00000 n 
+0000729362 00000 n 
+0000729425 00000 n 
+0000729488 00000 n 
+0000729550 00000 n 
+0000729613 00000 n 
+0000729676 00000 n 
+0003966459 00000 n 
+0000735088 00000 n 
+0000731883 00000 n 
+0000729918 00000 n 
+0000732006 00000 n 
+0000732069 00000 n 
+0000732132 00000 n 
+0000732195 00000 n 
+0000732258 00000 n 
+0000732321 00000 n 
+0000732384 00000 n 
+0000732447 00000 n 
+0000732510 00000 n 
+0000732572 00000 n 
+0000732635 00000 n 
+0000732698 00000 n 
+0000732761 00000 n 
+0000732824 00000 n 
+0000732887 00000 n 
+0000732950 00000 n 
+0000733013 00000 n 
+0000733076 00000 n 
+0000733138 00000 n 
+0000733201 00000 n 
+0000733264 00000 n 
+0000733327 00000 n 
+0000733390 00000 n 
+0000733453 00000 n 
+0000733516 00000 n 
+0000733579 00000 n 
+0000733642 00000 n 
+0000733704 00000 n 
+0000733767 00000 n 
+0000733830 00000 n 
+0000733893 00000 n 
+0000733956 00000 n 
+0000734019 00000 n 
+0000734082 00000 n 
+0000734145 00000 n 
+0000734208 00000 n 
+0000734270 00000 n 
+0000734333 00000 n 
+0000734396 00000 n 
+0000734459 00000 n 
+0000734522 00000 n 
+0000734585 00000 n 
+0000734648 00000 n 
+0000734711 00000 n 
+0000734774 00000 n 
+0000734836 00000 n 
+0000734899 00000 n 
+0000734962 00000 n 
+0000738420 00000 n 
+0000736535 00000 n 
+0000735204 00000 n 
+0000736658 00000 n 
+0000736721 00000 n 
+0000736784 00000 n 
+0000736847 00000 n 
+0000736910 00000 n 
+0000736973 00000 n 
+0000737036 00000 n 
+0000737099 00000 n 
+0000737162 00000 n 
+0000737224 00000 n 
+0000737287 00000 n 
+0000737350 00000 n 
+0000737413 00000 n 
+0000737476 00000 n 
+0000737539 00000 n 
+0000737602 00000 n 
+0000737665 00000 n 
+0000737728 00000 n 
+0000737790 00000 n 
+0000737853 00000 n 
+0000737916 00000 n 
+0000737979 00000 n 
+0000738042 00000 n 
+0000738105 00000 n 
+0000738168 00000 n 
+0000738231 00000 n 
+0000738294 00000 n 
+0000743182 00000 n 
+0000740228 00000 n 
+0000738536 00000 n 
+0000740351 00000 n 
+0000740414 00000 n 
+0000740477 00000 n 
+0000740540 00000 n 
+0000740603 00000 n 
+0000740666 00000 n 
+0000740729 00000 n 
+0000740792 00000 n 
+0000740855 00000 n 
+0000740917 00000 n 
+0000740980 00000 n 
+0000741043 00000 n 
+0000741106 00000 n 
+0000741169 00000 n 
+0000741232 00000 n 
+0000741295 00000 n 
+0000741358 00000 n 
+0000741421 00000 n 
+0000741483 00000 n 
+0000741546 00000 n 
+0000741609 00000 n 
+0000741672 00000 n 
+0000741735 00000 n 
+0000741798 00000 n 
+0000741861 00000 n 
+0000741924 00000 n 
+0000741987 00000 n 
+0000742049 00000 n 
+0000742112 00000 n 
+0000742175 00000 n 
+0000742238 00000 n 
+0000742301 00000 n 
+0000742364 00000 n 
+0000742427 00000 n 
+0000742490 00000 n 
+0000742553 00000 n 
+0000742615 00000 n 
+0000742678 00000 n 
+0000742741 00000 n 
+0000742804 00000 n 
+0000742867 00000 n 
+0000742930 00000 n 
+0000742993 00000 n 
+0000743056 00000 n 
+0000748277 00000 n 
+0000745259 00000 n 
+0000743298 00000 n 
+0000745382 00000 n 
+0000745445 00000 n 
+0000745508 00000 n 
+0000745571 00000 n 
+0000745634 00000 n 
+0000745697 00000 n 
+0000745760 00000 n 
+0000745823 00000 n 
+0000745886 00000 n 
+0000745948 00000 n 
+0000746011 00000 n 
+0000746074 00000 n 
+0000746137 00000 n 
+0000746200 00000 n 
+0000746263 00000 n 
+0000746326 00000 n 
+0000746389 00000 n 
+0000746452 00000 n 
+0000746514 00000 n 
+0000746577 00000 n 
+0000746640 00000 n 
+0000746703 00000 n 
+0000746766 00000 n 
+0000746892 00000 n 
+0000746955 00000 n 
+0000747017 00000 n 
+0000747080 00000 n 
+0000747143 00000 n 
+0000747206 00000 n 
+0000747269 00000 n 
+0000747332 00000 n 
+0000747395 00000 n 
+0000747458 00000 n 
+0000747521 00000 n 
+0000747584 00000 n 
+0000747647 00000 n 
+0000747710 00000 n 
+0000747773 00000 n 
+0000747836 00000 n 
+0000747899 00000 n 
+0000747962 00000 n 
+0000748025 00000 n 
+0000748088 00000 n 
+0000748151 00000 n 
+0000753472 00000 n 
+0000750330 00000 n 
+0000748393 00000 n 
+0000750453 00000 n 
+0000750516 00000 n 
+0000750579 00000 n 
+0000750642 00000 n 
+0000750705 00000 n 
+0000750768 00000 n 
+0000750831 00000 n 
+0000750894 00000 n 
+0000750957 00000 n 
+0000751019 00000 n 
+0000751082 00000 n 
+0000751145 00000 n 
+0000751208 00000 n 
+0000751271 00000 n 
+0000751334 00000 n 
+0000751397 00000 n 
+0000751460 00000 n 
+0000751523 00000 n 
+0000751585 00000 n 
+0000751648 00000 n 
+0000751711 00000 n 
+0000751774 00000 n 
+0000751837 00000 n 
+0000751900 00000 n 
+0000751963 00000 n 
+0000752026 00000 n 
+0000752089 00000 n 
+0000752151 00000 n 
+0000752214 00000 n 
+0000752277 00000 n 
+0000752340 00000 n 
+0000752403 00000 n 
+0000752466 00000 n 
+0000752529 00000 n 
+0000752592 00000 n 
+0000752655 00000 n 
+0000752717 00000 n 
+0000752780 00000 n 
+0000752843 00000 n 
+0000752906 00000 n 
+0000752969 00000 n 
+0000753032 00000 n 
+0000753095 00000 n 
+0000753158 00000 n 
+0000753221 00000 n 
+0000753283 00000 n 
+0000753346 00000 n 
+0000758434 00000 n 
+0000755355 00000 n 
+0000753588 00000 n 
+0000755478 00000 n 
+0000755541 00000 n 
+0000755604 00000 n 
+0000755667 00000 n 
+0000755730 00000 n 
+0000755793 00000 n 
+0000755856 00000 n 
+0000755919 00000 n 
+0000755982 00000 n 
+0000756044 00000 n 
+0000756107 00000 n 
+0000756170 00000 n 
+0000756233 00000 n 
+0000756296 00000 n 
+0000756359 00000 n 
+0000756422 00000 n 
+0000756485 00000 n 
+0000756548 00000 n 
+0000756610 00000 n 
+0000756673 00000 n 
+0000756736 00000 n 
+0000756799 00000 n 
+0000756862 00000 n 
+0000756925 00000 n 
+0000756988 00000 n 
+0000757051 00000 n 
+0000757114 00000 n 
+0000757176 00000 n 
+0000757239 00000 n 
+0000757302 00000 n 
+0000757365 00000 n 
+0000757428 00000 n 
+0000757491 00000 n 
+0000757554 00000 n 
+0000757617 00000 n 
+0000757680 00000 n 
+0000757742 00000 n 
+0000757805 00000 n 
+0000757868 00000 n 
+0000757931 00000 n 
+0000757994 00000 n 
+0000758057 00000 n 
+0000758120 00000 n 
+0000758183 00000 n 
+0000758246 00000 n 
+0000758308 00000 n 
+0003966585 00000 n 
+0000768599 00000 n 
+0000768750 00000 n 
+0000764270 00000 n 
+0000761716 00000 n 
+0000758550 00000 n 
+0000761839 00000 n 
+0000761902 00000 n 
+0000761965 00000 n 
+0000762028 00000 n 
+0000762091 00000 n 
+0000762154 00000 n 
+0000762217 00000 n 
+0000762280 00000 n 
+0000762343 00000 n 
+0000762406 00000 n 
+0000762469 00000 n 
+0000762532 00000 n 
+0000762595 00000 n 
+0000762657 00000 n 
+0000762720 00000 n 
+0000762783 00000 n 
+0000762846 00000 n 
+0000762909 00000 n 
+0000762972 00000 n 
+0000763223 00000 n 
+0000763286 00000 n 
+0000763349 00000 n 
+0000763409 00000 n 
+0000763470 00000 n 
+0000763531 00000 n 
+0000763592 00000 n 
+0000763653 00000 n 
+0000763715 00000 n 
+0000763778 00000 n 
+0000763839 00000 n 
+0000763900 00000 n 
+0000763961 00000 n 
+0000764021 00000 n 
+0000764144 00000 n 
+0000764207 00000 n 
+0000768901 00000 n 
+0000769052 00000 n 
+0000774245 00000 n 
+0000770337 00000 n 
+0000768428 00000 n 
+0000764400 00000 n 
+0000769203 00000 n 
+0000769266 00000 n 
+0000769329 00000 n 
+0000769392 00000 n 
+0000769455 00000 n 
+0000769518 00000 n 
+0000769581 00000 n 
+0000769644 00000 n 
+0000769707 00000 n 
+0000769770 00000 n 
+0000769833 00000 n 
+0000769896 00000 n 
+0000769959 00000 n 
+0000770022 00000 n 
+0000770085 00000 n 
+0000770148 00000 n 
+0000770211 00000 n 
+0000770274 00000 n 
+0000774829 00000 n 
+0000774101 00000 n 
+0000770453 00000 n 
+0000774392 00000 n 
+0000774579 00000 n 
+0000774641 00000 n 
+0000774703 00000 n 
+0000774766 00000 n 
+0000777005 00000 n 
+0000776819 00000 n 
+0000774988 00000 n 
+0000776942 00000 n 
+0000781217 00000 n 
+0000780580 00000 n 
+0000781557 00000 n 
+0000780436 00000 n 
+0000777135 00000 n 
+0000781371 00000 n 
+0000781105 00000 n 
+0000781195 00000 n 
+0000785739 00000 n 
+0000785491 00000 n 
+0000781716 00000 n 
+0000785614 00000 n 
+0003966711 00000 n 
+0000789806 00000 n 
+0000789370 00000 n 
+0000785855 00000 n 
+0000789493 00000 n 
+0000789680 00000 n 
+0000789743 00000 n 
+0000793971 00000 n 
+0000794161 00000 n 
+0000794374 00000 n 
+0000794599 00000 n 
+0000794808 00000 n 
+0000794984 00000 n 
+0000795153 00000 n 
+0000795340 00000 n 
+0000795504 00000 n 
+0000795685 00000 n 
+0000795857 00000 n 
+0000796167 00000 n 
+0000793737 00000 n 
+0000789922 00000 n 
+0000796042 00000 n 
+0000799209 00000 n 
+0000799386 00000 n 
+0000799581 00000 n 
+0000799781 00000 n 
+0000802957 00000 n 
+0000800065 00000 n 
+0000799038 00000 n 
+0000796283 00000 n 
+0000799940 00000 n 
+0000836753 00000 n 
+0000837065 00000 n 
+0000802834 00000 n 
+0000800181 00000 n 
+0000836627 00000 n 
+0000836878 00000 n 
+0000837003 00000 n 
+0000818024 00000 n 
+0000841385 00000 n 
+0000841538 00000 n 
+0000842312 00000 n 
+0000841223 00000 n 
+0000837232 00000 n 
+0000841939 00000 n 
+0000842126 00000 n 
+0000841739 00000 n 
+0001123504 00000 n 
+0000846428 00000 n 
+0000846908 00000 n 
+0000846284 00000 n 
+0000842470 00000 n 
+0000846598 00000 n 
+0000846783 00000 n 
+0003966837 00000 n 
+0000853975 00000 n 
+0000850519 00000 n 
+0000847067 00000 n 
+0000850642 00000 n 
+0000850767 00000 n 
+0000850830 00000 n 
+0000850893 00000 n 
+0000850956 00000 n 
+0000851019 00000 n 
+0000851082 00000 n 
+0000851145 00000 n 
+0000851208 00000 n 
+0000851271 00000 n 
+0000851334 00000 n 
+0000851396 00000 n 
+0000851459 00000 n 
+0000851522 00000 n 
+0000851585 00000 n 
+0000851648 00000 n 
+0000851711 00000 n 
+0000851774 00000 n 
+0000851837 00000 n 
+0000851900 00000 n 
+0000851962 00000 n 
+0000852025 00000 n 
+0000852088 00000 n 
+0000852151 00000 n 
+0000852214 00000 n 
+0000852277 00000 n 
+0000852340 00000 n 
+0000852403 00000 n 
+0000852466 00000 n 
+0000852528 00000 n 
+0000852591 00000 n 
+0000852654 00000 n 
+0000852717 00000 n 
+0000852780 00000 n 
+0000852843 00000 n 
+0000852906 00000 n 
+0000852969 00000 n 
+0000853032 00000 n 
+0000853094 00000 n 
+0000853157 00000 n 
+0000853220 00000 n 
+0000853283 00000 n 
+0000853346 00000 n 
+0000853409 00000 n 
+0000853472 00000 n 
+0000853535 00000 n 
+0000853598 00000 n 
+0000853660 00000 n 
+0000853723 00000 n 
+0000853786 00000 n 
+0000853849 00000 n 
+0000853912 00000 n 
+0000856377 00000 n 
+0000857728 00000 n 
+0000856233 00000 n 
+0000854105 00000 n 
+0000856533 00000 n 
+0000856596 00000 n 
+0000856659 00000 n 
+0000856722 00000 n 
+0000856847 00000 n 
+0000856910 00000 n 
+0000856973 00000 n 
+0000857036 00000 n 
+0000857099 00000 n 
+0000857162 00000 n 
+0000857225 00000 n 
+0000857288 00000 n 
+0000857413 00000 n 
+0000857476 00000 n 
+0000857539 00000 n 
+0000857602 00000 n 
+0000857665 00000 n 
+0000954388 00000 n 
+0000863387 00000 n 
+0000861179 00000 n 
+0000857858 00000 n 
+0000861302 00000 n 
+0000861365 00000 n 
+0000861428 00000 n 
+0000861491 00000 n 
+0000861551 00000 n 
+0000861612 00000 n 
+0000861673 00000 n 
+0000861734 00000 n 
+0000861795 00000 n 
+0000861856 00000 n 
+0000861917 00000 n 
+0000861978 00000 n 
+0000862039 00000 n 
+0000862099 00000 n 
+0000862162 00000 n 
+0000862223 00000 n 
+0000862286 00000 n 
+0000862347 00000 n 
+0000862409 00000 n 
+0000862466 00000 n 
+0000862527 00000 n 
+0000862590 00000 n 
+0000862653 00000 n 
+0000862714 00000 n 
+0000862777 00000 n 
+0000862840 00000 n 
+0000862901 00000 n 
+0000862962 00000 n 
+0000863023 00000 n 
+0000863084 00000 n 
+0000863145 00000 n 
+0000863206 00000 n 
+0000863267 00000 n 
+0000863328 00000 n 
+0000868971 00000 n 
+0000866431 00000 n 
+0000863489 00000 n 
+0000866554 00000 n 
+0000866617 00000 n 
+0000866678 00000 n 
+0000866739 00000 n 
+0000866800 00000 n 
+0000866861 00000 n 
+0000866922 00000 n 
+0000866982 00000 n 
+0000867043 00000 n 
+0000867104 00000 n 
+0000867165 00000 n 
+0000867226 00000 n 
+0000867287 00000 n 
+0000867348 00000 n 
+0000867409 00000 n 
+0000867470 00000 n 
+0000867530 00000 n 
+0000867591 00000 n 
+0000867652 00000 n 
+0000867713 00000 n 
+0000867838 00000 n 
+0000867901 00000 n 
+0000867964 00000 n 
+0000868027 00000 n 
+0000868090 00000 n 
+0000868153 00000 n 
+0000868216 00000 n 
+0000868279 00000 n 
+0000868342 00000 n 
+0000868405 00000 n 
+0000868468 00000 n 
+0000868531 00000 n 
+0000868594 00000 n 
+0000868657 00000 n 
+0000868720 00000 n 
+0000868783 00000 n 
+0000868846 00000 n 
+0000870959 00000 n 
+0000948799 00000 n 
+0000875260 00000 n 
+0000872747 00000 n 
+0000870815 00000 n 
+0000869101 00000 n 
+0000871113 00000 n 
+0000871300 00000 n 
+0000871363 00000 n 
+0000871426 00000 n 
+0000871489 00000 n 
+0000871552 00000 n 
+0000871615 00000 n 
+0000871677 00000 n 
+0000871740 00000 n 
+0000871802 00000 n 
+0000871865 00000 n 
+0000871928 00000 n 
+0000871991 00000 n 
+0000872054 00000 n 
+0000872117 00000 n 
+0000872180 00000 n 
+0000872243 00000 n 
+0000872306 00000 n 
+0000872369 00000 n 
+0000872432 00000 n 
+0000872495 00000 n 
+0000872558 00000 n 
+0000872621 00000 n 
+0000872684 00000 n 
+0000948950 00000 n 
+0000949104 00000 n 
+0000949264 00000 n 
+0000949415 00000 n 
+0000952882 00000 n 
+0000949939 00000 n 
+0000875080 00000 n 
+0000872849 00000 n 
+0000949563 00000 n 
+0000949751 00000 n 
+0000949876 00000 n 
+0003966963 00000 n 
+0000943002 00000 n 
+0000953324 00000 n 
+0000953042 00000 n 
+0000954451 00000 n 
+0000952729 00000 n 
+0000950092 00000 n 
+0000953198 00000 n 
+0000953387 00000 n 
+0000953450 00000 n 
+0000953513 00000 n 
+0000953576 00000 n 
+0000953637 00000 n 
+0000953698 00000 n 
+0000953761 00000 n 
+0000953824 00000 n 
+0000953887 00000 n 
+0000953948 00000 n 
+0000954011 00000 n 
+0000954074 00000 n 
+0000954137 00000 n 
+0000954200 00000 n 
+0000954262 00000 n 
+0000954325 00000 n 
+0000960002 00000 n 
+0000961068 00000 n 
+0000957113 00000 n 
+0000954567 00000 n 
+0000957236 00000 n 
+0000957299 00000 n 
+0000957362 00000 n 
+0000957425 00000 n 
+0000957488 00000 n 
+0000957551 00000 n 
+0000957614 00000 n 
+0000957677 00000 n 
+0000957740 00000 n 
+0000957803 00000 n 
+0000957866 00000 n 
+0000957929 00000 n 
+0000957992 00000 n 
+0000958054 00000 n 
+0000958117 00000 n 
+0000958180 00000 n 
+0000958243 00000 n 
+0000958306 00000 n 
+0000958369 00000 n 
+0000958432 00000 n 
+0000958495 00000 n 
+0000958558 00000 n 
+0000958620 00000 n 
+0000958683 00000 n 
+0000958746 00000 n 
+0000958809 00000 n 
+0000958872 00000 n 
+0000958935 00000 n 
+0000958998 00000 n 
+0000959061 00000 n 
+0000959124 00000 n 
+0000959186 00000 n 
+0000959249 00000 n 
+0000959312 00000 n 
+0000959375 00000 n 
+0000959438 00000 n 
+0000959501 00000 n 
+0000959564 00000 n 
+0000959627 00000 n 
+0000959690 00000 n 
+0000959752 00000 n 
+0000959815 00000 n 
+0000959878 00000 n 
+0000959941 00000 n 
+0000960063 00000 n 
+0000960126 00000 n 
+0000960189 00000 n 
+0000960252 00000 n 
+0000960315 00000 n 
+0000960378 00000 n 
+0000960441 00000 n 
+0000960504 00000 n 
+0000960566 00000 n 
+0000960629 00000 n 
+0000960692 00000 n 
+0000960755 00000 n 
+0000960818 00000 n 
+0000960881 00000 n 
+0000960944 00000 n 
+0000961006 00000 n 
+0000965238 00000 n 
+0000963480 00000 n 
+0000961184 00000 n 
+0000963603 00000 n 
+0000963728 00000 n 
+0000963791 00000 n 
+0000963854 00000 n 
+0000963917 00000 n 
+0000963980 00000 n 
+0000964043 00000 n 
+0000964106 00000 n 
+0000964169 00000 n 
+0000964232 00000 n 
+0000964295 00000 n 
+0000964358 00000 n 
+0000964421 00000 n 
+0000964484 00000 n 
+0000964547 00000 n 
+0000964610 00000 n 
+0000964673 00000 n 
+0000964736 00000 n 
+0000964799 00000 n 
+0000964862 00000 n 
+0000964925 00000 n 
+0000964988 00000 n 
+0000965049 00000 n 
+0000965112 00000 n 
+0000965175 00000 n 
+0000969013 00000 n 
+0000969167 00000 n 
+0000971759 00000 n 
+0000968860 00000 n 
+0000965382 00000 n 
+0000969322 00000 n 
+0000969385 00000 n 
+0000969448 00000 n 
+0000969511 00000 n 
+0000969574 00000 n 
+0000969637 00000 n 
+0000969700 00000 n 
+0000969763 00000 n 
+0000969826 00000 n 
+0000969889 00000 n 
+0000969952 00000 n 
+0000970015 00000 n 
+0000970078 00000 n 
+0000970140 00000 n 
+0000970203 00000 n 
+0000970266 00000 n 
+0000970329 00000 n 
+0000970392 00000 n 
+0000970455 00000 n 
+0000970518 00000 n 
+0000970581 00000 n 
+0000970644 00000 n 
+0000970706 00000 n 
+0000970769 00000 n 
+0000970832 00000 n 
+0000970895 00000 n 
+0000970958 00000 n 
+0000971019 00000 n 
+0000971082 00000 n 
+0000971145 00000 n 
+0000971208 00000 n 
+0000971269 00000 n 
+0000971330 00000 n 
+0000971391 00000 n 
+0000971452 00000 n 
+0000971515 00000 n 
+0000971578 00000 n 
+0000971638 00000 n 
+0000971699 00000 n 
+0000975312 00000 n 
+0000975479 00000 n 
+0000975646 00000 n 
+0000975807 00000 n 
+0000978479 00000 n 
+0000975141 00000 n 
+0000971889 00000 n 
+0000975968 00000 n 
+0000976031 00000 n 
+0000976092 00000 n 
+0000976153 00000 n 
+0000976214 00000 n 
+0000976275 00000 n 
+0000976336 00000 n 
+0000976396 00000 n 
+0000976457 00000 n 
+0000976518 00000 n 
+0000976579 00000 n 
+0000976640 00000 n 
+0000976703 00000 n 
+0000976763 00000 n 
+0000976824 00000 n 
+0000976885 00000 n 
+0000976946 00000 n 
+0000977007 00000 n 
+0000977068 00000 n 
+0000977129 00000 n 
+0000977190 00000 n 
+0000977251 00000 n 
+0000977311 00000 n 
+0000977372 00000 n 
+0000977433 00000 n 
+0000977494 00000 n 
+0000977617 00000 n 
+0000977679 00000 n 
+0000977742 00000 n 
+0000977805 00000 n 
+0000977868 00000 n 
+0000977927 00000 n 
+0000977990 00000 n 
+0000978051 00000 n 
+0000978114 00000 n 
+0000978175 00000 n 
+0000978236 00000 n 
+0000978297 00000 n 
+0000978358 00000 n 
+0000978419 00000 n 
+0000991273 00000 n 
+0000997843 00000 n 
+0001104265 00000 n 
+0001106152 00000 n 
+0000984607 00000 n 
+0000982143 00000 n 
+0000978609 00000 n 
+0000982266 00000 n 
+0000982329 00000 n 
+0000982390 00000 n 
+0000982451 00000 n 
+0000982512 00000 n 
+0000982573 00000 n 
+0000982634 00000 n 
+0000982694 00000 n 
+0000982755 00000 n 
+0000982816 00000 n 
+0000982879 00000 n 
+0000982942 00000 n 
+0000983003 00000 n 
+0000983064 00000 n 
+0000983124 00000 n 
+0000983185 00000 n 
+0000983248 00000 n 
+0000983311 00000 n 
+0000983372 00000 n 
+0000983435 00000 n 
+0000983496 00000 n 
+0000983559 00000 n 
+0000983622 00000 n 
+0000983683 00000 n 
+0000983744 00000 n 
+0000983807 00000 n 
+0000983868 00000 n 
+0000983929 00000 n 
+0000983990 00000 n 
+0000984051 00000 n 
+0000984112 00000 n 
+0000984172 00000 n 
+0000984233 00000 n 
+0000984296 00000 n 
+0000984357 00000 n 
+0000984420 00000 n 
+0000984483 00000 n 
+0000984546 00000 n 
+0003967089 00000 n 
+0000991336 00000 n 
+0000989139 00000 n 
+0000984723 00000 n 
+0000989262 00000 n 
+0000989325 00000 n 
+0000989388 00000 n 
+0000989449 00000 n 
+0000989512 00000 n 
+0000989575 00000 n 
+0000989637 00000 n 
+0000989700 00000 n 
+0000989763 00000 n 
+0000989826 00000 n 
+0000989889 00000 n 
+0000989952 00000 n 
+0000990015 00000 n 
+0000990078 00000 n 
+0000990141 00000 n 
+0000990203 00000 n 
+0000990266 00000 n 
+0000990329 00000 n 
+0000990392 00000 n 
+0000990455 00000 n 
+0000990518 00000 n 
+0000990581 00000 n 
+0000990644 00000 n 
+0000990707 00000 n 
+0000990769 00000 n 
+0000990832 00000 n 
+0000990895 00000 n 
+0000990958 00000 n 
+0000991021 00000 n 
+0000991084 00000 n 
+0000991147 00000 n 
+0000991210 00000 n 
+0000995931 00000 n 
+0000996115 00000 n 
+0000996315 00000 n 
+0000998709 00000 n 
+0000995769 00000 n 
+0000991479 00000 n 
+0000996522 00000 n 
+0000996585 00000 n 
+0000996648 00000 n 
+0000996711 00000 n 
+0000996774 00000 n 
+0000996836 00000 n 
+0000996899 00000 n 
+0000996962 00000 n 
+0000997025 00000 n 
+0000997088 00000 n 
+0000997151 00000 n 
+0000997214 00000 n 
+0000997277 00000 n 
+0000997340 00000 n 
+0000997402 00000 n 
+0000997465 00000 n 
+0000997528 00000 n 
+0000997591 00000 n 
+0000997654 00000 n 
+0000997717 00000 n 
+0000997780 00000 n 
+0000997967 00000 n 
+0000998092 00000 n 
+0000998155 00000 n 
+0000998218 00000 n 
+0000998279 00000 n 
+0000998340 00000 n 
+0000998401 00000 n 
+0000998461 00000 n 
+0000998522 00000 n 
+0000998583 00000 n 
+0000998646 00000 n 
+0001001886 00000 n 
+0001002041 00000 n 
+0001004728 00000 n 
+0001001733 00000 n 
+0000998866 00000 n 
+0001002193 00000 n 
+0001002256 00000 n 
+0001002319 00000 n 
+0001002380 00000 n 
+0001002441 00000 n 
+0001002502 00000 n 
+0001002563 00000 n 
+0001002624 00000 n 
+0001002685 00000 n 
+0001002745 00000 n 
+0001002808 00000 n 
+0001002871 00000 n 
+0001002932 00000 n 
+0001002993 00000 n 
+0001003054 00000 n 
+0001003115 00000 n 
+0001003176 00000 n 
+0001003237 00000 n 
+0001003300 00000 n 
+0001003363 00000 n 
+0001003424 00000 n 
+0001003485 00000 n 
+0001003608 00000 n 
+0001003671 00000 n 
+0001003734 00000 n 
+0001003795 00000 n 
+0001003858 00000 n 
+0001003921 00000 n 
+0001003982 00000 n 
+0001004045 00000 n 
+0001004106 00000 n 
+0001004169 00000 n 
+0001004232 00000 n 
+0001004293 00000 n 
+0001004354 00000 n 
+0001004417 00000 n 
+0001004480 00000 n 
+0001004541 00000 n 
+0001004604 00000 n 
+0001004667 00000 n 
+0001008446 00000 n 
+0001011623 00000 n 
+0001008198 00000 n 
+0001004844 00000 n 
+0001008321 00000 n 
+0001008509 00000 n 
+0001008572 00000 n 
+0001008635 00000 n 
+0001008696 00000 n 
+0001008758 00000 n 
+0001008820 00000 n 
+0001008881 00000 n 
+0001008944 00000 n 
+0001009005 00000 n 
+0001009066 00000 n 
+0001009127 00000 n 
+0001009188 00000 n 
+0001009248 00000 n 
+0001009309 00000 n 
+0001009370 00000 n 
+0001009431 00000 n 
+0001009492 00000 n 
+0001009553 00000 n 
+0001009614 00000 n 
+0001009675 00000 n 
+0001009736 00000 n 
+0001009797 00000 n 
+0001009858 00000 n 
+0001009919 00000 n 
+0001009980 00000 n 
+0001010041 00000 n 
+0001010102 00000 n 
+0001010163 00000 n 
+0001010224 00000 n 
+0001010285 00000 n 
+0001010346 00000 n 
+0001010406 00000 n 
+0001010467 00000 n 
+0001010528 00000 n 
+0001010589 00000 n 
+0001010650 00000 n 
+0001010711 00000 n 
+0001010772 00000 n 
+0001010833 00000 n 
+0001010894 00000 n 
+0001010954 00000 n 
+0001011015 00000 n 
+0001011076 00000 n 
+0001011137 00000 n 
+0001011198 00000 n 
+0001011259 00000 n 
+0001011320 00000 n 
+0001011381 00000 n 
+0001011442 00000 n 
+0001011502 00000 n 
+0001011563 00000 n 
+0001017939 00000 n 
+0001015131 00000 n 
+0001011739 00000 n 
+0001015254 00000 n 
+0001015317 00000 n 
+0001015378 00000 n 
+0001015439 00000 n 
+0001015500 00000 n 
+0001015561 00000 n 
+0001015622 00000 n 
+0001015682 00000 n 
+0001015743 00000 n 
+0001015804 00000 n 
+0001015865 00000 n 
+0001015926 00000 n 
+0001015987 00000 n 
+0001016048 00000 n 
+0001016109 00000 n 
+0001016170 00000 n 
+0001016230 00000 n 
+0001016291 00000 n 
+0001016352 00000 n 
+0001016413 00000 n 
+0001016474 00000 n 
+0001016535 00000 n 
+0001016596 00000 n 
+0001016657 00000 n 
+0001016718 00000 n 
+0001016778 00000 n 
+0001016839 00000 n 
+0001016900 00000 n 
+0001016961 00000 n 
+0001017022 00000 n 
+0001017083 00000 n 
+0001017144 00000 n 
+0001017205 00000 n 
+0001017266 00000 n 
+0001017326 00000 n 
+0001017387 00000 n 
+0001017448 00000 n 
+0001017509 00000 n 
+0001017570 00000 n 
+0001017631 00000 n 
+0001017692 00000 n 
+0001017753 00000 n 
+0001017814 00000 n 
+0001022488 00000 n 
+0001022640 00000 n 
+0001022794 00000 n 
+0001023635 00000 n 
+0001022326 00000 n 
+0001018055 00000 n 
+0001022952 00000 n 
+0001023078 00000 n 
+0001023141 00000 n 
+0001023204 00000 n 
+0001023267 00000 n 
+0001023328 00000 n 
+0001023388 00000 n 
+0001023451 00000 n 
+0001023514 00000 n 
+0001023576 00000 n 
+0003967215 00000 n 
+0002580383 00000 n 
+0001027103 00000 n 
+0001030143 00000 n 
+0001026959 00000 n 
+0001023765 00000 n 
+0001027260 00000 n 
+0001027323 00000 n 
+0001027386 00000 n 
+0001027447 00000 n 
+0001027508 00000 n 
+0001027569 00000 n 
+0001027630 00000 n 
+0001027691 00000 n 
+0001027752 00000 n 
+0001027813 00000 n 
+0001027874 00000 n 
+0001027934 00000 n 
+0001027995 00000 n 
+0001028056 00000 n 
+0001028117 00000 n 
+0001028178 00000 n 
+0001028239 00000 n 
+0001028300 00000 n 
+0001028361 00000 n 
+0001028422 00000 n 
+0001028483 00000 n 
+0001028544 00000 n 
+0001028605 00000 n 
+0001028666 00000 n 
+0001028727 00000 n 
+0001028788 00000 n 
+0001028851 00000 n 
+0001028914 00000 n 
+0001028975 00000 n 
+0001029036 00000 n 
+0001029098 00000 n 
+0001029159 00000 n 
+0001029220 00000 n 
+0001029281 00000 n 
+0001029344 00000 n 
+0001029407 00000 n 
+0001029467 00000 n 
+0001029528 00000 n 
+0001029589 00000 n 
+0001029652 00000 n 
+0001029715 00000 n 
+0001029776 00000 n 
+0001029837 00000 n 
+0001029896 00000 n 
+0001029959 00000 n 
+0001030020 00000 n 
+0001030081 00000 n 
+0001110093 00000 n 
+0001036739 00000 n 
+0001032955 00000 n 
+0001030259 00000 n 
+0001033078 00000 n 
+0001033141 00000 n 
+0001033204 00000 n 
+0001033265 00000 n 
+0001033326 00000 n 
+0001033387 00000 n 
+0001033448 00000 n 
+0001033509 00000 n 
+0001033570 00000 n 
+0001033630 00000 n 
+0001033691 00000 n 
+0001033752 00000 n 
+0001033813 00000 n 
+0001033874 00000 n 
+0001033935 00000 n 
+0001033996 00000 n 
+0001034057 00000 n 
+0001034118 00000 n 
+0001034178 00000 n 
+0001034239 00000 n 
+0001034300 00000 n 
+0001034361 00000 n 
+0001034422 00000 n 
+0001034483 00000 n 
+0001034544 00000 n 
+0001034605 00000 n 
+0001034666 00000 n 
+0001034726 00000 n 
+0001034787 00000 n 
+0001034848 00000 n 
+0001034909 00000 n 
+0001034970 00000 n 
+0001035031 00000 n 
+0001035094 00000 n 
+0001035157 00000 n 
+0001035218 00000 n 
+0001035279 00000 n 
+0001035340 00000 n 
+0001035401 00000 n 
+0001035462 00000 n 
+0001035522 00000 n 
+0001035583 00000 n 
+0001035644 00000 n 
+0001035705 00000 n 
+0001035766 00000 n 
+0001035827 00000 n 
+0001035888 00000 n 
+0001035949 00000 n 
+0001036010 00000 n 
+0001036070 00000 n 
+0001036131 00000 n 
+0001036192 00000 n 
+0001036253 00000 n 
+0001036314 00000 n 
+0001036375 00000 n 
+0001036436 00000 n 
+0001036497 00000 n 
+0001036558 00000 n 
+0001036618 00000 n 
+0001036679 00000 n 
+0001040039 00000 n 
+0001043067 00000 n 
+0001039895 00000 n 
+0001036841 00000 n 
+0001040190 00000 n 
+0001040253 00000 n 
+0001040314 00000 n 
+0001040375 00000 n 
+0001040436 00000 n 
+0001040497 00000 n 
+0001040558 00000 n 
+0001040618 00000 n 
+0001040679 00000 n 
+0001040740 00000 n 
+0001040801 00000 n 
+0001040862 00000 n 
+0001040923 00000 n 
+0001040984 00000 n 
+0001041046 00000 n 
+0001041109 00000 n 
+0001041170 00000 n 
+0001041231 00000 n 
+0001041292 00000 n 
+0001041353 00000 n 
+0001041414 00000 n 
+0001041475 00000 n 
+0001041536 00000 n 
+0001041596 00000 n 
+0001041659 00000 n 
+0001041721 00000 n 
+0001041781 00000 n 
+0001041842 00000 n 
+0001041903 00000 n 
+0001041964 00000 n 
+0001042025 00000 n 
+0001042086 00000 n 
+0001042147 00000 n 
+0001042208 00000 n 
+0001042269 00000 n 
+0001042332 00000 n 
+0001042395 00000 n 
+0001042456 00000 n 
+0001042517 00000 n 
+0001042578 00000 n 
+0001042639 00000 n 
+0001042700 00000 n 
+0001042761 00000 n 
+0001042821 00000 n 
+0001042882 00000 n 
+0001042943 00000 n 
+0001043004 00000 n 
+0001049621 00000 n 
+0001046557 00000 n 
+0001043183 00000 n 
+0001046680 00000 n 
+0001046743 00000 n 
+0001046806 00000 n 
+0001046867 00000 n 
+0001046928 00000 n 
+0001046991 00000 n 
+0001047053 00000 n 
+0001047114 00000 n 
+0001047174 00000 n 
+0001047237 00000 n 
+0001047300 00000 n 
+0001047361 00000 n 
+0001047422 00000 n 
+0001047483 00000 n 
+0001047546 00000 n 
+0001047609 00000 n 
+0001047670 00000 n 
+0001047731 00000 n 
+0001047792 00000 n 
+0001047853 00000 n 
+0001047914 00000 n 
+0001047975 00000 n 
+0001048035 00000 n 
+0001048098 00000 n 
+0001048161 00000 n 
+0001048221 00000 n 
+0001048282 00000 n 
+0001048343 00000 n 
+0001048404 00000 n 
+0001048465 00000 n 
+0001048526 00000 n 
+0001048587 00000 n 
+0001048648 00000 n 
+0001048709 00000 n 
+0001048769 00000 n 
+0001048830 00000 n 
+0001048891 00000 n 
+0001048952 00000 n 
+0001049013 00000 n 
+0001049074 00000 n 
+0001049135 00000 n 
+0001049196 00000 n 
+0001049257 00000 n 
+0001049317 00000 n 
+0001049378 00000 n 
+0001049439 00000 n 
+0001049500 00000 n 
+0001049561 00000 n 
+0001055707 00000 n 
+0001053069 00000 n 
+0001049723 00000 n 
+0001053192 00000 n 
+0001053255 00000 n 
+0001053318 00000 n 
+0001053381 00000 n 
+0001053442 00000 n 
+0001053503 00000 n 
+0001053564 00000 n 
+0001053627 00000 n 
+0001053689 00000 n 
+0001053750 00000 n 
+0001053811 00000 n 
+0001053872 00000 n 
+0001053933 00000 n 
+0001053994 00000 n 
+0001054055 00000 n 
+0001054116 00000 n 
+0001054175 00000 n 
+0001054236 00000 n 
+0001054298 00000 n 
+0001054360 00000 n 
+0001054421 00000 n 
+0001054481 00000 n 
+0001054542 00000 n 
+0001054603 00000 n 
+0001054664 00000 n 
+0001054725 00000 n 
+0001054786 00000 n 
+0001054847 00000 n 
+0001054910 00000 n 
+0001054973 00000 n 
+0001055033 00000 n 
+0001055094 00000 n 
+0001055155 00000 n 
+0001055216 00000 n 
+0001055277 00000 n 
+0001055338 00000 n 
+0001055399 00000 n 
+0001055460 00000 n 
+0001055521 00000 n 
+0001055584 00000 n 
+0001055647 00000 n 
+0001065210 00000 n 
+0001065359 00000 n 
+0001065511 00000 n 
+0001061642 00000 n 
+0001058760 00000 n 
+0001055823 00000 n 
+0001058883 00000 n 
+0001058946 00000 n 
+0001059009 00000 n 
+0001059070 00000 n 
+0001059133 00000 n 
+0001059196 00000 n 
+0001059257 00000 n 
+0001059320 00000 n 
+0001059382 00000 n 
+0001059443 00000 n 
+0001059503 00000 n 
+0001059564 00000 n 
+0001059625 00000 n 
+0001059686 00000 n 
+0001059747 00000 n 
+0001059808 00000 n 
+0001059869 00000 n 
+0001059930 00000 n 
+0001059991 00000 n 
+0001060051 00000 n 
+0001060112 00000 n 
+0001060173 00000 n 
+0001060234 00000 n 
+0001060295 00000 n 
+0001060356 00000 n 
+0001060417 00000 n 
+0001060478 00000 n 
+0001060539 00000 n 
+0001060599 00000 n 
+0001060660 00000 n 
+0001060723 00000 n 
+0001060786 00000 n 
+0001060847 00000 n 
+0001060908 00000 n 
+0001060969 00000 n 
+0001061029 00000 n 
+0001061090 00000 n 
+0001061151 00000 n 
+0001061212 00000 n 
+0001061273 00000 n 
+0001061334 00000 n 
+0001061395 00000 n 
+0001061456 00000 n 
+0001061579 00000 n 
+0003967341 00000 n 
+0001065662 00000 n 
+0001065824 00000 n 
+0001065984 00000 n 
+0001066144 00000 n 
+0001066301 00000 n 
+0001068454 00000 n 
+0001065003 00000 n 
+0001061772 00000 n 
+0001066459 00000 n 
+0001066522 00000 n 
+0001066585 00000 n 
+0001066648 00000 n 
+0001066711 00000 n 
+0001066774 00000 n 
+0001066836 00000 n 
+0001066897 00000 n 
+0001066958 00000 n 
+0001067021 00000 n 
+0001067084 00000 n 
+0001067145 00000 n 
+0001067208 00000 n 
+0001067271 00000 n 
+0001067332 00000 n 
+0001067395 00000 n 
+0001067457 00000 n 
+0001067518 00000 n 
+0001067581 00000 n 
+0001067644 00000 n 
+0001067705 00000 n 
+0001067768 00000 n 
+0001067831 00000 n 
+0001067894 00000 n 
+0001067955 00000 n 
+0001068016 00000 n 
+0001068139 00000 n 
+0001068202 00000 n 
+0001068265 00000 n 
+0001068328 00000 n 
+0001068391 00000 n 
+0001091885 00000 n 
+0001074616 00000 n 
+0001071493 00000 n 
+0001068584 00000 n 
+0001071616 00000 n 
+0001071679 00000 n 
+0001071742 00000 n 
+0001071803 00000 n 
+0001071866 00000 n 
+0001071927 00000 n 
+0001071990 00000 n 
+0001072051 00000 n 
+0001072112 00000 n 
+0001072173 00000 n 
+0001072234 00000 n 
+0001072295 00000 n 
+0001072355 00000 n 
+0001072416 00000 n 
+0001072477 00000 n 
+0001072538 00000 n 
+0001072599 00000 n 
+0001072660 00000 n 
+0001072721 00000 n 
+0001072782 00000 n 
+0001072843 00000 n 
+0001072903 00000 n 
+0001072966 00000 n 
+0001073029 00000 n 
+0001073089 00000 n 
+0001073150 00000 n 
+0001073211 00000 n 
+0001073272 00000 n 
+0001073333 00000 n 
+0001073394 00000 n 
+0001073455 00000 n 
+0001073516 00000 n 
+0001073577 00000 n 
+0001073637 00000 n 
+0001073698 00000 n 
+0001073759 00000 n 
+0001073820 00000 n 
+0001073881 00000 n 
+0001073942 00000 n 
+0001074003 00000 n 
+0001074064 00000 n 
+0001074125 00000 n 
+0001074185 00000 n 
+0001074246 00000 n 
+0001074307 00000 n 
+0001074368 00000 n 
+0001074431 00000 n 
+0001074494 00000 n 
+0001074555 00000 n 
+0001080595 00000 n 
+0001077833 00000 n 
+0001074718 00000 n 
+0001077956 00000 n 
+0001078019 00000 n 
+0001078082 00000 n 
+0001078145 00000 n 
+0001078206 00000 n 
+0001078267 00000 n 
+0001078328 00000 n 
+0001078391 00000 n 
+0001078454 00000 n 
+0001078515 00000 n 
+0001078576 00000 n 
+0001078639 00000 n 
+0001078702 00000 n 
+0001078763 00000 n 
+0001078824 00000 n 
+0001078885 00000 n 
+0001078946 00000 n 
+0001079007 00000 n 
+0001079068 00000 n 
+0001079128 00000 n 
+0001079189 00000 n 
+0001079250 00000 n 
+0001079311 00000 n 
+0001079372 00000 n 
+0001079433 00000 n 
+0001079494 00000 n 
+0001079555 00000 n 
+0001079616 00000 n 
+0001079676 00000 n 
+0001079737 00000 n 
+0001079798 00000 n 
+0001079859 00000 n 
+0001079920 00000 n 
+0001079981 00000 n 
+0001080044 00000 n 
+0001080107 00000 n 
+0001080168 00000 n 
+0001080229 00000 n 
+0001080290 00000 n 
+0001080351 00000 n 
+0001080412 00000 n 
+0001080473 00000 n 
+0001080534 00000 n 
+0001083429 00000 n 
+0001083592 00000 n 
+0001083753 00000 n 
+0001083914 00000 n 
+0001085609 00000 n 
+0001083258 00000 n 
+0001080697 00000 n 
+0001084070 00000 n 
+0001084133 00000 n 
+0001084196 00000 n 
+0001084259 00000 n 
+0001084319 00000 n 
+0001084382 00000 n 
+0001084443 00000 n 
+0001084506 00000 n 
+0001084567 00000 n 
+0001084628 00000 n 
+0001084691 00000 n 
+0001084754 00000 n 
+0001084815 00000 n 
+0001084876 00000 n 
+0001084936 00000 n 
+0001084997 00000 n 
+0001085058 00000 n 
+0001085119 00000 n 
+0001085180 00000 n 
+0001085241 00000 n 
+0001085302 00000 n 
+0001085363 00000 n 
+0001085424 00000 n 
+0001085483 00000 n 
+0001085546 00000 n 
+0001098252 00000 n 
+0001091948 00000 n 
+0001089498 00000 n 
+0001085711 00000 n 
+0001089621 00000 n 
+0001089684 00000 n 
+0001089747 00000 n 
+0001089810 00000 n 
+0001089873 00000 n 
+0001089936 00000 n 
+0001089999 00000 n 
+0001090062 00000 n 
+0001090125 00000 n 
+0001090188 00000 n 
+0001090249 00000 n 
+0001090312 00000 n 
+0001090375 00000 n 
+0001090438 00000 n 
+0001090501 00000 n 
+0001090564 00000 n 
+0001090627 00000 n 
+0001090690 00000 n 
+0001090753 00000 n 
+0001090815 00000 n 
+0001090878 00000 n 
+0001090941 00000 n 
+0001091004 00000 n 
+0001091067 00000 n 
+0001091130 00000 n 
+0001091193 00000 n 
+0001091256 00000 n 
+0001091319 00000 n 
+0001091381 00000 n 
+0001091444 00000 n 
+0001091507 00000 n 
+0001091570 00000 n 
+0001091633 00000 n 
+0001091696 00000 n 
+0001091759 00000 n 
+0001091822 00000 n 
+0001098315 00000 n 
+0001095865 00000 n 
+0001092077 00000 n 
+0001095988 00000 n 
+0001096051 00000 n 
+0001096114 00000 n 
+0001096177 00000 n 
+0001096240 00000 n 
+0001096303 00000 n 
+0001096366 00000 n 
+0001096429 00000 n 
+0001096492 00000 n 
+0001096555 00000 n 
+0001096616 00000 n 
+0001096679 00000 n 
+0001096742 00000 n 
+0001096805 00000 n 
+0001096868 00000 n 
+0001096931 00000 n 
+0001096994 00000 n 
+0001097057 00000 n 
+0001097120 00000 n 
+0001097182 00000 n 
+0001097245 00000 n 
+0001097308 00000 n 
+0001097371 00000 n 
+0001097434 00000 n 
+0001097497 00000 n 
+0001097560 00000 n 
+0001097623 00000 n 
+0001097686 00000 n 
+0001097748 00000 n 
+0001097811 00000 n 
+0001097874 00000 n 
+0001097937 00000 n 
+0001098000 00000 n 
+0001098063 00000 n 
+0001098126 00000 n 
+0001098189 00000 n 
+0003967467 00000 n 
+0001106215 00000 n 
+0001102507 00000 n 
+0001098444 00000 n 
+0001102630 00000 n 
+0001102693 00000 n 
+0001102756 00000 n 
+0001102819 00000 n 
+0001102882 00000 n 
+0001102945 00000 n 
+0001103008 00000 n 
+0001103071 00000 n 
+0001103134 00000 n 
+0001103197 00000 n 
+0001103258 00000 n 
+0001103321 00000 n 
+0001103384 00000 n 
+0001103447 00000 n 
+0001103510 00000 n 
+0001103573 00000 n 
+0001103636 00000 n 
+0001103699 00000 n 
+0001103762 00000 n 
+0001103824 00000 n 
+0001103887 00000 n 
+0001103950 00000 n 
+0001104013 00000 n 
+0001104076 00000 n 
+0001104139 00000 n 
+0001104202 00000 n 
+0001104328 00000 n 
+0001104391 00000 n 
+0001104454 00000 n 
+0001104517 00000 n 
+0001104580 00000 n 
+0001104643 00000 n 
+0001104706 00000 n 
+0001104768 00000 n 
+0001104831 00000 n 
+0001104894 00000 n 
+0001104957 00000 n 
+0001105020 00000 n 
+0001105083 00000 n 
+0001105146 00000 n 
+0001105209 00000 n 
+0001105272 00000 n 
+0001105334 00000 n 
+0001105397 00000 n 
+0001105460 00000 n 
+0001105523 00000 n 
+0001105586 00000 n 
+0001105649 00000 n 
+0001105712 00000 n 
+0001105775 00000 n 
+0001105838 00000 n 
+0001105900 00000 n 
+0001105963 00000 n 
+0001106026 00000 n 
+0001106089 00000 n 
+0001111913 00000 n 
+0001109530 00000 n 
+0001106330 00000 n 
+0001109653 00000 n 
+0001109716 00000 n 
+0001109779 00000 n 
+0001109842 00000 n 
+0001109905 00000 n 
+0001109968 00000 n 
+0001110031 00000 n 
+0001110279 00000 n 
+0001110342 00000 n 
+0001110405 00000 n 
+0001110468 00000 n 
+0001110531 00000 n 
+0001110594 00000 n 
+0001110657 00000 n 
+0001110719 00000 n 
+0001110782 00000 n 
+0001110845 00000 n 
+0001110970 00000 n 
+0001111033 00000 n 
+0001111096 00000 n 
+0001111159 00000 n 
+0001111222 00000 n 
+0001111284 00000 n 
+0001111347 00000 n 
+0001111410 00000 n 
+0001111473 00000 n 
+0001111536 00000 n 
+0001111599 00000 n 
+0001111662 00000 n 
+0001111725 00000 n 
+0001111788 00000 n 
+0001111850 00000 n 
+0001116049 00000 n 
+0001116250 00000 n 
+0001117536 00000 n 
+0001115896 00000 n 
+0001112057 00000 n 
+0001116420 00000 n 
+0001116483 00000 n 
+0001116546 00000 n 
+0001116608 00000 n 
+0001116671 00000 n 
+0001116734 00000 n 
+0001116859 00000 n 
+0001116922 00000 n 
+0001117047 00000 n 
+0001117110 00000 n 
+0001117173 00000 n 
+0001117236 00000 n 
+0001117297 00000 n 
+0001117358 00000 n 
+0001117419 00000 n 
+0001117480 00000 n 
+0001120784 00000 n 
+0001123567 00000 n 
+0001120640 00000 n 
+0001117666 00000 n 
+0001120995 00000 n 
+0001121058 00000 n 
+0001121121 00000 n 
+0001121184 00000 n 
+0001121245 00000 n 
+0001121306 00000 n 
+0001121367 00000 n 
+0001121429 00000 n 
+0001121492 00000 n 
+0001121553 00000 n 
+0001121614 00000 n 
+0001121675 00000 n 
+0001121736 00000 n 
+0001121797 00000 n 
+0001121858 00000 n 
+0001121919 00000 n 
+0001121979 00000 n 
+0001122040 00000 n 
+0001122101 00000 n 
+0001122162 00000 n 
+0001122223 00000 n 
+0001122284 00000 n 
+0001122345 00000 n 
+0001122406 00000 n 
+0001122467 00000 n 
+0001122527 00000 n 
+0001122588 00000 n 
+0001122649 00000 n 
+0001122710 00000 n 
+0001122771 00000 n 
+0001122832 00000 n 
+0001122893 00000 n 
+0001122954 00000 n 
+0001123015 00000 n 
+0001123075 00000 n 
+0001123136 00000 n 
+0001123197 00000 n 
+0001123258 00000 n 
+0001123319 00000 n 
+0001126932 00000 n 
+0001127088 00000 n 
+0001127240 00000 n 
+0001130585 00000 n 
+0001128338 00000 n 
+0001126770 00000 n 
+0001123683 00000 n 
+0001127400 00000 n 
+0001127463 00000 n 
+0001127526 00000 n 
+0001127589 00000 n 
+0001127652 00000 n 
+0001127715 00000 n 
+0001127778 00000 n 
+0001127839 00000 n 
+0001127900 00000 n 
+0001127963 00000 n 
+0001128026 00000 n 
+0001128088 00000 n 
+0001128151 00000 n 
+0001128212 00000 n 
+0001128275 00000 n 
+0001145182 00000 n 
+0001145308 00000 n 
+0001145685 00000 n 
+0001130462 00000 n 
+0001128468 00000 n 
+0001145056 00000 n 
+0001145433 00000 n 
+0001145496 00000 n 
+0001145559 00000 n 
+0001145622 00000 n 
+0003967593 00000 n 
+0001149757 00000 n 
+0001149945 00000 n 
+0001150728 00000 n 
+0001149604 00000 n 
+0001145838 00000 n 
+0001150164 00000 n 
+0001150227 00000 n 
+0001150290 00000 n 
+0001150353 00000 n 
+0001150416 00000 n 
+0001150479 00000 n 
+0001150542 00000 n 
+0001150604 00000 n 
+0001155001 00000 n 
+0001155153 00000 n 
+0001156184 00000 n 
+0001154848 00000 n 
+0001150872 00000 n 
+0001155304 00000 n 
+0001155429 00000 n 
+0001155492 00000 n 
+0001155555 00000 n 
+0001155618 00000 n 
+0001155681 00000 n 
+0001155744 00000 n 
+0001155807 00000 n 
+0001155870 00000 n 
+0001155933 00000 n 
+0001155996 00000 n 
+0001156059 00000 n 
+0001159603 00000 n 
+0001159996 00000 n 
+0001159459 00000 n 
+0001156314 00000 n 
+0001159809 00000 n 
+0001164794 00000 n 
+0001164546 00000 n 
+0001160098 00000 n 
+0001164669 00000 n 
+0001167131 00000 n 
+0001166945 00000 n 
+0001164924 00000 n 
+0001167068 00000 n 
+0001170432 00000 n 
+0001170890 00000 n 
+0001170288 00000 n 
+0001167261 00000 n 
+0001170581 00000 n 
+0001170706 00000 n 
+0003967719 00000 n 
+0001174977 00000 n 
+0001175123 00000 n 
+0001175456 00000 n 
+0001174824 00000 n 
+0001171006 00000 n 
+0001175269 00000 n 
+0001179483 00000 n 
+0001179817 00000 n 
+0001179339 00000 n 
+0001175600 00000 n 
+0001179630 00000 n 
+0001188724 00000 n 
+0001184450 00000 n 
+0001184202 00000 n 
+0001179933 00000 n 
+0001184325 00000 n 
+0001188871 00000 n 
+0001189020 00000 n 
+0001189172 00000 n 
+0001191558 00000 n 
+0001189513 00000 n 
+0001188553 00000 n 
+0001184566 00000 n 
+0001189326 00000 n 
+0001501047 00000 n 
+0001602024 00000 n 
+0001209904 00000 n 
+0001209466 00000 n 
+0001206949 00000 n 
+0001209623 00000 n 
+0001212581 00000 n 
+0001210656 00000 n 
+0001191405 00000 n 
+0001189629 00000 n 
+0001209778 00000 n 
+0001209966 00000 n 
+0001210028 00000 n 
+0001210091 00000 n 
+0001210153 00000 n 
+0001210279 00000 n 
+0001210341 00000 n 
+0001210404 00000 n 
+0001210467 00000 n 
+0001210530 00000 n 
+0001210593 00000 n 
+0001201699 00000 n 
+0001208881 00000 n 
+0001346569 00000 n 
+0001346136 00000 n 
+0001223292 00000 n 
+0001346290 00000 n 
+0001259931 00000 n 
+0001347196 00000 n 
+0001212428 00000 n 
+0001210825 00000 n 
+0001346443 00000 n 
+0001346632 00000 n 
+0001346694 00000 n 
+0001346757 00000 n 
+0001346819 00000 n 
+0001346882 00000 n 
+0001347008 00000 n 
+0001347133 00000 n 
+0003967845 00000 n 
+0001219429 00000 n 
+0001233324 00000 n 
+0001272432 00000 n 
+0001350433 00000 n 
+0001350581 00000 n 
+0001350740 00000 n 
+0001352817 00000 n 
+0001350271 00000 n 
+0001347366 00000 n 
+0001350898 00000 n 
+0001350961 00000 n 
+0001351024 00000 n 
+0001351087 00000 n 
+0001351148 00000 n 
+0001351211 00000 n 
+0001351272 00000 n 
+0001351335 00000 n 
+0001351398 00000 n 
+0001351461 00000 n 
+0001351522 00000 n 
+0001351583 00000 n 
+0001351644 00000 n 
+0001351705 00000 n 
+0001351764 00000 n 
+0001351825 00000 n 
+0001351886 00000 n 
+0001351947 00000 n 
+0001352008 00000 n 
+0001352069 00000 n 
+0001352130 00000 n 
+0001352193 00000 n 
+0001352256 00000 n 
+0001352317 00000 n 
+0001352380 00000 n 
+0001352443 00000 n 
+0001352504 00000 n 
+0001352567 00000 n 
+0001352630 00000 n 
+0001352693 00000 n 
+0001352756 00000 n 
+0001367371 00000 n 
+0001372277 00000 n 
+0001355998 00000 n 
+0001359334 00000 n 
+0001355854 00000 n 
+0001352933 00000 n 
+0001356147 00000 n 
+0001356210 00000 n 
+0001356273 00000 n 
+0001356334 00000 n 
+0001356395 00000 n 
+0001356456 00000 n 
+0001356517 00000 n 
+0001356578 00000 n 
+0001356639 00000 n 
+0001356699 00000 n 
+0001356760 00000 n 
+0001356821 00000 n 
+0001356882 00000 n 
+0001356943 00000 n 
+0001357004 00000 n 
+0001357065 00000 n 
+0001357126 00000 n 
+0001357187 00000 n 
+0001357247 00000 n 
+0001357308 00000 n 
+0001357369 00000 n 
+0001357430 00000 n 
+0001357493 00000 n 
+0001357556 00000 n 
+0001357617 00000 n 
+0001357678 00000 n 
+0001357741 00000 n 
+0001357802 00000 n 
+0001357863 00000 n 
+0001357926 00000 n 
+0001357988 00000 n 
+0001358049 00000 n 
+0001358110 00000 n 
+0001358171 00000 n 
+0001358232 00000 n 
+0001358295 00000 n 
+0001358358 00000 n 
+0001358419 00000 n 
+0001358482 00000 n 
+0001358544 00000 n 
+0001358605 00000 n 
+0001358665 00000 n 
+0001358726 00000 n 
+0001358787 00000 n 
+0001358848 00000 n 
+0001358909 00000 n 
+0001358970 00000 n 
+0001359031 00000 n 
+0001359092 00000 n 
+0001359153 00000 n 
+0001359213 00000 n 
+0001359274 00000 n 
+0001361024 00000 n 
+0001361340 00000 n 
+0001362117 00000 n 
+0001360862 00000 n 
+0001359450 00000 n 
+0001361499 00000 n 
+0001361562 00000 n 
+0001361623 00000 n 
+0001361684 00000 n 
+0001361745 00000 n 
+0001361806 00000 n 
+0001361867 00000 n 
+0001361930 00000 n 
+0001361182 00000 n 
+0001361993 00000 n 
+0001362056 00000 n 
+0001380209 00000 n 
+0001395618 00000 n 
+0001367434 00000 n 
+0001364417 00000 n 
+0001362219 00000 n 
+0001364540 00000 n 
+0001364603 00000 n 
+0001364666 00000 n 
+0001364729 00000 n 
+0001364792 00000 n 
+0001364855 00000 n 
+0001364918 00000 n 
+0001364981 00000 n 
+0001365044 00000 n 
+0001365107 00000 n 
+0001365170 00000 n 
+0001365233 00000 n 
+0001365296 00000 n 
+0001365358 00000 n 
+0001365421 00000 n 
+0001365484 00000 n 
+0001365547 00000 n 
+0001365610 00000 n 
+0001365673 00000 n 
+0001365736 00000 n 
+0001365799 00000 n 
+0001365862 00000 n 
+0001365924 00000 n 
+0001365987 00000 n 
+0001366050 00000 n 
+0001366113 00000 n 
+0001366176 00000 n 
+0001366239 00000 n 
+0001366302 00000 n 
+0001366365 00000 n 
+0001366428 00000 n 
+0001366490 00000 n 
+0001366553 00000 n 
+0001366616 00000 n 
+0001366679 00000 n 
+0001366742 00000 n 
+0001366805 00000 n 
+0001366868 00000 n 
+0001366931 00000 n 
+0001366994 00000 n 
+0001367056 00000 n 
+0001367119 00000 n 
+0001367182 00000 n 
+0001367245 00000 n 
+0001367308 00000 n 
+0001372340 00000 n 
+0001369575 00000 n 
+0001367550 00000 n 
+0001369698 00000 n 
+0001369761 00000 n 
+0001369824 00000 n 
+0001369887 00000 n 
+0001369950 00000 n 
+0001370013 00000 n 
+0001370076 00000 n 
+0001370139 00000 n 
+0001370202 00000 n 
+0001370265 00000 n 
+0001370328 00000 n 
+0001370391 00000 n 
+0001370454 00000 n 
+0001370516 00000 n 
+0001370579 00000 n 
+0001370642 00000 n 
+0001370705 00000 n 
+0001370768 00000 n 
+0001370831 00000 n 
+0001370894 00000 n 
+0001370957 00000 n 
+0001371020 00000 n 
+0001371082 00000 n 
+0001371145 00000 n 
+0001371208 00000 n 
+0001371271 00000 n 
+0001371334 00000 n 
+0001371397 00000 n 
+0001371460 00000 n 
+0001371523 00000 n 
+0001371586 00000 n 
+0001371648 00000 n 
+0001371711 00000 n 
+0001371774 00000 n 
+0001371837 00000 n 
+0001371900 00000 n 
+0001371963 00000 n 
+0001372026 00000 n 
+0001372089 00000 n 
+0001372152 00000 n 
+0001372214 00000 n 
+0001380272 00000 n 
+0001377320 00000 n 
+0001372456 00000 n 
+0001377443 00000 n 
+0001377506 00000 n 
+0001377569 00000 n 
+0001377632 00000 n 
+0001377695 00000 n 
+0001377757 00000 n 
+0001377820 00000 n 
+0001377883 00000 n 
+0001377946 00000 n 
+0001378009 00000 n 
+0001378072 00000 n 
+0001378135 00000 n 
+0001378198 00000 n 
+0001378261 00000 n 
+0001378323 00000 n 
+0001378386 00000 n 
+0001378449 00000 n 
+0001378512 00000 n 
+0001378575 00000 n 
+0001378638 00000 n 
+0001378701 00000 n 
+0001378764 00000 n 
+0001378827 00000 n 
+0001378888 00000 n 
+0001378951 00000 n 
+0001379014 00000 n 
+0001379077 00000 n 
+0001379140 00000 n 
+0001379203 00000 n 
+0001379266 00000 n 
+0001379329 00000 n 
+0001379392 00000 n 
+0001379454 00000 n 
+0001379517 00000 n 
+0001379580 00000 n 
+0001379643 00000 n 
+0001379706 00000 n 
+0001379769 00000 n 
+0001379832 00000 n 
+0001379895 00000 n 
+0001379958 00000 n 
+0001380020 00000 n 
+0001380083 00000 n 
+0001380146 00000 n 
+0003967971 00000 n 
+0001388274 00000 n 
+0001384507 00000 n 
+0001380401 00000 n 
+0001384630 00000 n 
+0001384693 00000 n 
+0001384756 00000 n 
+0001384819 00000 n 
+0001384882 00000 n 
+0001384944 00000 n 
+0001385007 00000 n 
+0001385070 00000 n 
+0001385133 00000 n 
+0001385196 00000 n 
+0001385259 00000 n 
+0001385322 00000 n 
+0001385385 00000 n 
+0001385448 00000 n 
+0001385510 00000 n 
+0001385573 00000 n 
+0001385636 00000 n 
+0001385699 00000 n 
+0001385762 00000 n 
+0001385825 00000 n 
+0001385888 00000 n 
+0001385951 00000 n 
+0001386014 00000 n 
+0001386075 00000 n 
+0001386138 00000 n 
+0001386201 00000 n 
+0001386264 00000 n 
+0001386327 00000 n 
+0001386390 00000 n 
+0001386453 00000 n 
+0001386516 00000 n 
+0001386579 00000 n 
+0001386642 00000 n 
+0001386701 00000 n 
+0001386764 00000 n 
+0001386827 00000 n 
+0001386890 00000 n 
+0001386953 00000 n 
+0001387016 00000 n 
+0001387079 00000 n 
+0001387142 00000 n 
+0001387205 00000 n 
+0001387267 00000 n 
+0001387330 00000 n 
+0001387393 00000 n 
+0001387456 00000 n 
+0001387519 00000 n 
+0001387582 00000 n 
+0001387645 00000 n 
+0001387708 00000 n 
+0001387771 00000 n 
+0001387833 00000 n 
+0001387896 00000 n 
+0001387959 00000 n 
+0001388022 00000 n 
+0001388085 00000 n 
+0001388148 00000 n 
+0001388211 00000 n 
+0001395681 00000 n 
+0001392729 00000 n 
+0001388389 00000 n 
+0001392852 00000 n 
+0001392915 00000 n 
+0001392978 00000 n 
+0001393041 00000 n 
+0001393104 00000 n 
+0001393166 00000 n 
+0001393229 00000 n 
+0001393292 00000 n 
+0001393355 00000 n 
+0001393418 00000 n 
+0001393481 00000 n 
+0001393544 00000 n 
+0001393607 00000 n 
+0001393670 00000 n 
+0001393732 00000 n 
+0001393795 00000 n 
+0001393858 00000 n 
+0001393921 00000 n 
+0001393984 00000 n 
+0001394047 00000 n 
+0001394110 00000 n 
+0001394173 00000 n 
+0001394236 00000 n 
+0001394297 00000 n 
+0001394360 00000 n 
+0001394423 00000 n 
+0001394486 00000 n 
+0001394549 00000 n 
+0001394612 00000 n 
+0001394675 00000 n 
+0001394738 00000 n 
+0001394801 00000 n 
+0001394863 00000 n 
+0001394926 00000 n 
+0001394989 00000 n 
+0001395052 00000 n 
+0001395115 00000 n 
+0001395178 00000 n 
+0001395241 00000 n 
+0001395304 00000 n 
+0001395367 00000 n 
+0001395429 00000 n 
+0001395492 00000 n 
+0001395555 00000 n 
+0001402970 00000 n 
+0001502163 00000 n 
+0001402187 00000 n 
+0001399550 00000 n 
+0001395810 00000 n 
+0001399673 00000 n 
+0001399736 00000 n 
+0001399799 00000 n 
+0001399862 00000 n 
+0001399925 00000 n 
+0001399987 00000 n 
+0001400050 00000 n 
+0001400113 00000 n 
+0001400176 00000 n 
+0001400239 00000 n 
+0001400302 00000 n 
+0001400365 00000 n 
+0001400428 00000 n 
+0001400491 00000 n 
+0001400553 00000 n 
+0001400616 00000 n 
+0001400679 00000 n 
+0001400742 00000 n 
+0001400805 00000 n 
+0001400868 00000 n 
+0001400931 00000 n 
+0001400994 00000 n 
+0001401057 00000 n 
+0001401118 00000 n 
+0001401181 00000 n 
+0001401244 00000 n 
+0001401307 00000 n 
+0001401370 00000 n 
+0001401433 00000 n 
+0001401496 00000 n 
+0001401559 00000 n 
+0001401622 00000 n 
+0001401684 00000 n 
+0001401747 00000 n 
+0001401810 00000 n 
+0001401873 00000 n 
+0001401936 00000 n 
+0001401999 00000 n 
+0001402062 00000 n 
+0001501109 00000 n 
+0001402847 00000 n 
+0001402316 00000 n 
+0001500921 00000 n 
+0001602148 00000 n 
+0001502040 00000 n 
+0001501235 00000 n 
+0001601898 00000 n 
+0001606804 00000 n 
+0001606953 00000 n 
+0001607109 00000 n 
+0001607262 00000 n 
+0001607855 00000 n 
+0001606633 00000 n 
+0001602302 00000 n 
+0001607414 00000 n 
+0001607477 00000 n 
+0001607540 00000 n 
+0001607603 00000 n 
+0001607666 00000 n 
+0001607729 00000 n 
+0001607792 00000 n 
+0003968097 00000 n 
+0001610599 00000 n 
+0001610413 00000 n 
+0001607999 00000 n 
+0001610536 00000 n 
+0001611451 00000 n 
+0001611203 00000 n 
+0001610701 00000 n 
+0001611326 00000 n 
+0001631731 00000 n 
+0001631955 00000 n 
+0001613474 00000 n 
+0001632548 00000 n 
+0001613321 00000 n 
+0001611553 00000 n 
+0001632110 00000 n 
+0001632173 00000 n 
+0001632298 00000 n 
+0001632423 00000 n 
+0001636686 00000 n 
+0001636315 00000 n 
+0001632702 00000 n 
+0001636438 00000 n 
+0001641249 00000 n 
+0001640939 00000 n 
+0001636830 00000 n 
+0001641062 00000 n 
+0001645494 00000 n 
+0001648875 00000 n 
+0001645835 00000 n 
+0001645350 00000 n 
+0001641393 00000 n 
+0001645647 00000 n 
+0001645772 00000 n 
+0003968223 00000 n 
+0001705163 00000 n 
+0001704128 00000 n 
+0001704277 00000 n 
+0001704432 00000 n 
+0001704578 00000 n 
+0001704731 00000 n 
+0001704884 00000 n 
+0001706087 00000 n 
+0001648686 00000 n 
+0001645993 00000 n 
+0001705037 00000 n 
+0001705226 00000 n 
+0001705287 00000 n 
+0001705350 00000 n 
+0001705413 00000 n 
+0001705474 00000 n 
+0001705535 00000 n 
+0001705597 00000 n 
+0001705660 00000 n 
+0001705723 00000 n 
+0001705784 00000 n 
+0001705845 00000 n 
+0001705906 00000 n 
+0001705966 00000 n 
+0001706027 00000 n 
+0001695630 00000 n 
+0001723870 00000 n 
+0001728539 00000 n 
+0001729861 00000 n 
+0001709888 00000 n 
+0001712130 00000 n 
+0001709744 00000 n 
+0001706227 00000 n 
+0001710040 00000 n 
+0001710103 00000 n 
+0001710164 00000 n 
+0001710225 00000 n 
+0001710286 00000 n 
+0001710347 00000 n 
+0001710408 00000 n 
+0001710468 00000 n 
+0001710529 00000 n 
+0001710590 00000 n 
+0001710653 00000 n 
+0001710714 00000 n 
+0001710775 00000 n 
+0001710835 00000 n 
+0001710896 00000 n 
+0001710957 00000 n 
+0001711018 00000 n 
+0001711079 00000 n 
+0001711140 00000 n 
+0001711201 00000 n 
+0001711264 00000 n 
+0001711327 00000 n 
+0001711388 00000 n 
+0001711449 00000 n 
+0001711510 00000 n 
+0001711573 00000 n 
+0001711634 00000 n 
+0001711695 00000 n 
+0001711758 00000 n 
+0001711821 00000 n 
+0001711882 00000 n 
+0001711945 00000 n 
+0001712008 00000 n 
+0001712069 00000 n 
+0001724310 00000 n 
+0001716018 00000 n 
+0001714601 00000 n 
+0001712246 00000 n 
+0001714724 00000 n 
+0001714787 00000 n 
+0001714850 00000 n 
+0001714911 00000 n 
+0001714974 00000 n 
+0001715035 00000 n 
+0001715096 00000 n 
+0001715157 00000 n 
+0001715218 00000 n 
+0001715278 00000 n 
+0001715339 00000 n 
+0001715400 00000 n 
+0001715461 00000 n 
+0001715522 00000 n 
+0001715583 00000 n 
+0001715646 00000 n 
+0001715707 00000 n 
+0001715768 00000 n 
+0001715831 00000 n 
+0001715894 00000 n 
+0001715955 00000 n 
+0001724373 00000 n 
+0001720918 00000 n 
+0001716134 00000 n 
+0001721041 00000 n 
+0001721104 00000 n 
+0001721167 00000 n 
+0001721230 00000 n 
+0001721293 00000 n 
+0001721355 00000 n 
+0001721418 00000 n 
+0001721481 00000 n 
+0001721544 00000 n 
+0001721607 00000 n 
+0001721670 00000 n 
+0001721733 00000 n 
+0001721796 00000 n 
+0001721859 00000 n 
+0001721921 00000 n 
+0001721984 00000 n 
+0001722047 00000 n 
+0001722110 00000 n 
+0001722173 00000 n 
+0001722236 00000 n 
+0001722299 00000 n 
+0001722362 00000 n 
+0001722425 00000 n 
+0001722486 00000 n 
+0001722549 00000 n 
+0001722612 00000 n 
+0001722675 00000 n 
+0001722738 00000 n 
+0001722801 00000 n 
+0001722864 00000 n 
+0001722927 00000 n 
+0001722990 00000 n 
+0001723052 00000 n 
+0001723115 00000 n 
+0001723178 00000 n 
+0001723241 00000 n 
+0001723304 00000 n 
+0001723367 00000 n 
+0001723430 00000 n 
+0001723493 00000 n 
+0001723556 00000 n 
+0001723618 00000 n 
+0001723681 00000 n 
+0001723744 00000 n 
+0001723807 00000 n 
+0001723933 00000 n 
+0001723996 00000 n 
+0001724059 00000 n 
+0001724122 00000 n 
+0001724184 00000 n 
+0001724247 00000 n 
+0001730049 00000 n 
+0001727472 00000 n 
+0001724516 00000 n 
+0001727595 00000 n 
+0001727658 00000 n 
+0001727721 00000 n 
+0001727784 00000 n 
+0001727847 00000 n 
+0001727910 00000 n 
+0001727973 00000 n 
+0001728036 00000 n 
+0001728099 00000 n 
+0001728162 00000 n 
+0001728225 00000 n 
+0001728288 00000 n 
+0001728351 00000 n 
+0001728413 00000 n 
+0001728476 00000 n 
+0001728602 00000 n 
+0001728665 00000 n 
+0001728728 00000 n 
+0001728791 00000 n 
+0001728854 00000 n 
+0001728917 00000 n 
+0001728980 00000 n 
+0001729043 00000 n 
+0001729106 00000 n 
+0001729169 00000 n 
+0001729232 00000 n 
+0001729295 00000 n 
+0001729358 00000 n 
+0001729421 00000 n 
+0001729484 00000 n 
+0001729547 00000 n 
+0001729609 00000 n 
+0001729672 00000 n 
+0001729735 00000 n 
+0001729798 00000 n 
+0001729986 00000 n 
+0001733350 00000 n 
+0001733505 00000 n 
+0001736657 00000 n 
+0001733197 00000 n 
+0001730179 00000 n 
+0001733659 00000 n 
+0001733722 00000 n 
+0001733784 00000 n 
+0001733847 00000 n 
+0001733910 00000 n 
+0001733973 00000 n 
+0001734034 00000 n 
+0001734095 00000 n 
+0001734158 00000 n 
+0001734221 00000 n 
+0001734282 00000 n 
+0001734343 00000 n 
+0001734404 00000 n 
+0001734465 00000 n 
+0001734526 00000 n 
+0001734587 00000 n 
+0001734648 00000 n 
+0001734708 00000 n 
+0001734769 00000 n 
+0001734830 00000 n 
+0001734893 00000 n 
+0001734954 00000 n 
+0001735015 00000 n 
+0001735076 00000 n 
+0001735137 00000 n 
+0001735197 00000 n 
+0001735258 00000 n 
+0001735319 00000 n 
+0001735382 00000 n 
+0001735444 00000 n 
+0001735505 00000 n 
+0001735565 00000 n 
+0001735626 00000 n 
+0001735687 00000 n 
+0001735748 00000 n 
+0001735809 00000 n 
+0001735870 00000 n 
+0001735931 00000 n 
+0001735992 00000 n 
+0001736053 00000 n 
+0001736113 00000 n 
+0001736174 00000 n 
+0001736235 00000 n 
+0001736296 00000 n 
+0001736357 00000 n 
+0001736418 00000 n 
+0001736479 00000 n 
+0001736540 00000 n 
+0001736601 00000 n 
+0003968349 00000 n 
+0001745058 00000 n 
+0001745121 00000 n 
+0001741621 00000 n 
+0001736773 00000 n 
+0001741744 00000 n 
+0001741807 00000 n 
+0001741870 00000 n 
+0001741931 00000 n 
+0001741992 00000 n 
+0001742053 00000 n 
+0001742114 00000 n 
+0001742174 00000 n 
+0001742235 00000 n 
+0001742296 00000 n 
+0001742357 00000 n 
+0001742418 00000 n 
+0001742479 00000 n 
+0001742542 00000 n 
+0001742605 00000 n 
+0001742668 00000 n 
+0001742731 00000 n 
+0001742794 00000 n 
+0001742857 00000 n 
+0001742920 00000 n 
+0001742982 00000 n 
+0001743045 00000 n 
+0001743108 00000 n 
+0001743171 00000 n 
+0001743234 00000 n 
+0001743297 00000 n 
+0001743360 00000 n 
+0001743423 00000 n 
+0001743486 00000 n 
+0001743548 00000 n 
+0001743611 00000 n 
+0001743674 00000 n 
+0001743737 00000 n 
+0001743800 00000 n 
+0001743863 00000 n 
+0001743926 00000 n 
+0001743989 00000 n 
+0001744052 00000 n 
+0001744114 00000 n 
+0001744177 00000 n 
+0001744240 00000 n 
+0001744303 00000 n 
+0001744366 00000 n 
+0001744429 00000 n 
+0001744492 00000 n 
+0001744555 00000 n 
+0001744618 00000 n 
+0001744680 00000 n 
+0001744743 00000 n 
+0001744806 00000 n 
+0001744869 00000 n 
+0001744932 00000 n 
+0001744995 00000 n 
+0001747086 00000 n 
+0001747866 00000 n 
+0001746942 00000 n 
+0001745264 00000 n 
+0001747241 00000 n 
+0001747366 00000 n 
+0001747429 00000 n 
+0001747492 00000 n 
+0001747555 00000 n 
+0001747618 00000 n 
+0001747679 00000 n 
+0001747740 00000 n 
+0001747803 00000 n 
+0001756441 00000 n 
+0001753773 00000 n 
+0001756629 00000 n 
+0001753629 00000 n 
+0001747996 00000 n 
+0001753926 00000 n 
+0001753989 00000 n 
+0001754052 00000 n 
+0001754115 00000 n 
+0001754178 00000 n 
+0001754240 00000 n 
+0001754303 00000 n 
+0001754366 00000 n 
+0001754429 00000 n 
+0001754492 00000 n 
+0001754555 00000 n 
+0001754618 00000 n 
+0001754681 00000 n 
+0001754744 00000 n 
+0001754806 00000 n 
+0001754869 00000 n 
+0001754932 00000 n 
+0001754995 00000 n 
+0001755058 00000 n 
+0001755121 00000 n 
+0001755184 00000 n 
+0001755247 00000 n 
+0001755310 00000 n 
+0001755371 00000 n 
+0001755434 00000 n 
+0001755497 00000 n 
+0001755560 00000 n 
+0001755623 00000 n 
+0001755686 00000 n 
+0001755749 00000 n 
+0001755812 00000 n 
+0001755875 00000 n 
+0001755937 00000 n 
+0001756000 00000 n 
+0001756063 00000 n 
+0001756126 00000 n 
+0001756189 00000 n 
+0001756252 00000 n 
+0001756315 00000 n 
+0001756378 00000 n 
+0001756566 00000 n 
+0001818771 00000 n 
+0001759258 00000 n 
+0001820177 00000 n 
+0001759135 00000 n 
+0001756772 00000 n 
+0001818645 00000 n 
+0001818834 00000 n 
+0001818897 00000 n 
+0001818959 00000 n 
+0001819020 00000 n 
+0001819080 00000 n 
+0001819141 00000 n 
+0001819202 00000 n 
+0001819263 00000 n 
+0001819324 00000 n 
+0001819385 00000 n 
+0001819446 00000 n 
+0001819507 00000 n 
+0001819568 00000 n 
+0001819628 00000 n 
+0001819689 00000 n 
+0001819750 00000 n 
+0001819811 00000 n 
+0001819872 00000 n 
+0001819933 00000 n 
+0001819996 00000 n 
+0001820056 00000 n 
+0001820117 00000 n 
+0001810390 00000 n 
+0001823638 00000 n 
+0001823806 00000 n 
+0001823960 00000 n 
+0001826563 00000 n 
+0001823476 00000 n 
+0001820317 00000 n 
+0001824112 00000 n 
+0001824175 00000 n 
+0001824236 00000 n 
+0001824297 00000 n 
+0001824358 00000 n 
+0001824419 00000 n 
+0001824480 00000 n 
+0001824540 00000 n 
+0001824601 00000 n 
+0001824662 00000 n 
+0001824723 00000 n 
+0001824784 00000 n 
+0001824845 00000 n 
+0001824906 00000 n 
+0001824967 00000 n 
+0001825028 00000 n 
+0001825088 00000 n 
+0001825149 00000 n 
+0001825210 00000 n 
+0001825271 00000 n 
+0001825332 00000 n 
+0001825395 00000 n 
+0001825456 00000 n 
+0001825517 00000 n 
+0001825578 00000 n 
+0001825639 00000 n 
+0001825700 00000 n 
+0001825760 00000 n 
+0001825821 00000 n 
+0001825882 00000 n 
+0001825943 00000 n 
+0001826004 00000 n 
+0001826067 00000 n 
+0001826129 00000 n 
+0001826189 00000 n 
+0001826252 00000 n 
+0001826312 00000 n 
+0001826375 00000 n 
+0001826437 00000 n 
+0001826500 00000 n 
+0001865306 00000 n 
+0001832178 00000 n 
+0001829967 00000 n 
+0001826679 00000 n 
+0001830090 00000 n 
+0001830153 00000 n 
+0001830216 00000 n 
+0001830277 00000 n 
+0001830340 00000 n 
+0001830403 00000 n 
+0001830464 00000 n 
+0001830527 00000 n 
+0001830590 00000 n 
+0001830651 00000 n 
+0001830712 00000 n 
+0001830773 00000 n 
+0001830836 00000 n 
+0001830898 00000 n 
+0001830959 00000 n 
+0001831019 00000 n 
+0001831080 00000 n 
+0001831141 00000 n 
+0001831202 00000 n 
+0001831263 00000 n 
+0001831324 00000 n 
+0001831385 00000 n 
+0001831446 00000 n 
+0001831507 00000 n 
+0001831567 00000 n 
+0001831628 00000 n 
+0001831689 00000 n 
+0001831750 00000 n 
+0001831811 00000 n 
+0001831872 00000 n 
+0001831933 00000 n 
+0001831994 00000 n 
+0001832055 00000 n 
+0001832115 00000 n 
+0003968475 00000 n 
+0001838343 00000 n 
+0001835037 00000 n 
+0001832294 00000 n 
+0001835160 00000 n 
+0001835223 00000 n 
+0001835286 00000 n 
+0001835349 00000 n 
+0001835410 00000 n 
+0001835471 00000 n 
+0001835532 00000 n 
+0001835593 00000 n 
+0001835653 00000 n 
+0001835714 00000 n 
+0001835777 00000 n 
+0001835838 00000 n 
+0001835899 00000 n 
+0001835960 00000 n 
+0001836021 00000 n 
+0001836082 00000 n 
+0001836143 00000 n 
+0001836204 00000 n 
+0001836265 00000 n 
+0001836326 00000 n 
+0001836387 00000 n 
+0001836450 00000 n 
+0001836513 00000 n 
+0001836574 00000 n 
+0001836635 00000 n 
+0001836696 00000 n 
+0001836756 00000 n 
+0001836817 00000 n 
+0001836878 00000 n 
+0001836939 00000 n 
+0001837000 00000 n 
+0001837061 00000 n 
+0001837122 00000 n 
+0001837183 00000 n 
+0001837244 00000 n 
+0001837305 00000 n 
+0001837365 00000 n 
+0001837426 00000 n 
+0001837487 00000 n 
+0001837548 00000 n 
+0001837609 00000 n 
+0001837670 00000 n 
+0001837731 00000 n 
+0001837792 00000 n 
+0001837853 00000 n 
+0001837913 00000 n 
+0001837974 00000 n 
+0001838037 00000 n 
+0001838100 00000 n 
+0001838161 00000 n 
+0001838222 00000 n 
+0001838283 00000 n 
+0001845335 00000 n 
+0001841674 00000 n 
+0001838445 00000 n 
+0001841797 00000 n 
+0001841860 00000 n 
+0001841921 00000 n 
+0001841982 00000 n 
+0001842043 00000 n 
+0001842104 00000 n 
+0001842165 00000 n 
+0001842228 00000 n 
+0001842291 00000 n 
+0001842352 00000 n 
+0001842413 00000 n 
+0001842474 00000 n 
+0001842535 00000 n 
+0001842596 00000 n 
+0001842656 00000 n 
+0001842717 00000 n 
+0001842778 00000 n 
+0001842839 00000 n 
+0001842900 00000 n 
+0001842961 00000 n 
+0001843022 00000 n 
+0001843083 00000 n 
+0001843144 00000 n 
+0001843205 00000 n 
+0001843265 00000 n 
+0001843326 00000 n 
+0001843387 00000 n 
+0001843448 00000 n 
+0001843509 00000 n 
+0001843570 00000 n 
+0001843631 00000 n 
+0001843692 00000 n 
+0001843753 00000 n 
+0001843813 00000 n 
+0001843874 00000 n 
+0001843935 00000 n 
+0001843996 00000 n 
+0001844057 00000 n 
+0001844118 00000 n 
+0001844179 00000 n 
+0001844240 00000 n 
+0001844301 00000 n 
+0001844361 00000 n 
+0001844422 00000 n 
+0001844483 00000 n 
+0001844544 00000 n 
+0001844605 00000 n 
+0001844666 00000 n 
+0001844727 00000 n 
+0001844788 00000 n 
+0001844849 00000 n 
+0001844909 00000 n 
+0001844970 00000 n 
+0001845031 00000 n 
+0001845092 00000 n 
+0001845153 00000 n 
+0001845214 00000 n 
+0001845275 00000 n 
+0001852020 00000 n 
+0001848356 00000 n 
+0001845437 00000 n 
+0001848479 00000 n 
+0001848542 00000 n 
+0001848603 00000 n 
+0001848664 00000 n 
+0001848725 00000 n 
+0001848786 00000 n 
+0001848847 00000 n 
+0001848907 00000 n 
+0001848968 00000 n 
+0001849029 00000 n 
+0001849090 00000 n 
+0001849151 00000 n 
+0001849212 00000 n 
+0001849273 00000 n 
+0001849334 00000 n 
+0001849395 00000 n 
+0001849455 00000 n 
+0001849516 00000 n 
+0001849577 00000 n 
+0001849638 00000 n 
+0001849699 00000 n 
+0001849760 00000 n 
+0001849821 00000 n 
+0001849882 00000 n 
+0001849945 00000 n 
+0001850008 00000 n 
+0001850071 00000 n 
+0001850134 00000 n 
+0001850197 00000 n 
+0001850260 00000 n 
+0001850323 00000 n 
+0001850386 00000 n 
+0001850449 00000 n 
+0001850512 00000 n 
+0001850575 00000 n 
+0001850638 00000 n 
+0001850701 00000 n 
+0001850763 00000 n 
+0001850826 00000 n 
+0001850889 00000 n 
+0001850952 00000 n 
+0001851015 00000 n 
+0001851078 00000 n 
+0001851141 00000 n 
+0001851204 00000 n 
+0001851267 00000 n 
+0001851329 00000 n 
+0001851392 00000 n 
+0001851455 00000 n 
+0001851518 00000 n 
+0001851581 00000 n 
+0001851644 00000 n 
+0001851707 00000 n 
+0001851770 00000 n 
+0001851833 00000 n 
+0001851895 00000 n 
+0001851958 00000 n 
+0001857480 00000 n 
+0001854212 00000 n 
+0001852122 00000 n 
+0001854335 00000 n 
+0001854398 00000 n 
+0001854461 00000 n 
+0001854524 00000 n 
+0001854587 00000 n 
+0001854650 00000 n 
+0001854713 00000 n 
+0001854775 00000 n 
+0001854838 00000 n 
+0001854901 00000 n 
+0001854964 00000 n 
+0001855027 00000 n 
+0001855090 00000 n 
+0001855153 00000 n 
+0001855216 00000 n 
+0001855279 00000 n 
+0001855341 00000 n 
+0001855404 00000 n 
+0001855467 00000 n 
+0001855530 00000 n 
+0001855593 00000 n 
+0001855656 00000 n 
+0001855719 00000 n 
+0001855782 00000 n 
+0001855845 00000 n 
+0001855907 00000 n 
+0001855970 00000 n 
+0001856033 00000 n 
+0001856096 00000 n 
+0001856159 00000 n 
+0001856222 00000 n 
+0001856285 00000 n 
+0001856348 00000 n 
+0001856411 00000 n 
+0001856473 00000 n 
+0001856536 00000 n 
+0001856599 00000 n 
+0001856662 00000 n 
+0001856725 00000 n 
+0001856788 00000 n 
+0001856851 00000 n 
+0001856914 00000 n 
+0001856977 00000 n 
+0001857039 00000 n 
+0001857102 00000 n 
+0001857165 00000 n 
+0001857228 00000 n 
+0001857291 00000 n 
+0001857354 00000 n 
+0001857417 00000 n 
+0001862697 00000 n 
+0001865430 00000 n 
+0001862553 00000 n 
+0001857582 00000 n 
+0001862854 00000 n 
+0001862917 00000 n 
+0001862980 00000 n 
+0001863043 00000 n 
+0001863106 00000 n 
+0001863168 00000 n 
+0001863231 00000 n 
+0001863294 00000 n 
+0001863357 00000 n 
+0001863420 00000 n 
+0001863483 00000 n 
+0001863546 00000 n 
+0001863609 00000 n 
+0001863672 00000 n 
+0001863734 00000 n 
+0001863797 00000 n 
+0001863860 00000 n 
+0001863923 00000 n 
+0001863986 00000 n 
+0001864049 00000 n 
+0001864112 00000 n 
+0001864175 00000 n 
+0001864238 00000 n 
+0001864299 00000 n 
+0001864362 00000 n 
+0001864425 00000 n 
+0001864488 00000 n 
+0001864551 00000 n 
+0001864614 00000 n 
+0001864677 00000 n 
+0001864740 00000 n 
+0001864803 00000 n 
+0001864865 00000 n 
+0001864928 00000 n 
+0001864991 00000 n 
+0001865054 00000 n 
+0001865117 00000 n 
+0001865180 00000 n 
+0001865243 00000 n 
+0001871454 00000 n 
+0001872822 00000 n 
+0001870073 00000 n 
+0001865601 00000 n 
+0001870196 00000 n 
+0001870259 00000 n 
+0001870322 00000 n 
+0001870385 00000 n 
+0001870448 00000 n 
+0001870510 00000 n 
+0001870573 00000 n 
+0001870636 00000 n 
+0001870699 00000 n 
+0001870762 00000 n 
+0001870825 00000 n 
+0001870888 00000 n 
+0001870951 00000 n 
+0001871014 00000 n 
+0001871076 00000 n 
+0001871139 00000 n 
+0001871202 00000 n 
+0001871265 00000 n 
+0001871328 00000 n 
+0001871391 00000 n 
+0001871517 00000 n 
+0001871580 00000 n 
+0001871643 00000 n 
+0001871706 00000 n 
+0001871769 00000 n 
+0001871831 00000 n 
+0001871894 00000 n 
+0001871957 00000 n 
+0001872020 00000 n 
+0001872083 00000 n 
+0001872146 00000 n 
+0001872209 00000 n 
+0001872272 00000 n 
+0001872333 00000 n 
+0001872393 00000 n 
+0001872454 00000 n 
+0001872517 00000 n 
+0001872578 00000 n 
+0001872639 00000 n 
+0001872700 00000 n 
+0001872761 00000 n 
+0003968601 00000 n 
+0001877564 00000 n 
+0001880540 00000 n 
+0001877420 00000 n 
+0001872979 00000 n 
+0001877715 00000 n 
+0001877778 00000 n 
+0001877841 00000 n 
+0001877904 00000 n 
+0001877967 00000 n 
+0001878028 00000 n 
+0001878151 00000 n 
+0001878214 00000 n 
+0001878276 00000 n 
+0001878339 00000 n 
+0001878402 00000 n 
+0001878465 00000 n 
+0001878528 00000 n 
+0001878591 00000 n 
+0001878654 00000 n 
+0001878717 00000 n 
+0001878780 00000 n 
+0001878842 00000 n 
+0001878905 00000 n 
+0001878968 00000 n 
+0001879031 00000 n 
+0001879094 00000 n 
+0001879157 00000 n 
+0001879220 00000 n 
+0001879283 00000 n 
+0001879346 00000 n 
+0001879409 00000 n 
+0001879472 00000 n 
+0001879535 00000 n 
+0001879598 00000 n 
+0001879661 00000 n 
+0001879724 00000 n 
+0001879787 00000 n 
+0001879850 00000 n 
+0001879913 00000 n 
+0001879975 00000 n 
+0001880038 00000 n 
+0001880101 00000 n 
+0001880164 00000 n 
+0001880227 00000 n 
+0001880290 00000 n 
+0001880353 00000 n 
+0001880416 00000 n 
+0001880479 00000 n 
+0001883579 00000 n 
+0001886139 00000 n 
+0001883435 00000 n 
+0001880711 00000 n 
+0001883747 00000 n 
+0001883810 00000 n 
+0001883873 00000 n 
+0001883936 00000 n 
+0001883999 00000 n 
+0001884062 00000 n 
+0001884125 00000 n 
+0001884187 00000 n 
+0001884250 00000 n 
+0001884313 00000 n 
+0001884376 00000 n 
+0001884439 00000 n 
+0001884502 00000 n 
+0001884565 00000 n 
+0001884628 00000 n 
+0001884691 00000 n 
+0001884754 00000 n 
+0001884817 00000 n 
+0001884880 00000 n 
+0001884943 00000 n 
+0001885006 00000 n 
+0001885069 00000 n 
+0001885132 00000 n 
+0001885195 00000 n 
+0001885258 00000 n 
+0001885321 00000 n 
+0001885384 00000 n 
+0001885447 00000 n 
+0001885510 00000 n 
+0001885573 00000 n 
+0001885636 00000 n 
+0001885698 00000 n 
+0001885761 00000 n 
+0001885824 00000 n 
+0001885887 00000 n 
+0001885950 00000 n 
+0001886013 00000 n 
+0001886076 00000 n 
+0001890301 00000 n 
+0001893123 00000 n 
+0001890157 00000 n 
+0001886269 00000 n 
+0001890456 00000 n 
+0001890519 00000 n 
+0001890582 00000 n 
+0001890643 00000 n 
+0001890704 00000 n 
+0001890765 00000 n 
+0001890826 00000 n 
+0001890887 00000 n 
+0001890948 00000 n 
+0001891008 00000 n 
+0001891069 00000 n 
+0001891130 00000 n 
+0001891191 00000 n 
+0001891252 00000 n 
+0001891313 00000 n 
+0001891374 00000 n 
+0001891435 00000 n 
+0001891496 00000 n 
+0001891559 00000 n 
+0001891622 00000 n 
+0001891683 00000 n 
+0001891744 00000 n 
+0001891805 00000 n 
+0001891868 00000 n 
+0001891931 00000 n 
+0001891992 00000 n 
+0001892117 00000 n 
+0001892180 00000 n 
+0001892242 00000 n 
+0001892305 00000 n 
+0001892368 00000 n 
+0001892431 00000 n 
+0001892494 00000 n 
+0001892557 00000 n 
+0001892620 00000 n 
+0001892683 00000 n 
+0001892746 00000 n 
+0001892808 00000 n 
+0001892871 00000 n 
+0001892934 00000 n 
+0001892997 00000 n 
+0001893060 00000 n 
+0001896123 00000 n 
+0001896309 00000 n 
+0001896540 00000 n 
+0001896706 00000 n 
+0001896875 00000 n 
+0001897986 00000 n 
+0001895943 00000 n 
+0001893280 00000 n 
+0001897045 00000 n 
+0001897108 00000 n 
+0001897171 00000 n 
+0001897234 00000 n 
+0001897297 00000 n 
+0001897360 00000 n 
+0001897423 00000 n 
+0001897486 00000 n 
+0001897549 00000 n 
+0001897612 00000 n 
+0001897675 00000 n 
+0001897738 00000 n 
+0001901086 00000 n 
+0001901236 00000 n 
+0001901394 00000 n 
+0001901544 00000 n 
+0001901701 00000 n 
+0001902738 00000 n 
+0001900906 00000 n 
+0001898102 00000 n 
+0001901860 00000 n 
+0001901985 00000 n 
+0001902047 00000 n 
+0001902110 00000 n 
+0001902173 00000 n 
+0001902236 00000 n 
+0001902299 00000 n 
+0001902424 00000 n 
+0001902487 00000 n 
+0001902549 00000 n 
+0001902612 00000 n 
+0001902675 00000 n 
+0001906101 00000 n 
+0001912152 00000 n 
+0001907170 00000 n 
+0001904659 00000 n 
+0001902854 00000 n 
+0001904782 00000 n 
+0001904845 00000 n 
+0001904908 00000 n 
+0001904971 00000 n 
+0001905034 00000 n 
+0001905097 00000 n 
+0001905160 00000 n 
+0001905223 00000 n 
+0001905284 00000 n 
+0001905347 00000 n 
+0001905410 00000 n 
+0001905473 00000 n 
+0001905536 00000 n 
+0001905599 00000 n 
+0001905662 00000 n 
+0001905725 00000 n 
+0001905788 00000 n 
+0001905850 00000 n 
+0001905913 00000 n 
+0001905976 00000 n 
+0001906039 00000 n 
+0001906163 00000 n 
+0001906226 00000 n 
+0001906289 00000 n 
+0001906352 00000 n 
+0001906415 00000 n 
+0001906478 00000 n 
+0001906541 00000 n 
+0001906604 00000 n 
+0001906666 00000 n 
+0001906729 00000 n 
+0001906792 00000 n 
+0001906855 00000 n 
+0001906918 00000 n 
+0001906981 00000 n 
+0001907044 00000 n 
+0001907107 00000 n 
+0003968727 00000 n 
+0001912339 00000 n 
+0001910644 00000 n 
+0001907286 00000 n 
+0001910767 00000 n 
+0001910830 00000 n 
+0001910893 00000 n 
+0001910956 00000 n 
+0001911019 00000 n 
+0001911082 00000 n 
+0001911145 00000 n 
+0001911208 00000 n 
+0001911271 00000 n 
+0001911334 00000 n 
+0001911397 00000 n 
+0001911460 00000 n 
+0001911523 00000 n 
+0001911585 00000 n 
+0001911648 00000 n 
+0001911711 00000 n 
+0001911774 00000 n 
+0001911837 00000 n 
+0001911900 00000 n 
+0001911963 00000 n 
+0001912026 00000 n 
+0001912089 00000 n 
+0001918068 00000 n 
+0001917630 00000 n 
+0001912497 00000 n 
+0001917753 00000 n 
+0001917816 00000 n 
+0001917879 00000 n 
+0001917942 00000 n 
+0001918005 00000 n 
+0001920034 00000 n 
+0001919722 00000 n 
+0001918212 00000 n 
+0001919845 00000 n 
+0001919908 00000 n 
+0001919971 00000 n 
+0001923240 00000 n 
+0001922869 00000 n 
+0001920150 00000 n 
+0001922992 00000 n 
+0001923117 00000 n 
+0001927856 00000 n 
+0001927426 00000 n 
+0001923371 00000 n 
+0001927549 00000 n 
+0001927736 00000 n 
+0001927798 00000 n 
+0001932793 00000 n 
+0001931228 00000 n 
+0001927986 00000 n 
+0001931351 00000 n 
+0001931414 00000 n 
+0001931477 00000 n 
+0001931540 00000 n 
+0001931603 00000 n 
+0001931666 00000 n 
+0001931729 00000 n 
+0001931792 00000 n 
+0001931854 00000 n 
+0001931917 00000 n 
+0001931980 00000 n 
+0001932043 00000 n 
+0001932106 00000 n 
+0001932169 00000 n 
+0001932232 00000 n 
+0001932295 00000 n 
+0001932358 00000 n 
+0001932421 00000 n 
+0001932484 00000 n 
+0001932547 00000 n 
+0001932610 00000 n 
+0001932669 00000 n 
+0001932731 00000 n 
+0003968853 00000 n 
+0001937708 00000 n 
+0001936330 00000 n 
+0001932923 00000 n 
+0001936453 00000 n 
+0001936702 00000 n 
+0001936765 00000 n 
+0001936828 00000 n 
+0001936891 00000 n 
+0001936954 00000 n 
+0001937016 00000 n 
+0001937079 00000 n 
+0001937142 00000 n 
+0001937205 00000 n 
+0001937268 00000 n 
+0001937331 00000 n 
+0001937394 00000 n 
+0001937457 00000 n 
+0001937520 00000 n 
+0001937583 00000 n 
+0001937646 00000 n 
+0001941559 00000 n 
+0001942802 00000 n 
+0001941415 00000 n 
+0001937852 00000 n 
+0001941735 00000 n 
+0001941798 00000 n 
+0001941861 00000 n 
+0001941924 00000 n 
+0001941987 00000 n 
+0001942050 00000 n 
+0001942113 00000 n 
+0001942175 00000 n 
+0001942238 00000 n 
+0001942301 00000 n 
+0001942364 00000 n 
+0001942427 00000 n 
+0001942490 00000 n 
+0001942553 00000 n 
+0001946235 00000 n 
+0001946384 00000 n 
+0001946534 00000 n 
+0001947815 00000 n 
+0001946073 00000 n 
+0001942918 00000 n 
+0001946690 00000 n 
+0001946815 00000 n 
+0001946878 00000 n 
+0001946941 00000 n 
+0001947004 00000 n 
+0001947067 00000 n 
+0001947129 00000 n 
+0001947192 00000 n 
+0001947255 00000 n 
+0001947317 00000 n 
+0001947380 00000 n 
+0001947443 00000 n 
+0001947506 00000 n 
+0001947569 00000 n 
+0001947630 00000 n 
+0001947690 00000 n 
+0001952168 00000 n 
+0001955272 00000 n 
+0001952024 00000 n 
+0001947959 00000 n 
+0001952317 00000 n 
+0001952442 00000 n 
+0001952505 00000 n 
+0001952568 00000 n 
+0001952631 00000 n 
+0001952694 00000 n 
+0001952757 00000 n 
+0001952819 00000 n 
+0001952882 00000 n 
+0001952945 00000 n 
+0001953008 00000 n 
+0001953071 00000 n 
+0001953134 00000 n 
+0001953197 00000 n 
+0001953260 00000 n 
+0001953323 00000 n 
+0001953386 00000 n 
+0001953449 00000 n 
+0001953512 00000 n 
+0001953575 00000 n 
+0001953638 00000 n 
+0001953701 00000 n 
+0001953764 00000 n 
+0001953827 00000 n 
+0001953890 00000 n 
+0001953953 00000 n 
+0001954015 00000 n 
+0001954078 00000 n 
+0001954141 00000 n 
+0001954204 00000 n 
+0001954267 00000 n 
+0001954330 00000 n 
+0001954393 00000 n 
+0001954456 00000 n 
+0001954519 00000 n 
+0001954581 00000 n 
+0001954644 00000 n 
+0001954707 00000 n 
+0001954770 00000 n 
+0001954833 00000 n 
+0001954896 00000 n 
+0001954959 00000 n 
+0001955022 00000 n 
+0001955085 00000 n 
+0001955147 00000 n 
+0001955210 00000 n 
+0001962969 00000 n 
+0001958884 00000 n 
+0001955416 00000 n 
+0001959007 00000 n 
+0001959070 00000 n 
+0001959133 00000 n 
+0001959196 00000 n 
+0001959259 00000 n 
+0001959322 00000 n 
+0001959385 00000 n 
+0001959447 00000 n 
+0001959510 00000 n 
+0001959573 00000 n 
+0001959636 00000 n 
+0001959699 00000 n 
+0001959762 00000 n 
+0001959825 00000 n 
+0001959888 00000 n 
+0001959951 00000 n 
+0001960013 00000 n 
+0001960076 00000 n 
+0001960139 00000 n 
+0001960202 00000 n 
+0001960265 00000 n 
+0001960328 00000 n 
+0001960391 00000 n 
+0001960454 00000 n 
+0001960517 00000 n 
+0001960579 00000 n 
+0001960642 00000 n 
+0001960705 00000 n 
+0001960768 00000 n 
+0001960831 00000 n 
+0001960894 00000 n 
+0001960957 00000 n 
+0001961020 00000 n 
+0001961083 00000 n 
+0001961145 00000 n 
+0001961208 00000 n 
+0001961271 00000 n 
+0001961334 00000 n 
+0001961397 00000 n 
+0001961460 00000 n 
+0001961523 00000 n 
+0001961586 00000 n 
+0001961649 00000 n 
+0001961711 00000 n 
+0001961774 00000 n 
+0001961837 00000 n 
+0001961900 00000 n 
+0001961963 00000 n 
+0001962026 00000 n 
+0001962089 00000 n 
+0001962152 00000 n 
+0001962215 00000 n 
+0001962278 00000 n 
+0001962341 00000 n 
+0001962404 00000 n 
+0001962467 00000 n 
+0001962530 00000 n 
+0001962593 00000 n 
+0001962656 00000 n 
+0001962719 00000 n 
+0001962782 00000 n 
+0001962845 00000 n 
+0001962907 00000 n 
+0001966808 00000 n 
+0001969661 00000 n 
+0001966664 00000 n 
+0001963071 00000 n 
+0001966957 00000 n 
+0001967020 00000 n 
+0001967083 00000 n 
+0001967146 00000 n 
+0001967209 00000 n 
+0001967272 00000 n 
+0001967335 00000 n 
+0001967397 00000 n 
+0001967460 00000 n 
+0001967523 00000 n 
+0001967586 00000 n 
+0001967649 00000 n 
+0001967712 00000 n 
+0001967775 00000 n 
+0001967838 00000 n 
+0001967901 00000 n 
+0001967963 00000 n 
+0001968026 00000 n 
+0001968089 00000 n 
+0001968152 00000 n 
+0001968215 00000 n 
+0001968278 00000 n 
+0001968341 00000 n 
+0001968404 00000 n 
+0001968467 00000 n 
+0001968529 00000 n 
+0001968592 00000 n 
+0001968655 00000 n 
+0001968718 00000 n 
+0001968781 00000 n 
+0001968844 00000 n 
+0001968907 00000 n 
+0001968970 00000 n 
+0001969033 00000 n 
+0001969095 00000 n 
+0001969158 00000 n 
+0001969221 00000 n 
+0001969284 00000 n 
+0001969347 00000 n 
+0001969410 00000 n 
+0001969473 00000 n 
+0001969536 00000 n 
+0003968979 00000 n 
+0001973068 00000 n 
+0001978536 00000 n 
+0001974223 00000 n 
+0001972924 00000 n 
+0001969777 00000 n 
+0001973222 00000 n 
+0001973532 00000 n 
+0001973595 00000 n 
+0001973657 00000 n 
+0001973720 00000 n 
+0001973783 00000 n 
+0001973846 00000 n 
+0001973909 00000 n 
+0001973972 00000 n 
+0001974035 00000 n 
+0001974098 00000 n 
+0001978691 00000 n 
+0001979027 00000 n 
+0001978383 00000 n 
+0001974381 00000 n 
+0001978840 00000 n 
+0001982164 00000 n 
+0001981602 00000 n 
+0001979171 00000 n 
+0001981725 00000 n 
+0001981850 00000 n 
+0001981912 00000 n 
+0001981975 00000 n 
+0001982038 00000 n 
+0001982101 00000 n 
+0001985449 00000 n 
+0001984952 00000 n 
+0001982294 00000 n 
+0001985075 00000 n 
+0002012454 00000 n 
+0001989044 00000 n 
+0002015024 00000 n 
+0002012859 00000 n 
+0001988900 00000 n 
+0001985608 00000 n 
+0002012608 00000 n 
+0002012796 00000 n 
+0001998701 00000 n 
+0002046255 00000 n 
+0002046403 00000 n 
+0002046557 00000 n 
+0002050859 00000 n 
+0002047018 00000 n 
+0002014862 00000 n 
+0002013027 00000 n 
+0002046705 00000 n 
+0002046831 00000 n 
+0003969105 00000 n 
+0002051019 00000 n 
+0002051169 00000 n 
+0002051575 00000 n 
+0002050697 00000 n 
+0002047186 00000 n 
+0002051324 00000 n 
+0002051512 00000 n 
+0002059982 00000 n 
+0002057030 00000 n 
+0002051734 00000 n 
+0002057153 00000 n 
+0002057216 00000 n 
+0002057279 00000 n 
+0002057342 00000 n 
+0002057405 00000 n 
+0002057468 00000 n 
+0002057531 00000 n 
+0002057594 00000 n 
+0002057656 00000 n 
+0002057719 00000 n 
+0002057782 00000 n 
+0002057845 00000 n 
+0002057908 00000 n 
+0002057971 00000 n 
+0002058034 00000 n 
+0002058097 00000 n 
+0002058160 00000 n 
+0002058222 00000 n 
+0002058285 00000 n 
+0002058348 00000 n 
+0002058411 00000 n 
+0002058474 00000 n 
+0002058537 00000 n 
+0002058600 00000 n 
+0002058663 00000 n 
+0002058726 00000 n 
+0002058787 00000 n 
+0002058850 00000 n 
+0002058913 00000 n 
+0002058976 00000 n 
+0002059039 00000 n 
+0002059102 00000 n 
+0002059165 00000 n 
+0002059228 00000 n 
+0002059291 00000 n 
+0002059354 00000 n 
+0002059417 00000 n 
+0002059480 00000 n 
+0002059543 00000 n 
+0002059606 00000 n 
+0002059669 00000 n 
+0002059732 00000 n 
+0002059795 00000 n 
+0002059858 00000 n 
+0002059920 00000 n 
+0002065804 00000 n 
+0002063229 00000 n 
+0002060125 00000 n 
+0002063352 00000 n 
+0002063415 00000 n 
+0002063478 00000 n 
+0002063541 00000 n 
+0002063604 00000 n 
+0002063666 00000 n 
+0002063729 00000 n 
+0002063792 00000 n 
+0002063855 00000 n 
+0002063918 00000 n 
+0002063981 00000 n 
+0002064044 00000 n 
+0002064107 00000 n 
+0002064170 00000 n 
+0002064232 00000 n 
+0002064295 00000 n 
+0002064358 00000 n 
+0002064421 00000 n 
+0002064484 00000 n 
+0002064547 00000 n 
+0002064610 00000 n 
+0002064673 00000 n 
+0002064736 00000 n 
+0002064797 00000 n 
+0002064860 00000 n 
+0002064923 00000 n 
+0002064986 00000 n 
+0002065049 00000 n 
+0002065112 00000 n 
+0002065175 00000 n 
+0002065238 00000 n 
+0002065301 00000 n 
+0002065363 00000 n 
+0002065426 00000 n 
+0002065489 00000 n 
+0002065552 00000 n 
+0002065615 00000 n 
+0002065678 00000 n 
+0002065741 00000 n 
+0002072451 00000 n 
+0002068491 00000 n 
+0002065919 00000 n 
+0002068614 00000 n 
+0002068677 00000 n 
+0002068740 00000 n 
+0002068803 00000 n 
+0002068866 00000 n 
+0002068929 00000 n 
+0002068992 00000 n 
+0002069055 00000 n 
+0002069118 00000 n 
+0002069181 00000 n 
+0002069244 00000 n 
+0002069307 00000 n 
+0002069370 00000 n 
+0002069432 00000 n 
+0002069495 00000 n 
+0002069558 00000 n 
+0002069621 00000 n 
+0002069684 00000 n 
+0002069747 00000 n 
+0002069810 00000 n 
+0002069873 00000 n 
+0002069936 00000 n 
+0002069998 00000 n 
+0002070061 00000 n 
+0002070124 00000 n 
+0002070187 00000 n 
+0002070250 00000 n 
+0002070313 00000 n 
+0002070376 00000 n 
+0002070439 00000 n 
+0002070502 00000 n 
+0002070565 00000 n 
+0002070628 00000 n 
+0002070691 00000 n 
+0002070754 00000 n 
+0002070817 00000 n 
+0002070880 00000 n 
+0002070943 00000 n 
+0002071006 00000 n 
+0002071069 00000 n 
+0002071132 00000 n 
+0002071195 00000 n 
+0002071258 00000 n 
+0002071321 00000 n 
+0002071383 00000 n 
+0002071446 00000 n 
+0002071509 00000 n 
+0002071572 00000 n 
+0002071635 00000 n 
+0002071698 00000 n 
+0002071761 00000 n 
+0002071824 00000 n 
+0002071887 00000 n 
+0002071949 00000 n 
+0002072012 00000 n 
+0002072075 00000 n 
+0002072138 00000 n 
+0002072201 00000 n 
+0002072264 00000 n 
+0002072327 00000 n 
+0002072389 00000 n 
+0002077276 00000 n 
+0002074447 00000 n 
+0002072567 00000 n 
+0002074570 00000 n 
+0002074633 00000 n 
+0002074696 00000 n 
+0002074759 00000 n 
+0002074822 00000 n 
+0002074885 00000 n 
+0002074948 00000 n 
+0002075011 00000 n 
+0002075074 00000 n 
+0002075137 00000 n 
+0002075200 00000 n 
+0002075263 00000 n 
+0002075326 00000 n 
+0002075388 00000 n 
+0002075451 00000 n 
+0002075514 00000 n 
+0002075577 00000 n 
+0002075640 00000 n 
+0002075703 00000 n 
+0002075766 00000 n 
+0002075829 00000 n 
+0002075892 00000 n 
+0002075955 00000 n 
+0002076018 00000 n 
+0002076081 00000 n 
+0002076142 00000 n 
+0002076205 00000 n 
+0002076268 00000 n 
+0002076331 00000 n 
+0002076394 00000 n 
+0002076457 00000 n 
+0002076520 00000 n 
+0002076583 00000 n 
+0002076646 00000 n 
+0002076709 00000 n 
+0002076772 00000 n 
+0002076835 00000 n 
+0002076898 00000 n 
+0002076961 00000 n 
+0002077024 00000 n 
+0002077087 00000 n 
+0002077150 00000 n 
+0002077213 00000 n 
+0002081121 00000 n 
+0002081274 00000 n 
+0002081428 00000 n 
+0002081584 00000 n 
+0002084480 00000 n 
+0002080950 00000 n 
+0002077392 00000 n 
+0002081736 00000 n 
+0002081799 00000 n 
+0002081862 00000 n 
+0002081925 00000 n 
+0002081988 00000 n 
+0002082051 00000 n 
+0002082114 00000 n 
+0002082177 00000 n 
+0002082240 00000 n 
+0002082303 00000 n 
+0002082366 00000 n 
+0002082429 00000 n 
+0002082492 00000 n 
+0002082554 00000 n 
+0002082617 00000 n 
+0002082680 00000 n 
+0002082743 00000 n 
+0002082806 00000 n 
+0002082869 00000 n 
+0002082932 00000 n 
+0002082995 00000 n 
+0002083058 00000 n 
+0002083120 00000 n 
+0002083183 00000 n 
+0002083246 00000 n 
+0002083309 00000 n 
+0002083372 00000 n 
+0002083435 00000 n 
+0002083498 00000 n 
+0002083561 00000 n 
+0002083624 00000 n 
+0002083685 00000 n 
+0002083745 00000 n 
+0002083806 00000 n 
+0002083867 00000 n 
+0002083928 00000 n 
+0002083989 00000 n 
+0002084050 00000 n 
+0002084111 00000 n 
+0002084172 00000 n 
+0002084235 00000 n 
+0002084298 00000 n 
+0002084359 00000 n 
+0002084420 00000 n 
+0003969231 00000 n 
+0002088457 00000 n 
+0002092091 00000 n 
+0002088313 00000 n 
+0002084596 00000 n 
+0002088610 00000 n 
+0002088673 00000 n 
+0002088736 00000 n 
+0002088797 00000 n 
+0002088860 00000 n 
+0002088921 00000 n 
+0002088984 00000 n 
+0002089047 00000 n 
+0002089108 00000 n 
+0002089169 00000 n 
+0002089230 00000 n 
+0002089291 00000 n 
+0002089352 00000 n 
+0002089412 00000 n 
+0002089473 00000 n 
+0002089534 00000 n 
+0002089595 00000 n 
+0002089656 00000 n 
+0002089717 00000 n 
+0002089778 00000 n 
+0002089839 00000 n 
+0002089900 00000 n 
+0002089960 00000 n 
+0002090021 00000 n 
+0002090082 00000 n 
+0002090143 00000 n 
+0002090204 00000 n 
+0002090265 00000 n 
+0002090326 00000 n 
+0002090387 00000 n 
+0002090448 00000 n 
+0002090509 00000 n 
+0002090569 00000 n 
+0002090630 00000 n 
+0002090691 00000 n 
+0002090752 00000 n 
+0002090813 00000 n 
+0002090874 00000 n 
+0002090935 00000 n 
+0002090996 00000 n 
+0002091057 00000 n 
+0002091117 00000 n 
+0002091178 00000 n 
+0002091239 00000 n 
+0002091300 00000 n 
+0002091361 00000 n 
+0002091422 00000 n 
+0002091483 00000 n 
+0002091544 00000 n 
+0002091605 00000 n 
+0002091665 00000 n 
+0002091726 00000 n 
+0002091787 00000 n 
+0002091848 00000 n 
+0002091909 00000 n 
+0002091970 00000 n 
+0002092031 00000 n 
+0002095818 00000 n 
+0002099091 00000 n 
+0002095674 00000 n 
+0002092207 00000 n 
+0002095971 00000 n 
+0002096034 00000 n 
+0002096095 00000 n 
+0002096156 00000 n 
+0002096217 00000 n 
+0002096278 00000 n 
+0002096339 00000 n 
+0002096399 00000 n 
+0002096460 00000 n 
+0002096521 00000 n 
+0002096582 00000 n 
+0002096643 00000 n 
+0002096704 00000 n 
+0002096765 00000 n 
+0002096826 00000 n 
+0002096887 00000 n 
+0002096947 00000 n 
+0002097008 00000 n 
+0002097069 00000 n 
+0002097130 00000 n 
+0002097191 00000 n 
+0002097252 00000 n 
+0002097313 00000 n 
+0002097374 00000 n 
+0002097435 00000 n 
+0002097495 00000 n 
+0002097556 00000 n 
+0002097617 00000 n 
+0002097678 00000 n 
+0002097739 00000 n 
+0002097800 00000 n 
+0002097861 00000 n 
+0002097922 00000 n 
+0002097983 00000 n 
+0002098043 00000 n 
+0002098104 00000 n 
+0002098167 00000 n 
+0002098230 00000 n 
+0002098291 00000 n 
+0002098354 00000 n 
+0002098417 00000 n 
+0002098480 00000 n 
+0002098541 00000 n 
+0002098601 00000 n 
+0002098662 00000 n 
+0002098725 00000 n 
+0002098788 00000 n 
+0002098849 00000 n 
+0002098910 00000 n 
+0002098970 00000 n 
+0002099031 00000 n 
+0002105464 00000 n 
+0002102159 00000 n 
+0002099193 00000 n 
+0002102282 00000 n 
+0002102345 00000 n 
+0002102406 00000 n 
+0002102467 00000 n 
+0002102528 00000 n 
+0002102589 00000 n 
+0002102650 00000 n 
+0002102710 00000 n 
+0002102771 00000 n 
+0002102832 00000 n 
+0002102893 00000 n 
+0002102954 00000 n 
+0002103015 00000 n 
+0002103076 00000 n 
+0002103137 00000 n 
+0002103198 00000 n 
+0002103258 00000 n 
+0002103321 00000 n 
+0002103384 00000 n 
+0002103444 00000 n 
+0002103505 00000 n 
+0002103568 00000 n 
+0002103631 00000 n 
+0002103692 00000 n 
+0002103753 00000 n 
+0002103814 00000 n 
+0002103874 00000 n 
+0002103935 00000 n 
+0002103996 00000 n 
+0002104057 00000 n 
+0002104118 00000 n 
+0002104179 00000 n 
+0002104242 00000 n 
+0002104303 00000 n 
+0002104364 00000 n 
+0002104425 00000 n 
+0002104485 00000 n 
+0002104546 00000 n 
+0002104607 00000 n 
+0002104668 00000 n 
+0002104729 00000 n 
+0002104790 00000 n 
+0002104851 00000 n 
+0002104912 00000 n 
+0002104973 00000 n 
+0002105034 00000 n 
+0002105095 00000 n 
+0002105158 00000 n 
+0002105221 00000 n 
+0002105282 00000 n 
+0002105343 00000 n 
+0002105404 00000 n 
+0002108885 00000 n 
+0002112284 00000 n 
+0002108741 00000 n 
+0002105566 00000 n 
+0002109036 00000 n 
+0002109099 00000 n 
+0002109162 00000 n 
+0002109225 00000 n 
+0002109286 00000 n 
+0002109347 00000 n 
+0002109408 00000 n 
+0002109469 00000 n 
+0002109532 00000 n 
+0002109594 00000 n 
+0002109655 00000 n 
+0002109716 00000 n 
+0002109777 00000 n 
+0002109838 00000 n 
+0002109899 00000 n 
+0002109962 00000 n 
+0002110023 00000 n 
+0002110084 00000 n 
+0002110145 00000 n 
+0002110206 00000 n 
+0002110267 00000 n 
+0002110327 00000 n 
+0002110388 00000 n 
+0002110449 00000 n 
+0002110510 00000 n 
+0002110571 00000 n 
+0002110632 00000 n 
+0002110693 00000 n 
+0002110754 00000 n 
+0002110817 00000 n 
+0002110880 00000 n 
+0002110941 00000 n 
+0002111002 00000 n 
+0002111065 00000 n 
+0002111127 00000 n 
+0002111188 00000 n 
+0002111249 00000 n 
+0002111310 00000 n 
+0002111371 00000 n 
+0002111432 00000 n 
+0002111493 00000 n 
+0002111554 00000 n 
+0002111615 00000 n 
+0002111676 00000 n 
+0002111737 00000 n 
+0002111797 00000 n 
+0002111858 00000 n 
+0002111919 00000 n 
+0002111980 00000 n 
+0002112041 00000 n 
+0002112102 00000 n 
+0002112163 00000 n 
+0002112224 00000 n 
+0002122798 00000 n 
+0002119119 00000 n 
+0002115698 00000 n 
+0002112386 00000 n 
+0002115821 00000 n 
+0002115884 00000 n 
+0002115945 00000 n 
+0002116006 00000 n 
+0002116067 00000 n 
+0002116128 00000 n 
+0002116189 00000 n 
+0002116249 00000 n 
+0002116310 00000 n 
+0002116371 00000 n 
+0002116432 00000 n 
+0002116493 00000 n 
+0002116554 00000 n 
+0002116615 00000 n 
+0002116678 00000 n 
+0002116741 00000 n 
+0002116802 00000 n 
+0002116863 00000 n 
+0002116924 00000 n 
+0002116985 00000 n 
+0002117045 00000 n 
+0002117106 00000 n 
+0002117167 00000 n 
+0002117228 00000 n 
+0002117289 00000 n 
+0002117350 00000 n 
+0002117411 00000 n 
+0002117472 00000 n 
+0002117533 00000 n 
+0002117593 00000 n 
+0002117654 00000 n 
+0002117715 00000 n 
+0002117776 00000 n 
+0002117837 00000 n 
+0002117898 00000 n 
+0002117959 00000 n 
+0002118020 00000 n 
+0002118081 00000 n 
+0002118141 00000 n 
+0002118202 00000 n 
+0002118263 00000 n 
+0002118324 00000 n 
+0002118387 00000 n 
+0002118449 00000 n 
+0002118511 00000 n 
+0002118572 00000 n 
+0002118633 00000 n 
+0002118694 00000 n 
+0002118755 00000 n 
+0002118816 00000 n 
+0002118877 00000 n 
+0002118938 00000 n 
+0002118998 00000 n 
+0002119059 00000 n 
+0002122146 00000 n 
+0002125691 00000 n 
+0002122002 00000 n 
+0002119263 00000 n 
+0002122301 00000 n 
+0002122364 00000 n 
+0002122425 00000 n 
+0002122486 00000 n 
+0002122547 00000 n 
+0002122610 00000 n 
+0002122673 00000 n 
+0002122861 00000 n 
+0002122924 00000 n 
+0002122987 00000 n 
+0002123050 00000 n 
+0002123113 00000 n 
+0002123176 00000 n 
+0002123238 00000 n 
+0002123301 00000 n 
+0002123364 00000 n 
+0002123427 00000 n 
+0002123490 00000 n 
+0002123553 00000 n 
+0002123616 00000 n 
+0002123679 00000 n 
+0002123742 00000 n 
+0002123805 00000 n 
+0002123868 00000 n 
+0002123931 00000 n 
+0002123994 00000 n 
+0002124057 00000 n 
+0002124120 00000 n 
+0002124183 00000 n 
+0002124246 00000 n 
+0002124309 00000 n 
+0002124372 00000 n 
+0002124434 00000 n 
+0002124497 00000 n 
+0002124560 00000 n 
+0002124623 00000 n 
+0002124686 00000 n 
+0002124749 00000 n 
+0002124812 00000 n 
+0002124875 00000 n 
+0002124938 00000 n 
+0002125000 00000 n 
+0002125063 00000 n 
+0002125126 00000 n 
+0002125189 00000 n 
+0002125252 00000 n 
+0002125315 00000 n 
+0002125378 00000 n 
+0002125441 00000 n 
+0002125504 00000 n 
+0002125566 00000 n 
+0002125629 00000 n 
+0003969357 00000 n 
+0002129106 00000 n 
+0002132467 00000 n 
+0002128962 00000 n 
+0002125807 00000 n 
+0002129261 00000 n 
+0002129324 00000 n 
+0002129387 00000 n 
+0002129450 00000 n 
+0002129513 00000 n 
+0002129576 00000 n 
+0002129639 00000 n 
+0002129701 00000 n 
+0002129764 00000 n 
+0002129827 00000 n 
+0002129890 00000 n 
+0002129953 00000 n 
+0002130016 00000 n 
+0002130079 00000 n 
+0002130142 00000 n 
+0002130205 00000 n 
+0002130267 00000 n 
+0002130330 00000 n 
+0002130393 00000 n 
+0002130456 00000 n 
+0002130519 00000 n 
+0002130582 00000 n 
+0002130645 00000 n 
+0002130708 00000 n 
+0002130771 00000 n 
+0002130833 00000 n 
+0002130896 00000 n 
+0002130959 00000 n 
+0002131022 00000 n 
+0002131085 00000 n 
+0002131148 00000 n 
+0002131211 00000 n 
+0002131274 00000 n 
+0002131337 00000 n 
+0002131399 00000 n 
+0002131462 00000 n 
+0002131525 00000 n 
+0002131588 00000 n 
+0002131651 00000 n 
+0002131714 00000 n 
+0002131777 00000 n 
+0002131840 00000 n 
+0002131903 00000 n 
+0002131965 00000 n 
+0002132028 00000 n 
+0002132091 00000 n 
+0002132154 00000 n 
+0002132279 00000 n 
+0002132342 00000 n 
+0002132405 00000 n 
+0002139455 00000 n 
+0002135664 00000 n 
+0002132611 00000 n 
+0002135787 00000 n 
+0002135850 00000 n 
+0002135913 00000 n 
+0002135976 00000 n 
+0002136037 00000 n 
+0002136098 00000 n 
+0002136161 00000 n 
+0002136224 00000 n 
+0002136285 00000 n 
+0002136346 00000 n 
+0002136407 00000 n 
+0002136468 00000 n 
+0002136529 00000 n 
+0002136590 00000 n 
+0002136651 00000 n 
+0002136711 00000 n 
+0002136772 00000 n 
+0002136833 00000 n 
+0002136894 00000 n 
+0002136955 00000 n 
+0002137016 00000 n 
+0002137077 00000 n 
+0002137138 00000 n 
+0002137199 00000 n 
+0002137259 00000 n 
+0002137320 00000 n 
+0002137381 00000 n 
+0002137442 00000 n 
+0002137503 00000 n 
+0002137564 00000 n 
+0002137625 00000 n 
+0002137686 00000 n 
+0002137747 00000 n 
+0002137807 00000 n 
+0002137868 00000 n 
+0002137929 00000 n 
+0002137990 00000 n 
+0002138051 00000 n 
+0002138112 00000 n 
+0002138173 00000 n 
+0002138234 00000 n 
+0002138295 00000 n 
+0002138356 00000 n 
+0002138417 00000 n 
+0002138480 00000 n 
+0002138543 00000 n 
+0002138604 00000 n 
+0002138665 00000 n 
+0002138726 00000 n 
+0002138786 00000 n 
+0002138847 00000 n 
+0002138908 00000 n 
+0002138969 00000 n 
+0002139030 00000 n 
+0002139091 00000 n 
+0002139152 00000 n 
+0002139213 00000 n 
+0002139274 00000 n 
+0002139334 00000 n 
+0002139395 00000 n 
+0002146115 00000 n 
+0002142874 00000 n 
+0002139557 00000 n 
+0002142997 00000 n 
+0002143060 00000 n 
+0002143121 00000 n 
+0002143182 00000 n 
+0002143243 00000 n 
+0002143304 00000 n 
+0002143365 00000 n 
+0002143425 00000 n 
+0002143486 00000 n 
+0002143547 00000 n 
+0002143608 00000 n 
+0002143669 00000 n 
+0002143730 00000 n 
+0002143791 00000 n 
+0002143854 00000 n 
+0002143917 00000 n 
+0002143978 00000 n 
+0002144039 00000 n 
+0002144100 00000 n 
+0002144161 00000 n 
+0002144222 00000 n 
+0002144283 00000 n 
+0002144344 00000 n 
+0002144404 00000 n 
+0002144465 00000 n 
+0002144526 00000 n 
+0002144587 00000 n 
+0002144648 00000 n 
+0002144709 00000 n 
+0002144770 00000 n 
+0002144831 00000 n 
+0002144892 00000 n 
+0002144952 00000 n 
+0002145013 00000 n 
+0002145074 00000 n 
+0002145135 00000 n 
+0002145196 00000 n 
+0002145259 00000 n 
+0002145321 00000 n 
+0002145381 00000 n 
+0002145442 00000 n 
+0002145503 00000 n 
+0002145564 00000 n 
+0002145625 00000 n 
+0002145686 00000 n 
+0002145747 00000 n 
+0002145808 00000 n 
+0002145869 00000 n 
+0002145929 00000 n 
+0002145990 00000 n 
+0002150365 00000 n 
+0002150117 00000 n 
+0002146245 00000 n 
+0002150240 00000 n 
+0002153162 00000 n 
+0002152976 00000 n 
+0002150523 00000 n 
+0002153099 00000 n 
+0002156565 00000 n 
+0002156194 00000 n 
+0002153292 00000 n 
+0002156317 00000 n 
+0002156442 00000 n 
+0003969483 00000 n 
+0002159817 00000 n 
+0002160153 00000 n 
+0002159673 00000 n 
+0002156681 00000 n 
+0002159966 00000 n 
+0002163844 00000 n 
+0002163994 00000 n 
+0002165982 00000 n 
+0002163691 00000 n 
+0002160269 00000 n 
+0002164160 00000 n 
+0002164285 00000 n 
+0002164348 00000 n 
+0002164411 00000 n 
+0002164474 00000 n 
+0002164537 00000 n 
+0002164600 00000 n 
+0002164663 00000 n 
+0002164726 00000 n 
+0002164789 00000 n 
+0002164852 00000 n 
+0002164915 00000 n 
+0002164978 00000 n 
+0002165041 00000 n 
+0002165103 00000 n 
+0002165166 00000 n 
+0002165229 00000 n 
+0002165292 00000 n 
+0002165355 00000 n 
+0002165418 00000 n 
+0002165481 00000 n 
+0002165544 00000 n 
+0002165607 00000 n 
+0002165669 00000 n 
+0002165732 00000 n 
+0002165795 00000 n 
+0002171615 00000 n 
+0002168663 00000 n 
+0002166112 00000 n 
+0002168786 00000 n 
+0002168911 00000 n 
+0002168974 00000 n 
+0002169037 00000 n 
+0002169100 00000 n 
+0002169162 00000 n 
+0002169225 00000 n 
+0002169288 00000 n 
+0002169351 00000 n 
+0002169414 00000 n 
+0002169477 00000 n 
+0002169540 00000 n 
+0002169603 00000 n 
+0002169666 00000 n 
+0002169729 00000 n 
+0002169792 00000 n 
+0002169855 00000 n 
+0002169918 00000 n 
+0002169981 00000 n 
+0002170044 00000 n 
+0002170107 00000 n 
+0002170170 00000 n 
+0002170233 00000 n 
+0002170296 00000 n 
+0002170358 00000 n 
+0002170421 00000 n 
+0002170484 00000 n 
+0002170547 00000 n 
+0002170610 00000 n 
+0002170673 00000 n 
+0002170736 00000 n 
+0002170799 00000 n 
+0002170862 00000 n 
+0002170924 00000 n 
+0002170987 00000 n 
+0002171050 00000 n 
+0002171113 00000 n 
+0002171176 00000 n 
+0002171239 00000 n 
+0002171302 00000 n 
+0002171365 00000 n 
+0002171428 00000 n 
+0002171490 00000 n 
+0002171553 00000 n 
+0002178733 00000 n 
+0002174648 00000 n 
+0002171731 00000 n 
+0002174771 00000 n 
+0002174834 00000 n 
+0002174897 00000 n 
+0002174960 00000 n 
+0002175023 00000 n 
+0002175086 00000 n 
+0002175149 00000 n 
+0002175211 00000 n 
+0002175274 00000 n 
+0002175337 00000 n 
+0002175400 00000 n 
+0002175463 00000 n 
+0002175526 00000 n 
+0002175589 00000 n 
+0002175652 00000 n 
+0002175715 00000 n 
+0002175777 00000 n 
+0002175840 00000 n 
+0002175903 00000 n 
+0002175966 00000 n 
+0002176029 00000 n 
+0002176092 00000 n 
+0002176155 00000 n 
+0002176218 00000 n 
+0002176281 00000 n 
+0002176343 00000 n 
+0002176406 00000 n 
+0002176469 00000 n 
+0002176532 00000 n 
+0002176595 00000 n 
+0002176658 00000 n 
+0002176721 00000 n 
+0002176784 00000 n 
+0002176847 00000 n 
+0002176909 00000 n 
+0002176972 00000 n 
+0002177035 00000 n 
+0002177098 00000 n 
+0002177161 00000 n 
+0002177224 00000 n 
+0002177287 00000 n 
+0002177350 00000 n 
+0002177413 00000 n 
+0002177475 00000 n 
+0002177538 00000 n 
+0002177601 00000 n 
+0002177664 00000 n 
+0002177727 00000 n 
+0002177790 00000 n 
+0002177853 00000 n 
+0002177916 00000 n 
+0002177979 00000 n 
+0002178042 00000 n 
+0002178105 00000 n 
+0002178168 00000 n 
+0002178231 00000 n 
+0002178294 00000 n 
+0002178357 00000 n 
+0002178420 00000 n 
+0002178483 00000 n 
+0002178546 00000 n 
+0002178609 00000 n 
+0002178671 00000 n 
+0002181609 00000 n 
+0002185346 00000 n 
+0002181465 00000 n 
+0002178835 00000 n 
+0002181760 00000 n 
+0002181823 00000 n 
+0002181886 00000 n 
+0002181949 00000 n 
+0002182012 00000 n 
+0002182075 00000 n 
+0002182138 00000 n 
+0002182200 00000 n 
+0002182263 00000 n 
+0002182326 00000 n 
+0002182389 00000 n 
+0002182452 00000 n 
+0002182515 00000 n 
+0002182578 00000 n 
+0002182641 00000 n 
+0002182704 00000 n 
+0002182766 00000 n 
+0002182829 00000 n 
+0002182892 00000 n 
+0002182955 00000 n 
+0002183018 00000 n 
+0002183081 00000 n 
+0002183144 00000 n 
+0002183207 00000 n 
+0002183270 00000 n 
+0002183332 00000 n 
+0002183395 00000 n 
+0002183458 00000 n 
+0002183521 00000 n 
+0002183584 00000 n 
+0002183647 00000 n 
+0002183710 00000 n 
+0002183773 00000 n 
+0002183836 00000 n 
+0002183898 00000 n 
+0002183961 00000 n 
+0002184024 00000 n 
+0002184087 00000 n 
+0002184150 00000 n 
+0002184213 00000 n 
+0002184276 00000 n 
+0002184339 00000 n 
+0002184402 00000 n 
+0002184464 00000 n 
+0002184527 00000 n 
+0002184590 00000 n 
+0002184653 00000 n 
+0002184716 00000 n 
+0002184779 00000 n 
+0002184842 00000 n 
+0002184905 00000 n 
+0002184968 00000 n 
+0002185031 00000 n 
+0002185094 00000 n 
+0002185157 00000 n 
+0002185220 00000 n 
+0002185283 00000 n 
+0002191558 00000 n 
+0002188829 00000 n 
+0002192187 00000 n 
+0002188685 00000 n 
+0002185448 00000 n 
+0002188979 00000 n 
+0002189042 00000 n 
+0002189105 00000 n 
+0002189168 00000 n 
+0002189231 00000 n 
+0002189294 00000 n 
+0002189357 00000 n 
+0002189420 00000 n 
+0002189483 00000 n 
+0002189546 00000 n 
+0002189609 00000 n 
+0002189672 00000 n 
+0002189735 00000 n 
+0002189797 00000 n 
+0002189860 00000 n 
+0002189923 00000 n 
+0002189986 00000 n 
+0002190049 00000 n 
+0002190112 00000 n 
+0002190175 00000 n 
+0002190238 00000 n 
+0002190301 00000 n 
+0002190363 00000 n 
+0002190426 00000 n 
+0002190489 00000 n 
+0002190552 00000 n 
+0002190615 00000 n 
+0002190678 00000 n 
+0002190741 00000 n 
+0002190804 00000 n 
+0002190867 00000 n 
+0002190929 00000 n 
+0002190992 00000 n 
+0002191055 00000 n 
+0002191118 00000 n 
+0002191181 00000 n 
+0002191244 00000 n 
+0002191307 00000 n 
+0002191370 00000 n 
+0002191433 00000 n 
+0002191495 00000 n 
+0002191621 00000 n 
+0002191684 00000 n 
+0002191747 00000 n 
+0002191810 00000 n 
+0002191873 00000 n 
+0002191936 00000 n 
+0002191999 00000 n 
+0002192062 00000 n 
+0002192124 00000 n 
+0003969609 00000 n 
+0002197814 00000 n 
+0002195230 00000 n 
+0002195396 00000 n 
+0002197877 00000 n 
+0002195077 00000 n 
+0002192303 00000 n 
+0002195549 00000 n 
+0002195612 00000 n 
+0002195675 00000 n 
+0002195738 00000 n 
+0002195801 00000 n 
+0002195864 00000 n 
+0002195927 00000 n 
+0002195990 00000 n 
+0002196053 00000 n 
+0002196116 00000 n 
+0002196179 00000 n 
+0002196242 00000 n 
+0002196305 00000 n 
+0002196367 00000 n 
+0002196430 00000 n 
+0002196493 00000 n 
+0002196556 00000 n 
+0002196619 00000 n 
+0002196682 00000 n 
+0002196745 00000 n 
+0002196808 00000 n 
+0002196871 00000 n 
+0002196933 00000 n 
+0002196996 00000 n 
+0002197059 00000 n 
+0002197122 00000 n 
+0002197185 00000 n 
+0002197248 00000 n 
+0002197311 00000 n 
+0002197374 00000 n 
+0002197437 00000 n 
+0002197499 00000 n 
+0002197562 00000 n 
+0002197625 00000 n 
+0002197688 00000 n 
+0002197751 00000 n 
+0002205316 00000 n 
+0002205378 00000 n 
+0002202616 00000 n 
+0002197993 00000 n 
+0002202739 00000 n 
+0002202802 00000 n 
+0002202865 00000 n 
+0002202928 00000 n 
+0002202991 00000 n 
+0002203053 00000 n 
+0002203116 00000 n 
+0002203179 00000 n 
+0002203242 00000 n 
+0002203305 00000 n 
+0002203368 00000 n 
+0002203431 00000 n 
+0002203494 00000 n 
+0002203557 00000 n 
+0002203619 00000 n 
+0002203682 00000 n 
+0002203745 00000 n 
+0002203808 00000 n 
+0002203871 00000 n 
+0002203934 00000 n 
+0002203997 00000 n 
+0002204060 00000 n 
+0002204123 00000 n 
+0002204184 00000 n 
+0002204247 00000 n 
+0002204310 00000 n 
+0002204373 00000 n 
+0002204436 00000 n 
+0002204499 00000 n 
+0002204562 00000 n 
+0002204625 00000 n 
+0002204688 00000 n 
+0002204750 00000 n 
+0002204813 00000 n 
+0002204876 00000 n 
+0002204939 00000 n 
+0002205002 00000 n 
+0002205065 00000 n 
+0002205128 00000 n 
+0002205191 00000 n 
+0002205254 00000 n 
+0002211116 00000 n 
+0002208667 00000 n 
+0002205507 00000 n 
+0002208790 00000 n 
+0002208853 00000 n 
+0002208916 00000 n 
+0002208979 00000 n 
+0002209042 00000 n 
+0002209104 00000 n 
+0002209167 00000 n 
+0002209230 00000 n 
+0002209293 00000 n 
+0002209356 00000 n 
+0002209419 00000 n 
+0002209482 00000 n 
+0002209545 00000 n 
+0002209608 00000 n 
+0002209670 00000 n 
+0002209733 00000 n 
+0002209796 00000 n 
+0002209859 00000 n 
+0002209922 00000 n 
+0002209985 00000 n 
+0002210048 00000 n 
+0002210111 00000 n 
+0002210174 00000 n 
+0002210235 00000 n 
+0002210298 00000 n 
+0002210361 00000 n 
+0002210424 00000 n 
+0002210487 00000 n 
+0002210550 00000 n 
+0002210613 00000 n 
+0002210676 00000 n 
+0002210739 00000 n 
+0002210801 00000 n 
+0002210864 00000 n 
+0002210927 00000 n 
+0002210990 00000 n 
+0002211053 00000 n 
+0002217134 00000 n 
+0002214622 00000 n 
+0002211231 00000 n 
+0002214745 00000 n 
+0002214808 00000 n 
+0002214871 00000 n 
+0002214934 00000 n 
+0002214997 00000 n 
+0002215059 00000 n 
+0002215122 00000 n 
+0002215185 00000 n 
+0002215248 00000 n 
+0002215311 00000 n 
+0002215374 00000 n 
+0002215437 00000 n 
+0002215500 00000 n 
+0002215563 00000 n 
+0002215625 00000 n 
+0002215688 00000 n 
+0002215751 00000 n 
+0002215814 00000 n 
+0002215877 00000 n 
+0002215940 00000 n 
+0002216003 00000 n 
+0002216066 00000 n 
+0002216129 00000 n 
+0002216190 00000 n 
+0002216253 00000 n 
+0002216316 00000 n 
+0003962197 00000 n 
+0002216379 00000 n 
+0002216442 00000 n 
+0002216505 00000 n 
+0002216568 00000 n 
+0002216631 00000 n 
+0002216693 00000 n 
+0002216756 00000 n 
+0002216819 00000 n 
+0002216882 00000 n 
+0002216945 00000 n 
+0002217008 00000 n 
+0002217071 00000 n 
+0002225296 00000 n 
+0002221404 00000 n 
+0002217278 00000 n 
+0002221527 00000 n 
+0002221590 00000 n 
+0002221653 00000 n 
+0002221716 00000 n 
+0002221779 00000 n 
+0002221841 00000 n 
+0002221904 00000 n 
+0002221967 00000 n 
+0002222030 00000 n 
+0002222093 00000 n 
+0002222156 00000 n 
+0002222219 00000 n 
+0002222282 00000 n 
+0002222345 00000 n 
+0002222407 00000 n 
+0002222470 00000 n 
+0002222533 00000 n 
+0002222596 00000 n 
+0002222659 00000 n 
+0002222722 00000 n 
+0002222785 00000 n 
+0002222848 00000 n 
+0002222911 00000 n 
+0002222972 00000 n 
+0002223035 00000 n 
+0002223098 00000 n 
+0002223161 00000 n 
+0002223224 00000 n 
+0002223287 00000 n 
+0002223350 00000 n 
+0002223413 00000 n 
+0002223476 00000 n 
+0002223538 00000 n 
+0002223601 00000 n 
+0002223664 00000 n 
+0002223727 00000 n 
+0002223790 00000 n 
+0002223853 00000 n 
+0002223916 00000 n 
+0002223977 00000 n 
+0002224040 00000 n 
+0002224103 00000 n 
+0002224166 00000 n 
+0002224229 00000 n 
+0002224292 00000 n 
+0002224355 00000 n 
+0002224418 00000 n 
+0002224481 00000 n 
+0002224543 00000 n 
+0002224606 00000 n 
+0002224669 00000 n 
+0002224732 00000 n 
+0002224795 00000 n 
+0002224858 00000 n 
+0002224921 00000 n 
+0002224984 00000 n 
+0002225047 00000 n 
+0002225109 00000 n 
+0002225172 00000 n 
+0002225234 00000 n 
+0002229428 00000 n 
+0002229578 00000 n 
+0002232558 00000 n 
+0002229275 00000 n 
+0002225411 00000 n 
+0002229727 00000 n 
+0002229790 00000 n 
+0002229853 00000 n 
+0002229916 00000 n 
+0002229979 00000 n 
+0002230042 00000 n 
+0002230104 00000 n 
+0002230167 00000 n 
+0002230230 00000 n 
+0002230293 00000 n 
+0002230356 00000 n 
+0002230419 00000 n 
+0002230482 00000 n 
+0002230545 00000 n 
+0002230608 00000 n 
+0002230670 00000 n 
+0002230733 00000 n 
+0002230796 00000 n 
+0002230859 00000 n 
+0002230922 00000 n 
+0002230985 00000 n 
+0002231048 00000 n 
+0002231111 00000 n 
+0002231174 00000 n 
+0002231236 00000 n 
+0002231299 00000 n 
+0002231362 00000 n 
+0002231425 00000 n 
+0002231488 00000 n 
+0002231551 00000 n 
+0002231614 00000 n 
+0002231677 00000 n 
+0002231740 00000 n 
+0002231803 00000 n 
+0002231866 00000 n 
+0002231928 00000 n 
+0002231991 00000 n 
+0002232054 00000 n 
+0002232117 00000 n 
+0002232180 00000 n 
+0002232243 00000 n 
+0002232306 00000 n 
+0002232369 00000 n 
+0002232432 00000 n 
+0002232495 00000 n 
+0003969735 00000 n 
+0002234116 00000 n 
+0002234262 00000 n 
+0002234603 00000 n 
+0002233963 00000 n 
+0002232674 00000 n 
+0002234414 00000 n 
+0002234477 00000 n 
+0002234540 00000 n 
+0002240258 00000 n 
+0002240321 00000 n 
+0002237115 00000 n 
+0002234719 00000 n 
+0002237238 00000 n 
+0002237301 00000 n 
+0002237364 00000 n 
+0002237427 00000 n 
+0002237490 00000 n 
+0002237553 00000 n 
+0002237616 00000 n 
+0002237679 00000 n 
+0002237742 00000 n 
+0002237805 00000 n 
+0002237868 00000 n 
+0002237931 00000 n 
+0002237994 00000 n 
+0002238056 00000 n 
+0002238119 00000 n 
+0002238182 00000 n 
+0002238245 00000 n 
+0002238308 00000 n 
+0002238371 00000 n 
+0002238434 00000 n 
+0002238497 00000 n 
+0002238560 00000 n 
+0002238622 00000 n 
+0002238685 00000 n 
+0002238748 00000 n 
+0002238811 00000 n 
+0002238874 00000 n 
+0002238937 00000 n 
+0002239000 00000 n 
+0002239063 00000 n 
+0002239126 00000 n 
+0002239188 00000 n 
+0002239251 00000 n 
+0002239314 00000 n 
+0002239377 00000 n 
+0002239440 00000 n 
+0002239503 00000 n 
+0002239566 00000 n 
+0002239629 00000 n 
+0002239692 00000 n 
+0002239754 00000 n 
+0002239817 00000 n 
+0002239880 00000 n 
+0002239943 00000 n 
+0002240006 00000 n 
+0002240069 00000 n 
+0002240132 00000 n 
+0002240195 00000 n 
+0002245086 00000 n 
+0002242383 00000 n 
+0002240437 00000 n 
+0002242506 00000 n 
+0002242569 00000 n 
+0002242632 00000 n 
+0002242695 00000 n 
+0002242758 00000 n 
+0002242821 00000 n 
+0002242884 00000 n 
+0002242947 00000 n 
+0002243010 00000 n 
+0002243073 00000 n 
+0002243136 00000 n 
+0002243199 00000 n 
+0002243262 00000 n 
+0002243324 00000 n 
+0002243387 00000 n 
+0002243450 00000 n 
+0002243513 00000 n 
+0002243576 00000 n 
+0002243639 00000 n 
+0002243702 00000 n 
+0002243765 00000 n 
+0002243828 00000 n 
+0002243890 00000 n 
+0002243953 00000 n 
+0002244016 00000 n 
+0002244079 00000 n 
+0002244142 00000 n 
+0002244205 00000 n 
+0002244268 00000 n 
+0002244331 00000 n 
+0002244394 00000 n 
+0002244456 00000 n 
+0002244519 00000 n 
+0002244582 00000 n 
+0002244645 00000 n 
+0002244708 00000 n 
+0002244771 00000 n 
+0002244834 00000 n 
+0002244897 00000 n 
+0002244960 00000 n 
+0002245023 00000 n 
+0002250241 00000 n 
+0002247350 00000 n 
+0002245202 00000 n 
+0002247473 00000 n 
+0002247536 00000 n 
+0002247599 00000 n 
+0002247662 00000 n 
+0002247725 00000 n 
+0002247788 00000 n 
+0002247851 00000 n 
+0002247914 00000 n 
+0002247977 00000 n 
+0002248040 00000 n 
+0002248103 00000 n 
+0002248166 00000 n 
+0002248229 00000 n 
+0002248291 00000 n 
+0002248354 00000 n 
+0002248417 00000 n 
+0002248480 00000 n 
+0002248543 00000 n 
+0002248606 00000 n 
+0002248669 00000 n 
+0002248732 00000 n 
+0002248795 00000 n 
+0002248857 00000 n 
+0002248920 00000 n 
+0002248983 00000 n 
+0002249046 00000 n 
+0002249109 00000 n 
+0002249172 00000 n 
+0002249235 00000 n 
+0002249298 00000 n 
+0002249361 00000 n 
+0002249423 00000 n 
+0002249486 00000 n 
+0002249549 00000 n 
+0002249612 00000 n 
+0002249675 00000 n 
+0002249738 00000 n 
+0002249801 00000 n 
+0002249864 00000 n 
+0002249927 00000 n 
+0002249989 00000 n 
+0002250052 00000 n 
+0002250115 00000 n 
+0002250178 00000 n 
+0002257246 00000 n 
+0002253474 00000 n 
+0002250357 00000 n 
+0002253597 00000 n 
+0002253660 00000 n 
+0002253723 00000 n 
+0002253786 00000 n 
+0002253849 00000 n 
+0002253912 00000 n 
+0002253975 00000 n 
+0002254038 00000 n 
+0002254101 00000 n 
+0002254164 00000 n 
+0002254227 00000 n 
+0002254290 00000 n 
+0002254353 00000 n 
+0002254415 00000 n 
+0002254478 00000 n 
+0002254541 00000 n 
+0002254604 00000 n 
+0002254667 00000 n 
+0002254730 00000 n 
+0002254793 00000 n 
+0002254856 00000 n 
+0002254919 00000 n 
+0002254981 00000 n 
+0002255044 00000 n 
+0002255107 00000 n 
+0002255170 00000 n 
+0002255233 00000 n 
+0002255296 00000 n 
+0002255359 00000 n 
+0002255422 00000 n 
+0002255485 00000 n 
+0002255547 00000 n 
+0002255610 00000 n 
+0002255673 00000 n 
+0002255736 00000 n 
+0002255799 00000 n 
+0002255862 00000 n 
+0002255925 00000 n 
+0002255988 00000 n 
+0002256051 00000 n 
+0002256113 00000 n 
+0002256176 00000 n 
+0002256239 00000 n 
+0002256302 00000 n 
+0002256365 00000 n 
+0002256428 00000 n 
+0002256491 00000 n 
+0002256554 00000 n 
+0002256617 00000 n 
+0002256680 00000 n 
+0002256743 00000 n 
+0002256806 00000 n 
+0002256869 00000 n 
+0002256932 00000 n 
+0002256995 00000 n 
+0002257058 00000 n 
+0002257121 00000 n 
+0002257184 00000 n 
+0002263769 00000 n 
+0002260880 00000 n 
+0002257362 00000 n 
+0002261003 00000 n 
+0002261066 00000 n 
+0002261129 00000 n 
+0002261192 00000 n 
+0002261255 00000 n 
+0002261318 00000 n 
+0002261381 00000 n 
+0002261443 00000 n 
+0002261506 00000 n 
+0002261569 00000 n 
+0002261632 00000 n 
+0002261695 00000 n 
+0002261756 00000 n 
+0002261819 00000 n 
+0002261882 00000 n 
+0002261945 00000 n 
+0002262008 00000 n 
+0002262071 00000 n 
+0002262134 00000 n 
+0002262197 00000 n 
+0002262260 00000 n 
+0002262322 00000 n 
+0002262385 00000 n 
+0002262448 00000 n 
+0002262511 00000 n 
+0002262574 00000 n 
+0002262637 00000 n 
+0002262700 00000 n 
+0002262763 00000 n 
+0002262826 00000 n 
+0002262888 00000 n 
+0002262951 00000 n 
+0002263014 00000 n 
+0002263077 00000 n 
+0002263140 00000 n 
+0002263203 00000 n 
+0002263266 00000 n 
+0002263329 00000 n 
+0002263392 00000 n 
+0002263454 00000 n 
+0002263517 00000 n 
+0002263580 00000 n 
+0002263643 00000 n 
+0002263706 00000 n 
+0003969861 00000 n 
+0002270214 00000 n 
+0002267010 00000 n 
+0002263885 00000 n 
+0002267133 00000 n 
+0002267196 00000 n 
+0002267259 00000 n 
+0002267322 00000 n 
+0002267385 00000 n 
+0002267448 00000 n 
+0002267511 00000 n 
+0002267574 00000 n 
+0002267637 00000 n 
+0002267700 00000 n 
+0002267763 00000 n 
+0002267826 00000 n 
+0002267889 00000 n 
+0002267951 00000 n 
+0002268014 00000 n 
+0002268077 00000 n 
+0002268140 00000 n 
+0002268203 00000 n 
+0002268266 00000 n 
+0002268329 00000 n 
+0002268392 00000 n 
+0002268455 00000 n 
+0002268517 00000 n 
+0002268580 00000 n 
+0002268643 00000 n 
+0002268706 00000 n 
+0002268769 00000 n 
+0002268832 00000 n 
+0002268895 00000 n 
+0002268958 00000 n 
+0002269021 00000 n 
+0002269083 00000 n 
+0002269146 00000 n 
+0002269209 00000 n 
+0002269272 00000 n 
+0002269335 00000 n 
+0002269398 00000 n 
+0002269461 00000 n 
+0002269524 00000 n 
+0002269587 00000 n 
+0002269649 00000 n 
+0002269712 00000 n 
+0002269775 00000 n 
+0002269838 00000 n 
+0002269901 00000 n 
+0002269964 00000 n 
+0002270027 00000 n 
+0002270089 00000 n 
+0002270152 00000 n 
+0002272955 00000 n 
+0002273124 00000 n 
+0002275098 00000 n 
+0002272802 00000 n 
+0002270316 00000 n 
+0002273274 00000 n 
+0002273337 00000 n 
+0002273400 00000 n 
+0002273463 00000 n 
+0002273526 00000 n 
+0002273589 00000 n 
+0002273652 00000 n 
+0002273714 00000 n 
+0002273777 00000 n 
+0002273840 00000 n 
+0002273903 00000 n 
+0002273966 00000 n 
+0002274029 00000 n 
+0002274092 00000 n 
+0002274155 00000 n 
+0002274218 00000 n 
+0002274280 00000 n 
+0002274343 00000 n 
+0002274406 00000 n 
+0002274469 00000 n 
+0002274532 00000 n 
+0002274595 00000 n 
+0002274658 00000 n 
+0002274721 00000 n 
+0002274784 00000 n 
+0002274847 00000 n 
+0002274910 00000 n 
+0002274972 00000 n 
+0002275035 00000 n 
+0002278670 00000 n 
+0002278733 00000 n 
+0002276785 00000 n 
+0002275200 00000 n 
+0002276908 00000 n 
+0002276971 00000 n 
+0002277034 00000 n 
+0002277097 00000 n 
+0002277160 00000 n 
+0002277223 00000 n 
+0002277286 00000 n 
+0002277349 00000 n 
+0002277412 00000 n 
+0002277475 00000 n 
+0002277538 00000 n 
+0002277601 00000 n 
+0002277664 00000 n 
+0002277726 00000 n 
+0002277789 00000 n 
+0002277852 00000 n 
+0002277915 00000 n 
+0002277978 00000 n 
+0002278041 00000 n 
+0002278104 00000 n 
+0002278167 00000 n 
+0002278230 00000 n 
+0002278292 00000 n 
+0002278355 00000 n 
+0002278418 00000 n 
+0002278481 00000 n 
+0002278544 00000 n 
+0002278607 00000 n 
+0002282909 00000 n 
+0002280647 00000 n 
+0002278849 00000 n 
+0002280770 00000 n 
+0002280833 00000 n 
+0002280896 00000 n 
+0002280959 00000 n 
+0002281022 00000 n 
+0002281085 00000 n 
+0002281148 00000 n 
+0002281211 00000 n 
+0002281274 00000 n 
+0002281336 00000 n 
+0002281399 00000 n 
+0002281462 00000 n 
+0002281525 00000 n 
+0002281588 00000 n 
+0002281651 00000 n 
+0002281714 00000 n 
+0002281777 00000 n 
+0002281840 00000 n 
+0002281902 00000 n 
+0002281965 00000 n 
+0002282028 00000 n 
+0002282091 00000 n 
+0002282154 00000 n 
+0002282217 00000 n 
+0002282280 00000 n 
+0002282343 00000 n 
+0002282406 00000 n 
+0002282468 00000 n 
+0002282531 00000 n 
+0002282594 00000 n 
+0002282657 00000 n 
+0002282720 00000 n 
+0002282783 00000 n 
+0002282846 00000 n 
+0002288941 00000 n 
+0002285735 00000 n 
+0002283025 00000 n 
+0002285858 00000 n 
+0002285921 00000 n 
+0002285984 00000 n 
+0002286047 00000 n 
+0002286110 00000 n 
+0002286173 00000 n 
+0002286236 00000 n 
+0002286299 00000 n 
+0002286362 00000 n 
+0002286425 00000 n 
+0002286488 00000 n 
+0002286551 00000 n 
+0002286614 00000 n 
+0002286676 00000 n 
+0002286739 00000 n 
+0002286802 00000 n 
+0002286865 00000 n 
+0002286928 00000 n 
+0002286991 00000 n 
+0002287054 00000 n 
+0002287117 00000 n 
+0002287180 00000 n 
+0002287242 00000 n 
+0002287305 00000 n 
+0002287368 00000 n 
+0002287431 00000 n 
+0002287494 00000 n 
+0002287557 00000 n 
+0002287620 00000 n 
+0002287683 00000 n 
+0002287746 00000 n 
+0002287808 00000 n 
+0002287871 00000 n 
+0002287934 00000 n 
+0002287997 00000 n 
+0002288060 00000 n 
+0002288123 00000 n 
+0002288186 00000 n 
+0002288249 00000 n 
+0002288312 00000 n 
+0002288374 00000 n 
+0002288437 00000 n 
+0002288500 00000 n 
+0002288563 00000 n 
+0002288626 00000 n 
+0002288689 00000 n 
+0002288752 00000 n 
+0002288815 00000 n 
+0002288878 00000 n 
+0002295809 00000 n 
+0002292102 00000 n 
+0002289057 00000 n 
+0002292225 00000 n 
+0002292288 00000 n 
+0002292351 00000 n 
+0002292414 00000 n 
+0002292477 00000 n 
+0002292540 00000 n 
+0002292603 00000 n 
+0002292666 00000 n 
+0002292729 00000 n 
+0002292792 00000 n 
+0002292855 00000 n 
+0002292918 00000 n 
+0002292981 00000 n 
+0002293043 00000 n 
+0002293106 00000 n 
+0002293169 00000 n 
+0002293232 00000 n 
+0002293295 00000 n 
+0002293358 00000 n 
+0002293421 00000 n 
+0002293484 00000 n 
+0002293547 00000 n 
+0002293609 00000 n 
+0002293672 00000 n 
+0002293735 00000 n 
+0002293798 00000 n 
+0002293861 00000 n 
+0002293924 00000 n 
+0002293987 00000 n 
+0002294050 00000 n 
+0002294113 00000 n 
+0002294175 00000 n 
+0002294238 00000 n 
+0002294301 00000 n 
+0002294364 00000 n 
+0002294426 00000 n 
+0002294488 00000 n 
+0002294551 00000 n 
+0002294614 00000 n 
+0002294677 00000 n 
+0002294739 00000 n 
+0002294802 00000 n 
+0002294865 00000 n 
+0002294928 00000 n 
+0002294991 00000 n 
+0002295054 00000 n 
+0002295117 00000 n 
+0002295180 00000 n 
+0002295243 00000 n 
+0002295305 00000 n 
+0002295368 00000 n 
+0002295431 00000 n 
+0002295494 00000 n 
+0002295557 00000 n 
+0002295620 00000 n 
+0002295683 00000 n 
+0002295746 00000 n 
+0003969987 00000 n 
+0002300827 00000 n 
+0002300075 00000 n 
+0002295925 00000 n 
+0002300198 00000 n 
+0002300261 00000 n 
+0002300324 00000 n 
+0002300387 00000 n 
+0002300450 00000 n 
+0002300512 00000 n 
+0002300575 00000 n 
+0002300638 00000 n 
+0002300701 00000 n 
+0002300764 00000 n 
+0002303365 00000 n 
+0002303597 00000 n 
+0002303221 00000 n 
+0002300957 00000 n 
+0002303534 00000 n 
+0002304398 00000 n 
+0002304150 00000 n 
+0002303685 00000 n 
+0002304273 00000 n 
+0002308283 00000 n 
+0002307847 00000 n 
+0002304500 00000 n 
+0002307970 00000 n 
+0002308033 00000 n 
+0002308158 00000 n 
+0002312509 00000 n 
+0002312323 00000 n 
+0002308385 00000 n 
+0002312446 00000 n 
+0002316675 00000 n 
+0002316305 00000 n 
+0002312611 00000 n 
+0002316428 00000 n 
+0003970113 00000 n 
+0002321290 00000 n 
+0002326326 00000 n 
+0002326528 00000 n 
+0002321504 00000 n 
+0002321146 00000 n 
+0002316791 00000 n 
+0002321441 00000 n 
+0002331718 00000 n 
+0002326733 00000 n 
+0002326911 00000 n 
+0002327138 00000 n 
+0002327453 00000 n 
+0002326146 00000 n 
+0002321620 00000 n 
+0002327329 00000 n 
+0002331375 00000 n 
+0002332283 00000 n 
+0002331231 00000 n 
+0002327583 00000 n 
+0002331593 00000 n 
+0002331843 00000 n 
+0002331906 00000 n 
+0002331969 00000 n 
+0002332032 00000 n 
+0002332095 00000 n 
+0002332158 00000 n 
+0002332221 00000 n 
+0002337062 00000 n 
+0002335746 00000 n 
+0002332427 00000 n 
+0002335869 00000 n 
+0002335994 00000 n 
+0002336057 00000 n 
+0002336120 00000 n 
+0002336183 00000 n 
+0002336308 00000 n 
+0002336370 00000 n 
+0002336432 00000 n 
+0002336495 00000 n 
+0002336558 00000 n 
+0002336621 00000 n 
+0002336684 00000 n 
+0002336747 00000 n 
+0002336810 00000 n 
+0002336873 00000 n 
+0002336936 00000 n 
+0002336999 00000 n 
+0002342659 00000 n 
+0002341026 00000 n 
+0002337206 00000 n 
+0002341149 00000 n 
+0002341212 00000 n 
+0002341275 00000 n 
+0002341338 00000 n 
+0002341401 00000 n 
+0002341464 00000 n 
+0002341527 00000 n 
+0002341590 00000 n 
+0002341653 00000 n 
+0002341716 00000 n 
+0002341779 00000 n 
+0002341842 00000 n 
+0002341905 00000 n 
+0002341968 00000 n 
+0002342031 00000 n 
+0002342094 00000 n 
+0002342218 00000 n 
+0002342281 00000 n 
+0002342344 00000 n 
+0002342407 00000 n 
+0002342470 00000 n 
+0002342533 00000 n 
+0002342596 00000 n 
+0002347839 00000 n 
+0002346474 00000 n 
+0002342789 00000 n 
+0002346597 00000 n 
+0002346722 00000 n 
+0002346785 00000 n 
+0002346848 00000 n 
+0002346910 00000 n 
+0002346973 00000 n 
+0002347036 00000 n 
+0002347099 00000 n 
+0002347162 00000 n 
+0002347223 00000 n 
+0002347284 00000 n 
+0002347345 00000 n 
+0002347405 00000 n 
+0002347468 00000 n 
+0002347530 00000 n 
+0002347590 00000 n 
+0002347653 00000 n 
+0002347716 00000 n 
+0002347777 00000 n 
+0003970239 00000 n 
+0002352719 00000 n 
+0002351533 00000 n 
+0002347955 00000 n 
+0002351656 00000 n 
+0002351719 00000 n 
+0002351782 00000 n 
+0002351843 00000 n 
+0002352029 00000 n 
+0002352092 00000 n 
+0002352155 00000 n 
+0002352218 00000 n 
+0002352281 00000 n 
+0002352344 00000 n 
+0002352407 00000 n 
+0002352532 00000 n 
+0002352595 00000 n 
+0002352658 00000 n 
+0002358050 00000 n 
+0002356146 00000 n 
+0002352849 00000 n 
+0002356269 00000 n 
+0002356394 00000 n 
+0002356457 00000 n 
+0002356518 00000 n 
+0002356580 00000 n 
+0002356641 00000 n 
+0002356704 00000 n 
+0002356765 00000 n 
+0002356826 00000 n 
+0002356887 00000 n 
+0002356948 00000 n 
+0002357009 00000 n 
+0002357070 00000 n 
+0002357129 00000 n 
+0002357192 00000 n 
+0002357255 00000 n 
+0002357315 00000 n 
+0002357378 00000 n 
+0002357439 00000 n 
+0002357500 00000 n 
+0002357561 00000 n 
+0002357622 00000 n 
+0002357683 00000 n 
+0002357743 00000 n 
+0002357804 00000 n 
+0002357865 00000 n 
+0002357926 00000 n 
+0002362423 00000 n 
+0002362049 00000 n 
+0002358180 00000 n 
+0002362172 00000 n 
+0002362297 00000 n 
+0002362360 00000 n 
+0002363523 00000 n 
+0002363337 00000 n 
+0002362567 00000 n 
+0002363460 00000 n 
+0002367063 00000 n 
+0002366631 00000 n 
+0002363653 00000 n 
+0002366754 00000 n 
+0002366879 00000 n 
+0002369971 00000 n 
+0002369537 00000 n 
+0002367165 00000 n 
+0002369660 00000 n 
+0003970365 00000 n 
+0002373624 00000 n 
+0002374469 00000 n 
+0002373480 00000 n 
+0002370087 00000 n 
+0002373780 00000 n 
+0002373905 00000 n 
+0002373968 00000 n 
+0002374031 00000 n 
+0002374094 00000 n 
+0002374157 00000 n 
+0002374219 00000 n 
+0002374343 00000 n 
+0002374406 00000 n 
+0002379303 00000 n 
+0002377801 00000 n 
+0002377970 00000 n 
+0002378148 00000 n 
+0002380236 00000 n 
+0002377639 00000 n 
+0002374585 00000 n 
+0002378302 00000 n 
+0002378365 00000 n 
+0002378428 00000 n 
+0002378491 00000 n 
+0002378552 00000 n 
+0002378615 00000 n 
+0002378676 00000 n 
+0002378737 00000 n 
+0002378800 00000 n 
+0002378863 00000 n 
+0002378926 00000 n 
+0002378988 00000 n 
+0002379051 00000 n 
+0002379114 00000 n 
+0002379177 00000 n 
+0002379240 00000 n 
+0002379366 00000 n 
+0002379429 00000 n 
+0002379554 00000 n 
+0002379617 00000 n 
+0002379680 00000 n 
+0002379743 00000 n 
+0002379806 00000 n 
+0002379867 00000 n 
+0002379929 00000 n 
+0002379992 00000 n 
+0002380053 00000 n 
+0002380112 00000 n 
+0002380173 00000 n 
+0002391581 00000 n 
+0002383223 00000 n 
+0002385656 00000 n 
+0002383079 00000 n 
+0002380366 00000 n 
+0002383381 00000 n 
+0002383444 00000 n 
+0002383507 00000 n 
+0002383568 00000 n 
+0002383629 00000 n 
+0002383692 00000 n 
+0002383753 00000 n 
+0002383814 00000 n 
+0002383875 00000 n 
+0002383936 00000 n 
+0002383996 00000 n 
+0002384057 00000 n 
+0002384118 00000 n 
+0002384181 00000 n 
+0002384242 00000 n 
+0002384303 00000 n 
+0002384364 00000 n 
+0002384425 00000 n 
+0002384486 00000 n 
+0002384547 00000 n 
+0002384608 00000 n 
+0002384668 00000 n 
+0002384729 00000 n 
+0002384790 00000 n 
+0002384853 00000 n 
+0002384916 00000 n 
+0002384977 00000 n 
+0002385038 00000 n 
+0002385100 00000 n 
+0002385161 00000 n 
+0002385224 00000 n 
+0002385287 00000 n 
+0002385348 00000 n 
+0002385409 00000 n 
+0002385472 00000 n 
+0002385533 00000 n 
+0002391958 00000 n 
+0002390017 00000 n 
+0002390171 00000 n 
+0002393075 00000 n 
+0002389864 00000 n 
+0002385786 00000 n 
+0002390323 00000 n 
+0002390386 00000 n 
+0002390449 00000 n 
+0002390512 00000 n 
+0002390575 00000 n 
+0002390637 00000 n 
+0002390700 00000 n 
+0002390763 00000 n 
+0002390826 00000 n 
+0002390889 00000 n 
+0002390952 00000 n 
+0002391015 00000 n 
+0002391078 00000 n 
+0002391141 00000 n 
+0002391203 00000 n 
+0002391266 00000 n 
+0002391329 00000 n 
+0002391392 00000 n 
+0002391455 00000 n 
+0002391518 00000 n 
+0002391644 00000 n 
+0002391707 00000 n 
+0002391770 00000 n 
+0002391833 00000 n 
+0002391896 00000 n 
+0002392144 00000 n 
+0002392207 00000 n 
+0002392270 00000 n 
+0002392333 00000 n 
+0002392396 00000 n 
+0002392457 00000 n 
+0002392520 00000 n 
+0002392582 00000 n 
+0002392642 00000 n 
+0002392703 00000 n 
+0002392766 00000 n 
+0002392829 00000 n 
+0002392890 00000 n 
+0002392951 00000 n 
+0002393013 00000 n 
+0002397271 00000 n 
+0002398215 00000 n 
+0002398402 00000 n 
+0002396524 00000 n 
+0002393232 00000 n 
+0002396647 00000 n 
+0002396710 00000 n 
+0002396773 00000 n 
+0002396834 00000 n 
+0002396897 00000 n 
+0002396959 00000 n 
+0002397020 00000 n 
+0002397082 00000 n 
+0002397145 00000 n 
+0002397208 00000 n 
+0002397334 00000 n 
+0002397397 00000 n 
+0002397460 00000 n 
+0002397523 00000 n 
+0002397586 00000 n 
+0002397649 00000 n 
+0002397712 00000 n 
+0002397774 00000 n 
+0002397837 00000 n 
+0002397900 00000 n 
+0002397963 00000 n 
+0002398026 00000 n 
+0002398089 00000 n 
+0002398152 00000 n 
+0002401385 00000 n 
+0002401199 00000 n 
+0002398532 00000 n 
+0002401322 00000 n 
+0003970491 00000 n 
+0002404688 00000 n 
+0002405234 00000 n 
+0002404544 00000 n 
+0002401516 00000 n 
+0002404922 00000 n 
+0002405047 00000 n 
+0002409572 00000 n 
+0002409077 00000 n 
+0002405364 00000 n 
+0002409200 00000 n 
+0002409326 00000 n 
+0002413388 00000 n 
+0002413537 00000 n 
+0002413941 00000 n 
+0002413232 00000 n 
+0002409716 00000 n 
+0002413687 00000 n 
+0003236427 00000 n 
+0002418242 00000 n 
+0002420015 00000 n 
+0002418094 00000 n 
+0002414086 00000 n 
+0002418396 00000 n 
+0002418461 00000 n 
+0002418526 00000 n 
+0002418591 00000 n 
+0002418656 00000 n 
+0002418721 00000 n 
+0002418786 00000 n 
+0002418850 00000 n 
+0002418915 00000 n 
+0002418980 00000 n 
+0002419045 00000 n 
+0002419110 00000 n 
+0002419175 00000 n 
+0002419240 00000 n 
+0002419305 00000 n 
+0002419370 00000 n 
+0002419434 00000 n 
+0002419499 00000 n 
+0002419564 00000 n 
+0002419629 00000 n 
+0002419694 00000 n 
+0002419759 00000 n 
+0002419824 00000 n 
+0003224565 00000 n 
+0002424214 00000 n 
+0002423709 00000 n 
+0002420146 00000 n 
+0002423835 00000 n 
+0002427968 00000 n 
+0002427195 00000 n 
+0002424345 00000 n 
+0002427322 00000 n 
+0002427387 00000 n 
+0002427452 00000 n 
+0002427517 00000 n 
+0002427582 00000 n 
+0002427647 00000 n 
+0002427712 00000 n 
+0002427775 00000 n 
+0002427840 00000 n 
+0003970620 00000 n 
+0002431343 00000 n 
+0002431525 00000 n 
+0002431710 00000 n 
+0002432076 00000 n 
+0002431174 00000 n 
+0002428113 00000 n 
+0002431886 00000 n 
+0002434308 00000 n 
+0002434625 00000 n 
+0002434159 00000 n 
+0002432193 00000 n 
+0002434497 00000 n 
+0002468198 00000 n 
+0002436328 00000 n 
+0002469056 00000 n 
+0002436179 00000 n 
+0002434728 00000 n 
+0002468351 00000 n 
+0002468669 00000 n 
+0002468734 00000 n 
+0002468799 00000 n 
+0002468863 00000 n 
+0002468992 00000 n 
+0002513190 00000 n 
+0002470505 00000 n 
+0002513343 00000 n 
+0002500357 00000 n 
+0002513496 00000 n 
+0002516489 00000 n 
+0002514294 00000 n 
+0002470336 00000 n 
+0002469198 00000 n 
+0002513645 00000 n 
+0002513710 00000 n 
+0002513775 00000 n 
+0002513905 00000 n 
+0002513969 00000 n 
+0002514034 00000 n 
+0002514164 00000 n 
+0002514229 00000 n 
+0002549672 00000 n 
+0002549172 00000 n 
+0002529452 00000 n 
+0002549325 00000 n 
+0002550062 00000 n 
+0002516330 00000 n 
+0002514438 00000 n 
+0002549477 00000 n 
+0002549542 00000 n 
+0002549737 00000 n 
+0002549802 00000 n 
+0002549932 00000 n 
+0002549997 00000 n 
+0002555466 00000 n 
+0002553785 00000 n 
+0002550206 00000 n 
+0002553912 00000 n 
+0002554040 00000 n 
+0002554105 00000 n 
+0002554170 00000 n 
+0002554235 00000 n 
+0002554300 00000 n 
+0002554365 00000 n 
+0002554430 00000 n 
+0002554495 00000 n 
+0002554560 00000 n 
+0002554625 00000 n 
+0002554690 00000 n 
+0002554755 00000 n 
+0002554816 00000 n 
+0002554881 00000 n 
+0002554946 00000 n 
+0002555011 00000 n 
+0002555076 00000 n 
+0002555141 00000 n 
+0002555206 00000 n 
+0002555271 00000 n 
+0002555336 00000 n 
+0002555401 00000 n 
+0003970753 00000 n 
+0002561416 00000 n 
+0002558112 00000 n 
+0002555597 00000 n 
+0002558239 00000 n 
+0002558304 00000 n 
+0002558369 00000 n 
+0002558434 00000 n 
+0002558499 00000 n 
+0002558564 00000 n 
+0002558629 00000 n 
+0002558694 00000 n 
+0002558759 00000 n 
+0002558823 00000 n 
+0002558888 00000 n 
+0002558953 00000 n 
+0002559080 00000 n 
+0002559145 00000 n 
+0002559210 00000 n 
+0002559275 00000 n 
+0002559340 00000 n 
+0002559405 00000 n 
+0002559470 00000 n 
+0002559534 00000 n 
+0002559599 00000 n 
+0002559664 00000 n 
+0002559729 00000 n 
+0002559794 00000 n 
+0002559859 00000 n 
+0002559924 00000 n 
+0002559989 00000 n 
+0002560054 00000 n 
+0002560118 00000 n 
+0002560183 00000 n 
+0002560248 00000 n 
+0002560313 00000 n 
+0002560378 00000 n 
+0002560443 00000 n 
+0002560508 00000 n 
+0002560573 00000 n 
+0002560638 00000 n 
+0002560702 00000 n 
+0002560767 00000 n 
+0002560832 00000 n 
+0002560897 00000 n 
+0002560962 00000 n 
+0002561027 00000 n 
+0002561092 00000 n 
+0002561157 00000 n 
+0002561222 00000 n 
+0002561286 00000 n 
+0002561351 00000 n 
+0002568255 00000 n 
+0002565016 00000 n 
+0002561547 00000 n 
+0002565143 00000 n 
+0002565208 00000 n 
+0002565273 00000 n 
+0002565337 00000 n 
+0002565402 00000 n 
+0002565467 00000 n 
+0002565532 00000 n 
+0002565597 00000 n 
+0002565662 00000 n 
+0002565727 00000 n 
+0002565792 00000 n 
+0002565857 00000 n 
+0002565921 00000 n 
+0002565986 00000 n 
+0002566051 00000 n 
+0002566116 00000 n 
+0002566181 00000 n 
+0002566246 00000 n 
+0002566311 00000 n 
+0002566376 00000 n 
+0002566441 00000 n 
+0002566505 00000 n 
+0002566570 00000 n 
+0002566635 00000 n 
+0002566700 00000 n 
+0002566765 00000 n 
+0002566830 00000 n 
+0002566895 00000 n 
+0002566960 00000 n 
+0002567025 00000 n 
+0002567088 00000 n 
+0002567153 00000 n 
+0002567218 00000 n 
+0002567283 00000 n 
+0002567348 00000 n 
+0002567413 00000 n 
+0002567478 00000 n 
+0002567543 00000 n 
+0002567608 00000 n 
+0002567672 00000 n 
+0002567737 00000 n 
+0002567802 00000 n 
+0002567867 00000 n 
+0002567932 00000 n 
+0002567997 00000 n 
+0002568062 00000 n 
+0002568127 00000 n 
+0002568191 00000 n 
+0002571347 00000 n 
+0002571498 00000 n 
+0002571654 00000 n 
+0002571807 00000 n 
+0002573899 00000 n 
+0002571168 00000 n 
+0002568386 00000 n 
+0002571959 00000 n 
+0002572150 00000 n 
+0002572215 00000 n 
+0002572280 00000 n 
+0002572344 00000 n 
+0002572409 00000 n 
+0002572474 00000 n 
+0002572539 00000 n 
+0002572604 00000 n 
+0002572669 00000 n 
+0002572734 00000 n 
+0002572799 00000 n 
+0002572864 00000 n 
+0002573056 00000 n 
+0002573121 00000 n 
+0002573186 00000 n 
+0002573251 00000 n 
+0002573316 00000 n 
+0002573380 00000 n 
+0002573445 00000 n 
+0002573510 00000 n 
+0002573575 00000 n 
+0002573640 00000 n 
+0002573705 00000 n 
+0002573770 00000 n 
+0002576992 00000 n 
+0002580447 00000 n 
+0002576843 00000 n 
+0002574030 00000 n 
+0002577144 00000 n 
+0002577209 00000 n 
+0002577274 00000 n 
+0002577339 00000 n 
+0002577404 00000 n 
+0002577469 00000 n 
+0002577534 00000 n 
+0002577599 00000 n 
+0002577664 00000 n 
+0002577728 00000 n 
+0002577793 00000 n 
+0002577858 00000 n 
+0002577923 00000 n 
+0002577988 00000 n 
+0002578053 00000 n 
+0002578118 00000 n 
+0002578183 00000 n 
+0002578248 00000 n 
+0002578312 00000 n 
+0002578377 00000 n 
+0002578442 00000 n 
+0002578507 00000 n 
+0002578572 00000 n 
+0002578637 00000 n 
+0002578702 00000 n 
+0002578767 00000 n 
+0002578832 00000 n 
+0002578896 00000 n 
+0002578961 00000 n 
+0002579026 00000 n 
+0002579091 00000 n 
+0002579156 00000 n 
+0002579221 00000 n 
+0002579286 00000 n 
+0002579351 00000 n 
+0002579416 00000 n 
+0002579480 00000 n 
+0002579545 00000 n 
+0002579610 00000 n 
+0002579675 00000 n 
+0002579740 00000 n 
+0002579805 00000 n 
+0002579870 00000 n 
+0002579935 00000 n 
+0002580000 00000 n 
+0002580064 00000 n 
+0002580129 00000 n 
+0002584074 00000 n 
+0002584237 00000 n 
+0002584400 00000 n 
+0002584563 00000 n 
+0002584723 00000 n 
+0002587852 00000 n 
+0002583885 00000 n 
+0002580578 00000 n 
+0002584883 00000 n 
+0002585011 00000 n 
+0002585076 00000 n 
+0002585140 00000 n 
+0002585203 00000 n 
+0002585265 00000 n 
+0002585328 00000 n 
+0002585393 00000 n 
+0002585458 00000 n 
+0002585523 00000 n 
+0002585588 00000 n 
+0002585651 00000 n 
+0002585714 00000 n 
+0002585777 00000 n 
+0002585839 00000 n 
+0002585902 00000 n 
+0002585965 00000 n 
+0002586028 00000 n 
+0002586091 00000 n 
+0002586154 00000 n 
+0002586217 00000 n 
+0002586280 00000 n 
+0002586343 00000 n 
+0002586406 00000 n 
+0002586468 00000 n 
+0002586531 00000 n 
+0002586594 00000 n 
+0002586657 00000 n 
+0002586720 00000 n 
+0002586783 00000 n 
+0002586846 00000 n 
+0002586909 00000 n 
+0002586972 00000 n 
+0002587034 00000 n 
+0002587097 00000 n 
+0002587160 00000 n 
+0002587223 00000 n 
+0002587286 00000 n 
+0002587349 00000 n 
+0002587412 00000 n 
+0002587475 00000 n 
+0002587538 00000 n 
+0002587600 00000 n 
+0002587663 00000 n 
+0002587726 00000 n 
+0002587789 00000 n 
+0002603234 00000 n 
+0002608307 00000 n 
+0002613333 00000 n 
+0002618508 00000 n 
+0002623720 00000 n 
+0002594662 00000 n 
+0002590875 00000 n 
+0002587969 00000 n 
+0002591002 00000 n 
+0002591067 00000 n 
+0002591132 00000 n 
+0002591195 00000 n 
+0002591258 00000 n 
+0002591321 00000 n 
+0002591384 00000 n 
+0002591447 00000 n 
+0002591510 00000 n 
+0002591572 00000 n 
+0002591635 00000 n 
+0002591698 00000 n 
+0002591761 00000 n 
+0002591824 00000 n 
+0002591888 00000 n 
+0002591951 00000 n 
+0002592013 00000 n 
+0002592076 00000 n 
+0002592139 00000 n 
+0002592202 00000 n 
+0002592265 00000 n 
+0002592328 00000 n 
+0002592391 00000 n 
+0002592454 00000 n 
+0002592517 00000 n 
+0002592579 00000 n 
+0002592642 00000 n 
+0002592705 00000 n 
+0002592768 00000 n 
+0002592831 00000 n 
+0002592894 00000 n 
+0002592957 00000 n 
+0002593020 00000 n 
+0002593083 00000 n 
+0002593145 00000 n 
+0002593208 00000 n 
+0002593271 00000 n 
+0002593334 00000 n 
+0002593397 00000 n 
+0002593460 00000 n 
+0002593523 00000 n 
+0002593586 00000 n 
+0002593649 00000 n 
+0002593711 00000 n 
+0002593774 00000 n 
+0002593837 00000 n 
+0002593900 00000 n 
+0002593965 00000 n 
+0002594030 00000 n 
+0002594093 00000 n 
+0002594158 00000 n 
+0002594223 00000 n 
+0002594286 00000 n 
+0002594349 00000 n 
+0002594412 00000 n 
+0002594475 00000 n 
+0002594537 00000 n 
+0002594600 00000 n 
+0003970886 00000 n 
+0002598184 00000 n 
+0002596294 00000 n 
+0002594765 00000 n 
+0002596421 00000 n 
+0002596486 00000 n 
+0002596549 00000 n 
+0002596612 00000 n 
+0002596675 00000 n 
+0002596738 00000 n 
+0002596801 00000 n 
+0002596863 00000 n 
+0002596926 00000 n 
+0002596989 00000 n 
+0002597052 00000 n 
+0002597115 00000 n 
+0002597178 00000 n 
+0002597241 00000 n 
+0002597304 00000 n 
+0002597367 00000 n 
+0002597429 00000 n 
+0002597492 00000 n 
+0002597555 00000 n 
+0002597618 00000 n 
+0002597681 00000 n 
+0002597744 00000 n 
+0002597807 00000 n 
+0002597870 00000 n 
+0002597933 00000 n 
+0002597995 00000 n 
+0002598058 00000 n 
+0002598121 00000 n 
+0002603299 00000 n 
+0002600316 00000 n 
+0002598287 00000 n 
+0002600443 00000 n 
+0002600508 00000 n 
+0002600573 00000 n 
+0002600638 00000 n 
+0002600703 00000 n 
+0002600768 00000 n 
+0002600833 00000 n 
+0002600898 00000 n 
+0002600963 00000 n 
+0002601028 00000 n 
+0002601093 00000 n 
+0002601158 00000 n 
+0002601223 00000 n 
+0002601287 00000 n 
+0002601352 00000 n 
+0002601417 00000 n 
+0002601482 00000 n 
+0002601547 00000 n 
+0002601612 00000 n 
+0002601677 00000 n 
+0002601742 00000 n 
+0002601807 00000 n 
+0002601871 00000 n 
+0002601936 00000 n 
+0002602001 00000 n 
+0002602066 00000 n 
+0002602131 00000 n 
+0002602196 00000 n 
+0002602261 00000 n 
+0002602326 00000 n 
+0002602391 00000 n 
+0002602455 00000 n 
+0002602520 00000 n 
+0002602585 00000 n 
+0002602650 00000 n 
+0002602715 00000 n 
+0002602780 00000 n 
+0002602845 00000 n 
+0002602910 00000 n 
+0002602975 00000 n 
+0002603039 00000 n 
+0002603104 00000 n 
+0002603169 00000 n 
+0002608372 00000 n 
+0002605454 00000 n 
+0002603416 00000 n 
+0002605581 00000 n 
+0002605646 00000 n 
+0002605711 00000 n 
+0002605776 00000 n 
+0002605841 00000 n 
+0002605906 00000 n 
+0002605971 00000 n 
+0002606036 00000 n 
+0002606101 00000 n 
+0002606166 00000 n 
+0002606231 00000 n 
+0002606296 00000 n 
+0002606361 00000 n 
+0002606425 00000 n 
+0002606490 00000 n 
+0002606555 00000 n 
+0002606620 00000 n 
+0002606685 00000 n 
+0002606750 00000 n 
+0002606815 00000 n 
+0002606880 00000 n 
+0002606945 00000 n 
+0002607009 00000 n 
+0002607074 00000 n 
+0002607139 00000 n 
+0002607204 00000 n 
+0002607269 00000 n 
+0002607334 00000 n 
+0002607399 00000 n 
+0002607464 00000 n 
+0002607529 00000 n 
+0002607593 00000 n 
+0002607658 00000 n 
+0002607723 00000 n 
+0002607788 00000 n 
+0002607853 00000 n 
+0002607918 00000 n 
+0002607983 00000 n 
+0002608048 00000 n 
+0002608113 00000 n 
+0002608177 00000 n 
+0002608242 00000 n 
+0002613398 00000 n 
+0002610674 00000 n 
+0002608489 00000 n 
+0002610801 00000 n 
+0002610866 00000 n 
+0002610931 00000 n 
+0002610996 00000 n 
+0002611061 00000 n 
+0002611126 00000 n 
+0002611191 00000 n 
+0002611256 00000 n 
+0002611321 00000 n 
+0002611386 00000 n 
+0002611451 00000 n 
+0002611516 00000 n 
+0002611581 00000 n 
+0002611645 00000 n 
+0002611710 00000 n 
+0002611775 00000 n 
+0002611840 00000 n 
+0002611905 00000 n 
+0002611970 00000 n 
+0002612035 00000 n 
+0002612100 00000 n 
+0002612165 00000 n 
+0002612229 00000 n 
+0002612294 00000 n 
+0002612359 00000 n 
+0002612424 00000 n 
+0002612489 00000 n 
+0002612554 00000 n 
+0002612619 00000 n 
+0002612684 00000 n 
+0002612749 00000 n 
+0002612813 00000 n 
+0002612878 00000 n 
+0002612943 00000 n 
+0002613008 00000 n 
+0002613073 00000 n 
+0002613138 00000 n 
+0002613203 00000 n 
+0002613268 00000 n 
+0002618573 00000 n 
+0002615395 00000 n 
+0002613515 00000 n 
+0002615522 00000 n 
+0002615587 00000 n 
+0002615652 00000 n 
+0002615717 00000 n 
+0002615782 00000 n 
+0002615847 00000 n 
+0002615912 00000 n 
+0002615977 00000 n 
+0002616042 00000 n 
+0002616107 00000 n 
+0002616172 00000 n 
+0002616237 00000 n 
+0002616302 00000 n 
+0002616366 00000 n 
+0002616431 00000 n 
+0002616496 00000 n 
+0002616561 00000 n 
+0002616626 00000 n 
+0002616691 00000 n 
+0002616756 00000 n 
+0002616821 00000 n 
+0002616886 00000 n 
+0002616950 00000 n 
+0002617015 00000 n 
+0002617080 00000 n 
+0002617145 00000 n 
+0002617210 00000 n 
+0002617275 00000 n 
+0002617340 00000 n 
+0002617405 00000 n 
+0002617470 00000 n 
+0002617534 00000 n 
+0002617599 00000 n 
+0002617664 00000 n 
+0002617729 00000 n 
+0002617794 00000 n 
+0002617859 00000 n 
+0002617924 00000 n 
+0002617989 00000 n 
+0002618054 00000 n 
+0002618118 00000 n 
+0002618183 00000 n 
+0002618248 00000 n 
+0002618313 00000 n 
+0002618378 00000 n 
+0002618443 00000 n 
+0002621288 00000 n 
+0002621474 00000 n 
+0002623848 00000 n 
+0002621129 00000 n 
+0002618690 00000 n 
+0002621643 00000 n 
+0002621708 00000 n 
+0002621773 00000 n 
+0002621838 00000 n 
+0002621903 00000 n 
+0002621968 00000 n 
+0002622033 00000 n 
+0002622098 00000 n 
+0002622163 00000 n 
+0002622228 00000 n 
+0002622293 00000 n 
+0002622358 00000 n 
+0002622423 00000 n 
+0002622487 00000 n 
+0002622552 00000 n 
+0002622617 00000 n 
+0002622682 00000 n 
+0002622747 00000 n 
+0002622812 00000 n 
+0002622877 00000 n 
+0002622942 00000 n 
+0002623007 00000 n 
+0002623071 00000 n 
+0002623136 00000 n 
+0002623201 00000 n 
+0002623266 00000 n 
+0002623331 00000 n 
+0002623396 00000 n 
+0002623461 00000 n 
+0002623526 00000 n 
+0002623591 00000 n 
+0002623655 00000 n 
+0003971019 00000 n 
+0002627184 00000 n 
+0002627335 00000 n 
+0002627505 00000 n 
+0002627657 00000 n 
+0002630420 00000 n 
+0002629090 00000 n 
+0002627005 00000 n 
+0002623979 00000 n 
+0002627810 00000 n 
+0002627875 00000 n 
+0002627940 00000 n 
+0002628005 00000 n 
+0002628068 00000 n 
+0002628133 00000 n 
+0002628196 00000 n 
+0002628261 00000 n 
+0002628326 00000 n 
+0002628391 00000 n 
+0002628454 00000 n 
+0002628517 00000 n 
+0002628580 00000 n 
+0002628643 00000 n 
+0002628706 00000 n 
+0002628771 00000 n 
+0002628836 00000 n 
+0002628899 00000 n 
+0002628962 00000 n 
+0002629025 00000 n 
+0003120565 00000 n 
+0003124859 00000 n 
+0002708335 00000 n 
+0002708052 00000 n 
+0002709976 00000 n 
+0002708400 00000 n 
+0002630271 00000 n 
+0002629207 00000 n 
+0002708206 00000 n 
+0002707119 00000 n 
+0002784044 00000 n 
+0002783762 00000 n 
+0002785123 00000 n 
+0002784109 00000 n 
+0002709827 00000 n 
+0002708528 00000 n 
+0002783915 00000 n 
+0002877685 00000 n 
+0002877244 00000 n 
+0002877398 00000 n 
+0002878819 00000 n 
+0002963181 00000 n 
+0002877750 00000 n 
+0002784964 00000 n 
+0002784237 00000 n 
+0002877556 00000 n 
+0002876236 00000 n 
+0003038954 00000 n 
+0003039083 00000 n 
+0003038672 00000 n 
+0003041180 00000 n 
+0003039148 00000 n 
+0002878670 00000 n 
+0002877878 00000 n 
+0003038825 00000 n 
+0002962325 00000 n 
+0003037925 00000 n 
+0003120047 00000 n 
+0003120630 00000 n 
+0003041053 00000 n 
+0003039292 00000 n 
+0003119918 00000 n 
+0003120112 00000 n 
+0003120177 00000 n 
+0003120242 00000 n 
+0003120307 00000 n 
+0003120370 00000 n 
+0003120435 00000 n 
+0003120500 00000 n 
+0003971152 00000 n 
+0003119191 00000 n 
+0003123017 00000 n 
+0003127528 00000 n 
+0003124988 00000 n 
+0003122868 00000 n 
+0003120786 00000 n 
+0003123171 00000 n 
+0003123236 00000 n 
+0003123301 00000 n 
+0003123366 00000 n 
+0003123431 00000 n 
+0003123496 00000 n 
+0003123561 00000 n 
+0003123626 00000 n 
+0003123691 00000 n 
+0003123755 00000 n 
+0003123820 00000 n 
+0003123885 00000 n 
+0003123950 00000 n 
+0003124015 00000 n 
+0003124080 00000 n 
+0003124145 00000 n 
+0003124210 00000 n 
+0003124275 00000 n 
+0003124339 00000 n 
+0003124404 00000 n 
+0003124469 00000 n 
+0003124534 00000 n 
+0003124599 00000 n 
+0003124664 00000 n 
+0003124729 00000 n 
+0003124794 00000 n 
+0003219195 00000 n 
+0003218701 00000 n 
+0003218878 00000 n 
+0003219648 00000 n 
+0003127369 00000 n 
+0003125119 00000 n 
+0003219066 00000 n 
+0003219388 00000 n 
+0003219453 00000 n 
+0003219518 00000 n 
+0003219583 00000 n 
+0003224630 00000 n 
+0003222684 00000 n 
+0003219818 00000 n 
+0003222811 00000 n 
+0003222876 00000 n 
+0003222941 00000 n 
+0003223006 00000 n 
+0003223071 00000 n 
+0003223136 00000 n 
+0003223201 00000 n 
+0003223266 00000 n 
+0003223331 00000 n 
+0003223396 00000 n 
+0003223461 00000 n 
+0003223526 00000 n 
+0003223591 00000 n 
+0003223656 00000 n 
+0003223721 00000 n 
+0003223786 00000 n 
+0003223851 00000 n 
+0003223916 00000 n 
+0003223981 00000 n 
+0003224046 00000 n 
+0003224111 00000 n 
+0003224176 00000 n 
+0003224241 00000 n 
+0003224306 00000 n 
+0003224371 00000 n 
+0003224436 00000 n 
+0003228319 00000 n 
+0003228526 00000 n 
+0003228732 00000 n 
+0003229631 00000 n 
+0003228150 00000 n 
+0003224747 00000 n 
+0003228922 00000 n 
+0003229177 00000 n 
+0003229242 00000 n 
+0003229307 00000 n 
+0003229372 00000 n 
+0003229436 00000 n 
+0003229501 00000 n 
+0003229566 00000 n 
+0003232278 00000 n 
+0003231177 00000 n 
+0003229762 00000 n 
+0003231304 00000 n 
+0003231369 00000 n 
+0003231434 00000 n 
+0003231499 00000 n 
+0003231564 00000 n 
+0003231629 00000 n 
+0003231694 00000 n 
+0003231759 00000 n 
+0003231824 00000 n 
+0003231889 00000 n 
+0003231954 00000 n 
+0003232019 00000 n 
+0003232084 00000 n 
+0003232149 00000 n 
+0003232214 00000 n 
+0003235785 00000 n 
+0003235959 00000 n 
+0003236147 00000 n 
+0003239939 00000 n 
+0003236556 00000 n 
+0003235616 00000 n 
+0003232381 00000 n 
+0003236298 00000 n 
+0003971285 00000 n 
+0003410531 00000 n 
+0003240607 00000 n 
+0003239790 00000 n 
+0003236673 00000 n 
+0003240090 00000 n 
+0003240283 00000 n 
+0003240348 00000 n 
+0003240413 00000 n 
+0003240478 00000 n 
+0003410723 00000 n 
+0003243134 00000 n 
+0003243292 00000 n 
+0003243445 00000 n 
+0003245176 00000 n 
+0003275340 00000 n 
+0003244373 00000 n 
+0003242965 00000 n 
+0003240752 00000 n 
+0003243595 00000 n 
+0003243724 00000 n 
+0003243789 00000 n 
+0003243854 00000 n 
+0003243919 00000 n 
+0003243984 00000 n 
+0003244049 00000 n 
+0003244114 00000 n 
+0003244179 00000 n 
+0003244244 00000 n 
+0003300617 00000 n 
+0003273154 00000 n 
+0003300489 00000 n 
+0003273219 00000 n 
+0003245049 00000 n 
+0003244518 00000 n 
+0003273025 00000 n 
+0003300205 00000 n 
+0003300941 00000 n 
+0003275191 00000 n 
+0003273347 00000 n 
+0003300360 00000 n 
+0003300682 00000 n 
+0003300747 00000 n 
+0003300812 00000 n 
+0003300877 00000 n 
+0003305026 00000 n 
+0003304587 00000 n 
+0003304740 00000 n 
+0003307484 00000 n 
+0003305479 00000 n 
+0003304428 00000 n 
+0003301111 00000 n 
+0003304897 00000 n 
+0003305091 00000 n 
+0003305156 00000 n 
+0003305221 00000 n 
+0003305286 00000 n 
+0003305351 00000 n 
+0003330760 00000 n 
+0003330889 00000 n 
+0003330953 00000 n 
+0003307357 00000 n 
+0003305596 00000 n 
+0003330631 00000 n 
+0003971418 00000 n 
+0003334687 00000 n 
+0003336931 00000 n 
+0003335684 00000 n 
+0003334538 00000 n 
+0003331095 00000 n 
+0003334843 00000 n 
+0003334972 00000 n 
+0003335037 00000 n 
+0003335101 00000 n 
+0003335166 00000 n 
+0003335231 00000 n 
+0003335296 00000 n 
+0003335361 00000 n 
+0003335426 00000 n 
+0003335491 00000 n 
+0003335555 00000 n 
+0003351543 00000 n 
+0003351258 00000 n 
+0003353884 00000 n 
+0003351608 00000 n 
+0003336782 00000 n 
+0003335843 00000 n 
+0003351414 00000 n 
+0003368722 00000 n 
+0003369240 00000 n 
+0003353757 00000 n 
+0003351750 00000 n 
+0003368593 00000 n 
+0003368851 00000 n 
+0003368916 00000 n 
+0003368981 00000 n 
+0003369046 00000 n 
+0003369111 00000 n 
+0003369176 00000 n 
+0003372203 00000 n 
+0003372355 00000 n 
+0003374080 00000 n 
+0003391097 00000 n 
+0003373285 00000 n 
+0003372044 00000 n 
+0003369424 00000 n 
+0003372507 00000 n 
+0003372572 00000 n 
+0003372637 00000 n 
+0003372701 00000 n 
+0003372766 00000 n 
+0003372831 00000 n 
+0003372896 00000 n 
+0003372961 00000 n 
+0003373026 00000 n 
+0003373091 00000 n 
+0003373155 00000 n 
+0003373220 00000 n 
+0003389004 00000 n 
+0003406876 00000 n 
+0003389069 00000 n 
+0003373953 00000 n 
+0003373416 00000 n 
+0003388875 00000 n 
+0003407069 00000 n 
+0003390970 00000 n 
+0003389197 00000 n 
+0003406747 00000 n 
+0003971551 00000 n 
+0003410192 00000 n 
+0003410788 00000 n 
+0003410043 00000 n 
+0003407225 00000 n 
+0003410402 00000 n 
+0003414752 00000 n 
+0003414560 00000 n 
+0003410933 00000 n 
+0003414687 00000 n 
+0003417817 00000 n 
+0003418110 00000 n 
+0003417668 00000 n 
+0003414911 00000 n 
+0003417981 00000 n 
+0003421929 00000 n 
+0003421737 00000 n 
+0003418213 00000 n 
+0003421864 00000 n 
+0003425492 00000 n 
+0003425170 00000 n 
+0003422032 00000 n 
+0003425297 00000 n 
+0003425362 00000 n 
+0003425427 00000 n 
+0003430173 00000 n 
+0003429526 00000 n 
+0003425595 00000 n 
+0003429653 00000 n 
+0003429718 00000 n 
+0003429783 00000 n 
+0003429848 00000 n 
+0003429913 00000 n 
+0003429978 00000 n 
+0003430043 00000 n 
+0003430108 00000 n 
+0003971684 00000 n 
+0003434546 00000 n 
+0003433964 00000 n 
+0003430276 00000 n 
+0003434091 00000 n 
+0003434156 00000 n 
+0003434221 00000 n 
+0003434286 00000 n 
+0003434351 00000 n 
+0003434416 00000 n 
+0003434481 00000 n 
+0003438145 00000 n 
+0003437953 00000 n 
+0003434649 00000 n 
+0003438080 00000 n 
+0003442349 00000 n 
+0003442157 00000 n 
+0003438248 00000 n 
+0003442284 00000 n 
+0003446462 00000 n 
+0003445817 00000 n 
+0003442452 00000 n 
+0003445944 00000 n 
+0003446009 00000 n 
+0003446074 00000 n 
+0003446139 00000 n 
+0003446204 00000 n 
+0003446269 00000 n 
+0003446333 00000 n 
+0003446398 00000 n 
+0003449129 00000 n 
+0003449479 00000 n 
+0003450845 00000 n 
+0003448950 00000 n 
+0003446579 00000 n 
+0003449872 00000 n 
+0003449937 00000 n 
+0003450002 00000 n 
+0003450067 00000 n 
+0003450132 00000 n 
+0003450197 00000 n 
+0003450262 00000 n 
+0003450326 00000 n 
+0003450391 00000 n 
+0003450456 00000 n 
+0003450521 00000 n 
+0003450586 00000 n 
+0003450651 00000 n 
+0003450715 00000 n 
+0003450780 00000 n 
+0003449307 00000 n 
+0003449676 00000 n 
+0003453744 00000 n 
+0003454045 00000 n 
+0003453595 00000 n 
+0003450948 00000 n 
+0003453916 00000 n 
+0003971817 00000 n 
+0003458045 00000 n 
+0003457853 00000 n 
+0003454176 00000 n 
+0003457980 00000 n 
+0003459417 00000 n 
+0003459655 00000 n 
+0003459268 00000 n 
+0003458162 00000 n 
+0003459590 00000 n 
+0003463360 00000 n 
+0003463510 00000 n 
+0003463661 00000 n 
+0003463813 00000 n 
+0003463963 00000 n 
+0003464115 00000 n 
+0003464267 00000 n 
+0003464418 00000 n 
+0003464570 00000 n 
+0003464722 00000 n 
+0003464874 00000 n 
+0003465026 00000 n 
+0003465178 00000 n 
+0003465331 00000 n 
+0003465484 00000 n 
+0003465637 00000 n 
+0003465786 00000 n 
+0003465938 00000 n 
+0003466090 00000 n 
+0003466242 00000 n 
+0003466394 00000 n 
+0003466545 00000 n 
+0003466698 00000 n 
+0003466850 00000 n 
+0003467003 00000 n 
+0003467156 00000 n 
+0003467309 00000 n 
+0003467462 00000 n 
+0003467615 00000 n 
+0003467767 00000 n 
+0003467920 00000 n 
+0003468072 00000 n 
+0003468223 00000 n 
+0003468374 00000 n 
+0003468525 00000 n 
+0003468677 00000 n 
+0003468829 00000 n 
+0003468981 00000 n 
+0003469133 00000 n 
+0003469286 00000 n 
+0003469437 00000 n 
+0003469588 00000 n 
+0003469738 00000 n 
+0003469890 00000 n 
+0003470042 00000 n 
+0003470194 00000 n 
+0003470346 00000 n 
+0003470498 00000 n 
+0003470651 00000 n 
+0003470804 00000 n 
+0003470957 00000 n 
+0003471108 00000 n 
+0003471260 00000 n 
+0003471412 00000 n 
+0003471564 00000 n 
+0003471715 00000 n 
+0003471868 00000 n 
+0003472020 00000 n 
+0003472172 00000 n 
+0003472324 00000 n 
+0003472477 00000 n 
+0003472629 00000 n 
+0003472782 00000 n 
+0003472934 00000 n 
+0003473087 00000 n 
+0003473239 00000 n 
+0003473392 00000 n 
+0003473544 00000 n 
+0003473697 00000 n 
+0003473850 00000 n 
+0003474002 00000 n 
+0003474154 00000 n 
+0003474306 00000 n 
+0003474457 00000 n 
+0003474609 00000 n 
+0003474761 00000 n 
+0003474913 00000 n 
+0003475066 00000 n 
+0003475219 00000 n 
+0003475370 00000 n 
+0003475523 00000 n 
+0003475676 00000 n 
+0003475829 00000 n 
+0003475980 00000 n 
+0003476132 00000 n 
+0003476284 00000 n 
+0003476436 00000 n 
+0003476589 00000 n 
+0003476740 00000 n 
+0003476891 00000 n 
+0003477042 00000 n 
+0003477195 00000 n 
+0003477347 00000 n 
+0003477500 00000 n 
+0003477653 00000 n 
+0003477805 00000 n 
+0003477957 00000 n 
+0003478110 00000 n 
+0003478261 00000 n 
+0003478414 00000 n 
+0003478565 00000 n 
+0003478716 00000 n 
+0003478865 00000 n 
+0003479018 00000 n 
+0003479171 00000 n 
+0003479323 00000 n 
+0003479476 00000 n 
+0003479628 00000 n 
+0003479780 00000 n 
+0003479930 00000 n 
+0003480083 00000 n 
+0003480236 00000 n 
+0003480387 00000 n 
+0003480540 00000 n 
+0003480693 00000 n 
+0003480845 00000 n 
+0003480998 00000 n 
+0003481150 00000 n 
+0003481303 00000 n 
+0003481456 00000 n 
+0003481608 00000 n 
+0003481761 00000 n 
+0003481914 00000 n 
+0003482067 00000 n 
+0003482220 00000 n 
+0003482373 00000 n 
+0003482526 00000 n 
+0003482679 00000 n 
+0003482832 00000 n 
+0003482984 00000 n 
+0003483137 00000 n 
+0003483290 00000 n 
+0003483443 00000 n 
+0003483596 00000 n 
+0003483749 00000 n 
+0003483902 00000 n 
+0003484055 00000 n 
+0003484208 00000 n 
+0003484361 00000 n 
+0003484513 00000 n 
+0003484666 00000 n 
+0003484819 00000 n 
+0003484972 00000 n 
+0003485125 00000 n 
+0003485278 00000 n 
+0003485430 00000 n 
+0003485583 00000 n 
+0003485736 00000 n 
+0003485889 00000 n 
+0003486041 00000 n 
+0003486192 00000 n 
+0003486344 00000 n 
+0003486496 00000 n 
+0003486649 00000 n 
+0003486802 00000 n 
+0003486955 00000 n 
+0003487108 00000 n 
+0003487261 00000 n 
+0003487414 00000 n 
+0003487564 00000 n 
+0003487716 00000 n 
+0003487867 00000 n 
+0003488019 00000 n 
+0003488171 00000 n 
+0003488322 00000 n 
+0003488474 00000 n 
+0003488626 00000 n 
+0003492748 00000 n 
+0003488905 00000 n 
+0003461551 00000 n 
+0003459772 00000 n 
+0003488777 00000 n 
+0003492901 00000 n 
+0003493054 00000 n 
+0003493205 00000 n 
+0003493357 00000 n 
+0003493509 00000 n 
+0003493662 00000 n 
+0003493815 00000 n 
+0003493965 00000 n 
+0003494118 00000 n 
+0003494270 00000 n 
+0003494423 00000 n 
+0003494575 00000 n 
+0003494727 00000 n 
+0003494880 00000 n 
+0003495031 00000 n 
+0003495183 00000 n 
+0003495335 00000 n 
+0003495487 00000 n 
+0003495639 00000 n 
+0003495790 00000 n 
+0003495942 00000 n 
+0003496094 00000 n 
+0003496246 00000 n 
+0003496398 00000 n 
+0003496548 00000 n 
+0003496701 00000 n 
+0003496853 00000 n 
+0003497006 00000 n 
+0003497158 00000 n 
+0003497310 00000 n 
+0003497462 00000 n 
+0003497614 00000 n 
+0003497766 00000 n 
+0003497919 00000 n 
+0003498072 00000 n 
+0003498224 00000 n 
+0003498376 00000 n 
+0003498528 00000 n 
+0003498681 00000 n 
+0003498834 00000 n 
+0003498986 00000 n 
+0003499138 00000 n 
+0003499291 00000 n 
+0003499442 00000 n 
+0003499594 00000 n 
+0003499746 00000 n 
+0003499898 00000 n 
+0003500049 00000 n 
+0003500201 00000 n 
+0003500352 00000 n 
+0003500500 00000 n 
+0003500653 00000 n 
+0003500806 00000 n 
+0003500958 00000 n 
+0003501110 00000 n 
+0003501262 00000 n 
+0003501414 00000 n 
+0003501567 00000 n 
+0003501717 00000 n 
+0003501868 00000 n 
+0003502021 00000 n 
+0003502174 00000 n 
+0003502327 00000 n 
+0003502480 00000 n 
+0003502633 00000 n 
+0003502786 00000 n 
+0003502939 00000 n 
+0003503091 00000 n 
+0003503242 00000 n 
+0003503395 00000 n 
+0003503547 00000 n 
+0003503699 00000 n 
+0003503852 00000 n 
+0003504005 00000 n 
+0003504157 00000 n 
+0003504308 00000 n 
+0003504460 00000 n 
+0003504608 00000 n 
+0003504761 00000 n 
+0003504913 00000 n 
+0003505065 00000 n 
+0003505217 00000 n 
+0003505369 00000 n 
+0003505520 00000 n 
+0003505672 00000 n 
+0003505823 00000 n 
+0003505976 00000 n 
+0003506129 00000 n 
+0003506282 00000 n 
+0003506434 00000 n 
+0003506587 00000 n 
+0003506740 00000 n 
+0003506893 00000 n 
+0003507044 00000 n 
+0003507197 00000 n 
+0003507349 00000 n 
+0003507501 00000 n 
+0003507653 00000 n 
+0003507804 00000 n 
+0003507956 00000 n 
+0003508107 00000 n 
+0003508259 00000 n 
+0003508412 00000 n 
+0003508565 00000 n 
+0003508718 00000 n 
+0003508871 00000 n 
+0003509022 00000 n 
+0003509175 00000 n 
+0003509328 00000 n 
+0003509481 00000 n 
+0003509633 00000 n 
+0003509786 00000 n 
+0003509939 00000 n 
+0003510092 00000 n 
+0003510245 00000 n 
+0003510398 00000 n 
+0003510551 00000 n 
+0003510704 00000 n 
+0003510856 00000 n 
+0003511009 00000 n 
+0003511162 00000 n 
+0003511315 00000 n 
+0003511468 00000 n 
+0003511621 00000 n 
+0003511774 00000 n 
+0003511925 00000 n 
+0003512078 00000 n 
+0003512231 00000 n 
+0003512383 00000 n 
+0003512534 00000 n 
+0003512685 00000 n 
+0003512837 00000 n 
+0003512989 00000 n 
+0003513142 00000 n 
+0003513293 00000 n 
+0003513443 00000 n 
+0003513595 00000 n 
+0003513747 00000 n 
+0003513899 00000 n 
+0003514050 00000 n 
+0003514203 00000 n 
+0003514356 00000 n 
+0003514508 00000 n 
+0003514660 00000 n 
+0003514813 00000 n 
+0003514965 00000 n 
+0003515117 00000 n 
+0003515270 00000 n 
+0003515422 00000 n 
+0003515574 00000 n 
+0003515727 00000 n 
+0003515879 00000 n 
+0003516032 00000 n 
+0003516185 00000 n 
+0003516337 00000 n 
+0003516489 00000 n 
+0003520520 00000 n 
+0003516704 00000 n 
+0003491039 00000 n 
+0003489036 00000 n 
+0003516639 00000 n 
+0003520672 00000 n 
+0003520825 00000 n 
+0003520978 00000 n 
+0003521131 00000 n 
+0003521283 00000 n 
+0003521435 00000 n 
+0003521587 00000 n 
+0003521740 00000 n 
+0003521892 00000 n 
+0003522044 00000 n 
+0003522197 00000 n 
+0003522350 00000 n 
+0003522502 00000 n 
+0003522654 00000 n 
+0003522807 00000 n 
+0003522960 00000 n 
+0003523113 00000 n 
+0003523266 00000 n 
+0003523418 00000 n 
+0003523571 00000 n 
+0003523723 00000 n 
+0003523876 00000 n 
+0003524029 00000 n 
+0003524180 00000 n 
+0003524333 00000 n 
+0003524486 00000 n 
+0003524637 00000 n 
+0003524790 00000 n 
+0003524943 00000 n 
+0003525096 00000 n 
+0003525249 00000 n 
+0003525398 00000 n 
+0003525549 00000 n 
+0003525700 00000 n 
+0003525852 00000 n 
+0003526003 00000 n 
+0003526153 00000 n 
+0003526306 00000 n 
+0003526459 00000 n 
+0003526610 00000 n 
+0003526763 00000 n 
+0003526916 00000 n 
+0003527068 00000 n 
+0003527220 00000 n 
+0003527373 00000 n 
+0003527524 00000 n 
+0003527677 00000 n 
+0003527825 00000 n 
+0003527975 00000 n 
+0003528126 00000 n 
+0003528275 00000 n 
+0003528426 00000 n 
+0003528577 00000 n 
+0003528728 00000 n 
+0003528879 00000 n 
+0003529029 00000 n 
+0003529181 00000 n 
+0003529332 00000 n 
+0003529484 00000 n 
+0003529636 00000 n 
+0003529788 00000 n 
+0003529941 00000 n 
+0003530090 00000 n 
+0003530242 00000 n 
+0003530395 00000 n 
+0003530543 00000 n 
+0003530694 00000 n 
+0003530846 00000 n 
+0003530998 00000 n 
+0003531150 00000 n 
+0003531302 00000 n 
+0003531454 00000 n 
+0003531606 00000 n 
+0003531759 00000 n 
+0003531910 00000 n 
+0003532062 00000 n 
+0003532215 00000 n 
+0003532368 00000 n 
+0003532519 00000 n 
+0003532670 00000 n 
+0003532822 00000 n 
+0003532974 00000 n 
+0003533124 00000 n 
+0003533275 00000 n 
+0003533428 00000 n 
+0003533581 00000 n 
+0003533734 00000 n 
+0003533887 00000 n 
+0003534037 00000 n 
+0003534189 00000 n 
+0003534339 00000 n 
+0003534491 00000 n 
+0003534643 00000 n 
+0003534796 00000 n 
+0003534948 00000 n 
+0003535101 00000 n 
+0003535254 00000 n 
+0003535404 00000 n 
+0003535557 00000 n 
+0003535709 00000 n 
+0003535862 00000 n 
+0003536014 00000 n 
+0003536167 00000 n 
+0003536320 00000 n 
+0003536473 00000 n 
+0003536624 00000 n 
+0003536776 00000 n 
+0003536928 00000 n 
+0003537080 00000 n 
+0003537232 00000 n 
+0003537385 00000 n 
+0003537537 00000 n 
+0003537690 00000 n 
+0003537843 00000 n 
+0003537995 00000 n 
+0003538148 00000 n 
+0003538301 00000 n 
+0003538453 00000 n 
+0003538605 00000 n 
+0003538757 00000 n 
+0003538909 00000 n 
+0003539061 00000 n 
+0003539212 00000 n 
+0003539364 00000 n 
+0003539517 00000 n 
+0003539670 00000 n 
+0003539822 00000 n 
+0003539975 00000 n 
+0003540128 00000 n 
+0003540279 00000 n 
+0003540432 00000 n 
+0003540584 00000 n 
+0003540737 00000 n 
+0003540889 00000 n 
+0003541040 00000 n 
+0003541192 00000 n 
+0003541343 00000 n 
+0003541495 00000 n 
+0003541647 00000 n 
+0003541799 00000 n 
+0003541950 00000 n 
+0003542103 00000 n 
+0003542255 00000 n 
+0003542407 00000 n 
+0003542560 00000 n 
+0003542713 00000 n 
+0003542866 00000 n 
+0003543019 00000 n 
+0003543172 00000 n 
+0003543325 00000 n 
+0003543478 00000 n 
+0003543628 00000 n 
+0003543779 00000 n 
+0003543929 00000 n 
+0003544077 00000 n 
+0003544227 00000 n 
+0003544378 00000 n 
+0003544529 00000 n 
+0003544680 00000 n 
+0003548218 00000 n 
+0003544894 00000 n 
+0003518781 00000 n 
+0003516821 00000 n 
+0003544829 00000 n 
+0003548370 00000 n 
+0003548523 00000 n 
+0003548676 00000 n 
+0003548829 00000 n 
+0003548982 00000 n 
+0003549135 00000 n 
+0003549287 00000 n 
+0003549440 00000 n 
+0003549590 00000 n 
+0003549741 00000 n 
+0003549894 00000 n 
+0003550046 00000 n 
+0003550198 00000 n 
+0003550351 00000 n 
+0003550501 00000 n 
+0003550653 00000 n 
+0003550805 00000 n 
+0003550958 00000 n 
+0003551110 00000 n 
+0003551263 00000 n 
+0003551416 00000 n 
+0003551569 00000 n 
+0003551721 00000 n 
+0003551874 00000 n 
+0003552027 00000 n 
+0003552179 00000 n 
+0003552332 00000 n 
+0003552485 00000 n 
+0003552638 00000 n 
+0003552791 00000 n 
+0003552944 00000 n 
+0003553097 00000 n 
+0003553250 00000 n 
+0003553402 00000 n 
+0003553555 00000 n 
+0003553707 00000 n 
+0003553860 00000 n 
+0003554013 00000 n 
+0003554166 00000 n 
+0003554318 00000 n 
+0003554471 00000 n 
+0003554623 00000 n 
+0003554776 00000 n 
+0003554929 00000 n 
+0003555082 00000 n 
+0003555235 00000 n 
+0003555388 00000 n 
+0003555541 00000 n 
+0003555693 00000 n 
+0003555845 00000 n 
+0003555998 00000 n 
+0003556150 00000 n 
+0003556302 00000 n 
+0003556455 00000 n 
+0003556608 00000 n 
+0003556761 00000 n 
+0003556914 00000 n 
+0003557066 00000 n 
+0003557219 00000 n 
+0003557372 00000 n 
+0003557522 00000 n 
+0003557673 00000 n 
+0003557824 00000 n 
+0003557976 00000 n 
+0003558129 00000 n 
+0003558282 00000 n 
+0003558431 00000 n 
+0003558581 00000 n 
+0003558732 00000 n 
+0003558885 00000 n 
+0003559037 00000 n 
+0003559188 00000 n 
+0003559340 00000 n 
+0003559493 00000 n 
+0003559645 00000 n 
+0003559798 00000 n 
+0003559951 00000 n 
+0003560103 00000 n 
+0003560256 00000 n 
+0003560408 00000 n 
+0003560560 00000 n 
+0003560712 00000 n 
+0003560865 00000 n 
+0003561018 00000 n 
+0003561170 00000 n 
+0003561322 00000 n 
+0003561475 00000 n 
+0003561628 00000 n 
+0003561780 00000 n 
+0003561932 00000 n 
+0003562085 00000 n 
+0003562237 00000 n 
+0003562390 00000 n 
+0003562542 00000 n 
+0003562695 00000 n 
+0003562847 00000 n 
+0003562999 00000 n 
+0003563152 00000 n 
+0003563305 00000 n 
+0003563458 00000 n 
+0003563611 00000 n 
+0003563763 00000 n 
+0003563916 00000 n 
+0003564069 00000 n 
+0003564221 00000 n 
+0003564374 00000 n 
+0003564524 00000 n 
+0003564676 00000 n 
+0003564827 00000 n 
+0003564979 00000 n 
+0003565131 00000 n 
+0003565282 00000 n 
+0003565435 00000 n 
+0003565587 00000 n 
+0003565739 00000 n 
+0003565888 00000 n 
+0003566037 00000 n 
+0003566190 00000 n 
+0003566343 00000 n 
+0003566494 00000 n 
+0003566646 00000 n 
+0003566799 00000 n 
+0003566950 00000 n 
+0003567100 00000 n 
+0003567250 00000 n 
+0003571213 00000 n 
+0003567465 00000 n 
+0003546819 00000 n 
+0003545011 00000 n 
+0003567400 00000 n 
+0003971950 00000 n 
+0003571366 00000 n 
+0003571517 00000 n 
+0003571670 00000 n 
+0003571820 00000 n 
+0003571972 00000 n 
+0003572125 00000 n 
+0003572276 00000 n 
+0003572427 00000 n 
+0003572579 00000 n 
+0003572732 00000 n 
+0003572883 00000 n 
+0003573035 00000 n 
+0003573187 00000 n 
+0003573340 00000 n 
+0003573491 00000 n 
+0003573640 00000 n 
+0003573791 00000 n 
+0003573943 00000 n 
+0003574096 00000 n 
+0003574247 00000 n 
+0003574398 00000 n 
+0003574551 00000 n 
+0003574704 00000 n 
+0003574856 00000 n 
+0003575008 00000 n 
+0003575160 00000 n 
+0003575313 00000 n 
+0003575464 00000 n 
+0003575617 00000 n 
+0003575769 00000 n 
+0003575922 00000 n 
+0003576075 00000 n 
+0003576227 00000 n 
+0003576378 00000 n 
+0003576530 00000 n 
+0003576681 00000 n 
+0003576833 00000 n 
+0003576985 00000 n 
+0003577137 00000 n 
+0003577289 00000 n 
+0003577441 00000 n 
+0003577593 00000 n 
+0003577745 00000 n 
+0003577897 00000 n 
+0003578050 00000 n 
+0003578203 00000 n 
+0003578356 00000 n 
+0003578507 00000 n 
+0003578659 00000 n 
+0003578812 00000 n 
+0003578965 00000 n 
+0003579117 00000 n 
+0003579267 00000 n 
+0003579418 00000 n 
+0003579570 00000 n 
+0003579721 00000 n 
+0003579873 00000 n 
+0003580025 00000 n 
+0003580176 00000 n 
+0003580329 00000 n 
+0003580482 00000 n 
+0003580635 00000 n 
+0003580788 00000 n 
+0003580940 00000 n 
+0003581092 00000 n 
+0003581244 00000 n 
+0003581394 00000 n 
+0003581546 00000 n 
+0003581698 00000 n 
+0003581851 00000 n 
+0003582003 00000 n 
+0003582155 00000 n 
+0003582307 00000 n 
+0003582460 00000 n 
+0003582612 00000 n 
+0003582763 00000 n 
+0003582915 00000 n 
+0003583067 00000 n 
+0003583218 00000 n 
+0003583370 00000 n 
+0003583523 00000 n 
+0003583676 00000 n 
+0003583829 00000 n 
+0003583982 00000 n 
+0003584135 00000 n 
+0003584288 00000 n 
+0003584440 00000 n 
+0003584592 00000 n 
+0003584745 00000 n 
+0003584897 00000 n 
+0003585049 00000 n 
+0003585199 00000 n 
+0003585352 00000 n 
+0003585504 00000 n 
+0003585657 00000 n 
+0003585810 00000 n 
+0003585963 00000 n 
+0003586116 00000 n 
+0003586268 00000 n 
+0003586421 00000 n 
+0003586573 00000 n 
+0003586725 00000 n 
+0003586878 00000 n 
+0003587031 00000 n 
+0003587184 00000 n 
+0003587337 00000 n 
+0003587488 00000 n 
+0003587640 00000 n 
+0003587793 00000 n 
+0003587945 00000 n 
+0003588096 00000 n 
+0003588245 00000 n 
+0003588397 00000 n 
+0003588549 00000 n 
+0003588700 00000 n 
+0003588851 00000 n 
+0003589004 00000 n 
+0003589157 00000 n 
+0003589309 00000 n 
+0003589461 00000 n 
+0003589612 00000 n 
+0003589764 00000 n 
+0003589916 00000 n 
+0003590068 00000 n 
+0003590221 00000 n 
+0003590374 00000 n 
+0003590527 00000 n 
+0003590680 00000 n 
+0003590833 00000 n 
+0003590985 00000 n 
+0003591137 00000 n 
+0003591289 00000 n 
+0003591442 00000 n 
+0003591595 00000 n 
+0003591748 00000 n 
+0003591900 00000 n 
+0003592053 00000 n 
+0003592205 00000 n 
+0003592358 00000 n 
+0003592511 00000 n 
+0003592662 00000 n 
+0003592814 00000 n 
+0003592966 00000 n 
+0003593119 00000 n 
+0003593271 00000 n 
+0003593424 00000 n 
+0003593576 00000 n 
+0003593727 00000 n 
+0003593880 00000 n 
+0003594033 00000 n 
+0003594186 00000 n 
+0003594338 00000 n 
+0003594489 00000 n 
+0003594641 00000 n 
+0003594793 00000 n 
+0003594945 00000 n 
+0003599025 00000 n 
+0003595159 00000 n 
+0003569504 00000 n 
+0003567582 00000 n 
+0003595094 00000 n 
+0003599177 00000 n 
+0003599328 00000 n 
+0003599480 00000 n 
+0003599633 00000 n 
+0003599786 00000 n 
+0003599939 00000 n 
+0003600091 00000 n 
+0003600242 00000 n 
+0003600393 00000 n 
+0003600544 00000 n 
+0003600695 00000 n 
+0003600845 00000 n 
+0003600996 00000 n 
+0003601147 00000 n 
+0003601299 00000 n 
+0003601450 00000 n 
+0003601603 00000 n 
+0003601754 00000 n 
+0003601906 00000 n 
+0003602059 00000 n 
+0003602212 00000 n 
+0003602365 00000 n 
+0003602518 00000 n 
+0003602671 00000 n 
+0003602823 00000 n 
+0003602976 00000 n 
+0003603128 00000 n 
+0003603281 00000 n 
+0003603434 00000 n 
+0003603587 00000 n 
+0003603739 00000 n 
+0003603891 00000 n 
+0003604044 00000 n 
+0003604196 00000 n 
+0003604348 00000 n 
+0003604500 00000 n 
+0003604651 00000 n 
+0003604799 00000 n 
+0003604949 00000 n 
+0003605099 00000 n 
+0003605250 00000 n 
+0003605401 00000 n 
+0003605553 00000 n 
+0003605706 00000 n 
+0003605859 00000 n 
+0003606012 00000 n 
+0003606165 00000 n 
+0003606318 00000 n 
+0003606470 00000 n 
+0003606623 00000 n 
+0003606772 00000 n 
+0003606922 00000 n 
+0003607073 00000 n 
+0003607224 00000 n 
+0003607376 00000 n 
+0003607528 00000 n 
+0003607680 00000 n 
+0003607831 00000 n 
+0003607983 00000 n 
+0003608134 00000 n 
+0003608286 00000 n 
+0003608438 00000 n 
+0003608591 00000 n 
+0003608744 00000 n 
+0003608896 00000 n 
+0003609049 00000 n 
+0003609202 00000 n 
+0003609355 00000 n 
+0003609508 00000 n 
+0003609661 00000 n 
+0003609814 00000 n 
+0003609965 00000 n 
+0003610117 00000 n 
+0003610269 00000 n 
+0003610422 00000 n 
+0003610575 00000 n 
+0003610728 00000 n 
+0003610881 00000 n 
+0003611033 00000 n 
+0003611184 00000 n 
+0003611337 00000 n 
+0003611490 00000 n 
+0003611643 00000 n 
+0003611796 00000 n 
+0003611949 00000 n 
+0003612099 00000 n 
+0003612250 00000 n 
+0003612399 00000 n 
+0003612552 00000 n 
+0003612703 00000 n 
+0003612856 00000 n 
+0003613009 00000 n 
+0003613162 00000 n 
+0003613314 00000 n 
+0003613466 00000 n 
+0003613619 00000 n 
+0003613770 00000 n 
+0003613923 00000 n 
+0003614076 00000 n 
+0003614229 00000 n 
+0003614382 00000 n 
+0003614535 00000 n 
+0003614688 00000 n 
+0003614841 00000 n 
+0003614994 00000 n 
+0003615147 00000 n 
+0003615299 00000 n 
+0003615451 00000 n 
+0003615603 00000 n 
+0003615756 00000 n 
+0003615908 00000 n 
+0003616061 00000 n 
+0003616213 00000 n 
+0003616366 00000 n 
+0003616518 00000 n 
+0003616671 00000 n 
+0003616823 00000 n 
+0003616976 00000 n 
+0003617129 00000 n 
+0003617282 00000 n 
+0003617435 00000 n 
+0003617587 00000 n 
+0003617738 00000 n 
+0003617888 00000 n 
+0003618040 00000 n 
+0003618193 00000 n 
+0003618346 00000 n 
+0003618499 00000 n 
+0003618652 00000 n 
+0003618805 00000 n 
+0003618957 00000 n 
+0003619109 00000 n 
+0003619260 00000 n 
+0003619413 00000 n 
+0003619566 00000 n 
+0003619718 00000 n 
+0003619870 00000 n 
+0003620021 00000 n 
+0003620172 00000 n 
+0003620324 00000 n 
+0003620476 00000 n 
+0003620629 00000 n 
+0003620782 00000 n 
+0003620934 00000 n 
+0003621085 00000 n 
+0003621236 00000 n 
+0003621389 00000 n 
+0003621542 00000 n 
+0003621693 00000 n 
+0003621846 00000 n 
+0003621998 00000 n 
+0003622149 00000 n 
+0003622300 00000 n 
+0003622451 00000 n 
+0003622603 00000 n 
+0003622756 00000 n 
+0003626593 00000 n 
+0003622974 00000 n 
+0003597316 00000 n 
+0003595276 00000 n 
+0003622909 00000 n 
+0003626744 00000 n 
+0003626895 00000 n 
+0003627047 00000 n 
+0003627199 00000 n 
+0003627352 00000 n 
+0003627505 00000 n 
+0003627657 00000 n 
+0003627808 00000 n 
+0003627961 00000 n 
+0003628114 00000 n 
+0003628266 00000 n 
+0003628418 00000 n 
+0003628569 00000 n 
+0003628721 00000 n 
+0003628874 00000 n 
+0003629026 00000 n 
+0003629177 00000 n 
+0003629329 00000 n 
+0003629481 00000 n 
+0003629633 00000 n 
+0003629786 00000 n 
+0003629938 00000 n 
+0003630090 00000 n 
+0003630243 00000 n 
+0003630395 00000 n 
+0003630547 00000 n 
+0003630699 00000 n 
+0003630851 00000 n 
+0003631003 00000 n 
+0003631156 00000 n 
+0003631309 00000 n 
+0003631462 00000 n 
+0003631613 00000 n 
+0003631764 00000 n 
+0003631916 00000 n 
+0003632068 00000 n 
+0003632219 00000 n 
+0003632372 00000 n 
+0003632523 00000 n 
+0003632675 00000 n 
+0003632826 00000 n 
+0003632979 00000 n 
+0003633132 00000 n 
+0003633285 00000 n 
+0003633438 00000 n 
+0003633590 00000 n 
+0003633741 00000 n 
+0003633893 00000 n 
+0003634044 00000 n 
+0003634196 00000 n 
+0003634348 00000 n 
+0003634500 00000 n 
+0003634652 00000 n 
+0003634803 00000 n 
+0003634954 00000 n 
+0003635106 00000 n 
+0003635259 00000 n 
+0003635411 00000 n 
+0003635564 00000 n 
+0003635717 00000 n 
+0003635869 00000 n 
+0003636022 00000 n 
+0003636175 00000 n 
+0003636327 00000 n 
+0003636477 00000 n 
+0003636630 00000 n 
+0003636782 00000 n 
+0003636935 00000 n 
+0003637088 00000 n 
+0003637240 00000 n 
+0003637392 00000 n 
+0003637543 00000 n 
+0003637693 00000 n 
+0003637845 00000 n 
+0003637998 00000 n 
+0003638149 00000 n 
+0003638302 00000 n 
+0003638455 00000 n 
+0003638607 00000 n 
+0003638758 00000 n 
+0003638911 00000 n 
+0003639062 00000 n 
+0003639214 00000 n 
+0003639366 00000 n 
+0003639516 00000 n 
+0003639668 00000 n 
+0003639820 00000 n 
+0003639973 00000 n 
+0003640124 00000 n 
+0003640275 00000 n 
+0003640427 00000 n 
+0003640579 00000 n 
+0003640730 00000 n 
+0003640882 00000 n 
+0003641034 00000 n 
+0003641187 00000 n 
+0003641339 00000 n 
+0003641491 00000 n 
+0003641644 00000 n 
+0003641797 00000 n 
+0003641948 00000 n 
+0003642100 00000 n 
+0003642253 00000 n 
+0003642405 00000 n 
+0003642556 00000 n 
+0003642708 00000 n 
+0003642861 00000 n 
+0003643013 00000 n 
+0003643166 00000 n 
+0003643317 00000 n 
+0003643470 00000 n 
+0003643623 00000 n 
+0003643776 00000 n 
+0003643928 00000 n 
+0003644081 00000 n 
+0003644234 00000 n 
+0003644387 00000 n 
+0003644540 00000 n 
+0003644693 00000 n 
+0003644846 00000 n 
+0003644999 00000 n 
+0003645152 00000 n 
+0003645305 00000 n 
+0003645458 00000 n 
+0003645609 00000 n 
+0003645761 00000 n 
+0003645914 00000 n 
+0003646066 00000 n 
+0003646219 00000 n 
+0003646371 00000 n 
+0003646524 00000 n 
+0003646676 00000 n 
+0003646828 00000 n 
+0003646980 00000 n 
+0003647132 00000 n 
+0003647285 00000 n 
+0003647438 00000 n 
+0003647589 00000 n 
+0003647742 00000 n 
+0003647892 00000 n 
+0003648044 00000 n 
+0003648195 00000 n 
+0003648347 00000 n 
+0003648499 00000 n 
+0003652553 00000 n 
+0003652705 00000 n 
+0003652856 00000 n 
+0003648714 00000 n 
+0003625004 00000 n 
+0003623091 00000 n 
+0003648649 00000 n 
+0003653008 00000 n 
+0003653160 00000 n 
+0003653313 00000 n 
+0003653466 00000 n 
+0003653618 00000 n 
+0003653770 00000 n 
+0003653923 00000 n 
+0003654075 00000 n 
+0003654227 00000 n 
+0003654378 00000 n 
+0003654530 00000 n 
+0003654682 00000 n 
+0003654835 00000 n 
+0003654987 00000 n 
+0003655140 00000 n 
+0003655293 00000 n 
+0003655445 00000 n 
+0003655597 00000 n 
+0003655748 00000 n 
+0003655901 00000 n 
+0003656053 00000 n 
+0003656206 00000 n 
+0003656359 00000 n 
+0003656511 00000 n 
+0003656662 00000 n 
+0003656813 00000 n 
+0003656966 00000 n 
+0003657118 00000 n 
+0003657270 00000 n 
+0003657421 00000 n 
+0003657574 00000 n 
+0003657727 00000 n 
+0003657879 00000 n 
+0003658031 00000 n 
+0003658182 00000 n 
+0003658333 00000 n 
+0003658486 00000 n 
+0003658638 00000 n 
+0003658790 00000 n 
+0003658943 00000 n 
+0003659094 00000 n 
+0003659245 00000 n 
+0003659397 00000 n 
+0003659550 00000 n 
+0003659702 00000 n 
+0003659855 00000 n 
+0003660008 00000 n 
+0003660161 00000 n 
+0003660312 00000 n 
+0003660465 00000 n 
+0003660618 00000 n 
+0003660769 00000 n 
+0003660921 00000 n 
+0003661072 00000 n 
+0003661221 00000 n 
+0003661371 00000 n 
+0003661522 00000 n 
+0003661675 00000 n 
+0003661828 00000 n 
+0003661981 00000 n 
+0003662134 00000 n 
+0003662284 00000 n 
+0003662434 00000 n 
+0003662585 00000 n 
+0003662735 00000 n 
+0003662887 00000 n 
+0003663039 00000 n 
+0003663191 00000 n 
+0003663343 00000 n 
+0003663496 00000 n 
+0003663649 00000 n 
+0003663802 00000 n 
+0003663952 00000 n 
+0003664104 00000 n 
+0003664255 00000 n 
+0003664407 00000 n 
+0003664559 00000 n 
+0003664711 00000 n 
+0003664862 00000 n 
+0003665014 00000 n 
+0003665165 00000 n 
+0003665318 00000 n 
+0003665470 00000 n 
+0003665623 00000 n 
+0003665776 00000 n 
+0003665929 00000 n 
+0003666082 00000 n 
+0003666235 00000 n 
+0003666386 00000 n 
+0003666539 00000 n 
+0003666692 00000 n 
+0003666844 00000 n 
+0003666997 00000 n 
+0003667148 00000 n 
+0003667301 00000 n 
+0003667453 00000 n 
+0003667605 00000 n 
+0003667757 00000 n 
+0003667910 00000 n 
+0003668062 00000 n 
+0003668214 00000 n 
+0003668367 00000 n 
+0003668518 00000 n 
+0003668667 00000 n 
+0003668819 00000 n 
+0003668972 00000 n 
+0003669125 00000 n 
+0003669278 00000 n 
+0003669431 00000 n 
+0003669583 00000 n 
+0003669736 00000 n 
+0003669889 00000 n 
+0003670042 00000 n 
+0003670195 00000 n 
+0003670348 00000 n 
+0003670501 00000 n 
+0003670653 00000 n 
+0003670806 00000 n 
+0003670957 00000 n 
+0003671109 00000 n 
+0003671261 00000 n 
+0003671414 00000 n 
+0003671567 00000 n 
+0003671720 00000 n 
+0003671872 00000 n 
+0003672023 00000 n 
+0003672175 00000 n 
+0003672326 00000 n 
+0003672479 00000 n 
+0003672632 00000 n 
+0003672784 00000 n 
+0003672937 00000 n 
+0003673090 00000 n 
+0003673241 00000 n 
+0003673392 00000 n 
+0003673545 00000 n 
+0003673698 00000 n 
+0003673851 00000 n 
+0003674004 00000 n 
+0003674155 00000 n 
+0003674308 00000 n 
+0003674459 00000 n 
+0003674611 00000 n 
+0003674763 00000 n 
+0003674916 00000 n 
+0003675069 00000 n 
+0003675221 00000 n 
+0003675374 00000 n 
+0003675527 00000 n 
+0003675679 00000 n 
+0003675832 00000 n 
+0003675984 00000 n 
+0003676135 00000 n 
+0003680307 00000 n 
+0003676350 00000 n 
+0003650854 00000 n 
+0003648831 00000 n 
+0003676285 00000 n 
+0003680460 00000 n 
+0003680612 00000 n 
+0003680764 00000 n 
+0003680916 00000 n 
+0003681068 00000 n 
+0003681220 00000 n 
+0003681372 00000 n 
+0003681525 00000 n 
+0003681678 00000 n 
+0003681831 00000 n 
+0003681983 00000 n 
+0003682136 00000 n 
+0003682288 00000 n 
+0003682441 00000 n 
+0003682594 00000 n 
+0003682746 00000 n 
+0003682899 00000 n 
+0003683051 00000 n 
+0003683200 00000 n 
+0003683350 00000 n 
+0003683502 00000 n 
+0003683654 00000 n 
+0003683806 00000 n 
+0003683958 00000 n 
+0003684109 00000 n 
+0003684262 00000 n 
+0003684413 00000 n 
+0003684565 00000 n 
+0003684717 00000 n 
+0003684869 00000 n 
+0003685022 00000 n 
+0003685175 00000 n 
+0003685328 00000 n 
+0003685481 00000 n 
+0003685630 00000 n 
+0003685781 00000 n 
+0003685933 00000 n 
+0003686085 00000 n 
+0003686236 00000 n 
+0003686389 00000 n 
+0003686541 00000 n 
+0003686694 00000 n 
+0003686847 00000 n 
+0003687000 00000 n 
+0003687152 00000 n 
+0003687305 00000 n 
+0003687457 00000 n 
+0003687610 00000 n 
+0003687762 00000 n 
+0003687913 00000 n 
+0003688064 00000 n 
+0003688215 00000 n 
+0003688367 00000 n 
+0003688519 00000 n 
+0003688671 00000 n 
+0003688823 00000 n 
+0003688976 00000 n 
+0003689127 00000 n 
+0003689279 00000 n 
+0003689431 00000 n 
+0003689584 00000 n 
+0003689735 00000 n 
+0003689888 00000 n 
+0003690041 00000 n 
+0003690194 00000 n 
+0003690347 00000 n 
+0003690500 00000 n 
+0003690653 00000 n 
+0003690806 00000 n 
+0003690958 00000 n 
+0003691110 00000 n 
+0003691263 00000 n 
+0003691412 00000 n 
+0003691564 00000 n 
+0003691717 00000 n 
+0003691867 00000 n 
+0003692018 00000 n 
+0003692169 00000 n 
+0003692321 00000 n 
+0003692473 00000 n 
+0003692626 00000 n 
+0003692779 00000 n 
+0003692930 00000 n 
+0003693080 00000 n 
+0003693232 00000 n 
+0003693380 00000 n 
+0003693530 00000 n 
+0003693682 00000 n 
+0003693834 00000 n 
+0003693986 00000 n 
+0003694138 00000 n 
+0003694291 00000 n 
+0003694444 00000 n 
+0003694596 00000 n 
+0003694749 00000 n 
+0003694901 00000 n 
+0003695051 00000 n 
+0003695201 00000 n 
+0003695352 00000 n 
+0003695504 00000 n 
+0003695656 00000 n 
+0003695808 00000 n 
+0003695961 00000 n 
+0003696114 00000 n 
+0003696267 00000 n 
+0003696418 00000 n 
+0003696570 00000 n 
+0003696722 00000 n 
+0003696874 00000 n 
+0003697026 00000 n 
+0003697175 00000 n 
+0003697324 00000 n 
+0003697473 00000 n 
+0003697626 00000 n 
+0003697778 00000 n 
+0003697930 00000 n 
+0003698082 00000 n 
+0003698235 00000 n 
+0003698387 00000 n 
+0003698540 00000 n 
+0003698691 00000 n 
+0003698843 00000 n 
+0003698995 00000 n 
+0003699147 00000 n 
+0003699298 00000 n 
+0003699450 00000 n 
+0003699602 00000 n 
+0003699754 00000 n 
+0003699905 00000 n 
+0003700057 00000 n 
+0003700210 00000 n 
+0003700362 00000 n 
+0003700515 00000 n 
+0003700667 00000 n 
+0003700820 00000 n 
+0003700971 00000 n 
+0003701124 00000 n 
+0003701277 00000 n 
+0003701430 00000 n 
+0003701583 00000 n 
+0003701735 00000 n 
+0003701888 00000 n 
+0003702040 00000 n 
+0003702193 00000 n 
+0003702344 00000 n 
+0003702497 00000 n 
+0003702649 00000 n 
+0003702802 00000 n 
+0003702955 00000 n 
+0003703108 00000 n 
+0003703261 00000 n 
+0003703414 00000 n 
+0003703567 00000 n 
+0003703719 00000 n 
+0003703870 00000 n 
+0003704022 00000 n 
+0003704175 00000 n 
+0003704327 00000 n 
+0003704479 00000 n 
+0003704632 00000 n 
+0003704785 00000 n 
+0003704938 00000 n 
+0003705089 00000 n 
+0003705241 00000 n 
+0003705393 00000 n 
+0003705546 00000 n 
+0003705698 00000 n 
+0003705850 00000 n 
+0003709836 00000 n 
+0003709987 00000 n 
+0003710139 00000 n 
+0003710291 00000 n 
+0003706065 00000 n 
+0003678478 00000 n 
+0003676467 00000 n 
+0003706000 00000 n 
+0003710444 00000 n 
+0003710596 00000 n 
+0003710748 00000 n 
+0003710900 00000 n 
+0003711053 00000 n 
+0003711205 00000 n 
+0003711357 00000 n 
+0003711510 00000 n 
+0003711663 00000 n 
+0003711812 00000 n 
+0003711964 00000 n 
+0003712117 00000 n 
+0003712267 00000 n 
+0003712418 00000 n 
+0003712569 00000 n 
+0003712721 00000 n 
+0003712873 00000 n 
+0003713025 00000 n 
+0003713177 00000 n 
+0003713329 00000 n 
+0003713480 00000 n 
+0003713633 00000 n 
+0003713785 00000 n 
+0003713935 00000 n 
+0003714086 00000 n 
+0003714239 00000 n 
+0003714390 00000 n 
+0003714543 00000 n 
+0003714696 00000 n 
+0003714848 00000 n 
+0003715000 00000 n 
+0003715153 00000 n 
+0003715306 00000 n 
+0003715459 00000 n 
+0003715611 00000 n 
+0003715764 00000 n 
+0003715915 00000 n 
+0003716067 00000 n 
+0003716220 00000 n 
+0003716373 00000 n 
+0003716525 00000 n 
+0003716677 00000 n 
+0003716828 00000 n 
+0003716980 00000 n 
+0003717132 00000 n 
+0003717285 00000 n 
+0003717435 00000 n 
+0003717588 00000 n 
+0003717740 00000 n 
+0003717893 00000 n 
+0003718046 00000 n 
+0003718198 00000 n 
+0003718350 00000 n 
+0003718502 00000 n 
+0003718655 00000 n 
+0003718807 00000 n 
+0003718957 00000 n 
+0003719109 00000 n 
+0003719259 00000 n 
+0003719411 00000 n 
+0003719564 00000 n 
+0003719717 00000 n 
+0003719870 00000 n 
+0003720021 00000 n 
+0003720174 00000 n 
+0003720325 00000 n 
+0003720475 00000 n 
+0003720626 00000 n 
+0003720778 00000 n 
+0003720930 00000 n 
+0003721082 00000 n 
+0003721233 00000 n 
+0003721385 00000 n 
+0003721538 00000 n 
+0003721687 00000 n 
+0003721838 00000 n 
+0003721991 00000 n 
+0003722142 00000 n 
+0003722294 00000 n 
+0003722443 00000 n 
+0003722595 00000 n 
+0003722744 00000 n 
+0003722895 00000 n 
+0003723046 00000 n 
+0003723195 00000 n 
+0003723347 00000 n 
+0003723500 00000 n 
+0003723653 00000 n 
+0003723806 00000 n 
+0003723958 00000 n 
+0003724111 00000 n 
+0003724263 00000 n 
+0003724416 00000 n 
+0003724569 00000 n 
+0003724722 00000 n 
+0003724875 00000 n 
+0003725027 00000 n 
+0003725180 00000 n 
+0003725333 00000 n 
+0003725484 00000 n 
+0003725637 00000 n 
+0003725789 00000 n 
+0003725942 00000 n 
+0003726094 00000 n 
+0003726244 00000 n 
+0003726396 00000 n 
+0003726549 00000 n 
+0003726702 00000 n 
+0003726855 00000 n 
+0003727008 00000 n 
+0003727160 00000 n 
+0003727312 00000 n 
+0003727465 00000 n 
+0003727617 00000 n 
+0003727770 00000 n 
+0003727922 00000 n 
+0003728073 00000 n 
+0003728225 00000 n 
+0003728377 00000 n 
+0003728530 00000 n 
+0003728682 00000 n 
+0003728835 00000 n 
+0003728987 00000 n 
+0003729140 00000 n 
+0003729293 00000 n 
+0003729445 00000 n 
+0003729598 00000 n 
+0003729749 00000 n 
+0003729901 00000 n 
+0003730054 00000 n 
+0003730207 00000 n 
+0003730360 00000 n 
+0003730513 00000 n 
+0003730666 00000 n 
+0003730819 00000 n 
+0003730972 00000 n 
+0003731125 00000 n 
+0003731278 00000 n 
+0003731430 00000 n 
+0003731581 00000 n 
+0003731734 00000 n 
+0003731886 00000 n 
+0003732039 00000 n 
+0003732192 00000 n 
+0003732344 00000 n 
+0003732497 00000 n 
+0003732649 00000 n 
+0003732800 00000 n 
+0003732951 00000 n 
+0003733104 00000 n 
+0003733257 00000 n 
+0003733410 00000 n 
+0003733563 00000 n 
+0003733716 00000 n 
+0003733869 00000 n 
+0003734021 00000 n 
+0003734172 00000 n 
+0003738786 00000 n 
+0003734389 00000 n 
+0003708087 00000 n 
+0003706182 00000 n 
+0003734324 00000 n 
+0003972083 00000 n 
+0003738937 00000 n 
+0003739089 00000 n 
+0003739240 00000 n 
+0003739393 00000 n 
+0003739546 00000 n 
+0003739699 00000 n 
+0003739852 00000 n 
+0003740005 00000 n 
+0003740157 00000 n 
+0003740308 00000 n 
+0003740460 00000 n 
+0003740611 00000 n 
+0003740759 00000 n 
+0003740909 00000 n 
+0003741061 00000 n 
+0003741214 00000 n 
+0003741367 00000 n 
+0003741520 00000 n 
+0003741673 00000 n 
+0003741826 00000 n 
+0003741979 00000 n 
+0003742132 00000 n 
+0003742285 00000 n 
+0003742438 00000 n 
+0003742591 00000 n 
+0003742744 00000 n 
+0003742896 00000 n 
+0003743049 00000 n 
+0003743201 00000 n 
+0003743351 00000 n 
+0003743502 00000 n 
+0003743655 00000 n 
+0003743808 00000 n 
+0003743961 00000 n 
+0003744114 00000 n 
+0003744267 00000 n 
+0003744420 00000 n 
+0003744573 00000 n 
+0003744726 00000 n 
+0003744879 00000 n 
+0003745032 00000 n 
+0003745184 00000 n 
+0003745336 00000 n 
+0003745487 00000 n 
+0003745640 00000 n 
+0003745793 00000 n 
+0003745943 00000 n 
+0003746096 00000 n 
+0003746247 00000 n 
+0003746399 00000 n 
+0003746552 00000 n 
+0003746704 00000 n 
+0003746856 00000 n 
+0003747008 00000 n 
+0003747158 00000 n 
+0003747310 00000 n 
+0003747460 00000 n 
+0003747613 00000 n 
+0003747762 00000 n 
+0003747912 00000 n 
+0003748064 00000 n 
+0003748215 00000 n 
+0003748364 00000 n 
+0003748513 00000 n 
+0003748665 00000 n 
+0003748817 00000 n 
+0003748970 00000 n 
+0003749121 00000 n 
+0003749274 00000 n 
+0003749427 00000 n 
+0003749580 00000 n 
+0003749731 00000 n 
+0003749884 00000 n 
+0003750037 00000 n 
+0003750189 00000 n 
+0003750342 00000 n 
+0003750494 00000 n 
+0003750646 00000 n 
+0003750798 00000 n 
+0003750950 00000 n 
+0003751103 00000 n 
+0003751256 00000 n 
+0003751409 00000 n 
+0003751562 00000 n 
+0003751715 00000 n 
+0003751868 00000 n 
+0003752021 00000 n 
+0003752174 00000 n 
+0003752327 00000 n 
+0003752480 00000 n 
+0003752633 00000 n 
+0003752786 00000 n 
+0003752936 00000 n 
+0003753086 00000 n 
+0003753238 00000 n 
+0003753390 00000 n 
+0003753542 00000 n 
+0003753694 00000 n 
+0003753846 00000 n 
+0003753997 00000 n 
+0003754149 00000 n 
+0003754301 00000 n 
+0003754453 00000 n 
+0003754606 00000 n 
+0003754759 00000 n 
+0003754910 00000 n 
+0003755063 00000 n 
+0003755215 00000 n 
+0003755368 00000 n 
+0003755521 00000 n 
+0003755674 00000 n 
+0003755827 00000 n 
+0003755980 00000 n 
+0003756133 00000 n 
+0003756286 00000 n 
+0003756438 00000 n 
+0003756591 00000 n 
+0003756744 00000 n 
+0003756897 00000 n 
+0003757049 00000 n 
+0003757201 00000 n 
+0003757354 00000 n 
+0003757506 00000 n 
+0003757659 00000 n 
+0003757811 00000 n 
+0003757963 00000 n 
+0003758116 00000 n 
+0003758268 00000 n 
+0003758421 00000 n 
+0003758573 00000 n 
+0003758726 00000 n 
+0003758877 00000 n 
+0003759029 00000 n 
+0003759180 00000 n 
+0003759333 00000 n 
+0003759485 00000 n 
+0003759637 00000 n 
+0003759790 00000 n 
+0003759942 00000 n 
+0003760095 00000 n 
+0003760248 00000 n 
+0003760401 00000 n 
+0003760552 00000 n 
+0003760704 00000 n 
+0003760856 00000 n 
+0003761008 00000 n 
+0003761160 00000 n 
+0003761312 00000 n 
+0003761462 00000 n 
+0003761613 00000 n 
+0003761764 00000 n 
+0003761916 00000 n 
+0003762068 00000 n 
+0003762220 00000 n 
+0003762371 00000 n 
+0003762524 00000 n 
+0003762677 00000 n 
+0003762830 00000 n 
+0003762981 00000 n 
+0003763134 00000 n 
+0003763286 00000 n 
+0003763438 00000 n 
+0003763591 00000 n 
+0003763744 00000 n 
+0003763895 00000 n 
+0003764048 00000 n 
+0003764200 00000 n 
+0003764353 00000 n 
+0003764506 00000 n 
+0003764657 00000 n 
+0003764810 00000 n 
+0003764963 00000 n 
+0003765115 00000 n 
+0003765266 00000 n 
+0003765419 00000 n 
+0003765571 00000 n 
+0003765723 00000 n 
+0003765876 00000 n 
+0003766026 00000 n 
+0003766176 00000 n 
+0003766328 00000 n 
+0003766478 00000 n 
+0003766630 00000 n 
+0003766783 00000 n 
+0003766936 00000 n 
+0003767089 00000 n 
+0003767242 00000 n 
+0003767395 00000 n 
+0003767548 00000 n 
+0003767700 00000 n 
+0003767853 00000 n 
+0003768006 00000 n 
+0003768157 00000 n 
+0003768309 00000 n 
+0003768462 00000 n 
+0003768613 00000 n 
+0003768766 00000 n 
+0003768919 00000 n 
+0003769071 00000 n 
+0003769223 00000 n 
+0003769373 00000 n 
+0003769523 00000 n 
+0003773859 00000 n 
+0003774008 00000 n 
+0003774158 00000 n 
+0003774307 00000 n 
+0003774457 00000 n 
+0003774609 00000 n 
+0003774761 00000 n 
+0003774913 00000 n 
+0003775065 00000 n 
+0003775216 00000 n 
+0003775368 00000 n 
+0003775520 00000 n 
+0003769738 00000 n 
+0003736617 00000 n 
+0003734506 00000 n 
+0003769673 00000 n 
+0003775672 00000 n 
+0003775823 00000 n 
+0003775975 00000 n 
+0003776128 00000 n 
+0003776281 00000 n 
+0003776434 00000 n 
+0003776587 00000 n 
+0003776738 00000 n 
+0003776890 00000 n 
+0003777042 00000 n 
+0003777193 00000 n 
+0003777343 00000 n 
+0003777493 00000 n 
+0003777645 00000 n 
+0003777795 00000 n 
+0003777948 00000 n 
+0003778099 00000 n 
+0003778251 00000 n 
+0003778404 00000 n 
+0003778556 00000 n 
+0003778708 00000 n 
+0003778860 00000 n 
+0003779011 00000 n 
+0003779164 00000 n 
+0003779316 00000 n 
+0003779469 00000 n 
+0003779621 00000 n 
+0003779773 00000 n 
+0003779926 00000 n 
+0003780077 00000 n 
+0003780230 00000 n 
+0003780382 00000 n 
+0003780531 00000 n 
+0003780682 00000 n 
+0003780834 00000 n 
+0003780987 00000 n 
+0003781140 00000 n 
+0003781293 00000 n 
+0003781444 00000 n 
+0003781597 00000 n 
+0003781750 00000 n 
+0003781903 00000 n 
+0003782054 00000 n 
+0003782206 00000 n 
+0003782358 00000 n 
+0003782510 00000 n 
+0003782662 00000 n 
+0003782814 00000 n 
+0003782967 00000 n 
+0003783118 00000 n 
+0003783269 00000 n 
+0003783419 00000 n 
+0003783572 00000 n 
+0003783724 00000 n 
+0003783875 00000 n 
+0003784026 00000 n 
+0003784179 00000 n 
+0003784332 00000 n 
+0003784484 00000 n 
+0003784637 00000 n 
+0003784790 00000 n 
+0003784943 00000 n 
+0003785095 00000 n 
+0003785247 00000 n 
+0003785397 00000 n 
+0003785547 00000 n 
+0003785698 00000 n 
+0003785850 00000 n 
+0003786001 00000 n 
+0003786153 00000 n 
+0003786305 00000 n 
+0003786455 00000 n 
+0003786607 00000 n 
+0003786760 00000 n 
+0003786912 00000 n 
+0003787065 00000 n 
+0003787217 00000 n 
+0003787370 00000 n 
+0003787523 00000 n 
+0003787674 00000 n 
+0003787826 00000 n 
+0003787978 00000 n 
+0003788129 00000 n 
+0003788281 00000 n 
+0003788434 00000 n 
+0003788587 00000 n 
+0003788739 00000 n 
+0003788891 00000 n 
+0003789044 00000 n 
+0003789195 00000 n 
+0003789346 00000 n 
+0003789497 00000 n 
+0003789650 00000 n 
+0003789802 00000 n 
+0003789953 00000 n 
+0003790105 00000 n 
+0003790257 00000 n 
+0003790409 00000 n 
+0003790562 00000 n 
+0003790715 00000 n 
+0003790867 00000 n 
+0003791019 00000 n 
+0003791171 00000 n 
+0003791322 00000 n 
+0003791474 00000 n 
+0003791627 00000 n 
+0003791780 00000 n 
+0003791933 00000 n 
+0003792086 00000 n 
+0003792239 00000 n 
+0003792391 00000 n 
+0003792543 00000 n 
+0003792696 00000 n 
+0003792849 00000 n 
+0003793001 00000 n 
+0003793154 00000 n 
+0003793307 00000 n 
+0003793459 00000 n 
+0003793612 00000 n 
+0003793765 00000 n 
+0003793918 00000 n 
+0003794071 00000 n 
+0003794224 00000 n 
+0003794376 00000 n 
+0003794527 00000 n 
+0003794679 00000 n 
+0003794832 00000 n 
+0003794984 00000 n 
+0003795136 00000 n 
+0003795287 00000 n 
+0003795439 00000 n 
+0003795591 00000 n 
+0003795744 00000 n 
+0003795897 00000 n 
+0003796049 00000 n 
+0003796201 00000 n 
+0003796353 00000 n 
+0003796506 00000 n 
+0003796658 00000 n 
+0003796811 00000 n 
+0003796962 00000 n 
+0003797115 00000 n 
+0003797268 00000 n 
+0003797420 00000 n 
+0003797573 00000 n 
+0003797725 00000 n 
+0003797878 00000 n 
+0003798031 00000 n 
+0003798184 00000 n 
+0003798336 00000 n 
+0003798488 00000 n 
+0003798640 00000 n 
+0003798792 00000 n 
+0003798945 00000 n 
+0003799097 00000 n 
+0003799249 00000 n 
+0003799402 00000 n 
+0003799555 00000 n 
+0003799708 00000 n 
+0003799861 00000 n 
+0003800012 00000 n 
+0003800165 00000 n 
+0003800318 00000 n 
+0003800469 00000 n 
+0003800621 00000 n 
+0003800774 00000 n 
+0003800927 00000 n 
+0003801080 00000 n 
+0003801233 00000 n 
+0003801386 00000 n 
+0003801537 00000 n 
+0003803442 00000 n 
+0003801753 00000 n 
+0003771890 00000 n 
+0003769855 00000 n 
+0003801688 00000 n 
+0003803594 00000 n 
+0003803747 00000 n 
+0003803898 00000 n 
+0003804049 00000 n 
+0003804202 00000 n 
+0003804355 00000 n 
+0003804507 00000 n 
+0003804656 00000 n 
+0003804807 00000 n 
+0003804957 00000 n 
+0003805108 00000 n 
+0003805259 00000 n 
+0003805410 00000 n 
+0003805561 00000 n 
+0003805712 00000 n 
+0003805864 00000 n 
+0003806016 00000 n 
+0003806168 00000 n 
+0003806321 00000 n 
+0003806473 00000 n 
+0003806625 00000 n 
+0003806778 00000 n 
+0003806930 00000 n 
+0003807083 00000 n 
+0003807234 00000 n 
+0003807386 00000 n 
+0003807538 00000 n 
+0003807690 00000 n 
+0003807843 00000 n 
+0003807995 00000 n 
+0003808146 00000 n 
+0003808297 00000 n 
+0003808448 00000 n 
+0003808601 00000 n 
+0003808754 00000 n 
+0003808907 00000 n 
+0003809060 00000 n 
+0003809212 00000 n 
+0003809365 00000 n 
+0003809514 00000 n 
+0003809665 00000 n 
+0003809817 00000 n 
+0003809967 00000 n 
+0003810185 00000 n 
+0003802863 00000 n 
+0003801870 00000 n 
+0003810120 00000 n 
+0003810302 00000 n 
+0003961594 00000 n 
+0003810329 00000 n 
+0003810522 00000 n 
+0003810651 00000 n 
+0003810688 00000 n 
+0003810900 00000 n 
+0003811273 00000 n 
+0003811750 00000 n 
+0003812147 00000 n 
+0003812728 00000 n 
+0003812965 00000 n 
+0003813544 00000 n 
+0003814124 00000 n 
+0003815068 00000 n 
+0003816738 00000 n 
+0003816977 00000 n 
+0003818465 00000 n 
+0003818716 00000 n 
+0003820570 00000 n 
+0003820802 00000 n 
+0003828154 00000 n 
+0003828419 00000 n 
+0003848966 00000 n 
+0003849625 00000 n 
+0003862964 00000 n 
+0003863384 00000 n 
+0003876586 00000 n 
+0003877075 00000 n 
+0003887683 00000 n 
+0003888175 00000 n 
+0003894217 00000 n 
+0003894511 00000 n 
+0003911481 00000 n 
+0003911962 00000 n 
+0003920235 00000 n 
+0003920519 00000 n 
+0003943130 00000 n 
+0003943860 00000 n 
+0003961074 00000 n 
+0003972196 00000 n 
+0003972324 00000 n 
+0003972452 00000 n 
+0003972580 00000 n 
+0003972708 00000 n 
+0003972836 00000 n 
+0003972964 00000 n 
+0003973092 00000 n 
+0003973220 00000 n 
+0003973353 00000 n 
+0003973487 00000 n 
+0003973570 00000 n 
+0003973705 00000 n 
+0003973830 00000 n 
+0003973907 00000 n 
+0004000507 00000 n 
+0004000709 00000 n 
+0004000892 00000 n 
+0004001086 00000 n 
+0004001279 00000 n 
+0004001473 00000 n 
+0004001666 00000 n 
+0004001860 00000 n 
+0004002053 00000 n 
+0004002247 00000 n 
+0004002439 00000 n 
+0004002631 00000 n 
+0004002825 00000 n 
+0004003018 00000 n 
+0004003212 00000 n 
+0004003405 00000 n 
+0004003599 00000 n 
+0004003792 00000 n 
+0004003986 00000 n 
+0004004179 00000 n 
+0004004373 00000 n 
+0004004562 00000 n 
+0004004756 00000 n 
+0004004948 00000 n 
+0004005140 00000 n 
+0004005334 00000 n 
+0004005527 00000 n 
+0004005721 00000 n 
+0004005914 00000 n 
+0004006108 00000 n 
+0004006301 00000 n 
+0004006495 00000 n 
+0004006688 00000 n 
+0004006882 00000 n 
+0004007074 00000 n 
+0004007266 00000 n 
+0004007460 00000 n 
+0004007653 00000 n 
+0004007847 00000 n 
+0004008038 00000 n 
+0004008232 00000 n 
+0004008425 00000 n 
+0004008619 00000 n 
+0004008812 00000 n 
+0004009006 00000 n 
+0004009199 00000 n 
+0004009393 00000 n 
+0004009585 00000 n 
+0004009777 00000 n 
+0004009971 00000 n 
+0004010164 00000 n 
+0004010358 00000 n 
+0004010551 00000 n 
+0004010745 00000 n 
+0004010938 00000 n 
+0004011132 00000 n 
+0004011325 00000 n 
+0004011519 00000 n 
+0004011708 00000 n 
+0004011902 00000 n 
+0004012094 00000 n 
+0004012286 00000 n 
+0004012480 00000 n 
+0004012673 00000 n 
+0004012867 00000 n 
+0004013060 00000 n 
+0004013254 00000 n 
+0004013447 00000 n 
+0004013641 00000 n 
+0004013834 00000 n 
+0004014028 00000 n 
+0004014220 00000 n 
+0004014412 00000 n 
+0004014606 00000 n 
+0004014799 00000 n 
+0004014993 00000 n 
+0004015184 00000 n 
+0004015378 00000 n 
+0004015571 00000 n 
+0004015765 00000 n 
+0004015958 00000 n 
+0004016152 00000 n 
+0004016345 00000 n 
+0004016539 00000 n 
+0004016731 00000 n 
+0004016923 00000 n 
+0004017117 00000 n 
+0004017310 00000 n 
+0004017504 00000 n 
+0004017697 00000 n 
+0004017891 00000 n 
+0004018084 00000 n 
+0004018278 00000 n 
+0004018471 00000 n 
+0004018665 00000 n 
+0004018854 00000 n 
+0004019048 00000 n 
+0004019240 00000 n 
+0004019432 00000 n 
+0004019626 00000 n 
+0004019819 00000 n 
+0004020013 00000 n 
+0004020206 00000 n 
+0004020400 00000 n 
+0004020593 00000 n 
+0004020787 00000 n 
+0004020980 00000 n 
+0004021174 00000 n 
+0004021366 00000 n 
+0004021558 00000 n 
+0004021752 00000 n 
+0004021945 00000 n 
+0004022139 00000 n 
+0004022330 00000 n 
+0004022524 00000 n 
+0004022717 00000 n 
+0004022911 00000 n 
+0004023104 00000 n 
+0004023298 00000 n 
+0004023491 00000 n 
+0004023685 00000 n 
+0004023877 00000 n 
+0004024069 00000 n 
+0004024263 00000 n 
+0004024456 00000 n 
+0004024650 00000 n 
+0004024843 00000 n 
+0004025037 00000 n 
+0004025230 00000 n 
+0004025424 00000 n 
+0004025617 00000 n 
+0004025811 00000 n 
+0004026000 00000 n 
+0004026194 00000 n 
+0004026386 00000 n 
+0004026578 00000 n 
+0004026772 00000 n 
+0004026965 00000 n 
+0004027159 00000 n 
+0004027352 00000 n 
+0004027546 00000 n 
+0004027739 00000 n 
+0004027933 00000 n 
+0004028126 00000 n 
+0004028320 00000 n 
+0004028512 00000 n 
+0004028704 00000 n 
+0004028898 00000 n 
+0004029091 00000 n 
+0004029285 00000 n 
+0004029476 00000 n 
+0004029670 00000 n 
+0004029863 00000 n 
+0004030057 00000 n 
+0004030250 00000 n 
+0004030444 00000 n 
+0004030637 00000 n 
+0004030831 00000 n 
+0004031023 00000 n 
+0004031215 00000 n 
+0004031409 00000 n 
+0004031602 00000 n 
+0004031796 00000 n 
+0004031989 00000 n 
+0004032183 00000 n 
+0004032376 00000 n 
+0004032570 00000 n 
+0004032763 00000 n 
+0004032957 00000 n 
+0004033146 00000 n 
+0004033340 00000 n 
+0004033532 00000 n 
+0004033724 00000 n 
+0004033918 00000 n 
+0004034111 00000 n 
+0004034305 00000 n 
+0004034498 00000 n 
+0004034692 00000 n 
+0004034885 00000 n 
+0004035079 00000 n 
+0004035272 00000 n 
+0004035466 00000 n 
+0004035658 00000 n 
+0004035850 00000 n 
+0004036044 00000 n 
+0004036237 00000 n 
+0004036431 00000 n 
+0004036618 00000 n 
+0004036812 00000 n 
+0004037005 00000 n 
+0004037199 00000 n 
+0004037392 00000 n 
+0004037586 00000 n 
+0004037779 00000 n 
+0004037973 00000 n 
+0004038166 00000 n 
+0004038360 00000 n 
+0004038552 00000 n 
+0004038744 00000 n 
+0004038938 00000 n 
+0004039131 00000 n 
+0004039325 00000 n 
+0004039518 00000 n 
+0004039712 00000 n 
+0004039905 00000 n 
+0004040099 00000 n 
+0004040290 00000 n 
+0004040484 00000 n 
+0004040677 00000 n 
+0004040871 00000 n 
+0004041063 00000 n 
+0004041255 00000 n 
+0004041449 00000 n 
+0004041642 00000 n 
+0004041836 00000 n 
+0004042029 00000 n 
+0004042223 00000 n 
+0004042416 00000 n 
+0004042610 00000 n 
+0004042803 00000 n 
+0004042997 00000 n 
+0004043189 00000 n 
+0004043381 00000 n 
+0004043575 00000 n 
+0004043765 00000 n 
+0004043959 00000 n 
+0004044152 00000 n 
+0004044346 00000 n 
+0004044539 00000 n 
+0004044733 00000 n 
+0004044926 00000 n 
+0004045120 00000 n 
+0004045313 00000 n 
+0004045507 00000 n 
+0004045699 00000 n 
+0004045891 00000 n 
+0004046085 00000 n 
+0004046278 00000 n 
+0004046472 00000 n 
+0004046665 00000 n 
+0004046859 00000 n 
+0004047052 00000 n 
+0004047246 00000 n 
+0004047437 00000 n 
+0004047631 00000 n 
+0004047824 00000 n 
+0004048018 00000 n 
+0004048210 00000 n 
+0004048402 00000 n 
+0004048596 00000 n 
+0004048789 00000 n 
+0004048983 00000 n 
+0004049176 00000 n 
+0004049370 00000 n 
+0004049563 00000 n 
+0004049757 00000 n 
+0004049950 00000 n 
+0004050144 00000 n 
+0004050336 00000 n 
+0004050528 00000 n 
+0004050722 00000 n 
+0004050912 00000 n 
+0004051106 00000 n 
+0004051299 00000 n 
+0004051493 00000 n 
+0004051686 00000 n 
+0004051880 00000 n 
+0004052073 00000 n 
+0004052267 00000 n 
+0004052460 00000 n 
+0004052654 00000 n 
+0004052846 00000 n 
+0004053038 00000 n 
+0004053232 00000 n 
+0004053425 00000 n 
+0004053619 00000 n 
+0004053812 00000 n 
+0004054006 00000 n 
+0004054199 00000 n 
+0004054393 00000 n 
+0004054584 00000 n 
+0004054778 00000 n 
+0004054971 00000 n 
+0004055165 00000 n 
+0004055357 00000 n 
+0004055549 00000 n 
+0004055743 00000 n 
+0004055936 00000 n 
+0004056130 00000 n 
+0004056323 00000 n 
+0004056517 00000 n 
+0004056710 00000 n 
+0004056904 00000 n 
+0004057097 00000 n 
+0004057291 00000 n 
+0004057483 00000 n 
+0004057675 00000 n 
+0004057869 00000 n 
+0004058059 00000 n 
+0004058253 00000 n 
+0004058446 00000 n 
+0004058640 00000 n 
+0004058833 00000 n 
+0004059027 00000 n 
+0004059220 00000 n 
+0004059414 00000 n 
+0004059607 00000 n 
+0004059801 00000 n 
+0004059993 00000 n 
+0004060185 00000 n 
+0004060379 00000 n 
+0004060572 00000 n 
+0004060766 00000 n 
+0004060959 00000 n 
+0004061153 00000 n 
+0004061346 00000 n 
+0004061540 00000 n 
+0004061731 00000 n 
+0004061925 00000 n 
+0004062118 00000 n 
+0004062312 00000 n 
+0004062504 00000 n 
+0004062696 00000 n 
+0004062890 00000 n 
+0004063083 00000 n 
+0004063277 00000 n 
+0004063470 00000 n 
+0004063664 00000 n 
+0004063857 00000 n 
+0004064051 00000 n 
+0004064244 00000 n 
+0004064438 00000 n 
+0004064630 00000 n 
+0004064822 00000 n 
+0004065016 00000 n 
+0004065206 00000 n 
+0004065400 00000 n 
+0004065593 00000 n 
+0004065787 00000 n 
+0004065980 00000 n 
+0004066174 00000 n 
+0004066367 00000 n 
+0004066561 00000 n 
+0004066754 00000 n 
+0004066948 00000 n 
+0004067140 00000 n 
+0004067332 00000 n 
+0004067526 00000 n 
+0004067719 00000 n 
+0004067913 00000 n 
+0004068106 00000 n 
+0004068300 00000 n 
+0004068493 00000 n 
+0004068687 00000 n 
+0004068878 00000 n 
+0004069072 00000 n 
+0004069265 00000 n 
+0004069459 00000 n 
+0004069651 00000 n 
+0004069843 00000 n 
+0004070037 00000 n 
+0004070230 00000 n 
+0004070424 00000 n 
+0004070617 00000 n 
+0004070811 00000 n 
+0004071004 00000 n 
+0004071198 00000 n 
+0004071391 00000 n 
+0004071585 00000 n 
+0004071777 00000 n 
+0004071969 00000 n 
+0004072163 00000 n 
+0004072350 00000 n 
+0004072542 00000 n 
+0004072734 00000 n 
+0004072928 00000 n 
+0004073121 00000 n 
+0004073315 00000 n 
+0004073508 00000 n 
+0004073702 00000 n 
+0004073895 00000 n 
+0004074089 00000 n 
+0004074282 00000 n 
+0004074476 00000 n 
+0004074668 00000 n 
+0004074860 00000 n 
+0004075054 00000 n 
+0004075247 00000 n 
+0004075441 00000 n 
+0004075639 00000 n 
+0004075839 00000 n 
+0004076034 00000 n 
+0004076234 00000 n 
+0004076432 00000 n 
+0004076632 00000 n 
+0004076830 00000 n 
+0004077030 00000 n 
+0004077227 00000 n 
+0004077424 00000 n 
+0004077624 00000 n 
+0004077822 00000 n 
+0004078022 00000 n 
+0004078220 00000 n 
+0004078420 00000 n 
+0004078618 00000 n 
+0004078818 00000 n 
+0004079016 00000 n 
+0004079216 00000 n 
+0004079413 00000 n 
+0004079608 00000 n 
+0004079805 00000 n 
+0004080002 00000 n 
+0004080202 00000 n 
+0004080400 00000 n 
+0004080600 00000 n 
+0004080798 00000 n 
+0004080998 00000 n 
+0004081196 00000 n 
+0004081396 00000 n 
+0004081594 00000 n 
+0004081794 00000 n 
+0004081991 00000 n 
+0004082188 00000 n 
+0004082388 00000 n 
+0004082586 00000 n 
+0004082786 00000 n 
+0004082984 00000 n 
+0004083184 00000 n 
+0004083379 00000 n 
+0004083565 00000 n 
+0004083750 00000 n 
+0004083936 00000 n 
+0004084121 00000 n 
+0004084307 00000 n 
+0004084492 00000 n 
+0004084678 00000 n 
+0004084862 00000 n 
+0004085046 00000 n 
+0004085232 00000 n 
+0004085417 00000 n 
+0004085603 00000 n 
+0004085786 00000 n 
+0004085972 00000 n 
+0004086157 00000 n 
+0004086343 00000 n 
+0004086528 00000 n 
+0004086714 00000 n 
+0004086899 00000 n 
+0004087085 00000 n 
+0004087269 00000 n 
+0004087453 00000 n 
+0004087639 00000 n 
+0004087824 00000 n 
+0004088010 00000 n 
+0004088195 00000 n 
+0004088381 00000 n 
+0004088566 00000 n 
+0004088752 00000 n 
+0004088937 00000 n 
+0004089123 00000 n 
+0004089304 00000 n 
+0004089490 00000 n 
+0004089674 00000 n 
+0004089858 00000 n 
+0004090044 00000 n 
+0004090229 00000 n 
+0004090415 00000 n 
+0004090600 00000 n 
+0004090786 00000 n 
+0004090971 00000 n 
+0004091157 00000 n 
+0004091342 00000 n 
+0004091528 00000 n 
+0004091712 00000 n 
+0004091896 00000 n 
+0004092082 00000 n 
+0004092267 00000 n 
+0004092453 00000 n 
+0004092636 00000 n 
+0004092822 00000 n 
+0004093007 00000 n 
+0004093193 00000 n 
+0004093378 00000 n 
+0004093564 00000 n 
+0004093749 00000 n 
+0004093935 00000 n 
+0004094119 00000 n 
+0004094303 00000 n 
+0004094489 00000 n 
+0004094674 00000 n 
+0004094860 00000 n 
+0004095045 00000 n 
+0004095231 00000 n 
+0004095416 00000 n 
+0004095602 00000 n 
+0004095787 00000 n 
+0004095973 00000 n 
+0004096154 00000 n 
+0004096340 00000 n 
+0004096524 00000 n 
+0004096708 00000 n 
+0004096894 00000 n 
+0004097079 00000 n 
+0004097265 00000 n 
+0004097450 00000 n 
+0004097636 00000 n 
+0004097821 00000 n 
+0004098007 00000 n 
+0004098192 00000 n 
+0004098378 00000 n 
+0004098562 00000 n 
+0004098746 00000 n 
+0004098932 00000 n 
+0004099117 00000 n 
+0004099303 00000 n 
+0004099486 00000 n 
+0004099672 00000 n 
+0004099857 00000 n 
+0004100043 00000 n 
+0004100228 00000 n 
+0004100414 00000 n 
+0004100599 00000 n 
+0004100785 00000 n 
+0004100969 00000 n 
+0004101153 00000 n 
+0004101339 00000 n 
+0004101524 00000 n 
+0004101710 00000 n 
+0004101895 00000 n 
+0004102081 00000 n 
+0004102266 00000 n 
+0004102452 00000 n 
+0004102637 00000 n 
+0004102823 00000 n 
+0004103004 00000 n 
+0004103190 00000 n 
+0004103374 00000 n 
+0004103558 00000 n 
+0004103744 00000 n 
+0004103929 00000 n 
+0004104115 00000 n 
+0004104300 00000 n 
+0004104486 00000 n 
+0004104671 00000 n 
+0004104857 00000 n 
+0004105042 00000 n 
+0004105228 00000 n 
+0004105412 00000 n 
+0004105596 00000 n 
+0004105782 00000 n 
+0004105967 00000 n 
+0004106153 00000 n 
+0004106334 00000 n 
+0004106524 00000 n 
+0004106720 00000 n 
+0004106911 00000 n 
+0004107115 00000 n 
+0004107315 00000 n 
+0004107522 00000 n 
+0004107722 00000 n 
+0004107936 00000 n 
+0004108146 00000 n 
+0004108378 00000 n 
+0004108612 00000 n 
+0004108852 00000 n 
+0004109063 00000 n 
+0004109248 00000 n 
+0004109438 00000 n 
+0004109645 00000 n 
+0004109866 00000 n 
+0004110063 00000 n 
+0004110262 00000 n 
+0004110460 00000 n 
+0004110657 00000 n 
+0004110844 00000 n 
+0004111048 00000 n 
+0004111241 00000 n 
+0004111444 00000 n 
+0004111670 00000 n 
+0004111893 00000 n 
+0004112111 00000 n 
+0004112330 00000 n 
+0004112558 00000 n 
+0004112779 00000 n 
+0004112992 00000 n 
+0004113210 00000 n 
+0004113420 00000 n 
+0004113634 00000 n 
+0004113844 00000 n 
+0004114054 00000 n 
+0004114267 00000 n 
+0004114480 00000 n 
+0004114690 00000 n 
+0004114898 00000 n 
+0004115109 00000 n 
+0004115319 00000 n 
+0004115529 00000 n 
+0004115734 00000 n 
+0004115936 00000 n 
+0004116138 00000 n 
+0004116334 00000 n 
+0004116535 00000 n 
+0004116736 00000 n 
+0004116986 00000 n 
+0004117235 00000 n 
+0004117485 00000 n 
+0004117734 00000 n 
+0004117976 00000 n 
+0004118242 00000 n 
+0004118508 00000 n 
+0004118774 00000 n 
+0004119040 00000 n 
+0004119306 00000 n 
+0004119572 00000 n 
+0004119838 00000 n 
+0004120104 00000 n 
+0004120370 00000 n 
+0004120636 00000 n 
+0004120902 00000 n 
+0004121171 00000 n 
+0004121443 00000 n 
+0004121715 00000 n 
+0004121987 00000 n 
+0004122259 00000 n 
+0004122531 00000 n 
+0004122803 00000 n 
+0004123053 00000 n 
+0004123303 00000 n 
+0004123553 00000 n 
+0004123807 00000 n 
+0004124065 00000 n 
+0004124318 00000 n 
+0004124568 00000 n 
+0004124818 00000 n 
+0004125068 00000 n 
+0004125318 00000 n 
+0004125568 00000 n 
+0004125818 00000 n 
+0004126068 00000 n 
+0004126324 00000 n 
+0004126582 00000 n 
+0004126840 00000 n 
+0004127098 00000 n 
+0004127356 00000 n 
+0004127614 00000 n 
+0004127872 00000 n 
+0004128130 00000 n 
+0004128388 00000 n 
+0004128646 00000 n 
+0004128904 00000 n 
+0004129162 00000 n 
+0004129420 00000 n 
+0004129678 00000 n 
+0004129936 00000 n 
+0004130194 00000 n 
+0004130452 00000 n 
+0004130710 00000 n 
+0004130968 00000 n 
+0004131226 00000 n 
+0004131484 00000 n 
+0004131742 00000 n 
+0004132000 00000 n 
+0004132258 00000 n 
+0004132516 00000 n 
+0004132774 00000 n 
+0004133032 00000 n 
+0004133290 00000 n 
+0004133548 00000 n 
+0004133806 00000 n 
+0004134064 00000 n 
+0004134322 00000 n 
+0004134580 00000 n 
+0004134838 00000 n 
+0004135096 00000 n 
+0004135354 00000 n 
+0004135612 00000 n 
+0004135870 00000 n 
+0004136128 00000 n 
+0004136386 00000 n 
+0004136644 00000 n 
+0004136902 00000 n 
+0004137160 00000 n 
+0004137418 00000 n 
+0004137676 00000 n 
+0004137934 00000 n 
+0004138192 00000 n 
+0004138452 00000 n 
+0004138708 00000 n 
+0004138964 00000 n 
+0004139222 00000 n 
+0004139477 00000 n 
+0004139727 00000 n 
+0004139985 00000 n 
+0004140242 00000 n 
+0004140500 00000 n 
+0004140750 00000 n 
+0004141005 00000 n 
+0004141263 00000 n 
+0004141519 00000 n 
+0004141775 00000 n 
+0004142030 00000 n 
+0004142280 00000 n 
+0004142530 00000 n 
+0004142780 00000 n 
+0004143030 00000 n 
+0004143288 00000 n 
+0004143545 00000 n 
+0004143803 00000 n 
+0004144060 00000 n 
+0004144316 00000 n 
+0004144566 00000 n 
+0004144824 00000 n 
+0004145081 00000 n 
+0004145339 00000 n 
+0004145592 00000 n 
+0004145845 00000 n 
+0004146103 00000 n 
+0004146360 00000 n 
+0004146610 00000 n 
+0004146865 00000 n 
+0004147123 00000 n 
+0004147379 00000 n 
+0004147635 00000 n 
+0004147893 00000 n 
+0004148150 00000 n 
+0004148406 00000 n 
+0004148658 00000 n 
+0004148916 00000 n 
+0004149173 00000 n 
+0004149427 00000 n 
+0004149679 00000 n 
+0004149937 00000 n 
+0004150194 00000 n 
+0004150452 00000 n 
+0004150709 00000 n 
+0004150967 00000 n 
+0004151221 00000 n 
+0004151474 00000 n 
+0004151732 00000 n 
+0004151986 00000 n 
+0004152236 00000 n 
+0004152494 00000 n 
+0004152749 00000 n 
+0004152999 00000 n 
+0004153255 00000 n 
+0004153511 00000 n 
+0004153769 00000 n 
+0004154026 00000 n 
+0004154284 00000 n 
+0004154541 00000 n 
+0004154795 00000 n 
+0004155049 00000 n 
+0004155307 00000 n 
+0004155564 00000 n 
+0004155822 00000 n 
+0004156078 00000 n 
+0004156334 00000 n 
+0004156589 00000 n 
+0004156842 00000 n 
+0004157098 00000 n 
+0004157348 00000 n 
+0004157601 00000 n 
+0004157859 00000 n 
+0004158116 00000 n 
+0004158374 00000 n 
+0004158631 00000 n 
+0004158889 00000 n 
+0004159145 00000 n 
+0004159401 00000 n 
+0004159653 00000 n 
+0004159903 00000 n 
+0004160153 00000 n 
+0004160403 00000 n 
+0004160653 00000 n 
+0004160903 00000 n 
+0004161159 00000 n 
+0004161415 00000 n 
+0004161673 00000 n 
+0004161930 00000 n 
+0004162188 00000 n 
+0004162445 00000 n 
+0004162695 00000 n 
+0004162950 00000 n 
+0004163200 00000 n 
+0004163456 00000 n 
+0004163712 00000 n 
+0004163964 00000 n 
+0004164218 00000 n 
+0004164476 00000 n 
+0004164729 00000 n 
+0004164978 00000 n 
+0004165228 00000 n 
+0004165477 00000 n 
+0004165727 00000 n 
+0004165974 00000 n 
+0004166216 00000 n 
+0004166466 00000 n 
+0004166715 00000 n 
+0004166965 00000 n 
+0004167214 00000 n 
+0004167458 00000 n 
+0004167711 00000 n 
+0004167969 00000 n 
+0004168225 00000 n 
+0004168479 00000 n 
+0004168731 00000 n 
+0004168989 00000 n 
+0004169242 00000 n 
+0004169494 00000 n 
+0004169752 00000 n 
+0004170009 00000 n 
+0004170267 00000 n 
+0004170524 00000 n 
+0004170776 00000 n 
+0004171031 00000 n 
+0004171289 00000 n 
+0004171545 00000 n 
+0004171801 00000 n 
+0004172056 00000 n 
+0004172308 00000 n 
+0004172566 00000 n 
+0004172823 00000 n 
+0004173076 00000 n 
+0004173329 00000 n 
+0004173587 00000 n 
+0004173844 00000 n 
+0004174100 00000 n 
+0004174350 00000 n 
+0004174600 00000 n 
+0004174850 00000 n 
+0004175105 00000 n 
+0004175357 00000 n 
+0004175607 00000 n 
+0004175857 00000 n 
+0004176107 00000 n 
+0004176361 00000 n 
+0004176619 00000 n 
+0004176876 00000 n 
+0004177134 00000 n 
+0004177390 00000 n 
+0004177646 00000 n 
+0004177900 00000 n 
+0004178154 00000 n 
+0004178412 00000 n 
+0004178669 00000 n 
+0004178927 00000 n 
+0004179183 00000 n 
+0004179438 00000 n 
+0004179690 00000 n 
+0004179948 00000 n 
+0004180205 00000 n 
+0004180463 00000 n 
+0004180720 00000 n 
+0004180978 00000 n 
+0004181232 00000 n 
+0004181485 00000 n 
+0004181743 00000 n 
+0004182000 00000 n 
+0004182254 00000 n 
+0004182506 00000 n 
+0004182764 00000 n 
+0004183021 00000 n 
+0004183277 00000 n 
+0004183527 00000 n 
+0004183783 00000 n 
+0004184039 00000 n 
+0004184297 00000 n 
+0004184554 00000 n 
+0004184812 00000 n 
+0004185069 00000 n 
+0004185319 00000 n 
+0004185577 00000 n 
+0004185834 00000 n 
+0004186092 00000 n 
+0004186349 00000 n 
+0004186604 00000 n 
+0004186854 00000 n 
+0004187107 00000 n 
+0004187365 00000 n 
+0004187622 00000 n 
+0004187880 00000 n 
+0004188137 00000 n 
+0004188395 00000 n 
+0004188648 00000 n 
+0004188898 00000 n 
+0004189151 00000 n 
+0004189401 00000 n 
+0004189656 00000 n 
+0004189912 00000 n 
+0004190162 00000 n 
+0004190417 00000 n 
+0004190675 00000 n 
+0004190931 00000 n 
+0004191187 00000 n 
+0004191445 00000 n 
+0004191699 00000 n 
+0004191948 00000 n 
+0004192198 00000 n 
+0004192447 00000 n 
+0004192691 00000 n 
+0004192942 00000 n 
+0004193200 00000 n 
+0004193457 00000 n 
+0004193715 00000 n 
+0004193971 00000 n 
+0004194225 00000 n 
+0004194478 00000 n 
+0004194736 00000 n 
+0004194993 00000 n 
+0004195251 00000 n 
+0004195508 00000 n 
+0004195766 00000 n 
+0004196022 00000 n 
+0004196278 00000 n 
+0004196536 00000 n 
+0004196793 00000 n 
+0004197051 00000 n 
+0004197308 00000 n 
+0004197566 00000 n 
+0004197823 00000 n 
+0004198078 00000 n 
+0004198336 00000 n 
+0004198592 00000 n 
+0004198848 00000 n 
+0004199106 00000 n 
+0004199358 00000 n 
+0004199613 00000 n 
+0004199868 00000 n 
+0004200118 00000 n 
+0004200368 00000 n 
+0004200623 00000 n 
+0004200877 00000 n 
+0004201127 00000 n 
+0004201385 00000 n 
+0004201639 00000 n 
+0004201889 00000 n 
+0004202142 00000 n 
+0004202392 00000 n 
+0004202642 00000 n 
+0004202895 00000 n 
+0004203147 00000 n 
+0004203401 00000 n 
+0004203651 00000 n 
+0004203901 00000 n 
+0004204155 00000 n 
+0004204411 00000 n 
+0004204661 00000 n 
+0004204916 00000 n 
+0004205166 00000 n 
+0004205420 00000 n 
+0004205678 00000 n 
+0004205930 00000 n 
+0004206180 00000 n 
+0004206430 00000 n 
+0004206680 00000 n 
+0004206930 00000 n 
+0004207185 00000 n 
+0004207443 00000 n 
+0004207697 00000 n 
+0004207947 00000 n 
+0004208208 00000 n 
+0004208474 00000 n 
+0004208738 00000 n 
+0004209002 00000 n 
+0004209268 00000 n 
+0004209533 00000 n 
+0004209799 00000 n 
+0004210064 00000 n 
+0004210330 00000 n 
+0004210586 00000 n 
+0004210844 00000 n 
+0004211101 00000 n 
+0004211359 00000 n 
+0004211616 00000 n 
+0004211874 00000 n 
+0004212131 00000 n 
+0004212389 00000 n 
+0004212646 00000 n 
+0004212904 00000 n 
+0004213160 00000 n 
+0004213416 00000 n 
+0004213674 00000 n 
+0004213931 00000 n 
+0004214189 00000 n 
+0004214443 00000 n 
+0004214693 00000 n 
+0004214949 00000 n 
+0004215205 00000 n 
+0004215463 00000 n 
+0004215720 00000 n 
+0004215978 00000 n 
+0004216235 00000 n 
+0004216485 00000 n 
+0004216743 00000 n 
+0004217000 00000 n 
+0004217258 00000 n 
+0004217515 00000 n 
+0004217770 00000 n 
+0004218022 00000 n 
+0004218280 00000 n 
+0004218537 00000 n 
+0004218791 00000 n 
+0004219043 00000 n 
+0004219301 00000 n 
+0004219558 00000 n 
+0004219816 00000 n 
+0004220070 00000 n 
+0004220322 00000 n 
+0004220580 00000 n 
+0004220830 00000 n 
+0004221084 00000 n 
+0004221342 00000 n 
+0004221595 00000 n 
+0004221847 00000 n 
+0004222105 00000 n 
+0004222360 00000 n 
+0004222610 00000 n 
+0004222866 00000 n 
+0004223122 00000 n 
+0004223380 00000 n 
+0004223637 00000 n 
+0004223895 00000 n 
+0004224152 00000 n 
+0004224410 00000 n 
+0004224667 00000 n 
+0004224925 00000 n 
+0004225182 00000 n 
+0004225440 00000 n 
+0004225696 00000 n 
+0004225952 00000 n 
+0004226210 00000 n 
+0004226467 00000 n 
+0004226723 00000 n 
+0004226979 00000 n 
+0004227233 00000 n 
+0004227485 00000 n 
+0004227751 00000 n 
+0004228016 00000 n 
+0004228282 00000 n 
+0004228547 00000 n 
+0004228813 00000 n 
+0004229078 00000 n 
+0004229344 00000 n 
+0004229609 00000 n 
+0004229875 00000 n 
+0004230139 00000 n 
+0004230403 00000 n 
+0004230662 00000 n 
+0004230920 00000 n 
+0004231177 00000 n 
+0004231435 00000 n 
+0004231692 00000 n 
+0004231950 00000 n 
+0004232207 00000 n 
+0004232465 00000 n 
+0004232721 00000 n 
+0004232977 00000 n 
+0004233235 00000 n 
+0004233492 00000 n 
+0004233750 00000 n 
+0004234007 00000 n 
+0004234265 00000 n 
+0004234522 00000 n 
+0004234780 00000 n 
+0004235037 00000 n 
+0004235295 00000 n 
+0004235551 00000 n 
+0004235806 00000 n 
+0004236056 00000 n 
+0004236306 00000 n 
+0004236562 00000 n 
+0004236818 00000 n 
+0004237076 00000 n 
+0004237333 00000 n 
+0004237587 00000 n 
+0004237840 00000 n 
+0004238098 00000 n 
+0004238355 00000 n 
+0004238613 00000 n 
+0004238870 00000 n 
+0004239126 00000 n 
+0004239376 00000 n 
+0004239634 00000 n 
+0004239891 00000 n 
+0004240149 00000 n 
+0004240406 00000 n 
+0004240659 00000 n 
+0004240913 00000 n 
+0004241171 00000 n 
+0004241428 00000 n 
+0004241686 00000 n 
+0004241942 00000 n 
+0004242192 00000 n 
+0004242448 00000 n 
+0004242704 00000 n 
+0004242962 00000 n 
+0004243219 00000 n 
+0004243472 00000 n 
+0004243726 00000 n 
+0004243984 00000 n 
+0004244238 00000 n 
+0004244488 00000 n 
+0004244746 00000 n 
+0004245003 00000 n 
+0004245261 00000 n 
+0004245511 00000 n 
+0004245764 00000 n 
+0004246014 00000 n 
+0004246268 00000 n 
+0004246526 00000 n 
+0004246783 00000 n 
+0004247041 00000 n 
+0004247297 00000 n 
+0004247553 00000 n 
+0004247811 00000 n 
+0004248061 00000 n 
+0004248319 00000 n 
+0004248576 00000 n 
+0004248834 00000 n 
+0004249091 00000 n 
+0004249349 00000 n 
+0004249599 00000 n 
+0004249855 00000 n 
+0004250111 00000 n 
+0004250369 00000 n 
+0004250626 00000 n 
+0004250884 00000 n 
+0004251139 00000 n 
+0004251391 00000 n 
+0004251649 00000 n 
+0004251906 00000 n 
+0004252164 00000 n 
+0004252421 00000 n 
+0004252679 00000 n 
+0004252936 00000 n 
+0004253188 00000 n 
+0004253444 00000 n 
+0004253698 00000 n 
+0004253948 00000 n 
+0004254206 00000 n 
+0004254463 00000 n 
+0004254721 00000 n 
+0004254978 00000 n 
+0004255232 00000 n 
+0004255482 00000 n 
+0004255734 00000 n 
+0004255992 00000 n 
+0004256249 00000 n 
+0004256507 00000 n 
+0004256764 00000 n 
+0004257017 00000 n 
+0004257271 00000 n 
+0004257529 00000 n 
+0004257784 00000 n 
+0004258034 00000 n 
+0004258284 00000 n 
+0004258539 00000 n 
+0004258797 00000 n 
+0004259053 00000 n 
+0004259305 00000 n 
+0004259559 00000 n 
+0004259817 00000 n 
+0004260074 00000 n 
+0004260332 00000 n 
+0004260583 00000 n 
+0004260837 00000 n 
+0004261095 00000 n 
+0004261352 00000 n 
+0004261610 00000 n 
+0004261866 00000 n 
+0004262122 00000 n 
+0004262380 00000 n 
+0004262630 00000 n 
+0004262888 00000 n 
+0004263145 00000 n 
+0004263403 00000 n 
+0004263660 00000 n 
+0004263912 00000 n 
+0004264167 00000 n 
+0004264423 00000 n 
+0004264673 00000 n 
+0004264923 00000 n 
+0004265173 00000 n 
+0004265423 00000 n 
+0004265673 00000 n 
+0004265923 00000 n 
+0004266173 00000 n 
+0004266423 00000 n 
+0004266672 00000 n 
+0004266922 00000 n 
+0004267167 00000 n 
+0004267411 00000 n 
+0004267669 00000 n 
+0004267922 00000 n 
+0004268172 00000 n 
+0004268421 00000 n 
+0004268671 00000 n 
+0004268919 00000 n 
+0004269165 00000 n 
+0004269410 00000 n 
+0004269663 00000 n 
+0004269913 00000 n 
+0004270174 00000 n 
+0004270434 00000 n 
+0004270690 00000 n 
+0004270946 00000 n 
+0004271205 00000 n 
+0004271467 00000 n 
+0004271723 00000 n 
+0004271980 00000 n 
+0004272236 00000 n 
+0004272497 00000 n 
+0004272761 00000 n 
+0004273023 00000 n 
+0004273285 00000 n 
+0004273546 00000 n 
+0004273804 00000 n 
+0004274068 00000 n 
+0004274331 00000 n 
+0004274595 00000 n 
+0004274858 00000 n 
+0004275122 00000 n 
+0004275385 00000 n 
+0004275643 00000 n 
+0004275900 00000 n 
+0004276158 00000 n 
+0004276414 00000 n 
+0004276674 00000 n 
+0004276938 00000 n 
+0004277201 00000 n 
+0004277465 00000 n 
+0004277727 00000 n 
+0004277989 00000 n 
+0004278251 00000 n 
+0004278509 00000 n 
+0004278773 00000 n 
+0004279036 00000 n 
+0004279300 00000 n 
+0004279563 00000 n 
+0004279827 00000 n 
+0004280086 00000 n 
+0004280346 00000 n 
+0004280610 00000 n 
+0004280873 00000 n 
+0004281137 00000 n 
+0004281399 00000 n 
+0004281661 00000 n 
+0004281917 00000 n 
+0004282181 00000 n 
+0004282444 00000 n 
+0004282708 00000 n 
+0004282971 00000 n 
+0004283233 00000 n 
+0004283489 00000 n 
+0004283753 00000 n 
+0004284016 00000 n 
+0004284280 00000 n 
+0004284543 00000 n 
+0004284807 00000 n 
+0004285070 00000 n 
+0004285328 00000 n 
+0004285590 00000 n 
+0004285852 00000 n 
+0004286116 00000 n 
+0004286377 00000 n 
+0004286633 00000 n 
+0004286891 00000 n 
+0004287155 00000 n 
+0004287418 00000 n 
+0004287677 00000 n 
+0004287933 00000 n 
+0004288189 00000 n 
+0004288445 00000 n 
+0004288701 00000 n 
+0004288958 00000 n 
+0004289214 00000 n 
+0004289470 00000 n 
+0004289730 00000 n 
+0004289990 00000 n 
+0004290246 00000 n 
+0004290498 00000 n 
+0004290744 00000 n 
+0004290986 00000 n 
+0004291234 00000 n 
+0004291476 00000 n 
+0004291708 00000 n 
+0004291909 00000 n 
+0004292093 00000 n 
+0004292277 00000 n 
+0004292463 00000 n 
+0004292648 00000 n 
+0004292834 00000 n 
+0004293019 00000 n 
+0004293205 00000 n 
+0004293390 00000 n 
+0004293576 00000 n 
+0004293761 00000 n 
+0004293947 00000 n 
+0004294131 00000 n 
+0004294315 00000 n 
+0004294501 00000 n 
+0004294686 00000 n 
+0004294872 00000 n 
+0004295057 00000 n 
+0004295243 00000 n 
+0004295426 00000 n 
+0004295612 00000 n 
+0004295797 00000 n 
+0004295983 00000 n 
+0004296168 00000 n 
+0004296354 00000 n 
+0004296538 00000 n 
+0004296722 00000 n 
+0004296908 00000 n 
+0004297093 00000 n 
+0004297279 00000 n 
+0004297464 00000 n 
+0004297650 00000 n 
+0004297839 00000 n 
+0004298031 00000 n 
+0004298221 00000 n 
+0004298413 00000 n 
+0004298602 00000 n 
+0004298789 00000 n 
+0004298978 00000 n 
+0004299167 00000 n 
+0004299359 00000 n 
+0004299549 00000 n 
+0004299741 00000 n 
+0004299931 00000 n 
+0004300123 00000 n 
+0004300310 00000 n 
+0004300487 00000 n 
+0004300665 00000 n 
+0004300842 00000 n 
+0004301020 00000 n 
+0004301197 00000 n 
+0004301375 00000 n 
+0004301552 00000 n 
+0004301730 00000 n 
+0004301906 00000 n 
+0004302082 00000 n 
+0004302260 00000 n 
+0004302437 00000 n 
+0004302618 00000 n 
+0004302804 00000 n 
+0004302990 00000 n 
+0004303220 00000 n 
+0004303460 00000 n 
+0004303638 00000 n 
+0004303834 00000 n 
+0004304035 00000 n 
+0004304287 00000 n 
+0004304537 00000 n 
+0004304790 00000 n 
+0004305022 00000 n 
+0004305237 00000 n 
+0004305424 00000 n 
+0004305617 00000 n 
+0004305828 00000 n 
+0004306030 00000 n 
+0004306242 00000 n 
+0004306454 00000 n 
+0004306666 00000 n 
+0004306880 00000 n 
+0004307098 00000 n 
+0004307299 00000 n 
+0004307503 00000 n 
+0004307707 00000 n 
+0004307911 00000 n 
+0004308115 00000 n 
+0004308319 00000 n 
+0004308520 00000 n 
+0004308767 00000 n 
+0004309019 00000 n 
+0004309271 00000 n 
+0004309523 00000 n 
+0004309775 00000 n 
+0004310031 00000 n 
+0004310289 00000 n 
+0004310529 00000 n 
+0004310773 00000 n 
+0004311017 00000 n 
+0004311261 00000 n 
+0004311505 00000 n 
+0004311749 00000 n 
+0004311993 00000 n 
+0004312237 00000 n 
+0004312481 00000 n 
+0004312725 00000 n 
+0004312969 00000 n 
+0004313213 00000 n 
+0004313482 00000 n 
+0004313767 00000 n 
+0004314059 00000 n 
+0004314353 00000 n 
+0004314642 00000 n 
+0004314926 00000 n 
+0004315210 00000 n 
+0004315494 00000 n 
+0004315778 00000 n 
+0004316062 00000 n 
+0004316255 00000 n 
+0004316452 00000 n 
+0004316646 00000 n 
+0004316819 00000 n 
+0004316953 00000 n 
+0004317080 00000 n 
+0004317207 00000 n 
+0004317333 00000 n 
+0004317460 00000 n 
+0004317587 00000 n 
+0004317714 00000 n 
+0004317840 00000 n 
+0004317967 00000 n 
+0004318094 00000 n 
+0004318221 00000 n 
+0004318347 00000 n 
+0004318474 00000 n 
+0004318601 00000 n 
+0004318728 00000 n 
+0004318855 00000 n 
+0004318981 00000 n 
+0004319108 00000 n 
+0004319235 00000 n 
+0004319362 00000 n 
+0004319488 00000 n 
+0004319615 00000 n 
+0004319742 00000 n 
+0004319869 00000 n 
+0004319995 00000 n 
+0004320122 00000 n 
+0004320249 00000 n 
+0004320376 00000 n 
+0004320501 00000 n 
+0004320628 00000 n 
+0004320755 00000 n 
+0004320882 00000 n 
+0004321008 00000 n 
+0004321135 00000 n 
+0004321262 00000 n 
+0004321389 00000 n 
+0004321515 00000 n 
+0004321642 00000 n 
+0004321769 00000 n 
+0004321896 00000 n 
+0004322023 00000 n 
+0004322149 00000 n 
+0004322276 00000 n 
+0004322403 00000 n 
+0004322530 00000 n 
+0004322656 00000 n 
+0004322783 00000 n 
+0004322910 00000 n 
+0004323037 00000 n 
+0004323163 00000 n 
+0004323290 00000 n 
+0004323417 00000 n 
+0004323544 00000 n 
+0004323671 00000 n 
+0004323798 00000 n 
+0004323925 00000 n 
+0004324052 00000 n 
+0004324179 00000 n 
+0004324306 00000 n 
+0004324433 00000 n 
+0004324560 00000 n 
+0004324685 00000 n 
+0004324811 00000 n 
+0004324938 00000 n 
+0004325065 00000 n 
+0004325192 00000 n 
+0004325318 00000 n 
+0004325445 00000 n 
+0004325572 00000 n 
+0004325699 00000 n 
+0004325825 00000 n 
+0004325951 00000 n 
+0004326076 00000 n 
+0004326201 00000 n 
+0004326325 00000 n 
+0004326450 00000 n 
+0004326575 00000 n 
+0004326700 00000 n 
+0004326824 00000 n 
+0004326949 00000 n 
+0004327074 00000 n 
+0004327199 00000 n 
+0004327324 00000 n 
+0004327448 00000 n 
+0004327573 00000 n 
+0004327698 00000 n 
+0004327823 00000 n 
+0004327947 00000 n 
+0004328072 00000 n 
+0004328197 00000 n 
+0004328322 00000 n 
+0004328446 00000 n 
+0004328573 00000 n 
+0004328710 00000 n 
+0004328838 00000 n 
+0004328968 00000 n 
+0004329097 00000 n 
+0004329229 00000 n 
+0004329360 00000 n 
+0004329488 00000 n 
+0004329621 00000 n 
+0004329763 00000 n 
+0004329908 00000 n 
+0004330053 00000 n 
+0004330197 00000 n 
+0004330339 00000 n 
+0004330481 00000 n 
+0004330624 00000 n 
+0004330767 00000 n 
+0004330910 00000 n 
+0004331053 00000 n 
+0004331196 00000 n 
+0004331339 00000 n 
+0004331482 00000 n 
+0004331624 00000 n 
+0004331766 00000 n 
+0004331908 00000 n 
+0004332050 00000 n 
+0004332192 00000 n 
+0004332334 00000 n 
+0004332476 00000 n 
+0004332619 00000 n 
+0004332762 00000 n 
+0004332905 00000 n 
+0004333047 00000 n 
+0004333188 00000 n 
+0004333331 00000 n 
+0004333473 00000 n 
+0004333615 00000 n 
+0004333757 00000 n 
+0004333898 00000 n 
+0004334039 00000 n 
+0004334180 00000 n 
+0004334321 00000 n 
+0004334463 00000 n 
+0004334606 00000 n 
+0004334748 00000 n 
+0004334889 00000 n 
+0004335030 00000 n 
+0004335171 00000 n 
+0004335314 00000 n 
+0004335457 00000 n 
+0004335599 00000 n 
+0004335741 00000 n 
+0004335883 00000 n 
+0004336025 00000 n 
+0004336167 00000 n 
+0004336308 00000 n 
+0004336450 00000 n 
+0004336593 00000 n 
+0004336736 00000 n 
+0004336879 00000 n 
+0004337022 00000 n 
+0004337165 00000 n 
+0004337308 00000 n 
+0004337450 00000 n 
+0004337591 00000 n 
+0004337732 00000 n 
+0004337873 00000 n 
+0004338016 00000 n 
+0004338161 00000 n 
+0004338305 00000 n 
+0004338448 00000 n 
+0004338589 00000 n 
+0004338731 00000 n 
+0004338874 00000 n 
+0004339017 00000 n 
+0004339160 00000 n 
+0004339302 00000 n 
+0004339445 00000 n 
+0004339588 00000 n 
+0004339731 00000 n 
+0004339875 00000 n 
+0004340020 00000 n 
+0004340163 00000 n 
+0004340305 00000 n 
+0004340448 00000 n 
+0004340590 00000 n 
+0004340731 00000 n 
+0004340872 00000 n 
+0004341013 00000 n 
+0004341154 00000 n 
+0004341296 00000 n 
+0004341439 00000 n 
+0004341581 00000 n 
+0004341724 00000 n 
+0004341867 00000 n 
+0004342010 00000 n 
+0004342153 00000 n 
+0004342296 00000 n 
+0004342439 00000 n 
+0004342582 00000 n 
+0004342725 00000 n 
+0004342867 00000 n 
+0004343008 00000 n 
+0004343151 00000 n 
+0004343293 00000 n 
+0004343434 00000 n 
+0004343575 00000 n 
+0004343716 00000 n 
+0004343858 00000 n 
+0004344001 00000 n 
+0004344143 00000 n 
+0004344285 00000 n 
+0004344427 00000 n 
+0004344569 00000 n 
+0004344712 00000 n 
+0004344855 00000 n 
+0004344998 00000 n 
+0004345140 00000 n 
+0004345282 00000 n 
+0004345424 00000 n 
+0004345565 00000 n 
+0004345705 00000 n 
+0004345837 00000 n 
+0004345962 00000 n 
+0004346087 00000 n 
+0004346212 00000 n 
+0004346337 00000 n 
+0004346462 00000 n 
+0004346587 00000 n 
+0004346711 00000 n 
+0004346834 00000 n 
+0004346958 00000 n 
+0004347089 00000 n 
+0004347219 00000 n 
+0004347349 00000 n 
+0004347481 00000 n 
+0004347618 00000 n 
+0004347760 00000 n 
+0004347901 00000 n 
+0004348047 00000 n 
+0004348198 00000 n 
+0004348337 00000 n 
+0004348413 00000 n 
+0004348547 00000 n 
+0004348673 00000 n 
+0004348800 00000 n 
+0004348927 00000 n 
+0004349053 00000 n 
+0004349180 00000 n 
+0004349307 00000 n 
+0004349434 00000 n 
+0004349561 00000 n 
+0004349688 00000 n 
+0004349815 00000 n 
+0004349940 00000 n 
+0004350065 00000 n 
+0004350190 00000 n 
+0004350315 00000 n 
+0004350443 00000 n 
+0004350578 00000 n 
+0004350722 00000 n 
+0004350865 00000 n 
+0004351008 00000 n 
+0004351149 00000 n 
+0004351291 00000 n 
+0004351432 00000 n 
+0004351574 00000 n 
+0004351717 00000 n 
+0004351859 00000 n 
+0004352001 00000 n 
+0004352144 00000 n 
+0004352287 00000 n 
+0004352429 00000 n 
+0004352571 00000 n 
+0004352714 00000 n 
+0004352856 00000 n 
+0004352997 00000 n 
+0004353138 00000 n 
+0004353271 00000 n 
+0004353395 00000 n 
+0004353522 00000 n 
+0004353651 00000 n 
+0004353727 00000 n 
+0004353861 00000 n 
+0004353987 00000 n 
+0004354121 00000 n 
+0004354264 00000 n 
+0004354406 00000 n 
+0004354539 00000 n 
+0004354642 00000 n 
+0004354775 00000 n 
+0004354848 00000 n 
+0004354939 00000 n 
+0004354981 00000 n 
+0004355173 00000 n 
 trailer
 << /Size 14895
 /Root 14893 0 R
 /Info 14894 0 R
-/ID [<D9C854AA16E022E2ED757343818E1C6D> <D9C854AA16E022E2ED757343818E1C6D>] >>
+/ID [<EF88774CE2FF710810674F371F0DE3AA> <EF88774CE2FF710810674F371F0DE3AA>] >>
 startxref
-4355496
+4355492
 %%EOF

Modified: branches/samba/experimental/docs/Samba3-Developers-Guide.pdf
===================================================================
--- branches/samba/experimental/docs/Samba3-Developers-Guide.pdf	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/docs/Samba3-Developers-Guide.pdf	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1333,15 +1333,16 @@
 /ProcSet [ /PDF /Text ]
 >> endobj
 885 0 obj <<
-/Length 1100      
+/Length 1098      
 /Filter /FlateDecode
 >>
 stream
-xÚÅ™MÛ6†ïþ<J at wB¿s³7ÊÖ鮽µ•AK»n±@iS´ýûꃱ-UÎz\ô"6õù¾Ã!)Iñ«âf¶¨g/^[¢C'ê_„Cp^éAG-êñ¾ØÎ略ż¼B+‹W»mñW©l±ûøé·Ýç?Úßoþ||Ø•ê7D4"ÑéDDe!H'®[䏹åµJíx«¨WMƒuyå°Ø4×ïšë²¹®èªŠ›‘0Zƒ±º¿ÿ~$€ãr€yƒ»opUŒn™Uõì÷Yj%…è
-gE !X‡âç§ÙûR<Пo„$…‚ø»iú$¼oRøb;ûþ€aA:ê©D°^O1¨9BqÀÐV‚‘ÅÈc9Í8K›$ûZ[  >jˆ¶óôñq( uà(|” pÓìÅ´Jj—ƒÊ.C?¿°4H¥¾¸85+(FÌ!†14ãÀ+{BWEcµšØý4÷
-´$y•>M®×··óÅz3/£,êÒÈb½ÙŽÉ„ Â9ýÊA;˜”£ahj:ÝOKŠRú³†¢’¥ÚœÁhm‰{¶(GÓO¥þÐŽ¦µ¥^Ö·ÕX©òTƒl_"^ÒŽZ¤„¾@Ï´§Éã;¶©^W›ju=Ö9Åé©Îå,bHß»G³QZä¹Ç`dŒ,ƒÑÉáb yÉü|Æ°îæd¦Ùç‚ù²<§¥Ù‡´4kIK3î/Íô{^šÇ³™3¼^e£+;.zÔžSº\¤Ù4û'K—43ù9¤UѳÙZ#[Ë`ô’¦Å1òêeLûR…ö1±ÏýyÊ÷ëz¹^
-³;[qØ*ÒŠHÿ_Í晴=cïÞÂjI7˜£1¿JÛˆy©vÕĤ¾@|£éûqüíòfÕ…»©þ}z~†ic#}2g"ƒ‘½d0²F–”Áè$!Ðh^4d<[Œlƒ‘ma0²-F/©¶¤¹fíÒ‰ŠHtÆYÖuµj7‹w5òÙáGܸÀÐ#u8ˆÕ§ô¨¡ÝÔ<ý´ûÜŽÝ7Ý)ãDd,ÛË`ôö¢å™3†ÁÈ1YR#KÊ`ô…ŒN9ÑŸî'rꍶ'j¡‹øŸ!<ÍXk%¨yO\§±4øàúÓäËmÚ5åÛå¶{QZY¼[¸¯ÏèÏ@+Y¢2oלqÿ'¢±•ö&"«FÉŒ iº´õðíÝ¢ÚŒÕòŠ&Æ%âªèÀ†=±íLÆjw‘èšâÒNÿ0|µ½Þ,ïÇ·úÆ0á"±“­ˆæHòѝ~ž/Ï;H7"`DVÆ2MÆ*ÝÔËóV©.ûŒœCFŸ
-Dö•ÁèM+PÐ<EŒ¬(ƒÑ+Ê@dEŒNQèü‚¼å0zE9ŒNQ¢W”ÃhG"HœÚsâôëîÕ‘‘ ‡ow¾æÍÑ?òB
+xÚÅ™Moã6†ïþ<J at 3K¿{³mêmb§¶¶Åb±—nÜ"Àm·hû÷;Ô׶T¹ñ¸èE2lêò}‡CÒ’âg!ÅílQÏ^½¶("D‡NÔ?	‡à¼ÒƒŽZԏâ}±ß/Jm‹yy…V7»mñg©l±ûô˯»Ï¿·ßßþñô¸+?ÔoˆhD ¢Ó‰ˆÊBN\)0>¶Èr;Êk•ÚðVQ¯šëòÊa±i®ß6×es]ÑU·#a´cuÿüÃH Æå ó÷Ðàª.=2«êÙo³ÔJ
+%ÐΊ@C°ÅÇçÙûR<ҏo„$…‚ø«iú,¼oRøOb;ûî€aA:ê©D°^O1¨9BqÀÐV‚‘ÅÈc9Í8K›$ûZ[  >jˆ¶óôéi( uà(|” pÓìÅ´Jj—ƒÊ.Cï_ØN¤ÎR_\œ•
+”#æÇqà•=¡«¢±ÚMì~š{Z‹¼J÷F“ëõÝÝ|±ÞÌË(‹º4²Xo¶c2!¨pN?†rÂN#&åhÚ€šN÷Ó’"‚”þ¬¡¨d©6g0Z[âž-ÊÑôS©?4…£im©—õ]5Vª<Õ Û—ˆ¯‡FiG-RB_ gÚÓäñ‡ÛT¯«Mµºë‰âôTçr1¤ïÝ£Ù(-òÜc0²ÎF–ƒÁèäp1€Œ¼d~9cXws2ÓìsÁ|YžÓÒìCZšµ¤¥÷—fú>/ÍãÙÌ^¯2‡Ñ•=jÏ)].ÒlšÎý“¥Ë
+š™üÒª‰èYŒl-ƒ‘­e0zIÓâyõ2¦}
+©Bû˜Øçþ<åûu½\¯†Ù­¸@liE¤ß‚¯æ÷ÕÈž±wïaµ¤ÌјoÒ6b^*¤E51©/ßhú|»¼]uáßnª^†^ށaÚØHwæLd0²—FöƒÁÈ’2}$Í+Æƒgƒ‘ma0²-F¶…Áè%Õ–4׬ÝA@:Q‰Òس7˺®Ví&`ñn¢F¾8üˆzgÆp³û¸{þq÷¹„2_µPÊ8QüãÉ®2½«¨AyæDa0²5F–”ÁÈ’2}ý¢ÃMôç÷‰œz£í‰(Á"þgOÕZ	*FÞŸ.‚SŽX|pý!òûå6m‰š‰òÍrÛýñPZY¼[¯¯ÏèÏ@+Y¢2מj‡û?­tž7Ye0*HÎ`IÓ¥Ým¾½_T›±AÑĸD\¸Ã°'v›©ÂXí.]S\Úà†¯¶×›åÃøß8&\$v²ÑI>ºÁÏóåÅaéFŒÈÊX&¢ÉX¥›zyÞ*Õeƒ‘sˆÁèSÈ¾2½¢i
+š§(ƒ‘e0zEˆ¬(ƒÑ)j[—£F¯(‡Ñ)ÊAôŠrmáH‰S{Î@œ~«Ó½12äð¥Î¿yaô7ÐŒðq
 endstream
 endobj
 884 0 obj <<
@@ -13415,8 +13416,8 @@
 >> endobj
 2634 0 obj <<
 /Author()/Title()/Subject()/Creator(DBLaTeX-0.2.7)/Producer(pdfTeX-1.40.3)/Keywords()
-/CreationDate (D:20091126102937+01'00')
-/ModDate (D:20091126102937+01'00')
+/CreationDate (D:20091214094455+01'00')
+/ModDate (D:20091214094455+01'00')
 /Trapped /False
 /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6)
 >> endobj
@@ -13428,2640 +13429,2640 @@
 0000000004 00000 f 
 0000000000 00000 f 
 0000000015 00000 n 
-0000079872 00000 n 
-0000478117 00000 n 
+0000079870 00000 n 
+0000478115 00000 n 
 0000000057 00000 n 
 0000000089 00000 n 
-0000082575 00000 n 
-0000478008 00000 n 
+0000082573 00000 n 
+0000478006 00000 n 
 0000000134 00000 n 
 0000000176 00000 n 
-0000082699 00000 n 
-0000477934 00000 n 
+0000082697 00000 n 
+0000477932 00000 n 
 0000000224 00000 n 
 0000000255 00000 n 
-0000082760 00000 n 
-0000477847 00000 n 
+0000082758 00000 n 
+0000477845 00000 n 
 0000000303 00000 n 
 0000000331 00000 n 
-0000082821 00000 n 
-0000477760 00000 n 
+0000082819 00000 n 
+0000477758 00000 n 
 0000000379 00000 n 
 0000000412 00000 n 
-0000086692 00000 n 
-0000477673 00000 n 
+0000086690 00000 n 
+0000477671 00000 n 
 0000000460 00000 n 
 0000000488 00000 n 
-0000086753 00000 n 
-0000477586 00000 n 
+0000086751 00000 n 
+0000477584 00000 n 
 0000000536 00000 n 
 0000000562 00000 n 
-0000086813 00000 n 
-0000477499 00000 n 
+0000086811 00000 n 
+0000477497 00000 n 
 0000000610 00000 n 
 0000000639 00000 n 
-0000090585 00000 n 
-0000477412 00000 n 
+0000090583 00000 n 
+0000477410 00000 n 
 0000000687 00000 n 
 0000000719 00000 n 
-0000090646 00000 n 
-0000477325 00000 n 
+0000090644 00000 n 
+0000477323 00000 n 
 0000000767 00000 n 
 0000000798 00000 n 
-0000090707 00000 n 
-0000477251 00000 n 
+0000090705 00000 n 
+0000477249 00000 n 
 0000000846 00000 n 
 0000000884 00000 n 
-0000094774 00000 n 
-0000477140 00000 n 
+0000094772 00000 n 
+0000477138 00000 n 
 0000000930 00000 n 
 0000000964 00000 n 
-0000094898 00000 n 
-0000477029 00000 n 
+0000094896 00000 n 
+0000477027 00000 n 
 0000001012 00000 n 
 0000001043 00000 n 
-0000098201 00000 n 
-0000476955 00000 n 
+0000098199 00000 n 
+0000476953 00000 n 
 0000001096 00000 n 
 0000001122 00000 n 
-0000098261 00000 n 
-0000476881 00000 n 
+0000098259 00000 n 
+0000476879 00000 n 
 0000001175 00000 n 
 0000001201 00000 n 
-0000098322 00000 n 
-0000476756 00000 n 
+0000098320 00000 n 
+0000476754 00000 n 
 0000001249 00000 n 
 0000001288 00000 n 
-0000098383 00000 n 
-0000476682 00000 n 
+0000098381 00000 n 
+0000476680 00000 n 
 0000001341 00000 n 
 0000001365 00000 n 
-0000100117 00000 n 
-0000476558 00000 n 
+0000100115 00000 n 
+0000476556 00000 n 
 0000001418 00000 n 
 0000001449 00000 n 
-0000100178 00000 n 
-0000476484 00000 n 
+0000100176 00000 n 
+0000476482 00000 n 
 0000001507 00000 n 
 0000001543 00000 n 
-0000100239 00000 n 
-0000476410 00000 n 
+0000100237 00000 n 
+0000476408 00000 n 
 0000001601 00000 n 
 0000001637 00000 n 
-0000100300 00000 n 
-0000476297 00000 n 
+0000100298 00000 n 
+0000476295 00000 n 
 0000001690 00000 n 
 0000001719 00000 n 
-0000100360 00000 n 
-0000476223 00000 n 
+0000100358 00000 n 
+0000476221 00000 n 
 0000001777 00000 n 
 0000001802 00000 n 
-0000100421 00000 n 
-0000476136 00000 n 
+0000100419 00000 n 
+0000476134 00000 n 
 0000001860 00000 n 
 0000001883 00000 n 
-0000100482 00000 n 
-0000476047 00000 n 
+0000100480 00000 n 
+0000476045 00000 n 
 0000001941 00000 n 
 0000001966 00000 n 
-0000100543 00000 n 
-0000475956 00000 n 
+0000100541 00000 n 
+0000475954 00000 n 
 0000002025 00000 n 
 0000002051 00000 n 
-0000102029 00000 n 
-0000475864 00000 n 
+0000102027 00000 n 
+0000475862 00000 n 
 0000002110 00000 n 
 0000002165 00000 n 
-0000102091 00000 n 
-0000475772 00000 n 
+0000102089 00000 n 
+0000475770 00000 n 
 0000002224 00000 n 
 0000002258 00000 n 
-0000102153 00000 n 
-0000475680 00000 n 
+0000102151 00000 n 
+0000475678 00000 n 
 0000002317 00000 n 
 0000002370 00000 n 
-0000102215 00000 n 
-0000475588 00000 n 
+0000102213 00000 n 
+0000475586 00000 n 
 0000002429 00000 n 
 0000002502 00000 n 
-0000102277 00000 n 
-0000475496 00000 n 
+0000102275 00000 n 
+0000475494 00000 n 
 0000002561 00000 n 
 0000002606 00000 n 
-0000102339 00000 n 
-0000475404 00000 n 
+0000102337 00000 n 
+0000475402 00000 n 
 0000002666 00000 n 
 0000002726 00000 n 
-0000102401 00000 n 
-0000475312 00000 n 
+0000102399 00000 n 
+0000475310 00000 n 
 0000002786 00000 n 
 0000002840 00000 n 
-0000104299 00000 n 
-0000475220 00000 n 
+0000104297 00000 n 
+0000475218 00000 n 
 0000002900 00000 n 
 0000002953 00000 n 
-0000104361 00000 n 
-0000475128 00000 n 
+0000104359 00000 n 
+0000475126 00000 n 
 0000003013 00000 n 
 0000003065 00000 n 
-0000104423 00000 n 
-0000475036 00000 n 
+0000104421 00000 n 
+0000475034 00000 n 
 0000003125 00000 n 
 0000003205 00000 n 
-0000104485 00000 n 
-0000474944 00000 n 
+0000104483 00000 n 
+0000474942 00000 n 
 0000003265 00000 n 
 0000003320 00000 n 
-0000104547 00000 n 
-0000474852 00000 n 
+0000104545 00000 n 
+0000474850 00000 n 
 0000003380 00000 n 
 0000003449 00000 n 
-0000106381 00000 n 
-0000474760 00000 n 
+0000106379 00000 n 
+0000474758 00000 n 
 0000003509 00000 n 
 0000003575 00000 n 
-0000106443 00000 n 
-0000474668 00000 n 
+0000106441 00000 n 
+0000474666 00000 n 
 0000003635 00000 n 
 0000003689 00000 n 
-0000106505 00000 n 
-0000474576 00000 n 
+0000106503 00000 n 
+0000474574 00000 n 
 0000003749 00000 n 
 0000003831 00000 n 
-0000106567 00000 n 
-0000474484 00000 n 
+0000106565 00000 n 
+0000474482 00000 n 
 0000003891 00000 n 
 0000003981 00000 n 
-0000106629 00000 n 
-0000474392 00000 n 
+0000106627 00000 n 
+0000474390 00000 n 
 0000004041 00000 n 
 0000004112 00000 n 
-0000108657 00000 n 
-0000474300 00000 n 
+0000108655 00000 n 
+0000474298 00000 n 
 0000004172 00000 n 
 0000004242 00000 n 
-0000109097 00000 n 
-0000474208 00000 n 
+0000109095 00000 n 
+0000474206 00000 n 
 0000004302 00000 n 
 0000004343 00000 n 
-0000109157 00000 n 
-0000474116 00000 n 
+0000109155 00000 n 
+0000474114 00000 n 
 0000004403 00000 n 
 0000004459 00000 n 
-0000109219 00000 n 
-0000474024 00000 n 
+0000109217 00000 n 
+0000474022 00000 n 
 0000004519 00000 n 
 0000004597 00000 n 
-0000110719 00000 n 
-0000473932 00000 n 
+0000110717 00000 n 
+0000473930 00000 n 
 0000004657 00000 n 
 0000004709 00000 n 
-0000112362 00000 n 
-0000473840 00000 n 
+0000112360 00000 n 
+0000473838 00000 n 
 0000004769 00000 n 
 0000004854 00000 n 
-0000112424 00000 n 
-0000473748 00000 n 
+0000112422 00000 n 
+0000473746 00000 n 
 0000004914 00000 n 
 0000004987 00000 n 
-0000112486 00000 n 
-0000473656 00000 n 
+0000112484 00000 n 
+0000473654 00000 n 
 0000005047 00000 n 
 0000005092 00000 n 
-0000114618 00000 n 
-0000473578 00000 n 
+0000114616 00000 n 
+0000473576 00000 n 
 0000005152 00000 n 
 0000005193 00000 n 
-0000118218 00000 n 
-0000473447 00000 n 
+0000118216 00000 n 
+0000473445 00000 n 
 0000005242 00000 n 
 0000005292 00000 n 
-0000118280 00000 n 
-0000473368 00000 n 
+0000118278 00000 n 
+0000473366 00000 n 
 0000005346 00000 n 
 0000005377 00000 n 
-0000118593 00000 n 
-0000473236 00000 n 
+0000118591 00000 n 
+0000473234 00000 n 
 0000005431 00000 n 
 0000005457 00000 n 
-0000120868 00000 n 
-0000473157 00000 n 
+0000120866 00000 n 
+0000473155 00000 n 
 0000005516 00000 n 
 0000005602 00000 n 
-0000120930 00000 n 
-0000473064 00000 n 
+0000120928 00000 n 
+0000473062 00000 n 
 0000005661 00000 n 
 0000005705 00000 n 
-0000121181 00000 n 
-0000472971 00000 n 
+0000121179 00000 n 
+0000472969 00000 n 
 0000005764 00000 n 
 0000005799 00000 n 
-0000121243 00000 n 
-0000472878 00000 n 
+0000121241 00000 n 
+0000472876 00000 n 
 0000005858 00000 n 
 0000005895 00000 n 
-0000121305 00000 n 
-0000472785 00000 n 
+0000121303 00000 n 
+0000472783 00000 n 
 0000005954 00000 n 
 0000005991 00000 n 
-0000123072 00000 n 
-0000472692 00000 n 
+0000123070 00000 n 
+0000472690 00000 n 
 0000006050 00000 n 
 0000006087 00000 n 
-0000123134 00000 n 
-0000472599 00000 n 
+0000123132 00000 n 
+0000472597 00000 n 
 0000006146 00000 n 
 0000006183 00000 n 
-0000123196 00000 n 
-0000472520 00000 n 
+0000123194 00000 n 
+0000472518 00000 n 
 0000006242 00000 n 
 0000006279 00000 n 
-0000123258 00000 n 
-0000472427 00000 n 
+0000123256 00000 n 
+0000472425 00000 n 
 0000006333 00000 n 
 0000006357 00000 n 
-0000125520 00000 n 
-0000472334 00000 n 
+0000125518 00000 n 
+0000472332 00000 n 
 0000006411 00000 n 
 0000006450 00000 n 
-0000125582 00000 n 
-0000472241 00000 n 
+0000125580 00000 n 
+0000472239 00000 n 
 0000006504 00000 n 
 0000006549 00000 n 
-0000127435 00000 n 
-0000472109 00000 n 
+0000127433 00000 n 
+0000472107 00000 n 
 0000006603 00000 n 
 0000006638 00000 n 
-0000127497 00000 n 
-0000472030 00000 n 
+0000127495 00000 n 
+0000472028 00000 n 
 0000006697 00000 n 
 0000006724 00000 n 
-0000127559 00000 n 
-0000471951 00000 n 
+0000127557 00000 n 
+0000471949 00000 n 
 0000006783 00000 n 
 0000006811 00000 n 
-0000127621 00000 n 
-0000471819 00000 n 
+0000127619 00000 n 
+0000471817 00000 n 
 0000006865 00000 n 
 0000006906 00000 n 
-0000127683 00000 n 
-0000471740 00000 n 
+0000127681 00000 n 
+0000471738 00000 n 
 0000006965 00000 n 
 0000006992 00000 n 
-0000127745 00000 n 
-0000471661 00000 n 
+0000127743 00000 n 
+0000471659 00000 n 
 0000007051 00000 n 
 0000007079 00000 n 
-0000128373 00000 n 
-0000471529 00000 n 
+0000128371 00000 n 
+0000471527 00000 n 
 0000007133 00000 n 
 0000007182 00000 n 
-0000128434 00000 n 
-0000471450 00000 n 
+0000128432 00000 n 
+0000471448 00000 n 
 0000007241 00000 n 
 0000007268 00000 n 
-0000129758 00000 n 
-0000471371 00000 n 
+0000129756 00000 n 
+0000471369 00000 n 
 0000007327 00000 n 
 0000007355 00000 n 
-0000129820 00000 n 
-0000471239 00000 n 
+0000129818 00000 n 
+0000471237 00000 n 
 0000007409 00000 n 
 0000007444 00000 n 
-0000129882 00000 n 
-0000471160 00000 n 
+0000129880 00000 n 
+0000471158 00000 n 
 0000007503 00000 n 
 0000007530 00000 n 
-0000129944 00000 n 
-0000471081 00000 n 
+0000129942 00000 n 
+0000471079 00000 n 
 0000007589 00000 n 
 0000007617 00000 n 
-0000130005 00000 n 
-0000470949 00000 n 
+0000130003 00000 n 
+0000470947 00000 n 
 0000007672 00000 n 
 0000007701 00000 n 
-0000130066 00000 n 
-0000470870 00000 n 
+0000130064 00000 n 
+0000470868 00000 n 
 0000007761 00000 n 
 0000007788 00000 n 
-0000130128 00000 n 
-0000470791 00000 n 
+0000130126 00000 n 
+0000470789 00000 n 
 0000007848 00000 n 
 0000007876 00000 n 
-0000130190 00000 n 
-0000470659 00000 n 
+0000130188 00000 n 
+0000470657 00000 n 
 0000007931 00000 n 
 0000007966 00000 n 
-0000131637 00000 n 
-0000470580 00000 n 
+0000131635 00000 n 
+0000470578 00000 n 
 0000008026 00000 n 
 0000008053 00000 n 
-0000131699 00000 n 
-0000470501 00000 n 
+0000131697 00000 n 
+0000470499 00000 n 
 0000008113 00000 n 
 0000008141 00000 n 
-0000131761 00000 n 
-0000470383 00000 n 
+0000131759 00000 n 
+0000470381 00000 n 
 0000008196 00000 n 
 0000008232 00000 n 
-0000131823 00000 n 
-0000470304 00000 n 
+0000131821 00000 n 
+0000470302 00000 n 
 0000008292 00000 n 
 0000008319 00000 n 
-0000133983 00000 n 
-0000470225 00000 n 
+0000133981 00000 n 
+0000470223 00000 n 
 0000008379 00000 n 
 0000008407 00000 n 
-0000134045 00000 n 
-0000470094 00000 n 
+0000134043 00000 n 
+0000470092 00000 n 
 0000008456 00000 n 
 0000008508 00000 n 
-0000134107 00000 n 
-0000469976 00000 n 
+0000134105 00000 n 
+0000469974 00000 n 
 0000008562 00000 n 
 0000008603 00000 n 
-0000134168 00000 n 
-0000469897 00000 n 
+0000134166 00000 n 
+0000469895 00000 n 
 0000008662 00000 n 
 0000008689 00000 n 
-0000135976 00000 n 
-0000469818 00000 n 
+0000135974 00000 n 
+0000469816 00000 n 
 0000008748 00000 n 
 0000008776 00000 n 
-0000136038 00000 n 
-0000469686 00000 n 
+0000136036 00000 n 
+0000469684 00000 n 
 0000008830 00000 n 
 0000008868 00000 n 
-0000136099 00000 n 
-0000469607 00000 n 
+0000136097 00000 n 
+0000469605 00000 n 
 0000008927 00000 n 
 0000008954 00000 n 
-0000136161 00000 n 
-0000469528 00000 n 
+0000136159 00000 n 
+0000469526 00000 n 
 0000009013 00000 n 
 0000009041 00000 n 
-0000136223 00000 n 
-0000469396 00000 n 
+0000136221 00000 n 
+0000469394 00000 n 
 0000009095 00000 n 
 0000009138 00000 n 
-0000136285 00000 n 
-0000469317 00000 n 
+0000136283 00000 n 
+0000469315 00000 n 
 0000009197 00000 n 
 0000009224 00000 n 
-0000138530 00000 n 
-0000469238 00000 n 
+0000138528 00000 n 
+0000469236 00000 n 
 0000009283 00000 n 
 0000009311 00000 n 
-0000138592 00000 n 
-0000469106 00000 n 
+0000138590 00000 n 
+0000469104 00000 n 
 0000009365 00000 n 
 0000009398 00000 n 
-0000138653 00000 n 
-0000469027 00000 n 
+0000138651 00000 n 
+0000469025 00000 n 
 0000009457 00000 n 
 0000009484 00000 n 
-0000138715 00000 n 
-0000468948 00000 n 
+0000138713 00000 n 
+0000468946 00000 n 
 0000009543 00000 n 
 0000009571 00000 n 
-0000140035 00000 n 
-0000468830 00000 n 
+0000140033 00000 n 
+0000468828 00000 n 
 0000009625 00000 n 
 0000009659 00000 n 
-0000140097 00000 n 
-0000468751 00000 n 
+0000140095 00000 n 
+0000468749 00000 n 
 0000009718 00000 n 
 0000009745 00000 n 
-0000141762 00000 n 
-0000468672 00000 n 
+0000141760 00000 n 
+0000468670 00000 n 
 0000009804 00000 n 
 0000009832 00000 n 
-0000141824 00000 n 
-0000468541 00000 n 
+0000141822 00000 n 
+0000468539 00000 n 
 0000009881 00000 n 
 0000009935 00000 n 
-0000141886 00000 n 
-0000468423 00000 n 
+0000141884 00000 n 
+0000468421 00000 n 
 0000009989 00000 n 
 0000010022 00000 n 
-0000141948 00000 n 
-0000468344 00000 n 
+0000141946 00000 n 
+0000468342 00000 n 
 0000010081 00000 n 
 0000010108 00000 n 
-0000142010 00000 n 
-0000468265 00000 n 
+0000142008 00000 n 
+0000468263 00000 n 
 0000010167 00000 n 
 0000010195 00000 n 
-0000143568 00000 n 
-0000468147 00000 n 
+0000143566 00000 n 
+0000468145 00000 n 
 0000010249 00000 n 
 0000010278 00000 n 
-0000143630 00000 n 
-0000468068 00000 n 
+0000143628 00000 n 
+0000468066 00000 n 
 0000010337 00000 n 
 0000010364 00000 n 
-0000143690 00000 n 
-0000467989 00000 n 
+0000143688 00000 n 
+0000467987 00000 n 
 0000010423 00000 n 
 0000010451 00000 n 
-0000143752 00000 n 
-0000467858 00000 n 
+0000143750 00000 n 
+0000467856 00000 n 
 0000010500 00000 n 
 0000010546 00000 n 
-0000145298 00000 n 
-0000467740 00000 n 
+0000145296 00000 n 
+0000467738 00000 n 
 0000010600 00000 n 
 0000010634 00000 n 
-0000145360 00000 n 
-0000467661 00000 n 
+0000145358 00000 n 
+0000467659 00000 n 
 0000010693 00000 n 
 0000010720 00000 n 
-0000145422 00000 n 
-0000467582 00000 n 
+0000145420 00000 n 
+0000467580 00000 n 
 0000010779 00000 n 
 0000010807 00000 n 
-0000145484 00000 n 
-0000467464 00000 n 
+0000145482 00000 n 
+0000467462 00000 n 
 0000010861 00000 n 
 0000010900 00000 n 
-0000145546 00000 n 
-0000467385 00000 n 
+0000145544 00000 n 
+0000467383 00000 n 
 0000010959 00000 n 
 0000010986 00000 n 
-0000145608 00000 n 
-0000467306 00000 n 
+0000145606 00000 n 
+0000467304 00000 n 
 0000011045 00000 n 
 0000011073 00000 n 
-0000148699 00000 n 
-0000467175 00000 n 
+0000148697 00000 n 
+0000467173 00000 n 
 0000011122 00000 n 
 0000011188 00000 n 
-0000148761 00000 n 
-0000467096 00000 n 
+0000148759 00000 n 
+0000467094 00000 n 
 0000011242 00000 n 
 0000011273 00000 n 
-0000148823 00000 n 
-0000467003 00000 n 
+0000148821 00000 n 
+0000467001 00000 n 
 0000011327 00000 n 
 0000011355 00000 n 
-0000152980 00000 n 
-0000466924 00000 n 
+0000152978 00000 n 
+0000466922 00000 n 
 0000011409 00000 n 
 0000011437 00000 n 
-0000153042 00000 n 
-0000466807 00000 n 
+0000153040 00000 n 
+0000466805 00000 n 
 0000011486 00000 n 
 0000011519 00000 n 
-0000153104 00000 n 
-0000466689 00000 n 
+0000153102 00000 n 
+0000466687 00000 n 
 0000011573 00000 n 
 0000011608 00000 n 
-0000153166 00000 n 
-0000466610 00000 n 
+0000153164 00000 n 
+0000466608 00000 n 
 0000011667 00000 n 
 0000011712 00000 n 
-0000153228 00000 n 
-0000466531 00000 n 
+0000153226 00000 n 
+0000466529 00000 n 
 0000011771 00000 n 
 0000011809 00000 n 
-0000154969 00000 n 
-0000466413 00000 n 
+0000154967 00000 n 
+0000466411 00000 n 
 0000011863 00000 n 
 0000011898 00000 n 
-0000155031 00000 n 
-0000466334 00000 n 
+0000155029 00000 n 
+0000466332 00000 n 
 0000011957 00000 n 
 0000011997 00000 n 
-0000155093 00000 n 
-0000466241 00000 n 
+0000155091 00000 n 
+0000466239 00000 n 
 0000012056 00000 n 
 0000012097 00000 n 
-0000155155 00000 n 
-0000466162 00000 n 
+0000155153 00000 n 
+0000466160 00000 n 
 0000012156 00000 n 
 0000012198 00000 n 
-0000155998 00000 n 
-0000466031 00000 n 
+0000155996 00000 n 
+0000466029 00000 n 
 0000012242 00000 n 
 0000012277 00000 n 
-0000158436 00000 n 
-0000465913 00000 n 
+0000158434 00000 n 
+0000465911 00000 n 
 0000012324 00000 n 
 0000012362 00000 n 
-0000158561 00000 n 
-0000465834 00000 n 
+0000158559 00000 n 
+0000465832 00000 n 
 0000012411 00000 n 
 0000012443 00000 n 
-0000158812 00000 n 
-0000465741 00000 n 
+0000158810 00000 n 
+0000465739 00000 n 
 0000012492 00000 n 
 0000012536 00000 n 
-0000158873 00000 n 
-0000465648 00000 n 
+0000158871 00000 n 
+0000465646 00000 n 
 0000012585 00000 n 
 0000012619 00000 n 
-0000162736 00000 n 
-0000465555 00000 n 
+0000162734 00000 n 
+0000465553 00000 n 
 0000012668 00000 n 
 0000012702 00000 n 
-0000162798 00000 n 
-0000465476 00000 n 
+0000162796 00000 n 
+0000465474 00000 n 
 0000012751 00000 n 
 0000012782 00000 n 
-0000165002 00000 n 
-0000465344 00000 n 
+0000165000 00000 n 
+0000465342 00000 n 
 0000012829 00000 n 
 0000012871 00000 n 
-0000165125 00000 n 
-0000465265 00000 n 
+0000165123 00000 n 
+0000465263 00000 n 
 0000012920 00000 n 
 0000012957 00000 n 
-0000169572 00000 n 
-0000465172 00000 n 
+0000169570 00000 n 
+0000465170 00000 n 
 0000013006 00000 n 
 0000013045 00000 n 
-0000174142 00000 n 
-0000465079 00000 n 
+0000174140 00000 n 
+0000465077 00000 n 
 0000013094 00000 n 
 0000013136 00000 n 
-0000174708 00000 n 
-0000464986 00000 n 
+0000174706 00000 n 
+0000464984 00000 n 
 0000013185 00000 n 
 0000013227 00000 n 
-0000175965 00000 n 
-0000464868 00000 n 
+0000175963 00000 n 
+0000464866 00000 n 
 0000013276 00000 n 
 0000013309 00000 n 
-0000176027 00000 n 
-0000464789 00000 n 
+0000176025 00000 n 
+0000464787 00000 n 
 0000013363 00000 n 
 0000013394 00000 n 
-0000177531 00000 n 
-0000464696 00000 n 
+0000177529 00000 n 
+0000464694 00000 n 
 0000013448 00000 n 
 0000013478 00000 n 
-0000177593 00000 n 
-0000464617 00000 n 
+0000177591 00000 n 
+0000464615 00000 n 
 0000013532 00000 n 
 0000013579 00000 n 
-0000180223 00000 n 
-0000464485 00000 n 
+0000180221 00000 n 
+0000464483 00000 n 
 0000013626 00000 n 
 0000013661 00000 n 
-0000180348 00000 n 
-0000464406 00000 n 
+0000180346 00000 n 
+0000464404 00000 n 
 0000013710 00000 n 
 0000013748 00000 n 
-0000180410 00000 n 
-0000464313 00000 n 
+0000180408 00000 n 
+0000464311 00000 n 
 0000013797 00000 n 
 0000013834 00000 n 
-0000183197 00000 n 
-0000464180 00000 n 
+0000183195 00000 n 
+0000464178 00000 n 
 0000013883 00000 n 
 0000013924 00000 n 
-0000183259 00000 n 
-0000464101 00000 n 
+0000183257 00000 n 
+0000464099 00000 n 
 0000013978 00000 n 
 0000014013 00000 n 
-0000183321 00000 n 
-0000464008 00000 n 
+0000183319 00000 n 
+0000464006 00000 n 
 0000014067 00000 n 
 0000014102 00000 n 
-0000183382 00000 n 
-0000463915 00000 n 
+0000183380 00000 n 
+0000463913 00000 n 
 0000014156 00000 n 
 0000014196 00000 n 
-0000183444 00000 n 
-0000463822 00000 n 
+0000183442 00000 n 
+0000463820 00000 n 
 0000014250 00000 n 
 0000014285 00000 n 
-0000183506 00000 n 
-0000463729 00000 n 
+0000183504 00000 n 
+0000463727 00000 n 
 0000014339 00000 n 
 0000014374 00000 n 
-0000183568 00000 n 
-0000463636 00000 n 
+0000183566 00000 n 
+0000463634 00000 n 
 0000014428 00000 n 
 0000014464 00000 n 
-0000183630 00000 n 
-0000463543 00000 n 
+0000183628 00000 n 
+0000463541 00000 n 
 0000014518 00000 n 
 0000014554 00000 n 
-0000183692 00000 n 
-0000463450 00000 n 
+0000183690 00000 n 
+0000463448 00000 n 
 0000014608 00000 n 
 0000014648 00000 n 
-0000185625 00000 n 
-0000463357 00000 n 
+0000185623 00000 n 
+0000463355 00000 n 
 0000014702 00000 n 
 0000014742 00000 n 
-0000185687 00000 n 
-0000463264 00000 n 
+0000185685 00000 n 
+0000463262 00000 n 
 0000014797 00000 n 
 0000014838 00000 n 
-0000185748 00000 n 
-0000463171 00000 n 
+0000185746 00000 n 
+0000463169 00000 n 
 0000014893 00000 n 
 0000014934 00000 n 
-0000185809 00000 n 
-0000463078 00000 n 
+0000185807 00000 n 
+0000463076 00000 n 
 0000014989 00000 n 
 0000015025 00000 n 
-0000185871 00000 n 
-0000462985 00000 n 
+0000185869 00000 n 
+0000462983 00000 n 
 0000015080 00000 n 
 0000015116 00000 n 
-0000185933 00000 n 
-0000462892 00000 n 
+0000185931 00000 n 
+0000462890 00000 n 
 0000015171 00000 n 
 0000015212 00000 n 
-0000185995 00000 n 
-0000462813 00000 n 
+0000185993 00000 n 
+0000462811 00000 n 
 0000015267 00000 n 
 0000015308 00000 n 
-0000186057 00000 n 
-0000462681 00000 n 
+0000186055 00000 n 
+0000462679 00000 n 
 0000015357 00000 n 
 0000015398 00000 n 
-0000186308 00000 n 
-0000462602 00000 n 
+0000186306 00000 n 
+0000462600 00000 n 
 0000015452 00000 n 
 0000015482 00000 n 
-0000190104 00000 n 
-0000462523 00000 n 
+0000190102 00000 n 
+0000462521 00000 n 
 0000015536 00000 n 
 0000015568 00000 n 
-0000191546 00000 n 
-0000462444 00000 n 
+0000191544 00000 n 
+0000462442 00000 n 
 0000015617 00000 n 
 0000015657 00000 n 
-0000195662 00000 n 
-0000462351 00000 n 
+0000195660 00000 n 
+0000462349 00000 n 
 0000015704 00000 n 
 0000015742 00000 n 
-0000203833 00000 n 
-0000462258 00000 n 
+0000203831 00000 n 
+0000462256 00000 n 
 0000015789 00000 n 
 0000015826 00000 n 
-0000206119 00000 n 
-0000462140 00000 n 
+0000206117 00000 n 
+0000462138 00000 n 
 0000015873 00000 n 
 0000015900 00000 n 
-0000206242 00000 n 
-0000462061 00000 n 
+0000206240 00000 n 
+0000462059 00000 n 
 0000015949 00000 n 
 0000015979 00000 n 
-0000206304 00000 n 
-0000461929 00000 n 
+0000206302 00000 n 
+0000461927 00000 n 
 0000016028 00000 n 
 0000016063 00000 n 
-0000206492 00000 n 
-0000461850 00000 n 
+0000206490 00000 n 
+0000461848 00000 n 
 0000016117 00000 n 
 0000016151 00000 n 
-0000210145 00000 n 
-0000461771 00000 n 
+0000210143 00000 n 
+0000461769 00000 n 
 0000016205 00000 n 
 0000016239 00000 n 
-0000210207 00000 n 
-0000461653 00000 n 
+0000210205 00000 n 
+0000461651 00000 n 
 0000016288 00000 n 
 0000016323 00000 n 
-0000210834 00000 n 
-0000461588 00000 n 
+0000210832 00000 n 
+0000461586 00000 n 
 0000016377 00000 n 
 0000016436 00000 n 
-0000211915 00000 n 
-0000461455 00000 n 
+0000211913 00000 n 
+0000461453 00000 n 
 0000016480 00000 n 
 0000016520 00000 n 
-0000214324 00000 n 
-0000461337 00000 n 
+0000214322 00000 n 
+0000461335 00000 n 
 0000016567 00000 n 
 0000016608 00000 n 
-0000214447 00000 n 
-0000461258 00000 n 
+0000214445 00000 n 
+0000461256 00000 n 
 0000016657 00000 n 
 0000016682 00000 n 
-0000214509 00000 n 
-0000461179 00000 n 
+0000214507 00000 n 
+0000461177 00000 n 
 0000016731 00000 n 
 0000016767 00000 n 
-0000217982 00000 n 
-0000461047 00000 n 
+0000217980 00000 n 
+0000461045 00000 n 
 0000016815 00000 n 
 0000016846 00000 n 
-0000218107 00000 n 
-0000460929 00000 n 
+0000218105 00000 n 
+0000460927 00000 n 
 0000016896 00000 n 
 0000016945 00000 n 
-0000218169 00000 n 
-0000460850 00000 n 
+0000218167 00000 n 
+0000460848 00000 n 
 0000017000 00000 n 
 0000017041 00000 n 
-0000233934 00000 n 
-0000460771 00000 n 
+0000233932 00000 n 
+0000460769 00000 n 
 0000017096 00000 n 
 0000017145 00000 n 
-0000234875 00000 n 
-0000460639 00000 n 
+0000234873 00000 n 
+0000460637 00000 n 
 0000017195 00000 n 
 0000017278 00000 n 
-0000234937 00000 n 
-0000460560 00000 n 
+0000234935 00000 n 
+0000460558 00000 n 
 0000017333 00000 n 
 0000017384 00000 n 
-0000239894 00000 n 
-0000460481 00000 n 
+0000239892 00000 n 
+0000460479 00000 n 
 0000017439 00000 n 
 0000017501 00000 n 
-0000251743 00000 n 
-0000460349 00000 n 
+0000251741 00000 n 
+0000460347 00000 n 
 0000017551 00000 n 
 0000017605 00000 n 
-0000251805 00000 n 
-0000460284 00000 n 
+0000251803 00000 n 
+0000460282 00000 n 
 0000017660 00000 n 
 0000017721 00000 n 
-0000276986 00000 n 
-0000460166 00000 n 
+0000276984 00000 n 
+0000460164 00000 n 
 0000017771 00000 n 
 0000017801 00000 n 
-0000277048 00000 n 
-0000460087 00000 n 
+0000277046 00000 n 
+0000460085 00000 n 
 0000017856 00000 n 
 0000017907 00000 n 
-0000277425 00000 n 
-0000460008 00000 n 
+0000277423 00000 n 
+0000460006 00000 n 
 0000017962 00000 n 
 0000018008 00000 n 
-0000281287 00000 n 
-0000459876 00000 n 
+0000281285 00000 n 
+0000459874 00000 n 
 0000018056 00000 n 
 0000018093 00000 n 
-0000281412 00000 n 
-0000459758 00000 n 
+0000281410 00000 n 
+0000459756 00000 n 
 0000018143 00000 n 
 0000018179 00000 n 
-0000281915 00000 n 
-0000459679 00000 n 
+0000281913 00000 n 
+0000459677 00000 n 
 0000018234 00000 n 
 0000018276 00000 n 
-0000284695 00000 n 
-0000459586 00000 n 
+0000284693 00000 n 
+0000459584 00000 n 
 0000018331 00000 n 
 0000018380 00000 n 
-0000285072 00000 n 
-0000459507 00000 n 
+0000285070 00000 n 
+0000459505 00000 n 
 0000018435 00000 n 
 0000018479 00000 n 
-0000288036 00000 n 
-0000459389 00000 n 
+0000288034 00000 n 
+0000459387 00000 n 
 0000018529 00000 n 
 0000018555 00000 n 
-0000288663 00000 n 
-0000459324 00000 n 
+0000288661 00000 n 
+0000459322 00000 n 
 0000018610 00000 n 
 0000018644 00000 n 
-0000291546 00000 n 
-0000459192 00000 n 
+0000291544 00000 n 
+0000459190 00000 n 
 0000018692 00000 n 
 0000018732 00000 n 
-0000291669 00000 n 
-0000459127 00000 n 
+0000291667 00000 n 
+0000459125 00000 n 
 0000018782 00000 n 
 0000018815 00000 n 
-0000295699 00000 n 
-0000459009 00000 n 
+0000295697 00000 n 
+0000459007 00000 n 
 0000018863 00000 n 
 0000018916 00000 n 
-0000295824 00000 n 
-0000458930 00000 n 
+0000295822 00000 n 
+0000458928 00000 n 
 0000018966 00000 n 
 0000018998 00000 n 
-0000295886 00000 n 
-0000458837 00000 n 
+0000295884 00000 n 
+0000458835 00000 n 
 0000019048 00000 n 
 0000019085 00000 n 
-0000299893 00000 n 
-0000458758 00000 n 
+0000299891 00000 n 
+0000458756 00000 n 
 0000019135 00000 n 
 0000019173 00000 n 
-0000301218 00000 n 
-0000458625 00000 n 
+0000301216 00000 n 
+0000458623 00000 n 
 0000019217 00000 n 
 0000019261 00000 n 
-0000304553 00000 n 
-0000458546 00000 n 
+0000304551 00000 n 
+0000458544 00000 n 
 0000019309 00000 n 
 0000019355 00000 n 
-0000308010 00000 n 
-0000458428 00000 n 
+0000308008 00000 n 
+0000458426 00000 n 
 0000019403 00000 n 
 0000019447 00000 n 
-0000308133 00000 n 
-0000458349 00000 n 
+0000308131 00000 n 
+0000458347 00000 n 
 0000019497 00000 n 
 0000019525 00000 n 
-0000308195 00000 n 
-0000458256 00000 n 
+0000308193 00000 n 
+0000458254 00000 n 
 0000019575 00000 n 
 0000019636 00000 n 
-0000312533 00000 n 
-0000458163 00000 n 
+0000312531 00000 n 
+0000458161 00000 n 
 0000019686 00000 n 
 0000019725 00000 n 
-0000317714 00000 n 
-0000458070 00000 n 
+0000317712 00000 n 
+0000458068 00000 n 
 0000019775 00000 n 
 0000019847 00000 n 
-0000317775 00000 n 
-0000457991 00000 n 
+0000317773 00000 n 
+0000457989 00000 n 
 0000019897 00000 n 
 0000019954 00000 n 
-0000325737 00000 n 
-0000457872 00000 n 
+0000325735 00000 n 
+0000457870 00000 n 
 0000019998 00000 n 
 0000020030 00000 n 
-0000327804 00000 n 
-0000457768 00000 n 
+0000327802 00000 n 
+0000457766 00000 n 
 0000020078 00000 n 
 0000020116 00000 n 
-0000327927 00000 n 
-0000457689 00000 n 
+0000327925 00000 n 
+0000457687 00000 n 
 0000020166 00000 n 
 0000020196 00000 n 
-0000328114 00000 n 
-0000457610 00000 n 
+0000328112 00000 n 
+0000457608 00000 n 
 0000020246 00000 n 
 0000020273 00000 n 
 0000020763 00000 n 
 0000021004 00000 n 
 0000020326 00000 n 
 0000020882 00000 n 
-0000454884 00000 n 
-0000454358 00000 n 
+0000454882 00000 n 
+0000454356 00000 n 
 0000020943 00000 n 
-0000454185 00000 n 
-0000455241 00000 n 
-0000022463 00000 n 
-0000022283 00000 n 
+0000454183 00000 n 
+0000455239 00000 n 
+0000022461 00000 n 
+0000022281 00000 n 
 0000021102 00000 n 
-0000022402 00000 n 
-0000454531 00000 n 
-0000024124 00000 n 
-0000024273 00000 n 
-0000024423 00000 n 
-0000024576 00000 n 
-0000024729 00000 n 
-0000024882 00000 n 
-0000025035 00000 n 
-0000025188 00000 n 
-0000025341 00000 n 
-0000025494 00000 n 
-0000025647 00000 n 
-0000025800 00000 n 
-0000025952 00000 n 
-0000026106 00000 n 
-0000026265 00000 n 
-0000026424 00000 n 
-0000026578 00000 n 
-0000026737 00000 n 
-0000026896 00000 n 
-0000027060 00000 n 
-0000027224 00000 n 
-0000027383 00000 n 
-0000027547 00000 n 
-0000027711 00000 n 
-0000027875 00000 n 
-0000028039 00000 n 
-0000028203 00000 n 
-0000028366 00000 n 
-0000030870 00000 n 
-0000031033 00000 n 
-0000031197 00000 n 
-0000031362 00000 n 
-0000028650 00000 n 
-0000023769 00000 n 
-0000022574 00000 n 
-0000028528 00000 n 
-0000028589 00000 n 
-0000454708 00000 n 
-0000031527 00000 n 
-0000031692 00000 n 
-0000031857 00000 n 
-0000032022 00000 n 
-0000032187 00000 n 
-0000032351 00000 n 
-0000032515 00000 n 
-0000032679 00000 n 
-0000032843 00000 n 
-0000033006 00000 n 
-0000033170 00000 n 
-0000033334 00000 n 
-0000033498 00000 n 
-0000033662 00000 n 
-0000033826 00000 n 
-0000033990 00000 n 
-0000034153 00000 n 
-0000034316 00000 n 
-0000034480 00000 n 
-0000034644 00000 n 
-0000034796 00000 n 
-0000034953 00000 n 
-0000035111 00000 n 
-0000035274 00000 n 
-0000035437 00000 n 
-0000035600 00000 n 
-0000035763 00000 n 
-0000035926 00000 n 
-0000036088 00000 n 
-0000036251 00000 n 
-0000036414 00000 n 
-0000036572 00000 n 
-0000036729 00000 n 
-0000036887 00000 n 
-0000037044 00000 n 
-0000038892 00000 n 
-0000039054 00000 n 
-0000039212 00000 n 
-0000039375 00000 n 
-0000039538 00000 n 
-0000037266 00000 n 
-0000030427 00000 n 
-0000028761 00000 n 
-0000037205 00000 n 
-0000039696 00000 n 
-0000039859 00000 n 
-0000040022 00000 n 
-0000040180 00000 n 
-0000040342 00000 n 
-0000040505 00000 n 
-0000040664 00000 n 
-0000040828 00000 n 
-0000040991 00000 n 
-0000041150 00000 n 
-0000041314 00000 n 
-0000041478 00000 n 
-0000041637 00000 n 
-0000041801 00000 n 
-0000041965 00000 n 
-0000042117 00000 n 
-0000042274 00000 n 
-0000042437 00000 n 
-0000042600 00000 n 
-0000042757 00000 n 
-0000042919 00000 n 
-0000043082 00000 n 
-0000043240 00000 n 
-0000043403 00000 n 
-0000043566 00000 n 
-0000043724 00000 n 
-0000043887 00000 n 
-0000044049 00000 n 
-0000044207 00000 n 
-0000044370 00000 n 
-0000044533 00000 n 
-0000044686 00000 n 
-0000044845 00000 n 
-0000045008 00000 n 
-0000047252 00000 n 
-0000047410 00000 n 
-0000047574 00000 n 
-0000047737 00000 n 
-0000047890 00000 n 
-0000045233 00000 n 
-0000038442 00000 n 
-0000037351 00000 n 
-0000045170 00000 n 
-0000048049 00000 n 
-0000048212 00000 n 
-0000048375 00000 n 
-0000048534 00000 n 
-0000048697 00000 n 
-0000048860 00000 n 
-0000049014 00000 n 
-0000049173 00000 n 
-0000049332 00000 n 
-0000049491 00000 n 
-0000049645 00000 n 
-0000049804 00000 n 
-0000049968 00000 n 
-0000050132 00000 n 
-0000050291 00000 n 
-0000050455 00000 n 
-0000050619 00000 n 
-0000050783 00000 n 
-0000050933 00000 n 
-0000051085 00000 n 
-0000051239 00000 n 
-0000051391 00000 n 
-0000051545 00000 n 
-0000051697 00000 n 
-0000051850 00000 n 
-0000052000 00000 n 
-0000052154 00000 n 
-0000052308 00000 n 
-0000052462 00000 n 
-0000052616 00000 n 
-0000052770 00000 n 
-0000052929 00000 n 
-0000053087 00000 n 
-0000055176 00000 n 
-0000055327 00000 n 
-0000053307 00000 n 
-0000046776 00000 n 
-0000045319 00000 n 
-0000053244 00000 n 
-0000055481 00000 n 
-0000055635 00000 n 
-0000055789 00000 n 
-0000055948 00000 n 
-0000056107 00000 n 
-0000056266 00000 n 
-0000056425 00000 n 
-0000056584 00000 n 
-0000056743 00000 n 
-0000056902 00000 n 
-0000057061 00000 n 
-0000057219 00000 n 
-0000057379 00000 n 
-0000057539 00000 n 
-0000057699 00000 n 
-0000057859 00000 n 
-0000058019 00000 n 
-0000058178 00000 n 
-0000058332 00000 n 
-0000058491 00000 n 
-0000058650 00000 n 
-0000058804 00000 n 
-0000058956 00000 n 
-0000059108 00000 n 
-0000059260 00000 n 
-0000059414 00000 n 
-0000059568 00000 n 
-0000059725 00000 n 
-0000059884 00000 n 
-0000060038 00000 n 
-0000060197 00000 n 
-0000060347 00000 n 
-0000060499 00000 n 
-0000060652 00000 n 
-0000063008 00000 n 
-0000063160 00000 n 
-0000063315 00000 n 
-0000060867 00000 n 
-0000054717 00000 n 
-0000053406 00000 n 
-0000060804 00000 n 
-0000455361 00000 n 
-0000063475 00000 n 
-0000063635 00000 n 
-0000063790 00000 n 
-0000063950 00000 n 
-0000064109 00000 n 
-0000064264 00000 n 
-0000064424 00000 n 
-0000064579 00000 n 
-0000064739 00000 n 
-0000064898 00000 n 
-0000065051 00000 n 
-0000065206 00000 n 
-0000065366 00000 n 
-0000065526 00000 n 
-0000065685 00000 n 
-0000065840 00000 n 
-0000066000 00000 n 
-0000066153 00000 n 
-0000066307 00000 n 
-0000066460 00000 n 
-0000066615 00000 n 
-0000066770 00000 n 
-0000066925 00000 n 
-0000067075 00000 n 
-0000067228 00000 n 
-0000067381 00000 n 
-0000067535 00000 n 
-0000067690 00000 n 
-0000067845 00000 n 
-0000068000 00000 n 
-0000069079 00000 n 
-0000069229 00000 n 
-0000069382 00000 n 
-0000069537 00000 n 
-0000068218 00000 n 
-0000062576 00000 n 
-0000060966 00000 n 
-0000068155 00000 n 
-0000069818 00000 n 
-0000068908 00000 n 
-0000068317 00000 n 
-0000069692 00000 n 
-0000069755 00000 n 
-0000071729 00000 n 
-0000071900 00000 n 
-0000071092 00000 n 
-0000072084 00000 n 
-0000070939 00000 n 
-0000069917 00000 n 
-0000455060 00000 n 
-0000071617 00000 n 
-0000071707 00000 n 
-0000073508 00000 n 
-0000073658 00000 n 
-0000073809 00000 n 
-0000073985 00000 n 
-0000074162 00000 n 
-0000074333 00000 n 
-0000074487 00000 n 
-0000074635 00000 n 
-0000074787 00000 n 
-0000074974 00000 n 
-0000075133 00000 n 
-0000075288 00000 n 
-0000075459 00000 n 
-0000075608 00000 n 
-0000075780 00000 n 
-0000077211 00000 n 
-0000077385 00000 n 
-0000077557 00000 n 
-0000077702 00000 n 
-0000077870 00000 n 
-0000078039 00000 n 
-0000075992 00000 n 
-0000073238 00000 n 
-0000072239 00000 n 
-0000075929 00000 n 
-0000453831 00000 n 
-0000082636 00000 n 
-0000094835 00000 n 
-0000158498 00000 n 
-0000165064 00000 n 
-0000180285 00000 n 
-0000195724 00000 n 
-0000203895 00000 n 
-0000206181 00000 n 
-0000214386 00000 n 
-0000078189 00000 n 
-0000078336 00000 n 
-0000078488 00000 n 
-0000078659 00000 n 
-0000078808 00000 n 
-0000078962 00000 n 
-0000079114 00000 n 
-0000076968 00000 n 
-0000076105 00000 n 
-0000218044 00000 n 
-0000281349 00000 n 
-0000291608 00000 n 
-0000295761 00000 n 
-0000304615 00000 n 
-0000308072 00000 n 
-0000327866 00000 n 
-0000079932 00000 n 
-0000079686 00000 n 
-0000079214 00000 n 
-0000079809 00000 n 
-0000455486 00000 n 
-0000082882 00000 n 
-0000082389 00000 n 
-0000080031 00000 n 
-0000082512 00000 n 
-0000086873 00000 n 
-0000086506 00000 n 
-0000082981 00000 n 
-0000086629 00000 n 
-0000090768 00000 n 
-0000090399 00000 n 
-0000086972 00000 n 
-0000090522 00000 n 
-0000093541 00000 n 
-0000093735 00000 n 
-0000093957 00000 n 
-0000094142 00000 n 
-0000094317 00000 n 
-0000094524 00000 n 
-0000095021 00000 n 
-0000093352 00000 n 
-0000090867 00000 n 
-0000094711 00000 n 
-0000094959 00000 n 
-0000098759 00000 n 
-0000097763 00000 n 
-0000095148 00000 n 
-0000097886 00000 n 
-0000097949 00000 n 
-0000098012 00000 n 
-0000098075 00000 n 
-0000098138 00000 n 
-0000098444 00000 n 
-0000098507 00000 n 
-0000098570 00000 n 
-0000098633 00000 n 
-0000098696 00000 n 
-0000100605 00000 n 
-0000099931 00000 n 
-0000098858 00000 n 
-0000100054 00000 n 
-0000455611 00000 n 
-0000102463 00000 n 
-0000101843 00000 n 
-0000100717 00000 n 
-0000101966 00000 n 
-0000104608 00000 n 
-0000104113 00000 n 
-0000102589 00000 n 
-0000104236 00000 n 
-0000106691 00000 n 
-0000106195 00000 n 
-0000104734 00000 n 
-0000106318 00000 n 
-0000109281 00000 n 
-0000108471 00000 n 
-0000106817 00000 n 
-0000108594 00000 n 
-0000108719 00000 n 
-0000108782 00000 n 
-0000108845 00000 n 
-0000108908 00000 n 
-0000108971 00000 n 
-0000109034 00000 n 
-0000110781 00000 n 
-0000110533 00000 n 
-0000109421 00000 n 
-0000110656 00000 n 
-0000112548 00000 n 
-0000112176 00000 n 
-0000110907 00000 n 
-0000112299 00000 n 
-0000455736 00000 n 
-0000114680 00000 n 
-0000114432 00000 n 
-0000112674 00000 n 
-0000114555 00000 n 
-0000118655 00000 n 
-0000118032 00000 n 
-0000114806 00000 n 
-0000118155 00000 n 
-0000118341 00000 n 
-0000118404 00000 n 
-0000118467 00000 n 
-0000118530 00000 n 
-0000121367 00000 n 
-0000120682 00000 n 
-0000118782 00000 n 
-0000120805 00000 n 
-0000120992 00000 n 
-0000121055 00000 n 
-0000121118 00000 n 
-0000123320 00000 n 
-0000122886 00000 n 
-0000121493 00000 n 
-0000123009 00000 n 
-0000125644 00000 n 
-0000125334 00000 n 
-0000123432 00000 n 
-0000125457 00000 n 
-0000128496 00000 n 
-0000127249 00000 n 
-0000125770 00000 n 
-0000127372 00000 n 
-0000127807 00000 n 
-0000127870 00000 n 
-0000127933 00000 n 
-0000127996 00000 n 
-0000128059 00000 n 
-0000128122 00000 n 
-0000128185 00000 n 
-0000128248 00000 n 
-0000128310 00000 n 
-0000455861 00000 n 
-0000130252 00000 n 
-0000129572 00000 n 
-0000128636 00000 n 
-0000129695 00000 n 
-0000131885 00000 n 
-0000131451 00000 n 
-0000130378 00000 n 
-0000131574 00000 n 
-0000134230 00000 n 
-0000133797 00000 n 
-0000132011 00000 n 
-0000133920 00000 n 
-0000136347 00000 n 
-0000135790 00000 n 
-0000134356 00000 n 
-0000135913 00000 n 
-0000140159 00000 n 
-0000138344 00000 n 
-0000136473 00000 n 
-0000138467 00000 n 
-0000138777 00000 n 
-0000138840 00000 n 
-0000138903 00000 n 
-0000138966 00000 n 
-0000139028 00000 n 
-0000139091 00000 n 
-0000139154 00000 n 
-0000139217 00000 n 
-0000139280 00000 n 
-0000139343 00000 n 
-0000139406 00000 n 
-0000139469 00000 n 
-0000139532 00000 n 
-0000139594 00000 n 
-0000139657 00000 n 
-0000139720 00000 n 
-0000139783 00000 n 
-0000139846 00000 n 
-0000139909 00000 n 
-0000139972 00000 n 
-0000142072 00000 n 
-0000141576 00000 n 
-0000140299 00000 n 
-0000141699 00000 n 
-0000455986 00000 n 
-0000143814 00000 n 
-0000143382 00000 n 
-0000142198 00000 n 
-0000143505 00000 n 
-0000145670 00000 n 
-0000145112 00000 n 
-0000143940 00000 n 
-0000145235 00000 n 
-0000150710 00000 n 
-0000148513 00000 n 
-0000145796 00000 n 
-0000148636 00000 n 
-0000148885 00000 n 
-0000148948 00000 n 
-0000149011 00000 n 
-0000149073 00000 n 
-0000149136 00000 n 
-0000149199 00000 n 
-0000149262 00000 n 
-0000149325 00000 n 
-0000149387 00000 n 
-0000149450 00000 n 
-0000149513 00000 n 
-0000149576 00000 n 
-0000149639 00000 n 
-0000149702 00000 n 
-0000149765 00000 n 
-0000149828 00000 n 
-0000149891 00000 n 
-0000149954 00000 n 
-0000150017 00000 n 
-0000150080 00000 n 
-0000150143 00000 n 
-0000150206 00000 n 
-0000150269 00000 n 
-0000453685 00000 n 
-0000453539 00000 n 
-0000150332 00000 n 
-0000150395 00000 n 
-0000150458 00000 n 
-0000150521 00000 n 
-0000150584 00000 n 
-0000150647 00000 n 
-0000153290 00000 n 
-0000152794 00000 n 
-0000150866 00000 n 
-0000152917 00000 n 
-0000155216 00000 n 
-0000154783 00000 n 
-0000153402 00000 n 
-0000154906 00000 n 
-0000156060 00000 n 
-0000155812 00000 n 
-0000155342 00000 n 
-0000155935 00000 n 
-0000456111 00000 n 
-0000159060 00000 n 
-0000158250 00000 n 
-0000156159 00000 n 
-0000158373 00000 n 
-0000158623 00000 n 
-0000158686 00000 n 
-0000158749 00000 n 
-0000158935 00000 n 
-0000158998 00000 n 
-0000162860 00000 n 
-0000162298 00000 n 
-0000159159 00000 n 
-0000162421 00000 n 
-0000162484 00000 n 
-0000162547 00000 n 
-0000162610 00000 n 
-0000162673 00000 n 
-0000166067 00000 n 
-0000164816 00000 n 
-0000162959 00000 n 
-0000164939 00000 n 
-0000165187 00000 n 
-0000165250 00000 n 
-0000165313 00000 n 
-0000165376 00000 n 
-0000165439 00000 n 
-0000165502 00000 n 
-0000165564 00000 n 
-0000165627 00000 n 
-0000165690 00000 n 
-0000165753 00000 n 
-0000165816 00000 n 
-0000165879 00000 n 
-0000165942 00000 n 
-0000166005 00000 n 
-0000170954 00000 n 
-0000169008 00000 n 
-0000166180 00000 n 
-0000169131 00000 n 
-0000169194 00000 n 
-0000169257 00000 n 
-0000169320 00000 n 
-0000169383 00000 n 
-0000169446 00000 n 
-0000169509 00000 n 
-0000169634 00000 n 
-0000169697 00000 n 
-0000169760 00000 n 
-0000169823 00000 n 
-0000169886 00000 n 
-0000169949 00000 n 
-0000170012 00000 n 
-0000170075 00000 n 
-0000170138 00000 n 
-0000170201 00000 n 
-0000170264 00000 n 
-0000170327 00000 n 
-0000170390 00000 n 
-0000170452 00000 n 
-0000170515 00000 n 
-0000170578 00000 n 
-0000170641 00000 n 
-0000170702 00000 n 
-0000170765 00000 n 
-0000170828 00000 n 
-0000170891 00000 n 
-0000176089 00000 n 
-0000173956 00000 n 
-0000171067 00000 n 
-0000174079 00000 n 
-0000174204 00000 n 
-0000174267 00000 n 
-0000174330 00000 n 
-0000174393 00000 n 
-0000174456 00000 n 
-0000174519 00000 n 
-0000174582 00000 n 
-0000174645 00000 n 
-0000174770 00000 n 
-0000174833 00000 n 
-0000174896 00000 n 
-0000174958 00000 n 
-0000175021 00000 n 
-0000175084 00000 n 
-0000175147 00000 n 
-0000175210 00000 n 
-0000175272 00000 n 
-0000175335 00000 n 
-0000175398 00000 n 
-0000175461 00000 n 
-0000175524 00000 n 
-0000175587 00000 n 
-0000175650 00000 n 
-0000175713 00000 n 
-0000175776 00000 n 
-0000175839 00000 n 
-0000175902 00000 n 
-0000177655 00000 n 
-0000177345 00000 n 
-0000176232 00000 n 
-0000177468 00000 n 
-0000456236 00000 n 
-0000180974 00000 n 
-0000180037 00000 n 
-0000177754 00000 n 
-0000180160 00000 n 
-0000180472 00000 n 
-0000180535 00000 n 
-0000180598 00000 n 
-0000180660 00000 n 
-0000180723 00000 n 
-0000180785 00000 n 
-0000180848 00000 n 
-0000180911 00000 n 
-0000183754 00000 n 
-0000182822 00000 n 
-0000181073 00000 n 
-0000182945 00000 n 
-0000183008 00000 n 
-0000183071 00000 n 
-0000183134 00000 n 
-0000186683 00000 n 
-0000185439 00000 n 
-0000183853 00000 n 
-0000185562 00000 n 
-0000186119 00000 n 
-0000186182 00000 n 
-0000186245 00000 n 
-0000186370 00000 n 
-0000186433 00000 n 
-0000186496 00000 n 
-0000186559 00000 n 
-0000186622 00000 n 
-0000190355 00000 n 
-0000189352 00000 n 
-0000186796 00000 n 
-0000189475 00000 n 
-0000189538 00000 n 
-0000189601 00000 n 
-0000189664 00000 n 
-0000189727 00000 n 
-0000189789 00000 n 
-0000189852 00000 n 
-0000189915 00000 n 
-0000189978 00000 n 
-0000190041 00000 n 
-0000190166 00000 n 
-0000190229 00000 n 
-0000190292 00000 n 
-0000192236 00000 n 
-0000191360 00000 n 
-0000190454 00000 n 
-0000191483 00000 n 
-0000191608 00000 n 
-0000191671 00000 n 
-0000191734 00000 n 
-0000191797 00000 n 
-0000191860 00000 n 
-0000191923 00000 n 
-0000191986 00000 n 
-0000192048 00000 n 
-0000192111 00000 n 
-0000192173 00000 n 
-0000195209 00000 n 
-0000195409 00000 n 
-0000196287 00000 n 
-0000195056 00000 n 
-0000192335 00000 n 
-0000195599 00000 n 
-0000195785 00000 n 
-0000195848 00000 n 
-0000195911 00000 n 
-0000195974 00000 n 
-0000196037 00000 n 
-0000196099 00000 n 
-0000196162 00000 n 
-0000196225 00000 n 
-0000456361 00000 n 
-0000200320 00000 n 
-0000199065 00000 n 
-0000196400 00000 n 
-0000199188 00000 n 
-0000199251 00000 n 
-0000199314 00000 n 
-0000199377 00000 n 
-0000199440 00000 n 
-0000199503 00000 n 
-0000199566 00000 n 
-0000199629 00000 n 
-0000199692 00000 n 
-0000199755 00000 n 
-0000199818 00000 n 
-0000199881 00000 n 
-0000199943 00000 n 
-0000200005 00000 n 
-0000200068 00000 n 
-0000200131 00000 n 
-0000200194 00000 n 
-0000200257 00000 n 
-0000203234 00000 n 
-0000203410 00000 n 
-0000203956 00000 n 
-0000203072 00000 n 
-0000200406 00000 n 
-0000203770 00000 n 
-0000203590 00000 n 
-0000206743 00000 n 
-0000205933 00000 n 
-0000204082 00000 n 
-0000206056 00000 n 
-0000206366 00000 n 
-0000206429 00000 n 
-0000206554 00000 n 
-0000206617 00000 n 
-0000206680 00000 n 
-0000211084 00000 n 
-0000209959 00000 n 
-0000206886 00000 n 
-0000210082 00000 n 
-0000454006 00000 n 
-0000210269 00000 n 
-0000210332 00000 n 
-0000210394 00000 n 
-0000210457 00000 n 
-0000210519 00000 n 
-0000210582 00000 n 
-0000210645 00000 n 
-0000210708 00000 n 
-0000210771 00000 n 
-0000210896 00000 n 
-0000210959 00000 n 
-0000211022 00000 n 
-0000211977 00000 n 
-0000211729 00000 n 
-0000211255 00000 n 
-0000211852 00000 n 
-0000214760 00000 n 
-0000214138 00000 n 
-0000212076 00000 n 
-0000214261 00000 n 
-0000214571 00000 n 
-0000214634 00000 n 
-0000214697 00000 n 
-0000456486 00000 n 
-0000218230 00000 n 
-0000217796 00000 n 
-0000214900 00000 n 
-0000217919 00000 n 
-0000223680 00000 n 
-0000221797 00000 n 
-0000218357 00000 n 
-0000221920 00000 n 
-0000221983 00000 n 
-0000222046 00000 n 
-0000222109 00000 n 
-0000222172 00000 n 
-0000222235 00000 n 
-0000222298 00000 n 
-0000222360 00000 n 
-0000222423 00000 n 
-0000222486 00000 n 
-0000222549 00000 n 
-0000222612 00000 n 
-0000222675 00000 n 
-0000222738 00000 n 
-0000222801 00000 n 
-0000222864 00000 n 
-0000222926 00000 n 
-0000222989 00000 n 
-0000223052 00000 n 
-0000223115 00000 n 
-0000223178 00000 n 
-0000223241 00000 n 
-0000223304 00000 n 
-0000223367 00000 n 
-0000223430 00000 n 
-0000223493 00000 n 
-0000223555 00000 n 
-0000223618 00000 n 
-0000230528 00000 n 
-0000226573 00000 n 
-0000223794 00000 n 
-0000226696 00000 n 
-0000226759 00000 n 
-0000226822 00000 n 
-0000226885 00000 n 
-0000226948 00000 n 
-0000227011 00000 n 
-0000227074 00000 n 
-0000227136 00000 n 
-0000227199 00000 n 
-0000227262 00000 n 
-0000227325 00000 n 
-0000227388 00000 n 
-0000227451 00000 n 
-0000227514 00000 n 
-0000227577 00000 n 
-0000227640 00000 n 
-0000227702 00000 n 
-0000227765 00000 n 
-0000227828 00000 n 
-0000227891 00000 n 
-0000227954 00000 n 
-0000228017 00000 n 
-0000228080 00000 n 
-0000228143 00000 n 
-0000228206 00000 n 
-0000228268 00000 n 
-0000228331 00000 n 
-0000228394 00000 n 
-0000228457 00000 n 
-0000228520 00000 n 
-0000228583 00000 n 
-0000228646 00000 n 
-0000228709 00000 n 
-0000228772 00000 n 
-0000228834 00000 n 
-0000228897 00000 n 
-0000228960 00000 n 
-0000229023 00000 n 
-0000229085 00000 n 
-0000229148 00000 n 
-0000229211 00000 n 
-0000229274 00000 n 
-0000229337 00000 n 
-0000229400 00000 n 
-0000229463 00000 n 
-0000229526 00000 n 
-0000229589 00000 n 
-0000229648 00000 n 
-0000229711 00000 n 
-0000229774 00000 n 
-0000229837 00000 n 
-0000229900 00000 n 
-0000229963 00000 n 
-0000230026 00000 n 
-0000230089 00000 n 
-0000230152 00000 n 
-0000230214 00000 n 
-0000230277 00000 n 
-0000230340 00000 n 
-0000230403 00000 n 
-0000230466 00000 n 
-0000235374 00000 n 
-0000233622 00000 n 
-0000230628 00000 n 
-0000233745 00000 n 
-0000233808 00000 n 
-0000233871 00000 n 
-0000233996 00000 n 
-0000234057 00000 n 
-0000234119 00000 n 
-0000234182 00000 n 
-0000234245 00000 n 
-0000234308 00000 n 
-0000234371 00000 n 
-0000234434 00000 n 
-0000234497 00000 n 
-0000234560 00000 n 
-0000234623 00000 n 
-0000234686 00000 n 
-0000234749 00000 n 
-0000234812 00000 n 
-0000234999 00000 n 
-0000235062 00000 n 
-0000235125 00000 n 
-0000235188 00000 n 
-0000235251 00000 n 
-0000235313 00000 n 
-0000240523 00000 n 
-0000238386 00000 n 
-0000235530 00000 n 
-0000238509 00000 n 
-0000238572 00000 n 
-0000238635 00000 n 
-0000238698 00000 n 
-0000238761 00000 n 
-0000238824 00000 n 
-0000238887 00000 n 
-0000238950 00000 n 
-0000239013 00000 n 
-0000239076 00000 n 
-0000239139 00000 n 
-0000239202 00000 n 
-0000239265 00000 n 
-0000239328 00000 n 
-0000239390 00000 n 
-0000239453 00000 n 
-0000239516 00000 n 
-0000239579 00000 n 
-0000239642 00000 n 
-0000239705 00000 n 
-0000239768 00000 n 
-0000239831 00000 n 
-0000239956 00000 n 
-0000240019 00000 n 
-0000240082 00000 n 
-0000240145 00000 n 
-0000240208 00000 n 
-0000240271 00000 n 
-0000240334 00000 n 
-0000240397 00000 n 
-0000240460 00000 n 
-0000246958 00000 n 
-0000243375 00000 n 
-0000240649 00000 n 
-0000243498 00000 n 
-0000243561 00000 n 
-0000243624 00000 n 
-0000243687 00000 n 
-0000243750 00000 n 
-0000243813 00000 n 
-0000243876 00000 n 
-0000243939 00000 n 
-0000244002 00000 n 
-0000244065 00000 n 
-0000244128 00000 n 
-0000244190 00000 n 
-0000244253 00000 n 
-0000244316 00000 n 
-0000244379 00000 n 
-0000244442 00000 n 
-0000244505 00000 n 
-0000244568 00000 n 
-0000244631 00000 n 
-0000244694 00000 n 
-0000244756 00000 n 
-0000244819 00000 n 
-0000244882 00000 n 
-0000244945 00000 n 
-0000245008 00000 n 
-0000245071 00000 n 
-0000245134 00000 n 
-0000245197 00000 n 
-0000245260 00000 n 
-0000245323 00000 n 
-0000245386 00000 n 
-0000245449 00000 n 
-0000245512 00000 n 
-0000245575 00000 n 
-0000245638 00000 n 
-0000245700 00000 n 
-0000245763 00000 n 
-0000245826 00000 n 
-0000245889 00000 n 
-0000245952 00000 n 
-0000246015 00000 n 
-0000246078 00000 n 
-0000246141 00000 n 
-0000246204 00000 n 
-0000246266 00000 n 
-0000246329 00000 n 
-0000246392 00000 n 
-0000246455 00000 n 
-0000246518 00000 n 
-0000246581 00000 n 
-0000246644 00000 n 
-0000246707 00000 n 
-0000246770 00000 n 
-0000246832 00000 n 
-0000246895 00000 n 
-0000456611 00000 n 
-0000252974 00000 n 
-0000249796 00000 n 
-0000247058 00000 n 
-0000249919 00000 n 
-0000249982 00000 n 
-0000250045 00000 n 
-0000250108 00000 n 
-0000250171 00000 n 
-0000250234 00000 n 
-0000250297 00000 n 
-0000250360 00000 n 
-0000250423 00000 n 
-0000250485 00000 n 
-0000250548 00000 n 
-0000250611 00000 n 
-0000250674 00000 n 
-0000250737 00000 n 
-0000250800 00000 n 
-0000250863 00000 n 
-0000250926 00000 n 
-0000250989 00000 n 
-0000251051 00000 n 
-0000251114 00000 n 
-0000251177 00000 n 
-0000251240 00000 n 
-0000251303 00000 n 
-0000251366 00000 n 
-0000251429 00000 n 
-0000251492 00000 n 
-0000251555 00000 n 
-0000251617 00000 n 
-0000251680 00000 n 
-0000251867 00000 n 
-0000251930 00000 n 
-0000251993 00000 n 
-0000252056 00000 n 
-0000252119 00000 n 
-0000252182 00000 n 
-0000252245 00000 n 
-0000252305 00000 n 
-0000252366 00000 n 
-0000252427 00000 n 
-0000252488 00000 n 
-0000252549 00000 n 
-0000252610 00000 n 
-0000252671 00000 n 
-0000252732 00000 n 
-0000252793 00000 n 
-0000252853 00000 n 
-0000252914 00000 n 
-0000259372 00000 n 
-0000255530 00000 n 
-0000253087 00000 n 
-0000255653 00000 n 
-0000255716 00000 n 
-0000255777 00000 n 
-0000255838 00000 n 
-0000255899 00000 n 
-0000255960 00000 n 
-0000256021 00000 n 
-0000256081 00000 n 
-0000256142 00000 n 
-0000256203 00000 n 
-0000256264 00000 n 
-0000256325 00000 n 
-0000256386 00000 n 
-0000256447 00000 n 
-0000256508 00000 n 
-0000256569 00000 n 
-0000256629 00000 n 
-0000256690 00000 n 
-0000256751 00000 n 
-0000256812 00000 n 
-0000256873 00000 n 
-0000256934 00000 n 
-0000256995 00000 n 
-0000257056 00000 n 
-0000257117 00000 n 
-0000257177 00000 n 
-0000257238 00000 n 
-0000257299 00000 n 
-0000257360 00000 n 
-0000257421 00000 n 
-0000257482 00000 n 
-0000257543 00000 n 
-0000257604 00000 n 
-0000257665 00000 n 
-0000257725 00000 n 
-0000257786 00000 n 
-0000257847 00000 n 
-0000257908 00000 n 
-0000257969 00000 n 
-0000258030 00000 n 
-0000258091 00000 n 
-0000258152 00000 n 
-0000258213 00000 n 
-0000258273 00000 n 
-0000258334 00000 n 
-0000258395 00000 n 
-0000258456 00000 n 
-0000258517 00000 n 
-0000258578 00000 n 
-0000258639 00000 n 
-0000258700 00000 n 
-0000258761 00000 n 
-0000258822 00000 n 
-0000258883 00000 n 
-0000258944 00000 n 
-0000259005 00000 n 
-0000259066 00000 n 
-0000259127 00000 n 
-0000259188 00000 n 
-0000259251 00000 n 
-0000259312 00000 n 
-0000262632 00000 n 
-0000265660 00000 n 
-0000262488 00000 n 
-0000259472 00000 n 
-0000262781 00000 n 
-0000262844 00000 n 
-0000262905 00000 n 
-0000262966 00000 n 
-0000263027 00000 n 
-0000263088 00000 n 
-0000263149 00000 n 
-0000263209 00000 n 
-0000263270 00000 n 
-0000263331 00000 n 
-0000263394 00000 n 
-0000263457 00000 n 
-0000263520 00000 n 
-0000263581 00000 n 
-0000263642 00000 n 
-0000263703 00000 n 
-0000263764 00000 n 
-0000263827 00000 n 
-0000263890 00000 n 
-0000263953 00000 n 
-0000264016 00000 n 
-0000264077 00000 n 
-0000264138 00000 n 
-0000264199 00000 n 
-0000264259 00000 n 
-0000264322 00000 n 
-0000264383 00000 n 
-0000264444 00000 n 
-0000264504 00000 n 
-0000264565 00000 n 
-0000264626 00000 n 
-0000264687 00000 n 
-0000264748 00000 n 
-0000264809 00000 n 
-0000264870 00000 n 
-0000264931 00000 n 
-0000264991 00000 n 
-0000265052 00000 n 
-0000265113 00000 n 
-0000265174 00000 n 
-0000265235 00000 n 
-0000265296 00000 n 
-0000265357 00000 n 
-0000265418 00000 n 
-0000265479 00000 n 
-0000265539 00000 n 
-0000265600 00000 n 
-0000272346 00000 n 
-0000268506 00000 n 
-0000265790 00000 n 
-0000268629 00000 n 
-0000268692 00000 n 
-0000268753 00000 n 
-0000268814 00000 n 
-0000268875 00000 n 
-0000268936 00000 n 
-0000268997 00000 n 
-0000269057 00000 n 
-0000269118 00000 n 
-0000269179 00000 n 
-0000269240 00000 n 
-0000269301 00000 n 
-0000269362 00000 n 
-0000269423 00000 n 
-0000269484 00000 n 
-0000269545 00000 n 
-0000269605 00000 n 
-0000269666 00000 n 
-0000269727 00000 n 
-0000269788 00000 n 
-0000269849 00000 n 
-0000269910 00000 n 
-0000269971 00000 n 
-0000270032 00000 n 
-0000270093 00000 n 
-0000270153 00000 n 
-0000270216 00000 n 
-0000270276 00000 n 
-0000270337 00000 n 
-0000270398 00000 n 
-0000270459 00000 n 
-0000270520 00000 n 
-0000270581 00000 n 
-0000270642 00000 n 
-0000270703 00000 n 
-0000270764 00000 n 
-0000270824 00000 n 
-0000270885 00000 n 
-0000270946 00000 n 
-0000271007 00000 n 
-0000271068 00000 n 
-0000271129 00000 n 
-0000271190 00000 n 
-0000271251 00000 n 
-0000271312 00000 n 
-0000271372 00000 n 
-0000271433 00000 n 
-0000271494 00000 n 
-0000271555 00000 n 
-0000271616 00000 n 
-0000271677 00000 n 
-0000271738 00000 n 
-0000271799 00000 n 
-0000271860 00000 n 
-0000271920 00000 n 
-0000271981 00000 n 
-0000272042 00000 n 
-0000272103 00000 n 
-0000272164 00000 n 
-0000272225 00000 n 
-0000272286 00000 n 
-0000277487 00000 n 
-0000275334 00000 n 
-0000272446 00000 n 
-0000275457 00000 n 
-0000275520 00000 n 
-0000275581 00000 n 
-0000275642 00000 n 
-0000275703 00000 n 
-0000275764 00000 n 
-0000275824 00000 n 
-0000275885 00000 n 
-0000275946 00000 n 
-0000276007 00000 n 
-0000276068 00000 n 
-0000276129 00000 n 
-0000276190 00000 n 
-0000276251 00000 n 
-0000276312 00000 n 
-0000276372 00000 n 
-0000276433 00000 n 
-0000276494 00000 n 
-0000276555 00000 n 
-0000276616 00000 n 
-0000276677 00000 n 
-0000276738 00000 n 
-0000276799 00000 n 
-0000276860 00000 n 
-0000276923 00000 n 
-0000277110 00000 n 
-0000277173 00000 n 
-0000277236 00000 n 
-0000277299 00000 n 
-0000277362 00000 n 
-0000279376 00000 n 
-0000278686 00000 n 
-0000277630 00000 n 
-0000278809 00000 n 
-0000278872 00000 n 
-0000278935 00000 n 
-0000278998 00000 n 
-0000279061 00000 n 
-0000279124 00000 n 
-0000279187 00000 n 
-0000279250 00000 n 
-0000279313 00000 n 
-0000456736 00000 n 
-0000282228 00000 n 
-0000281101 00000 n 
-0000279476 00000 n 
-0000281224 00000 n 
-0000281474 00000 n 
-0000281537 00000 n 
-0000281600 00000 n 
-0000281663 00000 n 
-0000281726 00000 n 
-0000281789 00000 n 
-0000281852 00000 n 
-0000281977 00000 n 
-0000282040 00000 n 
-0000282103 00000 n 
-0000282166 00000 n 
-0000286266 00000 n 
-0000284509 00000 n 
-0000282327 00000 n 
-0000284632 00000 n 
-0000284757 00000 n 
-0000284820 00000 n 
-0000284883 00000 n 
-0000284946 00000 n 
-0000285009 00000 n 
-0000285134 00000 n 
-0000285197 00000 n 
-0000285260 00000 n 
-0000285322 00000 n 
-0000285385 00000 n 
-0000285448 00000 n 
-0000285511 00000 n 
-0000285574 00000 n 
-0000285637 00000 n 
-0000285700 00000 n 
-0000285763 00000 n 
-0000285826 00000 n 
-0000285889 00000 n 
-0000285952 00000 n 
-0000286014 00000 n 
-0000286077 00000 n 
-0000286140 00000 n 
-0000286203 00000 n 
-0000288725 00000 n 
-0000287850 00000 n 
-0000286379 00000 n 
-0000287973 00000 n 
-0000288098 00000 n 
-0000288161 00000 n 
-0000288224 00000 n 
-0000288286 00000 n 
-0000288349 00000 n 
-0000288412 00000 n 
-0000288475 00000 n 
-0000288537 00000 n 
-0000288600 00000 n 
-0000292612 00000 n 
-0000291360 00000 n 
-0000288838 00000 n 
-0000291483 00000 n 
-0000291731 00000 n 
-0000291794 00000 n 
-0000291856 00000 n 
-0000291919 00000 n 
-0000291982 00000 n 
-0000292045 00000 n 
-0000292108 00000 n 
-0000292171 00000 n 
-0000292234 00000 n 
-0000292297 00000 n 
-0000292360 00000 n 
-0000292423 00000 n 
-0000292486 00000 n 
-0000292549 00000 n 
-0000295948 00000 n 
-0000295513 00000 n 
-0000292725 00000 n 
-0000295636 00000 n 
-0000300396 00000 n 
-0000299707 00000 n 
-0000296061 00000 n 
-0000299830 00000 n 
-0000299955 00000 n 
-0000300018 00000 n 
-0000300081 00000 n 
-0000300144 00000 n 
-0000300207 00000 n 
-0000300270 00000 n 
-0000300333 00000 n 
-0000456861 00000 n 
-0000301280 00000 n 
-0000301032 00000 n 
-0000300551 00000 n 
-0000301155 00000 n 
-0000304802 00000 n 
-0000304367 00000 n 
-0000301379 00000 n 
-0000304490 00000 n 
-0000304676 00000 n 
-0000304739 00000 n 
-0000306511 00000 n 
-0000306136 00000 n 
-0000304928 00000 n 
-0000306259 00000 n 
-0000306322 00000 n 
-0000306385 00000 n 
-0000306448 00000 n 
-0000308257 00000 n 
-0000307824 00000 n 
-0000306611 00000 n 
-0000307947 00000 n 
-0000314592 00000 n 
-0000312347 00000 n 
-0000308370 00000 n 
-0000312470 00000 n 
-0000312595 00000 n 
-0000312658 00000 n 
-0000312721 00000 n 
-0000312784 00000 n 
-0000312847 00000 n 
-0000312910 00000 n 
-0000312973 00000 n 
-0000313036 00000 n 
-0000313099 00000 n 
-0000313161 00000 n 
-0000313224 00000 n 
-0000313287 00000 n 
-0000313350 00000 n 
-0000313413 00000 n 
-0000313476 00000 n 
-0000313539 00000 n 
-0000313602 00000 n 
-0000313665 00000 n 
-0000313727 00000 n 
-0000313790 00000 n 
-0000313853 00000 n 
-0000313916 00000 n 
-0000313979 00000 n 
-0000314042 00000 n 
-0000314105 00000 n 
-0000314166 00000 n 
-0000314227 00000 n 
-0000314288 00000 n 
-0000314349 00000 n 
-0000314410 00000 n 
-0000314471 00000 n 
-0000314532 00000 n 
-0000317837 00000 n 
-0000317096 00000 n 
-0000314720 00000 n 
-0000317219 00000 n 
-0000317282 00000 n 
-0000317343 00000 n 
-0000317404 00000 n 
-0000317465 00000 n 
-0000317526 00000 n 
-0000317588 00000 n 
-0000317651 00000 n 
-0000456986 00000 n 
-0000323466 00000 n 
-0000321267 00000 n 
-0000317950 00000 n 
-0000321390 00000 n 
-0000321453 00000 n 
-0000321516 00000 n 
-0000321579 00000 n 
-0000321642 00000 n 
-0000321705 00000 n 
-0000321768 00000 n 
-0000321831 00000 n 
-0000321894 00000 n 
-0000321956 00000 n 
-0000322019 00000 n 
-0000322082 00000 n 
-0000322145 00000 n 
-0000322208 00000 n 
-0000322271 00000 n 
-0000322334 00000 n 
-0000322397 00000 n 
-0000322460 00000 n 
-0000322522 00000 n 
-0000322585 00000 n 
-0000322648 00000 n 
-0000322711 00000 n 
-0000322774 00000 n 
-0000322837 00000 n 
-0000322900 00000 n 
-0000322963 00000 n 
-0000323026 00000 n 
-0000323088 00000 n 
-0000323151 00000 n 
-0000323214 00000 n 
-0000323277 00000 n 
-0000323340 00000 n 
-0000323403 00000 n 
-0000324983 00000 n 
-0000324797 00000 n 
-0000323566 00000 n 
-0000324920 00000 n 
-0000325799 00000 n 
-0000325551 00000 n 
-0000325083 00000 n 
-0000325674 00000 n 
-0000328302 00000 n 
-0000327618 00000 n 
-0000325898 00000 n 
-0000327741 00000 n 
-0000327989 00000 n 
-0000328052 00000 n 
-0000328176 00000 n 
-0000328239 00000 n 
-0000453049 00000 n 
-0000328428 00000 n 
-0000328756 00000 n 
-0000328782 00000 n 
-0000328807 00000 n 
-0000329199 00000 n 
-0000329675 00000 n 
-0000330153 00000 n 
-0000330257 00000 n 
-0000330733 00000 n 
-0000331206 00000 n 
-0000331774 00000 n 
-0000333443 00000 n 
-0000333680 00000 n 
-0000334957 00000 n 
-0000335189 00000 n 
-0000355223 00000 n 
-0000355843 00000 n 
-0000366244 00000 n 
-0000366561 00000 n 
-0000379580 00000 n 
-0000380066 00000 n 
-0000389518 00000 n 
-0000389951 00000 n 
-0000394210 00000 n 
-0000394476 00000 n 
-0000413143 00000 n 
-0000413697 00000 n 
-0000434778 00000 n 
-0000435403 00000 n 
-0000452536 00000 n 
-0000457102 00000 n 
-0000457227 00000 n 
-0000457353 00000 n 
-0000457452 00000 n 
-0000457534 00000 n 
-0000478228 00000 n 
-0000478428 00000 n 
-0000478613 00000 n 
-0000478797 00000 n 
-0000478982 00000 n 
-0000479166 00000 n 
-0000479351 00000 n 
-0000479534 00000 n 
-0000479717 00000 n 
-0000479902 00000 n 
-0000480086 00000 n 
-0000480271 00000 n 
-0000480455 00000 n 
-0000480640 00000 n 
-0000480824 00000 n 
-0000481009 00000 n 
-0000481193 00000 n 
-0000481378 00000 n 
-0000481561 00000 n 
-0000481742 00000 n 
-0000481925 00000 n 
-0000482108 00000 n 
-0000482293 00000 n 
-0000482477 00000 n 
-0000482662 00000 n 
-0000482846 00000 n 
-0000483031 00000 n 
-0000483215 00000 n 
-0000483400 00000 n 
-0000483584 00000 n 
-0000483769 00000 n 
-0000483952 00000 n 
-0000484135 00000 n 
-0000484320 00000 n 
-0000484504 00000 n 
-0000484689 00000 n 
-0000484873 00000 n 
-0000485058 00000 n 
-0000485240 00000 n 
-0000485425 00000 n 
-0000485609 00000 n 
-0000485794 00000 n 
-0000485978 00000 n 
-0000486159 00000 n 
-0000486335 00000 n 
-0000486512 00000 n 
-0000486688 00000 n 
-0000486865 00000 n 
-0000487041 00000 n 
-0000487218 00000 n 
-0000487394 00000 n 
-0000487571 00000 n 
-0000487746 00000 n 
-0000487921 00000 n 
-0000488098 00000 n 
-0000488301 00000 n 
-0000488523 00000 n 
-0000488718 00000 n 
-0000488904 00000 n 
-0000489096 00000 n 
-0000489353 00000 n 
-0000489610 00000 n 
-0000489867 00000 n 
-0000490124 00000 n 
-0000490381 00000 n 
-0000490638 00000 n 
-0000490895 00000 n 
-0000491138 00000 n 
-0000491381 00000 n 
-0000491630 00000 n 
-0000491879 00000 n 
-0000492128 00000 n 
-0000492363 00000 n 
-0000492604 00000 n 
-0000492845 00000 n 
-0000493086 00000 n 
-0000493327 00000 n 
-0000493568 00000 n 
-0000493809 00000 n 
-0000494047 00000 n 
-0000494288 00000 n 
-0000494529 00000 n 
-0000494770 00000 n 
-0000495011 00000 n 
-0000495252 00000 n 
-0000495492 00000 n 
-0000495741 00000 n 
-0000495985 00000 n 
-0000496228 00000 n 
-0000496477 00000 n 
-0000496725 00000 n 
-0000496974 00000 n 
-0000497222 00000 n 
-0000497471 00000 n 
-0000497716 00000 n 
-0000497960 00000 n 
-0000498209 00000 n 
-0000498457 00000 n 
-0000498704 00000 n 
-0000498945 00000 n 
-0000499190 00000 n 
-0000499431 00000 n 
-0000499672 00000 n 
-0000499916 00000 n 
-0000500161 00000 n 
-0000500400 00000 n 
-0000500633 00000 n 
-0000500872 00000 n 
-0000501116 00000 n 
-0000501365 00000 n 
-0000501613 00000 n 
-0000501858 00000 n 
-0000502101 00000 n 
-0000502350 00000 n 
-0000502598 00000 n 
-0000502847 00000 n 
-0000503088 00000 n 
-0000503334 00000 n 
-0000503583 00000 n 
-0000503830 00000 n 
-0000504075 00000 n 
-0000504315 00000 n 
-0000504556 00000 n 
-0000504793 00000 n 
-0000505028 00000 n 
-0000505269 00000 n 
-0000505510 00000 n 
-0000505751 00000 n 
-0000505992 00000 n 
-0000506231 00000 n 
-0000506472 00000 n 
-0000506713 00000 n 
-0000506954 00000 n 
-0000507200 00000 n 
-0000507446 00000 n 
-0000507687 00000 n 
-0000507931 00000 n 
-0000508180 00000 n 
-0000508427 00000 n 
-0000508674 00000 n 
-0000508918 00000 n 
-0000509156 00000 n 
-0000509389 00000 n 
-0000509608 00000 n 
-0000509786 00000 n 
-0000509963 00000 n 
-0000510138 00000 n 
-0000510313 00000 n 
-0000510490 00000 n 
-0000510666 00000 n 
-0000510843 00000 n 
-0000511019 00000 n 
-0000511196 00000 n 
-0000511372 00000 n 
-0000511549 00000 n 
-0000511725 00000 n 
-0000511899 00000 n 
-0000512069 00000 n 
-0000512242 00000 n 
-0000512423 00000 n 
-0000512620 00000 n 
-0000512826 00000 n 
-0000513037 00000 n 
-0000513248 00000 n 
-0000513451 00000 n 
-0000513654 00000 n 
-0000513857 00000 n 
-0000514060 00000 n 
-0000514275 00000 n 
-0000514526 00000 n 
-0000514772 00000 n 
-0000515015 00000 n 
-0000515260 00000 n 
-0000515503 00000 n 
-0000515746 00000 n 
-0000515989 00000 n 
-0000516236 00000 n 
-0000516483 00000 n 
-0000516726 00000 n 
-0000516982 00000 n 
-0000517270 00000 n 
-0000517558 00000 n 
-0000517849 00000 n 
-0000518138 00000 n 
-0000518421 00000 n 
-0000518712 00000 n 
-0000518995 00000 n 
-0000519278 00000 n 
-0000519561 00000 n 
-0000519844 00000 n 
-0000520127 00000 n 
-0000520410 00000 n 
-0000520633 00000 n 
-0000520706 00000 n 
-0000520833 00000 n 
-0000520950 00000 n 
-0000521068 00000 n 
-0000521186 00000 n 
-0000521304 00000 n 
-0000521421 00000 n 
-0000521539 00000 n 
-0000521656 00000 n 
-0000521772 00000 n 
-0000521898 00000 n 
-0000522034 00000 n 
-0000522166 00000 n 
-0000522298 00000 n 
-0000522430 00000 n 
-0000522562 00000 n 
-0000522696 00000 n 
-0000522829 00000 n 
-0000522962 00000 n 
-0000523096 00000 n 
-0000523229 00000 n 
-0000523361 00000 n 
-0000523493 00000 n 
-0000523626 00000 n 
-0000523751 00000 n 
-0000523867 00000 n 
-0000523982 00000 n 
-0000524102 00000 n 
-0000524233 00000 n 
-0000524368 00000 n 
-0000524508 00000 n 
-0000524653 00000 n 
-0000524779 00000 n 
-0000524844 00000 n 
-0000524971 00000 n 
-0000525096 00000 n 
-0000525229 00000 n 
-0000525354 00000 n 
-0000525485 00000 n 
-0000525586 00000 n 
-0000525709 00000 n 
-0000525749 00000 n 
-0000525965 00000 n 
+0000022400 00000 n 
+0000454529 00000 n 
+0000024122 00000 n 
+0000024271 00000 n 
+0000024421 00000 n 
+0000024574 00000 n 
+0000024727 00000 n 
+0000024880 00000 n 
+0000025033 00000 n 
+0000025186 00000 n 
+0000025339 00000 n 
+0000025492 00000 n 
+0000025645 00000 n 
+0000025798 00000 n 
+0000025950 00000 n 
+0000026104 00000 n 
+0000026263 00000 n 
+0000026422 00000 n 
+0000026576 00000 n 
+0000026735 00000 n 
+0000026894 00000 n 
+0000027058 00000 n 
+0000027222 00000 n 
+0000027381 00000 n 
+0000027545 00000 n 
+0000027709 00000 n 
+0000027873 00000 n 
+0000028037 00000 n 
+0000028201 00000 n 
+0000028364 00000 n 
+0000030868 00000 n 
+0000031031 00000 n 
+0000031195 00000 n 
+0000031360 00000 n 
+0000028648 00000 n 
+0000023767 00000 n 
+0000022572 00000 n 
+0000028526 00000 n 
+0000028587 00000 n 
+0000454706 00000 n 
+0000031525 00000 n 
+0000031690 00000 n 
+0000031855 00000 n 
+0000032020 00000 n 
+0000032185 00000 n 
+0000032349 00000 n 
+0000032513 00000 n 
+0000032677 00000 n 
+0000032841 00000 n 
+0000033004 00000 n 
+0000033168 00000 n 
+0000033332 00000 n 
+0000033496 00000 n 
+0000033660 00000 n 
+0000033824 00000 n 
+0000033988 00000 n 
+0000034151 00000 n 
+0000034314 00000 n 
+0000034478 00000 n 
+0000034642 00000 n 
+0000034794 00000 n 
+0000034951 00000 n 
+0000035109 00000 n 
+0000035272 00000 n 
+0000035435 00000 n 
+0000035598 00000 n 
+0000035761 00000 n 
+0000035924 00000 n 
+0000036086 00000 n 
+0000036249 00000 n 
+0000036412 00000 n 
+0000036570 00000 n 
+0000036727 00000 n 
+0000036885 00000 n 
+0000037042 00000 n 
+0000038890 00000 n 
+0000039052 00000 n 
+0000039210 00000 n 
+0000039373 00000 n 
+0000039536 00000 n 
+0000037264 00000 n 
+0000030425 00000 n 
+0000028759 00000 n 
+0000037203 00000 n 
+0000039694 00000 n 
+0000039857 00000 n 
+0000040020 00000 n 
+0000040178 00000 n 
+0000040340 00000 n 
+0000040503 00000 n 
+0000040662 00000 n 
+0000040826 00000 n 
+0000040989 00000 n 
+0000041148 00000 n 
+0000041312 00000 n 
+0000041476 00000 n 
+0000041635 00000 n 
+0000041799 00000 n 
+0000041963 00000 n 
+0000042115 00000 n 
+0000042272 00000 n 
+0000042435 00000 n 
+0000042598 00000 n 
+0000042755 00000 n 
+0000042917 00000 n 
+0000043080 00000 n 
+0000043238 00000 n 
+0000043401 00000 n 
+0000043564 00000 n 
+0000043722 00000 n 
+0000043885 00000 n 
+0000044047 00000 n 
+0000044205 00000 n 
+0000044368 00000 n 
+0000044531 00000 n 
+0000044684 00000 n 
+0000044843 00000 n 
+0000045006 00000 n 
+0000047250 00000 n 
+0000047408 00000 n 
+0000047572 00000 n 
+0000047735 00000 n 
+0000047888 00000 n 
+0000045231 00000 n 
+0000038440 00000 n 
+0000037349 00000 n 
+0000045168 00000 n 
+0000048047 00000 n 
+0000048210 00000 n 
+0000048373 00000 n 
+0000048532 00000 n 
+0000048695 00000 n 
+0000048858 00000 n 
+0000049012 00000 n 
+0000049171 00000 n 
+0000049330 00000 n 
+0000049489 00000 n 
+0000049643 00000 n 
+0000049802 00000 n 
+0000049966 00000 n 
+0000050130 00000 n 
+0000050289 00000 n 
+0000050453 00000 n 
+0000050617 00000 n 
+0000050781 00000 n 
+0000050931 00000 n 
+0000051083 00000 n 
+0000051237 00000 n 
+0000051389 00000 n 
+0000051543 00000 n 
+0000051695 00000 n 
+0000051848 00000 n 
+0000051998 00000 n 
+0000052152 00000 n 
+0000052306 00000 n 
+0000052460 00000 n 
+0000052614 00000 n 
+0000052768 00000 n 
+0000052927 00000 n 
+0000053085 00000 n 
+0000055174 00000 n 
+0000055325 00000 n 
+0000053305 00000 n 
+0000046774 00000 n 
+0000045317 00000 n 
+0000053242 00000 n 
+0000055479 00000 n 
+0000055633 00000 n 
+0000055787 00000 n 
+0000055946 00000 n 
+0000056105 00000 n 
+0000056264 00000 n 
+0000056423 00000 n 
+0000056582 00000 n 
+0000056741 00000 n 
+0000056900 00000 n 
+0000057059 00000 n 
+0000057217 00000 n 
+0000057377 00000 n 
+0000057537 00000 n 
+0000057697 00000 n 
+0000057857 00000 n 
+0000058017 00000 n 
+0000058176 00000 n 
+0000058330 00000 n 
+0000058489 00000 n 
+0000058648 00000 n 
+0000058802 00000 n 
+0000058954 00000 n 
+0000059106 00000 n 
+0000059258 00000 n 
+0000059412 00000 n 
+0000059566 00000 n 
+0000059723 00000 n 
+0000059882 00000 n 
+0000060036 00000 n 
+0000060195 00000 n 
+0000060345 00000 n 
+0000060497 00000 n 
+0000060650 00000 n 
+0000063006 00000 n 
+0000063158 00000 n 
+0000063313 00000 n 
+0000060865 00000 n 
+0000054715 00000 n 
+0000053404 00000 n 
+0000060802 00000 n 
+0000455359 00000 n 
+0000063473 00000 n 
+0000063633 00000 n 
+0000063788 00000 n 
+0000063948 00000 n 
+0000064107 00000 n 
+0000064262 00000 n 
+0000064422 00000 n 
+0000064577 00000 n 
+0000064737 00000 n 
+0000064896 00000 n 
+0000065049 00000 n 
+0000065204 00000 n 
+0000065364 00000 n 
+0000065524 00000 n 
+0000065683 00000 n 
+0000065838 00000 n 
+0000065998 00000 n 
+0000066151 00000 n 
+0000066305 00000 n 
+0000066458 00000 n 
+0000066613 00000 n 
+0000066768 00000 n 
+0000066923 00000 n 
+0000067073 00000 n 
+0000067226 00000 n 
+0000067379 00000 n 
+0000067533 00000 n 
+0000067688 00000 n 
+0000067843 00000 n 
+0000067998 00000 n 
+0000069077 00000 n 
+0000069227 00000 n 
+0000069380 00000 n 
+0000069535 00000 n 
+0000068216 00000 n 
+0000062574 00000 n 
+0000060964 00000 n 
+0000068153 00000 n 
+0000069816 00000 n 
+0000068906 00000 n 
+0000068315 00000 n 
+0000069690 00000 n 
+0000069753 00000 n 
+0000071727 00000 n 
+0000071898 00000 n 
+0000071090 00000 n 
+0000072082 00000 n 
+0000070937 00000 n 
+0000069915 00000 n 
+0000455058 00000 n 
+0000071615 00000 n 
+0000071705 00000 n 
+0000073506 00000 n 
+0000073656 00000 n 
+0000073807 00000 n 
+0000073983 00000 n 
+0000074160 00000 n 
+0000074331 00000 n 
+0000074485 00000 n 
+0000074633 00000 n 
+0000074785 00000 n 
+0000074972 00000 n 
+0000075131 00000 n 
+0000075286 00000 n 
+0000075457 00000 n 
+0000075606 00000 n 
+0000075778 00000 n 
+0000077209 00000 n 
+0000077383 00000 n 
+0000077555 00000 n 
+0000077700 00000 n 
+0000077868 00000 n 
+0000078037 00000 n 
+0000075990 00000 n 
+0000073236 00000 n 
+0000072237 00000 n 
+0000075927 00000 n 
+0000453829 00000 n 
+0000082634 00000 n 
+0000094833 00000 n 
+0000158496 00000 n 
+0000165062 00000 n 
+0000180283 00000 n 
+0000195722 00000 n 
+0000203893 00000 n 
+0000206179 00000 n 
+0000214384 00000 n 
+0000078187 00000 n 
+0000078334 00000 n 
+0000078486 00000 n 
+0000078657 00000 n 
+0000078806 00000 n 
+0000078960 00000 n 
+0000079112 00000 n 
+0000076966 00000 n 
+0000076103 00000 n 
+0000218042 00000 n 
+0000281347 00000 n 
+0000291606 00000 n 
+0000295759 00000 n 
+0000304613 00000 n 
+0000308070 00000 n 
+0000327864 00000 n 
+0000079930 00000 n 
+0000079684 00000 n 
+0000079212 00000 n 
+0000079807 00000 n 
+0000455484 00000 n 
+0000082880 00000 n 
+0000082387 00000 n 
+0000080029 00000 n 
+0000082510 00000 n 
+0000086871 00000 n 
+0000086504 00000 n 
+0000082979 00000 n 
+0000086627 00000 n 
+0000090766 00000 n 
+0000090397 00000 n 
+0000086970 00000 n 
+0000090520 00000 n 
+0000093539 00000 n 
+0000093733 00000 n 
+0000093955 00000 n 
+0000094140 00000 n 
+0000094315 00000 n 
+0000094522 00000 n 
+0000095019 00000 n 
+0000093350 00000 n 
+0000090865 00000 n 
+0000094709 00000 n 
+0000094957 00000 n 
+0000098757 00000 n 
+0000097761 00000 n 
+0000095146 00000 n 
+0000097884 00000 n 
+0000097947 00000 n 
+0000098010 00000 n 
+0000098073 00000 n 
+0000098136 00000 n 
+0000098442 00000 n 
+0000098505 00000 n 
+0000098568 00000 n 
+0000098631 00000 n 
+0000098694 00000 n 
+0000100603 00000 n 
+0000099929 00000 n 
+0000098856 00000 n 
+0000100052 00000 n 
+0000455609 00000 n 
+0000102461 00000 n 
+0000101841 00000 n 
+0000100715 00000 n 
+0000101964 00000 n 
+0000104606 00000 n 
+0000104111 00000 n 
+0000102587 00000 n 
+0000104234 00000 n 
+0000106689 00000 n 
+0000106193 00000 n 
+0000104732 00000 n 
+0000106316 00000 n 
+0000109279 00000 n 
+0000108469 00000 n 
+0000106815 00000 n 
+0000108592 00000 n 
+0000108717 00000 n 
+0000108780 00000 n 
+0000108843 00000 n 
+0000108906 00000 n 
+0000108969 00000 n 
+0000109032 00000 n 
+0000110779 00000 n 
+0000110531 00000 n 
+0000109419 00000 n 
+0000110654 00000 n 
+0000112546 00000 n 
+0000112174 00000 n 
+0000110905 00000 n 
+0000112297 00000 n 
+0000455734 00000 n 
+0000114678 00000 n 
+0000114430 00000 n 
+0000112672 00000 n 
+0000114553 00000 n 
+0000118653 00000 n 
+0000118030 00000 n 
+0000114804 00000 n 
+0000118153 00000 n 
+0000118339 00000 n 
+0000118402 00000 n 
+0000118465 00000 n 
+0000118528 00000 n 
+0000121365 00000 n 
+0000120680 00000 n 
+0000118780 00000 n 
+0000120803 00000 n 
+0000120990 00000 n 
+0000121053 00000 n 
+0000121116 00000 n 
+0000123318 00000 n 
+0000122884 00000 n 
+0000121491 00000 n 
+0000123007 00000 n 
+0000125642 00000 n 
+0000125332 00000 n 
+0000123430 00000 n 
+0000125455 00000 n 
+0000128494 00000 n 
+0000127247 00000 n 
+0000125768 00000 n 
+0000127370 00000 n 
+0000127805 00000 n 
+0000127868 00000 n 
+0000127931 00000 n 
+0000127994 00000 n 
+0000128057 00000 n 
+0000128120 00000 n 
+0000128183 00000 n 
+0000128246 00000 n 
+0000128308 00000 n 
+0000455859 00000 n 
+0000130250 00000 n 
+0000129570 00000 n 
+0000128634 00000 n 
+0000129693 00000 n 
+0000131883 00000 n 
+0000131449 00000 n 
+0000130376 00000 n 
+0000131572 00000 n 
+0000134228 00000 n 
+0000133795 00000 n 
+0000132009 00000 n 
+0000133918 00000 n 
+0000136345 00000 n 
+0000135788 00000 n 
+0000134354 00000 n 
+0000135911 00000 n 
+0000140157 00000 n 
+0000138342 00000 n 
+0000136471 00000 n 
+0000138465 00000 n 
+0000138775 00000 n 
+0000138838 00000 n 
+0000138901 00000 n 
+0000138964 00000 n 
+0000139026 00000 n 
+0000139089 00000 n 
+0000139152 00000 n 
+0000139215 00000 n 
+0000139278 00000 n 
+0000139341 00000 n 
+0000139404 00000 n 
+0000139467 00000 n 
+0000139530 00000 n 
+0000139592 00000 n 
+0000139655 00000 n 
+0000139718 00000 n 
+0000139781 00000 n 
+0000139844 00000 n 
+0000139907 00000 n 
+0000139970 00000 n 
+0000142070 00000 n 
+0000141574 00000 n 
+0000140297 00000 n 
+0000141697 00000 n 
+0000455984 00000 n 
+0000143812 00000 n 
+0000143380 00000 n 
+0000142196 00000 n 
+0000143503 00000 n 
+0000145668 00000 n 
+0000145110 00000 n 
+0000143938 00000 n 
+0000145233 00000 n 
+0000150708 00000 n 
+0000148511 00000 n 
+0000145794 00000 n 
+0000148634 00000 n 
+0000148883 00000 n 
+0000148946 00000 n 
+0000149009 00000 n 
+0000149071 00000 n 
+0000149134 00000 n 
+0000149197 00000 n 
+0000149260 00000 n 
+0000149323 00000 n 
+0000149385 00000 n 
+0000149448 00000 n 
+0000149511 00000 n 
+0000149574 00000 n 
+0000149637 00000 n 
+0000149700 00000 n 
+0000149763 00000 n 
+0000149826 00000 n 
+0000149889 00000 n 
+0000149952 00000 n 
+0000150015 00000 n 
+0000150078 00000 n 
+0000150141 00000 n 
+0000150204 00000 n 
+0000150267 00000 n 
+0000453683 00000 n 
+0000453537 00000 n 
+0000150330 00000 n 
+0000150393 00000 n 
+0000150456 00000 n 
+0000150519 00000 n 
+0000150582 00000 n 
+0000150645 00000 n 
+0000153288 00000 n 
+0000152792 00000 n 
+0000150864 00000 n 
+0000152915 00000 n 
+0000155214 00000 n 
+0000154781 00000 n 
+0000153400 00000 n 
+0000154904 00000 n 
+0000156058 00000 n 
+0000155810 00000 n 
+0000155340 00000 n 
+0000155933 00000 n 
+0000456109 00000 n 
+0000159058 00000 n 
+0000158248 00000 n 
+0000156157 00000 n 
+0000158371 00000 n 
+0000158621 00000 n 
+0000158684 00000 n 
+0000158747 00000 n 
+0000158933 00000 n 
+0000158996 00000 n 
+0000162858 00000 n 
+0000162296 00000 n 
+0000159157 00000 n 
+0000162419 00000 n 
+0000162482 00000 n 
+0000162545 00000 n 
+0000162608 00000 n 
+0000162671 00000 n 
+0000166065 00000 n 
+0000164814 00000 n 
+0000162957 00000 n 
+0000164937 00000 n 
+0000165185 00000 n 
+0000165248 00000 n 
+0000165311 00000 n 
+0000165374 00000 n 
+0000165437 00000 n 
+0000165500 00000 n 
+0000165562 00000 n 
+0000165625 00000 n 
+0000165688 00000 n 
+0000165751 00000 n 
+0000165814 00000 n 
+0000165877 00000 n 
+0000165940 00000 n 
+0000166003 00000 n 
+0000170952 00000 n 
+0000169006 00000 n 
+0000166178 00000 n 
+0000169129 00000 n 
+0000169192 00000 n 
+0000169255 00000 n 
+0000169318 00000 n 
+0000169381 00000 n 
+0000169444 00000 n 
+0000169507 00000 n 
+0000169632 00000 n 
+0000169695 00000 n 
+0000169758 00000 n 
+0000169821 00000 n 
+0000169884 00000 n 
+0000169947 00000 n 
+0000170010 00000 n 
+0000170073 00000 n 
+0000170136 00000 n 
+0000170199 00000 n 
+0000170262 00000 n 
+0000170325 00000 n 
+0000170388 00000 n 
+0000170450 00000 n 
+0000170513 00000 n 
+0000170576 00000 n 
+0000170639 00000 n 
+0000170700 00000 n 
+0000170763 00000 n 
+0000170826 00000 n 
+0000170889 00000 n 
+0000176087 00000 n 
+0000173954 00000 n 
+0000171065 00000 n 
+0000174077 00000 n 
+0000174202 00000 n 
+0000174265 00000 n 
+0000174328 00000 n 
+0000174391 00000 n 
+0000174454 00000 n 
+0000174517 00000 n 
+0000174580 00000 n 
+0000174643 00000 n 
+0000174768 00000 n 
+0000174831 00000 n 
+0000174894 00000 n 
+0000174956 00000 n 
+0000175019 00000 n 
+0000175082 00000 n 
+0000175145 00000 n 
+0000175208 00000 n 
+0000175270 00000 n 
+0000175333 00000 n 
+0000175396 00000 n 
+0000175459 00000 n 
+0000175522 00000 n 
+0000175585 00000 n 
+0000175648 00000 n 
+0000175711 00000 n 
+0000175774 00000 n 
+0000175837 00000 n 
+0000175900 00000 n 
+0000177653 00000 n 
+0000177343 00000 n 
+0000176230 00000 n 
+0000177466 00000 n 
+0000456234 00000 n 
+0000180972 00000 n 
+0000180035 00000 n 
+0000177752 00000 n 
+0000180158 00000 n 
+0000180470 00000 n 
+0000180533 00000 n 
+0000180596 00000 n 
+0000180658 00000 n 
+0000180721 00000 n 
+0000180783 00000 n 
+0000180846 00000 n 
+0000180909 00000 n 
+0000183752 00000 n 
+0000182820 00000 n 
+0000181071 00000 n 
+0000182943 00000 n 
+0000183006 00000 n 
+0000183069 00000 n 
+0000183132 00000 n 
+0000186681 00000 n 
+0000185437 00000 n 
+0000183851 00000 n 
+0000185560 00000 n 
+0000186117 00000 n 
+0000186180 00000 n 
+0000186243 00000 n 
+0000186368 00000 n 
+0000186431 00000 n 
+0000186494 00000 n 
+0000186557 00000 n 
+0000186620 00000 n 
+0000190353 00000 n 
+0000189350 00000 n 
+0000186794 00000 n 
+0000189473 00000 n 
+0000189536 00000 n 
+0000189599 00000 n 
+0000189662 00000 n 
+0000189725 00000 n 
+0000189787 00000 n 
+0000189850 00000 n 
+0000189913 00000 n 
+0000189976 00000 n 
+0000190039 00000 n 
+0000190164 00000 n 
+0000190227 00000 n 
+0000190290 00000 n 
+0000192234 00000 n 
+0000191358 00000 n 
+0000190452 00000 n 
+0000191481 00000 n 
+0000191606 00000 n 
+0000191669 00000 n 
+0000191732 00000 n 
+0000191795 00000 n 
+0000191858 00000 n 
+0000191921 00000 n 
+0000191984 00000 n 
+0000192046 00000 n 
+0000192109 00000 n 
+0000192171 00000 n 
+0000195207 00000 n 
+0000195407 00000 n 
+0000196285 00000 n 
+0000195054 00000 n 
+0000192333 00000 n 
+0000195597 00000 n 
+0000195783 00000 n 
+0000195846 00000 n 
+0000195909 00000 n 
+0000195972 00000 n 
+0000196035 00000 n 
+0000196097 00000 n 
+0000196160 00000 n 
+0000196223 00000 n 
+0000456359 00000 n 
+0000200318 00000 n 
+0000199063 00000 n 
+0000196398 00000 n 
+0000199186 00000 n 
+0000199249 00000 n 
+0000199312 00000 n 
+0000199375 00000 n 
+0000199438 00000 n 
+0000199501 00000 n 
+0000199564 00000 n 
+0000199627 00000 n 
+0000199690 00000 n 
+0000199753 00000 n 
+0000199816 00000 n 
+0000199879 00000 n 
+0000199941 00000 n 
+0000200003 00000 n 
+0000200066 00000 n 
+0000200129 00000 n 
+0000200192 00000 n 
+0000200255 00000 n 
+0000203232 00000 n 
+0000203408 00000 n 
+0000203954 00000 n 
+0000203070 00000 n 
+0000200404 00000 n 
+0000203768 00000 n 
+0000203588 00000 n 
+0000206741 00000 n 
+0000205931 00000 n 
+0000204080 00000 n 
+0000206054 00000 n 
+0000206364 00000 n 
+0000206427 00000 n 
+0000206552 00000 n 
+0000206615 00000 n 
+0000206678 00000 n 
+0000211082 00000 n 
+0000209957 00000 n 
+0000206884 00000 n 
+0000210080 00000 n 
+0000454004 00000 n 
+0000210267 00000 n 
+0000210330 00000 n 
+0000210392 00000 n 
+0000210455 00000 n 
+0000210517 00000 n 
+0000210580 00000 n 
+0000210643 00000 n 
+0000210706 00000 n 
+0000210769 00000 n 
+0000210894 00000 n 
+0000210957 00000 n 
+0000211020 00000 n 
+0000211975 00000 n 
+0000211727 00000 n 
+0000211253 00000 n 
+0000211850 00000 n 
+0000214758 00000 n 
+0000214136 00000 n 
+0000212074 00000 n 
+0000214259 00000 n 
+0000214569 00000 n 
+0000214632 00000 n 
+0000214695 00000 n 
+0000456484 00000 n 
+0000218228 00000 n 
+0000217794 00000 n 
+0000214898 00000 n 
+0000217917 00000 n 
+0000223678 00000 n 
+0000221795 00000 n 
+0000218355 00000 n 
+0000221918 00000 n 
+0000221981 00000 n 
+0000222044 00000 n 
+0000222107 00000 n 
+0000222170 00000 n 
+0000222233 00000 n 
+0000222296 00000 n 
+0000222358 00000 n 
+0000222421 00000 n 
+0000222484 00000 n 
+0000222547 00000 n 
+0000222610 00000 n 
+0000222673 00000 n 
+0000222736 00000 n 
+0000222799 00000 n 
+0000222862 00000 n 
+0000222924 00000 n 
+0000222987 00000 n 
+0000223050 00000 n 
+0000223113 00000 n 
+0000223176 00000 n 
+0000223239 00000 n 
+0000223302 00000 n 
+0000223365 00000 n 
+0000223428 00000 n 
+0000223491 00000 n 
+0000223553 00000 n 
+0000223616 00000 n 
+0000230526 00000 n 
+0000226571 00000 n 
+0000223792 00000 n 
+0000226694 00000 n 
+0000226757 00000 n 
+0000226820 00000 n 
+0000226883 00000 n 
+0000226946 00000 n 
+0000227009 00000 n 
+0000227072 00000 n 
+0000227134 00000 n 
+0000227197 00000 n 
+0000227260 00000 n 
+0000227323 00000 n 
+0000227386 00000 n 
+0000227449 00000 n 
+0000227512 00000 n 
+0000227575 00000 n 
+0000227638 00000 n 
+0000227700 00000 n 
+0000227763 00000 n 
+0000227826 00000 n 
+0000227889 00000 n 
+0000227952 00000 n 
+0000228015 00000 n 
+0000228078 00000 n 
+0000228141 00000 n 
+0000228204 00000 n 
+0000228266 00000 n 
+0000228329 00000 n 
+0000228392 00000 n 
+0000228455 00000 n 
+0000228518 00000 n 
+0000228581 00000 n 
+0000228644 00000 n 
+0000228707 00000 n 
+0000228770 00000 n 
+0000228832 00000 n 
+0000228895 00000 n 
+0000228958 00000 n 
+0000229021 00000 n 
+0000229083 00000 n 
+0000229146 00000 n 
+0000229209 00000 n 
+0000229272 00000 n 
+0000229335 00000 n 
+0000229398 00000 n 
+0000229461 00000 n 
+0000229524 00000 n 
+0000229587 00000 n 
+0000229646 00000 n 
+0000229709 00000 n 
+0000229772 00000 n 
+0000229835 00000 n 
+0000229898 00000 n 
+0000229961 00000 n 
+0000230024 00000 n 
+0000230087 00000 n 
+0000230150 00000 n 
+0000230212 00000 n 
+0000230275 00000 n 
+0000230338 00000 n 
+0000230401 00000 n 
+0000230464 00000 n 
+0000235372 00000 n 
+0000233620 00000 n 
+0000230626 00000 n 
+0000233743 00000 n 
+0000233806 00000 n 
+0000233869 00000 n 
+0000233994 00000 n 
+0000234055 00000 n 
+0000234117 00000 n 
+0000234180 00000 n 
+0000234243 00000 n 
+0000234306 00000 n 
+0000234369 00000 n 
+0000234432 00000 n 
+0000234495 00000 n 
+0000234558 00000 n 
+0000234621 00000 n 
+0000234684 00000 n 
+0000234747 00000 n 
+0000234810 00000 n 
+0000234997 00000 n 
+0000235060 00000 n 
+0000235123 00000 n 
+0000235186 00000 n 
+0000235249 00000 n 
+0000235311 00000 n 
+0000240521 00000 n 
+0000238384 00000 n 
+0000235528 00000 n 
+0000238507 00000 n 
+0000238570 00000 n 
+0000238633 00000 n 
+0000238696 00000 n 
+0000238759 00000 n 
+0000238822 00000 n 
+0000238885 00000 n 
+0000238948 00000 n 
+0000239011 00000 n 
+0000239074 00000 n 
+0000239137 00000 n 
+0000239200 00000 n 
+0000239263 00000 n 
+0000239326 00000 n 
+0000239388 00000 n 
+0000239451 00000 n 
+0000239514 00000 n 
+0000239577 00000 n 
+0000239640 00000 n 
+0000239703 00000 n 
+0000239766 00000 n 
+0000239829 00000 n 
+0000239954 00000 n 
+0000240017 00000 n 
+0000240080 00000 n 
+0000240143 00000 n 
+0000240206 00000 n 
+0000240269 00000 n 
+0000240332 00000 n 
+0000240395 00000 n 
+0000240458 00000 n 
+0000246956 00000 n 
+0000243373 00000 n 
+0000240647 00000 n 
+0000243496 00000 n 
+0000243559 00000 n 
+0000243622 00000 n 
+0000243685 00000 n 
+0000243748 00000 n 
+0000243811 00000 n 
+0000243874 00000 n 
+0000243937 00000 n 
+0000244000 00000 n 
+0000244063 00000 n 
+0000244126 00000 n 
+0000244188 00000 n 
+0000244251 00000 n 
+0000244314 00000 n 
+0000244377 00000 n 
+0000244440 00000 n 
+0000244503 00000 n 
+0000244566 00000 n 
+0000244629 00000 n 
+0000244692 00000 n 
+0000244754 00000 n 
+0000244817 00000 n 
+0000244880 00000 n 
+0000244943 00000 n 
+0000245006 00000 n 
+0000245069 00000 n 
+0000245132 00000 n 
+0000245195 00000 n 
+0000245258 00000 n 
+0000245321 00000 n 
+0000245384 00000 n 
+0000245447 00000 n 
+0000245510 00000 n 
+0000245573 00000 n 
+0000245636 00000 n 
+0000245698 00000 n 
+0000245761 00000 n 
+0000245824 00000 n 
+0000245887 00000 n 
+0000245950 00000 n 
+0000246013 00000 n 
+0000246076 00000 n 
+0000246139 00000 n 
+0000246202 00000 n 
+0000246264 00000 n 
+0000246327 00000 n 
+0000246390 00000 n 
+0000246453 00000 n 
+0000246516 00000 n 
+0000246579 00000 n 
+0000246642 00000 n 
+0000246705 00000 n 
+0000246768 00000 n 
+0000246830 00000 n 
+0000246893 00000 n 
+0000456609 00000 n 
+0000252972 00000 n 
+0000249794 00000 n 
+0000247056 00000 n 
+0000249917 00000 n 
+0000249980 00000 n 
+0000250043 00000 n 
+0000250106 00000 n 
+0000250169 00000 n 
+0000250232 00000 n 
+0000250295 00000 n 
+0000250358 00000 n 
+0000250421 00000 n 
+0000250483 00000 n 
+0000250546 00000 n 
+0000250609 00000 n 
+0000250672 00000 n 
+0000250735 00000 n 
+0000250798 00000 n 
+0000250861 00000 n 
+0000250924 00000 n 
+0000250987 00000 n 
+0000251049 00000 n 
+0000251112 00000 n 
+0000251175 00000 n 
+0000251238 00000 n 
+0000251301 00000 n 
+0000251364 00000 n 
+0000251427 00000 n 
+0000251490 00000 n 
+0000251553 00000 n 
+0000251615 00000 n 
+0000251678 00000 n 
+0000251865 00000 n 
+0000251928 00000 n 
+0000251991 00000 n 
+0000252054 00000 n 
+0000252117 00000 n 
+0000252180 00000 n 
+0000252243 00000 n 
+0000252303 00000 n 
+0000252364 00000 n 
+0000252425 00000 n 
+0000252486 00000 n 
+0000252547 00000 n 
+0000252608 00000 n 
+0000252669 00000 n 
+0000252730 00000 n 
+0000252791 00000 n 
+0000252851 00000 n 
+0000252912 00000 n 
+0000259370 00000 n 
+0000255528 00000 n 
+0000253085 00000 n 
+0000255651 00000 n 
+0000255714 00000 n 
+0000255775 00000 n 
+0000255836 00000 n 
+0000255897 00000 n 
+0000255958 00000 n 
+0000256019 00000 n 
+0000256079 00000 n 
+0000256140 00000 n 
+0000256201 00000 n 
+0000256262 00000 n 
+0000256323 00000 n 
+0000256384 00000 n 
+0000256445 00000 n 
+0000256506 00000 n 
+0000256567 00000 n 
+0000256627 00000 n 
+0000256688 00000 n 
+0000256749 00000 n 
+0000256810 00000 n 
+0000256871 00000 n 
+0000256932 00000 n 
+0000256993 00000 n 
+0000257054 00000 n 
+0000257115 00000 n 
+0000257175 00000 n 
+0000257236 00000 n 
+0000257297 00000 n 
+0000257358 00000 n 
+0000257419 00000 n 
+0000257480 00000 n 
+0000257541 00000 n 
+0000257602 00000 n 
+0000257663 00000 n 
+0000257723 00000 n 
+0000257784 00000 n 
+0000257845 00000 n 
+0000257906 00000 n 
+0000257967 00000 n 
+0000258028 00000 n 
+0000258089 00000 n 
+0000258150 00000 n 
+0000258211 00000 n 
+0000258271 00000 n 
+0000258332 00000 n 
+0000258393 00000 n 
+0000258454 00000 n 
+0000258515 00000 n 
+0000258576 00000 n 
+0000258637 00000 n 
+0000258698 00000 n 
+0000258759 00000 n 
+0000258820 00000 n 
+0000258881 00000 n 
+0000258942 00000 n 
+0000259003 00000 n 
+0000259064 00000 n 
+0000259125 00000 n 
+0000259186 00000 n 
+0000259249 00000 n 
+0000259310 00000 n 
+0000262630 00000 n 
+0000265658 00000 n 
+0000262486 00000 n 
+0000259470 00000 n 
+0000262779 00000 n 
+0000262842 00000 n 
+0000262903 00000 n 
+0000262964 00000 n 
+0000263025 00000 n 
+0000263086 00000 n 
+0000263147 00000 n 
+0000263207 00000 n 
+0000263268 00000 n 
+0000263329 00000 n 
+0000263392 00000 n 
+0000263455 00000 n 
+0000263518 00000 n 
+0000263579 00000 n 
+0000263640 00000 n 
+0000263701 00000 n 
+0000263762 00000 n 
+0000263825 00000 n 
+0000263888 00000 n 
+0000263951 00000 n 
+0000264014 00000 n 
+0000264075 00000 n 
+0000264136 00000 n 
+0000264197 00000 n 
+0000264257 00000 n 
+0000264320 00000 n 
+0000264381 00000 n 
+0000264442 00000 n 
+0000264502 00000 n 
+0000264563 00000 n 
+0000264624 00000 n 
+0000264685 00000 n 
+0000264746 00000 n 
+0000264807 00000 n 
+0000264868 00000 n 
+0000264929 00000 n 
+0000264989 00000 n 
+0000265050 00000 n 
+0000265111 00000 n 
+0000265172 00000 n 
+0000265233 00000 n 
+0000265294 00000 n 
+0000265355 00000 n 
+0000265416 00000 n 
+0000265477 00000 n 
+0000265537 00000 n 
+0000265598 00000 n 
+0000272344 00000 n 
+0000268504 00000 n 
+0000265788 00000 n 
+0000268627 00000 n 
+0000268690 00000 n 
+0000268751 00000 n 
+0000268812 00000 n 
+0000268873 00000 n 
+0000268934 00000 n 
+0000268995 00000 n 
+0000269055 00000 n 
+0000269116 00000 n 
+0000269177 00000 n 
+0000269238 00000 n 
+0000269299 00000 n 
+0000269360 00000 n 
+0000269421 00000 n 
+0000269482 00000 n 
+0000269543 00000 n 
+0000269603 00000 n 
+0000269664 00000 n 
+0000269725 00000 n 
+0000269786 00000 n 
+0000269847 00000 n 
+0000269908 00000 n 
+0000269969 00000 n 
+0000270030 00000 n 
+0000270091 00000 n 
+0000270151 00000 n 
+0000270214 00000 n 
+0000270274 00000 n 
+0000270335 00000 n 
+0000270396 00000 n 
+0000270457 00000 n 
+0000270518 00000 n 
+0000270579 00000 n 
+0000270640 00000 n 
+0000270701 00000 n 
+0000270762 00000 n 
+0000270822 00000 n 
+0000270883 00000 n 
+0000270944 00000 n 
+0000271005 00000 n 
+0000271066 00000 n 
+0000271127 00000 n 
+0000271188 00000 n 
+0000271249 00000 n 
+0000271310 00000 n 
+0000271370 00000 n 
+0000271431 00000 n 
+0000271492 00000 n 
+0000271553 00000 n 
+0000271614 00000 n 
+0000271675 00000 n 
+0000271736 00000 n 
+0000271797 00000 n 
+0000271858 00000 n 
+0000271918 00000 n 
+0000271979 00000 n 
+0000272040 00000 n 
+0000272101 00000 n 
+0000272162 00000 n 
+0000272223 00000 n 
+0000272284 00000 n 
+0000277485 00000 n 
+0000275332 00000 n 
+0000272444 00000 n 
+0000275455 00000 n 
+0000275518 00000 n 
+0000275579 00000 n 
+0000275640 00000 n 
+0000275701 00000 n 
+0000275762 00000 n 
+0000275822 00000 n 
+0000275883 00000 n 
+0000275944 00000 n 
+0000276005 00000 n 
+0000276066 00000 n 
+0000276127 00000 n 
+0000276188 00000 n 
+0000276249 00000 n 
+0000276310 00000 n 
+0000276370 00000 n 
+0000276431 00000 n 
+0000276492 00000 n 
+0000276553 00000 n 
+0000276614 00000 n 
+0000276675 00000 n 
+0000276736 00000 n 
+0000276797 00000 n 
+0000276858 00000 n 
+0000276921 00000 n 
+0000277108 00000 n 
+0000277171 00000 n 
+0000277234 00000 n 
+0000277297 00000 n 
+0000277360 00000 n 
+0000279374 00000 n 
+0000278684 00000 n 
+0000277628 00000 n 
+0000278807 00000 n 
+0000278870 00000 n 
+0000278933 00000 n 
+0000278996 00000 n 
+0000279059 00000 n 
+0000279122 00000 n 
+0000279185 00000 n 
+0000279248 00000 n 
+0000279311 00000 n 
+0000456734 00000 n 
+0000282226 00000 n 
+0000281099 00000 n 
+0000279474 00000 n 
+0000281222 00000 n 
+0000281472 00000 n 
+0000281535 00000 n 
+0000281598 00000 n 
+0000281661 00000 n 
+0000281724 00000 n 
+0000281787 00000 n 
+0000281850 00000 n 
+0000281975 00000 n 
+0000282038 00000 n 
+0000282101 00000 n 
+0000282164 00000 n 
+0000286264 00000 n 
+0000284507 00000 n 
+0000282325 00000 n 
+0000284630 00000 n 
+0000284755 00000 n 
+0000284818 00000 n 
+0000284881 00000 n 
+0000284944 00000 n 
+0000285007 00000 n 
+0000285132 00000 n 
+0000285195 00000 n 
+0000285258 00000 n 
+0000285320 00000 n 
+0000285383 00000 n 
+0000285446 00000 n 
+0000285509 00000 n 
+0000285572 00000 n 
+0000285635 00000 n 
+0000285698 00000 n 
+0000285761 00000 n 
+0000285824 00000 n 
+0000285887 00000 n 
+0000285950 00000 n 
+0000286012 00000 n 
+0000286075 00000 n 
+0000286138 00000 n 
+0000286201 00000 n 
+0000288723 00000 n 
+0000287848 00000 n 
+0000286377 00000 n 
+0000287971 00000 n 
+0000288096 00000 n 
+0000288159 00000 n 
+0000288222 00000 n 
+0000288284 00000 n 
+0000288347 00000 n 
+0000288410 00000 n 
+0000288473 00000 n 
+0000288535 00000 n 
+0000288598 00000 n 
+0000292610 00000 n 
+0000291358 00000 n 
+0000288836 00000 n 
+0000291481 00000 n 
+0000291729 00000 n 
+0000291792 00000 n 
+0000291854 00000 n 
+0000291917 00000 n 
+0000291980 00000 n 
+0000292043 00000 n 
+0000292106 00000 n 
+0000292169 00000 n 
+0000292232 00000 n 
+0000292295 00000 n 
+0000292358 00000 n 
+0000292421 00000 n 
+0000292484 00000 n 
+0000292547 00000 n 
+0000295946 00000 n 
+0000295511 00000 n 
+0000292723 00000 n 
+0000295634 00000 n 
+0000300394 00000 n 
+0000299705 00000 n 
+0000296059 00000 n 
+0000299828 00000 n 
+0000299953 00000 n 
+0000300016 00000 n 
+0000300079 00000 n 
+0000300142 00000 n 
+0000300205 00000 n 
+0000300268 00000 n 
+0000300331 00000 n 
+0000456859 00000 n 
+0000301278 00000 n 
+0000301030 00000 n 
+0000300549 00000 n 
+0000301153 00000 n 
+0000304800 00000 n 
+0000304365 00000 n 
+0000301377 00000 n 
+0000304488 00000 n 
+0000304674 00000 n 
+0000304737 00000 n 
+0000306509 00000 n 
+0000306134 00000 n 
+0000304926 00000 n 
+0000306257 00000 n 
+0000306320 00000 n 
+0000306383 00000 n 
+0000306446 00000 n 
+0000308255 00000 n 
+0000307822 00000 n 
+0000306609 00000 n 
+0000307945 00000 n 
+0000314590 00000 n 
+0000312345 00000 n 
+0000308368 00000 n 
+0000312468 00000 n 
+0000312593 00000 n 
+0000312656 00000 n 
+0000312719 00000 n 
+0000312782 00000 n 
+0000312845 00000 n 
+0000312908 00000 n 
+0000312971 00000 n 
+0000313034 00000 n 
+0000313097 00000 n 
+0000313159 00000 n 
+0000313222 00000 n 
+0000313285 00000 n 
+0000313348 00000 n 
+0000313411 00000 n 
+0000313474 00000 n 
+0000313537 00000 n 
+0000313600 00000 n 
+0000313663 00000 n 
+0000313725 00000 n 
+0000313788 00000 n 
+0000313851 00000 n 
+0000313914 00000 n 
+0000313977 00000 n 
+0000314040 00000 n 
+0000314103 00000 n 
+0000314164 00000 n 
+0000314225 00000 n 
+0000314286 00000 n 
+0000314347 00000 n 
+0000314408 00000 n 
+0000314469 00000 n 
+0000314530 00000 n 
+0000317835 00000 n 
+0000317094 00000 n 
+0000314718 00000 n 
+0000317217 00000 n 
+0000317280 00000 n 
+0000317341 00000 n 
+0000317402 00000 n 
+0000317463 00000 n 
+0000317524 00000 n 
+0000317586 00000 n 
+0000317649 00000 n 
+0000456984 00000 n 
+0000323464 00000 n 
+0000321265 00000 n 
+0000317948 00000 n 
+0000321388 00000 n 
+0000321451 00000 n 
+0000321514 00000 n 
+0000321577 00000 n 
+0000321640 00000 n 
+0000321703 00000 n 
+0000321766 00000 n 
+0000321829 00000 n 
+0000321892 00000 n 
+0000321954 00000 n 
+0000322017 00000 n 
+0000322080 00000 n 
+0000322143 00000 n 
+0000322206 00000 n 
+0000322269 00000 n 
+0000322332 00000 n 
+0000322395 00000 n 
+0000322458 00000 n 
+0000322520 00000 n 
+0000322583 00000 n 
+0000322646 00000 n 
+0000322709 00000 n 
+0000322772 00000 n 
+0000322835 00000 n 
+0000322898 00000 n 
+0000322961 00000 n 
+0000323024 00000 n 
+0000323086 00000 n 
+0000323149 00000 n 
+0000323212 00000 n 
+0000323275 00000 n 
+0000323338 00000 n 
+0000323401 00000 n 
+0000324981 00000 n 
+0000324795 00000 n 
+0000323564 00000 n 
+0000324918 00000 n 
+0000325797 00000 n 
+0000325549 00000 n 
+0000325081 00000 n 
+0000325672 00000 n 
+0000328300 00000 n 
+0000327616 00000 n 
+0000325896 00000 n 
+0000327739 00000 n 
+0000327987 00000 n 
+0000328050 00000 n 
+0000328174 00000 n 
+0000328237 00000 n 
+0000453047 00000 n 
+0000328426 00000 n 
+0000328754 00000 n 
+0000328780 00000 n 
+0000328805 00000 n 
+0000329197 00000 n 
+0000329673 00000 n 
+0000330151 00000 n 
+0000330255 00000 n 
+0000330731 00000 n 
+0000331204 00000 n 
+0000331772 00000 n 
+0000333441 00000 n 
+0000333678 00000 n 
+0000334955 00000 n 
+0000335187 00000 n 
+0000355221 00000 n 
+0000355841 00000 n 
+0000366242 00000 n 
+0000366559 00000 n 
+0000379578 00000 n 
+0000380064 00000 n 
+0000389516 00000 n 
+0000389949 00000 n 
+0000394208 00000 n 
+0000394474 00000 n 
+0000413141 00000 n 
+0000413695 00000 n 
+0000434776 00000 n 
+0000435401 00000 n 
+0000452534 00000 n 
+0000457100 00000 n 
+0000457225 00000 n 
+0000457351 00000 n 
+0000457450 00000 n 
+0000457532 00000 n 
+0000478226 00000 n 
+0000478426 00000 n 
+0000478611 00000 n 
+0000478795 00000 n 
+0000478980 00000 n 
+0000479164 00000 n 
+0000479349 00000 n 
+0000479532 00000 n 
+0000479715 00000 n 
+0000479900 00000 n 
+0000480084 00000 n 
+0000480269 00000 n 
+0000480453 00000 n 
+0000480638 00000 n 
+0000480822 00000 n 
+0000481007 00000 n 
+0000481191 00000 n 
+0000481376 00000 n 
+0000481559 00000 n 
+0000481740 00000 n 
+0000481923 00000 n 
+0000482106 00000 n 
+0000482291 00000 n 
+0000482475 00000 n 
+0000482660 00000 n 
+0000482844 00000 n 
+0000483029 00000 n 
+0000483213 00000 n 
+0000483398 00000 n 
+0000483582 00000 n 
+0000483767 00000 n 
+0000483950 00000 n 
+0000484133 00000 n 
+0000484318 00000 n 
+0000484502 00000 n 
+0000484687 00000 n 
+0000484871 00000 n 
+0000485056 00000 n 
+0000485238 00000 n 
+0000485423 00000 n 
+0000485607 00000 n 
+0000485792 00000 n 
+0000485976 00000 n 
+0000486157 00000 n 
+0000486333 00000 n 
+0000486510 00000 n 
+0000486686 00000 n 
+0000486863 00000 n 
+0000487039 00000 n 
+0000487216 00000 n 
+0000487392 00000 n 
+0000487569 00000 n 
+0000487744 00000 n 
+0000487919 00000 n 
+0000488096 00000 n 
+0000488299 00000 n 
+0000488521 00000 n 
+0000488716 00000 n 
+0000488902 00000 n 
+0000489094 00000 n 
+0000489351 00000 n 
+0000489608 00000 n 
+0000489865 00000 n 
+0000490122 00000 n 
+0000490379 00000 n 
+0000490636 00000 n 
+0000490893 00000 n 
+0000491136 00000 n 
+0000491379 00000 n 
+0000491628 00000 n 
+0000491877 00000 n 
+0000492126 00000 n 
+0000492361 00000 n 
+0000492602 00000 n 
+0000492843 00000 n 
+0000493084 00000 n 
+0000493325 00000 n 
+0000493566 00000 n 
+0000493807 00000 n 
+0000494045 00000 n 
+0000494286 00000 n 
+0000494527 00000 n 
+0000494768 00000 n 
+0000495009 00000 n 
+0000495250 00000 n 
+0000495490 00000 n 
+0000495739 00000 n 
+0000495983 00000 n 
+0000496226 00000 n 
+0000496475 00000 n 
+0000496723 00000 n 
+0000496972 00000 n 
+0000497220 00000 n 
+0000497469 00000 n 
+0000497714 00000 n 
+0000497958 00000 n 
+0000498207 00000 n 
+0000498455 00000 n 
+0000498702 00000 n 
+0000498943 00000 n 
+0000499188 00000 n 
+0000499429 00000 n 
+0000499670 00000 n 
+0000499914 00000 n 
+0000500159 00000 n 
+0000500398 00000 n 
+0000500631 00000 n 
+0000500870 00000 n 
+0000501114 00000 n 
+0000501363 00000 n 
+0000501611 00000 n 
+0000501856 00000 n 
+0000502099 00000 n 
+0000502348 00000 n 
+0000502596 00000 n 
+0000502845 00000 n 
+0000503086 00000 n 
+0000503332 00000 n 
+0000503581 00000 n 
+0000503828 00000 n 
+0000504073 00000 n 
+0000504313 00000 n 
+0000504554 00000 n 
+0000504791 00000 n 
+0000505026 00000 n 
+0000505267 00000 n 
+0000505508 00000 n 
+0000505749 00000 n 
+0000505990 00000 n 
+0000506229 00000 n 
+0000506470 00000 n 
+0000506711 00000 n 
+0000506952 00000 n 
+0000507198 00000 n 
+0000507444 00000 n 
+0000507685 00000 n 
+0000507929 00000 n 
+0000508178 00000 n 
+0000508425 00000 n 
+0000508672 00000 n 
+0000508916 00000 n 
+0000509154 00000 n 
+0000509387 00000 n 
+0000509606 00000 n 
+0000509784 00000 n 
+0000509961 00000 n 
+0000510136 00000 n 
+0000510311 00000 n 
+0000510488 00000 n 
+0000510664 00000 n 
+0000510841 00000 n 
+0000511017 00000 n 
+0000511194 00000 n 
+0000511370 00000 n 
+0000511547 00000 n 
+0000511723 00000 n 
+0000511897 00000 n 
+0000512067 00000 n 
+0000512240 00000 n 
+0000512421 00000 n 
+0000512618 00000 n 
+0000512824 00000 n 
+0000513035 00000 n 
+0000513246 00000 n 
+0000513449 00000 n 
+0000513652 00000 n 
+0000513855 00000 n 
+0000514058 00000 n 
+0000514273 00000 n 
+0000514524 00000 n 
+0000514770 00000 n 
+0000515013 00000 n 
+0000515258 00000 n 
+0000515501 00000 n 
+0000515744 00000 n 
+0000515987 00000 n 
+0000516234 00000 n 
+0000516481 00000 n 
+0000516724 00000 n 
+0000516980 00000 n 
+0000517268 00000 n 
+0000517556 00000 n 
+0000517847 00000 n 
+0000518136 00000 n 
+0000518419 00000 n 
+0000518710 00000 n 
+0000518993 00000 n 
+0000519276 00000 n 
+0000519559 00000 n 
+0000519842 00000 n 
+0000520125 00000 n 
+0000520408 00000 n 
+0000520631 00000 n 
+0000520704 00000 n 
+0000520831 00000 n 
+0000520948 00000 n 
+0000521066 00000 n 
+0000521184 00000 n 
+0000521302 00000 n 
+0000521419 00000 n 
+0000521537 00000 n 
+0000521654 00000 n 
+0000521770 00000 n 
+0000521896 00000 n 
+0000522032 00000 n 
+0000522164 00000 n 
+0000522296 00000 n 
+0000522428 00000 n 
+0000522560 00000 n 
+0000522694 00000 n 
+0000522827 00000 n 
+0000522960 00000 n 
+0000523094 00000 n 
+0000523227 00000 n 
+0000523359 00000 n 
+0000523491 00000 n 
+0000523624 00000 n 
+0000523749 00000 n 
+0000523865 00000 n 
+0000523980 00000 n 
+0000524100 00000 n 
+0000524231 00000 n 
+0000524366 00000 n 
+0000524506 00000 n 
+0000524651 00000 n 
+0000524777 00000 n 
+0000524842 00000 n 
+0000524969 00000 n 
+0000525094 00000 n 
+0000525227 00000 n 
+0000525352 00000 n 
+0000525483 00000 n 
+0000525584 00000 n 
+0000525707 00000 n 
+0000525747 00000 n 
+0000525963 00000 n 
 trailer
 << /Size 2635
 /Root 2633 0 R
 /Info 2634 0 R
-/ID [<EBCD1631EC89C0450ED3BD011DB79B71> <EBCD1631EC89C0450ED3BD011DB79B71>] >>
+/ID [<7BC2B4E3A38E04739D2B9805DDA0F3B3> <7BC2B4E3A38E04739D2B9805DDA0F3B3>] >>
 startxref
-526283
+526281
 %%EOF

Modified: branches/samba/experimental/docs/Samba3-HOWTO.pdf
===================================================================
--- branches/samba/experimental/docs/Samba3-HOWTO.pdf	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/docs/Samba3-HOWTO.pdf	2009-12-16 21:43:48 UTC (rev 3157)
@@ -5601,14 +5601,19 @@
 /ProcSet [ /PDF /Text ]
 >> endobj
 3729 0 obj <<
-/Length 1186      
+/Length 1180      
 /Filter /FlateDecode
 >>
 stream
-xÚÅ™MsÛ6†ïú8’35
-,¾s“]ÆQëH.ÅÔ“IsPl¹õLìN=Ó¦?¿~À’ÈP‘V^HJŸÞ]ì¤`¿1Á.'çÕäû×XàÁ‚eÕ=³À­c^*®«î؇¬ú}ŸÙâ>“ý*Ü>¬>7ÿ-WŸVÍ¥â†ÿÓ\¾YäÊd7U.}¶hþZ=Ýå«Ñê™”<ÓÀËõýúyýtÛš¸üëánÛa¯4óØ+«b¯@î…ešëš'oR3Ç¥S26ó܉&êhØBVÖÇŸêã¬>Îñ(³Ë+JqmT÷üõ€õM¦5îºÆ­1|dRT“?'±•`’ÓÜ[ƒŠn,°ÛÇɇ‚ÝáMƒ«àÙ—ºé#s†;ÍfËÉÏ[Ã…Åž
-àÆ©16|è1”\Ob¤±ìg쌥‰³M­ñ܃d.(Œ†Ö§}å6(l'¸„žM½aÓHÁAÙdT´A¾{~a[ÉAvûbÃØxŒ\*?àdhãЖ;iöèÚDþ¦&f3ʝäJ }ϵ&‹««éù¢œæAdU®q–Ë!™€KL?úr ÂŒ#Få¨Js9îû%àB¸£†"£K•>‚Ѹ%l¸EZœ~2ö§pÐmVœUWÅP¦r˜ƒL—"^õ¥,¶ˆ}‚ž)‡“Çmw¬,^e1¿êŠbÕXçR¤ï¼‡³Q yÀH:I£•ÃzË¥Þƒ t§üª#úY7…2Î=ëõFWÎb)îñw[Üãe[Üãe,î"÷˜Šš¿VO¹Ìîšk¬èñþúùl«ÞÛÆV[ê)õÃÓƒ Wç5¢ÍbÖ´"eBëQ;CË„6†@Ë„`p$Fr,‘<K`t’š€g ¥ß—I¨ŠU\@è…üÕl1ïÇvrÅ	lË€ïoŸOßKÐÎ{'0«> wÆüCLÓ\.PŠ‘)}ûZáõ®ýåìrÞšW_¯j‡w 6Úqí‰3‘ÀH¾$0’?Œ$)Ñ%HD€÷´©6P4·É-Fr‘ÜB`t’be”Î<[7—pƒ†$Ü’ØvÃSΪª˜7k€ó÷#Iò`ûî8ÁÀ÷rgó?ri²¿ãûõã§õs3°ßµB„‘<HYr0Ñ9oç‘œD`$I	Œ$)Ñ¥2¼-@ÊlLÓ~!¸øÏç¬Á:ZÓ^gØÀ­´Ìh‰ÁÒíN™-ã⨞'ofËöFnDö~¨rã£Nѝž(Hڐt=wê÷ÿ#¢ö®Ä=‰²¤¼b¨£‡¤«ßË5iñÝÛó¢Êé¡Þ‰Â®–Ûm³{ÖŸ1ÑD«§°® `@î˜/–åìzxͯ­ÆÒIlG·f—mÉ—üiÞl¶nñK€r¤ˆ%"ꈍiÓ[¬Úè#0R](ɯF«¨ö£É“¥0:E)ŒVQ
-¢S”Âèu¸‘q at S”ÀHŠ¢DR”ÀhG$§(¹çÄþÏFí')-¸è5ú–/Rÿ¦bà
+xÚÅ™Moã6†ïþ<J@Ã’ÃïÞœ¬6ë6k§²¶Áb»oì´6 h~‡ú`lK+׽ȴE=C¾3œ!-Á~c‚]O.«É÷o
+°Àƒ˪f[ǼT\9V­Ù§¬ú}“_€Ùâ!“ý*Ü?®¾6¿-WO_VMSqÃÿnšï¹2Ù]•KŸ-šŸVÏëüsõ#Z½’cx¹yؼlžï[×>®7±ŽJ3£²*Ž
+¤á^X¦¹¡yò.us\:%c7ϝ‘h¢î€†-de}ý©¾Îêë¯2»°¢×FuÏß0\Ûd`Zãnk\ÑÃG&E5ùc{	&8ͽ5¨¨áÆ»š|ú,Øo¢\Ïþª»>1g¸ÓÑüW¶œü¼Ã0\X© nœc`wàÁ‡CÁµð$FšËaÆÞ\š8ÛÖÚÏ=Hæ‚Âhh}úøØÐXnƒÂ~‚KèÙÔ[6”MFEäûŸ¯l+9hÀÁâXl›’K圃­qÚr'Í]›ÈßÖÄlG¹“\	d¡¯âg­ÉÕâæfz¹(§yY•k\‡årH&àÒŸ2Ž¾ˆ0ãˆQ9j†Ò\Ž‡ûaI¸ÈèR¥O`4n	[n‘—ŸŒãÁ%t›gÕM1”©æ Ó¥ˆúŽR{Ä€>ÃÈ”ÃÅãvVo‹²˜_
+
+E±jlp)ŠÒwÞÃÕ(мG`$	Œ$ÑÊa½åR@ ºS~S£ý¬›Bמõz«À+g±À¿÷ø½-î±Ù÷ØŒÅ]ÄâSQóÓê9—ÙºicE÷7/;õÞ6¶ÚRïük©^½:¯m³Þð )ZÚZ&´±0Z&¤0 ‹0€#1’c	ŒäY£“ÔüRú
+q›„ªXÅ„nSˆÁUÍó~l'WœÁ¶X`ñþŽñùô}1°í¼w³JàzoÎob*˜æpƒRŒ,é3Ø×
+Ûûö—³ëykþCY|»ª?€~Øhǵ'®D#ù’ÀHþ 0’¤F— ÞÓ¤2ØAÑÜB`$·É-FrÑIŠ•Q:ôjÝÞnxÀ’ðHbÛÿ]9«ªbÞì.?Ž$É£í¸ãs ÜêÝI¼ÙÜož¾l^šYHý]Ó !ÂHú#L(ù•ÀèüŠ·ˆK…ÀH¾!0’¤F’”Àè2Þ OÎ`H6¦é?ŠÜ üg‡KÕ`y­iÿbØÀ­´Ìh‰ÁÒJ™-㞨^'ïfËöŒÜˆìãPÁÆG:a8=Q ´!ézÐ-3þGDí]‰GeIé0ÄPGIWÿ×l;?¼¿,Ê¡TêØ9ìÊ`¹Ý5{`ÛM´zë
+äžùbyUÎn‡·úÚjܝÅvt+`vÙ•|p§ŸÖÍÑf{á_ (GŠX"¢ŽØ˜6ý©Åª>#Łх‘üJ`´Šj0š<IQ
+£S”Âh¥ :E)ŒNQ‡ç4E	Œ¤(Ñ)J@$E	Œ&qD‚pŠ’{N@~[Ô¾‰Ò‚‹þË¢ó"ê
 endstream
 endobj
 3728 0 obj <<
@@ -122797,8 +122802,8 @@
 >> endobj
 19885 0 obj <<
 /Author()/Title()/Subject()/Creator(DBLaTeX-0.2.7)/Producer(pdfTeX-1.40.3)/Keywords()
-/CreationDate (D:20091126103218+01'00')
-/ModDate (D:20091126103218+01'00')
+/CreationDate (D:20091214094753+01'00')
+/ModDate (D:20091214094753+01'00')
 /Trapped /False
 /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6)
 >> endobj
@@ -122810,19891 +122815,19891 @@
 0000000004 00000 f 
 0000000000 00000 f 
 0000000015 00000 n 
-0000385914 00000 n 
-0005238435 00000 n 
+0000385908 00000 n 
+0005238429 00000 n 
 0000000057 00000 n 
 0000000097 00000 n 
-0000389874 00000 n 
-0005238326 00000 n 
+0000389868 00000 n 
+0005238320 00000 n 
 0000000142 00000 n 
 0000000190 00000 n 
-0000389998 00000 n 
-0005238252 00000 n 
+0000389992 00000 n 
+0005238246 00000 n 
 0000000238 00000 n 
 0000000287 00000 n 
-0000390059 00000 n 
-0005238128 00000 n 
+0000390053 00000 n 
+0005238122 00000 n 
 0000000335 00000 n 
 0000000384 00000 n 
-0000390120 00000 n 
-0005238054 00000 n 
+0000390114 00000 n 
+0005238048 00000 n 
 0000000437 00000 n 
 0000000481 00000 n 
-0000395597 00000 n 
-0005237967 00000 n 
+0000395591 00000 n 
+0005237961 00000 n 
 0000000534 00000 n 
 0000000582 00000 n 
-0000396096 00000 n 
-0005237880 00000 n 
+0000396090 00000 n 
+0005237874 00000 n 
 0000000635 00000 n 
 0000000668 00000 n 
-0000405953 00000 n 
-0005237756 00000 n 
+0000405947 00000 n 
+0005237750 00000 n 
 0000000721 00000 n 
 0000000761 00000 n 
-0000406641 00000 n 
-0005237695 00000 n 
+0000406635 00000 n 
+0005237689 00000 n 
 0000000819 00000 n 
 0000000873 00000 n 
-0000410695 00000 n 
-0005237621 00000 n 
+0000410689 00000 n 
+0005237615 00000 n 
 0000000926 00000 n 
 0000000949 00000 n 
-0000410756 00000 n 
-0005237534 00000 n 
+0000410750 00000 n 
+0005237528 00000 n 
 0000000997 00000 n 
 0000001051 00000 n 
-0000410940 00000 n 
-0005237447 00000 n 
+0000410934 00000 n 
+0005237441 00000 n 
 0000001099 00000 n 
 0000001144 00000 n 
-0000411253 00000 n 
-0005237323 00000 n 
+0000411247 00000 n 
+0005237317 00000 n 
 0000001192 00000 n 
 0000001243 00000 n 
-0000415763 00000 n 
-0005237249 00000 n 
+0000415757 00000 n 
+0005237243 00000 n 
 0000001296 00000 n 
 0000001341 00000 n 
-0000415824 00000 n 
-0005237175 00000 n 
+0000415818 00000 n 
+0005237169 00000 n 
 0000001394 00000 n 
 0000001425 00000 n 
-0000415885 00000 n 
-0005237064 00000 n 
+0000415879 00000 n 
+0005237058 00000 n 
 0000001473 00000 n 
 0000001505 00000 n 
-0000415946 00000 n 
-0005236990 00000 n 
+0000415940 00000 n 
+0005236984 00000 n 
 0000001558 00000 n 
 0000001607 00000 n 
-0000416007 00000 n 
-0005236903 00000 n 
+0000416001 00000 n 
+0005236897 00000 n 
 0000001660 00000 n 
 0000001715 00000 n 
-0000417233 00000 n 
-0005236829 00000 n 
+0000417227 00000 n 
+0005236823 00000 n 
 0000001768 00000 n 
 0000001821 00000 n 
-0000421525 00000 n 
-0005236719 00000 n 
+0000421519 00000 n 
+0005236713 00000 n 
 0000001867 00000 n 
 0000001917 00000 n 
-0000421647 00000 n 
-0005236645 00000 n 
+0000421641 00000 n 
+0005236639 00000 n 
 0000001965 00000 n 
 0000002005 00000 n 
-0000421708 00000 n 
-0005236558 00000 n 
+0000421702 00000 n 
+0005236552 00000 n 
 0000002053 00000 n 
 0000002100 00000 n 
-0000425850 00000 n 
-0005236446 00000 n 
+0000425844 00000 n 
+0005236440 00000 n 
 0000002148 00000 n 
 0000002182 00000 n 
-0000425911 00000 n 
-0005236331 00000 n 
+0000425905 00000 n 
+0005236325 00000 n 
 0000002235 00000 n 
 0000002272 00000 n 
-0000425972 00000 n 
-0005236253 00000 n 
+0000425966 00000 n 
+0005236247 00000 n 
 0000002331 00000 n 
 0000002386 00000 n 
-0000433349 00000 n 
-0005236161 00000 n 
+0000433343 00000 n 
+0005236155 00000 n 
 0000002445 00000 n 
 0000002501 00000 n 
-0000439616 00000 n 
-0005236069 00000 n 
+0000439610 00000 n 
+0005236063 00000 n 
 0000002560 00000 n 
 0000002602 00000 n 
-0000445160 00000 n 
-0005235991 00000 n 
+0000445154 00000 n 
+0005235985 00000 n 
 0000002661 00000 n 
 0000002720 00000 n 
-0000463970 00000 n 
-0005235861 00000 n 
+0000463964 00000 n 
+0005235855 00000 n 
 0000002774 00000 n 
 0000002814 00000 n 
-0000464032 00000 n 
-0005235796 00000 n 
+0000464026 00000 n 
+0005235790 00000 n 
 0000002873 00000 n 
 0000002914 00000 n 
-0000478337 00000 n 
-0005235679 00000 n 
+0000478331 00000 n 
+0005235673 00000 n 
 0000002968 00000 n 
 0000003005 00000 n 
-0000482618 00000 n 
-0005235600 00000 n 
+0000482612 00000 n 
+0005235594 00000 n 
 0000003064 00000 n 
 0000003111 00000 n 
-0000496773 00000 n 
-0005235482 00000 n 
+0000496767 00000 n 
+0005235476 00000 n 
 0000003170 00000 n 
 0000003208 00000 n 
-0000496835 00000 n 
-0005235403 00000 n 
+0000496829 00000 n 
+0005235397 00000 n 
 0000003265 00000 n 
 0000003314 00000 n 
-0000517019 00000 n 
-0005235324 00000 n 
+0000517013 00000 n 
+0005235318 00000 n 
 0000003371 00000 n 
 0000003415 00000 n 
-0000519897 00000 n 
-0005235192 00000 n 
+0000519891 00000 n 
+0005235186 00000 n 
 0000003459 00000 n 
 0000003509 00000 n 
-0000523089 00000 n 
-0005235074 00000 n 
+0000523083 00000 n 
+0005235068 00000 n 
 0000003556 00000 n 
 0000003607 00000 n 
-0000523212 00000 n 
-0005234995 00000 n 
+0000523206 00000 n 
+0005234989 00000 n 
 0000003656 00000 n 
 0000003697 00000 n 
-0000527451 00000 n 
-0005234902 00000 n 
+0000527445 00000 n 
+0005234896 00000 n 
 0000003746 00000 n 
 0000003778 00000 n 
-0000527513 00000 n 
-0005234770 00000 n 
+0000527507 00000 n 
+0005234764 00000 n 
 0000003827 00000 n 
 0000003867 00000 n 
-0000527575 00000 n 
-0005234652 00000 n 
+0000527569 00000 n 
+0005234646 00000 n 
 0000003921 00000 n 
 0000003960 00000 n 
-0000531877 00000 n 
-0005234587 00000 n 
+0000531871 00000 n 
+0005234581 00000 n 
 0000004019 00000 n 
 0000004060 00000 n 
-0000532065 00000 n 
-0005234455 00000 n 
+0000532059 00000 n 
+0005234449 00000 n 
 0000004114 00000 n 
 0000004154 00000 n 
-0000532379 00000 n 
-0005234390 00000 n 
+0000532373 00000 n 
+0005234384 00000 n 
 0000004213 00000 n 
 0000004254 00000 n 
-0000536306 00000 n 
-0005234258 00000 n 
+0000536300 00000 n 
+0005234252 00000 n 
 0000004308 00000 n 
 0000004372 00000 n 
-0000536557 00000 n 
-0005234193 00000 n 
+0000536551 00000 n 
+0005234187 00000 n 
 0000004431 00000 n 
 0000004472 00000 n 
-0000542337 00000 n 
-0005234061 00000 n 
+0000542331 00000 n 
+0005234055 00000 n 
 0000004526 00000 n 
 0000004587 00000 n 
-0000542399 00000 n 
-0005233996 00000 n 
+0000542393 00000 n 
+0005233990 00000 n 
 0000004646 00000 n 
 0000004687 00000 n 
-0000542775 00000 n 
-0005233878 00000 n 
+0000542769 00000 n 
+0005233872 00000 n 
 0000004741 00000 n 
 0000004800 00000 n 
-0000547074 00000 n 
-0005233813 00000 n 
+0000547068 00000 n 
+0005233807 00000 n 
 0000004859 00000 n 
 0000004900 00000 n 
-0000547388 00000 n 
-0005233720 00000 n 
+0000547382 00000 n 
+0005233714 00000 n 
 0000004949 00000 n 
 0000004986 00000 n 
-0000553654 00000 n 
-0005233602 00000 n 
+0000553648 00000 n 
+0005233596 00000 n 
 0000005035 00000 n 
 0000005068 00000 n 
-0000553716 00000 n 
-0005233523 00000 n 
+0000553710 00000 n 
+0005233517 00000 n 
 0000005122 00000 n 
 0000005168 00000 n 
-0000553777 00000 n 
-0005233430 00000 n 
+0000553771 00000 n 
+0005233424 00000 n 
 0000005222 00000 n 
 0000005279 00000 n 
-0000553839 00000 n 
-0005233337 00000 n 
+0000553833 00000 n 
+0005233331 00000 n 
 0000005333 00000 n 
 0000005386 00000 n 
-0000553900 00000 n 
-0005233244 00000 n 
+0000553894 00000 n 
+0005233238 00000 n 
 0000005440 00000 n 
 0000005508 00000 n 
-0000555790 00000 n 
-0005233165 00000 n 
+0000555784 00000 n 
+0005233159 00000 n 
 0000005562 00000 n 
 0000005667 00000 n 
-0000604910 00000 n 
-0005233033 00000 n 
+0000604904 00000 n 
+0005233027 00000 n 
 0000005714 00000 n 
 0000005748 00000 n 
-0000609374 00000 n 
-0005232954 00000 n 
+0000609368 00000 n 
+0005232948 00000 n 
 0000005797 00000 n 
 0000005838 00000 n 
-0000614232 00000 n 
-0005232861 00000 n 
+0000614226 00000 n 
+0005232855 00000 n 
 0000005887 00000 n 
 0000005941 00000 n 
-0000623486 00000 n 
-0005232729 00000 n 
+0000623480 00000 n 
+0005232723 00000 n 
 0000005990 00000 n 
 0000006034 00000 n 
-0000623548 00000 n 
-0005232650 00000 n 
+0000623542 00000 n 
+0005232644 00000 n 
 0000006088 00000 n 
 0000006131 00000 n 
-0000627742 00000 n 
-0005232571 00000 n 
+0000627736 00000 n 
+0005232565 00000 n 
 0000006185 00000 n 
 0000006233 00000 n 
-0000637241 00000 n 
-0005232478 00000 n 
+0000637235 00000 n 
+0005232472 00000 n 
 0000006282 00000 n 
 0000006339 00000 n 
-0000643377 00000 n 
-0005232385 00000 n 
+0000643371 00000 n 
+0005232379 00000 n 
 0000006388 00000 n 
 0000006432 00000 n 
-0000643439 00000 n 
-0005232253 00000 n 
+0000643433 00000 n 
+0005232247 00000 n 
 0000006481 00000 n 
 0000006539 00000 n 
-0000643501 00000 n 
-0005232135 00000 n 
+0000643495 00000 n 
+0005232129 00000 n 
 0000006593 00000 n 
 0000006641 00000 n 
-0000648104 00000 n 
-0005232056 00000 n 
+0000648098 00000 n 
+0005232050 00000 n 
 0000006700 00000 n 
 0000006741 00000 n 
-0000648856 00000 n 
-0005231963 00000 n 
+0000648850 00000 n 
+0005231957 00000 n 
 0000006800 00000 n 
 0000006866 00000 n 
-0000648918 00000 n 
-0005231884 00000 n 
+0000648912 00000 n 
+0005231878 00000 n 
 0000006925 00000 n 
 0000006978 00000 n 
-0000653876 00000 n 
-0005231805 00000 n 
+0000653870 00000 n 
+0005231799 00000 n 
 0000007032 00000 n 
 0000007085 00000 n 
-0000657796 00000 n 
-0005231687 00000 n 
+0000657790 00000 n 
+0005231681 00000 n 
 0000007134 00000 n 
 0000007167 00000 n 
-0000657858 00000 n 
-0005231608 00000 n 
+0000657852 00000 n 
+0005231602 00000 n 
 0000007221 00000 n 
 0000007282 00000 n 
-0000657919 00000 n 
-0005231515 00000 n 
+0000657913 00000 n 
+0005231509 00000 n 
 0000007336 00000 n 
 0000007412 00000 n 
-0000658107 00000 n 
-0005231422 00000 n 
+0000658101 00000 n 
+0005231416 00000 n 
 0000007466 00000 n 
 0000007527 00000 n 
-0000662195 00000 n 
-0005231329 00000 n 
+0000662189 00000 n 
+0005231323 00000 n 
 0000007581 00000 n 
 0000007644 00000 n 
-0000662257 00000 n 
-0005231236 00000 n 
+0000662251 00000 n 
+0005231230 00000 n 
 0000007698 00000 n 
 0000007734 00000 n 
-0000662319 00000 n 
-0005231143 00000 n 
+0000662313 00000 n 
+0005231137 00000 n 
 0000007788 00000 n 
 0000007837 00000 n 
-0000662381 00000 n 
-0005231064 00000 n 
+0000662375 00000 n 
+0005231058 00000 n 
 0000007891 00000 n 
 0000007973 00000 n 
-0000666359 00000 n 
-0005230932 00000 n 
+0000666353 00000 n 
+0005230926 00000 n 
 0000008020 00000 n 
 0000008061 00000 n 
-0000666482 00000 n 
-0005230853 00000 n 
+0000666476 00000 n 
+0005230847 00000 n 
 0000008110 00000 n 
 0000008151 00000 n 
-0000666544 00000 n 
-0005230721 00000 n 
+0000666538 00000 n 
+0005230715 00000 n 
 0000008200 00000 n 
 0000008252 00000 n 
-0000670821 00000 n 
-0005230603 00000 n 
+0000670815 00000 n 
+0005230597 00000 n 
 0000008306 00000 n 
 0000008361 00000 n 
-0000676737 00000 n 
-0005230538 00000 n 
+0000676731 00000 n 
+0005230532 00000 n 
 0000008420 00000 n 
 0000008465 00000 n 
-0000677617 00000 n 
-0005230445 00000 n 
+0000677611 00000 n 
+0005230439 00000 n 
 0000008519 00000 n 
 0000008563 00000 n 
-0000682644 00000 n 
-0005230352 00000 n 
+0000682638 00000 n 
+0005230346 00000 n 
 0000008617 00000 n 
 0000008668 00000 n 
-0000682706 00000 n 
-0005230259 00000 n 
+0000682700 00000 n 
+0005230253 00000 n 
 0000008722 00000 n 
 0000008792 00000 n 
-0000687340 00000 n 
-0005230141 00000 n 
+0000687334 00000 n 
+0005230135 00000 n 
 0000008846 00000 n 
 0000008916 00000 n 
-0000687402 00000 n 
-0005230062 00000 n 
+0000687396 00000 n 
+0005230056 00000 n 
 0000008975 00000 n 
 0000009022 00000 n 
-0000687464 00000 n 
-0005229983 00000 n 
+0000687458 00000 n 
+0005229977 00000 n 
 0000009081 00000 n 
 0000009129 00000 n 
-0000687526 00000 n 
-0005229851 00000 n 
+0000687520 00000 n 
+0005229845 00000 n 
 0000009178 00000 n 
 0000009236 00000 n 
-0000693278 00000 n 
-0005229786 00000 n 
+0000693272 00000 n 
+0005229780 00000 n 
 0000009290 00000 n 
 0000009331 00000 n 
-0000698018 00000 n 
-0005229668 00000 n 
+0000698012 00000 n 
+0005229662 00000 n 
 0000009380 00000 n 
 0000009413 00000 n 
-0000698080 00000 n 
-0005229589 00000 n 
+0000698074 00000 n 
+0005229583 00000 n 
 0000009467 00000 n 
 0000009517 00000 n 
-0000698142 00000 n 
-0005229496 00000 n 
+0000698136 00000 n 
+0005229490 00000 n 
 0000009571 00000 n 
 0000009645 00000 n 
-0000698203 00000 n 
-0005229403 00000 n 
+0000698197 00000 n 
+0005229397 00000 n 
 0000009699 00000 n 
 0000009757 00000 n 
-0000698265 00000 n 
-0005229324 00000 n 
+0000698259 00000 n 
+0005229318 00000 n 
 0000009811 00000 n 
 0000009859 00000 n 
-0000701375 00000 n 
-0005229192 00000 n 
+0000701369 00000 n 
+0005229186 00000 n 
 0000009906 00000 n 
 0000009943 00000 n 
-0000701500 00000 n 
-0005229113 00000 n 
+0000701494 00000 n 
+0005229107 00000 n 
 0000009992 00000 n 
 0000010033 00000 n 
-0000701562 00000 n 
-0005228981 00000 n 
+0000701556 00000 n 
+0005228975 00000 n 
 0000010082 00000 n 
 0000010154 00000 n 
-0000708584 00000 n 
-0005228902 00000 n 
+0000708578 00000 n 
+0005228896 00000 n 
 0000010208 00000 n 
 0000010269 00000 n 
-0000714102 00000 n 
-0005228809 00000 n 
+0000714096 00000 n 
+0005228803 00000 n 
 0000010323 00000 n 
 0000010400 00000 n 
-0000714542 00000 n 
-0005228716 00000 n 
+0000714536 00000 n 
+0005228710 00000 n 
 0000010454 00000 n 
 0000010519 00000 n 
-0000714793 00000 n 
-0005228598 00000 n 
+0000714787 00000 n 
+0005228592 00000 n 
 0000010573 00000 n 
 0000010651 00000 n 
-0000714854 00000 n 
-0005228519 00000 n 
+0000714848 00000 n 
+0005228513 00000 n 
 0000010710 00000 n 
 0000010765 00000 n 
-0000718999 00000 n 
-0005228426 00000 n 
+0000718993 00000 n 
+0005228420 00000 n 
 0000010824 00000 n 
 0000010862 00000 n 
-0000719061 00000 n 
-0005228347 00000 n 
+0000719055 00000 n 
+0005228341 00000 n 
 0000010921 00000 n 
 0000010953 00000 n 
-0000719123 00000 n 
-0005228215 00000 n 
+0000719117 00000 n 
+0005228209 00000 n 
 0000011002 00000 n 
 0000011042 00000 n 
-0000719248 00000 n 
-0005228136 00000 n 
+0000719242 00000 n 
+0005228130 00000 n 
 0000011096 00000 n 
 0000011155 00000 n 
-0000730446 00000 n 
-0005228057 00000 n 
+0000730440 00000 n 
+0005228051 00000 n 
 0000011209 00000 n 
 0000011271 00000 n 
-0000730508 00000 n 
-0005227925 00000 n 
+0000730502 00000 n 
+0005227919 00000 n 
 0000011320 00000 n 
 0000011367 00000 n 
-0000730633 00000 n 
-0005227846 00000 n 
+0000730627 00000 n 
+0005227840 00000 n 
 0000011421 00000 n 
 0000011459 00000 n 
-0000735464 00000 n 
-0005227753 00000 n 
+0000735458 00000 n 
+0005227747 00000 n 
 0000011513 00000 n 
 0000011557 00000 n 
-0000741708 00000 n 
-0005227621 00000 n 
+0000741702 00000 n 
+0005227615 00000 n 
 0000011611 00000 n 
 0000011658 00000 n 
-0000742274 00000 n 
-0005227556 00000 n 
+0000742268 00000 n 
+0005227550 00000 n 
 0000011717 00000 n 
 0000011752 00000 n 
-0000742336 00000 n 
-0005227463 00000 n 
+0000742330 00000 n 
+0005227457 00000 n 
 0000011806 00000 n 
 0000011846 00000 n 
-0000746318 00000 n 
-0005227370 00000 n 
+0000746312 00000 n 
+0005227364 00000 n 
 0000011900 00000 n 
 0000011942 00000 n 
-0000746443 00000 n 
-0005227291 00000 n 
+0000746437 00000 n 
+0005227285 00000 n 
 0000011996 00000 n 
 0000012021 00000 n 
-0000746505 00000 n 
-0005227198 00000 n 
+0000746499 00000 n 
+0005227192 00000 n 
 0000012070 00000 n 
 0000012143 00000 n 
-0000746816 00000 n 
-0005227080 00000 n 
+0000746810 00000 n 
+0005227074 00000 n 
 0000012192 00000 n 
 0000012225 00000 n 
-0000746878 00000 n 
-0005227001 00000 n 
+0000746872 00000 n 
+0005226995 00000 n 
 0000012279 00000 n 
 0000012332 00000 n 
-0000749636 00000 n 
-0005226908 00000 n 
+0000749630 00000 n 
+0005226902 00000 n 
 0000012386 00000 n 
 0000012436 00000 n 
-0000749698 00000 n 
-0005226829 00000 n 
+0000749692 00000 n 
+0005226823 00000 n 
 0000012490 00000 n 
 0000012541 00000 n 
-0000753067 00000 n 
-0005226697 00000 n 
+0000753061 00000 n 
+0005226691 00000 n 
 0000012588 00000 n 
 0000012626 00000 n 
-0000753190 00000 n 
-0005226618 00000 n 
+0000753184 00000 n 
+0005226612 00000 n 
 0000012675 00000 n 
 0000012716 00000 n 
-0000753252 00000 n 
-0005226525 00000 n 
+0000753246 00000 n 
+0005226519 00000 n 
 0000012765 00000 n 
 0000012795 00000 n 
-0000758207 00000 n 
-0005226393 00000 n 
+0000758201 00000 n 
+0005226387 00000 n 
 0000012844 00000 n 
 0000012885 00000 n 
-0000758269 00000 n 
-0005226314 00000 n 
+0000758263 00000 n 
+0005226308 00000 n 
 0000012939 00000 n 
 0000012989 00000 n 
-0000759275 00000 n 
-0005226235 00000 n 
+0000759269 00000 n 
+0005226229 00000 n 
 0000013043 00000 n 
 0000013084 00000 n 
-0000768010 00000 n 
-0005226156 00000 n 
+0000768004 00000 n 
+0005226150 00000 n 
 0000013133 00000 n 
 0000013166 00000 n 
-0000770249 00000 n 
-0005226038 00000 n 
+0000770243 00000 n 
+0005226032 00000 n 
 0000013213 00000 n 
 0000013271 00000 n 
-0000770372 00000 n 
-0005225959 00000 n 
+0000770366 00000 n 
+0005225953 00000 n 
 0000013320 00000 n 
 0000013361 00000 n 
-0000770434 00000 n 
-0005225827 00000 n 
+0000770428 00000 n 
+0005225821 00000 n 
 0000013410 00000 n 
 0000013447 00000 n 
-0000770496 00000 n 
-0005225709 00000 n 
+0000770490 00000 n 
+0005225703 00000 n 
 0000013501 00000 n 
 0000013541 00000 n 
-0000798315 00000 n 
-0005225630 00000 n 
+0000798309 00000 n 
+0005225624 00000 n 
 0000013600 00000 n 
 0000013646 00000 n 
-0000897889 00000 n 
-0005225537 00000 n 
+0000897883 00000 n 
+0005225531 00000 n 
 0000013705 00000 n 
 0000013740 00000 n 
-0000948235 00000 n 
-0005225458 00000 n 
+0000948229 00000 n 
+0005225452 00000 n 
 0000013799 00000 n 
 0000013832 00000 n 
-0001016263 00000 n 
-0005225365 00000 n 
+0001016257 00000 n 
+0005225359 00000 n 
 0000013886 00000 n 
 0000013952 00000 n 
-0001096673 00000 n 
-0005225286 00000 n 
+0001096667 00000 n 
+0005225280 00000 n 
 0000014006 00000 n 
 0000014067 00000 n 
-0001128958 00000 n 
-0005225207 00000 n 
+0001128952 00000 n 
+0005225201 00000 n 
 0000014116 00000 n 
 0000014149 00000 n 
-0001131148 00000 n 
-0005225070 00000 n 
+0001131142 00000 n 
+0005225064 00000 n 
 0000014193 00000 n 
 0000014239 00000 n 
-0001134756 00000 n 
-0005224952 00000 n 
+0001134750 00000 n 
+0005224946 00000 n 
 0000014286 00000 n 
 0000014366 00000 n 
-0001134881 00000 n 
-0005224873 00000 n 
+0001134875 00000 n 
+0005224867 00000 n 
 0000014415 00000 n 
 0000014469 00000 n 
-0001134943 00000 n 
-0005224755 00000 n 
+0001134937 00000 n 
+0005224749 00000 n 
 0000014518 00000 n 
 0000014572 00000 n 
-0001135005 00000 n 
-0005224676 00000 n 
+0001134999 00000 n 
+0005224670 00000 n 
 0000014626 00000 n 
 0000014668 00000 n 
-0001139202 00000 n 
-0005224583 00000 n 
+0001139196 00000 n 
+0005224577 00000 n 
 0000014722 00000 n 
 0000014766 00000 n 
-0001139390 00000 n 
-0005224490 00000 n 
+0001139384 00000 n 
+0005224484 00000 n 
 0000014820 00000 n 
 0000014854 00000 n 
-0001141179 00000 n 
-0005224397 00000 n 
+0001141173 00000 n 
+0005224391 00000 n 
 0000014908 00000 n 
 0000014965 00000 n 
-0001141241 00000 n 
-0005224318 00000 n 
+0001141235 00000 n 
+0005224312 00000 n 
 0000015019 00000 n 
 0000015067 00000 n 
-0001144483 00000 n 
-0005224186 00000 n 
+0001144477 00000 n 
+0005224180 00000 n 
 0000015115 00000 n 
 0000015151 00000 n 
-0001144608 00000 n 
-0005224107 00000 n 
+0001144602 00000 n 
+0005224101 00000 n 
 0000015201 00000 n 
 0000015242 00000 n 
-0001146801 00000 n 
-0005224014 00000 n 
+0001146795 00000 n 
+0005224008 00000 n 
 0000015292 00000 n 
 0000015329 00000 n 
-0001150602 00000 n 
-0005223882 00000 n 
+0001150596 00000 n 
+0005223876 00000 n 
 0000015379 00000 n 
 0000015409 00000 n 
-0001150727 00000 n 
-0005223803 00000 n 
+0001150721 00000 n 
+0005223797 00000 n 
 0000015464 00000 n 
 0000015503 00000 n 
-0001155202 00000 n 
-0005223710 00000 n 
+0001155196 00000 n 
+0005223704 00000 n 
 0000015558 00000 n 
 0000015600 00000 n 
-0001155264 00000 n 
-0005223631 00000 n 
+0001155258 00000 n 
+0005223625 00000 n 
 0000015655 00000 n 
 0000015699 00000 n 
-0001163657 00000 n 
-0005223499 00000 n 
+0001163651 00000 n 
+0005223493 00000 n 
 0000015749 00000 n 
 0000015791 00000 n 
-0001168465 00000 n 
-0005223420 00000 n 
+0001168459 00000 n 
+0005223414 00000 n 
 0000015846 00000 n 
 0000015896 00000 n 
-0001175010 00000 n 
-0005223327 00000 n 
+0001175004 00000 n 
+0005223321 00000 n 
 0000015951 00000 n 
 0000016000 00000 n 
-0001176078 00000 n 
-0005223234 00000 n 
+0001176072 00000 n 
+0005223228 00000 n 
 0000016055 00000 n 
 0000016105 00000 n 
-0001179860 00000 n 
-0005223141 00000 n 
+0001179854 00000 n 
+0005223135 00000 n 
 0000016160 00000 n 
 0000016210 00000 n 
-0001180173 00000 n 
-0005223048 00000 n 
+0001180167 00000 n 
+0005223042 00000 n 
 0000016265 00000 n 
 0000016315 00000 n 
-0001184496 00000 n 
-0005222955 00000 n 
+0001184490 00000 n 
+0005222949 00000 n 
 0000016370 00000 n 
 0000016409 00000 n 
-0001184747 00000 n 
-0005222862 00000 n 
+0001184741 00000 n 
+0005222856 00000 n 
 0000016464 00000 n 
 0000016520 00000 n 
-0001185060 00000 n 
-0005222783 00000 n 
+0001185054 00000 n 
+0005222777 00000 n 
 0000016575 00000 n 
 0000016634 00000 n 
-0001185248 00000 n 
-0005222651 00000 n 
+0001185242 00000 n 
+0005222645 00000 n 
 0000016684 00000 n 
 0000016749 00000 n 
-0001189835 00000 n 
-0005222572 00000 n 
+0001189829 00000 n 
+0005222566 00000 n 
 0000016804 00000 n 
 0000016849 00000 n 
-0001194028 00000 n 
-0005222479 00000 n 
+0001194022 00000 n 
+0005222473 00000 n 
 0000016904 00000 n 
 0000016940 00000 n 
-0001194090 00000 n 
-0005222400 00000 n 
+0001194084 00000 n 
+0005222394 00000 n 
 0000016995 00000 n 
 0000017034 00000 n 
-0001194528 00000 n 
-0005222268 00000 n 
+0001194522 00000 n 
+0005222262 00000 n 
 0000017084 00000 n 
 0000017117 00000 n 
-0001198376 00000 n 
-0005222189 00000 n 
+0001198370 00000 n 
+0005222183 00000 n 
 0000017172 00000 n 
 0000017220 00000 n 
-0001198438 00000 n 
-0005222110 00000 n 
+0001198432 00000 n 
+0005222104 00000 n 
 0000017275 00000 n 
 0000017316 00000 n 
-0001203250 00000 n 
-0005221978 00000 n 
+0001203244 00000 n 
+0005221972 00000 n 
 0000017366 00000 n 
 0000017416 00000 n 
-0001203312 00000 n 
-0005221899 00000 n 
+0001203306 00000 n 
+0005221893 00000 n 
 0000017471 00000 n 
 0000017516 00000 n 
-0001203374 00000 n 
-0005221806 00000 n 
+0001203368 00000 n 
+0005221800 00000 n 
 0000017571 00000 n 
 0000017609 00000 n 
-0001252384 00000 n 
-0005221688 00000 n 
+0001252378 00000 n 
+0005221682 00000 n 
 0000017664 00000 n 
 0000017705 00000 n 
-0001252446 00000 n 
-0005221623 00000 n 
+0001252440 00000 n 
+0005221617 00000 n 
 0000017765 00000 n 
 0000017818 00000 n 
-0001264405 00000 n 
-0005221505 00000 n 
+0001264399 00000 n 
+0005221499 00000 n 
 0000017868 00000 n 
 0000017901 00000 n 
-0001264467 00000 n 
-0005221426 00000 n 
+0001264461 00000 n 
+0005221420 00000 n 
 0000017956 00000 n 
 0000018013 00000 n 
-0001264529 00000 n 
-0005221333 00000 n 
+0001264523 00000 n 
+0005221327 00000 n 
 0000018068 00000 n 
 0000018121 00000 n 
-0001264591 00000 n 
-0005221240 00000 n 
+0001264585 00000 n 
+0005221234 00000 n 
 0000018176 00000 n 
 0000018241 00000 n 
-0001264653 00000 n 
-0005221147 00000 n 
+0001264647 00000 n 
+0005221141 00000 n 
 0000018296 00000 n 
 0000018363 00000 n 
-0001268239 00000 n 
-0005221068 00000 n 
+0001268233 00000 n 
+0005221062 00000 n 
 0000018418 00000 n 
 0000018494 00000 n 
-0001272192 00000 n 
-0005220936 00000 n 
+0001272186 00000 n 
+0005220930 00000 n 
 0000018542 00000 n 
 0000018591 00000 n 
-0001272316 00000 n 
-0005220818 00000 n 
+0001272310 00000 n 
+0005220812 00000 n 
 0000018641 00000 n 
 0000018682 00000 n 
-0001272377 00000 n 
-0005220739 00000 n 
+0001272371 00000 n 
+0005220733 00000 n 
 0000018737 00000 n 
 0000018803 00000 n 
-0001275522 00000 n 
-0005220660 00000 n 
+0001275516 00000 n 
+0005220654 00000 n 
 0000018858 00000 n 
 0000018905 00000 n 
-0001275584 00000 n 
-0005220528 00000 n 
+0001275578 00000 n 
+0005220522 00000 n 
 0000018955 00000 n 
 0000018996 00000 n 
-0001373091 00000 n 
-0005220410 00000 n 
+0001373085 00000 n 
+0005220404 00000 n 
 0000019051 00000 n 
 0000019101 00000 n 
-0001375632 00000 n 
-0005220331 00000 n 
+0001375626 00000 n 
+0005220325 00000 n 
 0000019161 00000 n 
 0000019214 00000 n 
-0001375694 00000 n 
-0005220252 00000 n 
+0001375688 00000 n 
+0005220246 00000 n 
 0000019274 00000 n 
 0000019331 00000 n 
-0001381148 00000 n 
-0005220159 00000 n 
+0001381142 00000 n 
+0005220153 00000 n 
 0000019386 00000 n 
 0000019458 00000 n 
-0001381210 00000 n 
-0005220066 00000 n 
+0001381204 00000 n 
+0005220060 00000 n 
 0000019513 00000 n 
 0000019581 00000 n 
-0001381772 00000 n 
-0005219934 00000 n 
+0001381766 00000 n 
+0005219928 00000 n 
 0000019636 00000 n 
 0000019679 00000 n 
-0001386221 00000 n 
-0005219869 00000 n 
+0001386215 00000 n 
+0005219863 00000 n 
 0000019739 00000 n 
 0000019791 00000 n 
-0001386283 00000 n 
-0005219790 00000 n 
+0001386277 00000 n 
+0005219784 00000 n 
 0000019846 00000 n 
 0000019912 00000 n 
-0001389938 00000 n 
-0005219658 00000 n 
+0001389932 00000 n 
+0005219652 00000 n 
 0000019962 00000 n 
 0000020006 00000 n 
-0001390063 00000 n 
-0005219579 00000 n 
+0001390057 00000 n 
+0005219573 00000 n 
 0000020061 00000 n 
 0000020099 00000 n 
-0001393718 00000 n 
-0005219461 00000 n 
+0001393712 00000 n 
+0005219455 00000 n 
 0000020154 00000 n 
 0000020190 00000 n 
-0001400770 00000 n 
-0005219343 00000 n 
+0001400764 00000 n 
+0005219337 00000 n 
 0000020250 00000 n 
 0000020293 00000 n 
-0001400832 00000 n 
-0005219264 00000 n 
+0001400826 00000 n 
+0005219258 00000 n 
 0000020351 00000 n 
 0000020404 00000 n 
-0001407201 00000 n 
-0005219171 00000 n 
+0001407195 00000 n 
+0005219165 00000 n 
 0000020462 00000 n 
 0000020502 00000 n 
-0001408962 00000 n 
-0005219078 00000 n 
+0001408956 00000 n 
+0005219072 00000 n 
 0000020560 00000 n 
 0000020597 00000 n 
-0001412311 00000 n 
-0005218946 00000 n 
+0001412305 00000 n 
+0005218940 00000 n 
 0000020655 00000 n 
 0000020697 00000 n 
-0001419260 00000 n 
-0005218881 00000 n 
+0001419254 00000 n 
+0005218875 00000 n 
 0000020760 00000 n 
 0000020804 00000 n 
-0001425414 00000 n 
-0005218802 00000 n 
+0001425408 00000 n 
+0005218796 00000 n 
 0000020862 00000 n 
 0000020913 00000 n 
-0001431567 00000 n 
-0005218723 00000 n 
+0001431561 00000 n 
+0005218717 00000 n 
 0000020973 00000 n 
 0000021014 00000 n 
-0001431877 00000 n 
-0005218591 00000 n 
+0001431871 00000 n 
+0005218585 00000 n 
 0000021064 00000 n 
 0000021101 00000 n 
-0001431939 00000 n 
-0005218512 00000 n 
+0001431933 00000 n 
+0005218506 00000 n 
 0000021156 00000 n 
 0000021185 00000 n 
-0001436613 00000 n 
-0005218419 00000 n 
+0001436607 00000 n 
+0005218413 00000 n 
 0000021240 00000 n 
 0000021298 00000 n 
-0001436675 00000 n 
-0005218326 00000 n 
+0001436669 00000 n 
+0005218320 00000 n 
 0000021353 00000 n 
 0000021379 00000 n 
-0001436736 00000 n 
-0005218207 00000 n 
+0001436730 00000 n 
+0005218201 00000 n 
 0000021434 00000 n 
 0000021461 00000 n 
-0001442403 00000 n 
-0005218128 00000 n 
+0001442397 00000 n 
+0005218122 00000 n 
 0000021521 00000 n 
 0000021563 00000 n 
-0001442465 00000 n 
-0005218035 00000 n 
+0001442459 00000 n 
+0005218029 00000 n 
 0000021623 00000 n 
 0000021695 00000 n 
-0001446529 00000 n 
-0005217942 00000 n 
+0001446523 00000 n 
+0005217936 00000 n 
 0000021755 00000 n 
 0000021797 00000 n 
-0001449107 00000 n 
-0005217849 00000 n 
+0001449101 00000 n 
+0005217843 00000 n 
 0000021857 00000 n 
 0000021905 00000 n 
-0001459338 00000 n 
-0005217756 00000 n 
+0001459332 00000 n 
+0005217750 00000 n 
 0000021965 00000 n 
 0000022002 00000 n 
-0001469514 00000 n 
-0005217663 00000 n 
+0001469508 00000 n 
+0005217657 00000 n 
 0000022062 00000 n 
 0000022112 00000 n 
-0001469576 00000 n 
-0005217570 00000 n 
+0001469570 00000 n 
+0005217564 00000 n 
 0000022172 00000 n 
 0000022220 00000 n 
-0001474056 00000 n 
-0005217477 00000 n 
+0001474050 00000 n 
+0005217471 00000 n 
 0000022280 00000 n 
 0000022344 00000 n 
-0001474118 00000 n 
-0005217384 00000 n 
+0001474112 00000 n 
+0005217378 00000 n 
 0000022404 00000 n 
 0000022466 00000 n 
-0001484282 00000 n 
-0005217291 00000 n 
+0001484276 00000 n 
+0005217285 00000 n 
 0000022527 00000 n 
 0000022571 00000 n 
-0001486451 00000 n 
-0005217212 00000 n 
+0001486445 00000 n 
+0005217206 00000 n 
 0000022632 00000 n 
 0000022703 00000 n 
-0001486513 00000 n 
-0005217094 00000 n 
+0001486507 00000 n 
+0005217088 00000 n 
 0000022753 00000 n 
 0000022786 00000 n 
-0001486575 00000 n 
-0005217015 00000 n 
+0001486569 00000 n 
+0005217009 00000 n 
 0000022841 00000 n 
 0000022879 00000 n 
-0001486637 00000 n 
-0005216936 00000 n 
+0001486631 00000 n 
+0005216930 00000 n 
 0000022934 00000 n 
 0000022983 00000 n 
-0001489184 00000 n 
-0005216804 00000 n 
+0001489178 00000 n 
+0005216798 00000 n 
 0000023031 00000 n 
 0000023085 00000 n 
-0001489307 00000 n 
-0005216725 00000 n 
+0001489301 00000 n 
+0005216719 00000 n 
 0000023135 00000 n 
 0000023176 00000 n 
-0001589997 00000 n 
-0005216593 00000 n 
+0001589991 00000 n 
+0005216587 00000 n 
 0000023226 00000 n 
 0000023256 00000 n 
-0001595340 00000 n 
-0005216514 00000 n 
+0001595334 00000 n 
+0005216508 00000 n 
 0000023311 00000 n 
 0000023367 00000 n 
-0001595402 00000 n 
-0005216421 00000 n 
+0001595396 00000 n 
+0005216415 00000 n 
 0000023422 00000 n 
 0000023509 00000 n 
-0001600171 00000 n 
-0005216289 00000 n 
+0001600165 00000 n 
+0005216283 00000 n 
 0000023564 00000 n 
 0000023620 00000 n 
-0001600359 00000 n 
-0005216224 00000 n 
+0001600353 00000 n 
+0005216218 00000 n 
 0000023680 00000 n 
 0000023747 00000 n 
-0001600420 00000 n 
-0005216131 00000 n 
+0001600414 00000 n 
+0005216125 00000 n 
 0000023802 00000 n 
 0000023869 00000 n 
-0001604497 00000 n 
-0005216052 00000 n 
+0001604491 00000 n 
+0005216046 00000 n 
 0000023924 00000 n 
 0000023965 00000 n 
-0001604874 00000 n 
-0005215920 00000 n 
+0001604868 00000 n 
+0005215914 00000 n 
 0000024015 00000 n 
 0000024056 00000 n 
-0001609155 00000 n 
-0005215841 00000 n 
+0001609149 00000 n 
+0005215835 00000 n 
 0000024111 00000 n 
 0000024163 00000 n 
-0001610664 00000 n 
-0005215762 00000 n 
+0001610658 00000 n 
+0005215756 00000 n 
 0000024218 00000 n 
 0000024271 00000 n 
-0001614938 00000 n 
-0005215644 00000 n 
+0001614932 00000 n 
+0005215638 00000 n 
 0000024321 00000 n 
 0000024354 00000 n 
-0001615000 00000 n 
-0005215565 00000 n 
+0001614994 00000 n 
+0005215559 00000 n 
 0000024409 00000 n 
 0000024448 00000 n 
-0001615062 00000 n 
-0005215486 00000 n 
+0001615056 00000 n 
+0005215480 00000 n 
 0000024503 00000 n 
 0000024579 00000 n 
-0001619177 00000 n 
-0005215351 00000 n 
+0001619171 00000 n 
+0005215345 00000 n 
 0000024627 00000 n 
 0000024691 00000 n 
-0001619302 00000 n 
-0005215272 00000 n 
+0001619296 00000 n 
+0005215266 00000 n 
 0000024741 00000 n 
 0000024769 00000 n 
-0001623395 00000 n 
-0005215179 00000 n 
+0001623389 00000 n 
+0005215173 00000 n 
 0000024819 00000 n 
 0000024871 00000 n 
-0001623457 00000 n 
-0005215045 00000 n 
+0001623451 00000 n 
+0005215039 00000 n 
 0000024921 00000 n 
 0000024974 00000 n 
-0001623519 00000 n 
-0005214925 00000 n 
+0001623513 00000 n 
+0005214919 00000 n 
 0000025029 00000 n 
 0000025096 00000 n 
-0001623581 00000 n 
-0005214846 00000 n 
+0001623575 00000 n 
+0005214840 00000 n 
 0000025156 00000 n 
 0000025206 00000 n 
-0001630251 00000 n 
-0005214753 00000 n 
+0001630245 00000 n 
+0005214747 00000 n 
 0000025266 00000 n 
 0000025323 00000 n 
-0001634266 00000 n 
-0005214658 00000 n 
+0001634260 00000 n 
+0005214652 00000 n 
 0000025383 00000 n 
 0000025428 00000 n 
-0001634454 00000 n 
-0005214576 00000 n 
+0001634448 00000 n 
+0005214570 00000 n 
 0000025489 00000 n 
 0000025531 00000 n 
-0001638370 00000 n 
-0005214479 00000 n 
+0001638364 00000 n 
+0005214473 00000 n 
 0000025587 00000 n 
 0000025638 00000 n 
-0001644952 00000 n 
-0005214355 00000 n 
+0001644946 00000 n 
+0005214349 00000 n 
 0000025694 00000 n 
 0000025735 00000 n 
-0001650978 00000 n 
-0005214286 00000 n 
+0001650972 00000 n 
+0005214280 00000 n 
 0000025796 00000 n 
 0000025875 00000 n 
-0001652798 00000 n 
-0005214148 00000 n 
+0001652792 00000 n 
+0005214142 00000 n 
 0000025926 00000 n 
 0000025979 00000 n 
-0001655767 00000 n 
-0005214064 00000 n 
+0001655761 00000 n 
+0005214058 00000 n 
 0000026035 00000 n 
 0000026076 00000 n 
-0001656649 00000 n 
-0005213965 00000 n 
+0001656643 00000 n 
+0005213959 00000 n 
 0000026132 00000 n 
 0000026178 00000 n 
-0001657027 00000 n 
-0005213866 00000 n 
+0001657021 00000 n 
+0005213860 00000 n 
 0000026234 00000 n 
 0000026277 00000 n 
-0001661380 00000 n 
-0005213782 00000 n 
+0001661374 00000 n 
+0005213776 00000 n 
 0000026333 00000 n 
 0000026366 00000 n 
-0001661757 00000 n 
-0005213684 00000 n 
+0001661751 00000 n 
+0005213678 00000 n 
 0000026417 00000 n 
 0000026478 00000 n 
-0001672821 00000 n 
-0005213545 00000 n 
+0001672815 00000 n 
+0005213539 00000 n 
 0000026529 00000 n 
 0000026578 00000 n 
-0001672884 00000 n 
-0005213461 00000 n 
+0001672878 00000 n 
+0005213455 00000 n 
 0000026634 00000 n 
 0000026677 00000 n 
-0001678910 00000 n 
-0005213377 00000 n 
+0001678904 00000 n 
+0005213371 00000 n 
 0000026733 00000 n 
 0000026772 00000 n 
-0001685280 00000 n 
-0005213279 00000 n 
+0001685274 00000 n 
+0005213273 00000 n 
 0000026823 00000 n 
 0000026882 00000 n 
-0001689648 00000 n 
-0005213140 00000 n 
+0001689642 00000 n 
+0005213134 00000 n 
 0000026933 00000 n 
 0000026970 00000 n 
-0001689711 00000 n 
-0005213056 00000 n 
+0001689705 00000 n 
+0005213050 00000 n 
 0000027026 00000 n 
 0000027085 00000 n 
-0001694990 00000 n 
-0005212957 00000 n 
+0001694984 00000 n 
+0005212951 00000 n 
 0000027141 00000 n 
 0000027194 00000 n 
-0001695053 00000 n 
-0005212817 00000 n 
+0001695047 00000 n 
+0005212811 00000 n 
 0000027250 00000 n 
 0000027307 00000 n 
-0001699752 00000 n 
-0005212733 00000 n 
+0001699746 00000 n 
+0005212727 00000 n 
 0000027368 00000 n 
 0000027404 00000 n 
-0001700319 00000 n 
-0005212634 00000 n 
+0001700313 00000 n 
+0005212628 00000 n 
 0000027465 00000 n 
 0000027514 00000 n 
-0001704924 00000 n 
-0005212535 00000 n 
+0001704918 00000 n 
+0005212529 00000 n 
 0000027575 00000 n 
 0000027615 00000 n 
-0001709033 00000 n 
-0005212451 00000 n 
+0001709027 00000 n 
+0005212445 00000 n 
 0000027676 00000 n 
 0000027734 00000 n 
-0001709409 00000 n 
-0005212367 00000 n 
+0001709403 00000 n 
+0005212361 00000 n 
 0000027790 00000 n 
 0000027828 00000 n 
-0001713212 00000 n 
-0005212269 00000 n 
+0001713206 00000 n 
+0005212263 00000 n 
 0000027879 00000 n 
 0000027922 00000 n 
-0001713275 00000 n 
-0005212171 00000 n 
+0001713269 00000 n 
+0005212165 00000 n 
 0000027974 00000 n 
 0000028028 00000 n 
-0001713967 00000 n 
-0005212073 00000 n 
+0001713961 00000 n 
+0005212067 00000 n 
 0000028080 00000 n 
 0000028117 00000 n 
-0001717195 00000 n 
-0005211975 00000 n 
+0001717189 00000 n 
+0005211969 00000 n 
 0000028169 00000 n 
 0000028218 00000 n 
-0001717258 00000 n 
-0005211836 00000 n 
+0001717252 00000 n 
+0005211830 00000 n 
 0000028270 00000 n 
 0000028322 00000 n 
-0001717321 00000 n 
-0005211752 00000 n 
+0001717315 00000 n 
+0005211746 00000 n 
 0000028379 00000 n 
 0000028436 00000 n 
-0001717634 00000 n 
-0005211668 00000 n 
+0001717628 00000 n 
+0005211662 00000 n 
 0000028493 00000 n 
 0000028552 00000 n 
-0001720180 00000 n 
-0005211585 00000 n 
+0001720174 00000 n 
+0005211579 00000 n 
 0000028604 00000 n 
 0000028655 00000 n 
-0001725064 00000 n 
-0005211447 00000 n 
+0001725058 00000 n 
+0005211441 00000 n 
 0000028704 00000 n 
 0000028751 00000 n 
-0001725190 00000 n 
-0005211322 00000 n 
+0001725184 00000 n 
+0005211316 00000 n 
 0000028802 00000 n 
 0000028862 00000 n 
-0001725253 00000 n 
-0005211238 00000 n 
+0001725247 00000 n 
+0005211232 00000 n 
 0000028918 00000 n 
 0000028962 00000 n 
-0001729911 00000 n 
-0005211139 00000 n 
+0001729905 00000 n 
+0005211133 00000 n 
 0000029018 00000 n 
 0000029083 00000 n 
-0001734204 00000 n 
-0005211040 00000 n 
+0001734198 00000 n 
+0005211034 00000 n 
 0000029139 00000 n 
 0000029185 00000 n 
-0001734267 00000 n 
-0005210956 00000 n 
+0001734261 00000 n 
+0005210950 00000 n 
 0000029241 00000 n 
 0000029286 00000 n 
-0001738215 00000 n 
-0005210831 00000 n 
+0001738209 00000 n 
+0005210825 00000 n 
 0000029337 00000 n 
 0000029389 00000 n 
-0001738278 00000 n 
-0005210706 00000 n 
+0001738272 00000 n 
+0005210700 00000 n 
 0000029445 00000 n 
 0000029485 00000 n 
-0001738341 00000 n 
-0005210622 00000 n 
+0001738335 00000 n 
+0005210616 00000 n 
 0000029546 00000 n 
 0000029611 00000 n 
-0001744987 00000 n 
-0005210538 00000 n 
+0001744981 00000 n 
+0005210532 00000 n 
 0000029672 00000 n 
 0000029704 00000 n 
-0001747043 00000 n 
-0005210439 00000 n 
+0001747037 00000 n 
+0005210433 00000 n 
 0000029760 00000 n 
 0000029806 00000 n 
-0001760485 00000 n 
-0005210340 00000 n 
+0001760479 00000 n 
+0005210334 00000 n 
 0000029862 00000 n 
 0000029918 00000 n 
-0001773192 00000 n 
-0005210215 00000 n 
+0001773186 00000 n 
+0005210209 00000 n 
 0000029974 00000 n 
 0000030061 00000 n 
-0001778827 00000 n 
-0005210131 00000 n 
+0001778821 00000 n 
+0005210125 00000 n 
 0000030122 00000 n 
 0000030196 00000 n 
-0001778890 00000 n 
-0005210047 00000 n 
+0001778884 00000 n 
+0005210041 00000 n 
 0000030257 00000 n 
 0000030313 00000 n 
-0001782723 00000 n 
-0005209908 00000 n 
+0001782717 00000 n 
+0005209902 00000 n 
 0000030362 00000 n 
 0000030409 00000 n 
-0001782849 00000 n 
-0005209783 00000 n 
+0001782843 00000 n 
+0005209777 00000 n 
 0000030460 00000 n 
 0000030511 00000 n 
-0001787215 00000 n 
-0005209699 00000 n 
+0001787209 00000 n 
+0005209693 00000 n 
 0000030567 00000 n 
 0000030622 00000 n 
-0001791696 00000 n 
-0005209600 00000 n 
+0001791690 00000 n 
+0005209594 00000 n 
 0000030678 00000 n 
 0000030724 00000 n 
-0001791759 00000 n 
-0005209516 00000 n 
+0001791753 00000 n 
+0005209510 00000 n 
 0000030780 00000 n 
 0000030855 00000 n 
-0001799129 00000 n 
-0005209417 00000 n 
+0001799123 00000 n 
+0005209411 00000 n 
 0000030906 00000 n 
 0000030955 00000 n 
-0001801752 00000 n 
-0005209292 00000 n 
+0001801746 00000 n 
+0005209286 00000 n 
 0000031006 00000 n 
 0000031040 00000 n 
-0001801815 00000 n 
-0005209223 00000 n 
+0001801809 00000 n 
+0005209217 00000 n 
 0000031096 00000 n 
 0000031186 00000 n 
-0001805378 00000 n 
-0005209084 00000 n 
+0001805372 00000 n 
+0005209078 00000 n 
 0000031235 00000 n 
 0000031298 00000 n 
-0001805502 00000 n 
-0005209000 00000 n 
+0001805496 00000 n 
+0005208994 00000 n 
 0000031349 00000 n 
 0000031391 00000 n 
-0001809582 00000 n 
-0005208860 00000 n 
+0001809576 00000 n 
+0005208854 00000 n 
 0000031442 00000 n 
 0000031490 00000 n 
-0001809645 00000 n 
-0005208776 00000 n 
+0001809639 00000 n 
+0005208770 00000 n 
 0000031546 00000 n 
 0000031616 00000 n 
-0001814379 00000 n 
-0005208677 00000 n 
+0001814373 00000 n 
+0005208671 00000 n 
 0000031672 00000 n 
 0000031713 00000 n 
-0001814568 00000 n 
-0005208552 00000 n 
+0001814562 00000 n 
+0005208546 00000 n 
 0000031769 00000 n 
 0000031823 00000 n 
-0001859542 00000 n 
-0005208483 00000 n 
+0001859536 00000 n 
+0005208477 00000 n 
 0000031884 00000 n 
 0000031951 00000 n 
-0001864774 00000 n 
-0005208343 00000 n 
+0001864768 00000 n 
+0005208337 00000 n 
 0000032002 00000 n 
 0000032055 00000 n 
-0001864837 00000 n 
-0005208259 00000 n 
+0001864831 00000 n 
+0005208253 00000 n 
 0000032111 00000 n 
 0000032162 00000 n 
-0001870792 00000 n 
-0005208160 00000 n 
+0001870786 00000 n 
+0005208154 00000 n 
 0000032218 00000 n 
 0000032284 00000 n 
-0001870979 00000 n 
-0005208076 00000 n 
+0001870973 00000 n 
+0005208070 00000 n 
 0000032340 00000 n 
 0000032383 00000 n 
-0001877914 00000 n 
-0005207936 00000 n 
+0001877908 00000 n 
+0005207930 00000 n 
 0000032434 00000 n 
 0000032480 00000 n 
-0001877977 00000 n 
-0005207826 00000 n 
+0001877971 00000 n 
+0005207820 00000 n 
 0000032536 00000 n 
 0000032585 00000 n 
-0001878040 00000 n 
-0005207742 00000 n 
+0001878034 00000 n 
+0005207736 00000 n 
 0000032646 00000 n 
 0000032697 00000 n 
-0001878229 00000 n 
-0005207658 00000 n 
+0001878223 00000 n 
+0005207652 00000 n 
 0000032758 00000 n 
 0000032794 00000 n 
-0001882318 00000 n 
-0005207518 00000 n 
+0001882312 00000 n 
+0005207512 00000 n 
 0000032845 00000 n 
 0000032923 00000 n 
-0001882381 00000 n 
-0005207434 00000 n 
+0001882375 00000 n 
+0005207428 00000 n 
 0000032979 00000 n 
 0000033051 00000 n 
-0001882444 00000 n 
-0005207335 00000 n 
+0001882438 00000 n 
+0005207329 00000 n 
 0000033107 00000 n 
 0000033166 00000 n 
-0001882507 00000 n 
-0005207236 00000 n 
+0001882501 00000 n 
+0005207230 00000 n 
 0000033222 00000 n 
 0000033265 00000 n 
-0001882696 00000 n 
-0005207096 00000 n 
+0001882690 00000 n 
+0005207090 00000 n 
 0000033321 00000 n 
 0000033379 00000 n 
-0001887103 00000 n 
-0005207012 00000 n 
+0001887097 00000 n 
+0005207006 00000 n 
 0000033440 00000 n 
 0000033477 00000 n 
-0001887166 00000 n 
-0005206928 00000 n 
+0001887160 00000 n 
+0005206922 00000 n 
 0000033538 00000 n 
 0000033580 00000 n 
-0001887229 00000 n 
-0005206829 00000 n 
+0001887223 00000 n 
+0005206823 00000 n 
 0000033636 00000 n 
 0000033696 00000 n 
-0001891198 00000 n 
-0005206730 00000 n 
+0001891192 00000 n 
+0005206724 00000 n 
 0000033752 00000 n 
 0000033833 00000 n 
-0001895829 00000 n 
-0005206631 00000 n 
+0001895823 00000 n 
+0005206625 00000 n 
 0000033889 00000 n 
 0000033968 00000 n 
-0001895892 00000 n 
-0005206506 00000 n 
+0001895886 00000 n 
+0005206500 00000 n 
 0000034024 00000 n 
 0000034092 00000 n 
-0001895955 00000 n 
-0005206422 00000 n 
+0001895949 00000 n 
+0005206416 00000 n 
 0000034153 00000 n 
 0000034197 00000 n 
-0001901361 00000 n 
-0005206323 00000 n 
+0001901355 00000 n 
+0005206317 00000 n 
 0000034258 00000 n 
 0000034326 00000 n 
-0001901550 00000 n 
-0005206239 00000 n 
+0001901544 00000 n 
+0005206233 00000 n 
 0000034387 00000 n 
 0000034460 00000 n 
-0001904497 00000 n 
-0005206114 00000 n 
+0001904491 00000 n 
+0005206108 00000 n 
 0000034511 00000 n 
 0000034545 00000 n 
-0001904560 00000 n 
-0005206030 00000 n 
+0001904554 00000 n 
+0005206024 00000 n 
 0000034601 00000 n 
 0000034658 00000 n 
-0001909665 00000 n 
-0005205931 00000 n 
+0001909659 00000 n 
+0005205925 00000 n 
 0000034714 00000 n 
 0000034783 00000 n 
-0001909727 00000 n 
-0005205847 00000 n 
+0001909721 00000 n 
+0005205841 00000 n 
 0000034839 00000 n 
 0000034900 00000 n 
-0001913076 00000 n 
-0005205708 00000 n 
+0001913070 00000 n 
+0005205702 00000 n 
 0000034949 00000 n 
 0000034993 00000 n 
-0001913200 00000 n 
-0005205624 00000 n 
+0001913194 00000 n 
+0005205618 00000 n 
 0000035044 00000 n 
 0000035086 00000 n 
-0001913263 00000 n 
-0005205484 00000 n 
+0001913257 00000 n 
+0005205478 00000 n 
 0000035137 00000 n 
 0000035168 00000 n 
-0001917518 00000 n 
-0005205374 00000 n 
+0001917512 00000 n 
+0005205368 00000 n 
 0000035224 00000 n 
 0000035275 00000 n 
-0001921472 00000 n 
-0005205290 00000 n 
+0001921466 00000 n 
+0005205284 00000 n 
 0000035336 00000 n 
 0000035384 00000 n 
-0001921533 00000 n 
-0005205191 00000 n 
+0001921527 00000 n 
+0005205185 00000 n 
 0000035445 00000 n 
 0000035499 00000 n 
-0001921596 00000 n 
-0005205092 00000 n 
+0001921590 00000 n 
+0005205086 00000 n 
 0000035560 00000 n 
 0000035614 00000 n 
-0001925185 00000 n 
-0005204993 00000 n 
+0001925179 00000 n 
+0005204987 00000 n 
 0000035675 00000 n 
 0000035727 00000 n 
-0001925248 00000 n 
-0005204894 00000 n 
+0001925242 00000 n 
+0005204888 00000 n 
 0000035788 00000 n 
 0000035828 00000 n 
-0001925311 00000 n 
-0005204795 00000 n 
+0001925305 00000 n 
+0005204789 00000 n 
 0000035889 00000 n 
 0000035925 00000 n 
-0001925374 00000 n 
-0005204696 00000 n 
+0001925368 00000 n 
+0005204690 00000 n 
 0000035986 00000 n 
 0000036027 00000 n 
-0001925436 00000 n 
-0005204597 00000 n 
+0001925430 00000 n 
+0005204591 00000 n 
 0000036088 00000 n 
 0000036142 00000 n 
-0001929755 00000 n 
-0005204513 00000 n 
+0001929749 00000 n 
+0005204507 00000 n 
 0000036203 00000 n 
 0000036259 00000 n 
-0001929818 00000 n 
-0005204373 00000 n 
+0001929812 00000 n 
+0005204367 00000 n 
 0000036310 00000 n 
 0000036352 00000 n 
-0001934269 00000 n 
-0005204263 00000 n 
+0001934263 00000 n 
+0005204257 00000 n 
 0000036408 00000 n 
 0000036450 00000 n 
-0001934332 00000 n 
-0005204179 00000 n 
+0001934326 00000 n 
+0005204173 00000 n 
 0000036511 00000 n 
 0000036549 00000 n 
-0001934772 00000 n 
-0005204095 00000 n 
+0001934766 00000 n 
+0005204089 00000 n 
 0000036610 00000 n 
 0000036655 00000 n 
-0001940299 00000 n 
-0005203955 00000 n 
+0001940293 00000 n 
+0005203949 00000 n 
 0000036706 00000 n 
 0000036766 00000 n 
-0001944062 00000 n 
-0005203871 00000 n 
+0001944056 00000 n 
+0005203865 00000 n 
 0000036822 00000 n 
 0000036870 00000 n 
-0001944503 00000 n 
-0005203787 00000 n 
+0001944497 00000 n 
+0005203781 00000 n 
 0000036926 00000 n 
 0000036969 00000 n 
-0001949517 00000 n 
-0005203688 00000 n 
+0001949511 00000 n 
+0005203682 00000 n 
 0000037020 00000 n 
 0000037067 00000 n 
-0001949580 00000 n 
-0005203548 00000 n 
+0001949574 00000 n 
+0005203542 00000 n 
 0000037118 00000 n 
 0000037152 00000 n 
-0001953514 00000 n 
-0005203464 00000 n 
+0001953508 00000 n 
+0005203458 00000 n 
 0000037208 00000 n 
 0000037255 00000 n 
-0001953766 00000 n 
-0005203365 00000 n 
+0001953760 00000 n 
+0005203359 00000 n 
 0000037311 00000 n 
 0000037380 00000 n 
-0001953829 00000 n 
-0005203281 00000 n 
+0001953823 00000 n 
+0005203275 00000 n 
 0000037436 00000 n 
 0000037508 00000 n 
-0001953892 00000 n 
-0005203197 00000 n 
+0001953886 00000 n 
+0005203191 00000 n 
 0000037559 00000 n 
 0000037598 00000 n 
-0001957326 00000 n 
-0005203058 00000 n 
+0001957320 00000 n 
+0005203052 00000 n 
 0000037647 00000 n 
 0000037682 00000 n 
-0001957452 00000 n 
-0005202974 00000 n 
+0001957446 00000 n 
+0005202968 00000 n 
 0000037733 00000 n 
 0000037766 00000 n 
-0001957515 00000 n 
-0005202875 00000 n 
+0001957509 00000 n 
+0005202869 00000 n 
 0000037817 00000 n 
 0000037859 00000 n 
-0001957578 00000 n 
-0005202735 00000 n 
+0001957572 00000 n 
+0005202729 00000 n 
 0000037910 00000 n 
 0000037985 00000 n 
-0001961967 00000 n 
-0005202651 00000 n 
+0001961961 00000 n 
+0005202645 00000 n 
 0000038041 00000 n 
 0000038089 00000 n 
-0001962219 00000 n 
-0005202552 00000 n 
+0001962213 00000 n 
+0005202546 00000 n 
 0000038145 00000 n 
 0000038187 00000 n 
-0001962408 00000 n 
-0005202453 00000 n 
+0001962402 00000 n 
+0005202447 00000 n 
 0000038243 00000 n 
 0000038290 00000 n 
-0001962659 00000 n 
-0005202354 00000 n 
+0001962653 00000 n 
+0005202348 00000 n 
 0000038346 00000 n 
 0000038383 00000 n 
-0001966539 00000 n 
-0005202255 00000 n 
+0001966533 00000 n 
+0005202249 00000 n 
 0000038439 00000 n 
 0000038494 00000 n 
-0001966853 00000 n 
-0005202171 00000 n 
+0001966847 00000 n 
+0005202165 00000 n 
 0000038550 00000 n 
 0000038586 00000 n 
-0001967294 00000 n 
-0005202072 00000 n 
+0001967288 00000 n 
+0005202066 00000 n 
 0000038637 00000 n 
 0000038673 00000 n 
-0001970728 00000 n 
-0005201947 00000 n 
+0001970722 00000 n 
+0005201941 00000 n 
 0000038724 00000 n 
 0000038758 00000 n 
-0001970791 00000 n 
-0005201863 00000 n 
+0001970785 00000 n 
+0005201857 00000 n 
 0000038814 00000 n 
 0000038888 00000 n 
-0001970854 00000 n 
-0005201779 00000 n 
+0001970848 00000 n 
+0005201773 00000 n 
 0000038944 00000 n 
 0000039016 00000 n 
-0001974375 00000 n 
-0005201640 00000 n 
+0001974369 00000 n 
+0005201634 00000 n 
 0000039065 00000 n 
 0000039117 00000 n 
-0001974688 00000 n 
-0005201556 00000 n 
+0001974682 00000 n 
+0005201550 00000 n 
 0000039168 00000 n 
 0000039210 00000 n 
-0001974751 00000 n 
-0005201457 00000 n 
+0001974745 00000 n 
+0005201451 00000 n 
 0000039261 00000 n 
 0000039311 00000 n 
-0001978401 00000 n 
-0005201317 00000 n 
+0001978395 00000 n 
+0005201311 00000 n 
 0000039362 00000 n 
 0000039425 00000 n 
-0001978464 00000 n 
-0005201233 00000 n 
+0001978458 00000 n 
+0005201227 00000 n 
 0000039481 00000 n 
 0000039530 00000 n 
-0001978527 00000 n 
-0005201134 00000 n 
+0001978521 00000 n 
+0005201128 00000 n 
 0000039586 00000 n 
 0000039637 00000 n 
-0001978589 00000 n 
-0005201050 00000 n 
+0001978583 00000 n 
+0005201044 00000 n 
 0000039693 00000 n 
 0000039742 00000 n 
-0002000027 00000 n 
-0005200910 00000 n 
+0002000021 00000 n 
+0005200904 00000 n 
 0000039793 00000 n 
 0000039854 00000 n 
-0002004005 00000 n 
-0005200826 00000 n 
+0002003999 00000 n 
+0005200820 00000 n 
 0000039910 00000 n 
 0000039958 00000 n 
-0002004443 00000 n 
-0005200742 00000 n 
+0002004437 00000 n 
+0005200736 00000 n 
 0000040014 00000 n 
 0000040063 00000 n 
-0002008700 00000 n 
-0005200643 00000 n 
+0002008694 00000 n 
+0005200637 00000 n 
 0000040114 00000 n 
 0000040176 00000 n 
-0002008763 00000 n 
-0005200518 00000 n 
+0002008757 00000 n 
+0005200512 00000 n 
 0000040227 00000 n 
 0000040261 00000 n 
-0002008826 00000 n 
-0005200434 00000 n 
+0002008820 00000 n 
+0005200428 00000 n 
 0000040317 00000 n 
 0000040370 00000 n 
-0002009078 00000 n 
-0005200350 00000 n 
+0002009072 00000 n 
+0005200344 00000 n 
 0000040426 00000 n 
 0000040509 00000 n 
-0002015533 00000 n 
-0005200211 00000 n 
+0002015527 00000 n 
+0005200205 00000 n 
 0000040558 00000 n 
 0000040627 00000 n 
-0002015659 00000 n 
-0005200127 00000 n 
+0002015653 00000 n 
+0005200121 00000 n 
 0000040678 00000 n 
 0000040720 00000 n 
-0002019735 00000 n 
-0005200002 00000 n 
+0002019729 00000 n 
+0005199996 00000 n 
 0000040771 00000 n 
 0000040805 00000 n 
-0002019798 00000 n 
-0005199933 00000 n 
+0002019792 00000 n 
+0005199927 00000 n 
 0000040861 00000 n 
 0000040914 00000 n 
-0002024090 00000 n 
-0005199793 00000 n 
+0002024084 00000 n 
+0005199787 00000 n 
 0000040963 00000 n 
 0000041010 00000 n 
-0002024216 00000 n 
-0005199709 00000 n 
+0002024210 00000 n 
+0005199703 00000 n 
 0000041061 00000 n 
 0000041103 00000 n 
-0002024279 00000 n 
-0005199569 00000 n 
+0002024273 00000 n 
+0005199563 00000 n 
 0000041154 00000 n 
 0000041197 00000 n 
-0002027628 00000 n 
-0005199485 00000 n 
+0002027622 00000 n 
+0005199479 00000 n 
 0000041253 00000 n 
 0000041310 00000 n 
-0002028132 00000 n 
-0005199401 00000 n 
+0002028126 00000 n 
+0005199395 00000 n 
 0000041366 00000 n 
 0000041428 00000 n 
-0002028195 00000 n 
-0005199261 00000 n 
+0002028189 00000 n 
+0005199255 00000 n 
 0000041479 00000 n 
 0000041526 00000 n 
-0002033746 00000 n 
-0005199177 00000 n 
+0002033740 00000 n 
+0005199171 00000 n 
 0000041582 00000 n 
 0000041640 00000 n 
-0002039707 00000 n 
-0005199093 00000 n 
+0002039701 00000 n 
+0005199087 00000 n 
 0000041696 00000 n 
 0000041747 00000 n 
-0002047158 00000 n 
-0005198953 00000 n 
+0002047152 00000 n 
+0005198947 00000 n 
 0000041798 00000 n 
 0000041850 00000 n 
-0002054628 00000 n 
-0005198843 00000 n 
+0002054622 00000 n 
+0005198837 00000 n 
 0000041906 00000 n 
 0000041956 00000 n 
-0002054691 00000 n 
-0005198759 00000 n 
+0002054685 00000 n 
+0005198753 00000 n 
 0000042017 00000 n 
 0000042058 00000 n 
-0002060374 00000 n 
-0005198660 00000 n 
+0002060368 00000 n 
+0005198654 00000 n 
 0000042119 00000 n 
 0000042162 00000 n 
-0002062798 00000 n 
-0005198561 00000 n 
+0002062792 00000 n 
+0005198555 00000 n 
 0000042223 00000 n 
 0000042279 00000 n 
-0002068379 00000 n 
-0005198462 00000 n 
+0002068373 00000 n 
+0005198456 00000 n 
 0000042340 00000 n 
 0000042375 00000 n 
-0002068442 00000 n 
-0005198363 00000 n 
+0002068436 00000 n 
+0005198357 00000 n 
 0000042436 00000 n 
 0000042494 00000 n 
-0002068505 00000 n 
-0005198279 00000 n 
+0002068499 00000 n 
+0005198273 00000 n 
 0000042555 00000 n 
 0000042597 00000 n 
-0002077859 00000 n 
-0005198139 00000 n 
+0002077853 00000 n 
+0005198133 00000 n 
 0000042648 00000 n 
 0000042706 00000 n 
-0002077985 00000 n 
-0005198055 00000 n 
+0002077979 00000 n 
+0005198049 00000 n 
 0000042762 00000 n 
 0000042828 00000 n 
-0002083388 00000 n 
-0005197956 00000 n 
+0002083382 00000 n 
+0005197950 00000 n 
 0000042884 00000 n 
 0000042940 00000 n 
-0002083451 00000 n 
-0005197857 00000 n 
+0002083445 00000 n 
+0005197851 00000 n 
 0000042996 00000 n 
 0000043047 00000 n 
-0002084584 00000 n 
-0005197758 00000 n 
+0002084578 00000 n 
+0005197752 00000 n 
 0000043103 00000 n 
 0000043153 00000 n 
-0002089276 00000 n 
-0005197674 00000 n 
+0002089270 00000 n 
+0005197668 00000 n 
 0000043209 00000 n 
 0000043261 00000 n 
-0002094114 00000 n 
-0005197534 00000 n 
+0002094108 00000 n 
+0005197528 00000 n 
 0000043312 00000 n 
 0000043368 00000 n 
-0002094177 00000 n 
-0005197450 00000 n 
+0002094171 00000 n 
+0005197444 00000 n 
 0000043424 00000 n 
 0000043483 00000 n 
-0002094240 00000 n 
-0005197325 00000 n 
+0002094234 00000 n 
+0005197319 00000 n 
 0000043539 00000 n 
 0000043600 00000 n 
-0002099250 00000 n 
-0005197241 00000 n 
+0002099244 00000 n 
+0005197235 00000 n 
 0000043661 00000 n 
 0000043706 00000 n 
-0002105575 00000 n 
-0005197142 00000 n 
+0002105569 00000 n 
+0005197136 00000 n 
 0000043767 00000 n 
 0000043849 00000 n 
-0002106455 00000 n 
-0005197043 00000 n 
+0002106449 00000 n 
+0005197037 00000 n 
 0000043910 00000 n 
 0000043971 00000 n 
-0002112182 00000 n 
-0005196944 00000 n 
+0002112176 00000 n 
+0005196938 00000 n 
 0000044032 00000 n 
 0000044093 00000 n 
-0002118712 00000 n 
-0005196845 00000 n 
+0002118706 00000 n 
+0005196839 00000 n 
 0000044154 00000 n 
 0000044207 00000 n 
-0002119908 00000 n 
-0005196746 00000 n 
+0002119902 00000 n 
+0005196740 00000 n 
 0000044268 00000 n 
 0000044318 00000 n 
-0002126481 00000 n 
-0005196647 00000 n 
+0002126475 00000 n 
+0005196641 00000 n 
 0000044379 00000 n 
 0000044434 00000 n 
-0002130471 00000 n 
-0005196548 00000 n 
+0002130465 00000 n 
+0005196542 00000 n 
 0000044495 00000 n 
 0000044548 00000 n 
-0002131728 00000 n 
-0005196464 00000 n 
+0002131722 00000 n 
+0005196458 00000 n 
 0000044609 00000 n 
 0000044662 00000 n 
-0002136273 00000 n 
-0005196324 00000 n 
+0002136267 00000 n 
+0005196318 00000 n 
 0000044713 00000 n 
 0000044770 00000 n 
-0002136336 00000 n 
-0005196240 00000 n 
+0002136330 00000 n 
+0005196234 00000 n 
 0000044826 00000 n 
 0000044879 00000 n 
-0002136714 00000 n 
-0005196141 00000 n 
+0002136708 00000 n 
+0005196135 00000 n 
 0000044935 00000 n 
 0000044992 00000 n 
-0002141560 00000 n 
-0005196042 00000 n 
+0002141554 00000 n 
+0005196036 00000 n 
 0000045048 00000 n 
 0000045106 00000 n 
-0002146145 00000 n 
-0005195958 00000 n 
+0002146139 00000 n 
+0005195952 00000 n 
 0000045162 00000 n 
 0000045245 00000 n 
-0002146397 00000 n 
-0005195818 00000 n 
+0002146391 00000 n 
+0005195812 00000 n 
 0000045296 00000 n 
 0000045330 00000 n 
-0002146460 00000 n 
-0005195734 00000 n 
+0002146454 00000 n 
+0005195728 00000 n 
 0000045386 00000 n 
 0000045455 00000 n 
-0002151282 00000 n 
-0005195635 00000 n 
+0002151276 00000 n 
+0005195629 00000 n 
 0000045511 00000 n 
 0000045568 00000 n 
-0002161682 00000 n 
-0005195536 00000 n 
+0002161676 00000 n 
+0005195530 00000 n 
 0000045624 00000 n 
 0000045688 00000 n 
-0002161745 00000 n 
-0005195437 00000 n 
+0002161739 00000 n 
+0005195431 00000 n 
 0000045744 00000 n 
 0000045819 00000 n 
-0002165951 00000 n 
-0005195338 00000 n 
+0002165945 00000 n 
+0005195332 00000 n 
 0000045875 00000 n 
 0000045934 00000 n 
-0002179980 00000 n 
-0005195239 00000 n 
+0002179974 00000 n 
+0005195233 00000 n 
 0000045990 00000 n 
 0000046034 00000 n 
-0002180043 00000 n 
-0005195155 00000 n 
+0002180037 00000 n 
+0005195149 00000 n 
 0000046090 00000 n 
 0000046157 00000 n 
-0002180106 00000 n 
-0005195015 00000 n 
+0002180100 00000 n 
+0005195009 00000 n 
 0000046208 00000 n 
 0000046249 00000 n 
-0002180169 00000 n 
-0005194931 00000 n 
+0002180163 00000 n 
+0005194925 00000 n 
 0000046305 00000 n 
 0000046343 00000 n 
-0002183218 00000 n 
-0005194832 00000 n 
+0002183212 00000 n 
+0005194826 00000 n 
 0000046399 00000 n 
 0000046452 00000 n 
-0002183281 00000 n 
-0005194733 00000 n 
+0002183275 00000 n 
+0005194727 00000 n 
 0000046508 00000 n 
 0000046548 00000 n 
-0002183344 00000 n 
-0005194649 00000 n 
+0002183338 00000 n 
+0005194643 00000 n 
 0000046604 00000 n 
 0000046648 00000 n 
-0002188016 00000 n 
-0005194550 00000 n 
+0002188010 00000 n 
+0005194544 00000 n 
 0000046700 00000 n 
 0000046769 00000 n 
-0002193141 00000 n 
-0005194451 00000 n 
+0002193135 00000 n 
+0005194445 00000 n 
 0000046821 00000 n 
 0000046864 00000 n 
-0002193204 00000 n 
-0005194352 00000 n 
+0002193198 00000 n 
+0005194346 00000 n 
 0000046916 00000 n 
 0000046977 00000 n 
-0002193267 00000 n 
-0005194253 00000 n 
+0002193261 00000 n 
+0005194247 00000 n 
 0000047029 00000 n 
 0000047108 00000 n 
-0002193330 00000 n 
-0005194128 00000 n 
+0002193324 00000 n 
+0005194122 00000 n 
 0000047160 00000 n 
 0000047194 00000 n 
-0002193393 00000 n 
-0005194044 00000 n 
+0002193387 00000 n 
+0005194038 00000 n 
 0000047251 00000 n 
 0000047319 00000 n 
-0002195419 00000 n 
-0005193960 00000 n 
+0002195413 00000 n 
+0005193954 00000 n 
 0000047376 00000 n 
 0000047469 00000 n 
-0002199637 00000 n 
-0005193820 00000 n 
+0002199631 00000 n 
+0005193814 00000 n 
 0000047518 00000 n 
 0000047560 00000 n 
-0002199763 00000 n 
-0005193695 00000 n 
+0002199757 00000 n 
+0005193689 00000 n 
 0000047611 00000 n 
 0000047644 00000 n 
-0002199826 00000 n 
-0005193611 00000 n 
+0002199820 00000 n 
+0005193605 00000 n 
 0000047700 00000 n 
 0000047742 00000 n 
-0002199889 00000 n 
-0005193527 00000 n 
+0002199883 00000 n 
+0005193521 00000 n 
 0000047798 00000 n 
 0000047827 00000 n 
-0002199952 00000 n 
-0005193387 00000 n 
+0002199946 00000 n 
+0005193381 00000 n 
 0000047878 00000 n 
 0000047931 00000 n 
-0002205264 00000 n 
-0005193303 00000 n 
+0002205258 00000 n 
+0005193297 00000 n 
 0000047987 00000 n 
 0000048036 00000 n 
-0002205704 00000 n 
-0005193204 00000 n 
+0002205698 00000 n 
+0005193198 00000 n 
 0000048092 00000 n 
 0000048146 00000 n 
-0002212316 00000 n 
-0005193120 00000 n 
+0002212310 00000 n 
+0005193114 00000 n 
 0000048202 00000 n 
 0000048258 00000 n 
-0002214015 00000 n 
-0005192980 00000 n 
+0002214009 00000 n 
+0005192974 00000 n 
 0000048309 00000 n 
 0000048352 00000 n 
-0002214078 00000 n 
-0005192896 00000 n 
+0002214072 00000 n 
+0005192890 00000 n 
 0000048408 00000 n 
 0000048473 00000 n 
-0002218004 00000 n 
-0005192797 00000 n 
+0002217998 00000 n 
+0005192791 00000 n 
 0000048529 00000 n 
 0000048602 00000 n 
-0002218569 00000 n 
-0005192698 00000 n 
+0002218563 00000 n 
+0005192692 00000 n 
 0000048658 00000 n 
 0000048717 00000 n 
-0002218632 00000 n 
-0005192599 00000 n 
+0002218626 00000 n 
+0005192593 00000 n 
 0000048773 00000 n 
 0000048855 00000 n 
-0002222943 00000 n 
-0005192515 00000 n 
+0002222937 00000 n 
+0005192509 00000 n 
 0000048911 00000 n 
 0000048953 00000 n 
-0002223005 00000 n 
-0005192375 00000 n 
+0002222999 00000 n 
+0005192369 00000 n 
 0000049004 00000 n 
 0000049086 00000 n 
-0002226603 00000 n 
-0005192291 00000 n 
+0002226597 00000 n 
+0005192285 00000 n 
 0000049142 00000 n 
 0000049197 00000 n 
-0002226729 00000 n 
-0005192192 00000 n 
+0002226723 00000 n 
+0005192186 00000 n 
 0000049253 00000 n 
 0000049303 00000 n 
-0002251836 00000 n 
-0005192093 00000 n 
+0002251830 00000 n 
+0005192087 00000 n 
 0000049359 00000 n 
 0000049420 00000 n 
-0002251899 00000 n 
-0005191994 00000 n 
+0002251893 00000 n 
+0005191988 00000 n 
 0000049476 00000 n 
 0000049523 00000 n 
-0002286336 00000 n 
-0005191895 00000 n 
+0002286330 00000 n 
+0005191889 00000 n 
 0000049579 00000 n 
 0000049657 00000 n 
-0002290737 00000 n 
-0005191796 00000 n 
+0002290731 00000 n 
+0005191790 00000 n 
 0000049713 00000 n 
 0000049786 00000 n 
-0002290800 00000 n 
-0005191697 00000 n 
+0002290794 00000 n 
+0005191691 00000 n 
 0000049842 00000 n 
 0000049898 00000 n 
-0002290863 00000 n 
-0005191613 00000 n 
+0002290857 00000 n 
+0005191607 00000 n 
 0000049954 00000 n 
 0000050022 00000 n 
-0002295295 00000 n 
-0005191472 00000 n 
+0002295289 00000 n 
+0005191466 00000 n 
 0000050073 00000 n 
 0000050125 00000 n 
-0002295358 00000 n 
-0005191388 00000 n 
+0002295352 00000 n 
+0005191382 00000 n 
 0000050181 00000 n 
 0000050229 00000 n 
-0002299437 00000 n 
-0005191289 00000 n 
+0002299431 00000 n 
+0005191283 00000 n 
 0000050285 00000 n 
 0000050332 00000 n 
-0002300064 00000 n 
-0005191149 00000 n 
+0002300058 00000 n 
+0005191143 00000 n 
 0000050388 00000 n 
 0000050427 00000 n 
-0002300127 00000 n 
-0005191080 00000 n 
+0002300121 00000 n 
+0005191074 00000 n 
 0000050488 00000 n 
 0000050528 00000 n 
-0002353864 00000 n 
-0005190981 00000 n 
+0002353858 00000 n 
+0005190975 00000 n 
 0000050584 00000 n 
 0000050615 00000 n 
-0002354053 00000 n 
-0005190882 00000 n 
+0002354047 00000 n 
+0005190876 00000 n 
 0000050671 00000 n 
 0000050698 00000 n 
-0002419675 00000 n 
-0005190783 00000 n 
+0002419669 00000 n 
+0005190777 00000 n 
 0000050754 00000 n 
 0000050785 00000 n 
-0002468399 00000 n 
-0005190684 00000 n 
+0002468393 00000 n 
+0005190678 00000 n 
 0000050841 00000 n 
 0000050889 00000 n 
-0002468588 00000 n 
-0005190585 00000 n 
+0002468582 00000 n 
+0005190579 00000 n 
 0000050945 00000 n 
 0000050994 00000 n 
-0002502342 00000 n 
-0005190486 00000 n 
+0002502336 00000 n 
+0005190480 00000 n 
 0000051050 00000 n 
 0000051084 00000 n 
-0002506897 00000 n 
-0005190387 00000 n 
+0002506891 00000 n 
+0005190381 00000 n 
 0000051141 00000 n 
 0000051193 00000 n 
-0002507212 00000 n 
-0005190288 00000 n 
+0002507206 00000 n 
+0005190282 00000 n 
 0000051250 00000 n 
 0000051291 00000 n 
-0002511362 00000 n 
-0005190189 00000 n 
+0002511356 00000 n 
+0005190183 00000 n 
 0000051348 00000 n 
 0000051379 00000 n 
-0002511425 00000 n 
-0005190090 00000 n 
+0002511419 00000 n 
+0005190084 00000 n 
 0000051436 00000 n 
 0000051471 00000 n 
-0002511614 00000 n 
-0005189991 00000 n 
+0002511608 00000 n 
+0005189985 00000 n 
 0000051528 00000 n 
 0000051582 00000 n 
-0002516370 00000 n 
-0005189892 00000 n 
+0002516364 00000 n 
+0005189886 00000 n 
 0000051639 00000 n 
 0000051719 00000 n 
-0002516693 00000 n 
-0005189793 00000 n 
+0002516687 00000 n 
+0005189787 00000 n 
 0000051776 00000 n 
 0000051848 00000 n 
-0002567554 00000 n 
-0005189694 00000 n 
+0002567548 00000 n 
+0005189688 00000 n 
 0000051905 00000 n 
 0000051955 00000 n 
-0002615842 00000 n 
-0005189595 00000 n 
+0002615836 00000 n 
+0005189589 00000 n 
 0000052012 00000 n 
 0000052061 00000 n 
-0002615906 00000 n 
-0005189511 00000 n 
+0002615900 00000 n 
+0005189505 00000 n 
 0000052118 00000 n 
 0000052170 00000 n 
-0002616165 00000 n 
-0005189371 00000 n 
+0002616159 00000 n 
+0005189365 00000 n 
 0000052221 00000 n 
 0000052277 00000 n 
-0002616229 00000 n 
-0005189287 00000 n 
+0002616223 00000 n 
+0005189281 00000 n 
 0000052333 00000 n 
 0000052396 00000 n 
-0002676725 00000 n 
-0005189188 00000 n 
+0002676719 00000 n 
+0005189182 00000 n 
 0000052452 00000 n 
 0000052503 00000 n 
-0002676918 00000 n 
-0005189104 00000 n 
+0002676912 00000 n 
+0005189098 00000 n 
 0000052559 00000 n 
 0000052610 00000 n 
-0002677110 00000 n 
-0005188964 00000 n 
+0002677104 00000 n 
+0005188958 00000 n 
 0000052661 00000 n 
 0000052747 00000 n 
-0002711711 00000 n 
-0005188880 00000 n 
+0002711705 00000 n 
+0005188874 00000 n 
 0000052803 00000 n 
 0000052873 00000 n 
-0002712098 00000 n 
-0005188796 00000 n 
+0002712092 00000 n 
+0005188790 00000 n 
 0000052929 00000 n 
 0000053000 00000 n 
-0002715930 00000 n 
-0005188656 00000 n 
+0002715924 00000 n 
+0005188650 00000 n 
 0000053051 00000 n 
 0000053094 00000 n 
-0002715994 00000 n 
-0005188572 00000 n 
+0002715988 00000 n 
+0005188566 00000 n 
 0000053150 00000 n 
 0000053203 00000 n 
-0002716058 00000 n 
-0005188488 00000 n 
+0002716052 00000 n 
+0005188482 00000 n 
 0000053259 00000 n 
 0000053315 00000 n 
-0002716122 00000 n 
-0005188348 00000 n 
+0002716116 00000 n 
+0005188342 00000 n 
 0000053366 00000 n 
 0000053435 00000 n 
-0002720840 00000 n 
-0005188264 00000 n 
+0002720834 00000 n 
+0005188258 00000 n 
 0000053491 00000 n 
 0000053572 00000 n 
-0002720904 00000 n 
-0005188165 00000 n 
+0002720898 00000 n 
+0005188159 00000 n 
 0000053628 00000 n 
 0000053685 00000 n 
-0002720968 00000 n 
-0005188066 00000 n 
+0002720962 00000 n 
+0005188060 00000 n 
 0000053741 00000 n 
 0000053786 00000 n 
-0002721032 00000 n 
-0005187982 00000 n 
+0002721026 00000 n 
+0005187976 00000 n 
 0000053842 00000 n 
 0000053925 00000 n 
-0002721096 00000 n 
-0005187841 00000 n 
+0002721090 00000 n 
+0005187835 00000 n 
 0000053977 00000 n 
 0000054034 00000 n 
-0002721160 00000 n 
-0005187757 00000 n 
+0002721154 00000 n 
+0005187751 00000 n 
 0000054091 00000 n 
 0000054143 00000 n 
-0002726168 00000 n 
-0005187658 00000 n 
+0002726162 00000 n 
+0005187652 00000 n 
 0000054200 00000 n 
 0000054257 00000 n 
-0002727723 00000 n 
-0005187559 00000 n 
+0002727717 00000 n 
+0005187553 00000 n 
 0000054314 00000 n 
 0000054382 00000 n 
-0002731998 00000 n 
-0005187460 00000 n 
+0002731992 00000 n 
+0005187454 00000 n 
 0000054439 00000 n 
 0000054494 00000 n 
-0002735881 00000 n 
-0005187361 00000 n 
+0002735875 00000 n 
+0005187355 00000 n 
 0000054551 00000 n 
 0000054604 00000 n 
-0002735945 00000 n 
-0005187262 00000 n 
+0002735939 00000 n 
+0005187256 00000 n 
 0000054661 00000 n 
 0000054736 00000 n 
-0002736008 00000 n 
-0005187163 00000 n 
+0002736002 00000 n 
+0005187157 00000 n 
 0000054793 00000 n 
 0000054838 00000 n 
-0002740640 00000 n 
-0005187064 00000 n 
+0002740634 00000 n 
+0005187058 00000 n 
 0000054895 00000 n 
 0000054966 00000 n 
-0002744687 00000 n 
-0005186965 00000 n 
+0002744681 00000 n 
+0005186959 00000 n 
 0000055023 00000 n 
 0000055073 00000 n 
-0002744946 00000 n 
-0005186866 00000 n 
+0002744940 00000 n 
+0005186860 00000 n 
 0000055131 00000 n 
 0000055186 00000 n 
-0002752435 00000 n 
-0005186767 00000 n 
+0002752429 00000 n 
+0005186761 00000 n 
 0000055244 00000 n 
 0000055289 00000 n 
-0002756144 00000 n 
-0005186668 00000 n 
+0002756138 00000 n 
+0005186662 00000 n 
 0000055347 00000 n 
 0000055421 00000 n 
-0002756598 00000 n 
-0005186569 00000 n 
+0002756592 00000 n 
+0005186563 00000 n 
 0000055479 00000 n 
 0000055527 00000 n 
-0002756922 00000 n 
-0005186470 00000 n 
+0002756916 00000 n 
+0005186464 00000 n 
 0000055585 00000 n 
 0000055626 00000 n 
-0002815906 00000 n 
-0005186371 00000 n 
+0002815900 00000 n 
+0005186365 00000 n 
 0000055684 00000 n 
 0000055749 00000 n 
-0002819903 00000 n 
-0005186287 00000 n 
+0002819897 00000 n 
+0005186281 00000 n 
 0000055807 00000 n 
 0000055886 00000 n 
-0002820031 00000 n 
-0005186147 00000 n 
+0002820025 00000 n 
+0005186141 00000 n 
 0000055938 00000 n 
 0000056018 00000 n 
-0002820355 00000 n 
-0005186063 00000 n 
+0002820349 00000 n 
+0005186057 00000 n 
 0000056075 00000 n 
 0000056129 00000 n 
-0002825289 00000 n 
-0005185964 00000 n 
+0002825283 00000 n 
+0005185958 00000 n 
 0000056186 00000 n 
 0000056243 00000 n 
-0002825612 00000 n 
-0005185865 00000 n 
+0002825606 00000 n 
+0005185859 00000 n 
 0000056300 00000 n 
 0000056367 00000 n 
-0002831722 00000 n 
-0005185766 00000 n 
+0002831716 00000 n 
+0005185760 00000 n 
 0000056424 00000 n 
 0000056496 00000 n 
-0002831786 00000 n 
-0005185667 00000 n 
+0002831780 00000 n 
+0005185661 00000 n 
 0000056553 00000 n 
 0000056612 00000 n 
-0002857144 00000 n 
-0005185583 00000 n 
+0002857138 00000 n 
+0005185577 00000 n 
 0000056669 00000 n 
 0000056715 00000 n 
-0002857988 00000 n 
-0005185443 00000 n 
+0002857982 00000 n 
+0005185437 00000 n 
 0000056767 00000 n 
 0000056812 00000 n 
-0002858052 00000 n 
-0005185359 00000 n 
+0002858046 00000 n 
+0005185353 00000 n 
 0000056869 00000 n 
 0000056912 00000 n 
-0002862268 00000 n 
-0005185260 00000 n 
+0002862262 00000 n 
+0005185254 00000 n 
 0000056969 00000 n 
 0000057003 00000 n 
-0002862332 00000 n 
-0005185161 00000 n 
+0002862326 00000 n 
+0005185155 00000 n 
 0000057060 00000 n 
 0000057099 00000 n 
-0002862396 00000 n 
-0005185077 00000 n 
+0002862390 00000 n 
+0005185071 00000 n 
 0000057156 00000 n 
 0000057192 00000 n 
-0002863887 00000 n 
-0005184937 00000 n 
+0002863881 00000 n 
+0005184931 00000 n 
 0000057244 00000 n 
 0000057306 00000 n 
-0002870264 00000 n 
-0005184812 00000 n 
+0002870258 00000 n 
+0005184806 00000 n 
 0000057363 00000 n 
 0000057419 00000 n 
-0002870328 00000 n 
-0005184728 00000 n 
+0002870322 00000 n 
+0005184722 00000 n 
 0000057481 00000 n 
 0000057524 00000 n 
-0002870392 00000 n 
-0005184629 00000 n 
+0002870386 00000 n 
+0005184623 00000 n 
 0000057586 00000 n 
 0000057644 00000 n 
-0002870456 00000 n 
-0005184530 00000 n 
+0002870450 00000 n 
+0005184524 00000 n 
 0000057706 00000 n 
 0000057750 00000 n 
-0002878132 00000 n 
-0005184431 00000 n 
+0002878126 00000 n 
+0005184425 00000 n 
 0000057812 00000 n 
 0000057879 00000 n 
-0002878196 00000 n 
-0005184332 00000 n 
+0002878190 00000 n 
+0005184326 00000 n 
 0000057941 00000 n 
 0000057992 00000 n 
-0002878260 00000 n 
-0005184233 00000 n 
+0002878254 00000 n 
+0005184227 00000 n 
 0000058054 00000 n 
 0000058101 00000 n 
-0002884818 00000 n 
-0005184134 00000 n 
+0002884812 00000 n 
+0005184128 00000 n 
 0000058163 00000 n 
 0000058262 00000 n 
-0002884882 00000 n 
-0005184050 00000 n 
+0002884876 00000 n 
+0005184044 00000 n 
 0000058324 00000 n 
 0000058377 00000 n 
-0002884945 00000 n 
-0005183966 00000 n 
+0002884939 00000 n 
+0005183960 00000 n 
 0000058434 00000 n 
 0000058510 00000 n 
-0002895951 00000 n 
-0005183826 00000 n 
+0002895945 00000 n 
+0005183820 00000 n 
 0000058562 00000 n 
 0000058608 00000 n 
-0002896015 00000 n 
-0005183742 00000 n 
+0002896009 00000 n 
+0005183736 00000 n 
 0000058665 00000 n 
 0000058703 00000 n 
-0002896273 00000 n 
-0005183643 00000 n 
+0002896267 00000 n 
+0005183637 00000 n 
 0000058760 00000 n 
 0000058813 00000 n 
-0002896337 00000 n 
-0005183544 00000 n 
+0002896331 00000 n 
+0005183538 00000 n 
 0000058870 00000 n 
 0000058944 00000 n 
-0002899468 00000 n 
-0005183445 00000 n 
+0002899462 00000 n 
+0005183439 00000 n 
 0000059001 00000 n 
 0000059049 00000 n 
-0002899921 00000 n 
-0005183346 00000 n 
+0002899915 00000 n 
+0005183340 00000 n 
 0000059106 00000 n 
 0000059148 00000 n 
-0002903849 00000 n 
-0005183247 00000 n 
+0002903843 00000 n 
+0005183241 00000 n 
 0000059205 00000 n 
 0000059245 00000 n 
-0002903913 00000 n 
-0005183163 00000 n 
+0002903907 00000 n 
+0005183157 00000 n 
 0000059302 00000 n 
 0000059345 00000 n 
-0002903976 00000 n 
-0005183064 00000 n 
+0002903970 00000 n 
+0005183058 00000 n 
 0000059397 00000 n 
 0000059437 00000 n 
-0002908547 00000 n 
-0005182924 00000 n 
+0002908541 00000 n 
+0005182918 00000 n 
 0000059489 00000 n 
 0000059558 00000 n 
-0002908611 00000 n 
-0005182840 00000 n 
+0002908605 00000 n 
+0005182834 00000 n 
 0000059615 00000 n 
 0000059673 00000 n 
-0002908675 00000 n 
-0005182741 00000 n 
+0002908669 00000 n 
+0005182735 00000 n 
 0000059730 00000 n 
 0000059764 00000 n 
-0002908739 00000 n 
-0005182657 00000 n 
+0002908733 00000 n 
+0005182651 00000 n 
 0000059821 00000 n 
 0000059862 00000 n 
-0002913139 00000 n 
-0005182558 00000 n 
+0002913133 00000 n 
+0005182552 00000 n 
 0000059914 00000 n 
 0000059982 00000 n 
-0003040970 00000 n 
-0005182459 00000 n 
+0003040964 00000 n 
+0005182453 00000 n 
 0000060034 00000 n 
 0000060081 00000 n 
-0003182789 00000 n 
-0005182318 00000 n 
+0003182783 00000 n 
+0005182312 00000 n 
 0000060133 00000 n 
 0000060167 00000 n 
-0003182853 00000 n 
-0005182234 00000 n 
+0003182847 00000 n 
+0005182228 00000 n 
 0000060224 00000 n 
 0000060286 00000 n 
-0003187141 00000 n 
-0005182135 00000 n 
+0003187135 00000 n 
+0005182129 00000 n 
 0000060343 00000 n 
 0000060428 00000 n 
-0003187270 00000 n 
-0005182036 00000 n 
+0003187264 00000 n 
+0005182030 00000 n 
 0000060485 00000 n 
 0000060553 00000 n 
-0003187334 00000 n 
-0005181937 00000 n 
+0003187328 00000 n 
+0005181931 00000 n 
 0000060610 00000 n 
 0000060650 00000 n 
-0003187398 00000 n 
-0005181838 00000 n 
+0003187392 00000 n 
+0005181832 00000 n 
 0000060707 00000 n 
 0000060765 00000 n 
-0003187462 00000 n 
-0005181739 00000 n 
+0003187456 00000 n 
+0005181733 00000 n 
 0000060822 00000 n 
 0000060897 00000 n 
-0003187526 00000 n 
-0005181640 00000 n 
+0003187520 00000 n 
+0005181634 00000 n 
 0000060954 00000 n 
 0000061034 00000 n 
-0003187590 00000 n 
-0005181541 00000 n 
+0003187584 00000 n 
+0005181535 00000 n 
 0000061091 00000 n 
 0000061156 00000 n 
-0003191002 00000 n 
-0005181442 00000 n 
+0003190996 00000 n 
+0005181436 00000 n 
 0000061213 00000 n 
 0000061288 00000 n 
-0003191066 00000 n 
-0005181343 00000 n 
+0003191060 00000 n 
+0005181337 00000 n 
 0000061346 00000 n 
 0000061417 00000 n 
-0003191130 00000 n 
-0005181244 00000 n 
+0003191124 00000 n 
+0005181238 00000 n 
 0000061475 00000 n 
 0000061535 00000 n 
-0003191194 00000 n 
-0005181145 00000 n 
+0003191188 00000 n 
+0005181139 00000 n 
 0000061593 00000 n 
 0000061671 00000 n 
-0003191258 00000 n 
-0005181046 00000 n 
+0003191252 00000 n 
+0005181040 00000 n 
 0000061729 00000 n 
 0000061794 00000 n 
-0003191322 00000 n 
-0005180947 00000 n 
+0003191316 00000 n 
+0005180941 00000 n 
 0000061852 00000 n 
 0000061887 00000 n 
-0003191386 00000 n 
-0005180848 00000 n 
+0003191380 00000 n 
+0005180842 00000 n 
 0000061945 00000 n 
 0000062025 00000 n 
-0003196766 00000 n 
-0005180749 00000 n 
+0003196760 00000 n 
+0005180743 00000 n 
 0000062083 00000 n 
 0000062162 00000 n 
-0003196830 00000 n 
-0005180650 00000 n 
+0003196824 00000 n 
+0005180644 00000 n 
 0000062220 00000 n 
 0000062294 00000 n 
-0003196894 00000 n 
-0005180551 00000 n 
+0003196888 00000 n 
+0005180545 00000 n 
 0000062352 00000 n 
 0000062433 00000 n 
-0003196958 00000 n 
-0005180452 00000 n 
+0003196952 00000 n 
+0005180446 00000 n 
 0000062491 00000 n 
 0000062557 00000 n 
-0003314301 00000 n 
-0005180368 00000 n 
+0003314295 00000 n 
+0005180362 00000 n 
 0000062615 00000 n 
 0000062694 00000 n 
-0003314365 00000 n 
-0005180284 00000 n 
+0003314359 00000 n 
+0005180278 00000 n 
 0000062746 00000 n 
 0000062806 00000 n 
-0003318520 00000 n 
-0005180145 00000 n 
+0003318514 00000 n 
+0005180139 00000 n 
 0000062855 00000 n 
 0000062897 00000 n 
-0003318646 00000 n 
-0005180061 00000 n 
+0003318640 00000 n 
+0005180055 00000 n 
 0000062948 00000 n 
 0000062990 00000 n 
-0003318710 00000 n 
-0005179962 00000 n 
+0003318704 00000 n 
+0005179956 00000 n 
 0000063041 00000 n 
 0000063072 00000 n 
-0003323550 00000 n 
-0005179822 00000 n 
+0003323544 00000 n 
+0005179816 00000 n 
 0000063123 00000 n 
 0000063160 00000 n 
-0003323614 00000 n 
-0005179738 00000 n 
+0003323608 00000 n 
+0005179732 00000 n 
 0000063216 00000 n 
 0000063242 00000 n 
-0003323678 00000 n 
-0005179639 00000 n 
+0003323672 00000 n 
+0005179633 00000 n 
 0000063298 00000 n 
 0000063335 00000 n 
-0003328702 00000 n 
-0005179499 00000 n 
+0003328696 00000 n 
+0005179493 00000 n 
 0000063391 00000 n 
 0000063425 00000 n 
-0003328895 00000 n 
-0005179430 00000 n 
+0003328889 00000 n 
+0005179424 00000 n 
 0000063486 00000 n 
 0000063532 00000 n 
-0003332943 00000 n 
-0005179331 00000 n 
+0003332937 00000 n 
+0005179325 00000 n 
 0000063588 00000 n 
 0000063622 00000 n 
-0003333072 00000 n 
-0005179232 00000 n 
+0003333066 00000 n 
+0005179226 00000 n 
 0000063678 00000 n 
 0000063706 00000 n 
-0003338729 00000 n 
-0005179133 00000 n 
+0003338723 00000 n 
+0005179127 00000 n 
 0000063762 00000 n 
 0000063791 00000 n 
-0003338793 00000 n 
-0005179008 00000 n 
+0003338787 00000 n 
+0005179002 00000 n 
 0000063847 00000 n 
 0000063882 00000 n 
-0003338857 00000 n 
-0005178939 00000 n 
+0003338851 00000 n 
+0005178933 00000 n 
 0000063943 00000 n 
 0000063981 00000 n 
-0003349912 00000 n 
-0005178814 00000 n 
+0003349906 00000 n 
+0005178808 00000 n 
 0000064032 00000 n 
 0000064084 00000 n 
-0003349976 00000 n 
-0005178730 00000 n 
+0003349970 00000 n 
+0005178724 00000 n 
 0000064140 00000 n 
 0000064171 00000 n 
-0003350040 00000 n 
-0005178631 00000 n 
+0003350034 00000 n 
+0005178625 00000 n 
 0000064227 00000 n 
 0000064253 00000 n 
-0003350104 00000 n 
-0005178547 00000 n 
+0003350098 00000 n 
+0005178541 00000 n 
 0000064309 00000 n 
 0000064342 00000 n 
-0003363732 00000 n 
-0005178408 00000 n 
+0003363726 00000 n 
+0005178402 00000 n 
 0000064391 00000 n 
 0000064443 00000 n 
-0003363858 00000 n 
-0005178324 00000 n 
+0003363852 00000 n 
+0005178318 00000 n 
 0000064494 00000 n 
 0000064536 00000 n 
-0003374394 00000 n 
-0005178225 00000 n 
+0003374388 00000 n 
+0005178219 00000 n 
 0000064587 00000 n 
 0000064620 00000 n 
-0003374458 00000 n 
-0005178085 00000 n 
+0003374452 00000 n 
+0005178079 00000 n 
 0000064671 00000 n 
 0000064713 00000 n 
-0003378281 00000 n 
-0005178001 00000 n 
+0003378275 00000 n 
+0005177995 00000 n 
 0000064769 00000 n 
 0000064801 00000 n 
-0003378344 00000 n 
-0005177917 00000 n 
+0003378338 00000 n 
+0005177911 00000 n 
 0000064857 00000 n 
 0000064902 00000 n 
-0003378408 00000 n 
-0005177777 00000 n 
+0003378402 00000 n 
+0005177771 00000 n 
 0000064953 00000 n 
 0000064991 00000 n 
-0003378472 00000 n 
-0005177693 00000 n 
+0003378466 00000 n 
+0005177687 00000 n 
 0000065047 00000 n 
 0000065100 00000 n 
-0003382734 00000 n 
-0005177594 00000 n 
+0003382728 00000 n 
+0005177588 00000 n 
 0000065156 00000 n 
 0000065212 00000 n 
-0003382798 00000 n 
-0005177495 00000 n 
+0003382792 00000 n 
+0005177489 00000 n 
 0000065268 00000 n 
 0000065308 00000 n 
-0003382992 00000 n 
-0005177396 00000 n 
+0003382986 00000 n 
+0005177390 00000 n 
 0000065364 00000 n 
 0000065417 00000 n 
-0003387885 00000 n 
-0005177297 00000 n 
+0003387879 00000 n 
+0005177291 00000 n 
 0000065473 00000 n 
 0000065522 00000 n 
-0003387949 00000 n 
-0005177213 00000 n 
+0003387943 00000 n 
+0005177207 00000 n 
 0000065578 00000 n 
 0000065613 00000 n 
-0003388013 00000 n 
-0005177073 00000 n 
+0003388007 00000 n 
+0005177067 00000 n 
 0000065664 00000 n 
 0000065715 00000 n 
-0003388077 00000 n 
-0005176989 00000 n 
+0003388071 00000 n 
+0005176983 00000 n 
 0000065771 00000 n 
 0000065804 00000 n 
-0003388141 00000 n 
-0005176890 00000 n 
+0003388135 00000 n 
+0005176884 00000 n 
 0000065860 00000 n 
 0000065893 00000 n 
-0003392237 00000 n 
-0005176765 00000 n 
+0003392231 00000 n 
+0005176759 00000 n 
 0000065949 00000 n 
 0000065988 00000 n 
-0003392301 00000 n 
-0005176681 00000 n 
+0003392295 00000 n 
+0005176675 00000 n 
 0000066049 00000 n 
 0000066140 00000 n 
-0003399550 00000 n 
-0005176582 00000 n 
+0003399544 00000 n 
+0005176576 00000 n 
 0000066201 00000 n 
 0000066240 00000 n 
-0003399874 00000 n 
-0005176483 00000 n 
+0003399868 00000 n 
+0005176477 00000 n 
 0000066301 00000 n 
 0000066340 00000 n 
-0003400977 00000 n 
-0005176384 00000 n 
+0003400971 00000 n 
+0005176378 00000 n 
 0000066401 00000 n 
 0000066461 00000 n 
-0003404507 00000 n 
-0005176285 00000 n 
+0003404501 00000 n 
+0005176279 00000 n 
 0000066522 00000 n 
 0000066583 00000 n 
-0003409673 00000 n 
-0005176145 00000 n 
+0003409667 00000 n 
+0005176139 00000 n 
 0000066644 00000 n 
 0000066695 00000 n 
-0003409737 00000 n 
-0005176061 00000 n 
+0003409731 00000 n 
+0005176055 00000 n 
 0000066754 00000 n 
 0000066780 00000 n 
-0003416162 00000 n 
-0005175962 00000 n 
+0003416156 00000 n 
+0005175956 00000 n 
 0000066839 00000 n 
 0000066867 00000 n 
-0003422794 00000 n 
-0005175878 00000 n 
+0003422788 00000 n 
+0005175872 00000 n 
 0000066926 00000 n 
 0000066957 00000 n 
-0003422858 00000 n 
-0005175753 00000 n 
+0003422852 00000 n 
+0005175747 00000 n 
 0000067018 00000 n 
 0000067064 00000 n 
-0003423182 00000 n 
-0005175669 00000 n 
+0003423176 00000 n 
+0005175663 00000 n 
 0000067123 00000 n 
 0000067184 00000 n 
-0003428841 00000 n 
-0005175585 00000 n 
+0003428835 00000 n 
+0005175579 00000 n 
 0000067243 00000 n 
 0000067294 00000 n 
-0003439006 00000 n 
-0005175486 00000 n 
+0003439000 00000 n 
+0005175480 00000 n 
 0000067345 00000 n 
 0000067376 00000 n 
-0003439070 00000 n 
-0005175361 00000 n 
+0003439064 00000 n 
+0005175355 00000 n 
 0000067427 00000 n 
 0000067461 00000 n 
-0003439134 00000 n 
-0005175277 00000 n 
+0003439128 00000 n 
+0005175271 00000 n 
 0000067517 00000 n 
 0000067558 00000 n 
-0003439198 00000 n 
-0005175193 00000 n 
+0003439192 00000 n 
+0005175187 00000 n 
 0000067614 00000 n 
 0000067676 00000 n 
-0003444836 00000 n 
-0005175054 00000 n 
+0003444830 00000 n 
+0005175048 00000 n 
 0000067725 00000 n 
 0000067773 00000 n 
-0003444962 00000 n 
-0005174970 00000 n 
+0003444956 00000 n 
+0005174964 00000 n 
 0000067824 00000 n 
 0000067866 00000 n 
-0003445026 00000 n 
-0005174871 00000 n 
+0003445020 00000 n 
+0005174865 00000 n 
 0000067917 00000 n 
 0000067966 00000 n 
-0003445090 00000 n 
-0005174731 00000 n 
+0003445084 00000 n 
+0005174725 00000 n 
 0000068017 00000 n 
 0000068063 00000 n 
-0003449636 00000 n 
-0005174647 00000 n 
+0003449630 00000 n 
+0005174641 00000 n 
 0000068119 00000 n 
 0000068176 00000 n 
-0003454279 00000 n 
-0005174563 00000 n 
+0003454273 00000 n 
+0005174557 00000 n 
 0000068232 00000 n 
 0000068284 00000 n 
-0003454343 00000 n 
-0005174438 00000 n 
+0003454337 00000 n 
+0005174432 00000 n 
 0000068335 00000 n 
 0000068382 00000 n 
-0003462782 00000 n 
-0005174354 00000 n 
+0003462776 00000 n 
+0005174348 00000 n 
 0000068438 00000 n 
 0000068500 00000 n 
-0003465932 00000 n 
-0005174270 00000 n 
+0003465926 00000 n 
+0005174264 00000 n 
 0000068556 00000 n 
 0000068603 00000 n 
-0003470688 00000 n 
-0005174131 00000 n 
+0003470682 00000 n 
+0005174125 00000 n 
 0000068652 00000 n 
 0000068700 00000 n 
-0003470814 00000 n 
-0005174047 00000 n 
+0003470808 00000 n 
+0005174041 00000 n 
 0000068751 00000 n 
 0000068793 00000 n 
-0003470878 00000 n 
-0005173907 00000 n 
+0003470872 00000 n 
+0005173901 00000 n 
 0000068844 00000 n 
 0000068902 00000 n 
-0003475406 00000 n 
-0005173823 00000 n 
+0003475400 00000 n 
+0005173817 00000 n 
 0000068958 00000 n 
 0000069001 00000 n 
-0003475470 00000 n 
-0005173683 00000 n 
+0003475464 00000 n 
+0005173677 00000 n 
 0000069057 00000 n 
 0000069108 00000 n 
-0003475534 00000 n 
-0005173614 00000 n 
+0003475528 00000 n 
+0005173608 00000 n 
 0000069169 00000 n 
 0000069207 00000 n 
-0003475598 00000 n 
-0005173489 00000 n 
+0003475592 00000 n 
+0005173483 00000 n 
 0000069263 00000 n 
 0000069324 00000 n 
-0003479888 00000 n 
-0005173405 00000 n 
+0003479882 00000 n 
+0005173399 00000 n 
 0000069385 00000 n 
 0000069448 00000 n 
-0003480211 00000 n 
-0005173321 00000 n 
+0003480205 00000 n 
+0005173315 00000 n 
 0000069509 00000 n 
 0000069560 00000 n 
-0003484047 00000 n 
-0005173222 00000 n 
+0003484041 00000 n 
+0005173216 00000 n 
 0000069611 00000 n 
 0000069662 00000 n 
-0003484111 00000 n 
-0005173082 00000 n 
+0003484105 00000 n 
+0005173076 00000 n 
 0000069713 00000 n 
 0000069750 00000 n 
-0003487475 00000 n 
-0005172998 00000 n 
+0003487469 00000 n 
+0005172992 00000 n 
 0000069806 00000 n 
 0000069848 00000 n 
-0003487539 00000 n 
-0005172899 00000 n 
+0003487533 00000 n 
+0005172893 00000 n 
 0000069904 00000 n 
 0000069941 00000 n 
-0003487603 00000 n 
-0005172815 00000 n 
+0003487597 00000 n 
+0005172809 00000 n 
 0000069997 00000 n 
 0000070027 00000 n 
-0003487667 00000 n 
-0005172716 00000 n 
+0003487661 00000 n 
+0005172710 00000 n 
 0000070078 00000 n 
 0000070143 00000 n 
-0003489844 00000 n 
-0005172591 00000 n 
+0003489838 00000 n 
+0005172585 00000 n 
 0000070194 00000 n 
 0000070228 00000 n 
-0003489908 00000 n 
-0005172522 00000 n 
+0003489902 00000 n 
+0005172516 00000 n 
 0000070284 00000 n 
 0000070325 00000 n 
-0003492146 00000 n 
-0005172383 00000 n 
+0003492140 00000 n 
+0005172377 00000 n 
 0000070374 00000 n 
 0000070421 00000 n 
-0003492272 00000 n 
-0005172299 00000 n 
+0003492266 00000 n 
+0005172293 00000 n 
 0000070472 00000 n 
 0000070514 00000 n 
-0003492336 00000 n 
-0005172159 00000 n 
+0003492330 00000 n 
+0005172153 00000 n 
 0000070565 00000 n 
 0000070602 00000 n 
-0003492400 00000 n 
-0005172034 00000 n 
+0003492394 00000 n 
+0005172028 00000 n 
 0000070658 00000 n 
 0000070719 00000 n 
-0003496297 00000 n 
-0005171950 00000 n 
+0003496291 00000 n 
+0005171944 00000 n 
 0000070780 00000 n 
 0000070823 00000 n 
-0003496620 00000 n 
-0005171851 00000 n 
+0003496614 00000 n 
+0005171845 00000 n 
 0000070884 00000 n 
 0000070932 00000 n 
-0003496814 00000 n 
-0005171752 00000 n 
+0003496808 00000 n 
+0005171746 00000 n 
 0000070993 00000 n 
 0000071068 00000 n 
-0003497073 00000 n 
-0005171668 00000 n 
+0003497067 00000 n 
+0005171662 00000 n 
 0000071129 00000 n 
 0000071183 00000 n 
-0003501919 00000 n 
-0005171528 00000 n 
+0003501913 00000 n 
+0005171522 00000 n 
 0000071239 00000 n 
 0000071308 00000 n 
-0003501983 00000 n 
-0005171444 00000 n 
+0003501977 00000 n 
+0005171438 00000 n 
 0000071369 00000 n 
 0000071417 00000 n 
-0003506758 00000 n 
-0005171345 00000 n 
+0003506752 00000 n 
+0005171339 00000 n 
 0000071478 00000 n 
 0000071522 00000 n 
-0003510170 00000 n 
-0005171220 00000 n 
+0003510164 00000 n 
+0005171214 00000 n 
 0000071583 00000 n 
 0000071632 00000 n 
-0003510878 00000 n 
-0005171151 00000 n 
+0003510872 00000 n 
+0005171145 00000 n 
 0000071691 00000 n 
 0000071737 00000 n 
-0003515187 00000 n 
-0005171052 00000 n 
+0003515181 00000 n 
+0005171046 00000 n 
 0000071793 00000 n 
 0000071847 00000 n 
-0003515251 00000 n 
-0005170953 00000 n 
+0003515245 00000 n 
+0005170947 00000 n 
 0000071903 00000 n 
 0000071991 00000 n 
-0003515315 00000 n 
-0005170828 00000 n 
+0003515309 00000 n 
+0005170822 00000 n 
 0000072047 00000 n 
 0000072123 00000 n 
-0003518647 00000 n 
-0005170744 00000 n 
+0003518641 00000 n 
+0005170738 00000 n 
 0000072184 00000 n 
 0000072241 00000 n 
-0003519231 00000 n 
-0005170645 00000 n 
+0003519225 00000 n 
+0005170639 00000 n 
 0000072302 00000 n 
 0000072337 00000 n 
-0003519294 00000 n 
-0005170546 00000 n 
+0003519288 00000 n 
+0005170540 00000 n 
 0000072398 00000 n 
 0000072431 00000 n 
-0003519358 00000 n 
-0005170462 00000 n 
+0003519352 00000 n 
+0005170456 00000 n 
 0000072492 00000 n 
 0000072520 00000 n 
-0003523775 00000 n 
-0005170363 00000 n 
+0003523769 00000 n 
+0005170357 00000 n 
 0000072571 00000 n 
 0000072610 00000 n 
-0003523839 00000 n 
-0005170264 00000 n 
+0003523833 00000 n 
+0005170258 00000 n 
 0000072661 00000 n 
 0000072718 00000 n 
-0003523903 00000 n 
-0005170124 00000 n 
+0003523897 00000 n 
+0005170118 00000 n 
 0000072769 00000 n 
 0000072823 00000 n 
-0003523967 00000 n 
-0005169999 00000 n 
+0003523961 00000 n 
+0005169993 00000 n 
 0000072879 00000 n 
 0000072916 00000 n 
-0003528131 00000 n 
-0005169930 00000 n 
+0003528125 00000 n 
+0005169924 00000 n 
 0000072977 00000 n 
 0000073038 00000 n 
-0003528195 00000 n 
-0005169831 00000 n 
+0003528189 00000 n 
+0005169825 00000 n 
 0000073094 00000 n 
 0000073141 00000 n 
-0003533592 00000 n 
-0005169747 00000 n 
+0003533586 00000 n 
+0005169741 00000 n 
 0000073197 00000 n 
 0000073236 00000 n 
-0003541544 00000 n 
-0005169622 00000 n 
+0003541538 00000 n 
+0005169616 00000 n 
 0000073287 00000 n 
 0000073321 00000 n 
-0003541608 00000 n 
-0005169538 00000 n 
+0003541602 00000 n 
+0005169532 00000 n 
 0000073377 00000 n 
 0000073452 00000 n 
-0003541672 00000 n 
-0005169439 00000 n 
+0003541666 00000 n 
+0005169433 00000 n 
 0000073508 00000 n 
 0000073556 00000 n 
-0003545555 00000 n 
-0005169340 00000 n 
+0003545549 00000 n 
+0005169334 00000 n 
 0000073612 00000 n 
 0000073661 00000 n 
-0003548720 00000 n 
-0005169256 00000 n 
+0003548714 00000 n 
+0005169250 00000 n 
 0000073717 00000 n 
 0000073794 00000 n 
-0003552187 00000 n 
-0005169117 00000 n 
+0003552181 00000 n 
+0005169111 00000 n 
 0000073843 00000 n 
 0000073900 00000 n 
-0003552313 00000 n 
-0005169033 00000 n 
+0003552307 00000 n 
+0005169027 00000 n 
 0000073951 00000 n 
 0000073993 00000 n 
-0003556388 00000 n 
-0005168893 00000 n 
+0003556382 00000 n 
+0005168887 00000 n 
 0000074044 00000 n 
 0000074085 00000 n 
-0003556452 00000 n 
-0005168768 00000 n 
+0003556446 00000 n 
+0005168762 00000 n 
 0000074141 00000 n 
 0000074186 00000 n 
-0003556646 00000 n 
-0005168699 00000 n 
+0003556640 00000 n 
+0005168693 00000 n 
 0000074247 00000 n 
 0000074297 00000 n 
-0003571141 00000 n 
-0005168559 00000 n 
+0003571135 00000 n 
+0005168553 00000 n 
 0000074353 00000 n 
 0000074403 00000 n 
-0003571205 00000 n 
-0005168475 00000 n 
+0003571199 00000 n 
+0005168469 00000 n 
 0000074464 00000 n 
 0000074511 00000 n 
-0003572242 00000 n 
-0005168391 00000 n 
+0003572236 00000 n 
+0005168385 00000 n 
 0000074572 00000 n 
 0000074624 00000 n 
-0003578531 00000 n 
-0005168292 00000 n 
+0003578525 00000 n 
+0005168286 00000 n 
 0000074680 00000 n 
 0000074727 00000 n 
-0003578595 00000 n 
-0005168193 00000 n 
+0003578589 00000 n 
+0005168187 00000 n 
 0000074783 00000 n 
 0000074848 00000 n 
-0003583195 00000 n 
-0005168068 00000 n 
+0003583189 00000 n 
+0005168062 00000 n 
 0000074904 00000 n 
 0000074973 00000 n 
-0003586545 00000 n 
-0005167984 00000 n 
+0003586539 00000 n 
+0005167978 00000 n 
 0000075034 00000 n 
 0000075093 00000 n 
-0003587324 00000 n 
-0005167885 00000 n 
+0003587318 00000 n 
+0005167879 00000 n 
 0000075154 00000 n 
 0000075207 00000 n 
-0003588230 00000 n 
-0005167786 00000 n 
+0003588224 00000 n 
+0005167780 00000 n 
 0000075268 00000 n 
 0000075318 00000 n 
-0003589008 00000 n 
-0005167702 00000 n 
+0003589002 00000 n 
+0005167696 00000 n 
 0000075379 00000 n 
 0000075443 00000 n 
-0003593152 00000 n 
-0005167577 00000 n 
+0003593146 00000 n 
+0005167571 00000 n 
 0000075494 00000 n 
 0000075528 00000 n 
-0003593216 00000 n 
-0005167493 00000 n 
+0003593210 00000 n 
+0005167487 00000 n 
 0000075584 00000 n 
 0000075627 00000 n 
-0003593864 00000 n 
-0005167409 00000 n 
+0003593858 00000 n 
+0005167403 00000 n 
 0000075683 00000 n 
 0000075745 00000 n 
-0003599718 00000 n 
-0005167270 00000 n 
+0003599712 00000 n 
+0005167264 00000 n 
 0000075794 00000 n 
 0000075857 00000 n 
-0003599846 00000 n 
-0005167186 00000 n 
+0003599840 00000 n 
+0005167180 00000 n 
 0000075908 00000 n 
 0000075950 00000 n 
-0003599910 00000 n 
-0005167087 00000 n 
+0003599904 00000 n 
+0005167081 00000 n 
 0000076001 00000 n 
 0000076044 00000 n 
-0003603349 00000 n 
-0005166947 00000 n 
+0003603343 00000 n 
+0005166941 00000 n 
 0000076095 00000 n 
 0000076158 00000 n 
-0003603413 00000 n 
-0005166863 00000 n 
+0003603407 00000 n 
+0005166857 00000 n 
 0000076214 00000 n 
 0000076245 00000 n 
-0003603671 00000 n 
-0005166764 00000 n 
+0003603665 00000 n 
+0005166758 00000 n 
 0000076301 00000 n 
 0000076338 00000 n 
-0003607904 00000 n 
-0005166665 00000 n 
+0003607898 00000 n 
+0005166659 00000 n 
 0000076394 00000 n 
 0000076429 00000 n 
-0003608162 00000 n 
-0005166581 00000 n 
+0003608156 00000 n 
+0005166575 00000 n 
 0000076485 00000 n 
 0000076524 00000 n 
-0003609587 00000 n 
-0005166441 00000 n 
+0003609581 00000 n 
+0005166435 00000 n 
 0000076575 00000 n 
 0000076648 00000 n 
-0003614408 00000 n 
-0005166357 00000 n 
+0003614402 00000 n 
+0005166351 00000 n 
 0000076704 00000 n 
 0000076747 00000 n 
-0003618727 00000 n 
-0005166258 00000 n 
+0003618721 00000 n 
+0005166252 00000 n 
 0000076803 00000 n 
 0000076840 00000 n 
-0003628095 00000 n 
-0005166159 00000 n 
+0003628089 00000 n 
+0005166153 00000 n 
 0000076896 00000 n 
 0000076927 00000 n 
-0003628159 00000 n 
-0005166060 00000 n 
+0003628153 00000 n 
+0005166054 00000 n 
 0000076983 00000 n 
 0000077014 00000 n 
-0003628223 00000 n 
-0005165976 00000 n 
+0003628217 00000 n 
+0005165970 00000 n 
 0000077070 00000 n 
 0000077102 00000 n 
-0003631297 00000 n 
-0005165851 00000 n 
+0003631291 00000 n 
+0005165845 00000 n 
 0000077153 00000 n 
 0000077187 00000 n 
-0003631361 00000 n 
-0005165767 00000 n 
+0003631355 00000 n 
+0005165761 00000 n 
 0000077243 00000 n 
 0000077290 00000 n 
-0003631425 00000 n 
-0005165668 00000 n 
+0003631419 00000 n 
+0005165662 00000 n 
 0000077346 00000 n 
 0000077396 00000 n 
-0003631489 00000 n 
-0005165584 00000 n 
+0003631483 00000 n 
+0005165578 00000 n 
 0000077452 00000 n 
 0000077505 00000 n 
-0003637912 00000 n 
-0005165445 00000 n 
+0003637906 00000 n 
+0005165439 00000 n 
 0000077554 00000 n 
 0000077591 00000 n 
-0003638038 00000 n 
-0005165361 00000 n 
+0003638032 00000 n 
+0005165355 00000 n 
 0000077642 00000 n 
 0000077684 00000 n 
-0003638102 00000 n 
-0005165262 00000 n 
+0003638096 00000 n 
+0005165256 00000 n 
 0000077735 00000 n 
 0000077786 00000 n 
-0003638166 00000 n 
-0005165163 00000 n 
+0003638160 00000 n 
+0005165157 00000 n 
 0000077837 00000 n 
 0000077876 00000 n 
-0003642106 00000 n 
-0005165064 00000 n 
+0003642100 00000 n 
+0005165058 00000 n 
 0000077927 00000 n 
 0000077973 00000 n 
-0003642170 00000 n 
-0005164924 00000 n 
+0003642164 00000 n 
+0005164918 00000 n 
 0000078024 00000 n 
 0000078062 00000 n 
-0003642234 00000 n 
-0005164840 00000 n 
+0003642228 00000 n 
+0005164834 00000 n 
 0000078118 00000 n 
 0000078162 00000 n 
-0003652137 00000 n 
-0005164741 00000 n 
+0003652131 00000 n 
+0005164735 00000 n 
 0000078218 00000 n 
 0000078265 00000 n 
-0003652896 00000 n 
-0005164657 00000 n 
+0003652890 00000 n 
+0005164651 00000 n 
 0000078321 00000 n 
 0000078373 00000 n 
-0003655239 00000 n 
-0005164532 00000 n 
+0003655233 00000 n 
+0005164526 00000 n 
 0000078424 00000 n 
 0000078458 00000 n 
-0003655303 00000 n 
-0005164463 00000 n 
+0003655297 00000 n 
+0005164457 00000 n 
 0000078514 00000 n 
 0000078558 00000 n 
-0003658819 00000 n 
-0005164324 00000 n 
+0003658813 00000 n 
+0005164318 00000 n 
 0000078607 00000 n 
 0000078645 00000 n 
-0003658947 00000 n 
-0005164240 00000 n 
+0003658941 00000 n 
+0005164234 00000 n 
 0000078696 00000 n 
 0000078738 00000 n 
-0003659011 00000 n 
-0005164115 00000 n 
+0003659005 00000 n 
+0005164109 00000 n 
 0000078789 00000 n 
 0000078840 00000 n 
-0003659075 00000 n 
-0005164031 00000 n 
+0003659069 00000 n 
+0005164025 00000 n 
 0000078896 00000 n 
 0000078925 00000 n 
-0003661827 00000 n 
-0005163932 00000 n 
+0003661821 00000 n 
+0005163926 00000 n 
 0000078981 00000 n 
 0000079007 00000 n 
-0003661891 00000 n 
-0005163833 00000 n 
+0003661885 00000 n 
+0005163827 00000 n 
 0000079063 00000 n 
 0000079090 00000 n 
-0003661955 00000 n 
-0005163749 00000 n 
+0003661949 00000 n 
+0005163743 00000 n 
 0000079146 00000 n 
 0000079204 00000 n 
-0003664501 00000 n 
-0005163610 00000 n 
+0003664495 00000 n 
+0005163604 00000 n 
 0000079253 00000 n 
 0000079291 00000 n 
-0003664629 00000 n 
-0005163526 00000 n 
+0003664623 00000 n 
+0005163520 00000 n 
 0000079342 00000 n 
 0000079384 00000 n 
-0003664693 00000 n 
-0005163401 00000 n 
+0003664687 00000 n 
+0005163395 00000 n 
 0000079435 00000 n 
 0000079476 00000 n 
-0003664757 00000 n 
-0005163317 00000 n 
+0003664751 00000 n 
+0005163311 00000 n 
 0000079532 00000 n 
 0000079570 00000 n 
-0003667681 00000 n 
-0005163177 00000 n 
+0003667675 00000 n 
+0005163171 00000 n 
 0000079626 00000 n 
 0000079667 00000 n 
-0003667745 00000 n 
-0005163093 00000 n 
+0003667739 00000 n 
+0005163087 00000 n 
 0000079728 00000 n 
 0000079772 00000 n 
-0003667809 00000 n 
-0005162994 00000 n 
+0003667803 00000 n 
+0005162988 00000 n 
 0000079833 00000 n 
 0000079881 00000 n 
-0003670796 00000 n 
-0005162895 00000 n 
+0003670790 00000 n 
+0005162889 00000 n 
 0000079942 00000 n 
 0000080000 00000 n 
-0003670860 00000 n 
-0005162796 00000 n 
+0003670854 00000 n 
+0005162790 00000 n 
 0000080061 00000 n 
 0000080133 00000 n 
-0003670924 00000 n 
-0005162697 00000 n 
+0003670918 00000 n 
+0005162691 00000 n 
 0000080194 00000 n 
 0000080241 00000 n 
-0003670988 00000 n 
-0005162598 00000 n 
+0003670982 00000 n 
+0005162592 00000 n 
 0000080302 00000 n 
 0000080357 00000 n 
-0003671052 00000 n 
-0005162514 00000 n 
+0003671046 00000 n 
+0005162508 00000 n 
 0000080418 00000 n 
 0000080470 00000 n 
-0003674398 00000 n 
-0005162415 00000 n 
+0003674392 00000 n 
+0005162409 00000 n 
 0000080526 00000 n 
 0000080564 00000 n 
-0003674462 00000 n 
-0005162316 00000 n 
+0003674456 00000 n 
+0005162310 00000 n 
 0000080620 00000 n 
 0000080674 00000 n 
-0003674526 00000 n 
-0005162217 00000 n 
+0003674520 00000 n 
+0005162211 00000 n 
 0000080730 00000 n 
 0000080781 00000 n 
-0003674590 00000 n 
-0005162133 00000 n 
+0003674584 00000 n 
+0005162127 00000 n 
 0000080837 00000 n 
 0000080869 00000 n 
-0003678446 00000 n 
-0005162035 00000 n 
+0003678440 00000 n 
+0005162029 00000 n 
 0000080918 00000 n 
 0000080965 00000 n 
-0003682593 00000 n 
-0005161911 00000 n 
+0003682587 00000 n 
+0005161905 00000 n 
 0000081014 00000 n 
 0000081068 00000 n 
-0003682719 00000 n 
-0005161801 00000 n 
+0003682713 00000 n 
+0005161795 00000 n 
 0000081119 00000 n 
 0000081154 00000 n 
-0003682783 00000 n 
-0005161717 00000 n 
+0003682777 00000 n 
+0005161711 00000 n 
 0000081210 00000 n 
 0000081254 00000 n 
-0003686852 00000 n 
-0005161618 00000 n 
+0003686846 00000 n 
+0005161612 00000 n 
 0000081310 00000 n 
 0000081368 00000 n 
-0003699665 00000 n 
-0005161534 00000 n 
+0003699659 00000 n 
+0005161528 00000 n 
 0000081424 00000 n 
 0000081476 00000 n 
-0003708176 00000 n 
-0005161394 00000 n 
+0003708170 00000 n 
+0005161388 00000 n 
 0000081521 00000 n 
 0000081567 00000 n 
-0003711570 00000 n 
-0005161269 00000 n 
+0003711564 00000 n 
+0005161263 00000 n 
 0000081616 00000 n 
 0000081665 00000 n 
-0003711696 00000 n 
-0005161144 00000 n 
+0003711690 00000 n 
+0005161138 00000 n 
 0000081716 00000 n 
 0000081760 00000 n 
-0003711760 00000 n 
-0005161060 00000 n 
+0003711754 00000 n 
+0005161054 00000 n 
 0000081816 00000 n 
 0000081878 00000 n 
-0003711824 00000 n 
-0005160961 00000 n 
+0003711818 00000 n 
+0005160955 00000 n 
 0000081934 00000 n 
 0000081995 00000 n 
-0003711952 00000 n 
-0005160877 00000 n 
+0003711946 00000 n 
+0005160871 00000 n 
 0000082051 00000 n 
 0000082093 00000 n 
-0003714951 00000 n 
-0005160752 00000 n 
+0003714945 00000 n 
+0005160746 00000 n 
 0000082144 00000 n 
 0000082197 00000 n 
-0003715015 00000 n 
-0005160668 00000 n 
+0003715009 00000 n 
+0005160662 00000 n 
 0000082253 00000 n 
 0000082308 00000 n 
-0003715079 00000 n 
-0005160528 00000 n 
+0003715073 00000 n 
+0005160522 00000 n 
 0000082364 00000 n 
 0000082412 00000 n 
-0003716051 00000 n 
-0005160444 00000 n 
+0003716045 00000 n 
+0005160438 00000 n 
 0000082473 00000 n 
 0000082525 00000 n 
-0003717427 00000 n 
-0005160345 00000 n 
+0003717421 00000 n 
+0005160339 00000 n 
 0000082586 00000 n 
 0000082625 00000 n 
-0003718806 00000 n 
-0005160246 00000 n 
+0003718800 00000 n 
+0005160240 00000 n 
 0000082686 00000 n 
 0000082721 00000 n 
-0003722687 00000 n 
-0005160162 00000 n 
+0003722681 00000 n 
+0005160156 00000 n 
 0000082782 00000 n 
 0000082846 00000 n 
-0003726832 00000 n 
-0005160037 00000 n 
+0003726826 00000 n 
+0005160031 00000 n 
 0000082902 00000 n 
 0000082940 00000 n 
-0003726896 00000 n 
-0005159953 00000 n 
+0003726890 00000 n 
+0005159947 00000 n 
 0000083001 00000 n 
 0000083036 00000 n 
-0003726960 00000 n 
-0005159854 00000 n 
+0003726954 00000 n 
+0005159848 00000 n 
 0000083097 00000 n 
 0000083137 00000 n 
-0003727154 00000 n 
-0005159755 00000 n 
+0003727148 00000 n 
+0005159749 00000 n 
 0000083198 00000 n 
 0000083253 00000 n 
-0003733224 00000 n 
-0005159630 00000 n 
+0003733218 00000 n 
+0005159624 00000 n 
 0000083314 00000 n 
 0000083339 00000 n 
-0003733288 00000 n 
-0005159546 00000 n 
+0003733282 00000 n 
+0005159540 00000 n 
 0000083398 00000 n 
 0000083429 00000 n 
-0003733807 00000 n 
-0005159447 00000 n 
+0003733801 00000 n 
+0005159441 00000 n 
 0000083488 00000 n 
 0000083533 00000 n 
-0003735785 00000 n 
-0005159363 00000 n 
+0003735779 00000 n 
+0005159357 00000 n 
 0000083592 00000 n 
 0000083631 00000 n 
-0003738746 00000 n 
-0005159223 00000 n 
+0003738740 00000 n 
+0005159217 00000 n 
 0000083680 00000 n 
 0000083738 00000 n 
-0003738872 00000 n 
-0005159098 00000 n 
+0003738866 00000 n 
+0005159092 00000 n 
 0000083789 00000 n 
 0000083838 00000 n 
-0003738936 00000 n 
-0005158973 00000 n 
+0003738930 00000 n 
+0005158967 00000 n 
 0000083894 00000 n 
 0000083925 00000 n 
-0003741789 00000 n 
-0005158889 00000 n 
+0003741783 00000 n 
+0005158883 00000 n 
 0000083986 00000 n 
 0000084020 00000 n 
-0003745683 00000 n 
-0005158790 00000 n 
+0003745677 00000 n 
+0005158784 00000 n 
 0000084081 00000 n 
 0000084135 00000 n 
-0003745747 00000 n 
-0005158691 00000 n 
+0003745741 00000 n 
+0005158685 00000 n 
 0000084196 00000 n 
 0000084230 00000 n 
-0003745811 00000 n 
-0005158592 00000 n 
+0003745805 00000 n 
+0005158586 00000 n 
 0000084291 00000 n 
 0000084338 00000 n 
-0003745875 00000 n 
-0005158508 00000 n 
+0003745869 00000 n 
+0005158502 00000 n 
 0000084399 00000 n 
 0000084443 00000 n 
-0003745939 00000 n 
-0005158424 00000 n 
+0003745933 00000 n 
+0005158418 00000 n 
 0000084499 00000 n 
 0000084546 00000 n 
-0003750450 00000 n 
-0005158299 00000 n 
+0003750444 00000 n 
+0005158293 00000 n 
 0000084597 00000 n 
 0000084635 00000 n 
-0003750642 00000 n 
-0005158215 00000 n 
+0003750636 00000 n 
+0005158209 00000 n 
 0000084691 00000 n 
 0000084732 00000 n 
-0003754516 00000 n 
-0005158131 00000 n 
+0003754510 00000 n 
+0005158125 00000 n 
 0000084788 00000 n 
 0000084839 00000 n 
-0003759744 00000 n 
-0005158006 00000 n 
+0003759738 00000 n 
+0005158000 00000 n 
 0000084888 00000 n 
 0000084948 00000 n 
-0003759870 00000 n 
-0005157922 00000 n 
+0003759864 00000 n 
+0005157916 00000 n 
 0000084999 00000 n 
 0000085041 00000 n 
-0003759934 00000 n 
-0005157782 00000 n 
+0003759928 00000 n 
+0005157776 00000 n 
 0000085092 00000 n 
 0000085142 00000 n 
-0003759998 00000 n 
-0005157657 00000 n 
+0003759992 00000 n 
+0005157651 00000 n 
 0000085198 00000 n 
 0000085245 00000 n 
-0003763693 00000 n 
-0005157573 00000 n 
+0003763687 00000 n 
+0005157567 00000 n 
 0000085306 00000 n 
 0000085349 00000 n 
-0003764665 00000 n 
-0005157489 00000 n 
+0003764659 00000 n 
+0005157483 00000 n 
 0000085410 00000 n 
 0000085462 00000 n 
-0003770885 00000 n 
-0005157390 00000 n 
+0003770879 00000 n 
+0005157384 00000 n 
 0000085518 00000 n 
 0000085560 00000 n 
-0003776024 00000 n 
-0005157291 00000 n 
+0003776018 00000 n 
+0005157285 00000 n 
 0000085616 00000 n 
 0000085662 00000 n 
-0003776793 00000 n 
-0005157207 00000 n 
+0003776787 00000 n 
+0005157201 00000 n 
 0000085718 00000 n 
 0000085781 00000 n 
-0003781002 00000 n 
-0005157082 00000 n 
+0003780996 00000 n 
+0005157076 00000 n 
 0000085832 00000 n 
 0000085876 00000 n 
-0003781066 00000 n 
-0005156998 00000 n 
+0003781060 00000 n 
+0005156992 00000 n 
 0000085932 00000 n 
 0000085971 00000 n 
-0003781130 00000 n 
-0005156899 00000 n 
+0003781124 00000 n 
+0005156893 00000 n 
 0000086027 00000 n 
 0000086063 00000 n 
-0003784218 00000 n 
-0005156800 00000 n 
+0003784212 00000 n 
+0005156794 00000 n 
 0000086119 00000 n 
 0000086154 00000 n 
-0003784282 00000 n 
-0005156701 00000 n 
+0003784276 00000 n 
+0005156695 00000 n 
 0000086210 00000 n 
 0000086248 00000 n 
-0003784346 00000 n 
-0005156602 00000 n 
+0003784340 00000 n 
+0005156596 00000 n 
 0000086304 00000 n 
 0000086340 00000 n 
-0003784410 00000 n 
-0005156503 00000 n 
+0003784404 00000 n 
+0005156497 00000 n 
 0000086396 00000 n 
 0000086432 00000 n 
-0003784474 00000 n 
-0005156404 00000 n 
+0003784468 00000 n 
+0005156398 00000 n 
 0000086488 00000 n 
 0000086522 00000 n 
-0003785793 00000 n 
-0005156320 00000 n 
+0003785787 00000 n 
+0005156314 00000 n 
 0000086578 00000 n 
 0000086623 00000 n 
-0003786679 00000 n 
-0005156179 00000 n 
+0003786673 00000 n 
+0005156173 00000 n 
 0000086668 00000 n 
 0000086706 00000 n 
-0003789955 00000 n 
-0005156054 00000 n 
+0003789949 00000 n 
+0005156048 00000 n 
 0000086755 00000 n 
 0000086795 00000 n 
-0003790083 00000 n 
-0005155970 00000 n 
+0003790077 00000 n 
+0005155964 00000 n 
 0000086846 00000 n 
 0000086879 00000 n 
-0003790147 00000 n 
-0005155871 00000 n 
+0003790141 00000 n 
+0005155865 00000 n 
 0000086930 00000 n 
 0000086962 00000 n 
-0003794816 00000 n 
-0005155787 00000 n 
+0003794810 00000 n 
+0005155781 00000 n 
 0000087013 00000 n 
 0000087043 00000 n 
-0003814678 00000 n 
-0005155647 00000 n 
+0003814672 00000 n 
+0005155641 00000 n 
 0000087092 00000 n 
 0000087149 00000 n 
-0003814806 00000 n 
-0005155522 00000 n 
+0003814800 00000 n 
+0005155516 00000 n 
 0000087200 00000 n 
 0000087238 00000 n 
-0003814870 00000 n 
-0005155438 00000 n 
+0003814864 00000 n 
+0005155432 00000 n 
 0000087294 00000 n 
 0000087342 00000 n 
-0003815129 00000 n 
-0005155339 00000 n 
+0003815123 00000 n 
+0005155333 00000 n 
 0000087398 00000 n 
 0000087426 00000 n 
-0003815193 00000 n 
-0005155240 00000 n 
+0003815187 00000 n 
+0005155234 00000 n 
 0000087482 00000 n 
 0000087511 00000 n 
-0003877022 00000 n 
-0005155115 00000 n 
+0003877016 00000 n 
+0005155109 00000 n 
 0000087567 00000 n 
 0000087615 00000 n 
-0003877086 00000 n 
-0005155031 00000 n 
+0003877080 00000 n 
+0005155025 00000 n 
 0000087676 00000 n 
 0000087744 00000 n 
-0003877150 00000 n 
-0005154947 00000 n 
+0003877144 00000 n 
+0005154941 00000 n 
 0000087805 00000 n 
 0000087869 00000 n 
-0003877214 00000 n 
-0005154848 00000 n 
+0003877208 00000 n 
+0005154842 00000 n 
 0000087920 00000 n 
 0000087952 00000 n 
-0003880982 00000 n 
-0005154749 00000 n 
+0003880976 00000 n 
+0005154743 00000 n 
 0000088003 00000 n 
 0000088049 00000 n 
-0003881046 00000 n 
-0005154665 00000 n 
+0003881040 00000 n 
+0005154659 00000 n 
 0000088100 00000 n 
 0000088153 00000 n 
-0003884992 00000 n 
-0005154525 00000 n 
+0003884986 00000 n 
+0005154519 00000 n 
 0000088202 00000 n 
 0000088237 00000 n 
-0003885120 00000 n 
-0005154441 00000 n 
+0003885114 00000 n 
+0005154435 00000 n 
 0000088288 00000 n 
 0000088321 00000 n 
-0003885183 00000 n 
-0005154342 00000 n 
+0003885177 00000 n 
+0005154336 00000 n 
 0000088372 00000 n 
 0000088412 00000 n 
-0003885247 00000 n 
-0005154202 00000 n 
+0003885241 00000 n 
+0005154196 00000 n 
 0000088463 00000 n 
 0000088496 00000 n 
-0003890549 00000 n 
-0005154133 00000 n 
+0003890543 00000 n 
+0005154127 00000 n 
 0000088552 00000 n 
 0000088602 00000 n 
-0003891001 00000 n 
-0005154034 00000 n 
+0003890995 00000 n 
+0005154028 00000 n 
 0000088653 00000 n 
 0000088689 00000 n 
-0003893640 00000 n 
-0005153935 00000 n 
+0003893634 00000 n 
+0005153929 00000 n 
 0000088740 00000 n 
 0000088791 00000 n 
-0003893964 00000 n 
-0005153851 00000 n 
+0003893958 00000 n 
+0005153845 00000 n 
 0000088842 00000 n 
 0000088870 00000 n 
-0003896460 00000 n 
-0005153726 00000 n 
+0003896454 00000 n 
+0005153720 00000 n 
 0000088919 00000 n 
 0000088958 00000 n 
-0003896586 00000 n 
-0005153642 00000 n 
+0003896580 00000 n 
+0005153636 00000 n 
 0000089009 00000 n 
 0000089051 00000 n 
-0003896650 00000 n 
-0005153558 00000 n 
+0003896644 00000 n 
+0005153552 00000 n 
 0000089102 00000 n 
 0000089141 00000 n 
-0003900078 00000 n 
-0005153431 00000 n 
+0003900072 00000 n 
+0005153425 00000 n 
 0000089186 00000 n 
 0000089227 00000 n 
-0003903384 00000 n 
-0005153306 00000 n 
+0003903378 00000 n 
+0005153300 00000 n 
 0000089276 00000 n 
 0000089317 00000 n 
-0003903512 00000 n 
-0005153181 00000 n 
+0003903506 00000 n 
+0005153175 00000 n 
 0000089368 00000 n 
 0000089428 00000 n 
-0003903576 00000 n 
-0005153097 00000 n 
+0003903570 00000 n 
+0005153091 00000 n 
 0000089484 00000 n 
 0000089517 00000 n 
-0003903640 00000 n 
-0005152972 00000 n 
+0003903634 00000 n 
+0005152966 00000 n 
 0000089573 00000 n 
 0000089624 00000 n 
-0003903704 00000 n 
-0005152888 00000 n 
+0003903698 00000 n 
+0005152882 00000 n 
 0000089685 00000 n 
 0000089724 00000 n 
-0003903768 00000 n 
-0005152804 00000 n 
+0003903762 00000 n 
+0005152798 00000 n 
 0000089785 00000 n 
 0000089827 00000 n 
-0003908345 00000 n 
-0005152705 00000 n 
+0003908339 00000 n 
+0005152699 00000 n 
 0000089878 00000 n 
 0000089944 00000 n 
-0003908409 00000 n 
-0005152606 00000 n 
+0003908403 00000 n 
+0005152600 00000 n 
 0000089995 00000 n 
 0000090047 00000 n 
-0003912376 00000 n 
-0005152466 00000 n 
+0003912370 00000 n 
+0005152460 00000 n 
 0000090098 00000 n 
 0000090140 00000 n 
-0003913540 00000 n 
-0005152356 00000 n 
+0003913534 00000 n 
+0005152350 00000 n 
 0000090196 00000 n 
 0000090262 00000 n 
-0003916612 00000 n 
-0005152272 00000 n 
+0003916606 00000 n 
+0005152266 00000 n 
 0000090323 00000 n 
 0000090387 00000 n 
-0003916676 00000 n 
-0005152173 00000 n 
+0003916670 00000 n 
+0005152167 00000 n 
 0000090448 00000 n 
 0000090519 00000 n 
-0003916740 00000 n 
-0005152089 00000 n 
+0003916734 00000 n 
+0005152083 00000 n 
 0000090580 00000 n 
 0000090632 00000 n 
-0003916804 00000 n 
-0005151964 00000 n 
+0003916798 00000 n 
+0005151958 00000 n 
 0000090683 00000 n 
 0000090739 00000 n 
-0003916931 00000 n 
-0005151880 00000 n 
+0003916925 00000 n 
+0005151874 00000 n 
 0000090795 00000 n 
 0000090840 00000 n 
-0003920775 00000 n 
-0005151755 00000 n 
+0003920769 00000 n 
+0005151749 00000 n 
 0000090896 00000 n 
 0000090955 00000 n 
-0003921164 00000 n 
-0005151671 00000 n 
+0003921158 00000 n 
+0005151665 00000 n 
 0000091016 00000 n 
 0000091069 00000 n 
-0003924226 00000 n 
-0005151587 00000 n 
+0003924220 00000 n 
+0005151581 00000 n 
 0000091130 00000 n 
 0000091187 00000 n 
-0003927871 00000 n 
-0005151447 00000 n 
+0003927865 00000 n 
+0005151441 00000 n 
 0000091236 00000 n 
 0000091268 00000 n 
-0003927999 00000 n 
-0005151363 00000 n 
+0003927993 00000 n 
+0005151357 00000 n 
 0000091319 00000 n 
 0000091344 00000 n 
-0003928063 00000 n 
-0005151264 00000 n 
+0003928057 00000 n 
+0005151258 00000 n 
 0000091395 00000 n 
 0000091424 00000 n 
-0003928127 00000 n 
-0005151165 00000 n 
+0003928121 00000 n 
+0005151159 00000 n 
 0000091475 00000 n 
 0000091500 00000 n 
-0003933373 00000 n 
-0005151066 00000 n 
+0003933367 00000 n 
+0005151060 00000 n 
 0000091551 00000 n 
 0000091585 00000 n 
-0003936245 00000 n 
-0005150967 00000 n 
+0003936239 00000 n 
+0005150961 00000 n 
 0000091636 00000 n 
 0000091683 00000 n 
-0003936309 00000 n 
-0005150842 00000 n 
+0003936303 00000 n 
+0005150836 00000 n 
 0000091734 00000 n 
 0000091762 00000 n 
-0003936373 00000 n 
-0005150758 00000 n 
+0003936367 00000 n 
+0005150752 00000 n 
 0000091818 00000 n 
 0000091859 00000 n 
-0003936437 00000 n 
-0005150674 00000 n 
+0003936431 00000 n 
+0005150668 00000 n 
 0000091915 00000 n 
 0000091956 00000 n 
-0003940354 00000 n 
-0005150534 00000 n 
+0003940348 00000 n 
+0005150528 00000 n 
 0000092005 00000 n 
 0000092054 00000 n 
-0003940482 00000 n 
-0005150450 00000 n 
+0003940476 00000 n 
+0005150444 00000 n 
 0000092105 00000 n 
 0000092143 00000 n 
-0003940546 00000 n 
-0005150310 00000 n 
+0003940540 00000 n 
+0005150304 00000 n 
 0000092194 00000 n 
 0000092225 00000 n 
-0003940610 00000 n 
-0005150226 00000 n 
+0003940604 00000 n 
+0005150220 00000 n 
 0000092281 00000 n 
 0000092346 00000 n 
-0003945335 00000 n 
-0005150127 00000 n 
+0003945329 00000 n 
+0005150121 00000 n 
 0000092402 00000 n 
 0000092457 00000 n 
-0003945657 00000 n 
-0005150043 00000 n 
+0003945651 00000 n 
+0005150037 00000 n 
 0000092513 00000 n 
 0000092574 00000 n 
-0003945721 00000 n 
-0005149903 00000 n 
+0003945715 00000 n 
+0005149897 00000 n 
 0000092625 00000 n 
 0000092668 00000 n 
-0003945785 00000 n 
-0005149819 00000 n 
+0003945779 00000 n 
+0005149813 00000 n 
 0000092724 00000 n 
 0000092779 00000 n 
-0003945849 00000 n 
-0005149720 00000 n 
+0003945843 00000 n 
+0005149714 00000 n 
 0000092835 00000 n 
 0000092895 00000 n 
-0003945913 00000 n 
-0005149621 00000 n 
+0003945907 00000 n 
+0005149615 00000 n 
 0000092951 00000 n 
 0000093024 00000 n 
-0003949571 00000 n 
-0005149522 00000 n 
+0003949565 00000 n 
+0005149516 00000 n 
 0000093080 00000 n 
 0000093126 00000 n 
-0003949635 00000 n 
-0005149423 00000 n 
+0003949629 00000 n 
+0005149417 00000 n 
 0000093182 00000 n 
 0000093233 00000 n 
-0003949699 00000 n 
-0005149339 00000 n 
+0003949693 00000 n 
+0005149333 00000 n 
 0000093289 00000 n 
 0000093327 00000 n 
-0003949828 00000 n 
-0005149199 00000 n 
+0003949822 00000 n 
+0005149193 00000 n 
 0000093378 00000 n 
 0000093412 00000 n 
-0003949892 00000 n 
-0005149130 00000 n 
+0003949886 00000 n 
+0005149124 00000 n 
 0000093468 00000 n 
 0000093506 00000 n 
-0003949956 00000 n 
-0005149031 00000 n 
+0003949950 00000 n 
+0005149025 00000 n 
 0000093557 00000 n 
 0000093605 00000 n 
-0003953727 00000 n 
-0005148947 00000 n 
+0003953721 00000 n 
+0005148941 00000 n 
 0000093656 00000 n 
 0000093691 00000 n 
-0003956603 00000 n 
-0005148806 00000 n 
+0003956597 00000 n 
+0005148800 00000 n 
 0000093740 00000 n 
 0000093785 00000 n 
-0003956729 00000 n 
-0005148722 00000 n 
+0003956723 00000 n 
+0005148716 00000 n 
 0000093836 00000 n 
 0000093868 00000 n 
-0003956793 00000 n 
-0005148623 00000 n 
+0003956787 00000 n 
+0005148617 00000 n 
 0000093919 00000 n 
 0000093954 00000 n 
-0003960061 00000 n 
-0005148524 00000 n 
+0003960055 00000 n 
+0005148518 00000 n 
 0000094005 00000 n 
 0000094035 00000 n 
-0003960125 00000 n 
-0005148425 00000 n 
+0003960119 00000 n 
+0005148419 00000 n 
 0000094086 00000 n 
 0000094115 00000 n 
-0003960189 00000 n 
-0005148326 00000 n 
+0003960183 00000 n 
+0005148320 00000 n 
 0000094166 00000 n 
 0000094196 00000 n 
-0003960253 00000 n 
-0005148227 00000 n 
+0003960247 00000 n 
+0005148221 00000 n 
 0000094247 00000 n 
 0000094276 00000 n 
-0003960317 00000 n 
-0005148128 00000 n 
+0003960311 00000 n 
+0005148122 00000 n 
 0000094327 00000 n 
 0000094357 00000 n 
-0003960379 00000 n 
-0005148029 00000 n 
+0003960373 00000 n 
+0005148023 00000 n 
 0000094408 00000 n 
 0000094440 00000 n 
-0003964054 00000 n 
-0005147930 00000 n 
+0003964048 00000 n 
+0005147924 00000 n 
 0000094491 00000 n 
 0000094525 00000 n 
-0003964118 00000 n 
-0005147831 00000 n 
+0003964112 00000 n 
+0005147825 00000 n 
 0000094577 00000 n 
 0000094652 00000 n 
-0003964182 00000 n 
-0005147732 00000 n 
+0003964176 00000 n 
+0005147726 00000 n 
 0000094704 00000 n 
 0000094742 00000 n 
-0003964246 00000 n 
-0005147648 00000 n 
+0003964240 00000 n 
+0005147642 00000 n 
 0000094794 00000 n 
 0000094845 00000 n 
-0003968417 00000 n 
-0005147508 00000 n 
+0003968411 00000 n 
+0005147502 00000 n 
 0000094894 00000 n 
 0000094948 00000 n 
-0003968545 00000 n 
-0005147424 00000 n 
+0003968539 00000 n 
+0005147418 00000 n 
 0000094999 00000 n 
 0000095032 00000 n 
-0003968674 00000 n 
-0005147284 00000 n 
+0003968668 00000 n 
+0005147278 00000 n 
 0000095083 00000 n 
 0000095115 00000 n 
-0003968803 00000 n 
-0005147200 00000 n 
+0003968797 00000 n 
+0005147194 00000 n 
 0000095171 00000 n 
 0000095228 00000 n 
-0003974787 00000 n 
-0005147101 00000 n 
+0003974781 00000 n 
+0005147095 00000 n 
 0000095284 00000 n 
 0000095338 00000 n 
-0003986536 00000 n 
-0005147017 00000 n 
+0003986530 00000 n 
+0005147011 00000 n 
 0000095394 00000 n 
 0000095442 00000 n 
-0003987898 00000 n 
-0005146918 00000 n 
+0003987892 00000 n 
+0005146912 00000 n 
 0000095493 00000 n 
 0000095521 00000 n 
-0003994666 00000 n 
-0005146834 00000 n 
+0003994660 00000 n 
+0005146828 00000 n 
 0000095572 00000 n 
 0000095608 00000 n 
-0003998814 00000 n 
-0005146694 00000 n 
+0003998808 00000 n 
+0005146688 00000 n 
 0000095657 00000 n 
 0000095691 00000 n 
-0003998878 00000 n 
-0005146610 00000 n 
+0003998872 00000 n 
+0005146604 00000 n 
 0000095742 00000 n 
 0000095775 00000 n 
-0004001453 00000 n 
-0005146526 00000 n 
+0004001447 00000 n 
+0005146520 00000 n 
 0000095826 00000 n 
 0000095865 00000 n 
-0004005066 00000 n 
-0005146386 00000 n 
+0004005060 00000 n 
+0005146380 00000 n 
 0000095914 00000 n 
 0000095967 00000 n 
-0004005194 00000 n 
-0005146302 00000 n 
+0004005188 00000 n 
+0005146296 00000 n 
 0000096018 00000 n 
 0000096060 00000 n 
-0004005452 00000 n 
-0005146177 00000 n 
+0004005446 00000 n 
+0005146171 00000 n 
 0000096111 00000 n 
 0000096153 00000 n 
-0004008970 00000 n 
-0005146093 00000 n 
+0004008964 00000 n 
+0005146087 00000 n 
 0000096209 00000 n 
 0000096241 00000 n 
-0004023106 00000 n 
-0005146009 00000 n 
+0004023100 00000 n 
+0005146003 00000 n 
 0000096297 00000 n 
 0000096329 00000 n 
-0004029207 00000 n 
-0005145910 00000 n 
+0004029201 00000 n 
+0005145904 00000 n 
 0000096378 00000 n 
 0000096435 00000 n 
-0004065974 00000 n 
-0005145811 00000 n 
+0004065968 00000 n 
+0005145805 00000 n 
 0000096484 00000 n 
 0000096513 00000 n 
-0004097519 00000 n 
-0005145727 00000 n 
+0004097513 00000 n 
+0005145721 00000 n 
 0000096562 00000 n 
 0000096588 00000 n 
 0000097136 00000 n 
 0000097385 00000 n 
 0000096643 00000 n 
 0000097259 00000 n 
-0005131042 00000 n 
-0005130318 00000 n 
+0005131036 00000 n 
+0005130312 00000 n 
 0000097322 00000 n 
-0005129960 00000 n 
-0005131406 00000 n 
-0000098941 00000 n 
-0000098755 00000 n 
+0005129954 00000 n 
+0005131400 00000 n 
+0000098935 00000 n 
+0000098749 00000 n 
 0000097487 00000 n 
-0000098878 00000 n 
-0005130495 00000 n 
-0000100957 00000 n 
-0000101107 00000 n 
-0000101258 00000 n 
-0000101412 00000 n 
-0000101566 00000 n 
-0000101725 00000 n 
-0000101884 00000 n 
-0000102043 00000 n 
-0000102202 00000 n 
-0000102366 00000 n 
-0000102525 00000 n 
-0000102679 00000 n 
-0000102832 00000 n 
-0000102986 00000 n 
-0000103145 00000 n 
-0000103304 00000 n 
-0000103458 00000 n 
-0000103617 00000 n 
-0000103776 00000 n 
-0000103935 00000 n 
-0000104088 00000 n 
-0000104243 00000 n 
-0000104398 00000 n 
-0000104552 00000 n 
-0000104711 00000 n 
-0000104875 00000 n 
-0000105039 00000 n 
-0000105202 00000 n 
-0000107594 00000 n 
-0000107752 00000 n 
-0000107916 00000 n 
-0000108075 00000 n 
-0000105490 00000 n 
-0000100570 00000 n 
-0000099057 00000 n 
-0000105364 00000 n 
-0000105427 00000 n 
-0005130677 00000 n 
-0000108239 00000 n 
-0000108403 00000 n 
-0000108565 00000 n 
-0000108726 00000 n 
-0000108876 00000 n 
-0000109028 00000 n 
-0000109182 00000 n 
-0000109335 00000 n 
-0000109489 00000 n 
-0000109648 00000 n 
-0000109812 00000 n 
-0000109971 00000 n 
-0000110134 00000 n 
-0000110293 00000 n 
-0000110457 00000 n 
-0000110616 00000 n 
-0000110780 00000 n 
-0000110939 00000 n 
-0000111102 00000 n 
-0000111256 00000 n 
-0000111410 00000 n 
-0000111569 00000 n 
-0000111728 00000 n 
-0000111886 00000 n 
-0000112045 00000 n 
-0000112204 00000 n 
-0000112356 00000 n 
-0000112510 00000 n 
-0000112662 00000 n 
-0000112816 00000 n 
-0000112975 00000 n 
-0000113133 00000 n 
-0000115538 00000 n 
-0000115691 00000 n 
-0000115845 00000 n 
-0000116004 00000 n 
-0000116168 00000 n 
-0000113348 00000 n 
-0000107135 00000 n 
-0000105606 00000 n 
-0000113285 00000 n 
-0000116332 00000 n 
-0000116496 00000 n 
-0000116654 00000 n 
-0000116808 00000 n 
-0000116967 00000 n 
-0000117126 00000 n 
-0000117285 00000 n 
-0000117443 00000 n 
-0000117602 00000 n 
-0000117761 00000 n 
-0000117920 00000 n 
-0000118072 00000 n 
-0000118225 00000 n 
-0000118379 00000 n 
-0000118538 00000 n 
-0000118702 00000 n 
-0000118861 00000 n 
-0000119020 00000 n 
-0000119179 00000 n 
-0000119338 00000 n 
-0000119502 00000 n 
-0000119666 00000 n 
-0000119820 00000 n 
-0000119978 00000 n 
-0000120131 00000 n 
-0000120290 00000 n 
-0000120449 00000 n 
-0000120608 00000 n 
-0000122986 00000 n 
-0000123137 00000 n 
-0000123291 00000 n 
-0000123445 00000 n 
-0000123604 00000 n 
-0000123763 00000 n 
-0000123922 00000 n 
-0000124080 00000 n 
-0000124244 00000 n 
-0000120830 00000 n 
-0000115106 00000 n 
-0000113450 00000 n 
-0000120767 00000 n 
-0000124408 00000 n 
-0000124572 00000 n 
-0000124726 00000 n 
-0000124884 00000 n 
-0000125043 00000 n 
-0000125197 00000 n 
-0000125356 00000 n 
-0000125515 00000 n 
-0000125674 00000 n 
-0000125834 00000 n 
-0000125992 00000 n 
-0000126151 00000 n 
-0000126310 00000 n 
-0000126464 00000 n 
-0000126618 00000 n 
-0000126777 00000 n 
-0000126936 00000 n 
-0000127095 00000 n 
-0000127247 00000 n 
-0000127400 00000 n 
-0000127553 00000 n 
-0000127707 00000 n 
-0000127866 00000 n 
-0000128025 00000 n 
-0000130483 00000 n 
-0000130634 00000 n 
-0000130788 00000 n 
-0000130942 00000 n 
-0000131101 00000 n 
-0000131265 00000 n 
-0000131429 00000 n 
-0000131593 00000 n 
-0000131752 00000 n 
-0000128241 00000 n 
-0000122554 00000 n 
-0000120932 00000 n 
-0000128178 00000 n 
-0005129778 00000 n 
-0005129600 00000 n 
-0000131911 00000 n 
-0000132065 00000 n 
-0000132215 00000 n 
-0000132367 00000 n 
-0000132521 00000 n 
-0000132675 00000 n 
-0000132834 00000 n 
-0000132992 00000 n 
-0000133151 00000 n 
-0000133310 00000 n 
-0000133469 00000 n 
-0000133622 00000 n 
-0000133776 00000 n 
-0000133931 00000 n 
-0000134086 00000 n 
-0000134246 00000 n 
-0000134406 00000 n 
-0000134565 00000 n 
-0000134720 00000 n 
-0000134880 00000 n 
-0000135040 00000 n 
-0000135200 00000 n 
-0000135360 00000 n 
-0000135518 00000 n 
-0000135678 00000 n 
-0000135838 00000 n 
-0000135997 00000 n 
-0000138637 00000 n 
-0000138797 00000 n 
-0000138958 00000 n 
-0000139118 00000 n 
-0000139274 00000 n 
-0000136213 00000 n 
-0000130024 00000 n 
-0000128371 00000 n 
-0000136150 00000 n 
-0005131532 00000 n 
-0000139435 00000 n 
-0000139596 00000 n 
-0000139751 00000 n 
-0000139912 00000 n 
-0000140072 00000 n 
-0000140233 00000 n 
-0000140399 00000 n 
-0000140555 00000 n 
-0000140716 00000 n 
-0000140877 00000 n 
-0000141038 00000 n 
-0000141199 00000 n 
-0000141360 00000 n 
-0000141514 00000 n 
-0000141670 00000 n 
-0000141831 00000 n 
-0000141991 00000 n 
-0000142147 00000 n 
-0000142307 00000 n 
-0000142473 00000 n 
-0000142639 00000 n 
-0000142800 00000 n 
-0000142961 00000 n 
-0000143122 00000 n 
-0000143287 00000 n 
-0000143448 00000 n 
-0000143604 00000 n 
-0000143765 00000 n 
-0000143926 00000 n 
-0000144092 00000 n 
-0000144256 00000 n 
-0000144420 00000 n 
-0000144583 00000 n 
-0000147238 00000 n 
-0000147407 00000 n 
-0000147571 00000 n 
-0000147737 00000 n 
-0000147893 00000 n 
-0000144808 00000 n 
-0000138160 00000 n 
-0000136315 00000 n 
-0000144745 00000 n 
-0000148054 00000 n 
-0000148215 00000 n 
-0000148375 00000 n 
-0000148536 00000 n 
-0000148702 00000 n 
-0000148868 00000 n 
-0000149034 00000 n 
-0000149199 00000 n 
-0000149365 00000 n 
-0000149531 00000 n 
-0000149697 00000 n 
-0000149863 00000 n 
-0000150029 00000 n 
-0000150192 00000 n 
-0000150358 00000 n 
-0000150514 00000 n 
-0000150675 00000 n 
-0000150836 00000 n 
-0000150990 00000 n 
-0000151146 00000 n 
-0000151302 00000 n 
-0000151463 00000 n 
-0000151624 00000 n 
-0000151784 00000 n 
-0000151950 00000 n 
-0000152111 00000 n 
-0000152272 00000 n 
-0000152428 00000 n 
-0000152589 00000 n 
-0000152750 00000 n 
-0000152905 00000 n 
-0000153066 00000 n 
-0000155582 00000 n 
-0000155735 00000 n 
-0000155891 00000 n 
-0000156047 00000 n 
-0000156203 00000 n 
-0000153289 00000 n 
-0000146770 00000 n 
-0000144910 00000 n 
-0000153226 00000 n 
-0000156364 00000 n 
-0000156530 00000 n 
-0000156696 00000 n 
-0000156862 00000 n 
-0000157027 00000 n 
-0000157188 00000 n 
-0000157349 00000 n 
-0000157515 00000 n 
-0000157669 00000 n 
-0000157830 00000 n 
-0000157991 00000 n 
-0000158152 00000 n 
-0000158313 00000 n 
-0000158469 00000 n 
-0000158625 00000 n 
-0000158785 00000 n 
-0000158945 00000 n 
-0000159101 00000 n 
-0000159257 00000 n 
-0000159417 00000 n 
-0000159577 00000 n 
-0000159738 00000 n 
-0000159904 00000 n 
-0000160070 00000 n 
-0000160236 00000 n 
-0000160402 00000 n 
-0000160563 00000 n 
-0000160718 00000 n 
-0000160875 00000 n 
-0000161032 00000 n 
-0000161189 00000 n 
-0000161345 00000 n 
-0000161507 00000 n 
-0000161668 00000 n 
-0000164305 00000 n 
-0000164458 00000 n 
-0000164614 00000 n 
-0000164775 00000 n 
-0000161886 00000 n 
-0000155096 00000 n 
-0000153419 00000 n 
-0000161823 00000 n 
-0000164936 00000 n 
-0000165097 00000 n 
-0000165258 00000 n 
-0000165413 00000 n 
-0000165574 00000 n 
-0000165740 00000 n 
-0000165906 00000 n 
-0000166067 00000 n 
-0000166227 00000 n 
-0000166388 00000 n 
-0000166554 00000 n 
-0000166720 00000 n 
-0000166874 00000 n 
-0000167029 00000 n 
-0000167190 00000 n 
-0000167351 00000 n 
-0000167512 00000 n 
-0000167668 00000 n 
-0000167824 00000 n 
-0000167985 00000 n 
-0000168139 00000 n 
-0000168295 00000 n 
-0000168451 00000 n 
-0000168611 00000 n 
-0000168770 00000 n 
-0000168931 00000 n 
-0000169097 00000 n 
-0000169253 00000 n 
-0000169414 00000 n 
-0000169575 00000 n 
-0000169735 00000 n 
-0000169891 00000 n 
-0000170052 00000 n 
-0000172701 00000 n 
-0000172866 00000 n 
-0000173022 00000 n 
-0000173182 00000 n 
-0000173343 00000 n 
-0000170279 00000 n 
-0000163837 00000 n 
-0000161988 00000 n 
-0000170216 00000 n 
-0000173504 00000 n 
-0000173665 00000 n 
-0000173829 00000 n 
-0000173995 00000 n 
-0000174155 00000 n 
-0000174316 00000 n 
-0000174477 00000 n 
-0000174638 00000 n 
-0000174803 00000 n 
-0000174969 00000 n 
-0000175135 00000 n 
-0000175291 00000 n 
-0000175452 00000 n 
-0000175613 00000 n 
-0000175773 00000 n 
-0000175927 00000 n 
-0000176082 00000 n 
-0000176238 00000 n 
-0000176398 00000 n 
-0000176564 00000 n 
-0000176730 00000 n 
-0000176896 00000 n 
-0000177061 00000 n 
-0000177227 00000 n 
-0000177392 00000 n 
-0000177558 00000 n 
-0000177724 00000 n 
-0000177890 00000 n 
-0000178046 00000 n 
-0000178207 00000 n 
-0000178373 00000 n 
-0000178539 00000 n 
-0000178694 00000 n 
-0000181166 00000 n 
-0000181326 00000 n 
-0000181482 00000 n 
-0000181638 00000 n 
-0000181799 00000 n 
-0000178916 00000 n 
-0000172224 00000 n 
-0000170381 00000 n 
-0000178853 00000 n 
-0005131222 00000 n 
-0000181960 00000 n 
-0000182121 00000 n 
-0000182276 00000 n 
-0000182430 00000 n 
-0000182586 00000 n 
-0000182742 00000 n 
-0000182897 00000 n 
-0000183058 00000 n 
-0000183219 00000 n 
-0000183380 00000 n 
-0000183541 00000 n 
-0000183702 00000 n 
-0000183862 00000 n 
-0000184018 00000 n 
-0000184174 00000 n 
-0000184335 00000 n 
-0000184496 00000 n 
-0000184650 00000 n 
-0000184806 00000 n 
-0000184962 00000 n 
-0000185118 00000 n 
-0000185279 00000 n 
-0000185439 00000 n 
-0000185596 00000 n 
-0000185752 00000 n 
-0000185913 00000 n 
-0000186074 00000 n 
-0000186230 00000 n 
-0000186386 00000 n 
-0000186546 00000 n 
-0000189236 00000 n 
-0000189389 00000 n 
-0000189545 00000 n 
-0000189700 00000 n 
-0000189861 00000 n 
-0000190014 00000 n 
-0000186770 00000 n 
-0000180716 00000 n 
-0000179032 00000 n 
-0000186707 00000 n 
-0005131658 00000 n 
-0000190170 00000 n 
-0000190326 00000 n 
-0000190487 00000 n 
-0000190648 00000 n 
-0000190804 00000 n 
-0000190964 00000 n 
-0000191125 00000 n 
-0000191281 00000 n 
-0000191442 00000 n 
-0000191607 00000 n 
-0000191773 00000 n 
-0000191938 00000 n 
-0000192104 00000 n 
-0000192270 00000 n 
-0000192436 00000 n 
-0000192591 00000 n 
-0000192752 00000 n 
-0000192912 00000 n 
-0000193073 00000 n 
-0000193234 00000 n 
-0000193395 00000 n 
-0000193550 00000 n 
-0000193711 00000 n 
-0000193871 00000 n 
-0000194037 00000 n 
-0000194203 00000 n 
-0000194369 00000 n 
-0000194535 00000 n 
-0000194701 00000 n 
-0000194867 00000 n 
-0000195033 00000 n 
-0000195198 00000 n 
-0000198033 00000 n 
-0000198188 00000 n 
-0000198349 00000 n 
-0000198509 00000 n 
-0000198670 00000 n 
-0000195425 00000 n 
-0000188759 00000 n 
-0000186872 00000 n 
-0000195362 00000 n 
-0000198831 00000 n 
-0000198987 00000 n 
-0000199147 00000 n 
-0000199308 00000 n 
-0000199468 00000 n 
-0000199629 00000 n 
-0000199790 00000 n 
-0000199951 00000 n 
-0000200112 00000 n 
-0000200268 00000 n 
-0000200429 00000 n 
-0000200590 00000 n 
-0000200751 00000 n 
-0000200912 00000 n 
-0000201069 00000 n 
-0000201226 00000 n 
-0000201383 00000 n 
-0000201540 00000 n 
-0000201697 00000 n 
-0000201859 00000 n 
-0000202021 00000 n 
-0000202175 00000 n 
-0000202330 00000 n 
-0000202491 00000 n 
-0000202651 00000 n 
-0000202807 00000 n 
-0000202968 00000 n 
-0000203129 00000 n 
-0000203290 00000 n 
-0000203446 00000 n 
-0000203607 00000 n 
-0000203768 00000 n 
-0000203928 00000 n 
-0000206600 00000 n 
-0000206760 00000 n 
-0000206916 00000 n 
-0000207077 00000 n 
-0000207238 00000 n 
-0000204150 00000 n 
-0000197556 00000 n 
-0000195527 00000 n 
-0000204087 00000 n 
-0000207399 00000 n 
-0000207560 00000 n 
-0000207721 00000 n 
-0000207882 00000 n 
-0000208042 00000 n 
-0000208203 00000 n 
-0000208359 00000 n 
-0000208520 00000 n 
-0000208680 00000 n 
-0000208841 00000 n 
-0000209007 00000 n 
-0000209168 00000 n 
-0000209329 00000 n 
-0000209490 00000 n 
-0000209651 00000 n 
-0000209811 00000 n 
-0000209971 00000 n 
-0000210133 00000 n 
-0000210295 00000 n 
-0000210456 00000 n 
-0000210617 00000 n 
-0000210779 00000 n 
-0000210941 00000 n 
-0000211103 00000 n 
-0000211265 00000 n 
-0000211427 00000 n 
-0000211589 00000 n 
-0000211744 00000 n 
-0000211905 00000 n 
-0000212066 00000 n 
-0000212227 00000 n 
-0000212382 00000 n 
-0000212543 00000 n 
-0000212703 00000 n 
-0000215609 00000 n 
-0000215769 00000 n 
-0000215930 00000 n 
-0000216086 00000 n 
-0000216247 00000 n 
-0000212920 00000 n 
-0000206114 00000 n 
-0000204280 00000 n 
-0000212857 00000 n 
-0000216408 00000 n 
-0000216569 00000 n 
-0000216730 00000 n 
-0000216887 00000 n 
-0000217048 00000 n 
-0000217210 00000 n 
-0000217372 00000 n 
-0000217534 00000 n 
-0000217695 00000 n 
-0000217857 00000 n 
-0000218019 00000 n 
-0000218181 00000 n 
-0000218343 00000 n 
-0000218506 00000 n 
-0000218669 00000 n 
-0000218831 00000 n 
-0000218993 00000 n 
-0000219156 00000 n 
-0000219319 00000 n 
-0000219481 00000 n 
-0000219637 00000 n 
-0000219799 00000 n 
-0000219961 00000 n 
-0000220123 00000 n 
-0000220285 00000 n 
-0000220447 00000 n 
-0000220609 00000 n 
-0000220765 00000 n 
-0000220927 00000 n 
-0000221089 00000 n 
-0000221251 00000 n 
-0000221413 00000 n 
-0000221569 00000 n 
-0000221730 00000 n 
-0000224584 00000 n 
-0000224750 00000 n 
-0000224917 00000 n 
-0000225084 00000 n 
-0000225251 00000 n 
-0000221958 00000 n 
-0000215123 00000 n 
-0000213050 00000 n 
-0000221895 00000 n 
-0000225418 00000 n 
-0000225585 00000 n 
-0000225752 00000 n 
-0000225914 00000 n 
-0000226070 00000 n 
-0000226232 00000 n 
-0000226394 00000 n 
-0000226556 00000 n 
-0000226716 00000 n 
-0000226878 00000 n 
-0000227040 00000 n 
-0000227202 00000 n 
-0000227359 00000 n 
-0000227516 00000 n 
-0000227678 00000 n 
-0000227839 00000 n 
-0000228000 00000 n 
-0000228157 00000 n 
-0000228314 00000 n 
-0000228470 00000 n 
-0000228631 00000 n 
-0000228793 00000 n 
-0000228955 00000 n 
-0000229117 00000 n 
-0000229279 00000 n 
-0000229441 00000 n 
-0000229603 00000 n 
-0000229764 00000 n 
-0000229926 00000 n 
-0000230089 00000 n 
-0000230252 00000 n 
-0000230414 00000 n 
-0000230577 00000 n 
-0000230739 00000 n 
-0000233350 00000 n 
-0000233512 00000 n 
-0000233675 00000 n 
-0000233838 00000 n 
-0000234001 00000 n 
-0000230963 00000 n 
-0000224098 00000 n 
-0000222088 00000 n 
-0000230900 00000 n 
-0000234164 00000 n 
-0000234321 00000 n 
-0000234475 00000 n 
-0000234631 00000 n 
-0000234787 00000 n 
-0000234943 00000 n 
-0000235103 00000 n 
-0000235264 00000 n 
-0000235425 00000 n 
-0000235591 00000 n 
-0000235752 00000 n 
-0000235913 00000 n 
-0000236073 00000 n 
-0000236234 00000 n 
-0000236400 00000 n 
-0000236556 00000 n 
-0000236717 00000 n 
-0000236878 00000 n 
-0000237039 00000 n 
-0000237193 00000 n 
-0000237349 00000 n 
-0000237505 00000 n 
-0000237660 00000 n 
-0000237819 00000 n 
-0000237980 00000 n 
-0000238136 00000 n 
-0000238297 00000 n 
-0000238457 00000 n 
-0000238618 00000 n 
-0000238778 00000 n 
-0000238939 00000 n 
-0000239100 00000 n 
-0000241663 00000 n 
-0000241823 00000 n 
-0000241984 00000 n 
-0000242145 00000 n 
-0000242311 00000 n 
-0000239317 00000 n 
-0000232882 00000 n 
-0000231065 00000 n 
-0000239254 00000 n 
-0005131784 00000 n 
-0000242477 00000 n 
-0000242643 00000 n 
-0000242808 00000 n 
-0000242974 00000 n 
-0000243140 00000 n 
-0000243304 00000 n 
-0000243468 00000 n 
-0000243631 00000 n 
-0000243797 00000 n 
-0000243961 00000 n 
-0000244125 00000 n 
-0000244281 00000 n 
-0000244437 00000 n 
-0000244594 00000 n 
-0000244755 00000 n 
-0000244909 00000 n 
-0000245065 00000 n 
-0000245221 00000 n 
-0000245377 00000 n 
-0000245538 00000 n 
-0000245699 00000 n 
-0000245855 00000 n 
-0000246016 00000 n 
-0000246176 00000 n 
-0000246330 00000 n 
-0000246486 00000 n 
-0000246642 00000 n 
-0000246803 00000 n 
-0000246964 00000 n 
-0000247129 00000 n 
-0000247290 00000 n 
-0000247456 00000 n 
-0000250006 00000 n 
-0000250161 00000 n 
-0000250317 00000 n 
-0000250477 00000 n 
-0000250638 00000 n 
-0000247683 00000 n 
-0000241195 00000 n 
-0000239433 00000 n 
-0000247620 00000 n 
-0000250799 00000 n 
-0000250955 00000 n 
-0000251111 00000 n 
-0000251272 00000 n 
-0000251426 00000 n 
-0000251581 00000 n 
-0000251737 00000 n 
-0000251897 00000 n 
-0000252062 00000 n 
-0000252228 00000 n 
-0000252394 00000 n 
-0000252560 00000 n 
-0000252721 00000 n 
-0000252887 00000 n 
-0000253053 00000 n 
-0000253219 00000 n 
-0000253383 00000 n 
-0000253542 00000 n 
-0000253702 00000 n 
-0000253863 00000 n 
-0000254027 00000 n 
-0000254193 00000 n 
-0000254359 00000 n 
-0000254525 00000 n 
-0000254681 00000 n 
-0000254837 00000 n 
-0000254993 00000 n 
-0000255154 00000 n 
-0000255320 00000 n 
-0000255481 00000 n 
-0000255641 00000 n 
-0000255796 00000 n 
-0000255957 00000 n 
-0000256117 00000 n 
-0000256277 00000 n 
-0000258831 00000 n 
-0000258984 00000 n 
-0000256499 00000 n 
-0000249511 00000 n 
-0000247799 00000 n 
-0000256436 00000 n 
-0000259140 00000 n 
-0000259296 00000 n 
-0000259457 00000 n 
-0000259623 00000 n 
-0000259784 00000 n 
-0000259949 00000 n 
-0000260115 00000 n 
-0000260276 00000 n 
-0000260437 00000 n 
-0000260598 00000 n 
-0000260763 00000 n 
-0000260929 00000 n 
-0000261095 00000 n 
-0000261261 00000 n 
-0000261417 00000 n 
-0000261578 00000 n 
-0000261735 00000 n 
-0000261889 00000 n 
-0000262045 00000 n 
-0000262201 00000 n 
-0000262357 00000 n 
-0000262518 00000 n 
-0000262679 00000 n 
-0000262840 00000 n 
-0000263001 00000 n 
-0000263157 00000 n 
-0000263317 00000 n 
-0000263477 00000 n 
-0000263638 00000 n 
-0000263799 00000 n 
-0000263960 00000 n 
-0000264116 00000 n 
-0000264277 00000 n 
-0000264437 00000 n 
-0000266799 00000 n 
-0000266952 00000 n 
-0000267108 00000 n 
-0000267264 00000 n 
-0000267420 00000 n 
-0000267576 00000 n 
-0000264661 00000 n 
-0000258372 00000 n 
-0000256601 00000 n 
-0000264598 00000 n 
-0000267732 00000 n 
-0000267892 00000 n 
-0000268053 00000 n 
-0000268214 00000 n 
-0000268370 00000 n 
-0000268531 00000 n 
-0000268685 00000 n 
-0000268841 00000 n 
-0000268997 00000 n 
-0000269158 00000 n 
-0000269319 00000 n 
-0000269479 00000 n 
-0000269640 00000 n 
-0000269794 00000 n 
-0000269950 00000 n 
-0000270105 00000 n 
-0000270266 00000 n 
-0000270427 00000 n 
-0000270593 00000 n 
-0000270759 00000 n 
-0000270925 00000 n 
-0000271090 00000 n 
-0000271254 00000 n 
-0000271420 00000 n 
-0000271586 00000 n 
-0000271747 00000 n 
-0000271908 00000 n 
-0000272069 00000 n 
-0000272229 00000 n 
-0000274692 00000 n 
-0000274845 00000 n 
-0000275001 00000 n 
-0000275161 00000 n 
-0000275321 00000 n 
-0000275482 00000 n 
-0000275628 00000 n 
-0000272446 00000 n 
-0000266349 00000 n 
-0000264777 00000 n 
-0000272383 00000 n 
-0000275782 00000 n 
-0000275938 00000 n 
-0000276099 00000 n 
-0000276260 00000 n 
-0000276421 00000 n 
-0000276577 00000 n 
-0000276738 00000 n 
-0000276899 00000 n 
-0000277065 00000 n 
-0000277231 00000 n 
-0000277397 00000 n 
-0000277563 00000 n 
-0000277724 00000 n 
-0000277889 00000 n 
-0000278055 00000 n 
-0000278221 00000 n 
-0000278387 00000 n 
-0000278551 00000 n 
-0000278715 00000 n 
-0000278877 00000 n 
-0000279030 00000 n 
-0000279185 00000 n 
-0000279346 00000 n 
-0000279511 00000 n 
-0000279677 00000 n 
-0000279843 00000 n 
-0000280009 00000 n 
-0000280175 00000 n 
-0000280336 00000 n 
-0000280492 00000 n 
-0000280652 00000 n 
-0000283048 00000 n 
-0000283201 00000 n 
-0000280874 00000 n 
-0000274215 00000 n 
-0000272548 00000 n 
-0000280811 00000 n 
-0000283357 00000 n 
-0000283513 00000 n 
-0000283674 00000 n 
-0000283840 00000 n 
-0000284006 00000 n 
-0000284166 00000 n 
-0000284326 00000 n 
-0000284487 00000 n 
-0000284643 00000 n 
-0000284804 00000 n 
-0000284964 00000 n 
-0000285125 00000 n 
-0000285286 00000 n 
-0000285447 00000 n 
-0000285608 00000 n 
-0000285769 00000 n 
-0000285926 00000 n 
-0000286072 00000 n 
-0000286226 00000 n 
-0000286382 00000 n 
-0000286537 00000 n 
-0000286693 00000 n 
-0000286847 00000 n 
-0000287003 00000 n 
-0000287164 00000 n 
-0000287325 00000 n 
-0000287486 00000 n 
-0000287647 00000 n 
-0000287813 00000 n 
-0000287979 00000 n 
-0000288133 00000 n 
-0000288289 00000 n 
-0000290796 00000 n 
-0000290949 00000 n 
-0000291105 00000 n 
-0000291261 00000 n 
-0000291417 00000 n 
-0000291578 00000 n 
-0000288508 00000 n 
-0000282607 00000 n 
-0000280976 00000 n 
-0000288445 00000 n 
-0005131910 00000 n 
-0000291734 00000 n 
-0000291889 00000 n 
-0000292045 00000 n 
-0000292199 00000 n 
-0000292355 00000 n 
-0000292510 00000 n 
-0000292656 00000 n 
-0000292810 00000 n 
-0000292966 00000 n 
-0000293127 00000 n 
-0000293288 00000 n 
-0000293454 00000 n 
-0000293619 00000 n 
-0000293775 00000 n 
-0000293931 00000 n 
-0000294086 00000 n 
-0000294247 00000 n 
-0000294413 00000 n 
-0000294579 00000 n 
-0000294745 00000 n 
-0000294901 00000 n 
-0000295061 00000 n 
-0000295222 00000 n 
-0000295388 00000 n 
-0000295550 00000 n 
-0000295704 00000 n 
-0000295860 00000 n 
-0000296016 00000 n 
-0000296171 00000 n 
-0000296327 00000 n 
-0000296483 00000 n 
-0000296639 00000 n 
-0000296799 00000 n 
-0000299231 00000 n 
-0000297021 00000 n 
-0000290310 00000 n 
-0000288610 00000 n 
-0000296958 00000 n 
-0000299385 00000 n 
-0000299540 00000 n 
-0000299696 00000 n 
-0000299857 00000 n 
-0000300017 00000 n 
-0000300178 00000 n 
-0000300334 00000 n 
-0000300495 00000 n 
-0000300656 00000 n 
-0000300817 00000 n 
-0000300978 00000 n 
-0000301138 00000 n 
-0000301299 00000 n 
-0000301455 00000 n 
-0000301616 00000 n 
-0000301771 00000 n 
-0000301927 00000 n 
-0000302081 00000 n 
-0000302236 00000 n 
-0000302392 00000 n 
-0000302548 00000 n 
-0000302704 00000 n 
-0000302860 00000 n 
-0000303016 00000 n 
-0000303172 00000 n 
-0000303327 00000 n 
-0000303482 00000 n 
-0000303639 00000 n 
-0000303796 00000 n 
-0000303951 00000 n 
-0000304105 00000 n 
-0000304261 00000 n 
-0000304415 00000 n 
-0000304576 00000 n 
-0000304737 00000 n 
-0000304898 00000 n 
-0000305053 00000 n 
-0000306446 00000 n 
-0000306599 00000 n 
-0000306755 00000 n 
-0000306911 00000 n 
-0000305270 00000 n 
-0000298754 00000 n 
-0000297123 00000 n 
-0000305207 00000 n 
-0000307065 00000 n 
-0000307221 00000 n 
-0000307376 00000 n 
-0000307537 00000 n 
-0000307698 00000 n 
-0000307852 00000 n 
-0000308006 00000 n 
-0000308223 00000 n 
-0000306212 00000 n 
-0000305372 00000 n 
-0000308160 00000 n 
-0000310011 00000 n 
-0000310164 00000 n 
-0000310317 00000 n 
-0000310470 00000 n 
-0000310623 00000 n 
-0000310776 00000 n 
-0000310929 00000 n 
-0000311082 00000 n 
-0000311235 00000 n 
-0000311388 00000 n 
-0000311541 00000 n 
-0000311695 00000 n 
-0000311849 00000 n 
-0000312003 00000 n 
-0000312157 00000 n 
-0000312311 00000 n 
-0000312465 00000 n 
-0000312618 00000 n 
-0000312771 00000 n 
-0000312925 00000 n 
-0000313078 00000 n 
-0000313231 00000 n 
-0000313385 00000 n 
-0000313538 00000 n 
-0000313692 00000 n 
-0000313843 00000 n 
-0000313998 00000 n 
-0000314152 00000 n 
-0000316303 00000 n 
-0000316457 00000 n 
-0000316612 00000 n 
-0000314431 00000 n 
-0000309624 00000 n 
-0000308325 00000 n 
-0000314305 00000 n 
-0000314368 00000 n 
-0000605035 00000 n 
-0000798502 00000 n 
-0000819165 00000 n 
-0000865548 00000 n 
-0000865801 00000 n 
-0000897763 00000 n 
-0000898077 00000 n 
-0000912674 00000 n 
-0000935936 00000 n 
-0000936189 00000 n 
-0000948108 00000 n 
-0000966435 00000 n 
-0000966686 00000 n 
-0000982078 00000 n 
-0000982268 00000 n 
-0001016576 00000 n 
-0001061079 00000 n 
-0001061332 00000 n 
-0001096231 00000 n 
-0001096483 00000 n 
-0001114565 00000 n 
-0001114818 00000 n 
-0001128578 00000 n 
-0001128831 00000 n 
-0001252508 00000 n 
-0001332709 00000 n 
-0001372965 00000 n 
-0001574322 00000 n 
-0000316767 00000 n 
-0000316922 00000 n 
-0000317077 00000 n 
-0000317232 00000 n 
-0000317387 00000 n 
-0000317542 00000 n 
-0000317696 00000 n 
-0000317851 00000 n 
-0000318006 00000 n 
-0000318161 00000 n 
-0000318316 00000 n 
-0000318472 00000 n 
-0000318627 00000 n 
-0000318783 00000 n 
-0000318939 00000 n 
-0000319095 00000 n 
-0000319251 00000 n 
-0000319405 00000 n 
-0000319561 00000 n 
-0000319717 00000 n 
-0000319873 00000 n 
-0000320028 00000 n 
-0000320183 00000 n 
-0000320401 00000 n 
-0000315934 00000 n 
-0000314533 00000 n 
-0000320338 00000 n 
-0001574448 00000 n 
-0001589871 00000 n 
-0001858979 00000 n 
-0001999901 00000 n 
-0002251710 00000 n 
-0002286210 00000 n 
-0002286399 00000 n 
-0002353927 00000 n 
-0002354116 00000 n 
-0002419738 00000 n 
-0002419864 00000 n 
-0002468462 00000 n 
-0002502216 00000 n 
-0002567425 00000 n 
-0002610104 00000 n 
-0002610233 00000 n 
-0002676789 00000 n 
-0002676982 00000 n 
-0002711969 00000 n 
-0002815777 00000 n 
-0003041034 00000 n 
-0003182660 00000 n 
-0003314429 00000 n 
-0003374265 00000 n 
-0003873484 00000 n 
-0003873613 00000 n 
-0000322278 00000 n 
-0000322430 00000 n 
-0000322583 00000 n 
-0000322735 00000 n 
-0000322887 00000 n 
-0000323039 00000 n 
-0000323193 00000 n 
-0000323347 00000 n 
-0000323501 00000 n 
-0000323655 00000 n 
-0000323809 00000 n 
-0000323962 00000 n 
-0000324116 00000 n 
-0000324270 00000 n 
-0000324423 00000 n 
-0000324576 00000 n 
-0000324729 00000 n 
-0000324883 00000 n 
-0000325037 00000 n 
-0000325191 00000 n 
-0000325345 00000 n 
-0000325499 00000 n 
-0000325653 00000 n 
-0000325807 00000 n 
-0000327479 00000 n 
-0000327632 00000 n 
-0000326085 00000 n 
-0000321927 00000 n 
-0000320489 00000 n 
-0000325959 00000 n 
-0000326022 00000 n 
-0005132036 00000 n 
-0000398480 00000 n 
-0000401326 00000 n 
-0000670695 00000 n 
-0000719310 00000 n 
-0001139264 00000 n 
-0001257560 00000 n 
-0001257686 00000 n 
-0001260586 00000 n 
-0001260712 00000 n 
-0001396692 00000 n 
-0001419385 00000 n 
-0001478758 00000 n 
-0001482710 00000 n 
-0001484344 00000 n 
-0001604371 00000 n 
-0001787089 00000 n 
-0001814442 00000 n 
-0001867410 00000 n 
-0001870855 00000 n 
-0001873573 00000 n 
-0001901424 00000 n 
-0002073001 00000 n 
-0002516564 00000 n 
-0003328766 00000 n 
-0000327786 00000 n 
-0000327940 00000 n 
-0000328094 00000 n 
-0000328246 00000 n 
-0000328400 00000 n 
-0000328554 00000 n 
-0000328707 00000 n 
-0000328861 00000 n 
-0000329015 00000 n 
-0000329169 00000 n 
-0000329449 00000 n 
-0000327236 00000 n 
-0000326201 00000 n 
-0000329323 00000 n 
-0000329386 00000 n 
-0003533139 00000 n 
-0003533463 00000 n 
-0003537560 00000 n 
-0003583259 00000 n 
-0003614150 00000 n 
-0003614279 00000 n 
-0003655110 00000 n 
-0003729836 00000 n 
-0003750513 00000 n 
-0003754387 00000 n 
-0003890872 00000 n 
-0003899150 00000 n 
-0000332128 00000 n 
-0000331879 00000 n 
-0000329551 00000 n 
-0000332002 00000 n 
-0000332065 00000 n 
-0000333677 00000 n 
-0000333826 00000 n 
-0000333998 00000 n 
-0000334169 00000 n 
-0000334338 00000 n 
-0000334514 00000 n 
-0000334683 00000 n 
-0000334835 00000 n 
-0000335004 00000 n 
-0000335156 00000 n 
-0000335328 00000 n 
-0000335498 00000 n 
-0000335667 00000 n 
-0000335819 00000 n 
-0000335988 00000 n 
-0000336157 00000 n 
-0000336330 00000 n 
-0000336496 00000 n 
-0000336648 00000 n 
-0000336817 00000 n 
-0000336998 00000 n 
-0000337164 00000 n 
-0000337318 00000 n 
-0000337486 00000 n 
-0000339513 00000 n 
-0000339682 00000 n 
-0000339854 00000 n 
-0000340025 00000 n 
-0000340190 00000 n 
-0000340349 00000 n 
-0000337777 00000 n 
-0000333326 00000 n 
-0000332230 00000 n 
-0000337651 00000 n 
-0000337714 00000 n 
-0000389935 00000 n 
-0000421586 00000 n 
-0000523151 00000 n 
-0000604972 00000 n 
-0000666421 00000 n 
-0000701437 00000 n 
-0000340518 00000 n 
-0000340673 00000 n 
-0000340842 00000 n 
-0000340996 00000 n 
-0000341165 00000 n 
-0000341334 00000 n 
-0000341492 00000 n 
-0000341661 00000 n 
-0000341832 00000 n 
-0000342002 00000 n 
-0000342151 00000 n 
-0000342322 00000 n 
-0000342491 00000 n 
-0000342660 00000 n 
-0000342829 00000 n 
-0000342995 00000 n 
-0000343166 00000 n 
-0000343321 00000 n 
-0000343490 00000 n 
-0000343658 00000 n 
-0000343810 00000 n 
-0000343979 00000 n 
-0000344160 00000 n 
-0000344326 00000 n 
-0000346207 00000 n 
-0000346376 00000 n 
-0000346524 00000 n 
-0000346693 00000 n 
-0000346861 00000 n 
-0000347017 00000 n 
-0000344536 00000 n 
-0000339108 00000 n 
-0000337893 00000 n 
-0000344473 00000 n 
-0000753129 00000 n 
-0000770311 00000 n 
-0001134818 00000 n 
-0001144545 00000 n 
-0001272254 00000 n 
-0001489246 00000 n 
-0001619239 00000 n 
-0001725127 00000 n 
-0000347186 00000 n 
-0000347355 00000 n 
-0000347526 00000 n 
-0000347676 00000 n 
-0000347845 00000 n 
-0000348015 00000 n 
-0000348183 00000 n 
-0000348357 00000 n 
-0000348514 00000 n 
-0000348686 00000 n 
-0000348855 00000 n 
-0000349014 00000 n 
-0000349183 00000 n 
-0000349354 00000 n 
-0000349525 00000 n 
-0000349702 00000 n 
-0000349850 00000 n 
-0000350021 00000 n 
-0000350189 00000 n 
-0000350347 00000 n 
-0000350518 00000 n 
-0000350687 00000 n 
-0000350856 00000 n 
-0000351011 00000 n 
-0000353016 00000 n 
-0000353189 00000 n 
-0000353360 00000 n 
-0000353506 00000 n 
-0000353676 00000 n 
-0000353844 00000 n 
-0000351244 00000 n 
-0000345802 00000 n 
-0000344638 00000 n 
-0000351181 00000 n 
-0001782786 00000 n 
-0001805441 00000 n 
-0001913139 00000 n 
-0001957389 00000 n 
-0001974438 00000 n 
-0002015596 00000 n 
-0002024153 00000 n 
-0002199700 00000 n 
-0000354014 00000 n 
-0000354163 00000 n 
-0000354339 00000 n 
-0000354511 00000 n 
-0000354687 00000 n 
-0000354864 00000 n 
-0000355034 00000 n 
-0000355202 00000 n 
-0000355370 00000 n 
-0000355539 00000 n 
-0000355692 00000 n 
-0000355861 00000 n 
-0000356013 00000 n 
-0000356181 00000 n 
-0000356327 00000 n 
-0000356496 00000 n 
-0000356673 00000 n 
-0000356836 00000 n 
-0000357005 00000 n 
-0000357155 00000 n 
-0000359025 00000 n 
-0000359194 00000 n 
-0000359370 00000 n 
-0000359519 00000 n 
-0000359688 00000 n 
-0000359838 00000 n 
-0000360007 00000 n 
-0000357385 00000 n 
-0000352647 00000 n 
-0000351346 00000 n 
-0000357322 00000 n 
-0005132162 00000 n 
-0003318584 00000 n 
-0003363796 00000 n 
-0003444900 00000 n 
-0003470752 00000 n 
-0003492210 00000 n 
-0003552251 00000 n 
-0003599782 00000 n 
-0003637976 00000 n 
-0000360175 00000 n 
-0000360326 00000 n 
-0000360494 00000 n 
-0000360663 00000 n 
-0000360815 00000 n 
-0000360984 00000 n 
-0000361143 00000 n 
-0000361314 00000 n 
-0000361483 00000 n 
-0000361650 00000 n 
-0000361804 00000 n 
-0000361972 00000 n 
-0000362118 00000 n 
-0000362286 00000 n 
-0000362436 00000 n 
-0000362607 00000 n 
-0000362778 00000 n 
-0000362947 00000 n 
-0000363098 00000 n 
-0000363267 00000 n 
-0000363438 00000 n 
-0000363611 00000 n 
-0000363780 00000 n 
-0000365449 00000 n 
-0000365618 00000 n 
-0000365789 00000 n 
-0000365961 00000 n 
-0000366107 00000 n 
-0000366274 00000 n 
-0000363991 00000 n 
-0000358620 00000 n 
-0000357487 00000 n 
-0000363928 00000 n 
-0003658883 00000 n 
-0003664565 00000 n 
-0003678510 00000 n 
-0003682657 00000 n 
-0003711634 00000 n 
-0003738810 00000 n 
-0003759808 00000 n 
-0003790019 00000 n 
-0003814742 00000 n 
-0003885056 00000 n 
-0000366426 00000 n 
-0000366597 00000 n 
-0000366766 00000 n 
-0000366937 00000 n 
-0000367090 00000 n 
-0000367261 00000 n 
-0000367430 00000 n 
-0000367585 00000 n 
-0000367756 00000 n 
-0000367925 00000 n 
-0000368094 00000 n 
-0000368265 00000 n 
-0000368413 00000 n 
-0000368590 00000 n 
-0000368759 00000 n 
-0000368928 00000 n 
-0000369082 00000 n 
-0000369263 00000 n 
-0000369413 00000 n 
-0000369644 00000 n 
-0000365089 00000 n 
-0000364093 00000 n 
-0000369581 00000 n 
-0003896524 00000 n 
-0003903448 00000 n 
-0003927935 00000 n 
-0003940418 00000 n 
-0003956667 00000 n 
-0003968481 00000 n 
-0004005130 00000 n 
-0000373664 00000 n 
-0000373415 00000 n 
-0000369746 00000 n 
-0000373538 00000 n 
-0000373601 00000 n 
-0000376246 00000 n 
-0000376416 00000 n 
-0000376586 00000 n 
-0000376754 00000 n 
-0000377174 00000 n 
-0000376075 00000 n 
-0000373780 00000 n 
-0000376923 00000 n 
-0000376986 00000 n 
-0000377049 00000 n 
-0000377111 00000 n 
-0005128944 00000 n 
-0000380792 00000 n 
-0000380355 00000 n 
-0000377318 00000 n 
-0000380478 00000 n 
-0000380541 00000 n 
-0000380604 00000 n 
-0000380666 00000 n 
-0000380729 00000 n 
-0000384797 00000 n 
-0000385090 00000 n 
-0000384653 00000 n 
-0000380908 00000 n 
-0000384965 00000 n 
-0000385028 00000 n 
-0005132288 00000 n 
-0000385974 00000 n 
-0000385728 00000 n 
-0000385220 00000 n 
-0000385851 00000 n 
-0000389328 00000 n 
-0000389658 00000 n 
-0000394367 00000 n 
-0000390181 00000 n 
-0000389166 00000 n 
-0000386076 00000 n 
-0000389811 00000 n 
-0000389494 00000 n 
-0000394524 00000 n 
-0000394683 00000 n 
-0000396157 00000 n 
-0000394205 00000 n 
-0000390311 00000 n 
-0000394842 00000 n 
-0000394905 00000 n 
-0005129091 00000 n 
-0000394967 00000 n 
-0000395030 00000 n 
-0000395093 00000 n 
-0000395156 00000 n 
-0000395219 00000 n 
-0000395282 00000 n 
-0000395345 00000 n 
-0000395408 00000 n 
-0000395471 00000 n 
-0000395534 00000 n 
-0000395658 00000 n 
-0000395719 00000 n 
-0000395782 00000 n 
-0000395845 00000 n 
-0000395907 00000 n 
-0000395970 00000 n 
-0000396033 00000 n 
-0000398541 00000 n 
-0000401389 00000 n 
-0000398603 00000 n 
-0000398294 00000 n 
-0000396314 00000 n 
-0000398417 00000 n 
-0000401452 00000 n 
-0000401140 00000 n 
-0000398705 00000 n 
-0000401263 00000 n 
-0000405576 00000 n 
-0000405733 00000 n 
-0000410317 00000 n 
-0000406954 00000 n 
-0000405423 00000 n 
-0000401554 00000 n 
-0000405890 00000 n 
-0000406014 00000 n 
-0000406077 00000 n 
-0000406139 00000 n 
-0000406202 00000 n 
-0000406265 00000 n 
-0000406328 00000 n 
-0000406391 00000 n 
-0000406454 00000 n 
-0000406517 00000 n 
-0000406579 00000 n 
-0000406702 00000 n 
-0000406765 00000 n 
-0000406828 00000 n 
-0000406891 00000 n 
-0005132414 00000 n 
-0000410486 00000 n 
-0000411561 00000 n 
-0000410164 00000 n 
-0000407111 00000 n 
-0000410632 00000 n 
-0000410817 00000 n 
-0000410879 00000 n 
-0000411001 00000 n 
-0000411064 00000 n 
-0000411127 00000 n 
-0000411190 00000 n 
-0000411314 00000 n 
-0000411376 00000 n 
-0000411438 00000 n 
-0000411500 00000 n 
-0000415119 00000 n 
-0000415271 00000 n 
-0000415422 00000 n 
-0000416068 00000 n 
-0000414957 00000 n 
-0000411719 00000 n 
-0000415574 00000 n 
-0000415637 00000 n 
-0000415700 00000 n 
-0000417294 00000 n 
-0000417047 00000 n 
-0000416198 00000 n 
-0000417170 00000 n 
-0000420482 00000 n 
-0000420683 00000 n 
-0000420832 00000 n 
-0000420990 00000 n 
-0000421145 00000 n 
-0000421303 00000 n 
-0000421769 00000 n 
-0000420293 00000 n 
-0000417410 00000 n 
-0000421462 00000 n 
-0000426034 00000 n 
-0000758331 00000 n 
-0000759337 00000 n 
-0000427164 00000 n 
-0000425664 00000 n 
-0000421871 00000 n 
-0000425787 00000 n 
-0000426097 00000 n 
-0000426160 00000 n 
-0000426223 00000 n 
-0000426286 00000 n 
-0000426349 00000 n 
-0000426412 00000 n 
-0000426474 00000 n 
-0000426537 00000 n 
-0000426600 00000 n 
-0000426663 00000 n 
-0000426726 00000 n 
-0000426789 00000 n 
-0000426852 00000 n 
-0000426915 00000 n 
-0000426978 00000 n 
-0000427041 00000 n 
-0000427102 00000 n 
-0000430733 00000 n 
-0000431041 00000 n 
-0000433411 00000 n 
-0000430571 00000 n 
-0000427321 00000 n 
-0000431196 00000 n 
-0000431259 00000 n 
-0000431322 00000 n 
-0000431383 00000 n 
-0000431444 00000 n 
-0000431505 00000 n 
-0000431568 00000 n 
-0000430888 00000 n 
-0000431631 00000 n 
-0000431694 00000 n 
-0000431757 00000 n 
-0000431818 00000 n 
-0000431881 00000 n 
-0000431942 00000 n 
-0000432003 00000 n 
-0000432064 00000 n 
-0000432127 00000 n 
-0000432188 00000 n 
-0000432248 00000 n 
-0000432309 00000 n 
-0000432370 00000 n 
-0000432431 00000 n 
-0000432492 00000 n 
-0000432553 00000 n 
-0000432614 00000 n 
-0000432675 00000 n 
-0000432736 00000 n 
-0000432796 00000 n 
-0000432857 00000 n 
-0000432918 00000 n 
-0000432979 00000 n 
-0000433040 00000 n 
-0000433101 00000 n 
-0000433162 00000 n 
-0000433223 00000 n 
-0000433286 00000 n 
-0005132540 00000 n 
-0003916867 00000 n 
-0000437990 00000 n 
-0000438140 00000 n 
-0000440872 00000 n 
-0000437837 00000 n 
-0000433541 00000 n 
-0000438294 00000 n 
-0000438357 00000 n 
-0000438420 00000 n 
-0000438483 00000 n 
-0000438546 00000 n 
-0000438609 00000 n 
-0000438672 00000 n 
-0000438735 00000 n 
-0000438798 00000 n 
-0000438861 00000 n 
-0000438924 00000 n 
-0000438987 00000 n 
-0000439050 00000 n 
-0000439113 00000 n 
-0000439176 00000 n 
-0000439238 00000 n 
-0000439301 00000 n 
-0000439364 00000 n 
-0000439427 00000 n 
-0000439490 00000 n 
-0000439553 00000 n 
-0000439678 00000 n 
-0000439741 00000 n 
-0000439804 00000 n 
-0000439867 00000 n 
-0000439930 00000 n 
-0000439992 00000 n 
-0000440055 00000 n 
-0000440118 00000 n 
-0000440181 00000 n 
-0000440244 00000 n 
-0000440307 00000 n 
-0000440370 00000 n 
-0000440433 00000 n 
-0000440496 00000 n 
-0000440559 00000 n 
-0000440622 00000 n 
-0000440685 00000 n 
-0000440748 00000 n 
-0000440810 00000 n 
-0000444694 00000 n 
-0000445222 00000 n 
-0000444550 00000 n 
-0000441029 00000 n 
-0000444845 00000 n 
-0000444908 00000 n 
-0000444971 00000 n 
-0000445034 00000 n 
-0000445097 00000 n 
-0002218695 00000 n 
-0000449539 00000 n 
-0000453362 00000 n 
-0000449395 00000 n 
-0000445366 00000 n 
-0000449694 00000 n 
-0000449757 00000 n 
-0000449820 00000 n 
-0000449883 00000 n 
-0000449946 00000 n 
-0000450009 00000 n 
-0000450072 00000 n 
-0000450135 00000 n 
-0000450198 00000 n 
-0000450261 00000 n 
-0000450322 00000 n 
-0000450385 00000 n 
-0000450448 00000 n 
-0000450511 00000 n 
-0000450574 00000 n 
-0000450637 00000 n 
-0000450700 00000 n 
-0000450763 00000 n 
-0000450826 00000 n 
-0000450888 00000 n 
-0000450951 00000 n 
-0000451014 00000 n 
-0000451077 00000 n 
-0000451140 00000 n 
-0000451203 00000 n 
-0000451266 00000 n 
-0000451329 00000 n 
-0000451392 00000 n 
-0000451454 00000 n 
-0000451517 00000 n 
-0000451580 00000 n 
-0000451643 00000 n 
-0000451706 00000 n 
-0000451769 00000 n 
-0000451832 00000 n 
-0000451893 00000 n 
-0000451954 00000 n 
-0000452015 00000 n 
-0000452078 00000 n 
-0000452141 00000 n 
-0000452204 00000 n 
-0000452265 00000 n 
-0000452326 00000 n 
-0000452387 00000 n 
-0000452448 00000 n 
-0000452509 00000 n 
-0000452570 00000 n 
-0000452631 00000 n 
-0000452692 00000 n 
-0000452753 00000 n 
-0000452814 00000 n 
-0000452875 00000 n 
-0000452936 00000 n 
-0000452997 00000 n 
-0000453058 00000 n 
-0000453119 00000 n 
-0000453180 00000 n 
-0000453241 00000 n 
-0000453302 00000 n 
-0000459909 00000 n 
-0000456658 00000 n 
-0000453491 00000 n 
-0000456781 00000 n 
-0000456844 00000 n 
-0000456907 00000 n 
-0000456970 00000 n 
-0000457033 00000 n 
-0000457094 00000 n 
-0000457157 00000 n 
-0000457220 00000 n 
-0000457281 00000 n 
-0000457342 00000 n 
-0000457403 00000 n 
-0000457466 00000 n 
-0000457529 00000 n 
-0000457590 00000 n 
-0000457651 00000 n 
-0000457711 00000 n 
-0000457772 00000 n 
-0000457833 00000 n 
-0000457894 00000 n 
-0000457955 00000 n 
-0000458016 00000 n 
-0000458077 00000 n 
-0000458138 00000 n 
-0000458199 00000 n 
-0000458259 00000 n 
-0000458320 00000 n 
-0000458381 00000 n 
-0000458442 00000 n 
-0000458503 00000 n 
-0000458564 00000 n 
-0000458627 00000 n 
-0000458687 00000 n 
-0000458748 00000 n 
-0000458809 00000 n 
-0000458872 00000 n 
-0000458935 00000 n 
-0000458996 00000 n 
-0000459057 00000 n 
-0000459118 00000 n 
-0000459179 00000 n 
-0000459239 00000 n 
-0000459300 00000 n 
-0000459361 00000 n 
-0000459422 00000 n 
-0000459483 00000 n 
-0000459544 00000 n 
-0000459605 00000 n 
-0000459666 00000 n 
-0000459727 00000 n 
-0000459787 00000 n 
-0000459848 00000 n 
-0000465038 00000 n 
-0000463784 00000 n 
-0000460011 00000 n 
-0000463907 00000 n 
-0000464094 00000 n 
-0000464157 00000 n 
-0000464220 00000 n 
-0000464283 00000 n 
-0000464346 00000 n 
-0000464409 00000 n 
-0000464472 00000 n 
-0000464535 00000 n 
-0000464598 00000 n 
-0000464660 00000 n 
-0000464723 00000 n 
-0000464786 00000 n 
-0000464849 00000 n 
-0000464912 00000 n 
-0000464975 00000 n 
-0000469391 00000 n 
-0000469553 00000 n 
-0000472907 00000 n 
-0000469238 00000 n 
-0000465195 00000 n 
-0000469721 00000 n 
-0000469784 00000 n 
-0000469847 00000 n 
-0000469910 00000 n 
-0000469973 00000 n 
-0000470036 00000 n 
-0000470099 00000 n 
-0000470162 00000 n 
-0000470225 00000 n 
-0000470288 00000 n 
-0000470349 00000 n 
-0000470412 00000 n 
-0000470475 00000 n 
-0000470538 00000 n 
-0000470601 00000 n 
-0000470664 00000 n 
-0000470727 00000 n 
-0000470790 00000 n 
-0000470853 00000 n 
-0000470915 00000 n 
-0000470978 00000 n 
-0000471041 00000 n 
-0000471104 00000 n 
-0000471167 00000 n 
-0000471230 00000 n 
-0000471293 00000 n 
-0000471356 00000 n 
-0000471419 00000 n 
-0000471482 00000 n 
-0000471545 00000 n 
-0000471608 00000 n 
-0000471671 00000 n 
-0000471734 00000 n 
-0000471795 00000 n 
-0000471856 00000 n 
-0000471918 00000 n 
-0000471981 00000 n 
-0000472044 00000 n 
-0000472105 00000 n 
-0000472167 00000 n 
-0000472230 00000 n 
-0000472291 00000 n 
-0000472351 00000 n 
-0000472412 00000 n 
-0000472475 00000 n 
-0000472538 00000 n 
-0000472599 00000 n 
-0000472662 00000 n 
-0000472725 00000 n 
-0000472786 00000 n 
-0000472847 00000 n 
-0005132666 00000 n 
-0000478399 00000 n 
-0000476379 00000 n 
-0000473036 00000 n 
-0000476502 00000 n 
-0000476565 00000 n 
-0000476626 00000 n 
-0000476687 00000 n 
-0000476748 00000 n 
-0000476809 00000 n 
-0000476870 00000 n 
-0000476930 00000 n 
-0000476991 00000 n 
-0000477052 00000 n 
-0000477113 00000 n 
-0000477174 00000 n 
-0000477236 00000 n 
-0000477299 00000 n 
-0000477360 00000 n 
-0000477421 00000 n 
-0000477484 00000 n 
-0000477546 00000 n 
-0000477603 00000 n 
-0000477664 00000 n 
-0000477725 00000 n 
-0000477786 00000 n 
-0000477847 00000 n 
-0000477908 00000 n 
-0000477969 00000 n 
-0000478030 00000 n 
-0000478093 00000 n 
-0000478155 00000 n 
-0000478215 00000 n 
-0000478276 00000 n 
-0000484501 00000 n 
-0000482432 00000 n 
-0000478529 00000 n 
-0000482555 00000 n 
-0000482680 00000 n 
-0000482743 00000 n 
-0000482806 00000 n 
-0000482868 00000 n 
-0000482931 00000 n 
-0000482994 00000 n 
-0000483057 00000 n 
-0000483120 00000 n 
-0000483183 00000 n 
-0000483246 00000 n 
-0000483309 00000 n 
-0000483372 00000 n 
-0000483431 00000 n 
-0000483494 00000 n 
-0000483557 00000 n 
-0000483620 00000 n 
-0000483683 00000 n 
-0000483746 00000 n 
-0000483809 00000 n 
-0000483872 00000 n 
-0000483935 00000 n 
-0000483998 00000 n 
-0000484060 00000 n 
-0000484123 00000 n 
-0000484186 00000 n 
-0000484249 00000 n 
-0000484312 00000 n 
-0000484375 00000 n 
-0000484438 00000 n 
-0000489941 00000 n 
-0000490106 00000 n 
-0000493704 00000 n 
-0000489788 00000 n 
-0000484644 00000 n 
-0000490271 00000 n 
-0000490334 00000 n 
-0000490397 00000 n 
-0000490460 00000 n 
-0000490523 00000 n 
-0000490585 00000 n 
-0000490648 00000 n 
-0000490711 00000 n 
-0000490774 00000 n 
-0000490837 00000 n 
-0000490900 00000 n 
-0000490963 00000 n 
-0000491026 00000 n 
-0000491089 00000 n 
-0000491151 00000 n 
-0000491214 00000 n 
-0000491277 00000 n 
-0000491340 00000 n 
-0000491403 00000 n 
-0000491466 00000 n 
-0000491529 00000 n 
-0000491592 00000 n 
-0000491655 00000 n 
-0000491716 00000 n 
-0000491779 00000 n 
-0000491842 00000 n 
-0000491905 00000 n 
-0000491968 00000 n 
-0000492031 00000 n 
-0000492094 00000 n 
-0000492157 00000 n 
-0000492220 00000 n 
-0000492282 00000 n 
-0000492345 00000 n 
-0000492408 00000 n 
-0000492471 00000 n 
-0000492534 00000 n 
-0000492597 00000 n 
-0000492660 00000 n 
-0000492721 00000 n 
-0000492784 00000 n 
-0000492847 00000 n 
-0000492908 00000 n 
-0000492969 00000 n 
-0000493030 00000 n 
-0000493091 00000 n 
-0000493154 00000 n 
-0000493217 00000 n 
-0000493279 00000 n 
-0000493340 00000 n 
-0000493401 00000 n 
-0000493462 00000 n 
-0000493523 00000 n 
-0000493583 00000 n 
-0000493644 00000 n 
-0000496048 00000 n 
-0000496897 00000 n 
-0000495904 00000 n 
-0000493847 00000 n 
-0000496218 00000 n 
-0000496281 00000 n 
-0000496342 00000 n 
-0000496403 00000 n 
-0000496464 00000 n 
-0000496525 00000 n 
-0000496586 00000 n 
-0000496649 00000 n 
-0000496712 00000 n 
-0000506002 00000 n 
-0000502207 00000 n 
-0000497027 00000 n 
-0000502330 00000 n 
-0000502393 00000 n 
-0000502456 00000 n 
-0000502519 00000 n 
-0000502582 00000 n 
-0000502645 00000 n 
-0000502708 00000 n 
-0000502771 00000 n 
-0000502834 00000 n 
-0000502897 00000 n 
-0000502958 00000 n 
-0000503021 00000 n 
-0000503084 00000 n 
-0000503147 00000 n 
-0000503210 00000 n 
-0000503273 00000 n 
-0000503336 00000 n 
-0000503399 00000 n 
-0000503462 00000 n 
-0000503524 00000 n 
-0000503587 00000 n 
-0000503650 00000 n 
-0000503713 00000 n 
-0000503776 00000 n 
-0000503839 00000 n 
-0000503902 00000 n 
-0000503965 00000 n 
-0000504028 00000 n 
-0000504090 00000 n 
-0000504153 00000 n 
-0000504216 00000 n 
-0000504279 00000 n 
-0000504342 00000 n 
-0000504405 00000 n 
-0000504468 00000 n 
-0000504531 00000 n 
-0000504594 00000 n 
-0000504656 00000 n 
-0000504718 00000 n 
-0000504781 00000 n 
-0000504844 00000 n 
-0000504907 00000 n 
-0000504968 00000 n 
-0000505029 00000 n 
-0000505090 00000 n 
-0000505151 00000 n 
-0000505212 00000 n 
-0000505273 00000 n 
-0000505333 00000 n 
-0000505394 00000 n 
-0000505455 00000 n 
-0000505516 00000 n 
-0000505577 00000 n 
-0000505638 00000 n 
-0000505699 00000 n 
-0000505760 00000 n 
-0000505821 00000 n 
-0000505881 00000 n 
-0000505942 00000 n 
-0000509188 00000 n 
-0000516503 00000 n 
-0000512588 00000 n 
-0000509044 00000 n 
-0000506145 00000 n 
-0000509340 00000 n 
-0000509403 00000 n 
-0000509464 00000 n 
-0000509525 00000 n 
-0000509586 00000 n 
-0000509647 00000 n 
-0000509708 00000 n 
-0000509768 00000 n 
-0000509829 00000 n 
-0000509890 00000 n 
-0000509951 00000 n 
-0000510012 00000 n 
-0000510073 00000 n 
-0000510134 00000 n 
-0000510196 00000 n 
-0000510259 00000 n 
-0000510320 00000 n 
-0000510381 00000 n 
-0000510442 00000 n 
-0000510503 00000 n 
-0000510563 00000 n 
-0000510624 00000 n 
-0000510685 00000 n 
-0000510746 00000 n 
-0000510807 00000 n 
-0000510868 00000 n 
-0000510929 00000 n 
-0000510990 00000 n 
-0000511051 00000 n 
-0000511111 00000 n 
-0000511172 00000 n 
-0000511233 00000 n 
-0000511294 00000 n 
-0000511355 00000 n 
-0000511416 00000 n 
-0000511477 00000 n 
-0000511538 00000 n 
-0000511599 00000 n 
-0000511658 00000 n 
-0000511719 00000 n 
-0000511780 00000 n 
-0000511841 00000 n 
-0000511902 00000 n 
-0000511963 00000 n 
-0000512026 00000 n 
-0000512089 00000 n 
-0000512150 00000 n 
-0000512213 00000 n 
-0000512276 00000 n 
-0000512339 00000 n 
-0000512402 00000 n 
-0000512464 00000 n 
-0000512525 00000 n 
-0005132792 00000 n 
-0000516653 00000 n 
-0000516804 00000 n 
-0000519032 00000 n 
-0000516341 00000 n 
-0000512690 00000 n 
-0000516956 00000 n 
-0000517081 00000 n 
-0000517144 00000 n 
-0000517207 00000 n 
-0000517270 00000 n 
-0000517333 00000 n 
-0000517396 00000 n 
-0000517459 00000 n 
-0000517522 00000 n 
-0000517585 00000 n 
-0000517648 00000 n 
-0000517711 00000 n 
-0000517774 00000 n 
-0000517837 00000 n 
-0000517900 00000 n 
-0000517963 00000 n 
-0000518026 00000 n 
-0000518088 00000 n 
-0000518151 00000 n 
-0000518214 00000 n 
-0000518277 00000 n 
-0000518340 00000 n 
-0000518403 00000 n 
-0000518466 00000 n 
-0000518529 00000 n 
-0000518592 00000 n 
-0000518654 00000 n 
-0000518717 00000 n 
-0000518780 00000 n 
-0000518843 00000 n 
-0000518906 00000 n 
-0000518969 00000 n 
-0000519959 00000 n 
-0000519711 00000 n 
-0000519189 00000 n 
-0000519834 00000 n 
-0000523274 00000 n 
-0000522840 00000 n 
-0000520061 00000 n 
-0000522963 00000 n 
-0000523026 00000 n 
-0000526768 00000 n 
-0000526921 00000 n 
-0000527074 00000 n 
-0000527229 00000 n 
-0000527637 00000 n 
-0000526597 00000 n 
-0000523376 00000 n 
-0000527388 00000 n 
-0000532567 00000 n 
-0000531565 00000 n 
-0000527781 00000 n 
-0000531688 00000 n 
-0000531751 00000 n 
-0000531814 00000 n 
-0000531939 00000 n 
-0000532002 00000 n 
-0000532127 00000 n 
-0000532190 00000 n 
-0000532253 00000 n 
-0000532316 00000 n 
-0000532441 00000 n 
-0000532504 00000 n 
-0000537373 00000 n 
-0000536120 00000 n 
-0000532710 00000 n 
-0000536243 00000 n 
-0000536368 00000 n 
-0000536431 00000 n 
-0000536494 00000 n 
-0000536619 00000 n 
-0000536682 00000 n 
-0000536745 00000 n 
-0000536808 00000 n 
-0000536871 00000 n 
-0000536934 00000 n 
-0000536997 00000 n 
-0000537058 00000 n 
-0000537121 00000 n 
-0000537184 00000 n 
-0000537247 00000 n 
-0000537310 00000 n 
-0005132918 00000 n 
-0000541197 00000 n 
-0000541356 00000 n 
-0000541507 00000 n 
-0000541806 00000 n 
-0000541963 00000 n 
-0000542120 00000 n 
-0000542836 00000 n 
-0000540999 00000 n 
-0000537530 00000 n 
-0000542274 00000 n 
-0000541658 00000 n 
-0000542461 00000 n 
-0000542523 00000 n 
-0000542586 00000 n 
-0000542649 00000 n 
-0000542712 00000 n 
-0000730570 00000 n 
-0000547450 00000 n 
-0000546888 00000 n 
-0000542965 00000 n 
-0000547011 00000 n 
-0000547136 00000 n 
-0000547199 00000 n 
-0000547262 00000 n 
-0000547325 00000 n 
-0000549126 00000 n 
-0000548940 00000 n 
-0000547607 00000 n 
-0000549063 00000 n 
-0000553093 00000 n 
-0000553246 00000 n 
-0000553962 00000 n 
-0000552940 00000 n 
-0000549214 00000 n 
-0000553402 00000 n 
-0000553465 00000 n 
-0000553528 00000 n 
-0000553591 00000 n 
-0000555852 00000 n 
-0000555604 00000 n 
-0000554105 00000 n 
-0000555727 00000 n 
-0000604690 00000 n 
-0000557883 00000 n 
-0000605161 00000 n 
-0000557739 00000 n 
-0000555982 00000 n 
-0000604847 00000 n 
-0000605098 00000 n 
-0005133044 00000 n 
-0000575847 00000 n 
-0000609154 00000 n 
-0000609688 00000 n 
-0000609010 00000 n 
-0000605300 00000 n 
-0000609311 00000 n 
-0000609436 00000 n 
-0000609499 00000 n 
-0000609562 00000 n 
-0000609625 00000 n 
-0000613549 00000 n 
-0000613705 00000 n 
-0000613871 00000 n 
-0000614294 00000 n 
-0000613378 00000 n 
-0000609818 00000 n 
-0000614169 00000 n 
-0000614021 00000 n 
-0000701624 00000 n 
-0000619283 00000 n 
-0000619097 00000 n 
-0000614410 00000 n 
-0000619220 00000 n 
-0000623275 00000 n 
-0000623610 00000 n 
-0000623131 00000 n 
-0000619371 00000 n 
-0000623423 00000 n 
-0000627501 00000 n 
-0000630605 00000 n 
-0000627804 00000 n 
-0000627357 00000 n 
-0000623740 00000 n 
-0000627679 00000 n 
-0000631225 00000 n 
-0000631381 00000 n 
-0000630762 00000 n 
-0000631071 00000 n 
-0000637022 00000 n 
-0000631607 00000 n 
-0000630416 00000 n 
-0000627934 00000 n 
-0000631544 00000 n 
-0000630917 00000 n 
-0005133170 00000 n 
-0000636565 00000 n 
-0000636720 00000 n 
-0000636875 00000 n 
-0000638938 00000 n 
-0000636394 00000 n 
-0000631723 00000 n 
-0000637178 00000 n 
-0000637302 00000 n 
-0000637365 00000 n 
-0000637428 00000 n 
-0000637491 00000 n 
-0000637554 00000 n 
-0000637617 00000 n 
-0000637680 00000 n 
-0000637743 00000 n 
-0000637806 00000 n 
-0000637868 00000 n 
-0000637931 00000 n 
-0000637994 00000 n 
-0000638057 00000 n 
-0000638120 00000 n 
-0000638183 00000 n 
-0000638246 00000 n 
-0000638309 00000 n 
-0000638372 00000 n 
-0000638434 00000 n 
-0000638497 00000 n 
-0000638560 00000 n 
-0000638623 00000 n 
-0000638686 00000 n 
-0000638749 00000 n 
-0000638812 00000 n 
-0000638875 00000 n 
-0000643563 00000 n 
-0000642813 00000 n 
-0000639095 00000 n 
-0000642936 00000 n 
-0000642999 00000 n 
-0000643062 00000 n 
-0000643125 00000 n 
-0000643188 00000 n 
-0000643251 00000 n 
-0000643314 00000 n 
-0000649042 00000 n 
-0000647918 00000 n 
-0000643720 00000 n 
-0000648041 00000 n 
-0000648166 00000 n 
-0000648228 00000 n 
-0000648291 00000 n 
-0000648354 00000 n 
-0000648417 00000 n 
-0000648480 00000 n 
-0000648543 00000 n 
-0000648606 00000 n 
-0000648669 00000 n 
-0000648732 00000 n 
-0000648794 00000 n 
-0000648979 00000 n 
-0000652978 00000 n 
-0000653130 00000 n 
-0000653288 00000 n 
-0000653938 00000 n 
-0000652816 00000 n 
-0000649199 00000 n 
-0000653435 00000 n 
-0000653498 00000 n 
-0000653561 00000 n 
-0000653624 00000 n 
-0000653687 00000 n 
-0000653750 00000 n 
-0000653813 00000 n 
-0001168527 00000 n 
-0000658169 00000 n 
-0000657610 00000 n 
-0000654054 00000 n 
-0000657733 00000 n 
-0000657981 00000 n 
-0000658044 00000 n 
-0000662569 00000 n 
-0000661820 00000 n 
-0000658313 00000 n 
-0000661943 00000 n 
-0000662006 00000 n 
-0000662069 00000 n 
-0000662132 00000 n 
-0000662443 00000 n 
-0000662506 00000 n 
-0005133296 00000 n 
-0000665818 00000 n 
-0000665970 00000 n 
-0000666139 00000 n 
-0000666605 00000 n 
-0000665656 00000 n 
-0000662713 00000 n 
-0000666296 00000 n 
-0000670758 00000 n 
-0000670883 00000 n 
-0000670509 00000 n 
-0000666707 00000 n 
-0000670632 00000 n 
-0000675868 00000 n 
-0000676021 00000 n 
-0000676173 00000 n 
-0000676477 00000 n 
-0000677679 00000 n 
-0000675688 00000 n 
-0000671013 00000 n 
-0000676674 00000 n 
-0000676799 00000 n 
-0000676862 00000 n 
-0000676925 00000 n 
-0000676988 00000 n 
-0000677051 00000 n 
-0000677113 00000 n 
-0000677176 00000 n 
-0000677239 00000 n 
-0000677302 00000 n 
-0000677365 00000 n 
-0000677428 00000 n 
-0000677491 00000 n 
-0000677554 00000 n 
-0000676326 00000 n 
-0000681862 00000 n 
-0000682018 00000 n 
-0000682175 00000 n 
-0000682768 00000 n 
-0000681700 00000 n 
-0000677836 00000 n 
-0000682329 00000 n 
-0000682392 00000 n 
-0000682455 00000 n 
-0000682518 00000 n 
-0000682581 00000 n 
-0001150664 00000 n 
-0000686970 00000 n 
-0000687123 00000 n 
-0000687714 00000 n 
-0000686817 00000 n 
-0000682925 00000 n 
-0000687277 00000 n 
-0000687588 00000 n 
-0000687651 00000 n 
-0005129418 00000 n 
-0001155326 00000 n 
-0000692867 00000 n 
-0000693020 00000 n 
-0000697591 00000 n 
-0000697755 00000 n 
-0000694347 00000 n 
-0000692714 00000 n 
-0000687873 00000 n 
-0000693215 00000 n 
-0000693340 00000 n 
-0000693403 00000 n 
-0000693466 00000 n 
-0000693529 00000 n 
-0000693592 00000 n 
-0000693655 00000 n 
-0000693718 00000 n 
-0000693781 00000 n 
-0000693843 00000 n 
-0000693906 00000 n 
-0000693969 00000 n 
-0000694032 00000 n 
-0000694095 00000 n 
-0000694158 00000 n 
-0000694221 00000 n 
-0000694284 00000 n 
-0005133422 00000 n 
-0000698327 00000 n 
-0000697438 00000 n 
-0000694532 00000 n 
-0000697955 00000 n 
-0000701687 00000 n 
-0000701189 00000 n 
-0000698471 00000 n 
-0000701312 00000 n 
-0000704022 00000 n 
-0000703836 00000 n 
-0000701817 00000 n 
-0000703959 00000 n 
-0000707884 00000 n 
-0000709465 00000 n 
-0000707761 00000 n 
-0000704138 00000 n 
-0000708521 00000 n 
-0000708646 00000 n 
-0000708709 00000 n 
-0000708772 00000 n 
-0000708835 00000 n 
-0000708898 00000 n 
-0000708961 00000 n 
-0000709024 00000 n 
-0000709087 00000 n 
-0000709150 00000 n 
-0000709213 00000 n 
-0000709276 00000 n 
-0000709339 00000 n 
-0000709402 00000 n 
-0000708409 00000 n 
-0000708499 00000 n 
-0000713618 00000 n 
-0000713828 00000 n 
-0000714916 00000 n 
-0000713465 00000 n 
-0000709638 00000 n 
-0000714039 00000 n 
-0000714164 00000 n 
-0000714227 00000 n 
-0000714290 00000 n 
-0000714353 00000 n 
-0000714416 00000 n 
-0000714479 00000 n 
-0000714604 00000 n 
-0000714667 00000 n 
-0000714730 00000 n 
-0000718465 00000 n 
-0000718629 00000 n 
-0000718782 00000 n 
-0000719562 00000 n 
-0000718303 00000 n 
-0000715087 00000 n 
-0000718936 00000 n 
-0000719185 00000 n 
-0000719373 00000 n 
-0000719436 00000 n 
-0000719499 00000 n 
-0005133548 00000 n 
-0000723828 00000 n 
-0000725048 00000 n 
-0000723684 00000 n 
-0000719719 00000 n 
-0000723982 00000 n 
-0000724045 00000 n 
-0000724108 00000 n 
-0000724171 00000 n 
-0000724233 00000 n 
-0000724296 00000 n 
-0000724359 00000 n 
-0000724421 00000 n 
-0000724484 00000 n 
-0000724547 00000 n 
-0000724610 00000 n 
-0000724673 00000 n 
-0000724736 00000 n 
-0000724799 00000 n 
-0000724862 00000 n 
-0000724925 00000 n 
-0000724986 00000 n 
-0000729635 00000 n 
-0000729786 00000 n 
-0000729959 00000 n 
-0000731199 00000 n 
-0000729464 00000 n 
-0000725205 00000 n 
-0000730383 00000 n 
-0000730172 00000 n 
-0005129240 00000 n 
-0000730695 00000 n 
-0000730758 00000 n 
-0000730821 00000 n 
-0000730884 00000 n 
-0000730947 00000 n 
-0000731010 00000 n 
-0000731073 00000 n 
-0000731136 00000 n 
-0000734981 00000 n 
-0000735205 00000 n 
-0000737035 00000 n 
-0000734828 00000 n 
-0000731400 00000 n 
-0000735401 00000 n 
-0000735526 00000 n 
-0000735589 00000 n 
-0000735652 00000 n 
-0000735715 00000 n 
-0000735778 00000 n 
-0000735841 00000 n 
-0000735904 00000 n 
-0000735966 00000 n 
-0000736029 00000 n 
-0000736092 00000 n 
-0000736155 00000 n 
-0000736218 00000 n 
-0000736281 00000 n 
-0000736343 00000 n 
-0000736406 00000 n 
-0000736469 00000 n 
-0000736532 00000 n 
-0000736595 00000 n 
-0000736658 00000 n 
-0000736721 00000 n 
-0000736784 00000 n 
-0000736847 00000 n 
-0000736909 00000 n 
-0000736972 00000 n 
-0000740988 00000 n 
-0000741150 00000 n 
-0000741487 00000 n 
-0000742459 00000 n 
-0000740817 00000 n 
-0000737180 00000 n 
-0000741645 00000 n 
-0000741320 00000 n 
-0000741770 00000 n 
-0000741833 00000 n 
-0000741896 00000 n 
-0000741959 00000 n 
-0000742022 00000 n 
-0000742085 00000 n 
-0000742148 00000 n 
-0000742211 00000 n 
-0000742397 00000 n 
-0000746380 00000 n 
-0000747065 00000 n 
-0000746132 00000 n 
-0000742603 00000 n 
-0000746255 00000 n 
-0000746567 00000 n 
-0000746630 00000 n 
-0000746692 00000 n 
-0000746754 00000 n 
-0000746940 00000 n 
-0000747002 00000 n 
-0000749760 00000 n 
-0000749450 00000 n 
-0000747236 00000 n 
-0000749573 00000 n 
-0005133674 00000 n 
-0000752857 00000 n 
-0000757370 00000 n 
-0000757523 00000 n 
-0000753314 00000 n 
-0000752713 00000 n 
-0000749904 00000 n 
-0000753004 00000 n 
-0000757683 00000 n 
-0000757837 00000 n 
-0000757990 00000 n 
-0000759652 00000 n 
-0000757190 00000 n 
-0000753444 00000 n 
-0000758144 00000 n 
-0000758394 00000 n 
-0000758457 00000 n 
-0000758520 00000 n 
-0000758583 00000 n 
-0000758646 00000 n 
-0000758709 00000 n 
-0000758771 00000 n 
-0000758834 00000 n 
-0000758897 00000 n 
-0000758960 00000 n 
-0000759023 00000 n 
-0000759086 00000 n 
-0000759149 00000 n 
-0000759212 00000 n 
-0000759400 00000 n 
-0000759463 00000 n 
-0000759526 00000 n 
-0000759589 00000 n 
-0000764649 00000 n 
-0000764803 00000 n 
-0000764959 00000 n 
-0000765110 00000 n 
-0000767026 00000 n 
-0000764478 00000 n 
-0000759795 00000 n 
-0000765264 00000 n 
-0000765327 00000 n 
-0000765390 00000 n 
-0000765453 00000 n 
-0000765516 00000 n 
-0000765579 00000 n 
-0000765642 00000 n 
-0000765705 00000 n 
-0000765768 00000 n 
-0000765831 00000 n 
-0000765894 00000 n 
-0000765957 00000 n 
-0000766020 00000 n 
-0000766083 00000 n 
-0000766146 00000 n 
-0000766208 00000 n 
-0000766271 00000 n 
-0000766334 00000 n 
-0000766397 00000 n 
-0000766460 00000 n 
-0000766523 00000 n 
-0000766586 00000 n 
-0000766649 00000 n 
-0000766712 00000 n 
-0000766774 00000 n 
-0000766837 00000 n 
-0000766900 00000 n 
-0000766963 00000 n 
-0000768072 00000 n 
-0000767824 00000 n 
-0000767183 00000 n 
-0000767947 00000 n 
-0000770558 00000 n 
-0000770063 00000 n 
-0000768174 00000 n 
-0000770186 00000 n 
-0000797950 00000 n 
-0000772082 00000 n 
-0000798101 00000 n 
-0000800348 00000 n 
-0000798692 00000 n 
-0000771929 00000 n 
-0000770660 00000 n 
-0000798252 00000 n 
-0000798377 00000 n 
-0000798439 00000 n 
-0000798566 00000 n 
-0000798629 00000 n 
-0005133800 00000 n 
-0000819229 00000 n 
-0000818596 00000 n 
-0000818743 00000 n 
-0000818889 00000 n 
-0000820639 00000 n 
-0000819355 00000 n 
-0000800186 00000 n 
-0000798845 00000 n 
-0000819039 00000 n 
-0000819102 00000 n 
-0000819292 00000 n 
-0004023169 00000 n 
-0000865612 00000 n 
-0000865122 00000 n 
-0000836198 00000 n 
-0000865273 00000 n 
-0000867270 00000 n 
-0000865991 00000 n 
-0000820486 00000 n 
-0000819494 00000 n 
-0000865422 00000 n 
-0000865485 00000 n 
-0000865675 00000 n 
-0000865738 00000 n 
-0000865865 00000 n 
-0000865928 00000 n 
-0000897826 00000 n 
-0000897487 00000 n 
-0000886415 00000 n 
-0000898201 00000 n 
-0000867126 00000 n 
-0000866130 00000 n 
-0000897637 00000 n 
-0000897700 00000 n 
-0000897951 00000 n 
-0000898014 00000 n 
-0000898139 00000 n 
-0000911973 00000 n 
-0000899826 00000 n 
-0000912124 00000 n 
-0000912272 00000 n 
-0000914130 00000 n 
-0000912863 00000 n 
-0000899664 00000 n 
-0000898368 00000 n 
-0000912422 00000 n 
-0000912485 00000 n 
-0000912548 00000 n 
-0000912611 00000 n 
-0000912738 00000 n 
-0000912800 00000 n 
-0000936000 00000 n 
-0000935510 00000 n 
-0000923202 00000 n 
-0000935660 00000 n 
-0000937701 00000 n 
-0000936379 00000 n 
-0000913977 00000 n 
-0000912988 00000 n 
-0000935810 00000 n 
-0000935873 00000 n 
-0000936063 00000 n 
-0000936126 00000 n 
-0000936253 00000 n 
-0000936316 00000 n 
-0000948172 00000 n 
-0000947832 00000 n 
-0000950004 00000 n 
-0000948360 00000 n 
-0000937557 00000 n 
-0000936520 00000 n 
-0000947982 00000 n 
-0000948045 00000 n 
-0000948297 00000 n 
-0005133926 00000 n 
-0000966499 00000 n 
-0000965865 00000 n 
-0000966012 00000 n 
-0000966159 00000 n 
-0000958760 00000 n 
-0000966938 00000 n 
-0000949842 00000 n 
-0000948514 00000 n 
-0000966309 00000 n 
-0000966372 00000 n 
-0000966562 00000 n 
-0000966625 00000 n 
-0000966750 00000 n 
-0000966813 00000 n 
-0000966876 00000 n 
-0000981592 00000 n 
-0000968339 00000 n 
-0000981742 00000 n 
-0000974952 00000 n 
-0000982394 00000 n 
-0000968186 00000 n 
-0000967079 00000 n 
-0000981891 00000 n 
-0000981954 00000 n 
-0000982017 00000 n 
-0000982142 00000 n 
-0000982205 00000 n 
-0000982332 00000 n 
-0001015899 00000 n 
-0000984030 00000 n 
-0001016050 00000 n 
-0001017969 00000 n 
-0001016766 00000 n 
-0000983877 00000 n 
-0000982535 00000 n 
-0001016200 00000 n 
-0001016325 00000 n 
-0001016388 00000 n 
-0001016450 00000 n 
-0001016513 00000 n 
-0001016640 00000 n 
-0001016703 00000 n 
-0001061143 00000 n 
-0001060652 00000 n 
-0001047820 00000 n 
-0001060803 00000 n 
-0001063273 00000 n 
-0001061522 00000 n 
-0001017816 00000 n 
-0001016906 00000 n 
-0001060953 00000 n 
-0001061016 00000 n 
-0001061206 00000 n 
-0001061269 00000 n 
-0001061396 00000 n 
-0001061459 00000 n 
-0001096295 00000 n 
-0001095954 00000 n 
-0001076235 00000 n 
-0001113929 00000 n 
-0001098240 00000 n 
-0001096796 00000 n 
-0001063129 00000 n 
-0001061663 00000 n 
-0001096105 00000 n 
-0001096168 00000 n 
-0001096358 00000 n 
-0001096421 00000 n 
-0001096547 00000 n 
-0001096610 00000 n 
-0001096735 00000 n 
-0001114079 00000 n 
-0001107283 00000 n 
-0001114228 00000 n 
-0001116272 00000 n 
-0001115007 00000 n 
-0001098078 00000 n 
-0001096951 00000 n 
-0001114376 00000 n 
-0001114439 00000 n 
-0001114502 00000 n 
-0001114629 00000 n 
-0001114692 00000 n 
-0001114755 00000 n 
-0001114882 00000 n 
-0001114944 00000 n 
-0005134052 00000 n 
-0001128642 00000 n 
-0001128302 00000 n 
-0001122308 00000 n 
-0001129020 00000 n 
-0001116128 00000 n 
-0001115148 00000 n 
-0001128452 00000 n 
-0001128515 00000 n 
-0001128705 00000 n 
-0001128768 00000 n 
-0001128895 00000 n 
-0001130332 00000 n 
-0001130146 00000 n 
-0001129175 00000 n 
-0001130269 00000 n 
-0001131210 00000 n 
-0001130962 00000 n 
-0001130448 00000 n 
-0001131085 00000 n 
-0001133985 00000 n 
-0001134145 00000 n 
-0001134459 00000 n 
-0001135067 00000 n 
-0001133814 00000 n 
-0001131312 00000 n 
-0001134630 00000 n 
-0001134693 00000 n 
-0001134303 00000 n 
-0003711888 00000 n 
-0001138805 00000 n 
-0001138961 00000 n 
-0001139452 00000 n 
-0001138652 00000 n 
-0001135197 00000 n 
-0001139139 00000 n 
-0001139327 00000 n 
-0001141303 00000 n 
-0001140993 00000 n 
-0001139596 00000 n 
-0001141116 00000 n 
-0005134178 00000 n 
-0001144669 00000 n 
-0001144297 00000 n 
-0001141433 00000 n 
-0001144420 00000 n 
-0001146863 00000 n 
-0001146615 00000 n 
-0001144785 00000 n 
-0001146738 00000 n 
-0001150789 00000 n 
-0001150416 00000 n 
-0001146993 00000 n 
-0001150539 00000 n 
-0001155389 00000 n 
-0001154639 00000 n 
-0001150933 00000 n 
-0001154762 00000 n 
-0001154825 00000 n 
-0001154888 00000 n 
-0001154951 00000 n 
-0001155014 00000 n 
-0001155077 00000 n 
-0001155140 00000 n 
-0001157932 00000 n 
-0001157746 00000 n 
-0001155533 00000 n 
-0001157869 00000 n 
-0005130857 00000 n 
-0001163719 00000 n 
-0001161710 00000 n 
-0001158063 00000 n 
-0001161833 00000 n 
-0001161896 00000 n 
-0001161959 00000 n 
-0001162022 00000 n 
-0001162085 00000 n 
-0001162148 00000 n 
-0001162211 00000 n 
-0001162274 00000 n 
-0001162337 00000 n 
-0001162399 00000 n 
-0001162462 00000 n 
-0001162525 00000 n 
-0001162588 00000 n 
-0001162651 00000 n 
-0001162714 00000 n 
-0001162777 00000 n 
-0001162840 00000 n 
-0001162903 00000 n 
-0001162965 00000 n 
-0001163028 00000 n 
-0001163091 00000 n 
-0001163154 00000 n 
-0001163217 00000 n 
-0001163280 00000 n 
-0001163343 00000 n 
-0001163406 00000 n 
-0001163469 00000 n 
-0001163531 00000 n 
-0001163594 00000 n 
-0005134304 00000 n 
-0001168094 00000 n 
-0001168248 00000 n 
-0001173831 00000 n 
-0001169722 00000 n 
-0001167941 00000 n 
-0001163849 00000 n 
-0001168402 00000 n 
-0001168590 00000 n 
-0001168653 00000 n 
-0001168716 00000 n 
-0001168779 00000 n 
-0001168842 00000 n 
-0001168905 00000 n 
-0001168968 00000 n 
-0001169031 00000 n 
-0001169094 00000 n 
-0001169157 00000 n 
-0001169220 00000 n 
-0001169281 00000 n 
-0001169344 00000 n 
-0001169407 00000 n 
-0001169470 00000 n 
-0001169533 00000 n 
-0001169596 00000 n 
-0001169659 00000 n 
-0001173986 00000 n 
-0001174133 00000 n 
-0001174296 00000 n 
-0001176203 00000 n 
-0001173660 00000 n 
-0001169879 00000 n 
-0001174444 00000 n 
-0001174507 00000 n 
-0001174570 00000 n 
-0001174633 00000 n 
-0001174696 00000 n 
-0001174759 00000 n 
-0001174822 00000 n 
-0001174884 00000 n 
-0001174947 00000 n 
-0001175072 00000 n 
-0001175135 00000 n 
-0001175198 00000 n 
-0001175261 00000 n 
-0001175324 00000 n 
-0001175386 00000 n 
-0001175449 00000 n 
-0001175512 00000 n 
-0001175575 00000 n 
-0001175638 00000 n 
-0001175701 00000 n 
-0001175763 00000 n 
-0001175826 00000 n 
-0001175889 00000 n 
-0001175952 00000 n 
-0001176015 00000 n 
-0001176140 00000 n 
-0001180235 00000 n 
-0001179674 00000 n 
-0001176374 00000 n 
-0001179797 00000 n 
-0001179922 00000 n 
-0001179985 00000 n 
-0001180048 00000 n 
-0001180110 00000 n 
-0001185310 00000 n 
-0001184310 00000 n 
-0001180365 00000 n 
-0001184433 00000 n 
-0001184558 00000 n 
-0001184621 00000 n 
-0001184684 00000 n 
-0001184809 00000 n 
-0001184872 00000 n 
-0001184935 00000 n 
-0001184998 00000 n 
-0001185122 00000 n 
-0001185185 00000 n 
-0001190023 00000 n 
-0001189649 00000 n 
-0001185496 00000 n 
-0001189772 00000 n 
-0001189897 00000 n 
-0001189960 00000 n 
-0001194590 00000 n 
-0001193716 00000 n 
-0001190209 00000 n 
-0001193839 00000 n 
-0001193902 00000 n 
-0001193965 00000 n 
-0001194152 00000 n 
-0001194215 00000 n 
-0001194278 00000 n 
-0001194339 00000 n 
-0001194402 00000 n 
-0001194465 00000 n 
-0005134430 00000 n 
-0001198941 00000 n 
-0001198190 00000 n 
-0001194747 00000 n 
-0001198313 00000 n 
-0001198500 00000 n 
-0001198563 00000 n 
-0001198626 00000 n 
-0001198689 00000 n 
-0001198752 00000 n 
-0001198815 00000 n 
-0001198878 00000 n 
-0001203436 00000 n 
-0001203064 00000 n 
-0001199127 00000 n 
-0001203187 00000 n 
-0001252168 00000 n 
-0001206483 00000 n 
-0001252633 00000 n 
-0001206339 00000 n 
-0001203580 00000 n 
-0001252321 00000 n 
-0001252571 00000 n 
-0001230503 00000 n 
-0001256898 00000 n 
-0001257052 00000 n 
-0001257202 00000 n 
-0001257351 00000 n 
-0001257812 00000 n 
-0001256727 00000 n 
-0001252815 00000 n 
-0001257497 00000 n 
-0001257623 00000 n 
-0001257749 00000 n 
-0001260649 00000 n 
-0001260374 00000 n 
-0001261027 00000 n 
-0001260230 00000 n 
-0001257928 00000 n 
-0001260523 00000 n 
-0001260775 00000 n 
-0001260838 00000 n 
-0001260901 00000 n 
-0001260964 00000 n 
-0001264715 00000 n 
-0001264219 00000 n 
-0001261129 00000 n 
-0001264342 00000 n 
-0005134556 00000 n 
-0001268022 00000 n 
-0001268300 00000 n 
-0001267878 00000 n 
-0001264859 00000 n 
-0001268176 00000 n 
-0001271822 00000 n 
-0001272438 00000 n 
-0001271669 00000 n 
-0001268458 00000 n 
-0001272129 00000 n 
-0001271976 00000 n 
-0001275646 00000 n 
-0001276812 00000 n 
-0001275709 00000 n 
-0001275336 00000 n 
-0001272568 00000 n 
-0001275459 00000 n 
-0001332178 00000 n 
-0001332335 00000 n 
-0001335158 00000 n 
-0001332834 00000 n 
-0001276650 00000 n 
-0001275853 00000 n 
-0001332646 00000 n 
-0001332771 00000 n 
-0001332491 00000 n 
-0001319882 00000 n 
-0001373028 00000 n 
-0001373153 00000 n 
-0001335035 00000 n 
-0001332960 00000 n 
-0001372902 00000 n 
-0001364597 00000 n 
-0001375756 00000 n 
-0001375446 00000 n 
-0001373293 00000 n 
-0001375569 00000 n 
-0005134682 00000 n 
-0001380397 00000 n 
-0001380720 00000 n 
-0001380886 00000 n 
-0001381834 00000 n 
-0001380226 00000 n 
-0001375858 00000 n 
-0001381085 00000 n 
-0001381272 00000 n 
-0001380560 00000 n 
-0001381335 00000 n 
-0001381398 00000 n 
-0001381461 00000 n 
-0001381524 00000 n 
-0001381587 00000 n 
-0001381650 00000 n 
-0001381711 00000 n 
-0001386345 00000 n 
-0001386035 00000 n 
-0001382019 00000 n 
-0001386158 00000 n 
-0001389723 00000 n 
-0001390503 00000 n 
-0001389579 00000 n 
-0001386447 00000 n 
-0001389875 00000 n 
-0001390000 00000 n 
-0001390125 00000 n 
-0001390188 00000 n 
-0001390251 00000 n 
-0001390314 00000 n 
-0001390377 00000 n 
-0001390440 00000 n 
-0001393342 00000 n 
-0001394346 00000 n 
-0001393189 00000 n 
-0001390661 00000 n 
-0001393655 00000 n 
-0001393780 00000 n 
-0001393843 00000 n 
-0001393906 00000 n 
-0001393968 00000 n 
-0001394031 00000 n 
-0001394094 00000 n 
-0001394157 00000 n 
-0001394220 00000 n 
-0001394283 00000 n 
-0001393500 00000 n 
-0001396755 00000 n 
-0001396818 00000 n 
-0001396506 00000 n 
-0001394476 00000 n 
-0001396629 00000 n 
-0001403655 00000 n 
-0001400584 00000 n 
-0001396920 00000 n 
-0001400707 00000 n 
-0001400894 00000 n 
-0001400956 00000 n 
-0001401018 00000 n 
-0001401081 00000 n 
-0001401144 00000 n 
-0001401207 00000 n 
-0001401270 00000 n 
-0001401333 00000 n 
-0001401396 00000 n 
-0001401459 00000 n 
-0001401522 00000 n 
-0001401584 00000 n 
-0001401647 00000 n 
-0001401710 00000 n 
-0001401773 00000 n 
-0001401836 00000 n 
-0001401899 00000 n 
-0001401962 00000 n 
-0001402025 00000 n 
-0001402088 00000 n 
-0001402150 00000 n 
-0001402213 00000 n 
-0001402276 00000 n 
-0001402339 00000 n 
-0001402402 00000 n 
-0001402465 00000 n 
-0001402527 00000 n 
-0001402590 00000 n 
-0001402653 00000 n 
-0001402716 00000 n 
-0001402779 00000 n 
-0001402842 00000 n 
-0001402905 00000 n 
-0001402968 00000 n 
-0001403031 00000 n 
-0001403093 00000 n 
-0001403156 00000 n 
-0001403219 00000 n 
-0001403282 00000 n 
-0001403345 00000 n 
-0001403408 00000 n 
-0001403471 00000 n 
-0001403534 00000 n 
-0001403597 00000 n 
-0005134808 00000 n 
-0001406818 00000 n 
-0001409150 00000 n 
-0001406665 00000 n 
-0001403785 00000 n 
-0001407138 00000 n 
-0001406978 00000 n 
-0001407263 00000 n 
-0001407326 00000 n 
-0001407389 00000 n 
-0001407452 00000 n 
-0001407515 00000 n 
-0001407578 00000 n 
-0001407641 00000 n 
-0001407704 00000 n 
-0001407767 00000 n 
-0001407830 00000 n 
-0001407892 00000 n 
-0001407955 00000 n 
-0001408018 00000 n 
-0001408081 00000 n 
-0001408144 00000 n 
-0001408207 00000 n 
-0001408270 00000 n 
-0001408333 00000 n 
-0001408396 00000 n 
-0001408458 00000 n 
-0001408521 00000 n 
-0001408584 00000 n 
-0001408647 00000 n 
-0001408710 00000 n 
-0001408773 00000 n 
-0001408836 00000 n 
-0001408899 00000 n 
-0001409024 00000 n 
-0001409087 00000 n 
-0001419322 00000 n 
-0001414888 00000 n 
-0001412125 00000 n 
-0001409294 00000 n 
-0001412248 00000 n 
-0001412373 00000 n 
-0001412436 00000 n 
-0001412499 00000 n 
-0001412562 00000 n 
-0001412625 00000 n 
-0001412686 00000 n 
-0001412749 00000 n 
-0001412812 00000 n 
-0001412875 00000 n 
-0001412937 00000 n 
-0001413000 00000 n 
-0001413063 00000 n 
-0001413126 00000 n 
-0001413189 00000 n 
-0001413252 00000 n 
-0001413315 00000 n 
-0001413378 00000 n 
-0001413441 00000 n 
-0001413504 00000 n 
-0001413567 00000 n 
-0001413630 00000 n 
-0001413693 00000 n 
-0001413756 00000 n 
-0001413819 00000 n 
-0001413882 00000 n 
-0001413945 00000 n 
-0001414008 00000 n 
-0001414071 00000 n 
-0001414134 00000 n 
-0001414197 00000 n 
-0001414259 00000 n 
-0001414322 00000 n 
-0001414385 00000 n 
-0001414448 00000 n 
-0001414510 00000 n 
-0001414573 00000 n 
-0001414636 00000 n 
-0001414699 00000 n 
-0001414762 00000 n 
-0001414825 00000 n 
-0001418886 00000 n 
-0001421020 00000 n 
-0001418733 00000 n 
-0001415018 00000 n 
-0001419197 00000 n 
-0001419042 00000 n 
-0001419448 00000 n 
-0001419511 00000 n 
-0001419574 00000 n 
-0001419637 00000 n 
-0001419700 00000 n 
-0001419763 00000 n 
-0001419825 00000 n 
-0001419888 00000 n 
-0001419951 00000 n 
-0001420014 00000 n 
-0001420077 00000 n 
-0001420140 00000 n 
-0001420203 00000 n 
-0001420266 00000 n 
-0001420329 00000 n 
-0001420391 00000 n 
-0001420454 00000 n 
-0001420517 00000 n 
-0001420580 00000 n 
-0001420643 00000 n 
-0001420706 00000 n 
-0001420769 00000 n 
-0001420832 00000 n 
-0001420895 00000 n 
-0001420957 00000 n 
-0001426732 00000 n 
-0001423718 00000 n 
-0001421150 00000 n 
-0001423841 00000 n 
-0001423904 00000 n 
-0001423967 00000 n 
-0001424030 00000 n 
-0001424093 00000 n 
-0001424156 00000 n 
-0001424219 00000 n 
-0001424282 00000 n 
-0001424345 00000 n 
-0001424407 00000 n 
-0001424470 00000 n 
-0001424533 00000 n 
-0001424596 00000 n 
-0001424659 00000 n 
-0001424722 00000 n 
-0001424785 00000 n 
-0001424848 00000 n 
-0001424911 00000 n 
-0001424973 00000 n 
-0001425036 00000 n 
-0001425099 00000 n 
-0001425162 00000 n 
-0001425225 00000 n 
-0001425288 00000 n 
-0001425351 00000 n 
-0001425476 00000 n 
-0001425539 00000 n 
-0001425602 00000 n 
-0001425665 00000 n 
-0001425728 00000 n 
-0001425790 00000 n 
-0001425853 00000 n 
-0001425916 00000 n 
-0001425979 00000 n 
-0001426042 00000 n 
-0001426105 00000 n 
-0001426168 00000 n 
-0001426231 00000 n 
-0001426294 00000 n 
-0001426355 00000 n 
-0001426418 00000 n 
-0001426481 00000 n 
-0001426544 00000 n 
-0001426607 00000 n 
-0001426669 00000 n 
-0001432001 00000 n 
-0001430186 00000 n 
-0001426848 00000 n 
-0001430309 00000 n 
-0001430372 00000 n 
-0001430435 00000 n 
-0001430498 00000 n 
-0001430561 00000 n 
-0001430624 00000 n 
-0001430687 00000 n 
-0001430750 00000 n 
-0001430813 00000 n 
-0001430875 00000 n 
-0001430938 00000 n 
-0001431001 00000 n 
-0001431064 00000 n 
-0001431127 00000 n 
-0001431190 00000 n 
-0001431253 00000 n 
-0001431316 00000 n 
-0001431379 00000 n 
-0001431441 00000 n 
-0001431504 00000 n 
-0001431629 00000 n 
-0001431692 00000 n 
-0001431754 00000 n 
-0001431814 00000 n 
-0001435995 00000 n 
-0001436163 00000 n 
-0001440469 00000 n 
-0001440640 00000 n 
-0001440852 00000 n 
-0001436798 00000 n 
-0001435833 00000 n 
-0001432174 00000 n 
-0001436550 00000 n 
-0001436357 00000 n 
-0005134934 00000 n 
-0001441042 00000 n 
-0001441255 00000 n 
-0001441448 00000 n 
-0001441643 00000 n 
-0001441844 00000 n 
-0001442016 00000 n 
-0001442169 00000 n 
-0001443156 00000 n 
-0001440244 00000 n 
-0001436942 00000 n 
-0001442340 00000 n 
-0001442527 00000 n 
-0001442590 00000 n 
-0001442653 00000 n 
-0001442716 00000 n 
-0001442779 00000 n 
-0001442842 00000 n 
-0001442905 00000 n 
-0001442968 00000 n 
-0001443030 00000 n 
-0001443093 00000 n 
-0001449168 00000 n 
-0001446343 00000 n 
-0001443286 00000 n 
-0001446466 00000 n 
-0001446591 00000 n 
-0001446652 00000 n 
-0001446715 00000 n 
-0001446778 00000 n 
-0001446841 00000 n 
-0001446904 00000 n 
-0001446967 00000 n 
-0001447030 00000 n 
-0001447093 00000 n 
-0001447156 00000 n 
-0001447219 00000 n 
-0001447282 00000 n 
-0001447345 00000 n 
-0001447408 00000 n 
-0001447471 00000 n 
-0001447534 00000 n 
-0001447597 00000 n 
-0001447660 00000 n 
-0001447723 00000 n 
-0001447785 00000 n 
-0001447848 00000 n 
-0001447911 00000 n 
-0001447974 00000 n 
-0001448037 00000 n 
-0001448100 00000 n 
-0001448163 00000 n 
-0001448226 00000 n 
-0001448289 00000 n 
-0001448351 00000 n 
-0001448414 00000 n 
-0001448477 00000 n 
-0001448540 00000 n 
-0001448603 00000 n 
-0001448666 00000 n 
-0001448729 00000 n 
-0001448792 00000 n 
-0001448855 00000 n 
-0001448918 00000 n 
-0001448981 00000 n 
-0001449044 00000 n 
-0001455598 00000 n 
-0001451765 00000 n 
-0001449298 00000 n 
-0001451888 00000 n 
-0001451951 00000 n 
-0001452014 00000 n 
-0001452077 00000 n 
-0001452140 00000 n 
-0001452203 00000 n 
-0001452266 00000 n 
-0001452329 00000 n 
-0001452392 00000 n 
-0001452454 00000 n 
-0001452517 00000 n 
-0001452580 00000 n 
-0001452643 00000 n 
-0001452706 00000 n 
-0001452769 00000 n 
-0001452832 00000 n 
-0001452895 00000 n 
-0001452958 00000 n 
-0001453020 00000 n 
-0001453083 00000 n 
-0001453146 00000 n 
-0001453209 00000 n 
-0001453272 00000 n 
-0001453335 00000 n 
-0001453398 00000 n 
-0001453461 00000 n 
-0001453524 00000 n 
-0001453586 00000 n 
-0001453649 00000 n 
-0001453712 00000 n 
-0001453775 00000 n 
-0001453838 00000 n 
-0001453901 00000 n 
-0001453964 00000 n 
-0001454027 00000 n 
-0001454090 00000 n 
-0001454152 00000 n 
-0001454215 00000 n 
-0001454278 00000 n 
-0001454341 00000 n 
-0001454404 00000 n 
-0001454467 00000 n 
-0001454530 00000 n 
-0001454593 00000 n 
-0001454656 00000 n 
-0001454719 00000 n 
-0001454782 00000 n 
-0001454845 00000 n 
-0001454908 00000 n 
-0001454971 00000 n 
-0001455034 00000 n 
-0001455097 00000 n 
-0001455160 00000 n 
-0001455223 00000 n 
-0001455286 00000 n 
-0001455348 00000 n 
-0001455411 00000 n 
-0001455474 00000 n 
-0001455536 00000 n 
-0001458995 00000 n 
-0001460973 00000 n 
-0001458851 00000 n 
-0001455714 00000 n 
-0001459149 00000 n 
-0001459212 00000 n 
-0001459275 00000 n 
-0001459400 00000 n 
-0001459463 00000 n 
-0001459526 00000 n 
-0001459588 00000 n 
-0001459651 00000 n 
-0001459714 00000 n 
-0001459777 00000 n 
-0001459840 00000 n 
-0001459903 00000 n 
-0001459966 00000 n 
-0001460029 00000 n 
-0001460092 00000 n 
-0001460155 00000 n 
-0001460218 00000 n 
-0001460281 00000 n 
-0001460344 00000 n 
-0001460407 00000 n 
-0001460470 00000 n 
-0001460533 00000 n 
-0001460595 00000 n 
-0001460658 00000 n 
-0001460721 00000 n 
-0001460784 00000 n 
-0001460847 00000 n 
-0001460910 00000 n 
-0001469451 00000 n 
-0001467353 00000 n 
-0001469638 00000 n 
-0001467209 00000 n 
-0001461116 00000 n 
-0001467502 00000 n 
-0001467565 00000 n 
-0001467628 00000 n 
-0001467691 00000 n 
-0001467754 00000 n 
-0001467816 00000 n 
-0001467879 00000 n 
-0001467942 00000 n 
-0001468005 00000 n 
-0001468068 00000 n 
-0001468131 00000 n 
-0001468194 00000 n 
-0001468257 00000 n 
-0001468320 00000 n 
-0001468382 00000 n 
-0001468445 00000 n 
-0001468508 00000 n 
-0001468571 00000 n 
-0001468634 00000 n 
-0001468697 00000 n 
-0001468760 00000 n 
-0001468823 00000 n 
-0001468886 00000 n 
-0001468947 00000 n 
-0001469010 00000 n 
-0001469073 00000 n 
-0001469136 00000 n 
-0001469199 00000 n 
-0001469262 00000 n 
-0001469325 00000 n 
-0001469388 00000 n 
-0001473211 00000 n 
-0001473370 00000 n 
-0001473529 00000 n 
-0001475124 00000 n 
-0001473049 00000 n 
-0001469809 00000 n 
-0001473681 00000 n 
-0001473744 00000 n 
-0001473806 00000 n 
-0001473867 00000 n 
-0001473930 00000 n 
-0001473993 00000 n 
-0001474180 00000 n 
-0001474243 00000 n 
-0001474306 00000 n 
-0001474369 00000 n 
-0001474431 00000 n 
-0001474494 00000 n 
-0001474557 00000 n 
-0001474620 00000 n 
-0001474683 00000 n 
-0001474746 00000 n 
-0001474809 00000 n 
-0001474872 00000 n 
-0001474935 00000 n 
-0001474998 00000 n 
-0001475061 00000 n 
-0005135060 00000 n 
-0001478821 00000 n 
-0001482773 00000 n 
-0001478884 00000 n 
-0001478572 00000 n 
-0001475254 00000 n 
-0001478695 00000 n 
-0001482493 00000 n 
-0001484469 00000 n 
-0001482349 00000 n 
-0001479014 00000 n 
-0001482647 00000 n 
-0001482836 00000 n 
-0001482899 00000 n 
-0001482962 00000 n 
-0001483025 00000 n 
-0001483088 00000 n 
-0001483150 00000 n 
-0001483213 00000 n 
-0001483276 00000 n 
-0001483339 00000 n 
-0001483402 00000 n 
-0001483465 00000 n 
-0001483528 00000 n 
-0001483591 00000 n 
-0001483654 00000 n 
-0001483716 00000 n 
-0001483779 00000 n 
-0001483842 00000 n 
-0001483905 00000 n 
-0001483968 00000 n 
-0001484031 00000 n 
-0001484094 00000 n 
-0001484157 00000 n 
-0001484220 00000 n 
-0001484407 00000 n 
-0001486232 00000 n 
-0001486699 00000 n 
-0001486088 00000 n 
-0001484627 00000 n 
-0001486388 00000 n 
-0001490596 00000 n 
-0001531541 00000 n 
-0001489369 00000 n 
-0001488998 00000 n 
-0001486872 00000 n 
-0001489121 00000 n 
-0001573799 00000 n 
-0001574106 00000 n 
-0001589645 00000 n 
-0001578412 00000 n 
-0001574574 00000 n 
-0001490434 00000 n 
-0001489556 00000 n 
-0001574259 00000 n 
-0001574385 00000 n 
-0001574511 00000 n 
-0001573954 00000 n 
-0001521339 00000 n 
-0001562952 00000 n 
-0001590615 00000 n 
-0001578268 00000 n 
-0001574729 00000 n 
-0001589808 00000 n 
-0001589934 00000 n 
-0001590059 00000 n 
-0001590121 00000 n 
-0001590184 00000 n 
-0001590247 00000 n 
-0001590308 00000 n 
-0001590371 00000 n 
-0001590434 00000 n 
-0001590495 00000 n 
-0001590557 00000 n 
-0005135186 00000 n 
-0001587594 00000 n 
-0001595464 00000 n 
-0001595154 00000 n 
-0001590783 00000 n 
-0001595277 00000 n 
-0001599558 00000 n 
-0001599708 00000 n 
-0001600482 00000 n 
-0001599405 00000 n 
-0001595594 00000 n 
-0001599856 00000 n 
-0001599919 00000 n 
-0001599982 00000 n 
-0001600045 00000 n 
-0001600108 00000 n 
-0001600233 00000 n 
-0001600296 00000 n 
-0001604434 00000 n 
-0001608627 00000 n 
-0001604936 00000 n 
-0001604185 00000 n 
-0001600612 00000 n 
-0001604308 00000 n 
-0001604559 00000 n 
-0001604622 00000 n 
-0001604685 00000 n 
-0001604748 00000 n 
-0001604811 00000 n 
-0001608783 00000 n 
-0001608936 00000 n 
-0001611733 00000 n 
-0001608465 00000 n 
-0001605066 00000 n 
-0001609092 00000 n 
-0001609217 00000 n 
-0001609279 00000 n 
-0001609342 00000 n 
-0001609405 00000 n 
-0001609468 00000 n 
-0001609531 00000 n 
-0001609594 00000 n 
-0001609657 00000 n 
-0001609720 00000 n 
-0001609782 00000 n 
-0001609845 00000 n 
-0001609908 00000 n 
-0001609971 00000 n 
-0001610034 00000 n 
-0001610097 00000 n 
-0001610160 00000 n 
-0001610223 00000 n 
-0001610286 00000 n 
-0001610349 00000 n 
-0001610412 00000 n 
-0001610475 00000 n 
-0001610538 00000 n 
-0001610601 00000 n 
-0001610726 00000 n 
-0001610789 00000 n 
-0001610852 00000 n 
-0001610915 00000 n 
-0001610978 00000 n 
-0001611041 00000 n 
-0001611104 00000 n 
-0001611167 00000 n 
-0001611229 00000 n 
-0001611292 00000 n 
-0001611355 00000 n 
-0001611418 00000 n 
-0001611481 00000 n 
-0001611544 00000 n 
-0001611607 00000 n 
-0001611670 00000 n 
-0001615691 00000 n 
-0001614752 00000 n 
-0001611891 00000 n 
-0001614875 00000 n 
-0001615124 00000 n 
-0001615187 00000 n 
-0001615250 00000 n 
-0001615313 00000 n 
-0001615376 00000 n 
-0001615439 00000 n 
-0001615502 00000 n 
-0001615565 00000 n 
-0001615628 00000 n 
-0001619364 00000 n 
-0001618991 00000 n 
-0001615835 00000 n 
-0001619114 00000 n 
-0005135312 00000 n 
-0001624334 00000 n 
-0001623209 00000 n 
-0001619480 00000 n 
-0001623332 00000 n 
-0001623642 00000 n 
-0001623705 00000 n 
-0001623768 00000 n 
-0001623831 00000 n 
-0001623894 00000 n 
-0001623957 00000 n 
-0001624020 00000 n 
-0001624083 00000 n 
-0001624146 00000 n 
-0001624209 00000 n 
-0001624271 00000 n 
-0001630313 00000 n 
-0001627737 00000 n 
-0001624478 00000 n 
-0001627860 00000 n 
-0001627923 00000 n 
-0001627986 00000 n 
-0001628049 00000 n 
-0001628112 00000 n 
-0001628175 00000 n 
-0001628237 00000 n 
-0001628300 00000 n 
-0001628363 00000 n 
-0001628426 00000 n 
-0001628489 00000 n 
-0001628552 00000 n 
-0001628615 00000 n 
-0001628678 00000 n 
-0001628741 00000 n 
-0001628803 00000 n 
-0001628866 00000 n 
-0001628929 00000 n 
-0001628992 00000 n 
-0001629055 00000 n 
-0001629118 00000 n 
-0001629181 00000 n 
-0001629244 00000 n 
-0001629307 00000 n 
-0001629370 00000 n 
-0001629433 00000 n 
-0001629496 00000 n 
-0001629559 00000 n 
-0001629622 00000 n 
-0001629685 00000 n 
-0001629748 00000 n 
-0001629811 00000 n 
-0001629873 00000 n 
-0001629936 00000 n 
-0001629999 00000 n 
-0001630062 00000 n 
-0001630125 00000 n 
-0001630188 00000 n 
-0001634705 00000 n 
-0001633513 00000 n 
-0001630457 00000 n 
-0001633636 00000 n 
-0001633699 00000 n 
-0001633762 00000 n 
-0001633825 00000 n 
-0001633888 00000 n 
-0001633951 00000 n 
-0001634014 00000 n 
-0001634077 00000 n 
-0001634140 00000 n 
-0001634203 00000 n 
-0001634328 00000 n 
-0001634391 00000 n 
-0001634517 00000 n 
-0001634580 00000 n 
-0001634643 00000 n 
-0001638151 00000 n 
-0001640822 00000 n 
-0001638007 00000 n 
-0001634821 00000 n 
-0001638307 00000 n 
-0001638433 00000 n 
-0001638496 00000 n 
-0001638559 00000 n 
-0001638622 00000 n 
-0001638685 00000 n 
-0001638748 00000 n 
-0001638811 00000 n 
-0001638874 00000 n 
-0001638937 00000 n 
-0001639000 00000 n 
-0001639061 00000 n 
-0001639124 00000 n 
-0001639187 00000 n 
-0001639249 00000 n 
-0001639311 00000 n 
-0001639374 00000 n 
-0001639437 00000 n 
-0001639500 00000 n 
-0001639563 00000 n 
-0001639626 00000 n 
-0001639689 00000 n 
-0001639752 00000 n 
-0001639815 00000 n 
-0001639878 00000 n 
-0001639941 00000 n 
-0001640004 00000 n 
-0001640067 00000 n 
-0001640130 00000 n 
-0001640193 00000 n 
-0001640256 00000 n 
-0001640319 00000 n 
-0001640382 00000 n 
-0001640445 00000 n 
-0001640508 00000 n 
-0001640571 00000 n 
-0001640633 00000 n 
-0001640696 00000 n 
-0001640759 00000 n 
-0001645830 00000 n 
-0001643886 00000 n 
-0001640952 00000 n 
-0001644009 00000 n 
-0001644072 00000 n 
-0001644135 00000 n 
-0001644197 00000 n 
-0001644260 00000 n 
-0001644323 00000 n 
-0001644386 00000 n 
-0001644449 00000 n 
-0001644512 00000 n 
-0001644575 00000 n 
-0001644638 00000 n 
-0001644700 00000 n 
-0001644763 00000 n 
-0001644826 00000 n 
-0001644889 00000 n 
-0001645015 00000 n 
-0001645078 00000 n 
-0001645141 00000 n 
-0001645204 00000 n 
-0001645266 00000 n 
-0001645329 00000 n 
-0001645392 00000 n 
-0001645455 00000 n 
-0001645518 00000 n 
-0001645580 00000 n 
-0001645643 00000 n 
-0001645706 00000 n 
-0001645768 00000 n 
-0001650285 00000 n 
-0001650447 00000 n 
-0001650759 00000 n 
-0001652860 00000 n 
-0001650114 00000 n 
-0001645960 00000 n 
-0001650915 00000 n 
-0001651041 00000 n 
-0001651104 00000 n 
-0001651167 00000 n 
-0001651230 00000 n 
-0001651293 00000 n 
-0001651356 00000 n 
-0001651419 00000 n 
-0001651482 00000 n 
-0001651545 00000 n 
-0001651608 00000 n 
-0001651670 00000 n 
-0001651733 00000 n 
-0001651796 00000 n 
-0001651859 00000 n 
-0001651922 00000 n 
-0001651985 00000 n 
-0001652048 00000 n 
-0001652111 00000 n 
-0001652174 00000 n 
-0001652237 00000 n 
-0001652299 00000 n 
-0001652361 00000 n 
-0001652424 00000 n 
-0001652487 00000 n 
-0001652550 00000 n 
-0001652611 00000 n 
-0001652672 00000 n 
-0001650604 00000 n 
-0001652735 00000 n 
-0005135438 00000 n 
-0001655550 00000 n 
-0001657656 00000 n 
-0001655406 00000 n 
-0001653017 00000 n 
-0001655704 00000 n 
-0001655830 00000 n 
-0001655893 00000 n 
-0001655956 00000 n 
-0001656019 00000 n 
-0001656082 00000 n 
-0001656145 00000 n 
-0001656208 00000 n 
-0001656271 00000 n 
-0001656334 00000 n 
-0001656397 00000 n 
-0001656460 00000 n 
-0001656523 00000 n 
-0001656586 00000 n 
-0001656712 00000 n 
-0001656775 00000 n 
-0001656838 00000 n 
-0001656901 00000 n 
-0001656964 00000 n 
-0001657090 00000 n 
-0001657153 00000 n 
-0001657216 00000 n 
-0001657279 00000 n 
-0001657342 00000 n 
-0001657405 00000 n 
-0001657467 00000 n 
-0001657530 00000 n 
-0001657593 00000 n 
-0001661168 00000 n 
-0001663266 00000 n 
-0001661024 00000 n 
-0001657786 00000 n 
-0001661317 00000 n 
-0001661443 00000 n 
-0001661506 00000 n 
-0001661569 00000 n 
-0001661632 00000 n 
-0001661695 00000 n 
-0001661820 00000 n 
-0001661883 00000 n 
-0001661946 00000 n 
-0001662009 00000 n 
-0001662072 00000 n 
-0001662135 00000 n 
-0001662198 00000 n 
-0001662260 00000 n 
-0001662323 00000 n 
-0001662386 00000 n 
-0001662449 00000 n 
-0001662512 00000 n 
-0001662575 00000 n 
-0001662638 00000 n 
-0001662701 00000 n 
-0001662764 00000 n 
-0001662827 00000 n 
-0001662890 00000 n 
-0001662953 00000 n 
-0001663016 00000 n 
-0001663079 00000 n 
-0001663141 00000 n 
-0001663204 00000 n 
-0001669464 00000 n 
-0001666134 00000 n 
-0001663396 00000 n 
-0001666257 00000 n 
-0001666320 00000 n 
-0001666383 00000 n 
-0001666446 00000 n 
-0001666509 00000 n 
-0001666572 00000 n 
-0001666635 00000 n 
-0001666697 00000 n 
-0001666758 00000 n 
-0001666821 00000 n 
-0001666884 00000 n 
-0001666947 00000 n 
-0001667010 00000 n 
-0001667073 00000 n 
-0001667136 00000 n 
-0001667199 00000 n 
-0001667262 00000 n 
-0001667325 00000 n 
-0001667388 00000 n 
-0001667451 00000 n 
-0001667514 00000 n 
-0001667577 00000 n 
-0001667640 00000 n 
-0001667703 00000 n 
-0001667766 00000 n 
-0001667829 00000 n 
-0001667892 00000 n 
-0001667954 00000 n 
-0001668017 00000 n 
-0001668080 00000 n 
-0001668143 00000 n 
-0001668206 00000 n 
-0001668269 00000 n 
-0001668332 00000 n 
-0001668395 00000 n 
-0001668458 00000 n 
-0001668520 00000 n 
-0001668583 00000 n 
-0001668646 00000 n 
-0001668709 00000 n 
-0001668772 00000 n 
-0001668835 00000 n 
-0001668898 00000 n 
-0001668961 00000 n 
-0001669024 00000 n 
-0001669086 00000 n 
-0001669149 00000 n 
-0001669212 00000 n 
-0001669275 00000 n 
-0001669338 00000 n 
-0001669401 00000 n 
-0001674585 00000 n 
-0001672635 00000 n 
-0001669566 00000 n 
-0001672758 00000 n 
-0001672947 00000 n 
-0001673010 00000 n 
-0001673073 00000 n 
-0001673136 00000 n 
-0001673199 00000 n 
-0001673262 00000 n 
-0001673325 00000 n 
-0001673388 00000 n 
-0001673451 00000 n 
-0001673514 00000 n 
-0001673577 00000 n 
-0001673640 00000 n 
-0001673703 00000 n 
-0001673766 00000 n 
-0001673829 00000 n 
-0001673892 00000 n 
-0001673955 00000 n 
-0001674018 00000 n 
-0001674081 00000 n 
-0001674144 00000 n 
-0001674207 00000 n 
-0001674270 00000 n 
-0001674333 00000 n 
-0001674396 00000 n 
-0001674459 00000 n 
-0001674522 00000 n 
-0001677955 00000 n 
-0001679915 00000 n 
-0001677811 00000 n 
-0001674701 00000 n 
-0001678156 00000 n 
-0001678219 00000 n 
-0001678282 00000 n 
-0001678343 00000 n 
-0001678406 00000 n 
-0001678469 00000 n 
-0001678532 00000 n 
-0001678595 00000 n 
-0001678658 00000 n 
-0001678721 00000 n 
-0001678784 00000 n 
-0001678847 00000 n 
-0001678973 00000 n 
-0001679035 00000 n 
-0001679098 00000 n 
-0001679160 00000 n 
-0001679223 00000 n 
-0001679286 00000 n 
-0001679349 00000 n 
-0001679412 00000 n 
-0001679475 00000 n 
-0001679538 00000 n 
-0001679601 00000 n 
-0001679664 00000 n 
-0001679727 00000 n 
-0001679790 00000 n 
-0001679853 00000 n 
-0001685342 00000 n 
-0001682833 00000 n 
-0001680045 00000 n 
-0001682956 00000 n 
-0001683019 00000 n 
-0001683082 00000 n 
-0001683145 00000 n 
-0001683208 00000 n 
-0001683271 00000 n 
-0001683334 00000 n 
-0001683397 00000 n 
-0001683460 00000 n 
-0001683522 00000 n 
-0001683585 00000 n 
-0001683648 00000 n 
-0001683711 00000 n 
-0001683774 00000 n 
-0001683837 00000 n 
-0001683900 00000 n 
-0001683963 00000 n 
-0001684026 00000 n 
-0001684087 00000 n 
-0001684150 00000 n 
-0001684213 00000 n 
-0001684276 00000 n 
-0001684339 00000 n 
-0001684402 00000 n 
-0001684465 00000 n 
-0001684527 00000 n 
-0001684588 00000 n 
-0001684651 00000 n 
-0001684714 00000 n 
-0001684777 00000 n 
-0001684840 00000 n 
-0001684903 00000 n 
-0001684966 00000 n 
-0001685029 00000 n 
-0001685092 00000 n 
-0001685155 00000 n 
-0001685217 00000 n 
-0005135564 00000 n 
-0001689774 00000 n 
-0001688769 00000 n 
-0001685458 00000 n 
-0001688892 00000 n 
-0001688955 00000 n 
-0001689018 00000 n 
-0001689081 00000 n 
-0001689144 00000 n 
-0001689207 00000 n 
-0001689270 00000 n 
-0001689333 00000 n 
-0001689396 00000 n 
-0001689459 00000 n 
-0001689522 00000 n 
-0001689585 00000 n 
-0001693198 00000 n 
-0001695116 00000 n 
-0001693054 00000 n 
-0001689918 00000 n 
-0001693355 00000 n 
-0001693418 00000 n 
-0001693481 00000 n 
-0001693544 00000 n 
-0001693607 00000 n 
-0001693670 00000 n 
-0001693733 00000 n 
-0001693796 00000 n 
-0001693858 00000 n 
-0001693921 00000 n 
-0001693984 00000 n 
-0001694047 00000 n 
-0001694110 00000 n 
-0001694173 00000 n 
-0001694236 00000 n 
-0001694298 00000 n 
-0001694361 00000 n 
-0001694424 00000 n 
-0001694487 00000 n 
-0001694550 00000 n 
-0001694612 00000 n 
-0001694675 00000 n 
-0001694738 00000 n 
-0001694801 00000 n 
-0001694864 00000 n 
-0001694927 00000 n 
-0001699413 00000 n 
-0001700382 00000 n 
-0001699269 00000 n 
-0001695246 00000 n 
-0001699563 00000 n 
-0001699626 00000 n 
-0001699689 00000 n 
-0001699815 00000 n 
-0001699878 00000 n 
-0001699941 00000 n 
-0001700004 00000 n 
-0001700067 00000 n 
-0001700130 00000 n 
-0001700193 00000 n 
-0001700256 00000 n 
-0001705112 00000 n 
-0001704297 00000 n 
-0001700526 00000 n 
-0001704420 00000 n 
-0001704483 00000 n 
-0001704546 00000 n 
-0001704609 00000 n 
-0001704672 00000 n 
-0001704735 00000 n 
-0001704798 00000 n 
-0001704861 00000 n 
-0001704987 00000 n 
-0001705049 00000 n 
-0001709598 00000 n 
-0001708847 00000 n 
-0001705270 00000 n 
-0001708970 00000 n 
-0001709096 00000 n 
-0001709159 00000 n 
-0001709221 00000 n 
-0001709284 00000 n 
-0001709346 00000 n 
-0001709472 00000 n 
-0001709535 00000 n 
-0001714155 00000 n 
-0001712396 00000 n 
-0001709756 00000 n 
-0001712519 00000 n 
-0001712582 00000 n 
-0001712645 00000 n 
-0001712708 00000 n 
-0001712771 00000 n 
-0001712834 00000 n 
-0001712897 00000 n 
-0001712960 00000 n 
-0001713023 00000 n 
-0001713086 00000 n 
-0001713149 00000 n 
-0001713338 00000 n 
-0001713401 00000 n 
-0001713464 00000 n 
-0001713527 00000 n 
-0001713590 00000 n 
-0001713653 00000 n 
-0001713716 00000 n 
-0001713779 00000 n 
-0001713841 00000 n 
-0001713904 00000 n 
-0001714030 00000 n 
-0001714093 00000 n 
-0005135690 00000 n 
-0001717949 00000 n 
-0001716631 00000 n 
-0001714285 00000 n 
-0001716754 00000 n 
-0001716817 00000 n 
-0001716880 00000 n 
-0001716943 00000 n 
-0001717006 00000 n 
-0001717069 00000 n 
-0001717132 00000 n 
-0001717384 00000 n 
-0001717447 00000 n 
-0001717510 00000 n 
-0001717571 00000 n 
-0001717697 00000 n 
-0001717760 00000 n 
-0001717823 00000 n 
-0001717886 00000 n 
-0001721564 00000 n 
-0001719994 00000 n 
-0001718079 00000 n 
-0001720117 00000 n 
-0001720243 00000 n 
-0001720306 00000 n 
-0001720369 00000 n 
-0001720432 00000 n 
-0001720495 00000 n 
-0001720558 00000 n 
-0001720621 00000 n 
-0001720684 00000 n 
-0001720747 00000 n 
-0001720809 00000 n 
-0001720872 00000 n 
-0001720935 00000 n 
-0001720997 00000 n 
-0001721060 00000 n 
-0001721123 00000 n 
-0001721186 00000 n 
-0001721249 00000 n 
-0001721312 00000 n 
-0001721375 00000 n 
-0001721438 00000 n 
-0001721501 00000 n 
-0001724847 00000 n 
-0001725316 00000 n 
-0001724703 00000 n 
-0001721694 00000 n 
-0001725001 00000 n 
-0001729974 00000 n 
-0001729725 00000 n 
-0001725446 00000 n 
-0001729848 00000 n 
-0001734330 00000 n 
-0001734018 00000 n 
-0001730118 00000 n 
-0001734141 00000 n 
-0001737998 00000 n 
-0001744770 00000 n 
-0001740403 00000 n 
-0001737854 00000 n 
-0001734474 00000 n 
-0001738152 00000 n 
-0001738404 00000 n 
-0001738467 00000 n 
-0001738530 00000 n 
-0001738593 00000 n 
-0001738655 00000 n 
-0001738718 00000 n 
-0001738781 00000 n 
-0001738844 00000 n 
-0001738907 00000 n 
-0001738970 00000 n 
-0001739033 00000 n 
-0001739096 00000 n 
-0001739159 00000 n 
-0001739222 00000 n 
-0001739285 00000 n 
-0001739347 00000 n 
-0001739410 00000 n 
-0001739473 00000 n 
-0001739536 00000 n 
-0001739599 00000 n 
-0001739662 00000 n 
-0001739725 00000 n 
-0001739788 00000 n 
-0001739849 00000 n 
-0001739910 00000 n 
-0001739973 00000 n 
-0001740034 00000 n 
-0001740095 00000 n 
-0001740158 00000 n 
-0001740219 00000 n 
-0001740280 00000 n 
-0001740341 00000 n 
-0005135816 00000 n 
-0001747106 00000 n 
-0001744626 00000 n 
-0001740560 00000 n 
-0001744924 00000 n 
-0001745050 00000 n 
-0001745113 00000 n 
-0001745176 00000 n 
-0001745239 00000 n 
-0001745301 00000 n 
-0001745364 00000 n 
-0001745427 00000 n 
-0001745490 00000 n 
-0001745553 00000 n 
-0001745616 00000 n 
-0001745679 00000 n 
-0001745742 00000 n 
-0001745805 00000 n 
-0001745867 00000 n 
-0001745930 00000 n 
-0001745993 00000 n 
-0001746056 00000 n 
-0001746119 00000 n 
-0001746182 00000 n 
-0001746245 00000 n 
-0001746306 00000 n 
-0001746366 00000 n 
-0001746429 00000 n 
-0001746490 00000 n 
-0001746551 00000 n 
-0001746612 00000 n 
-0001746675 00000 n 
-0001746736 00000 n 
-0001746797 00000 n 
-0001746858 00000 n 
-0001746919 00000 n 
-0001746980 00000 n 
-0001752069 00000 n 
-0001754481 00000 n 
-0001751925 00000 n 
-0001747277 00000 n 
-0001752227 00000 n 
-0001752290 00000 n 
-0001752353 00000 n 
-0001752416 00000 n 
-0001752479 00000 n 
-0001752542 00000 n 
-0001752605 00000 n 
-0001752668 00000 n 
-0001752731 00000 n 
-0001752793 00000 n 
-0001752856 00000 n 
-0001752919 00000 n 
-0001752982 00000 n 
-0001753045 00000 n 
-0001753108 00000 n 
-0001753171 00000 n 
-0001753234 00000 n 
-0001753297 00000 n 
-0001753359 00000 n 
-0001753422 00000 n 
-0001753485 00000 n 
-0001753548 00000 n 
-0001753611 00000 n 
-0001753674 00000 n 
-0001753737 00000 n 
-0001753800 00000 n 
-0001753863 00000 n 
-0001753926 00000 n 
-0001753989 00000 n 
-0001754052 00000 n 
-0001754115 00000 n 
-0001754177 00000 n 
-0001754240 00000 n 
-0001754303 00000 n 
-0001754364 00000 n 
-0001754425 00000 n 
-0001759438 00000 n 
-0001759594 00000 n 
-0001762306 00000 n 
-0001759285 00000 n 
-0001754638 00000 n 
-0001759744 00000 n 
-0001759807 00000 n 
-0001759870 00000 n 
-0001759931 00000 n 
-0001759992 00000 n 
-0001760053 00000 n 
-0001760114 00000 n 
-0001760175 00000 n 
-0001760238 00000 n 
-0001760301 00000 n 
-0001760364 00000 n 
-0001760424 00000 n 
-0001760548 00000 n 
-0001760611 00000 n 
-0001760674 00000 n 
-0001760737 00000 n 
-0001760800 00000 n 
-0001760863 00000 n 
-0001760926 00000 n 
-0001760989 00000 n 
-0001761052 00000 n 
-0001761114 00000 n 
-0001761177 00000 n 
-0001761240 00000 n 
-0001761303 00000 n 
-0001761366 00000 n 
-0001761429 00000 n 
-0001761492 00000 n 
-0001761555 00000 n 
-0001761618 00000 n 
-0001761679 00000 n 
-0001761740 00000 n 
-0001761803 00000 n 
-0001761866 00000 n 
-0001761929 00000 n 
-0001761992 00000 n 
-0001762055 00000 n 
-0001762118 00000 n 
-0001762181 00000 n 
-0001762244 00000 n 
-0003885311 00000 n 
-0001765387 00000 n 
-0001768258 00000 n 
-0001765243 00000 n 
-0001762477 00000 n 
-0001765553 00000 n 
-0001765616 00000 n 
-0001765679 00000 n 
-0001765742 00000 n 
-0001765805 00000 n 
-0001765868 00000 n 
-0001765931 00000 n 
-0001765993 00000 n 
-0001766056 00000 n 
-0001766119 00000 n 
-0001766182 00000 n 
-0001766245 00000 n 
-0001766308 00000 n 
-0001766371 00000 n 
-0001766434 00000 n 
-0001766496 00000 n 
-0001766559 00000 n 
-0001766622 00000 n 
-0001766685 00000 n 
-0001766748 00000 n 
-0001766811 00000 n 
-0001766874 00000 n 
-0001766937 00000 n 
-0001767000 00000 n 
-0001767063 00000 n 
-0001767126 00000 n 
-0001767189 00000 n 
-0001767252 00000 n 
-0001767315 00000 n 
-0001767378 00000 n 
-0001767441 00000 n 
-0001767503 00000 n 
-0001767566 00000 n 
-0001767629 00000 n 
-0001767692 00000 n 
-0001767755 00000 n 
-0001767818 00000 n 
-0001767881 00000 n 
-0001767944 00000 n 
-0001768006 00000 n 
-0001768069 00000 n 
-0001768132 00000 n 
-0001768195 00000 n 
-0001771124 00000 n 
-0001773255 00000 n 
-0001770980 00000 n 
-0001768388 00000 n 
-0001771280 00000 n 
-0001771343 00000 n 
-0001771406 00000 n 
-0001771469 00000 n 
-0001771532 00000 n 
-0001771595 00000 n 
-0001771658 00000 n 
-0001771721 00000 n 
-0001771782 00000 n 
-0001771843 00000 n 
-0001771904 00000 n 
-0001771965 00000 n 
-0001772026 00000 n 
-0001772086 00000 n 
-0001772147 00000 n 
-0001772208 00000 n 
-0001772269 00000 n 
-0001772330 00000 n 
-0001772391 00000 n 
-0001772452 00000 n 
-0001772513 00000 n 
-0001772574 00000 n 
-0001772634 00000 n 
-0001772697 00000 n 
-0001772760 00000 n 
-0001772821 00000 n 
-0001772882 00000 n 
-0001772943 00000 n 
-0001773005 00000 n 
-0001773068 00000 n 
-0001773129 00000 n 
-0001778071 00000 n 
-0001776711 00000 n 
-0001776897 00000 n 
-0001778953 00000 n 
-0001776558 00000 n 
-0001773385 00000 n 
-0001777128 00000 n 
-0001777191 00000 n 
-0001777254 00000 n 
-0001777317 00000 n 
-0001777380 00000 n 
-0001777442 00000 n 
-0001777505 00000 n 
-0001777568 00000 n 
-0001777631 00000 n 
-0001777694 00000 n 
-0001777757 00000 n 
-0001777820 00000 n 
-0001777883 00000 n 
-0001777946 00000 n 
-0001778008 00000 n 
-0001778134 00000 n 
-0001778197 00000 n 
-0001778260 00000 n 
-0001778323 00000 n 
-0001778386 00000 n 
-0001778449 00000 n 
-0001778512 00000 n 
-0001778575 00000 n 
-0001778638 00000 n 
-0001778701 00000 n 
-0001778764 00000 n 
-0005135942 00000 n 
-0001782510 00000 n 
-0001782911 00000 n 
-0001782366 00000 n 
-0001779110 00000 n 
-0001782660 00000 n 
-0001787152 00000 n 
-0001787647 00000 n 
-0001786903 00000 n 
-0001783055 00000 n 
-0001787026 00000 n 
-0001787278 00000 n 
-0001787341 00000 n 
-0001787402 00000 n 
-0001787462 00000 n 
-0001787525 00000 n 
-0001787586 00000 n 
-0001793581 00000 n 
-0001791510 00000 n 
-0001787791 00000 n 
-0001791633 00000 n 
-0001791821 00000 n 
-0001791884 00000 n 
-0001791947 00000 n 
-0001792010 00000 n 
-0001792073 00000 n 
-0001792136 00000 n 
-0001792199 00000 n 
-0001792262 00000 n 
-0001792325 00000 n 
-0001792388 00000 n 
-0001792450 00000 n 
-0001792513 00000 n 
-0001792576 00000 n 
-0001792639 00000 n 
-0001792702 00000 n 
-0001792765 00000 n 
-0001792828 00000 n 
-0001792891 00000 n 
-0001792954 00000 n 
-0001793015 00000 n 
-0001793078 00000 n 
-0001793141 00000 n 
-0001793204 00000 n 
-0001793267 00000 n 
-0001793330 00000 n 
-0001793393 00000 n 
-0001793456 00000 n 
-0001793519 00000 n 
-0001797219 00000 n 
-0001799505 00000 n 
-0001797075 00000 n 
-0001793725 00000 n 
-0001797368 00000 n 
-0001797431 00000 n 
-0001797494 00000 n 
-0001797557 00000 n 
-0001797620 00000 n 
-0001797683 00000 n 
-0001797746 00000 n 
-0001797808 00000 n 
-0001797871 00000 n 
-0001797934 00000 n 
-0001797997 00000 n 
-0001798060 00000 n 
-0001798123 00000 n 
-0001798186 00000 n 
-0001798249 00000 n 
-0001798312 00000 n 
-0001798374 00000 n 
-0001798437 00000 n 
-0001798500 00000 n 
-0001798563 00000 n 
-0001798626 00000 n 
-0001798689 00000 n 
-0001798752 00000 n 
-0001798815 00000 n 
-0001798878 00000 n 
-0001798940 00000 n 
-0001799003 00000 n 
-0001799066 00000 n 
-0001799192 00000 n 
-0001799254 00000 n 
-0001799317 00000 n 
-0001799379 00000 n 
-0001799442 00000 n 
-0001801532 00000 n 
-0001802003 00000 n 
-0001801388 00000 n 
-0001799635 00000 n 
-0001801689 00000 n 
-0001801878 00000 n 
-0001801941 00000 n 
-0001805564 00000 n 
-0001805192 00000 n 
-0001802133 00000 n 
-0001805315 00000 n 
-0005136068 00000 n 
-0001809954 00000 n 
-0001809396 00000 n 
-0001805694 00000 n 
-0001809519 00000 n 
-0001809708 00000 n 
-0001809771 00000 n 
-0001809832 00000 n 
-0001809893 00000 n 
-0001814002 00000 n 
-0001815636 00000 n 
-0001813849 00000 n 
-0001810098 00000 n 
-0001814316 00000 n 
-0001814160 00000 n 
-0001814505 00000 n 
-0001814631 00000 n 
-0001814694 00000 n 
-0001814757 00000 n 
-0001814819 00000 n 
-0001814882 00000 n 
-0001814945 00000 n 
-0001815008 00000 n 
-0001815071 00000 n 
-0001815134 00000 n 
-0001815197 00000 n 
-0001815260 00000 n 
-0001815323 00000 n 
-0001815385 00000 n 
-0001815448 00000 n 
-0001815511 00000 n 
-0001815574 00000 n 
-0001858614 00000 n 
-0001818991 00000 n 
-0001858765 00000 n 
-0001859605 00000 n 
-0001818838 00000 n 
-0001815780 00000 n 
-0001858916 00000 n 
-0001859041 00000 n 
-0001859104 00000 n 
-0001859167 00000 n 
-0001859229 00000 n 
-0001859292 00000 n 
-0001859355 00000 n 
-0001859418 00000 n 
-0001859480 00000 n 
-0001838087 00000 n 
-0001863817 00000 n 
-0001864900 00000 n 
-0001863673 00000 n 
-0001859773 00000 n 
-0001863960 00000 n 
-0001864023 00000 n 
-0001864086 00000 n 
-0001864149 00000 n 
-0001864212 00000 n 
-0001864275 00000 n 
-0001864338 00000 n 
-0001864401 00000 n 
-0001864464 00000 n 
-0001864527 00000 n 
-0001864588 00000 n 
-0001864651 00000 n 
-0001864713 00000 n 
-0001867473 00000 n 
-0001867536 00000 n 
-0001867224 00000 n 
-0001865044 00000 n 
-0001867347 00000 n 
-0001870433 00000 n 
-0001870581 00000 n 
-0001871042 00000 n 
-0001870280 00000 n 
-0001867666 00000 n 
-0001870729 00000 n 
-0001870917 00000 n 
-0005136194 00000 n 
-0001873636 00000 n 
-0001873699 00000 n 
-0001873387 00000 n 
-0001871186 00000 n 
-0001873510 00000 n 
-0001877640 00000 n 
-0001878481 00000 n 
-0001877496 00000 n 
-0001873815 00000 n 
-0001877851 00000 n 
-0001878103 00000 n 
-0001878166 00000 n 
-0001878292 00000 n 
-0001878355 00000 n 
-0001878418 00000 n 
-0001882759 00000 n 
-0001882132 00000 n 
-0001878654 00000 n 
-0001882255 00000 n 
-0001882570 00000 n 
-0001882633 00000 n 
-0001887292 00000 n 
-0001886917 00000 n 
-0001882917 00000 n 
-0001887040 00000 n 
-0001888363 00000 n 
-0001888177 00000 n 
-0001887465 00000 n 
-0001888300 00000 n 
-0001891261 00000 n 
-0001891012 00000 n 
-0001888479 00000 n 
-0001891135 00000 n 
-0005136320 00000 n 
-0001896642 00000 n 
-0001895328 00000 n 
-0001891405 00000 n 
-0001895451 00000 n 
-0001895514 00000 n 
-0001895577 00000 n 
-0001895640 00000 n 
-0001895703 00000 n 
-0001895766 00000 n 
-0001896017 00000 n 
-0001896080 00000 n 
-0001896143 00000 n 
-0001896206 00000 n 
-0001896269 00000 n 
-0001896332 00000 n 
-0001896395 00000 n 
-0001896458 00000 n 
-0001896521 00000 n 
-0001896584 00000 n 
-0001900331 00000 n 
-0001901613 00000 n 
-0001900187 00000 n 
-0001896785 00000 n 
-0001900480 00000 n 
-0001900543 00000 n 
-0001900606 00000 n 
-0001900669 00000 n 
-0001900732 00000 n 
-0001900795 00000 n 
-0001900858 00000 n 
-0001900921 00000 n 
-0001900984 00000 n 
-0001901047 00000 n 
-0001901110 00000 n 
-0001901172 00000 n 
-0001901235 00000 n 
-0001901298 00000 n 
-0001901487 00000 n 
-0001906164 00000 n 
-0001904311 00000 n 
-0001901743 00000 n 
-0001904434 00000 n 
-0001904623 00000 n 
-0001904685 00000 n 
-0001904748 00000 n 
-0001904811 00000 n 
-0001904872 00000 n 
-0001904933 00000 n 
-0001904994 00000 n 
-0001905054 00000 n 
-0001905117 00000 n 
-0001905180 00000 n 
-0001905240 00000 n 
-0001905301 00000 n 
-0001905363 00000 n 
-0001905425 00000 n 
-0001905488 00000 n 
-0001905551 00000 n 
-0001905612 00000 n 
-0001905672 00000 n 
-0001905735 00000 n 
-0001905796 00000 n 
-0001905859 00000 n 
-0001905922 00000 n 
-0001905983 00000 n 
-0001906044 00000 n 
-0001906105 00000 n 
-0001909979 00000 n 
-0001909168 00000 n 
-0001906294 00000 n 
-0001909291 00000 n 
-0001909354 00000 n 
-0001909417 00000 n 
-0001909478 00000 n 
-0001909541 00000 n 
-0001909604 00000 n 
-0005130137 00000 n 
-0001909790 00000 n 
-0001909853 00000 n 
-0001909916 00000 n 
-0001913326 00000 n 
-0001912890 00000 n 
-0001910151 00000 n 
-0001913013 00000 n 
-0001917581 00000 n 
-0001917332 00000 n 
-0001913456 00000 n 
-0001917455 00000 n 
-0005136446 00000 n 
-0001921659 00000 n 
-0001921286 00000 n 
-0001917725 00000 n 
-0001921409 00000 n 
-0001925499 00000 n 
-0001924999 00000 n 
-0001921761 00000 n 
-0001925122 00000 n 
-0001929881 00000 n 
-0001929569 00000 n 
-0001925629 00000 n 
-0001929692 00000 n 
-0001934058 00000 n 
-0001939648 00000 n 
-0001935526 00000 n 
-0001933914 00000 n 
-0001929997 00000 n 
-0001934206 00000 n 
-0001934395 00000 n 
-0001934457 00000 n 
-0001934520 00000 n 
-0001934583 00000 n 
-0001934646 00000 n 
-0001934709 00000 n 
-0001934834 00000 n 
-0001934897 00000 n 
-0001934960 00000 n 
-0001935023 00000 n 
-0001935086 00000 n 
-0001935149 00000 n 
-0001935211 00000 n 
-0001935274 00000 n 
-0001935337 00000 n 
-0001935400 00000 n 
-0001935463 00000 n 
-0001940739 00000 n 
-0001939504 00000 n 
-0001935683 00000 n 
-0001939796 00000 n 
-0001939859 00000 n 
-0001939921 00000 n 
-0001939984 00000 n 
-0001940047 00000 n 
-0001940110 00000 n 
-0001940173 00000 n 
-0001940236 00000 n 
-0001940362 00000 n 
-0001940425 00000 n 
-0001940488 00000 n 
-0001940551 00000 n 
-0001940614 00000 n 
-0001940676 00000 n 
-0001944939 00000 n 
-0001943310 00000 n 
-0001940896 00000 n 
-0001943433 00000 n 
-0001943496 00000 n 
-0001943559 00000 n 
-0001943622 00000 n 
-0001943685 00000 n 
-0001943748 00000 n 
-0001943811 00000 n 
-0001943874 00000 n 
-0001943937 00000 n 
-0001943999 00000 n 
-0001944125 00000 n 
-0001944188 00000 n 
-0001944251 00000 n 
-0001944314 00000 n 
-0001944377 00000 n 
-0001944440 00000 n 
-0001944566 00000 n 
-0001944629 00000 n 
-0001944692 00000 n 
-0001944755 00000 n 
-0001944818 00000 n 
-0001944881 00000 n 
-0005136572 00000 n 
-0001948713 00000 n 
-0001949643 00000 n 
-0001948569 00000 n 
-0001945055 00000 n 
-0001948888 00000 n 
-0001948951 00000 n 
-0001949014 00000 n 
-0001949077 00000 n 
-0001949140 00000 n 
-0001949203 00000 n 
-0001949266 00000 n 
-0001949329 00000 n 
-0001949392 00000 n 
-0001949455 00000 n 
-0001951792 00000 n 
-0001951979 00000 n 
-0001952167 00000 n 
-0001952344 00000 n 
-0001952514 00000 n 
-0001952889 00000 n 
-0001953264 00000 n 
-0001953955 00000 n 
-0001951576 00000 n 
-0001949759 00000 n 
-0001953451 00000 n 
-0001953577 00000 n 
-0001953640 00000 n 
-0001953703 00000 n 
-0001952702 00000 n 
-0001953077 00000 n 
-0001957105 00000 n 
-0001957641 00000 n 
-0001956961 00000 n 
-0001954071 00000 n 
-0001957263 00000 n 
-0001962785 00000 n 
-0001961781 00000 n 
-0001957757 00000 n 
-0001961904 00000 n 
-0001962030 00000 n 
-0001962093 00000 n 
-0001962156 00000 n 
-0001962282 00000 n 
-0001962345 00000 n 
-0001962470 00000 n 
-0001962533 00000 n 
-0001962596 00000 n 
-0001962722 00000 n 
-0001966306 00000 n 
-0001967356 00000 n 
-0001966162 00000 n 
-0001962928 00000 n 
-0001966476 00000 n 
-0001966602 00000 n 
-0001966665 00000 n 
-0001966728 00000 n 
-0001966790 00000 n 
-0001966916 00000 n 
-0001966979 00000 n 
-0001967042 00000 n 
-0001967105 00000 n 
-0001967168 00000 n 
-0001967231 00000 n 
-0001970509 00000 n 
-0001971168 00000 n 
-0001970365 00000 n 
-0001967485 00000 n 
-0001970665 00000 n 
-0001970917 00000 n 
-0001970980 00000 n 
-0001971043 00000 n 
-0001971105 00000 n 
-0005136698 00000 n 
-0001974814 00000 n 
-0001974189 00000 n 
-0001971325 00000 n 
-0001974312 00000 n 
-0001974499 00000 n 
-0001974562 00000 n 
-0001974625 00000 n 
-0001980633 00000 n 
-0001978652 00000 n 
-0001978215 00000 n 
-0001974971 00000 n 
-0001978338 00000 n 
-0002000090 00000 n 
-0001980510 00000 n 
-0001978768 00000 n 
-0001999838 00000 n 
-0001999964 00000 n 
-0001988596 00000 n 
-0002004506 00000 n 
-0002003819 00000 n 
-0002000244 00000 n 
-0002003942 00000 n 
-0002004068 00000 n 
-0002004131 00000 n 
-0002004193 00000 n 
-0002004254 00000 n 
-0002004317 00000 n 
-0002004380 00000 n 
-0002008474 00000 n 
-0002009640 00000 n 
-0002008330 00000 n 
-0002004636 00000 n 
-0002008637 00000 n 
-0002008889 00000 n 
-0002008952 00000 n 
-0002009015 00000 n 
-0002009141 00000 n 
-0002009204 00000 n 
-0002009267 00000 n 
-0002009330 00000 n 
-0002009393 00000 n 
-0002009456 00000 n 
-0002009519 00000 n 
-0002009582 00000 n 
-0002011529 00000 n 
-0002010965 00000 n 
-0002009784 00000 n 
-0002011088 00000 n 
-0002011151 00000 n 
-0002011214 00000 n 
-0002011277 00000 n 
-0002011340 00000 n 
-0002011403 00000 n 
-0002011466 00000 n 
-0005136824 00000 n 
-0002015084 00000 n 
-0002015320 00000 n 
-0002016665 00000 n 
-0002014931 00000 n 
-0002011631 00000 n 
-0002015470 00000 n 
-0002015722 00000 n 
-0002015784 00000 n 
-0002015847 00000 n 
-0002015910 00000 n 
-0002015973 00000 n 
-0002016036 00000 n 
-0002016099 00000 n 
-0002016162 00000 n 
-0002016225 00000 n 
-0002016288 00000 n 
-0002016351 00000 n 
-0002016414 00000 n 
-0002016476 00000 n 
-0002016539 00000 n 
-0002016602 00000 n 
-0002020427 00000 n 
-0002019549 00000 n 
-0002016836 00000 n 
-0002019672 00000 n 
-0002019861 00000 n 
-0002019923 00000 n 
-0002019986 00000 n 
-0002020049 00000 n 
-0002020112 00000 n 
-0002020175 00000 n 
-0002020238 00000 n 
-0002020301 00000 n 
-0002020364 00000 n 
-0002023716 00000 n 
-0002024342 00000 n 
-0002023563 00000 n 
-0002020556 00000 n 
-0002024027 00000 n 
-0002023872 00000 n 
-0002027413 00000 n 
-0002028257 00000 n 
-0002027269 00000 n 
-0002024458 00000 n 
-0002027565 00000 n 
-0002027691 00000 n 
-0002027754 00000 n 
-0002027817 00000 n 
-0002027880 00000 n 
-0002027943 00000 n 
-0002028006 00000 n 
-0002028069 00000 n 
-0002033683 00000 n 
-0002032688 00000 n 
-0002035757 00000 n 
-0002032535 00000 n 
-0002028430 00000 n 
-0002032991 00000 n 
-0002033054 00000 n 
-0002033117 00000 n 
-0002033180 00000 n 
-0002033243 00000 n 
-0002033305 00000 n 
-0002033368 00000 n 
-0002033431 00000 n 
-0002033494 00000 n 
-0002033557 00000 n 
-0002033620 00000 n 
-0002032841 00000 n 
-0002033808 00000 n 
-0002033871 00000 n 
-0002033934 00000 n 
-0002033997 00000 n 
-0002034060 00000 n 
-0002034123 00000 n 
-0002034186 00000 n 
-0002034249 00000 n 
-0002034312 00000 n 
-0002034375 00000 n 
-0002034438 00000 n 
-0002034500 00000 n 
-0002034563 00000 n 
-0002034626 00000 n 
-0002034689 00000 n 
-0002034752 00000 n 
-0002034815 00000 n 
-0002034878 00000 n 
-0002034941 00000 n 
-0002035004 00000 n 
-0002035066 00000 n 
-0002035129 00000 n 
-0002035192 00000 n 
-0002035255 00000 n 
-0002035318 00000 n 
-0002035381 00000 n 
-0002035444 00000 n 
-0002035507 00000 n 
-0002035570 00000 n 
-0002035632 00000 n 
-0002035695 00000 n 
-0002040964 00000 n 
-0002039269 00000 n 
-0002035928 00000 n 
-0002039392 00000 n 
-0002039455 00000 n 
-0002039518 00000 n 
-0002039581 00000 n 
-0002039644 00000 n 
-0002039769 00000 n 
-0002039832 00000 n 
-0002039894 00000 n 
-0002039957 00000 n 
-0002040020 00000 n 
-0002040083 00000 n 
-0002040146 00000 n 
-0002040209 00000 n 
-0002040272 00000 n 
-0002040335 00000 n 
-0002040398 00000 n 
-0002040461 00000 n 
-0002040524 00000 n 
-0002040587 00000 n 
-0002040649 00000 n 
-0002040712 00000 n 
-0002040775 00000 n 
-0002040838 00000 n 
-0002040901 00000 n 
-0005136950 00000 n 
-0002045057 00000 n 
-0002047221 00000 n 
-0002044913 00000 n 
-0002041108 00000 n 
-0002045208 00000 n 
-0002045271 00000 n 
-0002045334 00000 n 
-0002045397 00000 n 
-0002045460 00000 n 
-0002045523 00000 n 
-0002045586 00000 n 
-0002045649 00000 n 
-0002045712 00000 n 
-0002045774 00000 n 
-0002045837 00000 n 
-0002045900 00000 n 
-0002045963 00000 n 
-0002046026 00000 n 
-0002046089 00000 n 
-0002046152 00000 n 
-0002046215 00000 n 
-0002046278 00000 n 
-0002046340 00000 n 
-0002046403 00000 n 
-0002046466 00000 n 
-0002046529 00000 n 
-0002046592 00000 n 
-0002046655 00000 n 
-0002046718 00000 n 
-0002046781 00000 n 
-0002046844 00000 n 
-0002046906 00000 n 
-0002046969 00000 n 
-0002047032 00000 n 
-0002047095 00000 n 
-0002054565 00000 n 
-0002052312 00000 n 
-0002052464 00000 n 
-0002054753 00000 n 
-0002052159 00000 n 
-0002047378 00000 n 
-0002052616 00000 n 
-0002052679 00000 n 
-0002052742 00000 n 
-0002052805 00000 n 
-0002052868 00000 n 
-0002052930 00000 n 
-0002052993 00000 n 
-0002053056 00000 n 
-0002053119 00000 n 
-0002053182 00000 n 
-0002053245 00000 n 
-0002053308 00000 n 
-0002053371 00000 n 
-0002053434 00000 n 
-0002053496 00000 n 
-0002053559 00000 n 
-0002053622 00000 n 
-0002053685 00000 n 
-0002053748 00000 n 
-0002053811 00000 n 
-0002053874 00000 n 
-0002053937 00000 n 
-0002054000 00000 n 
-0002054061 00000 n 
-0002054124 00000 n 
-0002054187 00000 n 
-0002054250 00000 n 
-0002054313 00000 n 
-0002054376 00000 n 
-0002054439 00000 n 
-0002054502 00000 n 
-0002060158 00000 n 
-0002060499 00000 n 
-0002060014 00000 n 
-0002054982 00000 n 
-0002060311 00000 n 
-0002060436 00000 n 
-0002077922 00000 n 
-0002062860 00000 n 
-0002062612 00000 n 
-0002060672 00000 n 
-0002062735 00000 n 
-0002067400 00000 n 
-0002067551 00000 n 
-0002067700 00000 n 
-0002067855 00000 n 
-0002068009 00000 n 
-0002068165 00000 n 
-0002068567 00000 n 
-0002067211 00000 n 
-0002063033 00000 n 
-0002068316 00000 n 
-0002073064 00000 n 
-0002073379 00000 n 
-0002072815 00000 n 
-0002068740 00000 n 
-0002072938 00000 n 
-0002073127 00000 n 
-0002073190 00000 n 
-0002073253 00000 n 
-0002073316 00000 n 
-0005137076 00000 n 
-0002077443 00000 n 
-0002077622 00000 n 
-0002078048 00000 n 
-0002077290 00000 n 
-0002073550 00000 n 
-0002077796 00000 n 
-0002083172 00000 n 
-0002084770 00000 n 
-0002083028 00000 n 
-0002078178 00000 n 
-0002083325 00000 n 
-0002083514 00000 n 
-0002083577 00000 n 
-0002083640 00000 n 
-0002083703 00000 n 
-0002083766 00000 n 
-0002083829 00000 n 
-0002083892 00000 n 
-0002083955 00000 n 
-0002084018 00000 n 
-0002084080 00000 n 
-0002084143 00000 n 
-0002084206 00000 n 
-0002084269 00000 n 
-0002084332 00000 n 
-0002084395 00000 n 
-0002084458 00000 n 
-0002084521 00000 n 
-0002084647 00000 n 
-0002084709 00000 n 
-0002089779 00000 n 
-0002089090 00000 n 
-0002084956 00000 n 
-0002089213 00000 n 
-0002089338 00000 n 
-0002089401 00000 n 
-0002089464 00000 n 
-0002089527 00000 n 
-0002089590 00000 n 
-0002089653 00000 n 
-0002089716 00000 n 
-0002093900 00000 n 
-0002094616 00000 n 
-0002093756 00000 n 
-0002089995 00000 n 
-0002094051 00000 n 
-0002094303 00000 n 
-0002094366 00000 n 
-0002094429 00000 n 
-0002094492 00000 n 
-0002094553 00000 n 
-0002101074 00000 n 
-0002099064 00000 n 
-0002094760 00000 n 
-0002099187 00000 n 
-0002099313 00000 n 
-0002099376 00000 n 
-0002099439 00000 n 
-0002099502 00000 n 
-0002099565 00000 n 
-0002099628 00000 n 
-0002099691 00000 n 
-0002099753 00000 n 
-0002099816 00000 n 
-0002099879 00000 n 
-0002099942 00000 n 
-0002100005 00000 n 
-0002100068 00000 n 
-0002100131 00000 n 
-0002100194 00000 n 
-0002100257 00000 n 
-0002100319 00000 n 
-0002100382 00000 n 
-0002100445 00000 n 
-0002100508 00000 n 
-0002100571 00000 n 
-0002100634 00000 n 
-0002100697 00000 n 
-0002100760 00000 n 
-0002100823 00000 n 
-0002100885 00000 n 
-0002100948 00000 n 
-0002101011 00000 n 
-0002106830 00000 n 
-0002105389 00000 n 
-0002101218 00000 n 
-0002105512 00000 n 
-0002105637 00000 n 
-0002105700 00000 n 
-0002105763 00000 n 
-0002105826 00000 n 
-0002105889 00000 n 
-0002105952 00000 n 
-0002106015 00000 n 
-0002106078 00000 n 
-0002106141 00000 n 
-0002106204 00000 n 
-0002106266 00000 n 
-0002106329 00000 n 
-0002106392 00000 n 
-0002106518 00000 n 
-0002106580 00000 n 
-0002106642 00000 n 
-0002106705 00000 n 
-0002106768 00000 n 
-0005137202 00000 n 
-0002113689 00000 n 
-0002110361 00000 n 
-0002106974 00000 n 
-0002110484 00000 n 
-0002110547 00000 n 
-0002110610 00000 n 
-0002110673 00000 n 
-0002110736 00000 n 
-0002110799 00000 n 
-0002110862 00000 n 
-0002110924 00000 n 
-0002110987 00000 n 
-0002111050 00000 n 
-0002111113 00000 n 
-0002111176 00000 n 
-0002111239 00000 n 
-0002111302 00000 n 
-0002111365 00000 n 
-0002111428 00000 n 
-0002111490 00000 n 
-0002111553 00000 n 
-0002111616 00000 n 
-0002111679 00000 n 
-0002111742 00000 n 
-0002111805 00000 n 
-0002111868 00000 n 
-0002111931 00000 n 
-0002111994 00000 n 
-0002112056 00000 n 
-0002112119 00000 n 
-0002112244 00000 n 
-0002112307 00000 n 
-0002112370 00000 n 
-0002112432 00000 n 
-0002112495 00000 n 
-0002112558 00000 n 
-0002112621 00000 n 
-0002112684 00000 n 
-0002112747 00000 n 
-0002112810 00000 n 
-0002112873 00000 n 
-0002112936 00000 n 
-0002112998 00000 n 
-0002113061 00000 n 
-0002113124 00000 n 
-0002113187 00000 n 
-0002113250 00000 n 
-0002113313 00000 n 
-0002113376 00000 n 
-0002113439 00000 n 
-0002113502 00000 n 
-0002113564 00000 n 
-0002113627 00000 n 
-0002120158 00000 n 
-0002117645 00000 n 
-0002113819 00000 n 
-0002117768 00000 n 
-0002117831 00000 n 
-0002117894 00000 n 
-0002117957 00000 n 
-0002118020 00000 n 
-0002118083 00000 n 
-0002118146 00000 n 
-0002118208 00000 n 
-0002118271 00000 n 
-0002118334 00000 n 
-0002118397 00000 n 
-0002118460 00000 n 
-0002118523 00000 n 
-0002118586 00000 n 
-0002118649 00000 n 
-0002118775 00000 n 
-0002118838 00000 n 
-0002118901 00000 n 
-0002118964 00000 n 
-0002119027 00000 n 
-0002119089 00000 n 
-0002119152 00000 n 
-0002119215 00000 n 
-0002119278 00000 n 
-0002119341 00000 n 
-0002119404 00000 n 
-0002119467 00000 n 
-0002119530 00000 n 
-0002119593 00000 n 
-0002119656 00000 n 
-0002119719 00000 n 
-0002119782 00000 n 
-0002119845 00000 n 
-0002119970 00000 n 
-0002120033 00000 n 
-0002120096 00000 n 
-0002126670 00000 n 
-0002124157 00000 n 
-0002120302 00000 n 
-0002124280 00000 n 
-0002124343 00000 n 
-0002124406 00000 n 
-0002124469 00000 n 
-0002124532 00000 n 
-0002124595 00000 n 
-0002124658 00000 n 
-0002124720 00000 n 
-0002124783 00000 n 
-0002124846 00000 n 
-0002124909 00000 n 
-0002124972 00000 n 
-0002125035 00000 n 
-0002125098 00000 n 
-0002125161 00000 n 
-0002125224 00000 n 
-0002125286 00000 n 
-0002125349 00000 n 
-0002125412 00000 n 
-0002125475 00000 n 
-0002125538 00000 n 
-0002125601 00000 n 
-0002125664 00000 n 
-0002125727 00000 n 
-0002125790 00000 n 
-0002125852 00000 n 
-0002125915 00000 n 
-0002125978 00000 n 
-0002126041 00000 n 
-0002126104 00000 n 
-0002126167 00000 n 
-0002126230 00000 n 
-0002126293 00000 n 
-0002126356 00000 n 
-0002126418 00000 n 
-0002126544 00000 n 
-0002126607 00000 n 
-0002132547 00000 n 
-0002130159 00000 n 
-0002126800 00000 n 
-0002130282 00000 n 
-0002130345 00000 n 
-0002130408 00000 n 
-0002130534 00000 n 
-0002130597 00000 n 
-0002130660 00000 n 
-0002130723 00000 n 
-0002130786 00000 n 
-0002130849 00000 n 
-0002130912 00000 n 
-0002130975 00000 n 
-0002131038 00000 n 
-0002131100 00000 n 
-0002131163 00000 n 
-0002131226 00000 n 
-0002131289 00000 n 
-0002131352 00000 n 
-0002131415 00000 n 
-0002131478 00000 n 
-0002131541 00000 n 
-0002131604 00000 n 
-0002131665 00000 n 
-0002131791 00000 n 
-0002131854 00000 n 
-0002131917 00000 n 
-0002131980 00000 n 
-0002132043 00000 n 
-0002132106 00000 n 
-0002132169 00000 n 
-0002132232 00000 n 
-0002132295 00000 n 
-0002132358 00000 n 
-0002132421 00000 n 
-0002132484 00000 n 
-0002136840 00000 n 
-0002136087 00000 n 
-0002132705 00000 n 
-0002136210 00000 n 
-0002136399 00000 n 
-0002136462 00000 n 
-0002136525 00000 n 
-0002136588 00000 n 
-0002136651 00000 n 
-0002136777 00000 n 
-0002141623 00000 n 
-0002140744 00000 n 
-0002136998 00000 n 
-0002140867 00000 n 
-0002140930 00000 n 
-0002140993 00000 n 
-0002141056 00000 n 
-0002141119 00000 n 
-0002141182 00000 n 
-0002141245 00000 n 
-0002141308 00000 n 
-0002141371 00000 n 
-0002141434 00000 n 
-0002141497 00000 n 
-0005137328 00000 n 
-0002145675 00000 n 
-0002146523 00000 n 
-0002145531 00000 n 
-0002141781 00000 n 
-0002145830 00000 n 
-0002145893 00000 n 
-0002145956 00000 n 
-0002146019 00000 n 
-0002146082 00000 n 
-0002146208 00000 n 
-0002146271 00000 n 
-0002146334 00000 n 
-0002151345 00000 n 
-0002150156 00000 n 
-0002146667 00000 n 
-0002150279 00000 n 
-0002150342 00000 n 
-0002150405 00000 n 
-0002150468 00000 n 
-0002150531 00000 n 
-0002150594 00000 n 
-0002150657 00000 n 
-0002150719 00000 n 
-0002150780 00000 n 
-0002150842 00000 n 
-0002150905 00000 n 
-0002150968 00000 n 
-0002151031 00000 n 
-0002151094 00000 n 
-0002151157 00000 n 
-0002151220 00000 n 
-0002157791 00000 n 
-0002154082 00000 n 
-0002151503 00000 n 
-0002154205 00000 n 
-0002154268 00000 n 
-0002154331 00000 n 
-0002154394 00000 n 
-0002154457 00000 n 
-0002154520 00000 n 
-0002154583 00000 n 
-0002154646 00000 n 
-0002154709 00000 n 
-0002154771 00000 n 
-0002154834 00000 n 
-0002154897 00000 n 
-0002154960 00000 n 
-0002155023 00000 n 
-0002155086 00000 n 
-0002155149 00000 n 
-0002155212 00000 n 
-0002155275 00000 n 
-0002155337 00000 n 
-0002155400 00000 n 
-0002155463 00000 n 
-0002155526 00000 n 
-0002155589 00000 n 
-0002155652 00000 n 
-0002155715 00000 n 
-0002155778 00000 n 
-0002155840 00000 n 
-0002155903 00000 n 
-0002155966 00000 n 
-0002156029 00000 n 
-0002156092 00000 n 
-0002156155 00000 n 
-0002156218 00000 n 
-0002156281 00000 n 
-0002156343 00000 n 
-0002156406 00000 n 
-0002156469 00000 n 
-0002156532 00000 n 
-0002156595 00000 n 
-0002156658 00000 n 
-0002156721 00000 n 
-0002156784 00000 n 
-0002156846 00000 n 
-0002156909 00000 n 
-0002156972 00000 n 
-0002157035 00000 n 
-0002157098 00000 n 
-0002157161 00000 n 
-0002157224 00000 n 
-0002157287 00000 n 
-0002157350 00000 n 
-0002157413 00000 n 
-0002157476 00000 n 
-0002157539 00000 n 
-0002157602 00000 n 
-0002157665 00000 n 
-0002157728 00000 n 
-0002161808 00000 n 
-0002161496 00000 n 
-0002157907 00000 n 
-0002161619 00000 n 
-0002168277 00000 n 
-0002165639 00000 n 
-0002161966 00000 n 
-0002165762 00000 n 
-0002165825 00000 n 
-0002165888 00000 n 
-0002166013 00000 n 
-0002166076 00000 n 
-0002166139 00000 n 
-0002166202 00000 n 
-0002166265 00000 n 
-0002166328 00000 n 
-0002166391 00000 n 
-0002166454 00000 n 
-0002166517 00000 n 
-0002166580 00000 n 
-0002166643 00000 n 
-0002166706 00000 n 
-0002166769 00000 n 
-0002166832 00000 n 
-0002166895 00000 n 
-0002166958 00000 n 
-0002167020 00000 n 
-0002167083 00000 n 
-0002167146 00000 n 
-0002167209 00000 n 
-0002167272 00000 n 
-0002167335 00000 n 
-0002167398 00000 n 
-0002167461 00000 n 
-0002167524 00000 n 
-0002167586 00000 n 
-0002167649 00000 n 
-0002167712 00000 n 
-0002167775 00000 n 
-0002167838 00000 n 
-0002167901 00000 n 
-0002167964 00000 n 
-0002168027 00000 n 
-0002168090 00000 n 
-0002168152 00000 n 
-0002168215 00000 n 
-0002175061 00000 n 
-0002171291 00000 n 
-0002168421 00000 n 
-0002171414 00000 n 
-0002171477 00000 n 
-0002171540 00000 n 
-0002171603 00000 n 
-0002171666 00000 n 
-0002171729 00000 n 
-0002171792 00000 n 
-0002171854 00000 n 
-0002171917 00000 n 
-0002171980 00000 n 
-0002172043 00000 n 
-0002172106 00000 n 
-0002172169 00000 n 
-0002172232 00000 n 
-0002172295 00000 n 
-0002172358 00000 n 
-0002172420 00000 n 
-0002172483 00000 n 
-0002172546 00000 n 
-0002172609 00000 n 
-0002172672 00000 n 
-0002172735 00000 n 
-0002172798 00000 n 
-0002172861 00000 n 
-0002172924 00000 n 
-0002172987 00000 n 
-0002173050 00000 n 
-0002173113 00000 n 
-0002173176 00000 n 
-0002173239 00000 n 
-0002173302 00000 n 
-0002173365 00000 n 
-0002173428 00000 n 
-0002173491 00000 n 
-0002173553 00000 n 
-0002173616 00000 n 
-0002173679 00000 n 
-0002173742 00000 n 
-0002173805 00000 n 
-0002173868 00000 n 
-0002173931 00000 n 
-0002173994 00000 n 
-0002174057 00000 n 
-0002174118 00000 n 
-0002174181 00000 n 
-0002174244 00000 n 
-0002174307 00000 n 
-0002174370 00000 n 
-0002174433 00000 n 
-0002174496 00000 n 
-0002174559 00000 n 
-0002174622 00000 n 
-0002174685 00000 n 
-0002174748 00000 n 
-0002174811 00000 n 
-0002174874 00000 n 
-0002174936 00000 n 
-0002174999 00000 n 
-0005137454 00000 n 
-0002178806 00000 n 
-0002178963 00000 n 
-0002179118 00000 n 
-0002179297 00000 n 
-0002180232 00000 n 
-0002178635 00000 n 
-0002175163 00000 n 
-0002179477 00000 n 
-0002179540 00000 n 
-0002179603 00000 n 
-0002179666 00000 n 
-0002179729 00000 n 
-0002179792 00000 n 
-0002179855 00000 n 
-0002179917 00000 n 
-0002819967 00000 n 
-0002187742 00000 n 
-0002183596 00000 n 
-0002183032 00000 n 
-0002180362 00000 n 
-0002183155 00000 n 
-0002183407 00000 n 
-0002183470 00000 n 
-0002183533 00000 n 
-0002188330 00000 n 
-0002187598 00000 n 
-0002183712 00000 n 
-0002187953 00000 n 
-0002188079 00000 n 
-0002188141 00000 n 
-0002188204 00000 n 
-0002188267 00000 n 
-0002192418 00000 n 
-0002192599 00000 n 
-0002192756 00000 n 
-0002192910 00000 n 
-0002193708 00000 n 
-0002192247 00000 n 
-0002188474 00000 n 
-0002193078 00000 n 
-0002193456 00000 n 
-0002193519 00000 n 
-0002193582 00000 n 
-0002193645 00000 n 
-0002195482 00000 n 
-0002195233 00000 n 
-0002193866 00000 n 
-0002195356 00000 n 
-0002198891 00000 n 
-0002199060 00000 n 
-0002199219 00000 n 
-0002199391 00000 n 
-0002200015 00000 n 
-0002198720 00000 n 
-0002195598 00000 n 
-0002199574 00000 n 
-0005137580 00000 n 
-0002205041 00000 n 
-0002212094 00000 n 
-0002206711 00000 n 
-0002204897 00000 n 
-0002200173 00000 n 
-0002205201 00000 n 
-0002205327 00000 n 
-0002205390 00000 n 
-0002205453 00000 n 
-0002205516 00000 n 
-0002205579 00000 n 
-0002205641 00000 n 
-0002205767 00000 n 
-0002205830 00000 n 
-0002205893 00000 n 
-0002205956 00000 n 
-0002206019 00000 n 
-0002206082 00000 n 
-0002206145 00000 n 
-0002206208 00000 n 
-0002206270 00000 n 
-0002206333 00000 n 
-0002206396 00000 n 
-0002206459 00000 n 
-0002206522 00000 n 
-0002206585 00000 n 
-0002206648 00000 n 
-0002214141 00000 n 
-0002211950 00000 n 
-0002206911 00000 n 
-0002212253 00000 n 
-0002212379 00000 n 
-0002212442 00000 n 
-0002212505 00000 n 
-0002212568 00000 n 
-0002212631 00000 n 
-0002212693 00000 n 
-0002212756 00000 n 
-0002212819 00000 n 
-0002212882 00000 n 
-0002212945 00000 n 
-0002213008 00000 n 
-0002213071 00000 n 
-0002213134 00000 n 
-0002213197 00000 n 
-0002213259 00000 n 
-0002213322 00000 n 
-0002213385 00000 n 
-0002213448 00000 n 
-0005128796 00000 n 
-0002213511 00000 n 
-0002213574 00000 n 
-0002213637 00000 n 
-0002213700 00000 n 
-0002213763 00000 n 
-0002213826 00000 n 
-0002213889 00000 n 
-0002213952 00000 n 
-0002218758 00000 n 
-0002217818 00000 n 
-0002214342 00000 n 
-0002217941 00000 n 
-0002218067 00000 n 
-0002218130 00000 n 
-0002218193 00000 n 
-0002218254 00000 n 
-0002218317 00000 n 
-0002218380 00000 n 
-0002218443 00000 n 
-0002218506 00000 n 
-0002222468 00000 n 
-0002223068 00000 n 
-0002222324 00000 n 
-0002218903 00000 n 
-0002222628 00000 n 
-0002222691 00000 n 
-0002222754 00000 n 
-0002222817 00000 n 
-0002222880 00000 n 
-0002226389 00000 n 
-0002230515 00000 n 
-0002226792 00000 n 
-0002226245 00000 n 
-0002223240 00000 n 
-0002226540 00000 n 
-0002226666 00000 n 
-0002251773 00000 n 
-0002251498 00000 n 
-0002254712 00000 n 
-0002252025 00000 n 
-0002230371 00000 n 
-0002226922 00000 n 
-0002251647 00000 n 
-0002251962 00000 n 
-0005137706 00000 n 
-0002251309 00000 n 
-0002286273 00000 n 
-0002285996 00000 n 
-0002269969 00000 n 
-0002286525 00000 n 
-0002254568 00000 n 
-0002252187 00000 n 
-0002286147 00000 n 
-0002286462 00000 n 
-0002269783 00000 n 
-0002285809 00000 n 
-0002290495 00000 n 
-0002290926 00000 n 
-0002290351 00000 n 
-0002286716 00000 n 
-0002290674 00000 n 
-0002294870 00000 n 
-0002295054 00000 n 
-0002295673 00000 n 
-0002294717 00000 n 
-0002291099 00000 n 
-0002295232 00000 n 
-0002295421 00000 n 
-0002295484 00000 n 
-0002295547 00000 n 
-0002295610 00000 n 
-0002300190 00000 n 
-0002299251 00000 n 
-0002295860 00000 n 
-0002299374 00000 n 
-0002299499 00000 n 
-0002299562 00000 n 
-0002299625 00000 n 
-0002299688 00000 n 
-0002299751 00000 n 
-0002299814 00000 n 
-0002299877 00000 n 
-0002299939 00000 n 
-0002300001 00000 n 
-0002353350 00000 n 
-0002302637 00000 n 
-0002353650 00000 n 
-0002325249 00000 n 
-0002354242 00000 n 
-0002302475 00000 n 
-0002300334 00000 n 
-0002353801 00000 n 
-0002353500 00000 n 
-0002353990 00000 n 
-0002354179 00000 n 
-0002325062 00000 n 
-0002353161 00000 n 
-0002419301 00000 n 
-0002356851 00000 n 
-0002419456 00000 n 
-0002389707 00000 n 
-0002419990 00000 n 
-0002356698 00000 n 
-0002354461 00000 n 
-0002419612 00000 n 
-0002419801 00000 n 
-0002419927 00000 n 
-0005137832 00000 n 
-0002389518 00000 n 
-0002419112 00000 n 
-0002467889 00000 n 
-0002422386 00000 n 
-0002468186 00000 n 
-0002471400 00000 n 
-0002468651 00000 n 
-0002422224 00000 n 
-0002420195 00000 n 
-0002468336 00000 n 
-0002468037 00000 n 
-0002468525 00000 n 
-0002467700 00000 n 
-0002502279 00000 n 
-0002502405 00000 n 
-0002471277 00000 n 
-0002468827 00000 n 
-0002502153 00000 n 
-0002501964 00000 n 
-0002507275 00000 n 
-0002506585 00000 n 
-0002502581 00000 n 
-0002506708 00000 n 
-0002506771 00000 n 
-0002506834 00000 n 
-0002506960 00000 n 
-0002507023 00000 n 
-0002507086 00000 n 
-0002507149 00000 n 
-0002511929 00000 n 
-0002511176 00000 n 
-0002507448 00000 n 
-0002511299 00000 n 
-0002511488 00000 n 
-0002511551 00000 n 
-0002511677 00000 n 
-0002511740 00000 n 
-0002511803 00000 n 
-0002511866 00000 n 
-0002516152 00000 n 
-0002566702 00000 n 
-0002519789 00000 n 
-0002516757 00000 n 
-0002516005 00000 n 
-0002512102 00000 n 
-0002516305 00000 n 
-0002516434 00000 n 
-0002516499 00000 n 
-0002516628 00000 n 
-0002567178 00000 n 
-0002567019 00000 n 
-0002567618 00000 n 
-0002519610 00000 n 
-0002516945 00000 n 
-0002567360 00000 n 
-0002566861 00000 n 
-0002567489 00000 n 
-0005137959 00000 n 
-0002566512 00000 n 
-0002609727 00000 n 
-0002570284 00000 n 
-0002609882 00000 n 
-0002599912 00000 n 
-0002614147 00000 n 
-0002610361 00000 n 
-0002570125 00000 n 
-0002567796 00000 n 
-0002610039 00000 n 
-0002610168 00000 n 
-0002610297 00000 n 
-0002572684 00000 n 
-0002608128 00000 n 
-0002614327 00000 n 
-0002614509 00000 n 
-0002614696 00000 n 
-0002614905 00000 n 
-0002615084 00000 n 
-0002615262 00000 n 
-0002615475 00000 n 
-0002615626 00000 n 
-0002676358 00000 n 
-0002616293 00000 n 
-0002613918 00000 n 
-0002610533 00000 n 
-0002615777 00000 n 
-0002615970 00000 n 
-0002616035 00000 n 
-0002616100 00000 n 
-0002676853 00000 n 
-0002677045 00000 n 
-0002618541 00000 n 
-0002676510 00000 n 
-0002646603 00000 n 
-0002677174 00000 n 
-0002618382 00000 n 
-0002616424 00000 n 
-0002676660 00000 n 
-0002646415 00000 n 
-0002676168 00000 n 
-0002711342 00000 n 
-0002680589 00000 n 
-0002712162 00000 n 
-0002680430 00000 n 
-0002677354 00000 n 
-0002711646 00000 n 
-0002711775 00000 n 
-0002711840 00000 n 
-0002711904 00000 n 
-0002711495 00000 n 
-0002712033 00000 n 
-0002711152 00000 n 
-0002715685 00000 n 
-0002716186 00000 n 
-0002715536 00000 n 
-0002712367 00000 n 
-0002715865 00000 n 
-0002720453 00000 n 
-0002721224 00000 n 
-0002720294 00000 n 
-0002716345 00000 n 
-0002720775 00000 n 
-0002720615 00000 n 
-0005138092 00000 n 
-0002725765 00000 n 
-0002725920 00000 n 
-0002728241 00000 n 
-0002725606 00000 n 
-0002721384 00000 n 
-0002726103 00000 n 
-0002726231 00000 n 
-0002726296 00000 n 
-0002726361 00000 n 
-0002726426 00000 n 
-0002726491 00000 n 
-0002726556 00000 n 
-0002726621 00000 n 
-0002726686 00000 n 
-0002726751 00000 n 
-0002726816 00000 n 
-0002726881 00000 n 
-0002726946 00000 n 
-0002727011 00000 n 
-0002727076 00000 n 
-0002727140 00000 n 
-0002727205 00000 n 
-0002727270 00000 n 
-0002727335 00000 n 
-0002727400 00000 n 
-0002727465 00000 n 
-0002727530 00000 n 
-0002727595 00000 n 
-0002727659 00000 n 
-0002727787 00000 n 
-0002727852 00000 n 
-0002727917 00000 n 
-0002727982 00000 n 
-0002728047 00000 n 
-0002728112 00000 n 
-0002728176 00000 n 
-0002732062 00000 n 
-0002730897 00000 n 
-0002728400 00000 n 
-0002731024 00000 n 
-0002731089 00000 n 
-0002731154 00000 n 
-0002731219 00000 n 
-0002731284 00000 n 
-0002731349 00000 n 
-0002731414 00000 n 
-0002731479 00000 n 
-0002731544 00000 n 
-0002731609 00000 n 
-0002731674 00000 n 
-0002731739 00000 n 
-0002731804 00000 n 
-0002731868 00000 n 
-0002731933 00000 n 
-0002735633 00000 n 
-0002736072 00000 n 
-0002735484 00000 n 
-0002732222 00000 n 
-0002735816 00000 n 
-0002740413 00000 n 
-0002740703 00000 n 
-0002740264 00000 n 
-0002736231 00000 n 
-0002740575 00000 n 
-0002747735 00000 n 
-0002744495 00000 n 
-0002740848 00000 n 
-0002744622 00000 n 
-0002744751 00000 n 
-0002744816 00000 n 
-0002744881 00000 n 
-0002745010 00000 n 
-0002745075 00000 n 
-0002745140 00000 n 
-0002745204 00000 n 
-0002745269 00000 n 
-0002745334 00000 n 
-0002745399 00000 n 
-0002745464 00000 n 
-0002745529 00000 n 
-0002745594 00000 n 
-0002745659 00000 n 
-0002745724 00000 n 
-0002745789 00000 n 
-0002745854 00000 n 
-0002745919 00000 n 
-0002745984 00000 n 
-0002746049 00000 n 
-0002746114 00000 n 
-0002746179 00000 n 
-0002746244 00000 n 
-0002746309 00000 n 
-0002746374 00000 n 
-0002746438 00000 n 
-0002746503 00000 n 
-0002746568 00000 n 
-0002746633 00000 n 
-0002746698 00000 n 
-0002746763 00000 n 
-0002746828 00000 n 
-0002746893 00000 n 
-0002746958 00000 n 
-0002747022 00000 n 
-0002747087 00000 n 
-0002747152 00000 n 
-0002747217 00000 n 
-0002747282 00000 n 
-0002747347 00000 n 
-0002747412 00000 n 
-0002747477 00000 n 
-0002747542 00000 n 
-0002747606 00000 n 
-0002747671 00000 n 
-0002752954 00000 n 
-0002751010 00000 n 
-0002747880 00000 n 
-0002751137 00000 n 
-0002751202 00000 n 
-0002751267 00000 n 
-0002751332 00000 n 
-0002751397 00000 n 
-0002751462 00000 n 
-0002751527 00000 n 
-0002751591 00000 n 
-0002751656 00000 n 
-0002751721 00000 n 
-0002751786 00000 n 
-0002751851 00000 n 
-0002751916 00000 n 
-0002751981 00000 n 
-0002752046 00000 n 
-0002752111 00000 n 
-0002752175 00000 n 
-0002752240 00000 n 
-0002752305 00000 n 
-0002752370 00000 n 
-0002752499 00000 n 
-0002752564 00000 n 
-0002752629 00000 n 
-0002752694 00000 n 
-0002752759 00000 n 
-0002752824 00000 n 
-0002752889 00000 n 
-0005138225 00000 n 
-0002755928 00000 n 
-0002759423 00000 n 
-0002756986 00000 n 
-0002755779 00000 n 
-0002753128 00000 n 
-0002756079 00000 n 
-0002756208 00000 n 
-0002756273 00000 n 
-0002756338 00000 n 
-0002756403 00000 n 
-0002756468 00000 n 
-0002756533 00000 n 
-0002756662 00000 n 
-0002756727 00000 n 
-0002756792 00000 n 
-0002756857 00000 n 
-0002815841 00000 n 
-0002816100 00000 n 
-0002759296 00000 n 
-0002757145 00000 n 
-0002815712 00000 n 
-0002815970 00000 n 
-0002816035 00000 n 
-0002815522 00000 n 
-0002820999 00000 n 
-0002819711 00000 n 
-0002816292 00000 n 
-0002819838 00000 n 
-0002820095 00000 n 
-0002820160 00000 n 
-0002820225 00000 n 
-0002820290 00000 n 
-0002820419 00000 n 
-0002820484 00000 n 
-0002820549 00000 n 
-0002820614 00000 n 
-0002820679 00000 n 
-0002820744 00000 n 
-0002820809 00000 n 
-0002820874 00000 n 
-0002820939 00000 n 
-0002827038 00000 n 
-0002825097 00000 n 
-0002821158 00000 n 
-0002825224 00000 n 
-0002825353 00000 n 
-0002825417 00000 n 
-0002825482 00000 n 
-0002825547 00000 n 
-0002825676 00000 n 
-0002825741 00000 n 
-0002825806 00000 n 
-0002825871 00000 n 
-0002825936 00000 n 
-0002826001 00000 n 
-0002826066 00000 n 
-0002826131 00000 n 
-0002826196 00000 n 
-0002826261 00000 n 
-0002826325 00000 n 
-0002826390 00000 n 
-0002826455 00000 n 
-0002826520 00000 n 
-0002826585 00000 n 
-0002826650 00000 n 
-0002826715 00000 n 
-0002826780 00000 n 
-0002826845 00000 n 
-0002826909 00000 n 
-0002826974 00000 n 
-0002832613 00000 n 
-0002831141 00000 n 
-0002827197 00000 n 
-0002831268 00000 n 
-0002831333 00000 n 
-0002831398 00000 n 
-0002831463 00000 n 
-0002831528 00000 n 
-0002831593 00000 n 
-0002831658 00000 n 
-0002831850 00000 n 
-0002831915 00000 n 
-0002831980 00000 n 
-0002832043 00000 n 
-0002832106 00000 n 
-0002832171 00000 n 
-0002832236 00000 n 
-0002832298 00000 n 
-0002832361 00000 n 
-0002832424 00000 n 
-0002832487 00000 n 
-0002832550 00000 n 
-0002839484 00000 n 
-0002836572 00000 n 
-0002832772 00000 n 
-0002836699 00000 n 
-0002836764 00000 n 
-0002836829 00000 n 
-0002836892 00000 n 
-0002836957 00000 n 
-0002837022 00000 n 
-0002837085 00000 n 
-0002837147 00000 n 
-0002837210 00000 n 
-0002837273 00000 n 
-0002837336 00000 n 
-0002837399 00000 n 
-0002837462 00000 n 
-0002837525 00000 n 
-0002837588 00000 n 
-0002837651 00000 n 
-0002837713 00000 n 
-0002837776 00000 n 
-0002837839 00000 n 
-0002837902 00000 n 
-0002837965 00000 n 
-0002838028 00000 n 
-0002838091 00000 n 
-0002838154 00000 n 
-0002838217 00000 n 
-0002838280 00000 n 
-0002838345 00000 n 
-0002838410 00000 n 
-0002838472 00000 n 
-0002838535 00000 n 
-0002838598 00000 n 
-0002838661 00000 n 
-0002838724 00000 n 
-0002838787 00000 n 
-0002838852 00000 n 
-0002838917 00000 n 
-0002838979 00000 n 
-0002839042 00000 n 
-0002839105 00000 n 
-0002839168 00000 n 
-0002839231 00000 n 
-0002839294 00000 n 
-0002839357 00000 n 
-0002839420 00000 n 
-0005138358 00000 n 
-0002846239 00000 n 
-0002843263 00000 n 
-0002839615 00000 n 
-0002843390 00000 n 
-0002843455 00000 n 
-0002843520 00000 n 
-0002843583 00000 n 
-0002843646 00000 n 
-0002843709 00000 n 
-0002843772 00000 n 
-0002843835 00000 n 
-0002843899 00000 n 
-0002843964 00000 n 
-0002844026 00000 n 
-0002844089 00000 n 
-0002844152 00000 n 
-0002844215 00000 n 
-0002844278 00000 n 
-0002844341 00000 n 
-0002844404 00000 n 
-0002844467 00000 n 
-0002844530 00000 n 
-0002844592 00000 n 
-0002844655 00000 n 
-0002844718 00000 n 
-0002844783 00000 n 
-0002844848 00000 n 
-0002844911 00000 n 
-0002844974 00000 n 
-0002845037 00000 n 
-0002845100 00000 n 
-0002845162 00000 n 
-0002845225 00000 n 
-0002845288 00000 n 
-0002845351 00000 n 
-0002845414 00000 n 
-0002845477 00000 n 
-0002845542 00000 n 
-0002845607 00000 n 
-0002845670 00000 n 
-0002845733 00000 n 
-0002845796 00000 n 
-0002845861 00000 n 
-0002845926 00000 n 
-0002845989 00000 n 
-0002846052 00000 n 
-0002846114 00000 n 
-0002846177 00000 n 
-0002852757 00000 n 
-0002849912 00000 n 
-0002846356 00000 n 
-0002850039 00000 n 
-0002850104 00000 n 
-0002850167 00000 n 
-0002850230 00000 n 
-0002850293 00000 n 
-0002850356 00000 n 
-0002850419 00000 n 
-0002850481 00000 n 
-0002850544 00000 n 
-0002850607 00000 n 
-0002850670 00000 n 
-0002850733 00000 n 
-0002850796 00000 n 
-0002850859 00000 n 
-0002850922 00000 n 
-0002850985 00000 n 
-0002851047 00000 n 
-0002851110 00000 n 
-0002851173 00000 n 
-0002851236 00000 n 
-0002851299 00000 n 
-0002851362 00000 n 
-0002851425 00000 n 
-0002851488 00000 n 
-0002851551 00000 n 
-0002851613 00000 n 
-0002851676 00000 n 
-0002851739 00000 n 
-0002851802 00000 n 
-0002851865 00000 n 
-0002851928 00000 n 
-0002851991 00000 n 
-0002852054 00000 n 
-0002852117 00000 n 
-0002852182 00000 n 
-0002852247 00000 n 
-0002852310 00000 n 
-0002852373 00000 n 
-0002852438 00000 n 
-0002852503 00000 n 
-0002852566 00000 n 
-0002852631 00000 n 
-0002852695 00000 n 
-0002858116 00000 n 
-0002856695 00000 n 
-0002852888 00000 n 
-0002856822 00000 n 
-0002856887 00000 n 
-0002856952 00000 n 
-0002857017 00000 n 
-0002857082 00000 n 
-0002857208 00000 n 
-0002857273 00000 n 
-0002857338 00000 n 
-0002857403 00000 n 
-0002857468 00000 n 
-0002857533 00000 n 
-0002857598 00000 n 
-0002857663 00000 n 
-0002857728 00000 n 
-0002857793 00000 n 
-0002857858 00000 n 
-0002857923 00000 n 
-0002868671 00000 n 
-0002864081 00000 n 
-0002862076 00000 n 
-0002858262 00000 n 
-0002862203 00000 n 
-0002862460 00000 n 
-0002862525 00000 n 
-0002862590 00000 n 
-0002862655 00000 n 
-0002862720 00000 n 
-0002862784 00000 n 
-0002862849 00000 n 
-0002862914 00000 n 
-0002862979 00000 n 
-0002863044 00000 n 
-0002863109 00000 n 
-0002863174 00000 n 
-0002863239 00000 n 
-0002863304 00000 n 
-0002863369 00000 n 
-0002863434 00000 n 
-0002863497 00000 n 
-0002863562 00000 n 
-0002863627 00000 n 
-0002863692 00000 n 
-0002863757 00000 n 
-0002863822 00000 n 
-0002863951 00000 n 
-0002864016 00000 n 
-0002868866 00000 n 
-0002869058 00000 n 
-0002869237 00000 n 
-0002869444 00000 n 
-0002869635 00000 n 
-0002869829 00000 n 
-0002870003 00000 n 
-0002870520 00000 n 
-0002868452 00000 n 
-0002864241 00000 n 
-0002870199 00000 n 
-0002875012 00000 n 
-0002875230 00000 n 
-0002875446 00000 n 
-0002875662 00000 n 
-0002875846 00000 n 
-0002876023 00000 n 
-0002876193 00000 n 
-0002876374 00000 n 
-0002876549 00000 n 
-0002876735 00000 n 
-0002876905 00000 n 
-0002877125 00000 n 
-0002877357 00000 n 
-0002877590 00000 n 
-0002877857 00000 n 
-0002882577 00000 n 
-0002882748 00000 n 
-0002878323 00000 n 
-0002874723 00000 n 
-0002870665 00000 n 
-0002878067 00000 n 
-0005138491 00000 n 
-0002882931 00000 n 
-0002883147 00000 n 
-0002883337 00000 n 
-0002883523 00000 n 
-0002883756 00000 n 
-0002883952 00000 n 
-0002884131 00000 n 
-0002884326 00000 n 
-0002884533 00000 n 
-0002889199 00000 n 
-0002885009 00000 n 
-0002882328 00000 n 
-0002878441 00000 n 
-0002884753 00000 n 
-0002889406 00000 n 
-0002889598 00000 n 
-0002889789 00000 n 
-0002889980 00000 n 
-0002890168 00000 n 
-0002890361 00000 n 
-0002890841 00000 n 
-0002891081 00000 n 
-0002891286 00000 n 
-0002891907 00000 n 
-0002888950 00000 n 
-0002885154 00000 n 
-0002891518 00000 n 
-0002890602 00000 n 
-0002891583 00000 n 
-0002891648 00000 n 
-0002891712 00000 n 
-0002891777 00000 n 
-0002891842 00000 n 
-0002895692 00000 n 
-0002896401 00000 n 
-0002895543 00000 n 
-0002892010 00000 n 
-0002895886 00000 n 
-0002896078 00000 n 
-0002896143 00000 n 
-0002896208 00000 n 
-0002899985 00000 n 
-0002899276 00000 n 
-0002896560 00000 n 
-0002899403 00000 n 
-0002899531 00000 n 
-0002899596 00000 n 
-0002899661 00000 n 
-0002899726 00000 n 
-0002899791 00000 n 
-0002899856 00000 n 
-0002904688 00000 n 
-0002903657 00000 n 
-0002900144 00000 n 
-0002903784 00000 n 
-0002904040 00000 n 
-0002904105 00000 n 
-0002904170 00000 n 
-0002904235 00000 n 
-0002904300 00000 n 
-0002904365 00000 n 
-0002904430 00000 n 
-0002904495 00000 n 
-0002904559 00000 n 
-0002904624 00000 n 
-0002908803 00000 n 
-0002908355 00000 n 
-0002904833 00000 n 
-0002908482 00000 n 
-0005138624 00000 n 
-0002914826 00000 n 
-0002912947 00000 n 
-0002908976 00000 n 
-0002913074 00000 n 
-0002913203 00000 n 
-0002913268 00000 n 
-0002913333 00000 n 
-0002913398 00000 n 
-0002913463 00000 n 
-0002913528 00000 n 
-0002913592 00000 n 
-0002913657 00000 n 
-0002913722 00000 n 
-0002913787 00000 n 
-0002913852 00000 n 
-0002913917 00000 n 
-0002913982 00000 n 
-0002914047 00000 n 
-0002914112 00000 n 
-0002914176 00000 n 
-0002914241 00000 n 
-0002914306 00000 n 
-0002914371 00000 n 
-0002914436 00000 n 
-0002914501 00000 n 
-0002914566 00000 n 
-0002914631 00000 n 
-0002914696 00000 n 
-0002914761 00000 n 
-0003040606 00000 n 
-0003040755 00000 n 
-0002916139 00000 n 
-0003042299 00000 n 
-0003041163 00000 n 
-0002915980 00000 n 
-0002914985 00000 n 
-0003040905 00000 n 
-0003041098 00000 n 
-0002973603 00000 n 
-0003182724 00000 n 
-0003182917 00000 n 
-0003042172 00000 n 
-0003041305 00000 n 
-0003182595 00000 n 
-0003098113 00000 n 
-0003186918 00000 n 
-0003187654 00000 n 
-0003186769 00000 n 
-0003183059 00000 n 
-0003187076 00000 n 
-0003187205 00000 n 
-0003191838 00000 n 
-0003190810 00000 n 
-0003187813 00000 n 
-0003190937 00000 n 
-0003191450 00000 n 
-0003191515 00000 n 
-0003191580 00000 n 
-0003191645 00000 n 
-0003191709 00000 n 
-0003191774 00000 n 
-0003197022 00000 n 
-0003195860 00000 n 
-0003191997 00000 n 
-0003195987 00000 n 
-0003196052 00000 n 
-0003196117 00000 n 
-0003196182 00000 n 
-0003196246 00000 n 
-0003196311 00000 n 
-0003196376 00000 n 
-0003196441 00000 n 
-0003196506 00000 n 
-0003196571 00000 n 
-0003196636 00000 n 
-0003196701 00000 n 
-0005138757 00000 n 
-0003314084 00000 n 
-0003198531 00000 n 
-0003314557 00000 n 
-0003198382 00000 n 
-0003197196 00000 n 
-0003314236 00000 n 
-0003314493 00000 n 
-0003313894 00000 n 
-0003317841 00000 n 
-0003318146 00000 n 
-0003319358 00000 n 
-0003317662 00000 n 
-0003314735 00000 n 
-0003318455 00000 n 
-0003317994 00000 n 
-0003318774 00000 n 
-0003318838 00000 n 
-0003318903 00000 n 
-0003318968 00000 n 
-0003319033 00000 n 
-0003319098 00000 n 
-0003319163 00000 n 
-0003319228 00000 n 
-0003319293 00000 n 
-0003318302 00000 n 
-0003323485 00000 n 
-0003324253 00000 n 
-0003322579 00000 n 
-0003319516 00000 n 
-0003322706 00000 n 
-0003322771 00000 n 
-0003322836 00000 n 
-0003322901 00000 n 
-0003322966 00000 n 
-0003323030 00000 n 
-0003323095 00000 n 
-0003323160 00000 n 
-0003323225 00000 n 
-0003323290 00000 n 
-0003323355 00000 n 
-0003323420 00000 n 
-0003323742 00000 n 
-0003323807 00000 n 
-0003323872 00000 n 
-0003323937 00000 n 
-0003324000 00000 n 
-0003324063 00000 n 
-0003324128 00000 n 
-0003324190 00000 n 
-0003327457 00000 n 
-0003328959 00000 n 
-0003327308 00000 n 
-0003324411 00000 n 
-0003327610 00000 n 
-0003327675 00000 n 
-0003327740 00000 n 
-0003327802 00000 n 
-0003327865 00000 n 
-0003327930 00000 n 
-0003327993 00000 n 
-0003328056 00000 n 
-0003328121 00000 n 
-0003328184 00000 n 
-0003328247 00000 n 
-0003328312 00000 n 
-0003328377 00000 n 
-0003328442 00000 n 
-0003328507 00000 n 
-0003328572 00000 n 
-0003328637 00000 n 
-0003328830 00000 n 
-0003333136 00000 n 
-0003332751 00000 n 
-0003329118 00000 n 
-0003332878 00000 n 
-0003333007 00000 n 
-0003336902 00000 n 
-0003337126 00000 n 
-0003337344 00000 n 
-0003337541 00000 n 
-0003337718 00000 n 
-0003337899 00000 n 
-0003338106 00000 n 
-0003338313 00000 n 
-0003338508 00000 n 
-0003339116 00000 n 
-0003336673 00000 n 
-0003333295 00000 n 
-0003338664 00000 n 
-0003338921 00000 n 
-0003338986 00000 n 
-0003339051 00000 n 
-0005138890 00000 n 
-0003345137 00000 n 
-0003343724 00000 n 
-0003339304 00000 n 
-0003343851 00000 n 
-0003343916 00000 n 
-0003343981 00000 n 
-0003344046 00000 n 
-0003344111 00000 n 
-0003344176 00000 n 
-0003344241 00000 n 
-0003344306 00000 n 
-0003344371 00000 n 
-0003344436 00000 n 
-0003344501 00000 n 
-0003344566 00000 n 
-0003344630 00000 n 
-0003344694 00000 n 
-0003344759 00000 n 
-0003344824 00000 n 
-0003344887 00000 n 
-0003344950 00000 n 
-0003345012 00000 n 
-0003345075 00000 n 
-0003348498 00000 n 
-0003348943 00000 n 
-0003349149 00000 n 
-0003349329 00000 n 
-0003350428 00000 n 
-0003348309 00000 n 
-0003345267 00000 n 
-0003349530 00000 n 
-0003349595 00000 n 
-0003349658 00000 n 
-0003349721 00000 n 
-0003349784 00000 n 
-0003349847 00000 n 
-0003348722 00000 n 
-0003350168 00000 n 
-0003350233 00000 n 
-0003350298 00000 n 
-0003350363 00000 n 
-0003357938 00000 n 
-0003353722 00000 n 
-0003350559 00000 n 
-0003353849 00000 n 
-0003353914 00000 n 
-0003353979 00000 n 
-0003354044 00000 n 
-0003354109 00000 n 
-0003354174 00000 n 
-0003354239 00000 n 
-0003354304 00000 n 
-0003354369 00000 n 
-0003354433 00000 n 
-0003354498 00000 n 
-0003354563 00000 n 
-0003354628 00000 n 
-0003354693 00000 n 
-0003354758 00000 n 
-0003354823 00000 n 
-0003354888 00000 n 
-0003354953 00000 n 
-0003355017 00000 n 
-0003355082 00000 n 
-0003355147 00000 n 
-0003355212 00000 n 
-0003355277 00000 n 
-0003355342 00000 n 
-0003355407 00000 n 
-0003355472 00000 n 
-0003355537 00000 n 
-0003355601 00000 n 
-0003355666 00000 n 
-0003355731 00000 n 
-0003355796 00000 n 
-0003355861 00000 n 
-0003355926 00000 n 
-0003355991 00000 n 
-0003356056 00000 n 
-0003356121 00000 n 
-0003356185 00000 n 
-0003356250 00000 n 
-0003356315 00000 n 
-0003356380 00000 n 
-0003356445 00000 n 
-0003356510 00000 n 
-0003356575 00000 n 
-0003356640 00000 n 
-0003356705 00000 n 
-0003356770 00000 n 
-0003356835 00000 n 
-0003356900 00000 n 
-0003356965 00000 n 
-0003357030 00000 n 
-0003357095 00000 n 
-0003357160 00000 n 
-0003357225 00000 n 
-0003357290 00000 n 
-0003357355 00000 n 
-0003357419 00000 n 
-0003357484 00000 n 
-0003357549 00000 n 
-0003357614 00000 n 
-0003357679 00000 n 
-0003357744 00000 n 
-0003357809 00000 n 
-0003357874 00000 n 
-0003360967 00000 n 
-0003359672 00000 n 
-0003358041 00000 n 
-0003359799 00000 n 
-0003359864 00000 n 
-0003359929 00000 n 
-0003359994 00000 n 
-0003360059 00000 n 
-0003360124 00000 n 
-0003360189 00000 n 
-0003360253 00000 n 
-0003360318 00000 n 
-0003360383 00000 n 
-0003360448 00000 n 
-0003360513 00000 n 
-0003360578 00000 n 
-0003360643 00000 n 
-0003360708 00000 n 
-0003360773 00000 n 
-0003360837 00000 n 
-0003360902 00000 n 
-0003366403 00000 n 
-0003363922 00000 n 
-0003363540 00000 n 
-0003361070 00000 n 
-0003363667 00000 n 
-0003374522 00000 n 
-0003366276 00000 n 
-0003364067 00000 n 
-0003374200 00000 n 
-0003374329 00000 n 
-0005139023 00000 n 
-0003373285 00000 n 
-0003378536 00000 n 
-0003378089 00000 n 
-0003374664 00000 n 
-0003378216 00000 n 
-0003386982 00000 n 
-0003383056 00000 n 
-0003382542 00000 n 
-0003378681 00000 n 
-0003382669 00000 n 
-0003382862 00000 n 
-0003382927 00000 n 
-0003387276 00000 n 
-0003387443 00000 n 
-0003388205 00000 n 
-0003386793 00000 n 
-0003383173 00000 n 
-0003387820 00000 n 
-0003387130 00000 n 
-0003387632 00000 n 
-0003393852 00000 n 
-0003392045 00000 n 
-0003388350 00000 n 
-0003392172 00000 n 
-0003392364 00000 n 
-0003392429 00000 n 
-0003392494 00000 n 
-0003392558 00000 n 
-0003392623 00000 n 
-0003392688 00000 n 
-0003392753 00000 n 
-0003392818 00000 n 
-0003392883 00000 n 
-0003392948 00000 n 
-0003393013 00000 n 
-0003393077 00000 n 
-0003393142 00000 n 
-0003393207 00000 n 
-0003393272 00000 n 
-0003393337 00000 n 
-0003393402 00000 n 
-0003393467 00000 n 
-0003393532 00000 n 
-0003393597 00000 n 
-0003393662 00000 n 
-0003393727 00000 n 
-0003393792 00000 n 
-0003398854 00000 n 
-0003399093 00000 n 
-0003399330 00000 n 
-0003401041 00000 n 
-0003398685 00000 n 
-0003393998 00000 n 
-0003399485 00000 n 
-0003399614 00000 n 
-0003399679 00000 n 
-0003399744 00000 n 
-0003399809 00000 n 
-0003399938 00000 n 
-0003400003 00000 n 
-0003400068 00000 n 
-0003400133 00000 n 
-0003400198 00000 n 
-0003400263 00000 n 
-0003400328 00000 n 
-0003400393 00000 n 
-0003400457 00000 n 
-0003400522 00000 n 
-0003400587 00000 n 
-0003400652 00000 n 
-0003400717 00000 n 
-0003400782 00000 n 
-0003400847 00000 n 
-0003400912 00000 n 
-0003406254 00000 n 
-0003404185 00000 n 
-0003401228 00000 n 
-0003404312 00000 n 
-0003404377 00000 n 
-0003404442 00000 n 
-0003404571 00000 n 
-0003404636 00000 n 
-0003404701 00000 n 
-0003404766 00000 n 
-0003404831 00000 n 
-0003404895 00000 n 
-0003404960 00000 n 
-0003405025 00000 n 
-0003405090 00000 n 
-0003405155 00000 n 
-0003405220 00000 n 
-0003405285 00000 n 
-0003405350 00000 n 
-0003405415 00000 n 
-0003405480 00000 n 
-0003405545 00000 n 
-0003405610 00000 n 
-0003405674 00000 n 
-0003405739 00000 n 
-0003405804 00000 n 
-0003405869 00000 n 
-0003405934 00000 n 
-0003405999 00000 n 
-0003406064 00000 n 
-0003406129 00000 n 
-0003406194 00000 n 
-0005139156 00000 n 
-0003411942 00000 n 
-0003409221 00000 n 
-0003406413 00000 n 
-0003409348 00000 n 
-0003409413 00000 n 
-0003409478 00000 n 
-0003409543 00000 n 
-0003409608 00000 n 
-0003409801 00000 n 
-0003409866 00000 n 
-0003409931 00000 n 
-0003409996 00000 n 
-0003410061 00000 n 
-0003410126 00000 n 
-0003410191 00000 n 
-0003410256 00000 n 
-0003410321 00000 n 
-0003410386 00000 n 
-0003410451 00000 n 
-0003410515 00000 n 
-0003410580 00000 n 
-0003410645 00000 n 
-0003410710 00000 n 
-0003410775 00000 n 
-0003410840 00000 n 
-0003410905 00000 n 
-0003410970 00000 n 
-0003411035 00000 n 
-0003411099 00000 n 
-0003411164 00000 n 
-0003411229 00000 n 
-0003411294 00000 n 
-0003411359 00000 n 
-0003411424 00000 n 
-0003411489 00000 n 
-0003411554 00000 n 
-0003411619 00000 n 
-0003411684 00000 n 
-0003411749 00000 n 
-0003411813 00000 n 
-0003411878 00000 n 
-0003415093 00000 n 
-0003418821 00000 n 
-0003414944 00000 n 
-0003412073 00000 n 
-0003415253 00000 n 
-0003415318 00000 n 
-0003415383 00000 n 
-0003415448 00000 n 
-0003415513 00000 n 
-0003415578 00000 n 
-0003415643 00000 n 
-0003415707 00000 n 
-0003415772 00000 n 
-0003415837 00000 n 
-0003415902 00000 n 
-0003415967 00000 n 
-0003416032 00000 n 
-0003416097 00000 n 
-0003416225 00000 n 
-0003416290 00000 n 
-0003416355 00000 n 
-0003416420 00000 n 
-0003416485 00000 n 
-0003416550 00000 n 
-0003416615 00000 n 
-0003416680 00000 n 
-0003416745 00000 n 
-0003416810 00000 n 
-0003416875 00000 n 
-0003416940 00000 n 
-0003417005 00000 n 
-0003417070 00000 n 
-0003417135 00000 n 
-0003417200 00000 n 
-0003417265 00000 n 
-0003417330 00000 n 
-0003417395 00000 n 
-0003417460 00000 n 
-0003417524 00000 n 
-0003417589 00000 n 
-0003417654 00000 n 
-0003417719 00000 n 
-0003417784 00000 n 
-0003417849 00000 n 
-0003417914 00000 n 
-0003417979 00000 n 
-0003418044 00000 n 
-0003418108 00000 n 
-0003418173 00000 n 
-0003418238 00000 n 
-0003418303 00000 n 
-0003418368 00000 n 
-0003418433 00000 n 
-0003418498 00000 n 
-0003418563 00000 n 
-0003418628 00000 n 
-0003418692 00000 n 
-0003418757 00000 n 
-0003936501 00000 n 
-0003423700 00000 n 
-0003421889 00000 n 
-0003418938 00000 n 
-0003422016 00000 n 
-0003422081 00000 n 
-0003422146 00000 n 
-0003422211 00000 n 
-0003422276 00000 n 
-0003422341 00000 n 
-0003422406 00000 n 
-0003422470 00000 n 
-0003422535 00000 n 
-0003422599 00000 n 
-0003422664 00000 n 
-0003422729 00000 n 
-0003422922 00000 n 
-0003422987 00000 n 
-0003423052 00000 n 
-0003423117 00000 n 
-0003423246 00000 n 
-0003423311 00000 n 
-0003423376 00000 n 
-0003423441 00000 n 
-0003423505 00000 n 
-0003423570 00000 n 
-0003423635 00000 n 
-0003429229 00000 n 
-0003426898 00000 n 
-0003423831 00000 n 
-0003427025 00000 n 
-0003427090 00000 n 
-0003427155 00000 n 
-0003427220 00000 n 
-0003427285 00000 n 
-0003427350 00000 n 
-0003427414 00000 n 
-0003427479 00000 n 
-0003427544 00000 n 
-0003427609 00000 n 
-0003427674 00000 n 
-0003427739 00000 n 
-0003427804 00000 n 
-0003427869 00000 n 
-0003427934 00000 n 
-0003427999 00000 n 
-0003428064 00000 n 
-0003428129 00000 n 
-0003428194 00000 n 
-0003428257 00000 n 
-0003428322 00000 n 
-0003428387 00000 n 
-0003428452 00000 n 
-0003428516 00000 n 
-0003428581 00000 n 
-0003428646 00000 n 
-0003428711 00000 n 
-0003428776 00000 n 
-0003428905 00000 n 
-0003428970 00000 n 
-0003429035 00000 n 
-0003429100 00000 n 
-0003429165 00000 n 
-0003435725 00000 n 
-0003431963 00000 n 
-0003429388 00000 n 
-0003432090 00000 n 
-0003432155 00000 n 
-0003432220 00000 n 
-0003432285 00000 n 
-0003432350 00000 n 
-0003432415 00000 n 
-0003432480 00000 n 
-0003432544 00000 n 
-0003432609 00000 n 
-0003432674 00000 n 
-0003432739 00000 n 
-0003432804 00000 n 
-0003432869 00000 n 
-0003432934 00000 n 
-0003432999 00000 n 
-0003433064 00000 n 
-0003433128 00000 n 
-0003433193 00000 n 
-0003433258 00000 n 
-0003433323 00000 n 
-0003433388 00000 n 
-0003433453 00000 n 
-0003433518 00000 n 
-0003433583 00000 n 
-0003433648 00000 n 
-0003433712 00000 n 
-0003433777 00000 n 
-0003433842 00000 n 
-0003433907 00000 n 
-0003433972 00000 n 
-0003434037 00000 n 
-0003434102 00000 n 
-0003434167 00000 n 
-0003434232 00000 n 
-0003434296 00000 n 
-0003434361 00000 n 
-0003434426 00000 n 
-0003434491 00000 n 
-0003434556 00000 n 
-0003434621 00000 n 
-0003434686 00000 n 
-0003434751 00000 n 
-0003434816 00000 n 
-0003434880 00000 n 
-0003434945 00000 n 
-0003435010 00000 n 
-0003435075 00000 n 
-0003435140 00000 n 
-0003435205 00000 n 
-0003435270 00000 n 
-0003435335 00000 n 
-0003435400 00000 n 
-0003435465 00000 n 
-0003435530 00000 n 
-0003435595 00000 n 
-0003435660 00000 n 
-0003440555 00000 n 
-0003438814 00000 n 
-0003435842 00000 n 
-0003438941 00000 n 
-0003439262 00000 n 
-0003439327 00000 n 
-0003439391 00000 n 
-0003439456 00000 n 
-0003439521 00000 n 
-0003439586 00000 n 
-0003439651 00000 n 
-0003439716 00000 n 
-0003439781 00000 n 
-0003439846 00000 n 
-0003439911 00000 n 
-0003439975 00000 n 
-0003440040 00000 n 
-0003440105 00000 n 
-0003440170 00000 n 
-0003440235 00000 n 
-0003440300 00000 n 
-0003440365 00000 n 
-0003440430 00000 n 
-0003440495 00000 n 
-0005139289 00000 n 
-0003442139 00000 n 
-0003441752 00000 n 
-0003440729 00000 n 
-0003441879 00000 n 
-0003441944 00000 n 
-0003442009 00000 n 
-0003442074 00000 n 
-0003444368 00000 n 
-0003444568 00000 n 
-0003445154 00000 n 
-0003444209 00000 n 
-0003442256 00000 n 
-0003444771 00000 n 
-0003449209 00000 n 
-0003449384 00000 n 
-0003449700 00000 n 
-0003449050 00000 n 
-0003445285 00000 n 
-0003449571 00000 n 
-0003453176 00000 n 
-0003453347 00000 n 
-0003453528 00000 n 
-0003453700 00000 n 
-0003453871 00000 n 
-0003454041 00000 n 
-0003455833 00000 n 
-0003452977 00000 n 
-0003449803 00000 n 
-0003454214 00000 n 
-0003454407 00000 n 
-0003454472 00000 n 
-0003454536 00000 n 
-0003454601 00000 n 
-0003454666 00000 n 
-0003454731 00000 n 
-0003454796 00000 n 
-0003454861 00000 n 
-0003454926 00000 n 
-0003454991 00000 n 
-0003455056 00000 n 
-0003455120 00000 n 
-0003455185 00000 n 
-0003455250 00000 n 
-0003455315 00000 n 
-0003455380 00000 n 
-0003455445 00000 n 
-0003455510 00000 n 
-0003455575 00000 n 
-0003455640 00000 n 
-0003455704 00000 n 
-0003455769 00000 n 
-0003459046 00000 n 
-0003459236 00000 n 
-0003462845 00000 n 
-0003458887 00000 n 
-0003455964 00000 n 
-0003459407 00000 n 
-0003459472 00000 n 
-0003459537 00000 n 
-0003459602 00000 n 
-0003459667 00000 n 
-0003459732 00000 n 
-0003459797 00000 n 
-0003459861 00000 n 
-0003459926 00000 n 
-0003459991 00000 n 
-0003460056 00000 n 
-0003460121 00000 n 
-0003460186 00000 n 
-0003460251 00000 n 
-0003460316 00000 n 
-0003460381 00000 n 
-0003460445 00000 n 
-0003460510 00000 n 
-0003460575 00000 n 
-0003460640 00000 n 
-0003460705 00000 n 
-0003460770 00000 n 
-0003460835 00000 n 
-0003460900 00000 n 
-0003460965 00000 n 
-0003461029 00000 n 
-0003461094 00000 n 
-0003461159 00000 n 
-0003461224 00000 n 
-0003461289 00000 n 
-0003461354 00000 n 
-0003461419 00000 n 
-0003461484 00000 n 
-0003461549 00000 n 
-0003461613 00000 n 
-0003461678 00000 n 
-0003461743 00000 n 
-0003461808 00000 n 
-0003461873 00000 n 
-0003461938 00000 n 
-0003462003 00000 n 
-0003462068 00000 n 
-0003462133 00000 n 
-0003462197 00000 n 
-0003462262 00000 n 
-0003462327 00000 n 
-0003462392 00000 n 
-0003462457 00000 n 
-0003462522 00000 n 
-0003462587 00000 n 
-0003462652 00000 n 
-0003462717 00000 n 
-0003465377 00000 n 
-0003465588 00000 n 
-0003467295 00000 n 
-0003465218 00000 n 
-0003462962 00000 n 
-0003465737 00000 n 
-0003465802 00000 n 
-0003465867 00000 n 
-0003465996 00000 n 
-0003466061 00000 n 
-0003466126 00000 n 
-0003466191 00000 n 
-0003466256 00000 n 
-0003466321 00000 n 
-0003466386 00000 n 
-0003466451 00000 n 
-0003466516 00000 n 
-0003466581 00000 n 
-0003466646 00000 n 
-0003466711 00000 n 
-0003466775 00000 n 
-0003466840 00000 n 
-0003466905 00000 n 
-0003466970 00000 n 
-0003467035 00000 n 
-0003467100 00000 n 
-0003467165 00000 n 
-0003467230 00000 n 
-0005139422 00000 n 
-0003475115 00000 n 
-0003470942 00000 n 
-0003470496 00000 n 
-0003467440 00000 n 
-0003470623 00000 n 
-0003475662 00000 n 
-0003474966 00000 n 
-0003471073 00000 n 
-0003475341 00000 n 
-0003480275 00000 n 
-0003479696 00000 n 
-0003475807 00000 n 
-0003479823 00000 n 
-0003479952 00000 n 
-0003480017 00000 n 
-0003480081 00000 n 
-0003480146 00000 n 
-0003483785 00000 n 
-0003484175 00000 n 
-0003483636 00000 n 
-0003480420 00000 n 
-0003483982 00000 n 
-0003488314 00000 n 
-0003487283 00000 n 
-0003484306 00000 n 
-0003487410 00000 n 
-0003487731 00000 n 
-0003487796 00000 n 
-0003487861 00000 n 
-0003487926 00000 n 
-0003487989 00000 n 
-0003488054 00000 n 
-0003488119 00000 n 
-0003488184 00000 n 
-0003488249 00000 n 
-0003489972 00000 n 
-0003489652 00000 n 
-0003488445 00000 n 
-0003489779 00000 n 
-0005139555 00000 n 
-0003492464 00000 n 
-0003491954 00000 n 
-0003490103 00000 n 
-0003492081 00000 n 
-0003497137 00000 n 
-0003496105 00000 n 
-0003492596 00000 n 
-0003496232 00000 n 
-0003496361 00000 n 
-0003496426 00000 n 
-0003496490 00000 n 
-0003496555 00000 n 
-0003496684 00000 n 
-0003496749 00000 n 
-0003496878 00000 n 
-0003496943 00000 n 
-0003497008 00000 n 
-0003502176 00000 n 
-0003501160 00000 n 
-0003497309 00000 n 
-0003501287 00000 n 
-0003501352 00000 n 
-0003501416 00000 n 
-0003501479 00000 n 
-0003501541 00000 n 
-0003501604 00000 n 
-0003501667 00000 n 
-0003501730 00000 n 
-0003501793 00000 n 
-0003501856 00000 n 
-0003502047 00000 n 
-0003502111 00000 n 
-0003506822 00000 n 
-0003506176 00000 n 
-0003502336 00000 n 
-0003506303 00000 n 
-0003506368 00000 n 
-0003506433 00000 n 
-0003506498 00000 n 
-0003506563 00000 n 
-0003506628 00000 n 
-0003506693 00000 n 
-0003511136 00000 n 
-0003509978 00000 n 
-0003507010 00000 n 
-0003510105 00000 n 
-0003510234 00000 n 
-0003510298 00000 n 
-0003510362 00000 n 
-0003510426 00000 n 
-0003510491 00000 n 
-0003510555 00000 n 
-0003510619 00000 n 
-0003510683 00000 n 
-0003510748 00000 n 
-0003510813 00000 n 
-0003510942 00000 n 
-0003511006 00000 n 
-0003511071 00000 n 
-0003515379 00000 n 
-0003514020 00000 n 
-0003511295 00000 n 
-0003514147 00000 n 
-0003514212 00000 n 
-0003514277 00000 n 
-0003514342 00000 n 
-0003514407 00000 n 
-0003514472 00000 n 
-0003514537 00000 n 
-0003514602 00000 n 
-0003514667 00000 n 
-0003514732 00000 n 
-0003514797 00000 n 
-0003514862 00000 n 
-0003514927 00000 n 
-0003514992 00000 n 
-0003515057 00000 n 
-0003515122 00000 n 
-0005139688 00000 n 
-0003518122 00000 n 
-0003518277 00000 n 
-0003523093 00000 n 
-0003523400 00000 n 
-0003519421 00000 n 
-0003517953 00000 n 
-0003515524 00000 n 
-0003518582 00000 n 
-0003518711 00000 n 
-0003518776 00000 n 
-0003518841 00000 n 
-0003518906 00000 n 
-0003518971 00000 n 
-0003519036 00000 n 
-0003519101 00000 n 
-0003519166 00000 n 
-0003518430 00000 n 
-0003523554 00000 n 
-0003524031 00000 n 
-0003522914 00000 n 
-0003519566 00000 n 
-0003523710 00000 n 
-0003523248 00000 n 
-0003528713 00000 n 
-0003527939 00000 n 
-0003524162 00000 n 
-0003528066 00000 n 
-0003528259 00000 n 
-0003528324 00000 n 
-0003528388 00000 n 
-0003528453 00000 n 
-0003528518 00000 n 
-0003528583 00000 n 
-0003528648 00000 n 
-0003532247 00000 n 
-0003532403 00000 n 
-0003533656 00000 n 
-0003532088 00000 n 
-0003528844 00000 n 
-0003532555 00000 n 
-0003532620 00000 n 
-0003532684 00000 n 
-0003532749 00000 n 
-0003532814 00000 n 
-0003532879 00000 n 
-0003532944 00000 n 
-0003533009 00000 n 
-0003533074 00000 n 
-0003533203 00000 n 
-0003533268 00000 n 
-0003533333 00000 n 
-0003533398 00000 n 
-0003533527 00000 n 
-0003537337 00000 n 
-0003537688 00000 n 
-0003537188 00000 n 
-0003533787 00000 n 
-0003537495 00000 n 
-0003537624 00000 n 
-0003541736 00000 n 
-0003540898 00000 n 
-0003537833 00000 n 
-0003541025 00000 n 
-0003541090 00000 n 
-0003541155 00000 n 
-0003541220 00000 n 
-0003541285 00000 n 
-0003541350 00000 n 
-0003541414 00000 n 
-0003541479 00000 n 
-0005139821 00000 n 
-0003545879 00000 n 
-0003545363 00000 n 
-0003541881 00000 n 
-0003545490 00000 n 
-0003545619 00000 n 
-0003545684 00000 n 
-0003545749 00000 n 
-0003545814 00000 n 
-0003547909 00000 n 
-0003548121 00000 n 
-0003548784 00000 n 
-0003547750 00000 n 
-0003546051 00000 n 
-0003548331 00000 n 
-0003548396 00000 n 
-0003548461 00000 n 
-0003548526 00000 n 
-0003548591 00000 n 
-0003548656 00000 n 
-0003551970 00000 n 
-0003552377 00000 n 
-0003551821 00000 n 
-0003548928 00000 n 
-0003552122 00000 n 
-0003556132 00000 n 
-0003556840 00000 n 
-0003555983 00000 n 
-0003552523 00000 n 
-0003556323 00000 n 
-0003556516 00000 n 
-0003556581 00000 n 
-0003556710 00000 n 
-0003556775 00000 n 
-0003561838 00000 n 
-0003561521 00000 n 
-0003556986 00000 n 
-0003561648 00000 n 
-0003561713 00000 n 
-0003561776 00000 n 
-0003567184 00000 n 
-0003566238 00000 n 
-0003561969 00000 n 
-0003566365 00000 n 
-0003566430 00000 n 
-0003566495 00000 n 
-0003566558 00000 n 
-0003566621 00000 n 
-0003566684 00000 n 
-0003566746 00000 n 
-0003566809 00000 n 
-0003566872 00000 n 
-0003566935 00000 n 
-0003567000 00000 n 
-0003567063 00000 n 
-0003567126 00000 n 
-0005139954 00000 n 
-0003573149 00000 n 
-0003570821 00000 n 
-0003567315 00000 n 
-0003570948 00000 n 
-0003571013 00000 n 
-0003571078 00000 n 
-0003571269 00000 n 
-0003571334 00000 n 
-0003571398 00000 n 
-0003571463 00000 n 
-0003571528 00000 n 
-0003571593 00000 n 
-0003571658 00000 n 
-0003571723 00000 n 
-0003571788 00000 n 
-0003571853 00000 n 
-0003571918 00000 n 
-0003571982 00000 n 
-0003572047 00000 n 
-0003572112 00000 n 
-0003572177 00000 n 
-0003572306 00000 n 
-0003572370 00000 n 
-0003572435 00000 n 
-0003572500 00000 n 
-0003572565 00000 n 
-0003572629 00000 n 
-0003572694 00000 n 
-0003572759 00000 n 
-0003572824 00000 n 
-0003572889 00000 n 
-0003572954 00000 n 
-0003573019 00000 n 
-0003573084 00000 n 
-0003578658 00000 n 
-0003576783 00000 n 
-0003573295 00000 n 
-0003576910 00000 n 
-0003576975 00000 n 
-0003577040 00000 n 
-0003577105 00000 n 
-0003577170 00000 n 
-0003577235 00000 n 
-0003577300 00000 n 
-0003577365 00000 n 
-0003577430 00000 n 
-0003577494 00000 n 
-0003577558 00000 n 
-0003577623 00000 n 
-0003577687 00000 n 
-0003577752 00000 n 
-0003577817 00000 n 
-0003577882 00000 n 
-0003577947 00000 n 
-0003578012 00000 n 
-0003578077 00000 n 
-0003578142 00000 n 
-0003578207 00000 n 
-0003578272 00000 n 
-0003578337 00000 n 
-0003578402 00000 n 
-0003578466 00000 n 
-0003582973 00000 n 
-0003583388 00000 n 
-0003582824 00000 n 
-0003578818 00000 n 
-0003583130 00000 n 
-0003583323 00000 n 
-0003589072 00000 n 
-0003586353 00000 n 
-0003583591 00000 n 
-0003586480 00000 n 
-0003586609 00000 n 
-0003586674 00000 n 
-0003586739 00000 n 
-0003586804 00000 n 
-0003586869 00000 n 
-0003586934 00000 n 
-0003586999 00000 n 
-0003587064 00000 n 
-0003587129 00000 n 
-0003587194 00000 n 
-0003587259 00000 n 
-0003587388 00000 n 
-0003587452 00000 n 
-0003587516 00000 n 
-0003587581 00000 n 
-0003587646 00000 n 
-0003587711 00000 n 
-0003587776 00000 n 
-0003587841 00000 n 
-0003587906 00000 n 
-0003587971 00000 n 
-0003588036 00000 n 
-0003588100 00000 n 
-0003588165 00000 n 
-0003588294 00000 n 
-0003588359 00000 n 
-0003588424 00000 n 
-0003588489 00000 n 
-0003588554 00000 n 
-0003588619 00000 n 
-0003588684 00000 n 
-0003588749 00000 n 
-0003588814 00000 n 
-0003588878 00000 n 
-0003588943 00000 n 
-0003594901 00000 n 
-0003592181 00000 n 
-0003589217 00000 n 
-0003592308 00000 n 
-0003592373 00000 n 
-0003592438 00000 n 
-0003592503 00000 n 
-0003592568 00000 n 
-0003592633 00000 n 
-0003592698 00000 n 
-0003592763 00000 n 
-0003592828 00000 n 
-0003592892 00000 n 
-0003592957 00000 n 
-0003593022 00000 n 
-0003593087 00000 n 
-0003593280 00000 n 
-0003593345 00000 n 
-0003593410 00000 n 
-0003593475 00000 n 
-0003593540 00000 n 
-0003593605 00000 n 
-0003593669 00000 n 
-0003593734 00000 n 
-0003593799 00000 n 
-0003593928 00000 n 
-0003593993 00000 n 
-0003594058 00000 n 
-0003594123 00000 n 
-0003594188 00000 n 
-0003594253 00000 n 
-0003594318 00000 n 
-0003594382 00000 n 
-0003594447 00000 n 
-0003594512 00000 n 
-0003594577 00000 n 
-0003594642 00000 n 
-0003594707 00000 n 
-0003594772 00000 n 
-0003594837 00000 n 
-0003596968 00000 n 
-0003596256 00000 n 
-0003595060 00000 n 
-0003596383 00000 n 
-0003596448 00000 n 
-0003596513 00000 n 
-0003596578 00000 n 
-0003596643 00000 n 
-0003596708 00000 n 
-0003596773 00000 n 
-0003596838 00000 n 
-0003596903 00000 n 
-0005140087 00000 n 
-0003599974 00000 n 
-0003599526 00000 n 
-0003597085 00000 n 
-0003599653 00000 n 
-0003603735 00000 n 
-0003603157 00000 n 
-0003600077 00000 n 
-0003603284 00000 n 
-0003603477 00000 n 
-0003603542 00000 n 
-0003603607 00000 n 
-0003607527 00000 n 
-0003607684 00000 n 
-0003613765 00000 n 
-0003613925 00000 n 
-0003609651 00000 n 
-0003607368 00000 n 
-0003603867 00000 n 
-0003607839 00000 n 
-0003607968 00000 n 
-0003608033 00000 n 
-0003608097 00000 n 
-0003608224 00000 n 
-0003608289 00000 n 
-0003608354 00000 n 
-0003608419 00000 n 
-0003608484 00000 n 
-0003608549 00000 n 
-0003608614 00000 n 
-0003608679 00000 n 
-0003608744 00000 n 
-0003608809 00000 n 
-0003608873 00000 n 
-0003608938 00000 n 
-0003609003 00000 n 
-0003609068 00000 n 
-0003609133 00000 n 
-0003609198 00000 n 
-0003609263 00000 n 
-0003609328 00000 n 
-0003609393 00000 n 
-0003609457 00000 n 
-0003609522 00000 n 
-0003614214 00000 n 
-0003614343 00000 n 
-0003614472 00000 n 
-0003613606 00000 n 
-0003609797 00000 n 
-0003614085 00000 n 
-0003622359 00000 n 
-0003618535 00000 n 
-0003614603 00000 n 
-0003618662 00000 n 
-0003618791 00000 n 
-0003618856 00000 n 
-0003618921 00000 n 
-0003618986 00000 n 
-0003619051 00000 n 
-0003619116 00000 n 
-0003619181 00000 n 
-0003619246 00000 n 
-0003619311 00000 n 
-0003619375 00000 n 
-0003619440 00000 n 
-0003619505 00000 n 
-0003619570 00000 n 
-0003619635 00000 n 
-0003619700 00000 n 
-0003619765 00000 n 
-0003619830 00000 n 
-0003619895 00000 n 
-0003619959 00000 n 
-0003620024 00000 n 
-0003620089 00000 n 
-0003620154 00000 n 
-0003620219 00000 n 
-0003620284 00000 n 
-0003620349 00000 n 
-0003620414 00000 n 
-0003620479 00000 n 
-0003620543 00000 n 
-0003620608 00000 n 
-0003620673 00000 n 
-0003620738 00000 n 
-0003620803 00000 n 
-0003620868 00000 n 
-0003620933 00000 n 
-0003620998 00000 n 
-0003621063 00000 n 
-0003621127 00000 n 
-0003621192 00000 n 
-0003621257 00000 n 
-0003621322 00000 n 
-0003621387 00000 n 
-0003621452 00000 n 
-0003621517 00000 n 
-0003621582 00000 n 
-0003621647 00000 n 
-0003621712 00000 n 
-0003621777 00000 n 
-0003621842 00000 n 
-0003621907 00000 n 
-0003621972 00000 n 
-0003622037 00000 n 
-0003622102 00000 n 
-0003622167 00000 n 
-0003622232 00000 n 
-0003622297 00000 n 
-0003626381 00000 n 
-0003628611 00000 n 
-0003626232 00000 n 
-0003622476 00000 n 
-0003626537 00000 n 
-0003626602 00000 n 
-0003626667 00000 n 
-0003626732 00000 n 
-0003626797 00000 n 
-0003626862 00000 n 
-0003626927 00000 n 
-0003626991 00000 n 
-0003627056 00000 n 
-0003627121 00000 n 
-0003627186 00000 n 
-0003627251 00000 n 
-0003627316 00000 n 
-0003627381 00000 n 
-0003627446 00000 n 
-0003627511 00000 n 
-0003627575 00000 n 
-0003627640 00000 n 
-0003627705 00000 n 
-0003627770 00000 n 
-0003627835 00000 n 
-0003627900 00000 n 
-0003627965 00000 n 
-0003628030 00000 n 
-0003628287 00000 n 
-0003628352 00000 n 
-0003628417 00000 n 
-0003628481 00000 n 
-0003628546 00000 n 
-0005140220 00000 n 
-0003632525 00000 n 
-0003631105 00000 n 
-0003628755 00000 n 
-0003631232 00000 n 
-0003631553 00000 n 
-0003631618 00000 n 
-0003631683 00000 n 
-0003631748 00000 n 
-0003631812 00000 n 
-0003631877 00000 n 
-0003631942 00000 n 
-0003632007 00000 n 
-0003632072 00000 n 
-0003632137 00000 n 
-0003632202 00000 n 
-0003632267 00000 n 
-0003632332 00000 n 
-0003632396 00000 n 
-0003632461 00000 n 
-0003634644 00000 n 
-0003633868 00000 n 
-0003632656 00000 n 
-0003633995 00000 n 
-0003634060 00000 n 
-0003634125 00000 n 
-0003634190 00000 n 
-0003634255 00000 n 
-0003634320 00000 n 
-0003634385 00000 n 
-0003634449 00000 n 
-0003634514 00000 n 
-0003634579 00000 n 
-0003637501 00000 n 
-0003637674 00000 n 
-0003638230 00000 n 
-0003637342 00000 n 
-0003634747 00000 n 
-0003637847 00000 n 
-0003641864 00000 n 
-0003642298 00000 n 
-0003641715 00000 n 
-0003638375 00000 n 
-0003642041 00000 n 
-0003646633 00000 n 
-0003646441 00000 n 
-0003642472 00000 n 
-0003646568 00000 n 
-0003650765 00000 n 
-0003650921 00000 n 
-0003651132 00000 n 
-0003651330 00000 n 
-0003652960 00000 n 
-0003650586 00000 n 
-0003646764 00000 n 
-0003651488 00000 n 
-0003651553 00000 n 
-0003651618 00000 n 
-0003651683 00000 n 
-0003651748 00000 n 
-0003651813 00000 n 
-0003651878 00000 n 
-0003651942 00000 n 
-0003652007 00000 n 
-0003652072 00000 n 
-0003652201 00000 n 
-0003652266 00000 n 
-0003652329 00000 n 
-0003652392 00000 n 
-0003652455 00000 n 
-0003652518 00000 n 
-0003652580 00000 n 
-0003652643 00000 n 
-0003652708 00000 n 
-0003652771 00000 n 
-0003652834 00000 n 
-0005140353 00000 n 
-0003655174 00000 n 
-0003655367 00000 n 
-0003654918 00000 n 
-0003653132 00000 n 
-0003655045 00000 n 
-0003658371 00000 n 
-0003658573 00000 n 
-0003659139 00000 n 
-0003658212 00000 n 
-0003655512 00000 n 
-0003658754 00000 n 
-0003661412 00000 n 
-0003661584 00000 n 
-0003662019 00000 n 
-0003661253 00000 n 
-0003659256 00000 n 
-0003661762 00000 n 
-0003664821 00000 n 
-0003664309 00000 n 
-0003662136 00000 n 
-0003664436 00000 n 
-0003667873 00000 n 
-0003667489 00000 n 
-0003664924 00000 n 
-0003667616 00000 n 
-0003671116 00000 n 
-0003670604 00000 n 
-0003668004 00000 n 
-0003670731 00000 n 
-0005140486 00000 n 
-0003673909 00000 n 
-0003674160 00000 n 
-0003674654 00000 n 
-0003673750 00000 n 
-0003671247 00000 n 
-0003674333 00000 n 
-0003679091 00000 n 
-0003678254 00000 n 
-0003674771 00000 n 
-0003678381 00000 n 
-0003678572 00000 n 
-0003678637 00000 n 
-0003678702 00000 n 
-0003678767 00000 n 
-0003678832 00000 n 
-0003678896 00000 n 
-0003678961 00000 n 
-0003679026 00000 n 
-0003682847 00000 n 
-0003682401 00000 n 
-0003679249 00000 n 
-0003682528 00000 n 
-0003686636 00000 n 
-0003686916 00000 n 
-0003686487 00000 n 
-0003682978 00000 n 
-0003686787 00000 n 
-0003693997 00000 n 
-0003691833 00000 n 
-0003694970 00000 n 
-0003691684 00000 n 
-0003687061 00000 n 
-0003691986 00000 n 
-0003692051 00000 n 
-0003692116 00000 n 
-0003692181 00000 n 
-0003692246 00000 n 
-0003692311 00000 n 
-0003692376 00000 n 
-0003692441 00000 n 
-0003692506 00000 n 
-0003692571 00000 n 
-0003692634 00000 n 
-0003692699 00000 n 
-0003692764 00000 n 
-0003692829 00000 n 
-0003692894 00000 n 
-0003692959 00000 n 
-0003693024 00000 n 
-0003693089 00000 n 
-0003693154 00000 n 
-0003693218 00000 n 
-0003693283 00000 n 
-0003693348 00000 n 
-0003693413 00000 n 
-0003693478 00000 n 
-0003693543 00000 n 
-0003693608 00000 n 
-0003693673 00000 n 
-0003693738 00000 n 
-0003693802 00000 n 
-0003693867 00000 n 
-0003693932 00000 n 
-0003694062 00000 n 
-0003694127 00000 n 
-0003694191 00000 n 
-0003694256 00000 n 
-0003694321 00000 n 
-0003694386 00000 n 
-0003694451 00000 n 
-0003694516 00000 n 
-0003694581 00000 n 
-0003694646 00000 n 
-0003694711 00000 n 
-0003694775 00000 n 
-0003694840 00000 n 
-0003694905 00000 n 
-0003699137 00000 n 
-0003699291 00000 n 
-0003699445 00000 n 
-0003701480 00000 n 
-0003698968 00000 n 
-0003695114 00000 n 
-0003699600 00000 n 
-0003699729 00000 n 
-0003699794 00000 n 
-0003699859 00000 n 
-0003699924 00000 n 
-0003699989 00000 n 
-0003700054 00000 n 
-0003700119 00000 n 
-0003700184 00000 n 
-0003700249 00000 n 
-0003700313 00000 n 
-0003700378 00000 n 
-0003700443 00000 n 
-0003700508 00000 n 
-0003700573 00000 n 
-0003700638 00000 n 
-0003700703 00000 n 
-0003700768 00000 n 
-0003700833 00000 n 
-0003700897 00000 n 
-0003700962 00000 n 
-0003701027 00000 n 
-0003701092 00000 n 
-0003701157 00000 n 
-0003701222 00000 n 
-0003701287 00000 n 
-0003701352 00000 n 
-0003701416 00000 n 
-0005140619 00000 n 
-0003706576 00000 n 
-0003707290 00000 n 
-0003707355 00000 n 
-0003704697 00000 n 
-0003701638 00000 n 
-0003704824 00000 n 
-0003704889 00000 n 
-0003704954 00000 n 
-0003705019 00000 n 
-0003705084 00000 n 
-0003705149 00000 n 
-0003705214 00000 n 
-0003705279 00000 n 
-0003705344 00000 n 
-0003705409 00000 n 
-0003705472 00000 n 
-0003705537 00000 n 
-0003705602 00000 n 
-0003705667 00000 n 
-0003705732 00000 n 
-0003705797 00000 n 
-0003705862 00000 n 
-0003705927 00000 n 
-0003705992 00000 n 
-0003706056 00000 n 
-0003706121 00000 n 
-0003706186 00000 n 
-0003706251 00000 n 
-0003706316 00000 n 
-0003706381 00000 n 
-0003706446 00000 n 
-0003706511 00000 n 
-0003706641 00000 n 
-0003706706 00000 n 
-0003706771 00000 n 
-0003706836 00000 n 
-0003706901 00000 n 
-0003706966 00000 n 
-0003707030 00000 n 
-0003707095 00000 n 
-0003707160 00000 n 
-0003707225 00000 n 
-0003708240 00000 n 
-0003707984 00000 n 
-0003707471 00000 n 
-0003708111 00000 n 
-0003711286 00000 n 
-0003712016 00000 n 
-0003711137 00000 n 
-0003708343 00000 n 
-0003711440 00000 n 
-0003711505 00000 n 
-0003714709 00000 n 
-0003716115 00000 n 
-0003714560 00000 n 
-0003712161 00000 n 
-0003714886 00000 n 
-0003715143 00000 n 
-0003715206 00000 n 
-0003715271 00000 n 
-0003715336 00000 n 
-0003715401 00000 n 
-0003715466 00000 n 
-0003715531 00000 n 
-0003715596 00000 n 
-0003715661 00000 n 
-0003715726 00000 n 
-0003715791 00000 n 
-0003715856 00000 n 
-0003715921 00000 n 
-0003715986 00000 n 
-0003717491 00000 n 
-0003717235 00000 n 
-0003716246 00000 n 
-0003717362 00000 n 
-0003718870 00000 n 
-0003718614 00000 n 
-0003717594 00000 n 
-0003718741 00000 n 
-0005140752 00000 n 
-0003720092 00000 n 
-0003719900 00000 n 
-0003718973 00000 n 
-0003720027 00000 n 
-0003721322 00000 n 
-0003721130 00000 n 
-0003720181 00000 n 
-0003721257 00000 n 
-0003722751 00000 n 
-0003722495 00000 n 
-0003721411 00000 n 
-0003722622 00000 n 
-0003726154 00000 n 
-0003726305 00000 n 
-0003726457 00000 n 
-0003726616 00000 n 
-0003727347 00000 n 
-0003725975 00000 n 
-0003722854 00000 n 
-0003726767 00000 n 
-0003727024 00000 n 
-0003727089 00000 n 
-0003727218 00000 n 
-0003727283 00000 n 
-0003729899 00000 n 
-0003729963 00000 n 
-0003729644 00000 n 
-0003727492 00000 n 
-0003729771 00000 n 
-0003733871 00000 n 
-0003733032 00000 n 
-0003730066 00000 n 
-0003733159 00000 n 
-0003733352 00000 n 
-0003733417 00000 n 
-0003733482 00000 n 
-0003733547 00000 n 
-0003733612 00000 n 
-0003733677 00000 n 
-0003733742 00000 n 
-0005140885 00000 n 
-0003736238 00000 n 
-0003735593 00000 n 
-0003734002 00000 n 
-0003735720 00000 n 
-0003735849 00000 n 
-0003735914 00000 n 
-0003735979 00000 n 
-0003736043 00000 n 
-0003736108 00000 n 
-0003736173 00000 n 
-0003739000 00000 n 
-0003738554 00000 n 
-0003736382 00000 n 
-0003738681 00000 n 
-0003741853 00000 n 
-0003741597 00000 n 
-0003739117 00000 n 
-0003741724 00000 n 
-0003746003 00000 n 
-0003745491 00000 n 
-0003741956 00000 n 
-0003745618 00000 n 
-0003749024 00000 n 
-0003750706 00000 n 
-0003748875 00000 n 
-0003746162 00000 n 
-0003749177 00000 n 
-0003749242 00000 n 
-0003749307 00000 n 
-0003749372 00000 n 
-0003749437 00000 n 
-0003749502 00000 n 
-0003749567 00000 n 
-0003749631 00000 n 
-0003749694 00000 n 
-0003749757 00000 n 
-0003749820 00000 n 
-0003749883 00000 n 
-0003749946 00000 n 
-0003750009 00000 n 
-0003750072 00000 n 
-0003750135 00000 n 
-0003750198 00000 n 
-0003750261 00000 n 
-0003750322 00000 n 
-0003750385 00000 n 
-0003750577 00000 n 
-0003754165 00000 n 
-0003754580 00000 n 
-0003754016 00000 n 
-0003750865 00000 n 
-0003754322 00000 n 
-0003754451 00000 n 
-0005141018 00000 n 
-0003756491 00000 n 
-0003756299 00000 n 
-0003754739 00000 n 
-0003756426 00000 n 
-0003759529 00000 n 
-0003760062 00000 n 
-0003759380 00000 n 
-0003756608 00000 n 
-0003759679 00000 n 
-0003770949 00000 n 
-0003765309 00000 n 
-0003763501 00000 n 
-0003760193 00000 n 
-0003763628 00000 n 
-0003763757 00000 n 
-0003763822 00000 n 
-0003763887 00000 n 
-0003763952 00000 n 
-0003764017 00000 n 
-0003764081 00000 n 
-0003764146 00000 n 
-0003764211 00000 n 
-0003764276 00000 n 
-0003764341 00000 n 
-0003764406 00000 n 
-0003764471 00000 n 
-0003764536 00000 n 
-0003764601 00000 n 
-0003764729 00000 n 
-0003764793 00000 n 
-0003764856 00000 n 
-0003764921 00000 n 
-0003764985 00000 n 
-0003765050 00000 n 
-0003765114 00000 n 
-0003765179 00000 n 
-0003765244 00000 n 
-0003771468 00000 n 
-0003768291 00000 n 
-0003765440 00000 n 
-0003768418 00000 n 
-0003768483 00000 n 
-0003768548 00000 n 
-0003768613 00000 n 
-0003768678 00000 n 
-0003768743 00000 n 
-0003768808 00000 n 
-0003768873 00000 n 
-0003768938 00000 n 
-0003769003 00000 n 
-0003769068 00000 n 
-0003769133 00000 n 
-0003769198 00000 n 
-0003769263 00000 n 
-0003769328 00000 n 
-0003769393 00000 n 
-0003769458 00000 n 
-0003769521 00000 n 
-0003769586 00000 n 
-0003769651 00000 n 
-0003769716 00000 n 
-0003769781 00000 n 
-0003769846 00000 n 
-0003769911 00000 n 
-0003769976 00000 n 
-0003770041 00000 n 
-0003770106 00000 n 
-0003770171 00000 n 
-0003770236 00000 n 
-0003770301 00000 n 
-0003770366 00000 n 
-0003770431 00000 n 
-0003770496 00000 n 
-0003770561 00000 n 
-0003770626 00000 n 
-0003770691 00000 n 
-0003770755 00000 n 
-0003770820 00000 n 
-0003771014 00000 n 
-0003771079 00000 n 
-0003771144 00000 n 
-0003771209 00000 n 
-0003771274 00000 n 
-0003771339 00000 n 
-0003771404 00000 n 
-0003775012 00000 n 
-0003776857 00000 n 
-0003774863 00000 n 
-0003771599 00000 n 
-0003775180 00000 n 
-0003775245 00000 n 
-0003775310 00000 n 
-0003775375 00000 n 
-0003775440 00000 n 
-0003775505 00000 n 
-0003775570 00000 n 
-0003775634 00000 n 
-0003775699 00000 n 
-0003775764 00000 n 
-0003775829 00000 n 
-0003775894 00000 n 
-0003775959 00000 n 
-0003776088 00000 n 
-0003776153 00000 n 
-0003776218 00000 n 
-0003776283 00000 n 
-0003776346 00000 n 
-0003776409 00000 n 
-0003776472 00000 n 
-0003776537 00000 n 
-0003776602 00000 n 
-0003776667 00000 n 
-0003776730 00000 n 
-0003780570 00000 n 
-0003781194 00000 n 
-0003780421 00000 n 
-0003777016 00000 n 
-0003780744 00000 n 
-0003780809 00000 n 
-0003780873 00000 n 
-0003780938 00000 n 
-0005141151 00000 n 
-0003784538 00000 n 
-0003784026 00000 n 
-0003781382 00000 n 
-0003784153 00000 n 
-0003785857 00000 n 
-0003785601 00000 n 
-0003784655 00000 n 
-0003785728 00000 n 
-0003786743 00000 n 
-0003786487 00000 n 
-0003785974 00000 n 
-0003786614 00000 n 
-0003789672 00000 n 
-0003790666 00000 n 
-0003789523 00000 n 
-0003786846 00000 n 
-0003789825 00000 n 
-0003789890 00000 n 
-0003790211 00000 n 
-0003790276 00000 n 
-0003790341 00000 n 
-0003790406 00000 n 
-0003790471 00000 n 
-0003790536 00000 n 
-0003790601 00000 n 
-0003796143 00000 n 
-0003794624 00000 n 
-0003790824 00000 n 
-0003794751 00000 n 
-0003794880 00000 n 
-0003794945 00000 n 
-0003795010 00000 n 
-0003795075 00000 n 
-0003795138 00000 n 
-0003795201 00000 n 
-0003795264 00000 n 
-0003795327 00000 n 
-0003795390 00000 n 
-0003795452 00000 n 
-0003795515 00000 n 
-0003795578 00000 n 
-0003795641 00000 n 
-0003795704 00000 n 
-0003795767 00000 n 
-0003795830 00000 n 
-0003795893 00000 n 
-0003795956 00000 n 
-0003796018 00000 n 
-0003796081 00000 n 
-0003800605 00000 n 
-0003800756 00000 n 
-0003800906 00000 n 
-0003802412 00000 n 
-0003800436 00000 n 
-0003796288 00000 n 
-0003801057 00000 n 
-0003801122 00000 n 
-0003801185 00000 n 
-0003801248 00000 n 
-0003801311 00000 n 
-0003801374 00000 n 
-0003801438 00000 n 
-0003801503 00000 n 
-0003801568 00000 n 
-0003801633 00000 n 
-0003801698 00000 n 
-0003801762 00000 n 
-0003801827 00000 n 
-0003801892 00000 n 
-0003801957 00000 n 
-0003802022 00000 n 
-0003802087 00000 n 
-0003802152 00000 n 
-0003802217 00000 n 
-0003802282 00000 n 
-0003802347 00000 n 
-0005141284 00000 n 
-0003807324 00000 n 
-0003806353 00000 n 
-0003802570 00000 n 
-0003806480 00000 n 
-0003806545 00000 n 
-0003806610 00000 n 
-0003806675 00000 n 
-0003806740 00000 n 
-0003806805 00000 n 
-0003806870 00000 n 
-0003806935 00000 n 
-0003807000 00000 n 
-0003807065 00000 n 
-0003807130 00000 n 
-0003807195 00000 n 
-0003807260 00000 n 
-0003811076 00000 n 
-0003810560 00000 n 
-0003807469 00000 n 
-0003810687 00000 n 
-0003810752 00000 n 
-0003810817 00000 n 
-0003810882 00000 n 
-0003810946 00000 n 
-0003811011 00000 n 
-0003814272 00000 n 
-0003814443 00000 n 
-0003816459 00000 n 
-0003815257 00000 n 
-0003814113 00000 n 
-0003811236 00000 n 
-0003814613 00000 n 
-0003814934 00000 n 
-0003814999 00000 n 
-0003815064 00000 n 
-0003873266 00000 n 
-0003835097 00000 n 
-0003873742 00000 n 
-0003816310 00000 n 
-0003815416 00000 n 
-0003873419 00000 n 
-0003873548 00000 n 
-0003873677 00000 n 
-0003876574 00000 n 
-0003876766 00000 n 
-0003880405 00000 n 
-0003880570 00000 n 
-0003877278 00000 n 
-0003876415 00000 n 
-0003873914 00000 n 
-0003876957 00000 n 
-0003880745 00000 n 
-0003881110 00000 n 
-0003880236 00000 n 
-0003877395 00000 n 
-0003880917 00000 n 
-0005141417 00000 n 
-0003884425 00000 n 
-0003884602 00000 n 
-0003884774 00000 n 
-0003885630 00000 n 
-0003884256 00000 n 
-0003881255 00000 n 
-0003884927 00000 n 
-0003885375 00000 n 
-0003885440 00000 n 
-0003885505 00000 n 
-0003885570 00000 n 
-0003890331 00000 n 
-0003891195 00000 n 
-0003890182 00000 n 
-0003885774 00000 n 
-0003890484 00000 n 
-0003890613 00000 n 
-0003890677 00000 n 
-0003890742 00000 n 
-0003890807 00000 n 
-0003890936 00000 n 
-0003891065 00000 n 
-0003891130 00000 n 
-0003894028 00000 n 
-0003893448 00000 n 
-0003891367 00000 n 
-0003893575 00000 n 
-0003893704 00000 n 
-0003893769 00000 n 
-0003893834 00000 n 
-0003893899 00000 n 
-0003896909 00000 n 
-0003896268 00000 n 
-0003894173 00000 n 
-0003896395 00000 n 
-0003896714 00000 n 
-0003896779 00000 n 
-0003896844 00000 n 
-0003899279 00000 n 
-0003898958 00000 n 
-0003897040 00000 n 
-0003899085 00000 n 
-0003899214 00000 n 
-0003900142 00000 n 
-0003899886 00000 n 
-0003899382 00000 n 
-0003900013 00000 n 
-0005141550 00000 n 
-0003902546 00000 n 
-0003902713 00000 n 
-0003902901 00000 n 
-0003903075 00000 n 
-0003903896 00000 n 
-0003902367 00000 n 
-0003900245 00000 n 
-0003903254 00000 n 
-0003903319 00000 n 
-0003903832 00000 n 
-0003907219 00000 n 
-0003907405 00000 n 
-0003907593 00000 n 
-0003909123 00000 n 
-0003907050 00000 n 
-0003904013 00000 n 
-0003907766 00000 n 
-0003907831 00000 n 
-0003907896 00000 n 
-0003907961 00000 n 
-0003908024 00000 n 
-0003908089 00000 n 
-0003908152 00000 n 
-0003908217 00000 n 
-0003908282 00000 n 
-0003908473 00000 n 
-0003908538 00000 n 
-0003908603 00000 n 
-0003908668 00000 n 
-0003908733 00000 n 
-0003908798 00000 n 
-0003908863 00000 n 
-0003908928 00000 n 
-0003908993 00000 n 
-0003909058 00000 n 
-0003913799 00000 n 
-0003912184 00000 n 
-0003909268 00000 n 
-0003912311 00000 n 
-0003912440 00000 n 
-0003912505 00000 n 
-0003912569 00000 n 
-0003912634 00000 n 
-0003912699 00000 n 
-0003912763 00000 n 
-0003912828 00000 n 
-0003912893 00000 n 
-0003912958 00000 n 
-0003913023 00000 n 
-0003913088 00000 n 
-0003913153 00000 n 
-0003913218 00000 n 
-0003913283 00000 n 
-0003913348 00000 n 
-0003913411 00000 n 
-0003913476 00000 n 
-0003913604 00000 n 
-0003913669 00000 n 
-0003913734 00000 n 
-0003917249 00000 n 
-0003916420 00000 n 
-0003913944 00000 n 
-0003916547 00000 n 
-0003916995 00000 n 
-0003917060 00000 n 
-0003917125 00000 n 
-0003917189 00000 n 
-0003921228 00000 n 
-0003920258 00000 n 
-0003917366 00000 n 
-0003920385 00000 n 
-0003920450 00000 n 
-0003920515 00000 n 
-0003920580 00000 n 
-0003920645 00000 n 
-0003920710 00000 n 
-0003920839 00000 n 
-0003920904 00000 n 
-0003920969 00000 n 
-0003921034 00000 n 
-0003921099 00000 n 
-0003924810 00000 n 
-0003923319 00000 n 
-0003921402 00000 n 
-0003923446 00000 n 
-0003923511 00000 n 
-0003923576 00000 n 
-0003923641 00000 n 
-0003923706 00000 n 
-0003923771 00000 n 
-0003923836 00000 n 
-0003923901 00000 n 
-0003923966 00000 n 
-0003924031 00000 n 
-0003924096 00000 n 
-0003924161 00000 n 
-0003924290 00000 n 
-0003924355 00000 n 
-0003924420 00000 n 
-0003924485 00000 n 
-0003924550 00000 n 
-0003924615 00000 n 
-0003924680 00000 n 
-0003924745 00000 n 
-0005141683 00000 n 
-0003927638 00000 n 
-0003928191 00000 n 
-0003927489 00000 n 
-0003924941 00000 n 
-0003927806 00000 n 
-0003933567 00000 n 
-0003931040 00000 n 
-0003928308 00000 n 
-0003931167 00000 n 
-0003931232 00000 n 
-0003931297 00000 n 
-0003931362 00000 n 
-0003931427 00000 n 
-0003931492 00000 n 
-0003931557 00000 n 
-0003931622 00000 n 
-0003931687 00000 n 
-0003931752 00000 n 
-0003931815 00000 n 
-0003931880 00000 n 
-0003931945 00000 n 
-0003932010 00000 n 
-0003932075 00000 n 
-0003932140 00000 n 
-0003932205 00000 n 
-0003932270 00000 n 
-0003932335 00000 n 
-0003932400 00000 n 
-0003932465 00000 n 
-0003932530 00000 n 
-0003932595 00000 n 
-0003932660 00000 n 
-0003932725 00000 n 
-0003932790 00000 n 
-0003932854 00000 n 
-0003932919 00000 n 
-0003932984 00000 n 
-0003933049 00000 n 
-0003933114 00000 n 
-0003933179 00000 n 
-0003933244 00000 n 
-0003933308 00000 n 
-0003933437 00000 n 
-0003933502 00000 n 
-0003935895 00000 n 
-0003936566 00000 n 
-0003935746 00000 n 
-0003933684 00000 n 
-0003936180 00000 n 
-0003939360 00000 n 
-0003939532 00000 n 
-0003939723 00000 n 
-0003939909 00000 n 
-0003940102 00000 n 
-0003940674 00000 n 
-0003939171 00000 n 
-0003936683 00000 n 
-0003940289 00000 n 
-0003944494 00000 n 
-0003944892 00000 n 
-0003945082 00000 n 
-0003945977 00000 n 
-0003944315 00000 n 
-0003940805 00000 n 
-0003945270 00000 n 
-0003944694 00000 n 
-0003945399 00000 n 
-0003945464 00000 n 
-0003945529 00000 n 
-0003945594 00000 n 
-0003949352 00000 n 
-0003952510 00000 n 
-0003950020 00000 n 
-0003949203 00000 n 
-0003946122 00000 n 
-0003949506 00000 n 
-0003949763 00000 n 
-0005141816 00000 n 
-0003952668 00000 n 
-0003953791 00000 n 
-0003952341 00000 n 
-0003950179 00000 n 
-0003953078 00000 n 
-0003953143 00000 n 
-0003953207 00000 n 
-0003953272 00000 n 
-0003953337 00000 n 
-0003953402 00000 n 
-0003953467 00000 n 
-0003953532 00000 n 
-0003953597 00000 n 
-0003953662 00000 n 
-0003952873 00000 n 
-0003956856 00000 n 
-0003956411 00000 n 
-0003953935 00000 n 
-0003956538 00000 n 
-0003963832 00000 n 
-0003960442 00000 n 
-0003959869 00000 n 
-0003957001 00000 n 
-0003959996 00000 n 
-0003964309 00000 n 
-0003963683 00000 n 
-0003960587 00000 n 
-0003963989 00000 n 
-0003967130 00000 n 
-0003967307 00000 n 
-0003967655 00000 n 
-0003967826 00000 n 
-0003967999 00000 n 
-0003967484 00000 n 
-0003968170 00000 n 
-0003968931 00000 n 
-0003966921 00000 n 
-0003964454 00000 n 
-0003968352 00000 n 
-0003968609 00000 n 
-0003968738 00000 n 
-0003968866 00000 n 
-0003974916 00000 n 
-0003972127 00000 n 
-0003969062 00000 n 
-0003972254 00000 n 
-0003972319 00000 n 
-0003972384 00000 n 
-0003972449 00000 n 
-0003972514 00000 n 
-0003972579 00000 n 
-0003972644 00000 n 
-0003972709 00000 n 
-0003972774 00000 n 
-0003972839 00000 n 
-0003972904 00000 n 
-0003972969 00000 n 
-0003973034 00000 n 
-0003973099 00000 n 
-0003973164 00000 n 
-0003973229 00000 n 
-0003973294 00000 n 
-0003973359 00000 n 
-0003973424 00000 n 
-0003973489 00000 n 
-0003973554 00000 n 
-0003973619 00000 n 
-0003973684 00000 n 
-0003973749 00000 n 
-0003973814 00000 n 
-0003973879 00000 n 
-0003973943 00000 n 
-0003974008 00000 n 
-0003974073 00000 n 
-0003974138 00000 n 
-0003974203 00000 n 
-0003974268 00000 n 
-0003974333 00000 n 
-0003974398 00000 n 
-0003974463 00000 n 
-0003974527 00000 n 
-0003974592 00000 n 
-0003974657 00000 n 
-0003974722 00000 n 
-0003974851 00000 n 
-0005141949 00000 n 
-0003982177 00000 n 
-0003978352 00000 n 
-0003975075 00000 n 
-0003978479 00000 n 
-0003978544 00000 n 
-0003978609 00000 n 
-0003978674 00000 n 
-0003978739 00000 n 
-0003978804 00000 n 
-0003978869 00000 n 
-0003978934 00000 n 
-0003978999 00000 n 
-0003979063 00000 n 
-0003979128 00000 n 
-0003979193 00000 n 
-0003979258 00000 n 
-0003979323 00000 n 
-0003979388 00000 n 
-0003979453 00000 n 
-0003979518 00000 n 
-0003979583 00000 n 
-0003979647 00000 n 
-0003979712 00000 n 
-0003979777 00000 n 
-0003979842 00000 n 
-0003979907 00000 n 
-0003979972 00000 n 
-0003980037 00000 n 
-0003980102 00000 n 
-0003980167 00000 n 
-0003980231 00000 n 
-0003980296 00000 n 
-0003980361 00000 n 
-0003980426 00000 n 
-0003980491 00000 n 
-0003980556 00000 n 
-0003980621 00000 n 
-0003980686 00000 n 
-0003980751 00000 n 
-0003980816 00000 n 
-0003980880 00000 n 
-0003980945 00000 n 
-0003981010 00000 n 
-0003981075 00000 n 
-0003981140 00000 n 
-0003981205 00000 n 
-0003981270 00000 n 
-0003981335 00000 n 
-0003981400 00000 n 
-0003981464 00000 n 
-0003981529 00000 n 
-0003981594 00000 n 
-0003981659 00000 n 
-0003981724 00000 n 
-0003981789 00000 n 
-0003981854 00000 n 
-0003981919 00000 n 
-0003981984 00000 n 
-0003982048 00000 n 
-0003982113 00000 n 
-0003985276 00000 n 
-0003988476 00000 n 
-0003985127 00000 n 
-0003982294 00000 n 
-0003985433 00000 n 
-0003985498 00000 n 
-0003985563 00000 n 
-0003985628 00000 n 
-0003985693 00000 n 
-0003985758 00000 n 
-0003985823 00000 n 
-0003985887 00000 n 
-0003985952 00000 n 
-0003986017 00000 n 
-0003986082 00000 n 
-0003986147 00000 n 
-0003986212 00000 n 
-0003986277 00000 n 
-0003986342 00000 n 
-0003986407 00000 n 
-0003986471 00000 n 
-0003986600 00000 n 
-0003986665 00000 n 
-0003986730 00000 n 
-0003986795 00000 n 
-0003986860 00000 n 
-0003986925 00000 n 
-0003986990 00000 n 
-0003987055 00000 n 
-0003987119 00000 n 
-0003987184 00000 n 
-0003987249 00000 n 
-0003987314 00000 n 
-0003987379 00000 n 
-0003987444 00000 n 
-0003987509 00000 n 
-0003987574 00000 n 
-0003987639 00000 n 
-0003987703 00000 n 
-0003987768 00000 n 
-0003987833 00000 n 
-0003987961 00000 n 
-0003988026 00000 n 
-0003988091 00000 n 
-0003988156 00000 n 
-0003988221 00000 n 
-0003988286 00000 n 
-0003988351 00000 n 
-0003988416 00000 n 
-0003991589 00000 n 
-0003991746 00000 n 
-0003991907 00000 n 
-0003994795 00000 n 
-0003991420 00000 n 
-0003988593 00000 n 
-0003992069 00000 n 
-0003992134 00000 n 
-0003992199 00000 n 
-0003992264 00000 n 
-0003992329 00000 n 
-0003992394 00000 n 
-0003992459 00000 n 
-0003992524 00000 n 
-0003992589 00000 n 
-0003992654 00000 n 
-0003992719 00000 n 
-0003992784 00000 n 
-0003992849 00000 n 
-0003992914 00000 n 
-0003992979 00000 n 
-0003993043 00000 n 
-0003993108 00000 n 
-0003993173 00000 n 
-0003993238 00000 n 
-0003993303 00000 n 
-0003993368 00000 n 
-0003993433 00000 n 
-0003993498 00000 n 
-0003993563 00000 n 
-0003993627 00000 n 
-0003993692 00000 n 
-0003993757 00000 n 
-0003993822 00000 n 
-0003993887 00000 n 
-0003993952 00000 n 
-0003994017 00000 n 
-0003994082 00000 n 
-0003994147 00000 n 
-0003994211 00000 n 
-0003994276 00000 n 
-0003994341 00000 n 
-0003994406 00000 n 
-0003994471 00000 n 
-0003994536 00000 n 
-0003994601 00000 n 
-0003994730 00000 n 
-0003998206 00000 n 
-0003998388 00000 n 
-0003998573 00000 n 
-0003998941 00000 n 
-0003998037 00000 n 
-0003994940 00000 n 
-0003998749 00000 n 
-0004001199 00000 n 
-0004001517 00000 n 
-0004001050 00000 n 
-0003999058 00000 n 
-0004001388 00000 n 
-0004004461 00000 n 
-0004004628 00000 n 
-0004004822 00000 n 
-0004005516 00000 n 
-0004004292 00000 n 
-0004001620 00000 n 
-0004005001 00000 n 
-0004005257 00000 n 
-0004005322 00000 n 
-0004005387 00000 n 
-0005142082 00000 n 
-0004011370 00000 n 
-0004008778 00000 n 
-0004005619 00000 n 
-0004008905 00000 n 
-0004009034 00000 n 
-0004009099 00000 n 
-0004009164 00000 n 
-0004009229 00000 n 
-0004009294 00000 n 
-0004009359 00000 n 
-0004009424 00000 n 
-0004009489 00000 n 
-0004009554 00000 n 
-0004009618 00000 n 
-0004009683 00000 n 
-0004009748 00000 n 
-0004009813 00000 n 
-0004009878 00000 n 
-0004009943 00000 n 
-0004010008 00000 n 
-0004010073 00000 n 
-0004010138 00000 n 
-0004010202 00000 n 
-0004010267 00000 n 
-0004010332 00000 n 
-0004010397 00000 n 
-0004010462 00000 n 
-0004010527 00000 n 
-0004010592 00000 n 
-0004010657 00000 n 
-0004010722 00000 n 
-0004010786 00000 n 
-0004010851 00000 n 
-0004010916 00000 n 
-0004010981 00000 n 
-0004011046 00000 n 
-0004011111 00000 n 
-0004011176 00000 n 
-0004011241 00000 n 
-0004011306 00000 n 
-0004017902 00000 n 
-0004013947 00000 n 
-0004011487 00000 n 
-0004014074 00000 n 
-0004014139 00000 n 
-0004014204 00000 n 
-0004014269 00000 n 
-0004014334 00000 n 
-0004014399 00000 n 
-0004014464 00000 n 
-0004014528 00000 n 
-0004014593 00000 n 
-0004014658 00000 n 
-0004014723 00000 n 
-0004014788 00000 n 
-0004014853 00000 n 
-0004014918 00000 n 
-0004014983 00000 n 
-0004015048 00000 n 
-0004015112 00000 n 
-0004015177 00000 n 
-0004015242 00000 n 
-0004015307 00000 n 
-0004015372 00000 n 
-0004015437 00000 n 
-0004015502 00000 n 
-0004015567 00000 n 
-0004015632 00000 n 
-0004015696 00000 n 
-0004015761 00000 n 
-0004015826 00000 n 
-0004015891 00000 n 
-0004015956 00000 n 
-0004016021 00000 n 
-0004016086 00000 n 
-0004016151 00000 n 
-0004016216 00000 n 
-0004016280 00000 n 
-0004016345 00000 n 
-0004016410 00000 n 
-0004016475 00000 n 
-0004016540 00000 n 
-0004016605 00000 n 
-0004016670 00000 n 
-0004016734 00000 n 
-0004016799 00000 n 
-0004016864 00000 n 
-0004016929 00000 n 
-0004016994 00000 n 
-0004017059 00000 n 
-0004017124 00000 n 
-0004017189 00000 n 
-0004017254 00000 n 
-0004017319 00000 n 
-0004017384 00000 n 
-0004017449 00000 n 
-0004017514 00000 n 
-0004017579 00000 n 
-0004017644 00000 n 
-0004017709 00000 n 
-0004017773 00000 n 
-0004017838 00000 n 
-0004024206 00000 n 
-0004020774 00000 n 
-0004018005 00000 n 
-0004020901 00000 n 
-0004020966 00000 n 
-0004021031 00000 n 
-0004021096 00000 n 
-0004021161 00000 n 
-0004021226 00000 n 
-0004021291 00000 n 
-0004021356 00000 n 
-0004021421 00000 n 
-0004021486 00000 n 
-0004021551 00000 n 
-0004021615 00000 n 
-0004021680 00000 n 
-0004021745 00000 n 
-0004021810 00000 n 
-0004021875 00000 n 
-0004021940 00000 n 
-0004022005 00000 n 
-0004022070 00000 n 
-0004022135 00000 n 
-0004022199 00000 n 
-0004022264 00000 n 
-0004022329 00000 n 
-0004022392 00000 n 
-0004022457 00000 n 
-0004022522 00000 n 
-0004022587 00000 n 
-0004022652 00000 n 
-0004022717 00000 n 
-0004022782 00000 n 
-0004022847 00000 n 
-0004022912 00000 n 
-0004022977 00000 n 
-0004023041 00000 n 
-0004023233 00000 n 
-0004023298 00000 n 
-0004023363 00000 n 
-0004023428 00000 n 
-0004023493 00000 n 
-0004023558 00000 n 
-0004023623 00000 n 
-0004023688 00000 n 
-0004023753 00000 n 
-0004023818 00000 n 
-0004023882 00000 n 
-0004023947 00000 n 
-0004024012 00000 n 
-0004024077 00000 n 
-0004024142 00000 n 
-0004025930 00000 n 
-0004025349 00000 n 
-0004024323 00000 n 
-0004025476 00000 n 
-0004025541 00000 n 
-0004025606 00000 n 
-0004025671 00000 n 
-0004025736 00000 n 
-0004025801 00000 n 
-0004025866 00000 n 
-0004028978 00000 n 
-0004029271 00000 n 
-0004028829 00000 n 
-0004026033 00000 n 
-0004029142 00000 n 
-0004033114 00000 n 
-0004032922 00000 n 
-0004029374 00000 n 
-0004033049 00000 n 
-0005142215 00000 n 
-0004036708 00000 n 
-0004036386 00000 n 
-0004033217 00000 n 
-0004036513 00000 n 
-0004036578 00000 n 
-0004036643 00000 n 
-0004041430 00000 n 
-0004040783 00000 n 
-0004036811 00000 n 
-0004040910 00000 n 
-0004040975 00000 n 
-0004041040 00000 n 
-0004041105 00000 n 
-0004041170 00000 n 
-0004041235 00000 n 
-0004041300 00000 n 
-0004041365 00000 n 
-0004045833 00000 n 
-0004045251 00000 n 
-0004041533 00000 n 
-0004045378 00000 n 
-0004045443 00000 n 
-0004045508 00000 n 
-0004045573 00000 n 
-0004045638 00000 n 
-0004045703 00000 n 
-0004045768 00000 n 
-0004049466 00000 n 
-0004049274 00000 n 
-0004045936 00000 n 
-0004049401 00000 n 
-0004053702 00000 n 
-0004053510 00000 n 
-0004049569 00000 n 
-0004053637 00000 n 
-0004057849 00000 n 
-0004057204 00000 n 
-0004053805 00000 n 
-0004057331 00000 n 
-0004057396 00000 n 
-0004057461 00000 n 
-0004057526 00000 n 
-0004057591 00000 n 
-0004057656 00000 n 
-0004057720 00000 n 
-0004057785 00000 n 
-0005142348 00000 n 
-0004060553 00000 n 
-0004060903 00000 n 
-0004062269 00000 n 
-0004060374 00000 n 
-0004057966 00000 n 
-0004061296 00000 n 
-0004061361 00000 n 
-0004061426 00000 n 
-0004061491 00000 n 
-0004061556 00000 n 
-0004061621 00000 n 
-0004061686 00000 n 
-0004061750 00000 n 
-0004061815 00000 n 
-0004061880 00000 n 
-0004061945 00000 n 
-0004062010 00000 n 
-0004062075 00000 n 
-0004062139 00000 n 
-0004062204 00000 n 
-0004060731 00000 n 
-0004061100 00000 n 
-0004065283 00000 n 
-0004065441 00000 n 
-0004065613 00000 n 
-0004065761 00000 n 
-0004066038 00000 n 
-0004065104 00000 n 
-0004062372 00000 n 
-0004065909 00000 n 
-0004069780 00000 n 
-0004069927 00000 n 
-0004070151 00000 n 
-0004069621 00000 n 
-0004066169 00000 n 
-0004070086 00000 n 
-0004071387 00000 n 
-0004071195 00000 n 
-0004070268 00000 n 
-0004071322 00000 n 
-0004074758 00000 n 
-0004074911 00000 n 
-0004075064 00000 n 
-0004075215 00000 n 
-0004075366 00000 n 
-0004075517 00000 n 
-0004075669 00000 n 
-0004075820 00000 n 
-0004075972 00000 n 
-0004076123 00000 n 
-0004076276 00000 n 
-0004076427 00000 n 
-0004076579 00000 n 
-0004076731 00000 n 
-0004076883 00000 n 
-0004077036 00000 n 
-0004077189 00000 n 
-0004077342 00000 n 
-0004077494 00000 n 
-0004077647 00000 n 
-0004077800 00000 n 
-0004077953 00000 n 
-0004078103 00000 n 
-0004078255 00000 n 
-0004078407 00000 n 
-0004078560 00000 n 
-0004078713 00000 n 
-0004078866 00000 n 
-0004079019 00000 n 
-0004079172 00000 n 
-0004079325 00000 n 
-0004079478 00000 n 
-0004079631 00000 n 
-0004079783 00000 n 
-0004079933 00000 n 
-0004080083 00000 n 
-0004080234 00000 n 
-0004080386 00000 n 
-0004080538 00000 n 
-0004080691 00000 n 
-0004080843 00000 n 
-0004080995 00000 n 
-0004081147 00000 n 
-0004081300 00000 n 
-0004081450 00000 n 
-0004081603 00000 n 
-0004081755 00000 n 
-0004081907 00000 n 
-0004082060 00000 n 
-0004082213 00000 n 
-0004082365 00000 n 
-0004082517 00000 n 
-0004082670 00000 n 
-0004082821 00000 n 
-0004082973 00000 n 
-0004083126 00000 n 
-0004083279 00000 n 
-0004083432 00000 n 
-0004083585 00000 n 
-0004083738 00000 n 
-0004083891 00000 n 
-0004084044 00000 n 
-0004084196 00000 n 
-0004084348 00000 n 
-0004084501 00000 n 
-0004084654 00000 n 
-0004084807 00000 n 
-0004084959 00000 n 
-0004085112 00000 n 
-0004085265 00000 n 
-0004085418 00000 n 
-0004085571 00000 n 
-0004085723 00000 n 
-0004085876 00000 n 
-0004086029 00000 n 
-0004086181 00000 n 
-0004086334 00000 n 
-0004086486 00000 n 
-0004086637 00000 n 
-0004086789 00000 n 
-0004086940 00000 n 
-0004087092 00000 n 
-0004087244 00000 n 
-0004087396 00000 n 
-0004087548 00000 n 
-0004087701 00000 n 
-0004087854 00000 n 
-0004088007 00000 n 
-0004088159 00000 n 
-0004088312 00000 n 
-0004088465 00000 n 
-0004088617 00000 n 
-0004088770 00000 n 
-0004088921 00000 n 
-0004089072 00000 n 
-0004089222 00000 n 
-0004089373 00000 n 
-0004089525 00000 n 
-0004089678 00000 n 
-0004089831 00000 n 
-0004089984 00000 n 
-0004090135 00000 n 
-0004090286 00000 n 
-0004090439 00000 n 
-0004090592 00000 n 
-0004090743 00000 n 
-0004090896 00000 n 
-0004091048 00000 n 
-0004091200 00000 n 
-0004091353 00000 n 
-0004091504 00000 n 
-0004091655 00000 n 
-0004091808 00000 n 
-0004091961 00000 n 
-0004092113 00000 n 
-0004092266 00000 n 
-0004092419 00000 n 
-0004092572 00000 n 
-0004092725 00000 n 
-0004092877 00000 n 
-0004093029 00000 n 
-0004093182 00000 n 
-0004093335 00000 n 
-0004093486 00000 n 
-0004093639 00000 n 
-0004093791 00000 n 
-0004093944 00000 n 
-0004094097 00000 n 
-0004094250 00000 n 
-0004094403 00000 n 
-0004094556 00000 n 
-0004094708 00000 n 
-0004094861 00000 n 
-0004095014 00000 n 
-0004095167 00000 n 
-0004095320 00000 n 
-0004095473 00000 n 
-0004095626 00000 n 
-0004095778 00000 n 
-0004095931 00000 n 
-0004096084 00000 n 
-0004096237 00000 n 
-0004096390 00000 n 
-0004096542 00000 n 
-0004096695 00000 n 
-0004096848 00000 n 
-0004097001 00000 n 
-0004097153 00000 n 
-0004097304 00000 n 
-0004101635 00000 n 
-0004097582 00000 n 
-0004073129 00000 n 
-0004071504 00000 n 
-0004097454 00000 n 
-0004101786 00000 n 
-0004101937 00000 n 
-0004102088 00000 n 
-0004102240 00000 n 
-0004102392 00000 n 
-0004102544 00000 n 
-0004102697 00000 n 
-0004102849 00000 n 
-0004103002 00000 n 
-0004103153 00000 n 
-0004103306 00000 n 
-0004103458 00000 n 
-0004103610 00000 n 
-0004103760 00000 n 
-0004103913 00000 n 
-0004104064 00000 n 
-0004104216 00000 n 
-0004104366 00000 n 
-0004104518 00000 n 
-0004104670 00000 n 
-0004104822 00000 n 
-0004104974 00000 n 
-0004105125 00000 n 
-0004105278 00000 n 
-0004105430 00000 n 
-0004105582 00000 n 
-0004105735 00000 n 
-0004105886 00000 n 
-0004106038 00000 n 
-0004106191 00000 n 
-0004106344 00000 n 
-0004106497 00000 n 
-0004106650 00000 n 
-0004106803 00000 n 
-0004106952 00000 n 
-0004107105 00000 n 
-0004107257 00000 n 
-0004107410 00000 n 
-0004107563 00000 n 
-0004107712 00000 n 
-0004107864 00000 n 
-0004108016 00000 n 
-0004108169 00000 n 
-0004108321 00000 n 
-0004108473 00000 n 
-0004108625 00000 n 
-0004108777 00000 n 
-0004108928 00000 n 
-0004109080 00000 n 
-0004109231 00000 n 
-0004109384 00000 n 
-0004109537 00000 n 
-0004109690 00000 n 
-0004109842 00000 n 
-0004109994 00000 n 
-0004110146 00000 n 
-0004110298 00000 n 
-0004110450 00000 n 
-0004110602 00000 n 
-0004110755 00000 n 
-0004110908 00000 n 
-0004111061 00000 n 
-0004111212 00000 n 
-0004111364 00000 n 
-0004111516 00000 n 
-0004111669 00000 n 
-0004111822 00000 n 
-0004111975 00000 n 
-0004112127 00000 n 
-0004112279 00000 n 
-0004112431 00000 n 
-0004112581 00000 n 
-0004112734 00000 n 
-0004112887 00000 n 
-0004113040 00000 n 
-0004113193 00000 n 
-0004113346 00000 n 
-0004113499 00000 n 
-0004113652 00000 n 
-0004113804 00000 n 
-0004113956 00000 n 
-0004114107 00000 n 
-0004114259 00000 n 
-0004114411 00000 n 
-0004114563 00000 n 
-0004114715 00000 n 
-0004114867 00000 n 
-0004115019 00000 n 
-0004115172 00000 n 
-0004115325 00000 n 
-0004115477 00000 n 
-0004115630 00000 n 
-0004115781 00000 n 
-0004115934 00000 n 
-0004116087 00000 n 
-0004116240 00000 n 
-0004116393 00000 n 
-0004116545 00000 n 
-0004116696 00000 n 
-0004116847 00000 n 
-0004116997 00000 n 
-0004117149 00000 n 
-0004117300 00000 n 
-0004117452 00000 n 
-0004117604 00000 n 
-0004117756 00000 n 
-0004117907 00000 n 
-0004118059 00000 n 
-0004118211 00000 n 
-0004118364 00000 n 
-0004118517 00000 n 
-0004118670 00000 n 
-0004118822 00000 n 
-0004118975 00000 n 
-0004119128 00000 n 
-0004119281 00000 n 
-0004119434 00000 n 
-0004119587 00000 n 
-0004119739 00000 n 
-0004119891 00000 n 
-0004120043 00000 n 
-0004120195 00000 n 
-0004120347 00000 n 
-0004120500 00000 n 
-0004120653 00000 n 
-0004120805 00000 n 
-0004120958 00000 n 
-0004121110 00000 n 
-0004121262 00000 n 
-0004121414 00000 n 
-0004121567 00000 n 
-0004121720 00000 n 
-0004121873 00000 n 
-0004122026 00000 n 
-0004122179 00000 n 
-0004122332 00000 n 
-0004122484 00000 n 
-0004122637 00000 n 
-0004122790 00000 n 
-0004122943 00000 n 
-0004123096 00000 n 
-0004123249 00000 n 
-0004123401 00000 n 
-0004123554 00000 n 
-0004123704 00000 n 
-0004123857 00000 n 
-0004124010 00000 n 
-0004124162 00000 n 
-0004124315 00000 n 
-0004124468 00000 n 
-0004124620 00000 n 
-0004124772 00000 n 
-0004124925 00000 n 
-0004125077 00000 n 
-0004125229 00000 n 
-0004125381 00000 n 
-0004125534 00000 n 
-0004125687 00000 n 
-0004125840 00000 n 
-0004125993 00000 n 
-0004126144 00000 n 
-0004126295 00000 n 
-0004126447 00000 n 
-0004126598 00000 n 
-0004126750 00000 n 
-0004126901 00000 n 
-0004127052 00000 n 
-0004127203 00000 n 
-0004131499 00000 n 
-0004127419 00000 n 
-0004099806 00000 n 
-0004097699 00000 n 
-0004127354 00000 n 
-0005142481 00000 n 
-0004131651 00000 n 
-0004131804 00000 n 
-0004131956 00000 n 
-0004132109 00000 n 
-0004132258 00000 n 
-0004132411 00000 n 
-0004132561 00000 n 
-0004132712 00000 n 
-0004132864 00000 n 
-0004133016 00000 n 
-0004133168 00000 n 
-0004133320 00000 n 
-0004133471 00000 n 
-0004133623 00000 n 
-0004133774 00000 n 
-0004133926 00000 n 
-0004134078 00000 n 
-0004134228 00000 n 
-0004134381 00000 n 
-0004134533 00000 n 
-0004134686 00000 n 
-0004134839 00000 n 
-0004134992 00000 n 
-0004135144 00000 n 
-0004135297 00000 n 
-0004135448 00000 n 
-0004135600 00000 n 
-0004135752 00000 n 
-0004135903 00000 n 
-0004136055 00000 n 
-0004136207 00000 n 
-0004136359 00000 n 
-0004136511 00000 n 
-0004136663 00000 n 
-0004136815 00000 n 
-0004136967 00000 n 
-0004137120 00000 n 
-0004137273 00000 n 
-0004137425 00000 n 
-0004137578 00000 n 
-0004137730 00000 n 
-0004137883 00000 n 
-0004138036 00000 n 
-0004138189 00000 n 
-0004138339 00000 n 
-0004138492 00000 n 
-0004138645 00000 n 
-0004138797 00000 n 
-0004138949 00000 n 
-0004139102 00000 n 
-0004139253 00000 n 
-0004139406 00000 n 
-0004139559 00000 n 
-0004139712 00000 n 
-0004139864 00000 n 
-0004140017 00000 n 
-0004140168 00000 n 
-0004140319 00000 n 
-0004140471 00000 n 
-0004140624 00000 n 
-0004140777 00000 n 
-0004140930 00000 n 
-0004141081 00000 n 
-0004141234 00000 n 
-0004141386 00000 n 
-0004141538 00000 n 
-0004141690 00000 n 
-0004141843 00000 n 
-0004141995 00000 n 
-0004142147 00000 n 
-0004142298 00000 n 
-0004142451 00000 n 
-0004142603 00000 n 
-0004142756 00000 n 
-0004142908 00000 n 
-0004143061 00000 n 
-0004143211 00000 n 
-0004143364 00000 n 
-0004143515 00000 n 
-0004143668 00000 n 
-0004143820 00000 n 
-0004143972 00000 n 
-0004144124 00000 n 
-0004144276 00000 n 
-0004144428 00000 n 
-0004144580 00000 n 
-0004144733 00000 n 
-0004144885 00000 n 
-0004145038 00000 n 
-0004145190 00000 n 
-0004145343 00000 n 
-0004145495 00000 n 
-0004145648 00000 n 
-0004145799 00000 n 
-0004145951 00000 n 
-0004146104 00000 n 
-0004146257 00000 n 
-0004146408 00000 n 
-0004146561 00000 n 
-0004146714 00000 n 
-0004146867 00000 n 
-0004147018 00000 n 
-0004147169 00000 n 
-0004147321 00000 n 
-0004147474 00000 n 
-0004147627 00000 n 
-0004147780 00000 n 
-0004147933 00000 n 
-0004148085 00000 n 
-0004148237 00000 n 
-0004148389 00000 n 
-0004148541 00000 n 
-0004148694 00000 n 
-0004148845 00000 n 
-0004148996 00000 n 
-0004149148 00000 n 
-0004149299 00000 n 
-0004149451 00000 n 
-0004149603 00000 n 
-0004149755 00000 n 
-0004149906 00000 n 
-0004150058 00000 n 
-0004150210 00000 n 
-0004150362 00000 n 
-0004150515 00000 n 
-0004150668 00000 n 
-0004150821 00000 n 
-0004150974 00000 n 
-0004151125 00000 n 
-0004151278 00000 n 
-0004151430 00000 n 
-0004151581 00000 n 
-0004151733 00000 n 
-0004151886 00000 n 
-0004152039 00000 n 
-0004152191 00000 n 
-0004152344 00000 n 
-0004152496 00000 n 
-0004152649 00000 n 
-0004152802 00000 n 
-0004152954 00000 n 
-0004153105 00000 n 
-0004153255 00000 n 
-0004153408 00000 n 
-0004153558 00000 n 
-0004153711 00000 n 
-0004153863 00000 n 
-0004154015 00000 n 
-0004154163 00000 n 
-0004154316 00000 n 
-0004154469 00000 n 
-0004154621 00000 n 
-0004154774 00000 n 
-0004154926 00000 n 
-0004155078 00000 n 
-0004155230 00000 n 
-0004155381 00000 n 
-0004155534 00000 n 
-0004155685 00000 n 
-0004155838 00000 n 
-0004155991 00000 n 
-0004156143 00000 n 
-0004156295 00000 n 
-0004156447 00000 n 
-0004156599 00000 n 
-0004156752 00000 n 
-0004156905 00000 n 
-0004157058 00000 n 
-0004157210 00000 n 
-0004157361 00000 n 
-0004157513 00000 n 
-0004161764 00000 n 
-0004157728 00000 n 
-0004129640 00000 n 
-0004127536 00000 n 
-0004157663 00000 n 
-0004161916 00000 n 
-0004162067 00000 n 
-0004162219 00000 n 
-0004162371 00000 n 
-0004162523 00000 n 
-0004162676 00000 n 
-0004162827 00000 n 
-0004162980 00000 n 
-0004163131 00000 n 
-0004163284 00000 n 
-0004163437 00000 n 
-0004163590 00000 n 
-0004163741 00000 n 
-0004163894 00000 n 
-0004164046 00000 n 
-0004164199 00000 n 
-0004164350 00000 n 
-0004164502 00000 n 
-0004164655 00000 n 
-0004164808 00000 n 
-0004164959 00000 n 
-0004165112 00000 n 
-0004165262 00000 n 
-0004165413 00000 n 
-0004165564 00000 n 
-0004165716 00000 n 
-0004165868 00000 n 
-0004166020 00000 n 
-0004166172 00000 n 
-0004166325 00000 n 
-0004166477 00000 n 
-0004166630 00000 n 
-0004166782 00000 n 
-0004166935 00000 n 
-0004167087 00000 n 
-0004167240 00000 n 
-0004167393 00000 n 
-0004167545 00000 n 
-0004167698 00000 n 
-0004167850 00000 n 
-0004168002 00000 n 
-0004168155 00000 n 
-0004168308 00000 n 
-0004168458 00000 n 
-0004168611 00000 n 
-0004168763 00000 n 
-0004168916 00000 n 
-0004169068 00000 n 
-0004169221 00000 n 
-0004169374 00000 n 
-0004169525 00000 n 
-0004169678 00000 n 
-0004169831 00000 n 
-0004169984 00000 n 
-0004170137 00000 n 
-0004170287 00000 n 
-0004170437 00000 n 
-0004170590 00000 n 
-0004170742 00000 n 
-0004170894 00000 n 
-0004171044 00000 n 
-0004171196 00000 n 
-0004171349 00000 n 
-0004171502 00000 n 
-0004171653 00000 n 
-0004171805 00000 n 
-0004171956 00000 n 
-0004172109 00000 n 
-0004172260 00000 n 
-0004172413 00000 n 
-0004172565 00000 n 
-0004172717 00000 n 
-0004172868 00000 n 
-0004173020 00000 n 
-0004173173 00000 n 
-0004173326 00000 n 
-0004173477 00000 n 
-0004173629 00000 n 
-0004173781 00000 n 
-0004173934 00000 n 
-0004174087 00000 n 
-0004174240 00000 n 
-0004174391 00000 n 
-0004174543 00000 n 
-0004174694 00000 n 
-0004174846 00000 n 
-0004174998 00000 n 
-0004175151 00000 n 
-0004175303 00000 n 
-0004175455 00000 n 
-0004175605 00000 n 
-0004175756 00000 n 
-0004175908 00000 n 
-0004176059 00000 n 
-0004176211 00000 n 
-0004176364 00000 n 
-0004176517 00000 n 
-0004176669 00000 n 
-0004176820 00000 n 
-0004176972 00000 n 
-0004177124 00000 n 
-0004177277 00000 n 
-0004177429 00000 n 
-0004177581 00000 n 
-0004177732 00000 n 
-0004177885 00000 n 
-0004178037 00000 n 
-0004178190 00000 n 
-0004178341 00000 n 
-0004178492 00000 n 
-0004178643 00000 n 
-0004178795 00000 n 
-0004178947 00000 n 
-0004179099 00000 n 
-0004179252 00000 n 
-0004179404 00000 n 
-0004179557 00000 n 
-0004179710 00000 n 
-0004179862 00000 n 
-0004180014 00000 n 
-0004180167 00000 n 
-0004180320 00000 n 
-0004180472 00000 n 
-0004180625 00000 n 
-0004180778 00000 n 
-0004180930 00000 n 
-0004181080 00000 n 
-0004181231 00000 n 
-0004181383 00000 n 
-0004181534 00000 n 
-0004181687 00000 n 
-0004181839 00000 n 
-0004181991 00000 n 
-0004182143 00000 n 
-0004182296 00000 n 
-0004182449 00000 n 
-0004182601 00000 n 
-0004182754 00000 n 
-0004182906 00000 n 
-0004183059 00000 n 
-0004183212 00000 n 
-0004183365 00000 n 
-0004183518 00000 n 
-0004183671 00000 n 
-0004183824 00000 n 
-0004183977 00000 n 
-0004184130 00000 n 
-0004184283 00000 n 
-0004184436 00000 n 
-0004184589 00000 n 
-0004184742 00000 n 
-0004184893 00000 n 
-0004185046 00000 n 
-0004185198 00000 n 
-0004185350 00000 n 
-0004185503 00000 n 
-0004185655 00000 n 
-0004185807 00000 n 
-0004185959 00000 n 
-0004186112 00000 n 
-0004186264 00000 n 
-0004190015 00000 n 
-0004186479 00000 n 
-0004160005 00000 n 
-0004157845 00000 n 
-0004186414 00000 n 
-0004190168 00000 n 
-0004190321 00000 n 
-0004190473 00000 n 
-0004190626 00000 n 
-0004190779 00000 n 
-0004190932 00000 n 
-0004191084 00000 n 
-0004191236 00000 n 
-0004191389 00000 n 
-0004191541 00000 n 
-0004191692 00000 n 
-0004191844 00000 n 
-0004191995 00000 n 
-0004192146 00000 n 
-0004192299 00000 n 
-0004192450 00000 n 
-0004192602 00000 n 
-0004192752 00000 n 
-0004192904 00000 n 
-0004193054 00000 n 
-0004193206 00000 n 
-0004193359 00000 n 
-0004193508 00000 n 
-0004193658 00000 n 
-0004193811 00000 n 
-0004193964 00000 n 
-0004194117 00000 n 
-0004194268 00000 n 
-0004194421 00000 n 
-0004194574 00000 n 
-0004194725 00000 n 
-0004194878 00000 n 
-0004195031 00000 n 
-0004195184 00000 n 
-0004195335 00000 n 
-0004195488 00000 n 
-0004195637 00000 n 
-0004195789 00000 n 
-0004195941 00000 n 
-0004196094 00000 n 
-0004196246 00000 n 
-0004196399 00000 n 
-0004196550 00000 n 
-0004196702 00000 n 
-0004196855 00000 n 
-0004197008 00000 n 
-0004197161 00000 n 
-0004197313 00000 n 
-0004197465 00000 n 
-0004197614 00000 n 
-0004197765 00000 n 
-0004197916 00000 n 
-0004198065 00000 n 
-0004198215 00000 n 
-0004198368 00000 n 
-0004198521 00000 n 
-0004198671 00000 n 
-0004198823 00000 n 
-0004198974 00000 n 
-0004199125 00000 n 
-0004199278 00000 n 
-0004199431 00000 n 
-0004199583 00000 n 
-0004199735 00000 n 
-0004199888 00000 n 
-0004200040 00000 n 
-0004200192 00000 n 
-0004200345 00000 n 
-0004200498 00000 n 
-0004200648 00000 n 
-0004200800 00000 n 
-0004200952 00000 n 
-0004201105 00000 n 
-0004201258 00000 n 
-0004201411 00000 n 
-0004201561 00000 n 
-0004201714 00000 n 
-0004201866 00000 n 
-0004202019 00000 n 
-0004202169 00000 n 
-0004202322 00000 n 
-0004202474 00000 n 
-0004202626 00000 n 
-0004202778 00000 n 
-0004202928 00000 n 
-0004203080 00000 n 
-0004203232 00000 n 
-0004203384 00000 n 
-0004203536 00000 n 
-0004203689 00000 n 
-0004203840 00000 n 
-0004203992 00000 n 
-0004204145 00000 n 
-0004204298 00000 n 
-0004204451 00000 n 
-0004204603 00000 n 
-0004204755 00000 n 
-0004204908 00000 n 
-0004205061 00000 n 
-0004205212 00000 n 
-0004205365 00000 n 
-0004205518 00000 n 
-0004205669 00000 n 
-0004205822 00000 n 
-0004205974 00000 n 
-0004206126 00000 n 
-0004206277 00000 n 
-0004206430 00000 n 
-0004206582 00000 n 
-0004206735 00000 n 
-0004206888 00000 n 
-0004207040 00000 n 
-0004207193 00000 n 
-0004207344 00000 n 
-0004207495 00000 n 
-0004207648 00000 n 
-0004207801 00000 n 
-0004207952 00000 n 
-0004208104 00000 n 
-0004208256 00000 n 
-0004208408 00000 n 
-0004208560 00000 n 
-0004208712 00000 n 
-0004208864 00000 n 
-0004209017 00000 n 
-0004209170 00000 n 
-0004209321 00000 n 
-0004213287 00000 n 
-0004209537 00000 n 
-0004188596 00000 n 
-0004186596 00000 n 
-0004209472 00000 n 
-0004213439 00000 n 
-0004213592 00000 n 
-0004213742 00000 n 
-0004213895 00000 n 
-0004214047 00000 n 
-0004214199 00000 n 
-0004214352 00000 n 
-0004214503 00000 n 
-0004214654 00000 n 
-0004214806 00000 n 
-0004214957 00000 n 
-0004215109 00000 n 
-0004215259 00000 n 
-0004215411 00000 n 
-0004215564 00000 n 
-0004215717 00000 n 
-0004215867 00000 n 
-0004216019 00000 n 
-0004216172 00000 n 
-0004216324 00000 n 
-0004216476 00000 n 
-0004216628 00000 n 
-0004216780 00000 n 
-0004216932 00000 n 
-0004217085 00000 n 
-0004217237 00000 n 
-0004217389 00000 n 
-0004217541 00000 n 
-0004217692 00000 n 
-0004217842 00000 n 
-0004217995 00000 n 
-0004218147 00000 n 
-0004218299 00000 n 
-0004218452 00000 n 
-0004218605 00000 n 
-0004218754 00000 n 
-0004218906 00000 n 
-0004219058 00000 n 
-0004219211 00000 n 
-0004219363 00000 n 
-0004219516 00000 n 
-0004219669 00000 n 
-0004219822 00000 n 
-0004219975 00000 n 
-0004220125 00000 n 
-0004220277 00000 n 
-0004220430 00000 n 
-0004220583 00000 n 
-0004220736 00000 n 
-0004220889 00000 n 
-0004221041 00000 n 
-0004221194 00000 n 
-0004221347 00000 n 
-0004221499 00000 n 
-0004221651 00000 n 
-0004221804 00000 n 
-0004221955 00000 n 
-0004222107 00000 n 
-0004222259 00000 n 
-0004222411 00000 n 
-0004222562 00000 n 
-0004222714 00000 n 
-0004222865 00000 n 
-0004223017 00000 n 
-0004223170 00000 n 
-0004223322 00000 n 
-0004223475 00000 n 
-0004223628 00000 n 
-0004223780 00000 n 
-0004223932 00000 n 
-0004224084 00000 n 
-0004224235 00000 n 
-0004224387 00000 n 
-0004224538 00000 n 
-0004224690 00000 n 
-0004224841 00000 n 
-0004224994 00000 n 
-0004225146 00000 n 
-0004225299 00000 n 
-0004225451 00000 n 
-0004225600 00000 n 
-0004225753 00000 n 
-0004225906 00000 n 
-0004226059 00000 n 
-0004226211 00000 n 
-0004226362 00000 n 
-0004226515 00000 n 
-0004226666 00000 n 
-0004226817 00000 n 
-0004226969 00000 n 
-0004227119 00000 n 
-0004227271 00000 n 
-0004227423 00000 n 
-0004227576 00000 n 
-0004227728 00000 n 
-0004227880 00000 n 
-0004228033 00000 n 
-0004228186 00000 n 
-0004228338 00000 n 
-0004228491 00000 n 
-0004228642 00000 n 
-0004228793 00000 n 
-0004228945 00000 n 
-0004229094 00000 n 
-0004229246 00000 n 
-0004229399 00000 n 
-0004229551 00000 n 
-0004229703 00000 n 
-0004229856 00000 n 
-0004230009 00000 n 
-0004230161 00000 n 
-0004230312 00000 n 
-0004230464 00000 n 
-0004230617 00000 n 
-0004230769 00000 n 
-0004230922 00000 n 
-0004231074 00000 n 
-0004231227 00000 n 
-0004231379 00000 n 
-0004231532 00000 n 
-0004231685 00000 n 
-0004231837 00000 n 
-0004231990 00000 n 
-0004232142 00000 n 
-0004232293 00000 n 
-0004232446 00000 n 
-0004232598 00000 n 
-0004232751 00000 n 
-0004232903 00000 n 
-0004233056 00000 n 
-0004233209 00000 n 
-0004233362 00000 n 
-0004233513 00000 n 
-0004233666 00000 n 
-0004233819 00000 n 
-0004233972 00000 n 
-0004234124 00000 n 
-0004234276 00000 n 
-0004234429 00000 n 
-0004234580 00000 n 
-0004234733 00000 n 
-0004234885 00000 n 
-0004235037 00000 n 
-0004235190 00000 n 
-0004235343 00000 n 
-0004235496 00000 n 
-0004235648 00000 n 
-0004235801 00000 n 
-0004235954 00000 n 
-0004236107 00000 n 
-0004236258 00000 n 
-0004236411 00000 n 
-0004236563 00000 n 
-0004236714 00000 n 
-0004236864 00000 n 
-0004241111 00000 n 
-0004237080 00000 n 
-0004211588 00000 n 
-0004209640 00000 n 
-0004237015 00000 n 
-0004241262 00000 n 
-0004241415 00000 n 
-0004241568 00000 n 
-0004241721 00000 n 
-0004241874 00000 n 
-0004242027 00000 n 
-0004242180 00000 n 
-0004242333 00000 n 
-0004242485 00000 n 
-0004242637 00000 n 
-0004242789 00000 n 
-0004242942 00000 n 
-0004243094 00000 n 
-0004243246 00000 n 
-0004243398 00000 n 
-0004243550 00000 n 
-0004243703 00000 n 
-0004243856 00000 n 
-0004244007 00000 n 
-0004244158 00000 n 
-0004244309 00000 n 
-0004244461 00000 n 
-0004244613 00000 n 
-0004244765 00000 n 
-0004244918 00000 n 
-0004245071 00000 n 
-0004245224 00000 n 
-0004245375 00000 n 
-0004245528 00000 n 
-0004245681 00000 n 
-0004245832 00000 n 
-0004245984 00000 n 
-0004246135 00000 n 
-0004246287 00000 n 
-0004246440 00000 n 
-0004246589 00000 n 
-0004246740 00000 n 
-0004246890 00000 n 
-0004247041 00000 n 
-0004247192 00000 n 
-0004247343 00000 n 
-0004247495 00000 n 
-0004247647 00000 n 
-0004247799 00000 n 
-0004247951 00000 n 
-0004248103 00000 n 
-0004248255 00000 n 
-0004248407 00000 n 
-0004248560 00000 n 
-0004248711 00000 n 
-0004248863 00000 n 
-0004249016 00000 n 
-0004249168 00000 n 
-0004249320 00000 n 
-0004249470 00000 n 
-0004249622 00000 n 
-0004249772 00000 n 
-0004249924 00000 n 
-0004250076 00000 n 
-0004250228 00000 n 
-0004250381 00000 n 
-0004250533 00000 n 
-0004250686 00000 n 
-0004250839 00000 n 
-0004250992 00000 n 
-0004251145 00000 n 
-0004251298 00000 n 
-0004251451 00000 n 
-0004251603 00000 n 
-0004251754 00000 n 
-0004251904 00000 n 
-0004252057 00000 n 
-0004252210 00000 n 
-0004252363 00000 n 
-0004252516 00000 n 
-0004252668 00000 n 
-0004252821 00000 n 
-0004252974 00000 n 
-0004253126 00000 n 
-0004253278 00000 n 
-0004253430 00000 n 
-0004253582 00000 n 
-0004253735 00000 n 
-0004253887 00000 n 
-0004254040 00000 n 
-0004254192 00000 n 
-0004254344 00000 n 
-0004254495 00000 n 
-0004254648 00000 n 
-0004254800 00000 n 
-0004254952 00000 n 
-0004255104 00000 n 
-0004255257 00000 n 
-0004255410 00000 n 
-0004255561 00000 n 
-0004255713 00000 n 
-0004255865 00000 n 
-0004256017 00000 n 
-0004256169 00000 n 
-0004256321 00000 n 
-0004256473 00000 n 
-0004256625 00000 n 
-0004256778 00000 n 
-0004256930 00000 n 
-0004257083 00000 n 
-0004257236 00000 n 
-0004257388 00000 n 
-0004257541 00000 n 
-0004257691 00000 n 
-0004257841 00000 n 
-0004257993 00000 n 
-0004258145 00000 n 
-0004258297 00000 n 
-0004258450 00000 n 
-0004258601 00000 n 
-0004258752 00000 n 
-0004258902 00000 n 
-0004259053 00000 n 
-0004259204 00000 n 
-0004259355 00000 n 
-0004259505 00000 n 
-0004259656 00000 n 
-0004259807 00000 n 
-0004259958 00000 n 
-0004260108 00000 n 
-0004260259 00000 n 
-0004260411 00000 n 
-0004260563 00000 n 
-0004260714 00000 n 
-0004260867 00000 n 
-0004261019 00000 n 
-0004261172 00000 n 
-0004261325 00000 n 
-0004261477 00000 n 
-0004261630 00000 n 
-0004261782 00000 n 
-0004261934 00000 n 
-0004262087 00000 n 
-0004262239 00000 n 
-0004262391 00000 n 
-0004262542 00000 n 
-0004262695 00000 n 
-0004262847 00000 n 
-0004262999 00000 n 
-0004263150 00000 n 
-0004263301 00000 n 
-0004263454 00000 n 
-0004263605 00000 n 
-0004263757 00000 n 
-0004263910 00000 n 
-0004264063 00000 n 
-0004264215 00000 n 
-0004264368 00000 n 
-0004264520 00000 n 
-0004264673 00000 n 
-0004264826 00000 n 
-0004264977 00000 n 
-0004265128 00000 n 
-0004265280 00000 n 
-0004265432 00000 n 
-0004265583 00000 n 
-0004265735 00000 n 
-0004265887 00000 n 
-0004266038 00000 n 
-0004266190 00000 n 
-0004266343 00000 n 
-0004266492 00000 n 
-0004266641 00000 n 
-0004271255 00000 n 
-0004271406 00000 n 
-0004266856 00000 n 
-0004239282 00000 n 
-0004237183 00000 n 
-0004266791 00000 n 
-0004271555 00000 n 
-0004271707 00000 n 
-0004271859 00000 n 
-0004272011 00000 n 
-0004272163 00000 n 
-0004272314 00000 n 
-0004272467 00000 n 
-0004272619 00000 n 
-0004272772 00000 n 
-0004272923 00000 n 
-0004273073 00000 n 
-0004273225 00000 n 
-0004273376 00000 n 
-0004273528 00000 n 
-0004273681 00000 n 
-0004273832 00000 n 
-0004273985 00000 n 
-0004274136 00000 n 
-0004274288 00000 n 
-0004274440 00000 n 
-0004274592 00000 n 
-0004274745 00000 n 
-0004274898 00000 n 
-0004275048 00000 n 
-0004275200 00000 n 
-0004275353 00000 n 
-0004275504 00000 n 
-0004275656 00000 n 
-0004275808 00000 n 
-0004275959 00000 n 
-0004276111 00000 n 
-0004276263 00000 n 
-0004276416 00000 n 
-0004276569 00000 n 
-0004276722 00000 n 
-0004276874 00000 n 
-0004277027 00000 n 
-0004277180 00000 n 
-0004277332 00000 n 
-0004277485 00000 n 
-0004277637 00000 n 
-0004277789 00000 n 
-0004277940 00000 n 
-0004278092 00000 n 
-0004278245 00000 n 
-0004278398 00000 n 
-0004278551 00000 n 
-0004278704 00000 n 
-0004278857 00000 n 
-0004279010 00000 n 
-0004279163 00000 n 
-0004279316 00000 n 
-0004279469 00000 n 
-0004279622 00000 n 
-0004279775 00000 n 
-0004279928 00000 n 
-0004280079 00000 n 
-0004280232 00000 n 
-0004280384 00000 n 
-0004280537 00000 n 
-0004280689 00000 n 
-0004280842 00000 n 
-0004280995 00000 n 
-0004281147 00000 n 
-0004281298 00000 n 
-0004281450 00000 n 
-0004281601 00000 n 
-0004281753 00000 n 
-0004281906 00000 n 
-0004282058 00000 n 
-0004282209 00000 n 
-0004282362 00000 n 
-0004282514 00000 n 
-0004282665 00000 n 
-0004282817 00000 n 
-0004282969 00000 n 
-0004283121 00000 n 
-0004283272 00000 n 
-0004283424 00000 n 
-0004283577 00000 n 
-0004283729 00000 n 
-0004283881 00000 n 
-0004284031 00000 n 
-0004284181 00000 n 
-0004284332 00000 n 
-0004284483 00000 n 
-0004284634 00000 n 
-0004284785 00000 n 
-0004284937 00000 n 
-0004285089 00000 n 
-0004285241 00000 n 
-0004285393 00000 n 
-0004285545 00000 n 
-0004285698 00000 n 
-0004285849 00000 n 
-0004286001 00000 n 
-0004286153 00000 n 
-0004286306 00000 n 
-0004286459 00000 n 
-0004286612 00000 n 
-0004286764 00000 n 
-0004286917 00000 n 
-0004287070 00000 n 
-0004287222 00000 n 
-0004287375 00000 n 
-0004287527 00000 n 
-0004287679 00000 n 
-0004287832 00000 n 
-0004287984 00000 n 
-0004288135 00000 n 
-0004288287 00000 n 
-0004288438 00000 n 
-0004288591 00000 n 
-0004288742 00000 n 
-0004288891 00000 n 
-0004289043 00000 n 
-0004289195 00000 n 
-0004289346 00000 n 
-0004289498 00000 n 
-0004289650 00000 n 
-0004289802 00000 n 
-0004289955 00000 n 
-0004290108 00000 n 
-0004290261 00000 n 
-0004290414 00000 n 
-0004290565 00000 n 
-0004290718 00000 n 
-0004290869 00000 n 
-0004291022 00000 n 
-0004291174 00000 n 
-0004291327 00000 n 
-0004291479 00000 n 
-0004291632 00000 n 
-0004291784 00000 n 
-0004291937 00000 n 
-0004292090 00000 n 
-0004292242 00000 n 
-0004292395 00000 n 
-0004292548 00000 n 
-0004292700 00000 n 
-0004292850 00000 n 
-0004293003 00000 n 
-0004293156 00000 n 
-0004293308 00000 n 
-0004293460 00000 n 
-0004293612 00000 n 
-0004293765 00000 n 
-0004293916 00000 n 
-0004294067 00000 n 
-0004294219 00000 n 
-0004294371 00000 n 
-0004294523 00000 n 
-0004294674 00000 n 
-0004294826 00000 n 
-0004294979 00000 n 
-0004295131 00000 n 
-0004295284 00000 n 
-0004295437 00000 n 
-0004295590 00000 n 
-0004295742 00000 n 
-0004295894 00000 n 
-0004296047 00000 n 
-0004296200 00000 n 
-0004296352 00000 n 
-0004296505 00000 n 
-0004296657 00000 n 
-0004296810 00000 n 
-0004296962 00000 n 
-0004297115 00000 n 
-0004297267 00000 n 
-0004297420 00000 n 
-0004297573 00000 n 
-0004297725 00000 n 
-0004297878 00000 n 
-0004298030 00000 n 
-0004298182 00000 n 
-0004298335 00000 n 
-0004298486 00000 n 
-0004298637 00000 n 
-0004298789 00000 n 
-0004298939 00000 n 
-0004299089 00000 n 
-0004299242 00000 n 
-0004299395 00000 n 
-0004299548 00000 n 
-0004299701 00000 n 
-0004299853 00000 n 
-0004300005 00000 n 
-0004300157 00000 n 
-0004300308 00000 n 
-0004300459 00000 n 
-0004300609 00000 n 
-0004304607 00000 n 
-0004304755 00000 n 
-0004304907 00000 n 
-0004300822 00000 n 
-0004269176 00000 n 
-0004266959 00000 n 
-0004300757 00000 n 
-0005142614 00000 n 
-0004305059 00000 n 
-0004305212 00000 n 
-0004305365 00000 n 
-0004305516 00000 n 
-0004305668 00000 n 
-0004305819 00000 n 
-0004305970 00000 n 
-0004306121 00000 n 
-0004306273 00000 n 
-0004306424 00000 n 
-0004306576 00000 n 
-0004306727 00000 n 
-0004306877 00000 n 
-0004307029 00000 n 
-0004307182 00000 n 
-0004307333 00000 n 
-0004307484 00000 n 
-0004307637 00000 n 
-0004307790 00000 n 
-0004307942 00000 n 
-0004308095 00000 n 
-0004308246 00000 n 
-0004308399 00000 n 
-0004308551 00000 n 
-0004308703 00000 n 
-0004308855 00000 n 
-0004309006 00000 n 
-0004309157 00000 n 
-0004309307 00000 n 
-0004309457 00000 n 
-0004309609 00000 n 
-0004309761 00000 n 
-0004309912 00000 n 
-0004310065 00000 n 
-0004310218 00000 n 
-0004310371 00000 n 
-0004310523 00000 n 
-0004310676 00000 n 
-0004310829 00000 n 
-0004310981 00000 n 
-0004311134 00000 n 
-0004311287 00000 n 
-0004311440 00000 n 
-0004311593 00000 n 
-0004311745 00000 n 
-0004311898 00000 n 
-0004312051 00000 n 
-0004312204 00000 n 
-0004312356 00000 n 
-0004312508 00000 n 
-0004312659 00000 n 
-0004312811 00000 n 
-0004312964 00000 n 
-0004313116 00000 n 
-0004313269 00000 n 
-0004313421 00000 n 
-0004313574 00000 n 
-0004313725 00000 n 
-0004313877 00000 n 
-0004314028 00000 n 
-0004314180 00000 n 
-0004314332 00000 n 
-0004314485 00000 n 
-0004314638 00000 n 
-0004314791 00000 n 
-0004314939 00000 n 
-0004315092 00000 n 
-0004315243 00000 n 
-0004315393 00000 n 
-0004315546 00000 n 
-0004315698 00000 n 
-0004315851 00000 n 
-0004316004 00000 n 
-0004316155 00000 n 
-0004316305 00000 n 
-0004316458 00000 n 
-0004316610 00000 n 
-0004316763 00000 n 
-0004316916 00000 n 
-0004317069 00000 n 
-0004317222 00000 n 
-0004317375 00000 n 
-0004317527 00000 n 
-0004317680 00000 n 
-0004317832 00000 n 
-0004317985 00000 n 
-0004318137 00000 n 
-0004318289 00000 n 
-0004318442 00000 n 
-0004318595 00000 n 
-0004318747 00000 n 
-0004318900 00000 n 
-0004319052 00000 n 
-0004319205 00000 n 
-0004319358 00000 n 
-0004319510 00000 n 
-0004319662 00000 n 
-0004319814 00000 n 
-0004319967 00000 n 
-0004320118 00000 n 
-0004320270 00000 n 
-0004320422 00000 n 
-0004320574 00000 n 
-0004320727 00000 n 
-0004320878 00000 n 
-0004321030 00000 n 
-0004321183 00000 n 
-0004321335 00000 n 
-0004321488 00000 n 
-0004321641 00000 n 
-0004321794 00000 n 
-0004321946 00000 n 
-0004322098 00000 n 
-0004322251 00000 n 
-0004322404 00000 n 
-0004322557 00000 n 
-0004322710 00000 n 
-0004322862 00000 n 
-0004323015 00000 n 
-0004323167 00000 n 
-0004323320 00000 n 
-0004323473 00000 n 
-0004323626 00000 n 
-0004323778 00000 n 
-0004323931 00000 n 
-0004324084 00000 n 
-0004324235 00000 n 
-0004324387 00000 n 
-0004324540 00000 n 
-0004324693 00000 n 
-0004324846 00000 n 
-0004324996 00000 n 
-0004325148 00000 n 
-0004325297 00000 n 
-0004329609 00000 n 
-0004325511 00000 n 
-0004303098 00000 n 
-0004300939 00000 n 
-0004325446 00000 n 
-0004329760 00000 n 
-0004329913 00000 n 
-0004330064 00000 n 
-0004330216 00000 n 
-0004330368 00000 n 
-0004330521 00000 n 
-0004330674 00000 n 
-0004330827 00000 n 
-0004330980 00000 n 
-0004331133 00000 n 
-0004331286 00000 n 
-0004331438 00000 n 
-0004331590 00000 n 
-0004331742 00000 n 
-0004331894 00000 n 
-0004332046 00000 n 
-0004332199 00000 n 
-0004332350 00000 n 
-0004332502 00000 n 
-0004332655 00000 n 
-0004332806 00000 n 
-0004332958 00000 n 
-0004333111 00000 n 
-0004333264 00000 n 
-0004333416 00000 n 
-0004333568 00000 n 
-0004333718 00000 n 
-0004333869 00000 n 
-0004334022 00000 n 
-0004334174 00000 n 
-0004334326 00000 n 
-0004334479 00000 n 
-0004334632 00000 n 
-0004334785 00000 n 
-0004334936 00000 n 
-0004335089 00000 n 
-0004335241 00000 n 
-0004335393 00000 n 
-0004335545 00000 n 
-0004335697 00000 n 
-0004335850 00000 n 
-0004336003 00000 n 
-0004336154 00000 n 
-0004336307 00000 n 
-0004336459 00000 n 
-0004336609 00000 n 
-0004336762 00000 n 
-0004336915 00000 n 
-0004337066 00000 n 
-0004337217 00000 n 
-0004337369 00000 n 
-0004337521 00000 n 
-0004337674 00000 n 
-0004337827 00000 n 
-0004337978 00000 n 
-0004338130 00000 n 
-0004338283 00000 n 
-0004338435 00000 n 
-0004338587 00000 n 
-0004338738 00000 n 
-0004338890 00000 n 
-0004339041 00000 n 
-0004339193 00000 n 
-0004339346 00000 n 
-0004339497 00000 n 
-0004339649 00000 n 
-0004339802 00000 n 
-0004339955 00000 n 
-0004340108 00000 n 
-0004340261 00000 n 
-0004340410 00000 n 
-0004340562 00000 n 
-0004340713 00000 n 
-0004340864 00000 n 
-0004341015 00000 n 
-0004341167 00000 n 
-0004341319 00000 n 
-0004341468 00000 n 
-0004341618 00000 n 
-0004341768 00000 n 
-0004341920 00000 n 
-0004342073 00000 n 
-0004342226 00000 n 
-0004342378 00000 n 
-0004342531 00000 n 
-0004342684 00000 n 
-0004342837 00000 n 
-0004342990 00000 n 
-0004343142 00000 n 
-0004343294 00000 n 
-0004343445 00000 n 
-0004343596 00000 n 
-0004343748 00000 n 
-0004343900 00000 n 
-0004344052 00000 n 
-0004344205 00000 n 
-0004344358 00000 n 
-0004344511 00000 n 
-0004344664 00000 n 
-0004344817 00000 n 
-0004344970 00000 n 
-0004345120 00000 n 
-0004345272 00000 n 
-0004345423 00000 n 
-0004345575 00000 n 
-0004345728 00000 n 
-0004345880 00000 n 
-0004346032 00000 n 
-0004346184 00000 n 
-0004346336 00000 n 
-0004346489 00000 n 
-0004346641 00000 n 
-0004346793 00000 n 
-0004346945 00000 n 
-0004347098 00000 n 
-0004347251 00000 n 
-0004347403 00000 n 
-0004347556 00000 n 
-0004347708 00000 n 
-0004347861 00000 n 
-0004348013 00000 n 
-0004348166 00000 n 
-0004348319 00000 n 
-0004348472 00000 n 
-0004348625 00000 n 
-0004348778 00000 n 
-0004348930 00000 n 
-0004349083 00000 n 
-0004349236 00000 n 
-0004349388 00000 n 
-0004349541 00000 n 
-0004349694 00000 n 
-0004349846 00000 n 
-0004349999 00000 n 
-0004350151 00000 n 
-0004350303 00000 n 
-0004350456 00000 n 
-0004350609 00000 n 
-0004350761 00000 n 
-0004350912 00000 n 
-0004351064 00000 n 
-0004351216 00000 n 
-0004351368 00000 n 
-0004351521 00000 n 
-0004351674 00000 n 
-0004351827 00000 n 
-0004351980 00000 n 
-0004352132 00000 n 
-0004352284 00000 n 
-0004352436 00000 n 
-0004352589 00000 n 
-0004352740 00000 n 
-0004352892 00000 n 
-0004353044 00000 n 
-0004353197 00000 n 
-0004353347 00000 n 
-0004353499 00000 n 
-0004353652 00000 n 
-0004353804 00000 n 
-0004353956 00000 n 
-0004354108 00000 n 
-0004354261 00000 n 
-0004354414 00000 n 
-0004354566 00000 n 
-0004354719 00000 n 
-0004354870 00000 n 
-0004358987 00000 n 
-0004355086 00000 n 
-0004327800 00000 n 
-0004325628 00000 n 
-0004355021 00000 n 
-0004359140 00000 n 
-0004359292 00000 n 
-0004359445 00000 n 
-0004359598 00000 n 
-0004359751 00000 n 
-0004359903 00000 n 
-0004360056 00000 n 
-0004360209 00000 n 
-0004360362 00000 n 
-0004360513 00000 n 
-0004360665 00000 n 
-0004360818 00000 n 
-0004360970 00000 n 
-0004361123 00000 n 
-0004361275 00000 n 
-0004361427 00000 n 
-0004361578 00000 n 
-0004361728 00000 n 
-0004361878 00000 n 
-0004362029 00000 n 
-0004362180 00000 n 
-0004362332 00000 n 
-0004362484 00000 n 
-0004362636 00000 n 
-0004362788 00000 n 
-0004362940 00000 n 
-0004363091 00000 n 
-0004363243 00000 n 
-0004363396 00000 n 
-0004363549 00000 n 
-0004363702 00000 n 
-0004363853 00000 n 
-0004364006 00000 n 
-0004364159 00000 n 
-0004364310 00000 n 
-0004364462 00000 n 
-0004364614 00000 n 
-0004364765 00000 n 
-0004364916 00000 n 
-0004365069 00000 n 
-0004365222 00000 n 
-0004365374 00000 n 
-0004365526 00000 n 
-0004365674 00000 n 
-0004365827 00000 n 
-0004365979 00000 n 
-0004366130 00000 n 
-0004366282 00000 n 
-0004366435 00000 n 
-0004366587 00000 n 
-0004366739 00000 n 
-0004366892 00000 n 
-0004367045 00000 n 
-0004367198 00000 n 
-0004367351 00000 n 
-0004367504 00000 n 
-0004367657 00000 n 
-0004367810 00000 n 
-0004367962 00000 n 
-0004368115 00000 n 
-0004368266 00000 n 
-0004368419 00000 n 
-0004368572 00000 n 
-0004368724 00000 n 
-0004368877 00000 n 
-0004369030 00000 n 
-0004369181 00000 n 
-0004369334 00000 n 
-0004369487 00000 n 
-0004369638 00000 n 
-0004369791 00000 n 
-0004369941 00000 n 
-0004370093 00000 n 
-0004370245 00000 n 
-0004370397 00000 n 
-0004370547 00000 n 
-0004370697 00000 n 
-0004370847 00000 n 
-0004371000 00000 n 
-0004371153 00000 n 
-0004371305 00000 n 
-0004371458 00000 n 
-0004371611 00000 n 
-0004371764 00000 n 
-0004371917 00000 n 
-0004372069 00000 n 
-0004372222 00000 n 
-0004372374 00000 n 
-0004372526 00000 n 
-0004372678 00000 n 
-0004372830 00000 n 
-0004372982 00000 n 
-0004373135 00000 n 
-0004373288 00000 n 
-0004373441 00000 n 
-0004373594 00000 n 
-0004373746 00000 n 
-0004373899 00000 n 
-0004374052 00000 n 
-0004374203 00000 n 
-0004374353 00000 n 
-0004374504 00000 n 
-0004374656 00000 n 
-0004374808 00000 n 
-0004374960 00000 n 
-0004375113 00000 n 
-0004375265 00000 n 
-0004375418 00000 n 
-0004375570 00000 n 
-0004375722 00000 n 
-0004375875 00000 n 
-0004376027 00000 n 
-0004376180 00000 n 
-0004376333 00000 n 
-0004376486 00000 n 
-0004376638 00000 n 
-0004376791 00000 n 
-0004376943 00000 n 
-0004377095 00000 n 
-0004377248 00000 n 
-0004377400 00000 n 
-0004377553 00000 n 
-0004377706 00000 n 
-0004377859 00000 n 
-0004378012 00000 n 
-0004378165 00000 n 
-0004378318 00000 n 
-0004378471 00000 n 
-0004378623 00000 n 
-0004378776 00000 n 
-0004378928 00000 n 
-0004379081 00000 n 
-0004379234 00000 n 
-0004379387 00000 n 
-0004379540 00000 n 
-0004379693 00000 n 
-0004379846 00000 n 
-0004379999 00000 n 
-0004380152 00000 n 
-0004380305 00000 n 
-0004380458 00000 n 
-0004380611 00000 n 
-0004380764 00000 n 
-0004380917 00000 n 
-0004381070 00000 n 
-0004381223 00000 n 
-0004381376 00000 n 
-0004381529 00000 n 
-0004381682 00000 n 
-0004381834 00000 n 
-0004381987 00000 n 
-0004382139 00000 n 
-0004382292 00000 n 
-0004382444 00000 n 
-0004382596 00000 n 
-0004382749 00000 n 
-0004382902 00000 n 
-0004383053 00000 n 
-0004383206 00000 n 
-0004383359 00000 n 
-0004383512 00000 n 
-0004383663 00000 n 
-0004383815 00000 n 
-0004383966 00000 n 
-0004387958 00000 n 
-0004388110 00000 n 
-0004384181 00000 n 
-0004357198 00000 n 
-0004355203 00000 n 
-0004384116 00000 n 
-0004388262 00000 n 
-0004388415 00000 n 
-0004388568 00000 n 
-0004388719 00000 n 
-0004388869 00000 n 
-0004389022 00000 n 
-0004389175 00000 n 
-0004389327 00000 n 
-0004389478 00000 n 
-0004389631 00000 n 
-0004389782 00000 n 
-0004389935 00000 n 
-0004390087 00000 n 
-0004390239 00000 n 
-0004390392 00000 n 
-0004390544 00000 n 
-0004390696 00000 n 
-0004390848 00000 n 
-0004391001 00000 n 
-0004391154 00000 n 
-0004391306 00000 n 
-0004391459 00000 n 
-0004391611 00000 n 
-0004391764 00000 n 
-0004391917 00000 n 
-0004392070 00000 n 
-0004392223 00000 n 
-0004392376 00000 n 
-0004392527 00000 n 
-0004392679 00000 n 
-0004392832 00000 n 
-0004392983 00000 n 
-0004393136 00000 n 
-0004393289 00000 n 
-0004393442 00000 n 
-0004393595 00000 n 
-0004393748 00000 n 
-0004393901 00000 n 
-0004394053 00000 n 
-0004394206 00000 n 
-0004394359 00000 n 
-0004394512 00000 n 
-0004394663 00000 n 
-0004394815 00000 n 
-0004394968 00000 n 
-0004395120 00000 n 
-0004395272 00000 n 
-0004395424 00000 n 
-0004395577 00000 n 
-0004395730 00000 n 
-0004395883 00000 n 
-0004396036 00000 n 
-0004396188 00000 n 
-0004396340 00000 n 
-0004396491 00000 n 
-0004396643 00000 n 
-0004396794 00000 n 
-0004396947 00000 n 
-0004397098 00000 n 
-0004397249 00000 n 
-0004397402 00000 n 
-0004397552 00000 n 
-0004397702 00000 n 
-0004397854 00000 n 
-0004398006 00000 n 
-0004398159 00000 n 
-0004398312 00000 n 
-0004398463 00000 n 
-0004398613 00000 n 
-0004398764 00000 n 
-0004398915 00000 n 
-0004399067 00000 n 
-0004399219 00000 n 
-0004399370 00000 n 
-0004399521 00000 n 
-0004399670 00000 n 
-0004399821 00000 n 
-0004399972 00000 n 
-0004400125 00000 n 
-0004400275 00000 n 
-0004400426 00000 n 
-0004400578 00000 n 
-0004400731 00000 n 
-0004400884 00000 n 
-0004401037 00000 n 
-0004401190 00000 n 
-0004401343 00000 n 
-0004401496 00000 n 
-0004401649 00000 n 
-0004401802 00000 n 
-0004401955 00000 n 
-0004402107 00000 n 
-0004402259 00000 n 
-0004402411 00000 n 
-0004402563 00000 n 
-0004402715 00000 n 
-0004402867 00000 n 
-0004403019 00000 n 
-0004403171 00000 n 
-0004403324 00000 n 
-0004403476 00000 n 
-0004403629 00000 n 
-0004403782 00000 n 
-0004403935 00000 n 
-0004404088 00000 n 
-0004404240 00000 n 
-0004404393 00000 n 
-0004404541 00000 n 
-0004404689 00000 n 
-0004404841 00000 n 
-0004404994 00000 n 
-0004405147 00000 n 
-0004405300 00000 n 
-0004405451 00000 n 
-0004405603 00000 n 
-0004405755 00000 n 
-0004405908 00000 n 
-0004406061 00000 n 
-0004406214 00000 n 
-0004406367 00000 n 
-0004406519 00000 n 
-0004406669 00000 n 
-0004406819 00000 n 
-0004406969 00000 n 
-0004407121 00000 n 
-0004407273 00000 n 
-0004407425 00000 n 
-0004407577 00000 n 
-0004407729 00000 n 
-0004407881 00000 n 
-0004408033 00000 n 
-0004408184 00000 n 
-0004408336 00000 n 
-0004408488 00000 n 
-0004408641 00000 n 
-0004408793 00000 n 
-0004408946 00000 n 
-0004409098 00000 n 
-0004409250 00000 n 
-0004409402 00000 n 
-0004409555 00000 n 
-0004409708 00000 n 
-0004409860 00000 n 
-0004410013 00000 n 
-0004410165 00000 n 
-0004410316 00000 n 
-0004410467 00000 n 
-0004410620 00000 n 
-0004410770 00000 n 
-0004415256 00000 n 
-0004415409 00000 n 
-0004410986 00000 n 
-0004386309 00000 n 
-0004384284 00000 n 
-0004410921 00000 n 
-0004415562 00000 n 
-0004415714 00000 n 
-0004415867 00000 n 
-0004416019 00000 n 
-0004416169 00000 n 
-0004416318 00000 n 
-0004416468 00000 n 
-0004416619 00000 n 
-0004416770 00000 n 
-0004416921 00000 n 
-0004417072 00000 n 
-0004417224 00000 n 
-0004417376 00000 n 
-0004417527 00000 n 
-0004417679 00000 n 
-0004417830 00000 n 
-0004417982 00000 n 
-0004418134 00000 n 
-0004418287 00000 n 
-0004418440 00000 n 
-0004418593 00000 n 
-0004418745 00000 n 
-0004418898 00000 n 
-0004419051 00000 n 
-0004419204 00000 n 
-0004419357 00000 n 
-0004419510 00000 n 
-0004419661 00000 n 
-0004419813 00000 n 
-0004419965 00000 n 
-0004420116 00000 n 
-0004420269 00000 n 
-0004420419 00000 n 
-0004420571 00000 n 
-0004420723 00000 n 
-0004420875 00000 n 
-0004421026 00000 n 
-0004421177 00000 n 
-0004421328 00000 n 
-0004421479 00000 n 
-0004421631 00000 n 
-0004421784 00000 n 
-0004421937 00000 n 
-0004422089 00000 n 
-0004422241 00000 n 
-0004422394 00000 n 
-0004422547 00000 n 
-0004422700 00000 n 
-0004422851 00000 n 
-0004423004 00000 n 
-0004423156 00000 n 
-0004423309 00000 n 
-0004423462 00000 n 
-0004423614 00000 n 
-0004423767 00000 n 
-0004423919 00000 n 
-0004424071 00000 n 
-0004424224 00000 n 
-0004424376 00000 n 
-0004424529 00000 n 
-0004424682 00000 n 
-0004424834 00000 n 
-0004424986 00000 n 
-0004425137 00000 n 
-0004425288 00000 n 
-0004425440 00000 n 
-0004425592 00000 n 
-0004425743 00000 n 
-0004425895 00000 n 
-0004426048 00000 n 
-0004426201 00000 n 
-0004426354 00000 n 
-0004426506 00000 n 
-0004426659 00000 n 
-0004426810 00000 n 
-0004426962 00000 n 
-0004427113 00000 n 
-0004427265 00000 n 
-0004427418 00000 n 
-0004427571 00000 n 
-0004427724 00000 n 
-0004427877 00000 n 
-0004428030 00000 n 
-0004428183 00000 n 
-0004428336 00000 n 
-0004428487 00000 n 
-0004428639 00000 n 
-0004428792 00000 n 
-0004428943 00000 n 
-0004429094 00000 n 
-0004429244 00000 n 
-0004429395 00000 n 
-0004429547 00000 n 
-0004429699 00000 n 
-0004429850 00000 n 
-0004430002 00000 n 
-0004430155 00000 n 
-0004430308 00000 n 
-0004430461 00000 n 
-0004430613 00000 n 
-0004430764 00000 n 
-0004430917 00000 n 
-0004431070 00000 n 
-0004431221 00000 n 
-0004431371 00000 n 
-0004431523 00000 n 
-0004431676 00000 n 
-0004431829 00000 n 
-0004431981 00000 n 
-0004432133 00000 n 
-0004432286 00000 n 
-0004432438 00000 n 
-0004432591 00000 n 
-0004432743 00000 n 
-0004432894 00000 n 
-0004433046 00000 n 
-0004433199 00000 n 
-0004433349 00000 n 
-0004433502 00000 n 
-0004433655 00000 n 
-0004433808 00000 n 
-0004433961 00000 n 
-0004434114 00000 n 
-0004434267 00000 n 
-0004434420 00000 n 
-0004434572 00000 n 
-0004434725 00000 n 
-0004434878 00000 n 
-0004435031 00000 n 
-0004435183 00000 n 
-0004435336 00000 n 
-0004435489 00000 n 
-0004435641 00000 n 
-0004435793 00000 n 
-0004435945 00000 n 
-0004436098 00000 n 
-0004436250 00000 n 
-0004436402 00000 n 
-0004436554 00000 n 
-0004436706 00000 n 
-0004436859 00000 n 
-0004437011 00000 n 
-0004437164 00000 n 
-0004437315 00000 n 
-0004437468 00000 n 
-0004437619 00000 n 
-0004437770 00000 n 
-0004437922 00000 n 
-0004438075 00000 n 
-0004438228 00000 n 
-0004438381 00000 n 
-0004438533 00000 n 
-0004438686 00000 n 
-0004438839 00000 n 
-0004438990 00000 n 
-0004439142 00000 n 
-0004439294 00000 n 
-0004439446 00000 n 
-0004439597 00000 n 
-0004439748 00000 n 
-0004439899 00000 n 
-0004440051 00000 n 
-0004440202 00000 n 
-0004440355 00000 n 
-0004440508 00000 n 
-0004440660 00000 n 
-0004440813 00000 n 
-0004440966 00000 n 
-0004441119 00000 n 
-0004441271 00000 n 
-0004441422 00000 n 
-0004441574 00000 n 
-0004441726 00000 n 
-0004441878 00000 n 
-0004442030 00000 n 
-0004442182 00000 n 
-0004442335 00000 n 
-0004442486 00000 n 
-0004442637 00000 n 
-0004446833 00000 n 
-0004442853 00000 n 
-0004413307 00000 n 
-0004411103 00000 n 
-0004442788 00000 n 
-0004446986 00000 n 
-0004447139 00000 n 
-0004447291 00000 n 
-0004447444 00000 n 
-0004447596 00000 n 
-0004447748 00000 n 
-0004447901 00000 n 
-0004448052 00000 n 
-0004448203 00000 n 
-0004448356 00000 n 
-0004448508 00000 n 
-0004448659 00000 n 
-0004448811 00000 n 
-0004448962 00000 n 
-0004449114 00000 n 
-0004449266 00000 n 
-0004449418 00000 n 
-0004449571 00000 n 
-0004449722 00000 n 
-0004449875 00000 n 
-0004450026 00000 n 
-0004450178 00000 n 
-0004450330 00000 n 
-0004450483 00000 n 
-0004450636 00000 n 
-0004450787 00000 n 
-0004450939 00000 n 
-0004451091 00000 n 
-0004451244 00000 n 
-0004451395 00000 n 
-0004451547 00000 n 
-0004451700 00000 n 
-0004451851 00000 n 
-0004452004 00000 n 
-0004452157 00000 n 
-0004452309 00000 n 
-0004452462 00000 n 
-0004452614 00000 n 
-0004452767 00000 n 
-0004452918 00000 n 
-0004453071 00000 n 
-0004453224 00000 n 
-0004453377 00000 n 
-0004453529 00000 n 
-0004453680 00000 n 
-0004453833 00000 n 
-0004453985 00000 n 
-0004454135 00000 n 
-0004454288 00000 n 
-0004454439 00000 n 
-0004454589 00000 n 
-0004454740 00000 n 
-0004454892 00000 n 
-0004455045 00000 n 
-0004455192 00000 n 
-0004455344 00000 n 
-0004455496 00000 n 
-0004455648 00000 n 
-0004455799 00000 n 
-0004455951 00000 n 
-0004456103 00000 n 
-0004456256 00000 n 
-0004456409 00000 n 
-0004456561 00000 n 
-0004456714 00000 n 
-0004456865 00000 n 
-0004457016 00000 n 
-0004457167 00000 n 
-0004457319 00000 n 
-0004457466 00000 n 
-0004457617 00000 n 
-0004457769 00000 n 
-0004457922 00000 n 
-0004458075 00000 n 
-0004458227 00000 n 
-0004458380 00000 n 
-0004458532 00000 n 
-0004458684 00000 n 
-0004458837 00000 n 
-0004458990 00000 n 
-0004459143 00000 n 
-0004459293 00000 n 
-0004459444 00000 n 
-0004459597 00000 n 
-0004459750 00000 n 
-0004459903 00000 n 
-0004460055 00000 n 
-0004460208 00000 n 
-0004460359 00000 n 
-0004460510 00000 n 
-0004460663 00000 n 
-0004460816 00000 n 
-0004460969 00000 n 
-0004461120 00000 n 
-0004461273 00000 n 
-0004461426 00000 n 
-0004461579 00000 n 
-0004461732 00000 n 
-0004461884 00000 n 
-0004462036 00000 n 
-0004462189 00000 n 
-0004462342 00000 n 
-0004462494 00000 n 
-0004462645 00000 n 
-0004462798 00000 n 
-0004462950 00000 n 
-0004463103 00000 n 
-0004463256 00000 n 
-0004463409 00000 n 
-0004463562 00000 n 
-0004463715 00000 n 
-0004463868 00000 n 
-0004464021 00000 n 
-0004464173 00000 n 
-0004464325 00000 n 
-0004464477 00000 n 
-0004464629 00000 n 
-0004464780 00000 n 
-0004464932 00000 n 
-0004465084 00000 n 
-0004465235 00000 n 
-0004465387 00000 n 
-0004465539 00000 n 
-0004465691 00000 n 
-0004465842 00000 n 
-0004465994 00000 n 
-0004466147 00000 n 
-0004466300 00000 n 
-0004466451 00000 n 
-0004466603 00000 n 
-0004466756 00000 n 
-0004466909 00000 n 
-0004467062 00000 n 
-0004467213 00000 n 
-0004467365 00000 n 
-0004467517 00000 n 
-0004467670 00000 n 
-0004467823 00000 n 
-0004467976 00000 n 
-0004468128 00000 n 
-0004468279 00000 n 
-0004468431 00000 n 
-0004468581 00000 n 
-0004468732 00000 n 
-0004468884 00000 n 
-0004469036 00000 n 
-0004469188 00000 n 
-0004469339 00000 n 
-0004469491 00000 n 
-0004469643 00000 n 
-0004469795 00000 n 
-0004469947 00000 n 
-0004470099 00000 n 
-0004470248 00000 n 
-0004470399 00000 n 
-0004470551 00000 n 
-0004470702 00000 n 
-0004470853 00000 n 
-0004471003 00000 n 
-0004471154 00000 n 
-0004471305 00000 n 
-0004471455 00000 n 
-0004471607 00000 n 
-0004471759 00000 n 
-0004471911 00000 n 
-0004472063 00000 n 
-0004472216 00000 n 
-0004472369 00000 n 
-0004472520 00000 n 
-0004472673 00000 n 
-0004472825 00000 n 
-0004472977 00000 n 
-0004476865 00000 n 
-0004477015 00000 n 
-0004473191 00000 n 
-0004444964 00000 n 
-0004442956 00000 n 
-0004473126 00000 n 
-0005142747 00000 n 
-0004477167 00000 n 
-0004477317 00000 n 
-0004477468 00000 n 
-0004477621 00000 n 
-0004477774 00000 n 
-0004477927 00000 n 
-0004478079 00000 n 
-0004478230 00000 n 
-0004478383 00000 n 
-0004478535 00000 n 
-0004478688 00000 n 
-0004478840 00000 n 
-0004478993 00000 n 
-0004479146 00000 n 
-0004479298 00000 n 
-0004479450 00000 n 
-0004479602 00000 n 
-0004479754 00000 n 
-0004479906 00000 n 
-0004480059 00000 n 
-0004480211 00000 n 
-0004480363 00000 n 
-0004480516 00000 n 
-0004480669 00000 n 
-0004480822 00000 n 
-0004480975 00000 n 
-0004481127 00000 n 
-0004481278 00000 n 
-0004481430 00000 n 
-0004481582 00000 n 
-0004481734 00000 n 
-0004481886 00000 n 
-0004482036 00000 n 
-0004482188 00000 n 
-0004482341 00000 n 
-0004482494 00000 n 
-0004482647 00000 n 
-0004482799 00000 n 
-0004482952 00000 n 
-0004483104 00000 n 
-0004483256 00000 n 
-0004483409 00000 n 
-0004483562 00000 n 
-0004483715 00000 n 
-0004483866 00000 n 
-0004484015 00000 n 
-0004484166 00000 n 
-0004484318 00000 n 
-0004484471 00000 n 
-0004484623 00000 n 
-0004484776 00000 n 
-0004484929 00000 n 
-0004485081 00000 n 
-0004485234 00000 n 
-0004485386 00000 n 
-0004485539 00000 n 
-0004485692 00000 n 
-0004485844 00000 n 
-0004485996 00000 n 
-0004486149 00000 n 
-0004486300 00000 n 
-0004486453 00000 n 
-0004486606 00000 n 
-0004486756 00000 n 
-0004486909 00000 n 
-0004487062 00000 n 
-0004487214 00000 n 
-0004487365 00000 n 
-0004487518 00000 n 
-0004487671 00000 n 
-0004487822 00000 n 
-0004487974 00000 n 
-0004488125 00000 n 
-0004488277 00000 n 
-0004488430 00000 n 
-0004488582 00000 n 
-0004488734 00000 n 
-0004488886 00000 n 
-0004489037 00000 n 
-0004489189 00000 n 
-0004489342 00000 n 
-0004489494 00000 n 
-0004489647 00000 n 
-0004489799 00000 n 
-0004489952 00000 n 
-0004490104 00000 n 
-0004490257 00000 n 
-0004490409 00000 n 
-0004490561 00000 n 
-0004490713 00000 n 
-0004490866 00000 n 
-0004491019 00000 n 
-0004491172 00000 n 
-0004491325 00000 n 
-0004491477 00000 n 
-0004491630 00000 n 
-0004491783 00000 n 
-0004491936 00000 n 
-0004492086 00000 n 
-0004492236 00000 n 
-0004492388 00000 n 
-0004492539 00000 n 
-0004492692 00000 n 
-0004492844 00000 n 
-0004492997 00000 n 
-0004493150 00000 n 
-0004493301 00000 n 
-0004493454 00000 n 
-0004493607 00000 n 
-0004493759 00000 n 
-0004493911 00000 n 
-0004494062 00000 n 
-0004494215 00000 n 
-0004494367 00000 n 
-0004494519 00000 n 
-0004494672 00000 n 
-0004494824 00000 n 
-0004494976 00000 n 
-0004495129 00000 n 
-0004495282 00000 n 
-0004495434 00000 n 
-0004495587 00000 n 
-0004495740 00000 n 
-0004495893 00000 n 
-0004496046 00000 n 
-0004496199 00000 n 
-0004496352 00000 n 
-0004496504 00000 n 
-0004496657 00000 n 
-0004496809 00000 n 
-0004496962 00000 n 
-0004497113 00000 n 
-0004497266 00000 n 
-0004497419 00000 n 
-0004497572 00000 n 
-0004497725 00000 n 
-0004497875 00000 n 
-0004501822 00000 n 
-0004498090 00000 n 
-0004475336 00000 n 
-0004473308 00000 n 
-0004498025 00000 n 
-0004501973 00000 n 
-0004502125 00000 n 
-0004502276 00000 n 
-0004502427 00000 n 
-0004502579 00000 n 
-0004502732 00000 n 
-0004502885 00000 n 
-0004503035 00000 n 
-0004503187 00000 n 
-0004503338 00000 n 
-0004503491 00000 n 
-0004503642 00000 n 
-0004503795 00000 n 
-0004503948 00000 n 
-0004504099 00000 n 
-0004504252 00000 n 
-0004504403 00000 n 
-0004504556 00000 n 
-0004504708 00000 n 
-0004504861 00000 n 
-0004505013 00000 n 
-0004505166 00000 n 
-0004505319 00000 n 
-0004505472 00000 n 
-0004505624 00000 n 
-0004505776 00000 n 
-0004505928 00000 n 
-0004506081 00000 n 
-0004506233 00000 n 
-0004506385 00000 n 
-0004506538 00000 n 
-0004506690 00000 n 
-0004506843 00000 n 
-0004506996 00000 n 
-0004507148 00000 n 
-0004507301 00000 n 
-0004507453 00000 n 
-0004507605 00000 n 
-0004507757 00000 n 
-0004507909 00000 n 
-0004508061 00000 n 
-0004508213 00000 n 
-0004508366 00000 n 
-0004508519 00000 n 
-0004508671 00000 n 
-0004508824 00000 n 
-0004508976 00000 n 
-0004509128 00000 n 
-0004509281 00000 n 
-0004509432 00000 n 
-0004509584 00000 n 
-0004509737 00000 n 
-0004509890 00000 n 
-0004510042 00000 n 
-0004510195 00000 n 
-0004510347 00000 n 
-0004510499 00000 n 
-0004510651 00000 n 
-0004510803 00000 n 
-0004510956 00000 n 
-0004511107 00000 n 
-0004511257 00000 n 
-0004511410 00000 n 
-0004511562 00000 n 
-0004511714 00000 n 
-0004511866 00000 n 
-0004512018 00000 n 
-0004512168 00000 n 
-0004512320 00000 n 
-0004512473 00000 n 
-0004512625 00000 n 
-0004512776 00000 n 
-0004512928 00000 n 
-0004513080 00000 n 
-0004513232 00000 n 
-0004513385 00000 n 
-0004513536 00000 n 
-0004513688 00000 n 
-0004513841 00000 n 
-0004513993 00000 n 
-0004514146 00000 n 
-0004514299 00000 n 
-0004514451 00000 n 
-0004514604 00000 n 
-0004514755 00000 n 
-0004514907 00000 n 
-0004515059 00000 n 
-0004515211 00000 n 
-0004515364 00000 n 
-0004515517 00000 n 
-0004515669 00000 n 
-0004515821 00000 n 
-0004515974 00000 n 
-0004516127 00000 n 
-0004516280 00000 n 
-0004516433 00000 n 
-0004516586 00000 n 
-0004516739 00000 n 
-0004516892 00000 n 
-0004517045 00000 n 
-0004517198 00000 n 
-0004517350 00000 n 
-0004517503 00000 n 
-0004517654 00000 n 
-0004517806 00000 n 
-0004517958 00000 n 
-0004518110 00000 n 
-0004518262 00000 n 
-0004518414 00000 n 
-0004518567 00000 n 
-0004518720 00000 n 
-0004518873 00000 n 
-0004519026 00000 n 
-0004519177 00000 n 
-0004519330 00000 n 
-0004519483 00000 n 
-0004519636 00000 n 
-0004519789 00000 n 
-0004519942 00000 n 
-0004520095 00000 n 
-0004520247 00000 n 
-0004520398 00000 n 
-0004520549 00000 n 
-0004520701 00000 n 
-0004520854 00000 n 
-0004521006 00000 n 
-0004521159 00000 n 
-0004521312 00000 n 
-0004521465 00000 n 
-0004521617 00000 n 
-0004521770 00000 n 
-0004521923 00000 n 
-0004522076 00000 n 
-0004522228 00000 n 
-0004522381 00000 n 
-0004522533 00000 n 
-0004522686 00000 n 
-0004522838 00000 n 
-0004522990 00000 n 
-0004523142 00000 n 
-0004523295 00000 n 
-0004523448 00000 n 
-0004523601 00000 n 
-0004523753 00000 n 
-0004523906 00000 n 
-0004524057 00000 n 
-0004524209 00000 n 
-0004524362 00000 n 
-0004524515 00000 n 
-0004524668 00000 n 
-0004524820 00000 n 
-0004524972 00000 n 
-0004525123 00000 n 
-0004529272 00000 n 
-0004529424 00000 n 
-0004525339 00000 n 
-0004500143 00000 n 
-0004498193 00000 n 
-0004525274 00000 n 
-0004529575 00000 n 
-0004529727 00000 n 
-0004529879 00000 n 
-0004530031 00000 n 
-0004530183 00000 n 
-0004530336 00000 n 
-0004530488 00000 n 
-0004530641 00000 n 
-0004530793 00000 n 
-0004530945 00000 n 
-0004531098 00000 n 
-0004531250 00000 n 
-0004531401 00000 n 
-0004531553 00000 n 
-0004531705 00000 n 
-0004531858 00000 n 
-0004532009 00000 n 
-0004532161 00000 n 
-0004532313 00000 n 
-0004532465 00000 n 
-0004532617 00000 n 
-0004532768 00000 n 
-0004532921 00000 n 
-0004533073 00000 n 
-0004533225 00000 n 
-0004533377 00000 n 
-0004533529 00000 n 
-0004533680 00000 n 
-0004533832 00000 n 
-0004533984 00000 n 
-0004534135 00000 n 
-0004534286 00000 n 
-0004534438 00000 n 
-0004534590 00000 n 
-0004534743 00000 n 
-0004534896 00000 n 
-0004535049 00000 n 
-0004535202 00000 n 
-0004535354 00000 n 
-0004535506 00000 n 
-0004535658 00000 n 
-0004535810 00000 n 
-0004535961 00000 n 
-0004536113 00000 n 
-0004536265 00000 n 
-0004536418 00000 n 
-0004536570 00000 n 
-0004536722 00000 n 
-0004536874 00000 n 
-0004537026 00000 n 
-0004537179 00000 n 
-0004537331 00000 n 
-0004537484 00000 n 
-0004537637 00000 n 
-0004537789 00000 n 
-0004537942 00000 n 
-0004538095 00000 n 
-0004538248 00000 n 
-0004538399 00000 n 
-0004538551 00000 n 
-0004538704 00000 n 
-0004538856 00000 n 
-0004539008 00000 n 
-0004539159 00000 n 
-0004539309 00000 n 
-0004539461 00000 n 
-0004539612 00000 n 
-0004539764 00000 n 
-0004539917 00000 n 
-0004540068 00000 n 
-0004540219 00000 n 
-0004540372 00000 n 
-0004540524 00000 n 
-0004540676 00000 n 
-0004540827 00000 n 
-0004540979 00000 n 
-0004541132 00000 n 
-0004541285 00000 n 
-0004541438 00000 n 
-0004541591 00000 n 
-0004541743 00000 n 
-0004541894 00000 n 
-0004542045 00000 n 
-0004542198 00000 n 
-0004542350 00000 n 
-0004542503 00000 n 
-0004542655 00000 n 
-0004542807 00000 n 
-0004542958 00000 n 
-0004543109 00000 n 
-0004543258 00000 n 
-0004543411 00000 n 
-0004543562 00000 n 
-0004543713 00000 n 
-0004543866 00000 n 
-0004544019 00000 n 
-0004544171 00000 n 
-0004544323 00000 n 
-0004544475 00000 n 
-0004544626 00000 n 
-0004544778 00000 n 
-0004544930 00000 n 
-0004545081 00000 n 
-0004545233 00000 n 
-0004545385 00000 n 
-0004545536 00000 n 
-0004545689 00000 n 
-0004545841 00000 n 
-0004545994 00000 n 
-0004546145 00000 n 
-0004546297 00000 n 
-0004546450 00000 n 
-0004546602 00000 n 
-0004546754 00000 n 
-0004546906 00000 n 
-0004547059 00000 n 
-0004547211 00000 n 
-0004547363 00000 n 
-0004547514 00000 n 
-0004547666 00000 n 
-0004547817 00000 n 
-0004547970 00000 n 
-0004548121 00000 n 
-0004548274 00000 n 
-0004548426 00000 n 
-0004548578 00000 n 
-0004548730 00000 n 
-0004548882 00000 n 
-0004549034 00000 n 
-0004549186 00000 n 
-0004549338 00000 n 
-0004549491 00000 n 
-0004549644 00000 n 
-0004549794 00000 n 
-0004549946 00000 n 
-0004550097 00000 n 
-0004550249 00000 n 
-0004550401 00000 n 
-0004550552 00000 n 
-0004550705 00000 n 
-0004550857 00000 n 
-0004551010 00000 n 
-0004551160 00000 n 
-0004551311 00000 n 
-0004551463 00000 n 
-0004551615 00000 n 
-0004551767 00000 n 
-0004551919 00000 n 
-0004552071 00000 n 
-0004552224 00000 n 
-0004552377 00000 n 
-0004552528 00000 n 
-0004552680 00000 n 
-0004552833 00000 n 
-0004552985 00000 n 
-0004553137 00000 n 
-0004553290 00000 n 
-0004553441 00000 n 
-0004558044 00000 n 
-0004558195 00000 n 
-0004558346 00000 n 
-0004553656 00000 n 
-0004527533 00000 n 
-0004525456 00000 n 
-0004553591 00000 n 
-0004558498 00000 n 
-0004558648 00000 n 
-0004558799 00000 n 
-0004558952 00000 n 
-0004559104 00000 n 
-0004559257 00000 n 
-0004559409 00000 n 
-0004559559 00000 n 
-0004559710 00000 n 
-0004559863 00000 n 
-0004560016 00000 n 
-0004560169 00000 n 
-0004560322 00000 n 
-0004560470 00000 n 
-0004560620 00000 n 
-0004560772 00000 n 
-0004560924 00000 n 
-0004561075 00000 n 
-0004561227 00000 n 
-0004561378 00000 n 
-0004561531 00000 n 
-0004561684 00000 n 
-0004561837 00000 n 
-0004561990 00000 n 
-0004562143 00000 n 
-0004562295 00000 n 
-0004562448 00000 n 
-0004562601 00000 n 
-0004562753 00000 n 
-0004562906 00000 n 
-0004563058 00000 n 
-0004563210 00000 n 
-0004563362 00000 n 
-0004563513 00000 n 
-0004563665 00000 n 
-0004563815 00000 n 
-0004563967 00000 n 
-0004564120 00000 n 
-0004564272 00000 n 
-0004564425 00000 n 
-0004564578 00000 n 
-0004564730 00000 n 
-0004564883 00000 n 
-0004565035 00000 n 
-0004565187 00000 n 
-0004565340 00000 n 
-0004565492 00000 n 
-0004565645 00000 n 
-0004565798 00000 n 
-0004565951 00000 n 
-0004566103 00000 n 
-0004566256 00000 n 
-0004566409 00000 n 
-0004566560 00000 n 
-0004566712 00000 n 
-0004566864 00000 n 
-0004567017 00000 n 
-0004567169 00000 n 
-0004567319 00000 n 
-0004567472 00000 n 
-0004567625 00000 n 
-0004567775 00000 n 
-0004567927 00000 n 
-0004568080 00000 n 
-0004568233 00000 n 
-0004568385 00000 n 
-0004568537 00000 n 
-0004568690 00000 n 
-0004568842 00000 n 
-0004568995 00000 n 
-0004569148 00000 n 
-0004569301 00000 n 
-0004569453 00000 n 
-0004569606 00000 n 
-0004569759 00000 n 
-0004569910 00000 n 
-0004570063 00000 n 
-0004570216 00000 n 
-0004570369 00000 n 
-0004570522 00000 n 
-0004570675 00000 n 
-0004570828 00000 n 
-0004570979 00000 n 
-0004571131 00000 n 
-0004571284 00000 n 
-0004571437 00000 n 
-0004571589 00000 n 
-0004571742 00000 n 
-0004571894 00000 n 
-0004572046 00000 n 
-0004572199 00000 n 
-0004572351 00000 n 
-0004572503 00000 n 
-0004572656 00000 n 
-0004572809 00000 n 
-0004572961 00000 n 
-0004573113 00000 n 
-0004573264 00000 n 
-0004573417 00000 n 
-0004573570 00000 n 
-0004573722 00000 n 
-0004573875 00000 n 
-0004574028 00000 n 
-0004574181 00000 n 
-0004574334 00000 n 
-0004574485 00000 n 
-0004574635 00000 n 
-0004574788 00000 n 
-0004574941 00000 n 
-0004575093 00000 n 
-0004575245 00000 n 
-0004575397 00000 n 
-0004575550 00000 n 
-0004575703 00000 n 
-0004575856 00000 n 
-0004576009 00000 n 
-0004576162 00000 n 
-0004576315 00000 n 
-0004576468 00000 n 
-0004576619 00000 n 
-0004576770 00000 n 
-0004576922 00000 n 
-0004577074 00000 n 
-0004577226 00000 n 
-0004577378 00000 n 
-0004577529 00000 n 
-0004577681 00000 n 
-0004577834 00000 n 
-0004577986 00000 n 
-0004578139 00000 n 
-0004578292 00000 n 
-0004578445 00000 n 
-0004578597 00000 n 
-0004578750 00000 n 
-0004578903 00000 n 
-0004579056 00000 n 
-0004579209 00000 n 
-0004579362 00000 n 
-0004579514 00000 n 
-0004579667 00000 n 
-0004579819 00000 n 
-0004579971 00000 n 
-0004580123 00000 n 
-0004580275 00000 n 
-0004580428 00000 n 
-0004580581 00000 n 
-0004580732 00000 n 
-0004580885 00000 n 
-0004581037 00000 n 
-0004581190 00000 n 
-0004581343 00000 n 
-0004581496 00000 n 
-0004581649 00000 n 
-0004581802 00000 n 
-0004581954 00000 n 
-0004582107 00000 n 
-0004582260 00000 n 
-0004582412 00000 n 
-0004582564 00000 n 
-0004582716 00000 n 
-0004582867 00000 n 
-0004583019 00000 n 
-0004583172 00000 n 
-0004583325 00000 n 
-0004583478 00000 n 
-0004583630 00000 n 
-0004583782 00000 n 
-0004583935 00000 n 
-0004584086 00000 n 
-0004584239 00000 n 
-0004584392 00000 n 
-0004584545 00000 n 
-0004584698 00000 n 
-0004584851 00000 n 
-0004585004 00000 n 
-0004585157 00000 n 
-0004585310 00000 n 
-0004585463 00000 n 
-0004585616 00000 n 
-0004585769 00000 n 
-0004585921 00000 n 
-0004586074 00000 n 
-0004586227 00000 n 
-0004586378 00000 n 
-0004586529 00000 n 
-0004591598 00000 n 
-0004591751 00000 n 
-0004586744 00000 n 
-0004556025 00000 n 
-0004553759 00000 n 
-0004586679 00000 n 
-0004591902 00000 n 
-0004592054 00000 n 
-0004592207 00000 n 
-0004592359 00000 n 
-0004592511 00000 n 
-0004592661 00000 n 
-0004592812 00000 n 
-0004592963 00000 n 
-0004593114 00000 n 
-0004593267 00000 n 
-0004593419 00000 n 
-0004593570 00000 n 
-0004593721 00000 n 
-0004593874 00000 n 
-0004594026 00000 n 
-0004594178 00000 n 
-0004594330 00000 n 
-0004594482 00000 n 
-0004594633 00000 n 
-0004594783 00000 n 
-0004594933 00000 n 
-0004595086 00000 n 
-0004595238 00000 n 
-0004595389 00000 n 
-0004595542 00000 n 
-0004595695 00000 n 
-0004595847 00000 n 
-0004595998 00000 n 
-0004596149 00000 n 
-0004596300 00000 n 
-0004596453 00000 n 
-0004596602 00000 n 
-0004596754 00000 n 
-0004596906 00000 n 
-0004597059 00000 n 
-0004597211 00000 n 
-0004597364 00000 n 
-0004597517 00000 n 
-0004597670 00000 n 
-0004597823 00000 n 
-0004597976 00000 n 
-0004598129 00000 n 
-0004598282 00000 n 
-0004598434 00000 n 
-0004598587 00000 n 
-0004598740 00000 n 
-0004598892 00000 n 
-0004599044 00000 n 
-0004599197 00000 n 
-0004599350 00000 n 
-0004599503 00000 n 
-0004599656 00000 n 
-0004599808 00000 n 
-0004599959 00000 n 
-0004600112 00000 n 
-0004600264 00000 n 
-0004600417 00000 n 
-0004600570 00000 n 
-0004600723 00000 n 
-0004600876 00000 n 
-0004601029 00000 n 
-0004601181 00000 n 
-0004601334 00000 n 
-0004601487 00000 n 
-0004601640 00000 n 
-0004601793 00000 n 
-0004601944 00000 n 
-0004602097 00000 n 
-0004602250 00000 n 
-0004602402 00000 n 
-0004602555 00000 n 
-0004602706 00000 n 
-0004602857 00000 n 
-0004603004 00000 n 
-0004603156 00000 n 
-0004603307 00000 n 
-0004603459 00000 n 
-0004603611 00000 n 
-0004603763 00000 n 
-0004603916 00000 n 
-0004604069 00000 n 
-0004604222 00000 n 
-0004604375 00000 n 
-0004604528 00000 n 
-0004604679 00000 n 
-0004604832 00000 n 
-0004604985 00000 n 
-0004605138 00000 n 
-0004605291 00000 n 
-0004605444 00000 n 
-0004605597 00000 n 
-0004605749 00000 n 
-0004605901 00000 n 
-0004606054 00000 n 
-0004606204 00000 n 
-0004606356 00000 n 
-0004606508 00000 n 
-0004606661 00000 n 
-0004606814 00000 n 
-0004606965 00000 n 
-0004607118 00000 n 
-0004607270 00000 n 
-0004607423 00000 n 
-0004607575 00000 n 
-0004607726 00000 n 
-0004607878 00000 n 
-0004608031 00000 n 
-0004608181 00000 n 
-0004608334 00000 n 
-0004608486 00000 n 
-0004608638 00000 n 
-0004608790 00000 n 
-0004608942 00000 n 
-0004609095 00000 n 
-0004609247 00000 n 
-0004609400 00000 n 
-0004609551 00000 n 
-0004609704 00000 n 
-0004609856 00000 n 
-0004610008 00000 n 
-0004610159 00000 n 
-0004610311 00000 n 
-0004610463 00000 n 
-0004610614 00000 n 
-0004610767 00000 n 
-0004610920 00000 n 
-0004611073 00000 n 
-0004611225 00000 n 
-0004611376 00000 n 
-0004611528 00000 n 
-0004611680 00000 n 
-0004611833 00000 n 
-0004611985 00000 n 
-0004612138 00000 n 
-0004612290 00000 n 
-0004612443 00000 n 
-0004612596 00000 n 
-0004612749 00000 n 
-0004612902 00000 n 
-0004613055 00000 n 
-0004613208 00000 n 
-0004613361 00000 n 
-0004613512 00000 n 
-0004613664 00000 n 
-0004613817 00000 n 
-0004613969 00000 n 
-0004614122 00000 n 
-0004614275 00000 n 
-0004614428 00000 n 
-0004614581 00000 n 
-0004614733 00000 n 
-0004614885 00000 n 
-0004615037 00000 n 
-0004615190 00000 n 
-0004615343 00000 n 
-0004615496 00000 n 
-0004615649 00000 n 
-0004615801 00000 n 
-0004615954 00000 n 
-0004616107 00000 n 
-0004616260 00000 n 
-0004616413 00000 n 
-0004616564 00000 n 
-0004616717 00000 n 
-0004616869 00000 n 
-0004617021 00000 n 
-0004617172 00000 n 
-0004617323 00000 n 
-0004617475 00000 n 
-0004617626 00000 n 
-0004617777 00000 n 
-0004617929 00000 n 
-0004618081 00000 n 
-0004618233 00000 n 
-0004618385 00000 n 
-0004618537 00000 n 
-0004618689 00000 n 
-0004618842 00000 n 
-0004618993 00000 n 
-0004619146 00000 n 
-0004619299 00000 n 
-0004619452 00000 n 
-0004619604 00000 n 
-0004619757 00000 n 
-0004619910 00000 n 
-0004620063 00000 n 
-0004620215 00000 n 
-0004620368 00000 n 
-0004620519 00000 n 
-0004620672 00000 n 
-0004620824 00000 n 
-0004620977 00000 n 
-0004621130 00000 n 
-0004621283 00000 n 
-0004621436 00000 n 
-0004621589 00000 n 
-0004621742 00000 n 
-0004621894 00000 n 
-0004622047 00000 n 
-0004622200 00000 n 
-0004622353 00000 n 
-0004622506 00000 n 
-0004622658 00000 n 
-0004622811 00000 n 
-0004622962 00000 n 
-0004623115 00000 n 
-0004623267 00000 n 
-0004623419 00000 n 
-0004623571 00000 n 
-0004623724 00000 n 
-0004623877 00000 n 
-0004624029 00000 n 
-0004624181 00000 n 
-0004624334 00000 n 
-0004624486 00000 n 
-0004624639 00000 n 
-0004624792 00000 n 
-0004624945 00000 n 
-0004625098 00000 n 
-0004625251 00000 n 
-0004625403 00000 n 
-0004625555 00000 n 
-0004625708 00000 n 
-0004625859 00000 n 
-0004630180 00000 n 
-0004626075 00000 n 
-0004589199 00000 n 
-0004586861 00000 n 
-0004626010 00000 n 
-0004630332 00000 n 
-0004630485 00000 n 
-0004630638 00000 n 
-0004630790 00000 n 
-0004630943 00000 n 
-0004631096 00000 n 
-0004631249 00000 n 
-0004631402 00000 n 
-0004631554 00000 n 
-0004631704 00000 n 
-0004631855 00000 n 
-0004632008 00000 n 
-0004632160 00000 n 
-0004632313 00000 n 
-0004632464 00000 n 
-0004632616 00000 n 
-0004632767 00000 n 
-0004632919 00000 n 
-0004633071 00000 n 
-0004633221 00000 n 
-0004633373 00000 n 
-0004633525 00000 n 
-0004633678 00000 n 
-0004633829 00000 n 
-0004633981 00000 n 
-0004634133 00000 n 
-0004634286 00000 n 
-0004634438 00000 n 
-0004634590 00000 n 
-0004634743 00000 n 
-0004634896 00000 n 
-0004635049 00000 n 
-0004635201 00000 n 
-0004635351 00000 n 
-0004635500 00000 n 
-0004635652 00000 n 
-0004635803 00000 n 
-0004635956 00000 n 
-0004636108 00000 n 
-0004636261 00000 n 
-0004636414 00000 n 
-0004636567 00000 n 
-0004636720 00000 n 
-0004636873 00000 n 
-0004637026 00000 n 
-0004637179 00000 n 
-0004637331 00000 n 
-0004637483 00000 n 
-0004637636 00000 n 
-0004637788 00000 n 
-0004637941 00000 n 
-0004638093 00000 n 
-0004638245 00000 n 
-0004638397 00000 n 
-0004638549 00000 n 
-0004638701 00000 n 
-0004638853 00000 n 
-0004639003 00000 n 
-0004639156 00000 n 
-0004639306 00000 n 
-0004639458 00000 n 
-0004639611 00000 n 
-0004639761 00000 n 
-0004639914 00000 n 
-0004640065 00000 n 
-0004640218 00000 n 
-0004640369 00000 n 
-0004640522 00000 n 
-0004640673 00000 n 
-0004640826 00000 n 
-0004640976 00000 n 
-0004641128 00000 n 
-0004641281 00000 n 
-0004641434 00000 n 
-0004641584 00000 n 
-0004641735 00000 n 
-0004641886 00000 n 
-0004642038 00000 n 
-0004642190 00000 n 
-0004642343 00000 n 
-0004642495 00000 n 
-0004642648 00000 n 
-0004642800 00000 n 
-0004642953 00000 n 
-0004643106 00000 n 
-0004643258 00000 n 
-0004643411 00000 n 
-0004643563 00000 n 
-0004643715 00000 n 
-0004643867 00000 n 
-0004644019 00000 n 
-0004644171 00000 n 
-0004644323 00000 n 
-0004644474 00000 n 
-0004644627 00000 n 
-0004644779 00000 n 
-0004644932 00000 n 
-0004645085 00000 n 
-0004645237 00000 n 
-0004645390 00000 n 
-0004645542 00000 n 
-0004645695 00000 n 
-0004645846 00000 n 
-0004645999 00000 n 
-0004646152 00000 n 
-0004646304 00000 n 
-0004646457 00000 n 
-0004646610 00000 n 
-0004646763 00000 n 
-0004646916 00000 n 
-0004647068 00000 n 
-0004647221 00000 n 
-0004647373 00000 n 
-0004647526 00000 n 
-0004647679 00000 n 
-0004647831 00000 n 
-0004647984 00000 n 
-0004648137 00000 n 
-0004648290 00000 n 
-0004648443 00000 n 
-0004648596 00000 n 
-0004648749 00000 n 
-0004648901 00000 n 
-0004649053 00000 n 
-0004649204 00000 n 
-0004649356 00000 n 
-0004649508 00000 n 
-0004649661 00000 n 
-0004649813 00000 n 
-0004649966 00000 n 
-0004650119 00000 n 
-0004650272 00000 n 
-0004650424 00000 n 
-0004650577 00000 n 
-0004650729 00000 n 
-0004650881 00000 n 
-0004651031 00000 n 
-0004651182 00000 n 
-0004651335 00000 n 
-0004651488 00000 n 
-0004651641 00000 n 
-0004651793 00000 n 
-0004651946 00000 n 
-0004652098 00000 n 
-0004652251 00000 n 
-0004652404 00000 n 
-0004652556 00000 n 
-0004652708 00000 n 
-0004652861 00000 n 
-0004653013 00000 n 
-0004653166 00000 n 
-0004653319 00000 n 
-0004653471 00000 n 
-0004653622 00000 n 
-0004653775 00000 n 
-0004653928 00000 n 
-0004654081 00000 n 
-0004654234 00000 n 
-0004654386 00000 n 
-0004654538 00000 n 
-0004654691 00000 n 
-0004654843 00000 n 
-0004654996 00000 n 
-0004655149 00000 n 
-0004655302 00000 n 
-0004655455 00000 n 
-0004655607 00000 n 
-0004655760 00000 n 
-0004655913 00000 n 
-0004656066 00000 n 
-0004656219 00000 n 
-0004656368 00000 n 
-0004656519 00000 n 
-0004656670 00000 n 
-0004656821 00000 n 
-0004656972 00000 n 
-0004657123 00000 n 
-0004657273 00000 n 
-0004661161 00000 n 
-0004657489 00000 n 
-0004628251 00000 n 
-0004626192 00000 n 
-0004657424 00000 n 
-0005142880 00000 n 
-0004661314 00000 n 
-0004661467 00000 n 
-0004661620 00000 n 
-0004661772 00000 n 
-0004661925 00000 n 
-0004662077 00000 n 
-0004662230 00000 n 
-0004662383 00000 n 
-0004662535 00000 n 
-0004662688 00000 n 
-0004662839 00000 n 
-0004662991 00000 n 
-0004663144 00000 n 
-0004663297 00000 n 
-0004663450 00000 n 
-0004663603 00000 n 
-0004663756 00000 n 
-0004663907 00000 n 
-0004664060 00000 n 
-0004664212 00000 n 
-0004664364 00000 n 
-0004664517 00000 n 
-0004664669 00000 n 
-0004664821 00000 n 
-0004664974 00000 n 
-0004665126 00000 n 
-0004665279 00000 n 
-0004665430 00000 n 
-0004665583 00000 n 
-0004665734 00000 n 
-0004665887 00000 n 
-0004666039 00000 n 
-0004666192 00000 n 
-0004666344 00000 n 
-0004666493 00000 n 
-0004666645 00000 n 
-0004666797 00000 n 
-0004666950 00000 n 
-0004667101 00000 n 
-0004667253 00000 n 
-0004667406 00000 n 
-0004667559 00000 n 
-0004667712 00000 n 
-0004667864 00000 n 
-0004668017 00000 n 
-0004668169 00000 n 
-0004668322 00000 n 
-0004668474 00000 n 
-0004668627 00000 n 
-0004668780 00000 n 
-0004668933 00000 n 
-0004669086 00000 n 
-0004669239 00000 n 
-0004669392 00000 n 
-0004669545 00000 n 
-0004669698 00000 n 
-0004669851 00000 n 
-0004670004 00000 n 
-0004670156 00000 n 
-0004670309 00000 n 
-0004670461 00000 n 
-0004670614 00000 n 
-0004670765 00000 n 
-0004670916 00000 n 
-0004671068 00000 n 
-0004671221 00000 n 
-0004671373 00000 n 
-0004671525 00000 n 
-0004671677 00000 n 
-0004671829 00000 n 
-0004671982 00000 n 
-0004672133 00000 n 
-0004672285 00000 n 
-0004672437 00000 n 
-0004672590 00000 n 
-0004672742 00000 n 
-0004672895 00000 n 
-0004673048 00000 n 
-0004673200 00000 n 
-0004673353 00000 n 
-0004673505 00000 n 
-0004673658 00000 n 
-0004673811 00000 n 
-0004673961 00000 n 
-0004674108 00000 n 
-0004674258 00000 n 
-0004674408 00000 n 
-0004674559 00000 n 
-0004674712 00000 n 
-0004674865 00000 n 
-0004675018 00000 n 
-0004675170 00000 n 
-0004675322 00000 n 
-0004675475 00000 n 
-0004675624 00000 n 
-0004675777 00000 n 
-0004675929 00000 n 
-0004676081 00000 n 
-0004676233 00000 n 
-0004676386 00000 n 
-0004676537 00000 n 
-0004676687 00000 n 
-0004676839 00000 n 
-0004676991 00000 n 
-0004677142 00000 n 
-0004677293 00000 n 
-0004677446 00000 n 
-0004677598 00000 n 
-0004677751 00000 n 
-0004677901 00000 n 
-0004678054 00000 n 
-0004678205 00000 n 
-0004678358 00000 n 
-0004678510 00000 n 
-0004678663 00000 n 
-0004678816 00000 n 
-0004678969 00000 n 
-0004679122 00000 n 
-0004679275 00000 n 
-0004679428 00000 n 
-0004679581 00000 n 
-0004679734 00000 n 
-0004679887 00000 n 
-0004680040 00000 n 
-0004680193 00000 n 
-0004680346 00000 n 
-0004680498 00000 n 
-0004680650 00000 n 
-0004680803 00000 n 
-0004680956 00000 n 
-0004681109 00000 n 
-0004681262 00000 n 
-0004681415 00000 n 
-0004681567 00000 n 
-0004681719 00000 n 
-0004681872 00000 n 
-0004682024 00000 n 
-0004682177 00000 n 
-0004682330 00000 n 
-0004682483 00000 n 
-0004682636 00000 n 
-0004682789 00000 n 
-0004682942 00000 n 
-0004683095 00000 n 
-0004683246 00000 n 
-0004683399 00000 n 
-0004683552 00000 n 
-0004683705 00000 n 
-0004683858 00000 n 
-0004684010 00000 n 
-0004688079 00000 n 
-0004684226 00000 n 
-0004659512 00000 n 
-0004657592 00000 n 
-0004684161 00000 n 
-0004688231 00000 n 
-0004688384 00000 n 
-0004688537 00000 n 
-0004688690 00000 n 
-0004688842 00000 n 
-0004688994 00000 n 
-0004689147 00000 n 
-0004689297 00000 n 
-0004689448 00000 n 
-0004689600 00000 n 
-0004689751 00000 n 
-0004689902 00000 n 
-0004690055 00000 n 
-0004690203 00000 n 
-0004690355 00000 n 
-0004690507 00000 n 
-0004690657 00000 n 
-0004690809 00000 n 
-0004690961 00000 n 
-0004691112 00000 n 
-0004691265 00000 n 
-0004691418 00000 n 
-0004691571 00000 n 
-0004691723 00000 n 
-0004691875 00000 n 
-0004692027 00000 n 
-0004692180 00000 n 
-0004692331 00000 n 
-0004692483 00000 n 
-0004692636 00000 n 
-0004692789 00000 n 
-0004692941 00000 n 
-0004693094 00000 n 
-0004693244 00000 n 
-0004693395 00000 n 
-0004693546 00000 n 
-0004693697 00000 n 
-0004693850 00000 n 
-0004693999 00000 n 
-0004694149 00000 n 
-0004694300 00000 n 
-0004694453 00000 n 
-0004694606 00000 n 
-0004694758 00000 n 
-0004694911 00000 n 
-0004695062 00000 n 
-0004695214 00000 n 
-0004695367 00000 n 
-0004695520 00000 n 
-0004695673 00000 n 
-0004695825 00000 n 
-0004695977 00000 n 
-0004696130 00000 n 
-0004696281 00000 n 
-0004696434 00000 n 
-0004696586 00000 n 
-0004696738 00000 n 
-0004696891 00000 n 
-0004697043 00000 n 
-0004697195 00000 n 
-0004697347 00000 n 
-0004697498 00000 n 
-0004697651 00000 n 
-0004697802 00000 n 
-0004697954 00000 n 
-0004698106 00000 n 
-0004698259 00000 n 
-0004698412 00000 n 
-0004698564 00000 n 
-0004698717 00000 n 
-0004698868 00000 n 
-0004699018 00000 n 
-0004699169 00000 n 
-0004699322 00000 n 
-0004699474 00000 n 
-0004699626 00000 n 
-0004699778 00000 n 
-0004699931 00000 n 
-0004700082 00000 n 
-0004700235 00000 n 
-0004700388 00000 n 
-0004700541 00000 n 
-0004700693 00000 n 
-0004700846 00000 n 
-0004700999 00000 n 
-0004701150 00000 n 
-0004701302 00000 n 
-0004701455 00000 n 
-0004701607 00000 n 
-0004701760 00000 n 
-0004701912 00000 n 
-0004702064 00000 n 
-0004702216 00000 n 
-0004702368 00000 n 
-0004702520 00000 n 
-0004702673 00000 n 
-0004702825 00000 n 
-0004702977 00000 n 
-0004703128 00000 n 
-0004703280 00000 n 
-0004703433 00000 n 
-0004703584 00000 n 
-0004703736 00000 n 
-0004703889 00000 n 
-0004704040 00000 n 
-0004704192 00000 n 
-0004704345 00000 n 
-0004704498 00000 n 
-0004704651 00000 n 
-0004704803 00000 n 
-0004704956 00000 n 
-0004705109 00000 n 
-0004705261 00000 n 
-0004705413 00000 n 
-0004705565 00000 n 
-0004705717 00000 n 
-0004705870 00000 n 
-0004706022 00000 n 
-0004706174 00000 n 
-0004706327 00000 n 
-0004706479 00000 n 
-0004706631 00000 n 
-0004706783 00000 n 
-0004706933 00000 n 
-0004707086 00000 n 
-0004707239 00000 n 
-0004707390 00000 n 
-0004707542 00000 n 
-0004707695 00000 n 
-0004707845 00000 n 
-0004707997 00000 n 
-0004708149 00000 n 
-0004708301 00000 n 
-0004708453 00000 n 
-0004708603 00000 n 
-0004708755 00000 n 
-0004708906 00000 n 
-0004709059 00000 n 
-0004709211 00000 n 
-0004709364 00000 n 
-0004709516 00000 n 
-0004709668 00000 n 
-0004709821 00000 n 
-0004709973 00000 n 
-0004710126 00000 n 
-0004710278 00000 n 
-0004710430 00000 n 
-0004710583 00000 n 
-0004710736 00000 n 
-0004710889 00000 n 
-0004711041 00000 n 
-0004711193 00000 n 
-0004711345 00000 n 
-0004711498 00000 n 
-0004711649 00000 n 
-0004716127 00000 n 
-0004711865 00000 n 
-0004686380 00000 n 
-0004684343 00000 n 
-0004711800 00000 n 
-0004716280 00000 n 
-0004716432 00000 n 
-0004716583 00000 n 
-0004716735 00000 n 
-0004716887 00000 n 
-0004717039 00000 n 
-0004717191 00000 n 
-0004717343 00000 n 
-0004717494 00000 n 
-0004717645 00000 n 
-0004717798 00000 n 
-0004717950 00000 n 
-0004718100 00000 n 
-0004718251 00000 n 
-0004718403 00000 n 
-0004718556 00000 n 
-0004718709 00000 n 
-0004718862 00000 n 
-0004719015 00000 n 
-0004719168 00000 n 
-0004719321 00000 n 
-0004719474 00000 n 
-0004719627 00000 n 
-0004719779 00000 n 
-0004719931 00000 n 
-0004720084 00000 n 
-0004720233 00000 n 
-0004720383 00000 n 
-0004720533 00000 n 
-0004720685 00000 n 
-0004720838 00000 n 
-0004720989 00000 n 
-0004721141 00000 n 
-0004721294 00000 n 
-0004721447 00000 n 
-0004721597 00000 n 
-0004721748 00000 n 
-0004721901 00000 n 
-0004722053 00000 n 
-0004722206 00000 n 
-0004722359 00000 n 
-0004722512 00000 n 
-0004722665 00000 n 
-0004722817 00000 n 
-0004722967 00000 n 
-0004723118 00000 n 
-0004723271 00000 n 
-0004723423 00000 n 
-0004723575 00000 n 
-0004723727 00000 n 
-0004723878 00000 n 
-0004724030 00000 n 
-0004724179 00000 n 
-0004724330 00000 n 
-0004724482 00000 n 
-0004724634 00000 n 
-0004724787 00000 n 
-0004724940 00000 n 
-0004725093 00000 n 
-0004725245 00000 n 
-0004725397 00000 n 
-0004725550 00000 n 
-0004725703 00000 n 
-0004725856 00000 n 
-0004726009 00000 n 
-0004726162 00000 n 
-0004726315 00000 n 
-0004726467 00000 n 
-0004726620 00000 n 
-0004726773 00000 n 
-0004726926 00000 n 
-0004727078 00000 n 
-0004727231 00000 n 
-0004727384 00000 n 
-0004727537 00000 n 
-0004727690 00000 n 
-0004727842 00000 n 
-0004727994 00000 n 
-0004728146 00000 n 
-0004728299 00000 n 
-0004728452 00000 n 
-0004728604 00000 n 
-0004728757 00000 n 
-0004728909 00000 n 
-0004729060 00000 n 
-0004729212 00000 n 
-0004729364 00000 n 
-0004729516 00000 n 
-0004729667 00000 n 
-0004729817 00000 n 
-0004729968 00000 n 
-0004730121 00000 n 
-0004730273 00000 n 
-0004730426 00000 n 
-0004730579 00000 n 
-0004730732 00000 n 
-0004730883 00000 n 
-0004731034 00000 n 
-0004731186 00000 n 
-0004731339 00000 n 
-0004731492 00000 n 
-0004731645 00000 n 
-0004731795 00000 n 
-0004731946 00000 n 
-0004732097 00000 n 
-0004732249 00000 n 
-0004732401 00000 n 
-0004732553 00000 n 
-0004732705 00000 n 
-0004732858 00000 n 
-0004733009 00000 n 
-0004733162 00000 n 
-0004733314 00000 n 
-0004733465 00000 n 
-0004733616 00000 n 
-0004733768 00000 n 
-0004733921 00000 n 
-0004734072 00000 n 
-0004734223 00000 n 
-0004734375 00000 n 
-0004734527 00000 n 
-0004734679 00000 n 
-0004734829 00000 n 
-0004734980 00000 n 
-0004735132 00000 n 
-0004735285 00000 n 
-0004735436 00000 n 
-0004735588 00000 n 
-0004735740 00000 n 
-0004735893 00000 n 
-0004736045 00000 n 
-0004736198 00000 n 
-0004736350 00000 n 
-0004736501 00000 n 
-0004736653 00000 n 
-0004736805 00000 n 
-0004736956 00000 n 
-0004737108 00000 n 
-0004737260 00000 n 
-0004737413 00000 n 
-0004737566 00000 n 
-0004737718 00000 n 
-0004737871 00000 n 
-0004738024 00000 n 
-0004738177 00000 n 
-0004738330 00000 n 
-0004738483 00000 n 
-0004738635 00000 n 
-0004738788 00000 n 
-0004738940 00000 n 
-0004739093 00000 n 
-0004739246 00000 n 
-0004739399 00000 n 
-0004739552 00000 n 
-0004739704 00000 n 
-0004739857 00000 n 
-0004740009 00000 n 
-0004740162 00000 n 
-0004740315 00000 n 
-0004740467 00000 n 
-0004740620 00000 n 
-0004740773 00000 n 
-0004740926 00000 n 
-0004741079 00000 n 
-0004741232 00000 n 
-0004741385 00000 n 
-0004741535 00000 n 
-0004741688 00000 n 
-0004741840 00000 n 
-0004741993 00000 n 
-0004742146 00000 n 
-0004742299 00000 n 
-0004742451 00000 n 
-0004742603 00000 n 
-0004742756 00000 n 
-0004742909 00000 n 
-0004743062 00000 n 
-0004743214 00000 n 
-0004743367 00000 n 
-0004743519 00000 n 
-0004743672 00000 n 
-0004743822 00000 n 
-0004743975 00000 n 
-0004744127 00000 n 
-0004744279 00000 n 
-0004744431 00000 n 
-0004744583 00000 n 
-0004744736 00000 n 
-0004744889 00000 n 
-0004745042 00000 n 
-0004745194 00000 n 
-0004745347 00000 n 
-0004745499 00000 n 
-0004745652 00000 n 
-0004745803 00000 n 
-0004745956 00000 n 
-0004746108 00000 n 
-0004746261 00000 n 
-0004746414 00000 n 
-0004746567 00000 n 
-0004746718 00000 n 
-0004750750 00000 n 
-0004746934 00000 n 
-0004713968 00000 n 
-0004711968 00000 n 
-0004746869 00000 n 
-0004750903 00000 n 
-0004751056 00000 n 
-0004751206 00000 n 
-0004751358 00000 n 
-0004751510 00000 n 
-0004751663 00000 n 
-0004751814 00000 n 
-0004751964 00000 n 
-0004752116 00000 n 
-0004752267 00000 n 
-0004752420 00000 n 
-0004752572 00000 n 
-0004752723 00000 n 
-0004752875 00000 n 
-0004753027 00000 n 
-0004753179 00000 n 
-0004753331 00000 n 
-0004753482 00000 n 
-0004753633 00000 n 
-0004753784 00000 n 
-0004753936 00000 n 
-0004754088 00000 n 
-0004754241 00000 n 
-0004754394 00000 n 
-0004754545 00000 n 
-0004754697 00000 n 
-0004754849 00000 n 
-0004755000 00000 n 
-0004755152 00000 n 
-0004755304 00000 n 
-0004755454 00000 n 
-0004755606 00000 n 
-0004755757 00000 n 
-0004755908 00000 n 
-0004756061 00000 n 
-0004756214 00000 n 
-0004756367 00000 n 
-0004756520 00000 n 
-0004756673 00000 n 
-0004756826 00000 n 
-0004756979 00000 n 
-0004757132 00000 n 
-0004757284 00000 n 
-0004757436 00000 n 
-0004757588 00000 n 
-0004757741 00000 n 
-0004757894 00000 n 
-0004758046 00000 n 
-0004758198 00000 n 
-0004758350 00000 n 
-0004758502 00000 n 
-0004758655 00000 n 
-0004758807 00000 n 
-0004758960 00000 n 
-0004759113 00000 n 
-0004759266 00000 n 
-0004759418 00000 n 
-0004759571 00000 n 
-0004759723 00000 n 
-0004759875 00000 n 
-0004760026 00000 n 
-0004760179 00000 n 
-0004760331 00000 n 
-0004760483 00000 n 
-0004760635 00000 n 
-0004760786 00000 n 
-0004760939 00000 n 
-0004761091 00000 n 
-0004761242 00000 n 
-0004761394 00000 n 
-0004761546 00000 n 
-0004761699 00000 n 
-0004761851 00000 n 
-0004762004 00000 n 
-0004762157 00000 n 
-0004762310 00000 n 
-0004762463 00000 n 
-0004762616 00000 n 
-0004762769 00000 n 
-0004762920 00000 n 
-0004763071 00000 n 
-0004763221 00000 n 
-0004763372 00000 n 
-0004763523 00000 n 
-0004763675 00000 n 
-0004763827 00000 n 
-0004763979 00000 n 
-0004764132 00000 n 
-0004764284 00000 n 
-0004764436 00000 n 
-0004764587 00000 n 
-0004764739 00000 n 
-0004764890 00000 n 
-0004765037 00000 n 
-0004765188 00000 n 
-0004765340 00000 n 
-0004765492 00000 n 
-0004765644 00000 n 
-0004765796 00000 n 
-0004765947 00000 n 
-0004766098 00000 n 
-0004766251 00000 n 
-0004766404 00000 n 
-0004766557 00000 n 
-0004766709 00000 n 
-0004766862 00000 n 
-0004767015 00000 n 
-0004767167 00000 n 
-0004767319 00000 n 
-0004767471 00000 n 
-0004767624 00000 n 
-0004767777 00000 n 
-0004767930 00000 n 
-0004768083 00000 n 
-0004768236 00000 n 
-0004768388 00000 n 
-0004768540 00000 n 
-0004768692 00000 n 
-0004768845 00000 n 
-0004768998 00000 n 
-0004769151 00000 n 
-0004769304 00000 n 
-0004769457 00000 n 
-0004769610 00000 n 
-0004769763 00000 n 
-0004769916 00000 n 
-0004770067 00000 n 
-0004770219 00000 n 
-0004770372 00000 n 
-0004770524 00000 n 
-0004770676 00000 n 
-0004770827 00000 n 
-0004770979 00000 n 
-0004771130 00000 n 
-0004771283 00000 n 
-0004771436 00000 n 
-0004771589 00000 n 
-0004771741 00000 n 
-0004771892 00000 n 
-0004772045 00000 n 
-0004772197 00000 n 
-0004772350 00000 n 
-0004772503 00000 n 
-0004772656 00000 n 
-0004772809 00000 n 
-0004772962 00000 n 
-0004773115 00000 n 
-0004773266 00000 n 
-0004778024 00000 n 
-0004778174 00000 n 
-0004778325 00000 n 
-0004773482 00000 n 
-0004749121 00000 n 
-0004747037 00000 n 
-0004773417 00000 n 
-0004778477 00000 n 
-0004778630 00000 n 
-0004778781 00000 n 
-0004778933 00000 n 
-0004779084 00000 n 
-0004779237 00000 n 
-0004779389 00000 n 
-0004779538 00000 n 
-0004779691 00000 n 
-0004779842 00000 n 
-0004779991 00000 n 
-0004780141 00000 n 
-0004780293 00000 n 
-0004780445 00000 n 
-0004780597 00000 n 
-0004780750 00000 n 
-0004780902 00000 n 
-0004781053 00000 n 
-0004781206 00000 n 
-0004781358 00000 n 
-0004781510 00000 n 
-0004781663 00000 n 
-0004781813 00000 n 
-0004781963 00000 n 
-0004782115 00000 n 
-0004782267 00000 n 
-0004782419 00000 n 
-0004782570 00000 n 
-0004782722 00000 n 
-0004782873 00000 n 
-0004783026 00000 n 
-0004783179 00000 n 
-0004783332 00000 n 
-0004783484 00000 n 
-0004783637 00000 n 
-0004783789 00000 n 
-0004783942 00000 n 
-0004784095 00000 n 
-0004784248 00000 n 
-0004784400 00000 n 
-0004784553 00000 n 
-0004784706 00000 n 
-0004784859 00000 n 
-0004785012 00000 n 
-0004785165 00000 n 
-0004785317 00000 n 
-0004785470 00000 n 
-0004785623 00000 n 
-0004785776 00000 n 
-0004785929 00000 n 
-0004786080 00000 n 
-0004786231 00000 n 
-0004786384 00000 n 
-0004786535 00000 n 
-0004786688 00000 n 
-0004786841 00000 n 
-0004786993 00000 n 
-0004787145 00000 n 
-0004787296 00000 n 
-0004787446 00000 n 
-0004787599 00000 n 
-0004787750 00000 n 
-0004787902 00000 n 
-0004788053 00000 n 
-0004788206 00000 n 
-0004788357 00000 n 
-0004788510 00000 n 
-0004788661 00000 n 
-0004788812 00000 n 
-0004788965 00000 n 
-0004789115 00000 n 
-0004789266 00000 n 
-0004789417 00000 n 
-0004789569 00000 n 
-0004789721 00000 n 
-0004789872 00000 n 
-0004790022 00000 n 
-0004790175 00000 n 
-0004790328 00000 n 
-0004790480 00000 n 
-0004790633 00000 n 
-0004790786 00000 n 
-0004790937 00000 n 
-0004791088 00000 n 
-0004791239 00000 n 
-0004791390 00000 n 
-0004791541 00000 n 
-0004791692 00000 n 
-0004791843 00000 n 
-0004791995 00000 n 
-0004792146 00000 n 
-0004792298 00000 n 
-0004792449 00000 n 
-0004792601 00000 n 
-0004792753 00000 n 
-0004792905 00000 n 
-0004793056 00000 n 
-0004793209 00000 n 
-0004793361 00000 n 
-0004793514 00000 n 
-0004793667 00000 n 
-0004793818 00000 n 
-0004793970 00000 n 
-0004794123 00000 n 
-0004794274 00000 n 
-0004794427 00000 n 
-0004794579 00000 n 
-0004794732 00000 n 
-0004794885 00000 n 
-0004795038 00000 n 
-0004795191 00000 n 
-0004795342 00000 n 
-0004795494 00000 n 
-0004795647 00000 n 
-0004795798 00000 n 
-0004795951 00000 n 
-0004796103 00000 n 
-0004796255 00000 n 
-0004796407 00000 n 
-0004796559 00000 n 
-0004796712 00000 n 
-0004796863 00000 n 
-0004797014 00000 n 
-0004797167 00000 n 
-0004797319 00000 n 
-0004797472 00000 n 
-0004797625 00000 n 
-0004797777 00000 n 
-0004797930 00000 n 
-0004798081 00000 n 
-0004798232 00000 n 
-0004798384 00000 n 
-0004798536 00000 n 
-0004798689 00000 n 
-0004798842 00000 n 
-0004798994 00000 n 
-0004799147 00000 n 
-0004799300 00000 n 
-0004799453 00000 n 
-0004799606 00000 n 
-0004799759 00000 n 
-0004799910 00000 n 
-0004800063 00000 n 
-0004800215 00000 n 
-0004800368 00000 n 
-0004800521 00000 n 
-0004800674 00000 n 
-0004800827 00000 n 
-0004800980 00000 n 
-0004801133 00000 n 
-0004801286 00000 n 
-0004801439 00000 n 
-0004801592 00000 n 
-0004801745 00000 n 
-0004801897 00000 n 
-0004802050 00000 n 
-0004802201 00000 n 
-0004802353 00000 n 
-0004802505 00000 n 
-0004802656 00000 n 
-0004802808 00000 n 
-0004802960 00000 n 
-0004803111 00000 n 
-0004803263 00000 n 
-0004803416 00000 n 
-0004803568 00000 n 
-0004803721 00000 n 
-0004803872 00000 n 
-0004804025 00000 n 
-0004804177 00000 n 
-0004804330 00000 n 
-0004804483 00000 n 
-0004804636 00000 n 
-0004804789 00000 n 
-0004804942 00000 n 
-0004805095 00000 n 
-0004805248 00000 n 
-0004805401 00000 n 
-0004805553 00000 n 
-0004805706 00000 n 
-0004805859 00000 n 
-0004806012 00000 n 
-0004806162 00000 n 
-0004806315 00000 n 
-0004806467 00000 n 
-0004806620 00000 n 
-0004806770 00000 n 
-0004806922 00000 n 
-0004807075 00000 n 
-0004807227 00000 n 
-0004807379 00000 n 
-0004807532 00000 n 
-0004807685 00000 n 
-0004807838 00000 n 
-0004807991 00000 n 
-0004808144 00000 n 
-0004808297 00000 n 
-0004808450 00000 n 
-0004808601 00000 n 
-0004808754 00000 n 
-0004808907 00000 n 
-0004809060 00000 n 
-0004809213 00000 n 
-0004809366 00000 n 
-0004809518 00000 n 
-0004809668 00000 n 
-0004813634 00000 n 
-0004809883 00000 n 
-0004775795 00000 n 
-0004773585 00000 n 
-0004809818 00000 n 
-0004813787 00000 n 
-0004813938 00000 n 
-0004814088 00000 n 
-0004814241 00000 n 
-0004814394 00000 n 
-0004814542 00000 n 
-0004814694 00000 n 
-0004814847 00000 n 
-0004814999 00000 n 
-0004815152 00000 n 
-0004815304 00000 n 
-0004815457 00000 n 
-0004815609 00000 n 
-0004815759 00000 n 
-0004815910 00000 n 
-0004816062 00000 n 
-0004816214 00000 n 
-0004816366 00000 n 
-0004816517 00000 n 
-0004816669 00000 n 
-0004816821 00000 n 
-0004816973 00000 n 
-0004817124 00000 n 
-0004817276 00000 n 
-0004817425 00000 n 
-0004817576 00000 n 
-0004817729 00000 n 
-0004817881 00000 n 
-0004818031 00000 n 
-0004818181 00000 n 
-0004818332 00000 n 
-0004818484 00000 n 
-0004818637 00000 n 
-0004818789 00000 n 
-0004818942 00000 n 
-0004819095 00000 n 
-0004819248 00000 n 
-0004819399 00000 n 
-0004819550 00000 n 
-0004819702 00000 n 
-0004819854 00000 n 
-0004820007 00000 n 
-0004820158 00000 n 
-0004820309 00000 n 
-0004820461 00000 n 
-0004820613 00000 n 
-0004820765 00000 n 
-0004820917 00000 n 
-0004821065 00000 n 
-0004821216 00000 n 
-0004821368 00000 n 
-0004821521 00000 n 
-0004821672 00000 n 
-0004821824 00000 n 
-0004821975 00000 n 
-0004822126 00000 n 
-0004822277 00000 n 
-0004822429 00000 n 
-0004822580 00000 n 
-0004822731 00000 n 
-0004822884 00000 n 
-0004823035 00000 n 
-0004823186 00000 n 
-0004823339 00000 n 
-0004823490 00000 n 
-0004823641 00000 n 
-0004823794 00000 n 
-0004823947 00000 n 
-0004824100 00000 n 
-0004824252 00000 n 
-0004824402 00000 n 
-0004824554 00000 n 
-0004824706 00000 n 
-0004824858 00000 n 
-0004825010 00000 n 
-0004825162 00000 n 
-0004825315 00000 n 
-0004825467 00000 n 
-0004825619 00000 n 
-0004825768 00000 n 
-0004825917 00000 n 
-0004826067 00000 n 
-0004826218 00000 n 
-0004826370 00000 n 
-0004826522 00000 n 
-0004826674 00000 n 
-0004826827 00000 n 
-0004826979 00000 n 
-0004827130 00000 n 
-0004827282 00000 n 
-0004827435 00000 n 
-0004827587 00000 n 
-0004827740 00000 n 
-0004827891 00000 n 
-0004828043 00000 n 
-0004828195 00000 n 
-0004828348 00000 n 
-0004828501 00000 n 
-0004828653 00000 n 
-0004828806 00000 n 
-0004828958 00000 n 
-0004829110 00000 n 
-0004829260 00000 n 
-0004829413 00000 n 
-0004829564 00000 n 
-0004829717 00000 n 
-0004829869 00000 n 
-0004830022 00000 n 
-0004830175 00000 n 
-0004830327 00000 n 
-0004830480 00000 n 
-0004830633 00000 n 
-0004830786 00000 n 
-0004830939 00000 n 
-0004831091 00000 n 
-0004831243 00000 n 
-0004831396 00000 n 
-0004831549 00000 n 
-0004831702 00000 n 
-0004831853 00000 n 
-0004832005 00000 n 
-0004832157 00000 n 
-0004832310 00000 n 
-0004832462 00000 n 
-0004832615 00000 n 
-0004832768 00000 n 
-0004832921 00000 n 
-0004833074 00000 n 
-0004833227 00000 n 
-0004833380 00000 n 
-0004833532 00000 n 
-0004833684 00000 n 
-0004833834 00000 n 
-0004833986 00000 n 
-0004834139 00000 n 
-0004834291 00000 n 
-0004834443 00000 n 
-0004834595 00000 n 
-0004834747 00000 n 
-0004834900 00000 n 
-0004835053 00000 n 
-0004835206 00000 n 
-0004835359 00000 n 
-0004835510 00000 n 
-0004835663 00000 n 
-0004835814 00000 n 
-0004835965 00000 n 
-0004836118 00000 n 
-0004836270 00000 n 
-0004836421 00000 n 
-0004836571 00000 n 
-0004840880 00000 n 
-0004841033 00000 n 
-0004836786 00000 n 
-0004811975 00000 n 
-0004809986 00000 n 
-0004836721 00000 n 
-0005143013 00000 n 
-0004841185 00000 n 
-0004841337 00000 n 
-0004841486 00000 n 
-0004841637 00000 n 
-0004841788 00000 n 
-0004841940 00000 n 
-0004842092 00000 n 
-0004842243 00000 n 
-0004842395 00000 n 
-0004842547 00000 n 
-0004842699 00000 n 
-0004842851 00000 n 
-0004843003 00000 n 
-0004843156 00000 n 
-0004843307 00000 n 
-0004843457 00000 n 
-0004843610 00000 n 
-0004843762 00000 n 
-0004843915 00000 n 
-0004844065 00000 n 
-0004844217 00000 n 
-0004844370 00000 n 
-0004844523 00000 n 
-0004844676 00000 n 
-0004844829 00000 n 
-0004844981 00000 n 
-0004845132 00000 n 
-0004845285 00000 n 
-0004845436 00000 n 
-0004845588 00000 n 
-0004845741 00000 n 
-0004845894 00000 n 
-0004846046 00000 n 
-0004846196 00000 n 
-0004846348 00000 n 
-0004846501 00000 n 
-0004846654 00000 n 
-0004846807 00000 n 
-0004846959 00000 n 
-0004847112 00000 n 
-0004847264 00000 n 
-0004847417 00000 n 
-0004847570 00000 n 
-0004847723 00000 n 
-0004847875 00000 n 
-0004848026 00000 n 
-0004848178 00000 n 
-0004848331 00000 n 
-0004848483 00000 n 
-0004848636 00000 n 
-0004848788 00000 n 
-0004848940 00000 n 
-0004849090 00000 n 
-0004849242 00000 n 
-0004849395 00000 n 
-0004849548 00000 n 
-0004849701 00000 n 
-0004849854 00000 n 
-0004850007 00000 n 
-0004850159 00000 n 
-0004850311 00000 n 
-0004850462 00000 n 
-0004850615 00000 n 
-0004850766 00000 n 
-0004850917 00000 n 
-0004851065 00000 n 
-0004851218 00000 n 
-0004851371 00000 n 
-0004851522 00000 n 
-0004851675 00000 n 
-0004851825 00000 n 
-0004851974 00000 n 
-0004852126 00000 n 
-0004852278 00000 n 
-0004852431 00000 n 
-0004852584 00000 n 
-0004852737 00000 n 
-0004852890 00000 n 
-0004853041 00000 n 
-0004853193 00000 n 
-0004853346 00000 n 
-0004853496 00000 n 
-0004853649 00000 n 
-0004853802 00000 n 
-0004853955 00000 n 
-0004854107 00000 n 
-0004854259 00000 n 
-0004854411 00000 n 
-0004854563 00000 n 
-0004854715 00000 n 
-0004854866 00000 n 
-0004855019 00000 n 
-0004855171 00000 n 
-0004855323 00000 n 
-0004855476 00000 n 
-0004855628 00000 n 
-0004855780 00000 n 
-0004855933 00000 n 
-0004856086 00000 n 
-0004856237 00000 n 
-0004856389 00000 n 
-0004856541 00000 n 
-0004856693 00000 n 
-0004856846 00000 n 
-0004856999 00000 n 
-0004857152 00000 n 
-0004857305 00000 n 
-0004857458 00000 n 
-0004857611 00000 n 
-0004857764 00000 n 
-0004857916 00000 n 
-0004858069 00000 n 
-0004858221 00000 n 
-0004858374 00000 n 
-0004858527 00000 n 
-0004858680 00000 n 
-0004858833 00000 n 
-0004858986 00000 n 
-0004859139 00000 n 
-0004859292 00000 n 
-0004859445 00000 n 
-0004859597 00000 n 
-0004859750 00000 n 
-0004859903 00000 n 
-0004860056 00000 n 
-0004860208 00000 n 
-0004860361 00000 n 
-0004860514 00000 n 
-0004860667 00000 n 
-0004860819 00000 n 
-0004860972 00000 n 
-0004861125 00000 n 
-0004861276 00000 n 
-0004861428 00000 n 
-0004861580 00000 n 
-0004861732 00000 n 
-0004861884 00000 n 
-0004862036 00000 n 
-0004862189 00000 n 
-0004862341 00000 n 
-0004862492 00000 n 
-0004862643 00000 n 
-0004862793 00000 n 
-0004862944 00000 n 
-0004863095 00000 n 
-0004863246 00000 n 
-0004863398 00000 n 
-0004863550 00000 n 
-0004863702 00000 n 
-0004863854 00000 n 
-0004864005 00000 n 
-0004864156 00000 n 
-0004864308 00000 n 
-0004864459 00000 n 
-0004864612 00000 n 
-0004864764 00000 n 
-0004864917 00000 n 
-0004865070 00000 n 
-0004865223 00000 n 
-0004865376 00000 n 
-0004865528 00000 n 
-0004865681 00000 n 
-0004865834 00000 n 
-0004865984 00000 n 
-0004866136 00000 n 
-0004866289 00000 n 
-0004866439 00000 n 
-0004866591 00000 n 
-0004866744 00000 n 
-0004866896 00000 n 
-0004867048 00000 n 
-0004870999 00000 n 
-0004867263 00000 n 
-0004839011 00000 n 
-0004836889 00000 n 
-0004867198 00000 n 
-0004871150 00000 n 
-0004871302 00000 n 
-0004871453 00000 n 
-0004871604 00000 n 
-0004871757 00000 n 
-0004871910 00000 n 
-0004872062 00000 n 
-0004872215 00000 n 
-0004872368 00000 n 
-0004872520 00000 n 
-0004872672 00000 n 
-0004872825 00000 n 
-0004872977 00000 n 
-0004873130 00000 n 
-0004873281 00000 n 
-0004873434 00000 n 
-0004873586 00000 n 
-0004873738 00000 n 
-0004873891 00000 n 
-0004874043 00000 n 
-0004874194 00000 n 
-0004874345 00000 n 
-0004874498 00000 n 
-0004874650 00000 n 
-0004874803 00000 n 
-0004874956 00000 n 
-0004875108 00000 n 
-0004875261 00000 n 
-0004875414 00000 n 
-0004875566 00000 n 
-0004875717 00000 n 
-0004875869 00000 n 
-0004876021 00000 n 
-0004876173 00000 n 
-0004876326 00000 n 
-0004876479 00000 n 
-0004876631 00000 n 
-0004876784 00000 n 
-0004876935 00000 n 
-0004877088 00000 n 
-0004877241 00000 n 
-0004877393 00000 n 
-0004877546 00000 n 
-0004877697 00000 n 
-0004877849 00000 n 
-0004878001 00000 n 
-0004878154 00000 n 
-0004878305 00000 n 
-0004878456 00000 n 
-0004878608 00000 n 
-0004878761 00000 n 
-0004878913 00000 n 
-0004879064 00000 n 
-0004879214 00000 n 
-0004879365 00000 n 
-0004879518 00000 n 
-0004879670 00000 n 
-0004879823 00000 n 
-0004879974 00000 n 
-0004880126 00000 n 
-0004880279 00000 n 
-0004880430 00000 n 
-0004880583 00000 n 
-0004880736 00000 n 
-0004880889 00000 n 
-0004881041 00000 n 
-0004881194 00000 n 
-0004881347 00000 n 
-0004881500 00000 n 
-0004881652 00000 n 
-0004881805 00000 n 
-0004881958 00000 n 
-0004882109 00000 n 
-0004882260 00000 n 
-0004882412 00000 n 
-0004882563 00000 n 
-0004882714 00000 n 
-0004882866 00000 n 
-0004883019 00000 n 
-0004883172 00000 n 
-0004883325 00000 n 
-0004883477 00000 n 
-0004883630 00000 n 
-0004883783 00000 n 
-0004883936 00000 n 
-0004884088 00000 n 
-0004884240 00000 n 
-0004884391 00000 n 
-0004884543 00000 n 
-0004884695 00000 n 
-0004884848 00000 n 
-0004885000 00000 n 
-0004885151 00000 n 
-0004885303 00000 n 
-0004885453 00000 n 
-0004885605 00000 n 
-0004885758 00000 n 
-0004885911 00000 n 
-0004886064 00000 n 
-0004886216 00000 n 
-0004886368 00000 n 
-0004886520 00000 n 
-0004886672 00000 n 
-0004886825 00000 n 
-0004886977 00000 n 
-0004887129 00000 n 
-0004887282 00000 n 
-0004887435 00000 n 
-0004887587 00000 n 
-0004887740 00000 n 
-0004887892 00000 n 
-0004888045 00000 n 
-0004888197 00000 n 
-0004888349 00000 n 
-0004888501 00000 n 
-0004888654 00000 n 
-0004888807 00000 n 
-0004888959 00000 n 
-0004889112 00000 n 
-0004889265 00000 n 
-0004889418 00000 n 
-0004889569 00000 n 
-0004889722 00000 n 
-0004889875 00000 n 
-0004890027 00000 n 
-0004890180 00000 n 
-0004890333 00000 n 
-0004890485 00000 n 
-0004890638 00000 n 
-0004890791 00000 n 
-0004890944 00000 n 
-0004891096 00000 n 
-0004891249 00000 n 
-0004891401 00000 n 
-0004891554 00000 n 
-0004891706 00000 n 
-0004891858 00000 n 
-0004892011 00000 n 
-0004892163 00000 n 
-0004892316 00000 n 
-0004892468 00000 n 
-0004892620 00000 n 
-0004892773 00000 n 
-0004892926 00000 n 
-0004893078 00000 n 
-0004893231 00000 n 
-0004893383 00000 n 
-0004893535 00000 n 
-0004893687 00000 n 
-0004893839 00000 n 
-0004898541 00000 n 
-0004894054 00000 n 
-0004869350 00000 n 
-0004867380 00000 n 
-0004893989 00000 n 
-0004898691 00000 n 
-0004898843 00000 n 
-0004898996 00000 n 
-0004899149 00000 n 
-0004899302 00000 n 
-0004899452 00000 n 
-0004899604 00000 n 
-0004899756 00000 n 
-0004899908 00000 n 
-0004900061 00000 n 
-0004900212 00000 n 
-0004900365 00000 n 
-0004900518 00000 n 
-0004900669 00000 n 
-0004900822 00000 n 
-0004900973 00000 n 
-0004901125 00000 n 
-0004901276 00000 n 
-0004901428 00000 n 
-0004901580 00000 n 
-0004901731 00000 n 
-0004901884 00000 n 
-0004902037 00000 n 
-0004902189 00000 n 
-0004902342 00000 n 
-0004902494 00000 n 
-0004902647 00000 n 
-0004902800 00000 n 
-0004902950 00000 n 
-0004903103 00000 n 
-0004903256 00000 n 
-0004903408 00000 n 
-0004903561 00000 n 
-0004903713 00000 n 
-0004903866 00000 n 
-0004904019 00000 n 
-0004904171 00000 n 
-0004904323 00000 n 
-0004904476 00000 n 
-0004904628 00000 n 
-0004904781 00000 n 
-0004904930 00000 n 
-0004905080 00000 n 
-0004905231 00000 n 
-0004905382 00000 n 
-0004905532 00000 n 
-0004905684 00000 n 
-0004905836 00000 n 
-0004905988 00000 n 
-0004906140 00000 n 
-0004906292 00000 n 
-0004906444 00000 n 
-0004906596 00000 n 
-0004906749 00000 n 
-0004906902 00000 n 
-0004907054 00000 n 
-0004907207 00000 n 
-0004907359 00000 n 
-0004907512 00000 n 
-0004907665 00000 n 
-0004907817 00000 n 
-0004907969 00000 n 
-0004908122 00000 n 
-0004908274 00000 n 
-0004908426 00000 n 
-0004908578 00000 n 
-0004908731 00000 n 
-0004908882 00000 n 
-0004909035 00000 n 
-0004909187 00000 n 
-0004909339 00000 n 
-0004909491 00000 n 
-0004909644 00000 n 
-0004909795 00000 n 
-0004909946 00000 n 
-0004910099 00000 n 
-0004910252 00000 n 
-0004910404 00000 n 
-0004910556 00000 n 
-0004910709 00000 n 
-0004910862 00000 n 
-0004911015 00000 n 
-0004911168 00000 n 
-0004911320 00000 n 
-0004911472 00000 n 
-0004911625 00000 n 
-0004911778 00000 n 
-0004911931 00000 n 
-0004912084 00000 n 
-0004912237 00000 n 
-0004912389 00000 n 
-0004912540 00000 n 
-0004912690 00000 n 
-0004912841 00000 n 
-0004912993 00000 n 
-0004913145 00000 n 
-0004913298 00000 n 
-0004913450 00000 n 
-0004913603 00000 n 
-0004913755 00000 n 
-0004913907 00000 n 
-0004914058 00000 n 
-0004914210 00000 n 
-0004914359 00000 n 
-0004914508 00000 n 
-0004914657 00000 n 
-0004914807 00000 n 
-0004914960 00000 n 
-0004915113 00000 n 
-0004915265 00000 n 
-0004915418 00000 n 
-0004915571 00000 n 
-0004915724 00000 n 
-0004915876 00000 n 
-0004916029 00000 n 
-0004916182 00000 n 
-0004916334 00000 n 
-0004916487 00000 n 
-0004916639 00000 n 
-0004916791 00000 n 
-0004916943 00000 n 
-0004917095 00000 n 
-0004917248 00000 n 
-0004917401 00000 n 
-0004917553 00000 n 
-0004917705 00000 n 
-0004917858 00000 n 
-0004918011 00000 n 
-0004918164 00000 n 
-0004918317 00000 n 
-0004918470 00000 n 
-0004918623 00000 n 
-0004918776 00000 n 
-0004918928 00000 n 
-0004919080 00000 n 
-0004919232 00000 n 
-0004919384 00000 n 
-0004919537 00000 n 
-0004919688 00000 n 
-0004919838 00000 n 
-0004919991 00000 n 
-0004920143 00000 n 
-0004920295 00000 n 
-0004920447 00000 n 
-0004920599 00000 n 
-0004920751 00000 n 
-0004920903 00000 n 
-0004921055 00000 n 
-0004921207 00000 n 
-0004921359 00000 n 
-0004921511 00000 n 
-0004921663 00000 n 
-0004921815 00000 n 
-0004921966 00000 n 
-0004922117 00000 n 
-0004922266 00000 n 
-0004922417 00000 n 
-0004922569 00000 n 
-0004922721 00000 n 
-0004922872 00000 n 
-0004923024 00000 n 
-0004923176 00000 n 
-0004923329 00000 n 
-0004923481 00000 n 
-0004923633 00000 n 
-0004923785 00000 n 
-0004923938 00000 n 
-0004924088 00000 n 
-0004924240 00000 n 
-0004924391 00000 n 
-0004924543 00000 n 
-0004924696 00000 n 
-0004924848 00000 n 
-0004925001 00000 n 
-0004925152 00000 n 
-0004925304 00000 n 
-0004925454 00000 n 
-0004925606 00000 n 
-0004925757 00000 n 
-0004925909 00000 n 
-0004926062 00000 n 
-0004926213 00000 n 
-0004926365 00000 n 
-0004926518 00000 n 
-0004926671 00000 n 
-0004926824 00000 n 
-0004926977 00000 n 
-0004927130 00000 n 
-0004927282 00000 n 
-0004927434 00000 n 
-0004927586 00000 n 
-0004927738 00000 n 
-0004927890 00000 n 
-0004928042 00000 n 
-0004928194 00000 n 
-0004928346 00000 n 
-0004928498 00000 n 
-0004928651 00000 n 
-0004928804 00000 n 
-0004928957 00000 n 
-0004929108 00000 n 
-0004929260 00000 n 
-0004929413 00000 n 
-0004929564 00000 n 
-0004929715 00000 n 
-0004931303 00000 n 
-0004929930 00000 n 
-0004896342 00000 n 
-0004894171 00000 n 
-0004929865 00000 n 
-0004931453 00000 n 
-0004931606 00000 n 
-0004931759 00000 n 
-0004931912 00000 n 
-0004932064 00000 n 
-0004932217 00000 n 
-0004932369 00000 n 
-0004932521 00000 n 
-0004932672 00000 n 
-0004932825 00000 n 
-0004932978 00000 n 
-0004933131 00000 n 
-0004933281 00000 n 
-0004933434 00000 n 
-0004933586 00000 n 
-0004933738 00000 n 
-0004933891 00000 n 
-0004934039 00000 n 
-0004934192 00000 n 
-0004934343 00000 n 
-0004934494 00000 n 
-0004934647 00000 n 
-0004934798 00000 n 
-0004934949 00000 n 
-0004935097 00000 n 
-0004935314 00000 n 
-0004930904 00000 n 
-0004930047 00000 n 
-0004935249 00000 n 
-0004935431 00000 n 
-0005128177 00000 n 
-0004935458 00000 n 
-0004935919 00000 n 
-0004936160 00000 n 
-0004936493 00000 n 
-0004936842 00000 n 
-0004936879 00000 n 
-0004937091 00000 n 
-0004937568 00000 n 
-0004937965 00000 n 
-0004938354 00000 n 
-0004938930 00000 n 
-0004939308 00000 n 
-0004939887 00000 n 
-0004940467 00000 n 
-0004941359 00000 n 
-0004943029 00000 n 
-0004943268 00000 n 
-0004944756 00000 n 
-0004945007 00000 n 
-0004946861 00000 n 
-0004947093 00000 n 
-0004956588 00000 n 
-0004956895 00000 n 
-0004969213 00000 n 
-0004969588 00000 n 
-0004990135 00000 n 
-0004990794 00000 n 
-0005007607 00000 n 
-0005008156 00000 n 
-0005022139 00000 n 
-0005022687 00000 n 
-0005031483 00000 n 
-0005031784 00000 n 
-0005043073 00000 n 
-0005043628 00000 n 
-0005052157 00000 n 
-0005052565 00000 n 
-0005073098 00000 n 
-0005073714 00000 n 
-0005084382 00000 n 
-0005084685 00000 n 
-0005107786 00000 n 
-0005108543 00000 n 
-0005127610 00000 n 
-0005143136 00000 n 
-0005143264 00000 n 
-0005143392 00000 n 
-0005143520 00000 n 
-0005143648 00000 n 
-0005143776 00000 n 
-0005143904 00000 n 
-0005144032 00000 n 
-0005144160 00000 n 
-0005144290 00000 n 
-0005144424 00000 n 
-0005144558 00000 n 
-0005144692 00000 n 
-0005144826 00000 n 
-0005144960 00000 n 
-0005145094 00000 n 
-0005145177 00000 n 
-0005145312 00000 n 
-0005145447 00000 n 
-0005145562 00000 n 
-0005145649 00000 n 
-0005238547 00000 n 
-0005238773 00000 n 
-0005238961 00000 n 
-0005239155 00000 n 
-0005239341 00000 n 
-0005239526 00000 n 
-0005239712 00000 n 
-0005239897 00000 n 
-0005240083 00000 n 
-0005240268 00000 n 
-0005240454 00000 n 
-0005240638 00000 n 
-0005240822 00000 n 
-0005241008 00000 n 
-0005241193 00000 n 
-0005241379 00000 n 
-0005241564 00000 n 
-0005241750 00000 n 
-0005241935 00000 n 
-0005242121 00000 n 
-0005242306 00000 n 
-0005242492 00000 n 
-0005242673 00000 n 
-0005242859 00000 n 
-0005243043 00000 n 
-0005243227 00000 n 
-0005243413 00000 n 
-0005243598 00000 n 
-0005243784 00000 n 
-0005243969 00000 n 
-0005244155 00000 n 
-0005244340 00000 n 
-0005244526 00000 n 
-0005244711 00000 n 
-0005244897 00000 n 
-0005245081 00000 n 
-0005245265 00000 n 
-0005245451 00000 n 
-0005245636 00000 n 
-0005245822 00000 n 
-0005246005 00000 n 
-0005246191 00000 n 
-0005246376 00000 n 
-0005246562 00000 n 
-0005246747 00000 n 
-0005246933 00000 n 
-0005247118 00000 n 
-0005247304 00000 n 
-0005247488 00000 n 
-0005247672 00000 n 
-0005247858 00000 n 
-0005248043 00000 n 
-0005248229 00000 n 
-0005248414 00000 n 
-0005248600 00000 n 
-0005248785 00000 n 
-0005248971 00000 n 
-0005249156 00000 n 
-0005249342 00000 n 
-0005249523 00000 n 
-0005249709 00000 n 
-0005249893 00000 n 
-0005250077 00000 n 
-0005250263 00000 n 
-0005250448 00000 n 
-0005250634 00000 n 
-0005250819 00000 n 
-0005251005 00000 n 
-0005251190 00000 n 
-0005251376 00000 n 
-0005251561 00000 n 
-0005251747 00000 n 
-0005251931 00000 n 
-0005252115 00000 n 
-0005252301 00000 n 
-0005252486 00000 n 
-0005252672 00000 n 
-0005252855 00000 n 
-0005253041 00000 n 
-0005253226 00000 n 
-0005253412 00000 n 
-0005253601 00000 n 
-0005253793 00000 n 
-0005253983 00000 n 
-0005254175 00000 n 
-0005254364 00000 n 
-0005254553 00000 n 
-0005254745 00000 n 
-0005254935 00000 n 
-0005255127 00000 n 
-0005255317 00000 n 
-0005255509 00000 n 
-0005255699 00000 n 
-0005255891 00000 n 
-0005256081 00000 n 
-0005256273 00000 n 
-0005256458 00000 n 
-0005256650 00000 n 
-0005256839 00000 n 
-0005257028 00000 n 
-0005257220 00000 n 
-0005257410 00000 n 
-0005257602 00000 n 
-0005257792 00000 n 
-0005257984 00000 n 
-0005258174 00000 n 
-0005258366 00000 n 
-0005258556 00000 n 
-0005258748 00000 n 
-0005258937 00000 n 
-0005259126 00000 n 
-0005259318 00000 n 
-0005259508 00000 n 
-0005259700 00000 n 
-0005259887 00000 n 
-0005260079 00000 n 
-0005260269 00000 n 
-0005260461 00000 n 
-0005260651 00000 n 
-0005260843 00000 n 
-0005261033 00000 n 
-0005261225 00000 n 
-0005261414 00000 n 
-0005261603 00000 n 
-0005261795 00000 n 
-0005261985 00000 n 
-0005262177 00000 n 
-0005262367 00000 n 
-0005262559 00000 n 
-0005262749 00000 n 
-0005262941 00000 n 
-0005263131 00000 n 
-0005263323 00000 n 
-0005263508 00000 n 
-0005263700 00000 n 
-0005263889 00000 n 
-0005264078 00000 n 
-0005264270 00000 n 
-0005264460 00000 n 
-0005264652 00000 n 
-0005264842 00000 n 
-0005265034 00000 n 
-0005265224 00000 n 
-0005265416 00000 n 
-0005265606 00000 n 
-0005265798 00000 n 
-0005265987 00000 n 
-0005266176 00000 n 
-0005266358 00000 n 
-0005266536 00000 n 
-0005266740 00000 n 
-0005266953 00000 n 
-0005267176 00000 n 
-0005267406 00000 n 
-0005267573 00000 n 
-0005267745 00000 n 
-0005267924 00000 n 
-0005268151 00000 n 
-0005268362 00000 n 
-0005268583 00000 n 
-0005268799 00000 n 
-0005268991 00000 n 
-0005269193 00000 n 
-0005269388 00000 n 
-0005269590 00000 n 
-0005269788 00000 n 
-0005269987 00000 n 
-0005270189 00000 n 
-0005270389 00000 n 
-0005270591 00000 n 
-0005270784 00000 n 
-0005271004 00000 n 
-0005271198 00000 n 
-0005271399 00000 n 
-0005271619 00000 n 
-0005271822 00000 n 
-0005272040 00000 n 
-0005272258 00000 n 
-0005272476 00000 n 
-0005272689 00000 n 
-0005272901 00000 n 
-0005273120 00000 n 
-0005273344 00000 n 
-0005273565 00000 n 
-0005273777 00000 n 
-0005273966 00000 n 
-0005274143 00000 n 
-0005274389 00000 n 
-0005274591 00000 n 
-0005274804 00000 n 
-0005275022 00000 n 
-0005275235 00000 n 
-0005275445 00000 n 
-0005275653 00000 n 
-0005275863 00000 n 
-0005276072 00000 n 
-0005276274 00000 n 
-0005276487 00000 n 
-0005276719 00000 n 
-0005276939 00000 n 
-0005277149 00000 n 
-0005277371 00000 n 
-0005277616 00000 n 
-0005277867 00000 n 
-0005278133 00000 n 
-0005278399 00000 n 
-0005278665 00000 n 
-0005278931 00000 n 
-0005279197 00000 n 
-0005279463 00000 n 
-0005279729 00000 n 
-0005279995 00000 n 
-0005280261 00000 n 
-0005280527 00000 n 
-0005280793 00000 n 
-0005281059 00000 n 
-0005281325 00000 n 
-0005281591 00000 n 
-0005281857 00000 n 
-0005282123 00000 n 
-0005282389 00000 n 
-0005282655 00000 n 
-0005282921 00000 n 
-0005283187 00000 n 
-0005283453 00000 n 
-0005283719 00000 n 
-0005283985 00000 n 
-0005284251 00000 n 
-0005284517 00000 n 
-0005284783 00000 n 
-0005285049 00000 n 
-0005285315 00000 n 
-0005285581 00000 n 
-0005285847 00000 n 
-0005286113 00000 n 
-0005286379 00000 n 
-0005286645 00000 n 
-0005286911 00000 n 
-0005287177 00000 n 
-0005287443 00000 n 
-0005287709 00000 n 
-0005287975 00000 n 
-0005288241 00000 n 
-0005288499 00000 n 
-0005288749 00000 n 
-0005288999 00000 n 
-0005289249 00000 n 
-0005289499 00000 n 
-0005289749 00000 n 
-0005289999 00000 n 
-0005290261 00000 n 
-0005290527 00000 n 
-0005290793 00000 n 
-0005291059 00000 n 
-0005291325 00000 n 
-0005291591 00000 n 
-0005291857 00000 n 
-0005292123 00000 n 
-0005292389 00000 n 
-0005292655 00000 n 
-0005292923 00000 n 
-0005293195 00000 n 
-0005293467 00000 n 
-0005293739 00000 n 
-0005294011 00000 n 
-0005294283 00000 n 
-0005294555 00000 n 
-0005294827 00000 n 
-0005295099 00000 n 
-0005295371 00000 n 
-0005295643 00000 n 
-0005295915 00000 n 
-0005296187 00000 n 
-0005296459 00000 n 
-0005296731 00000 n 
-0005297003 00000 n 
-0005297275 00000 n 
-0005297547 00000 n 
-0005297819 00000 n 
-0005298091 00000 n 
-0005298363 00000 n 
-0005298635 00000 n 
-0005298907 00000 n 
-0005299179 00000 n 
-0005299446 00000 n 
-0005299696 00000 n 
-0005299954 00000 n 
-0005300226 00000 n 
-0005300498 00000 n 
-0005300770 00000 n 
-0005301042 00000 n 
-0005301303 00000 n 
-0005301558 00000 n 
-0005301830 00000 n 
-0005302102 00000 n 
-0005302374 00000 n 
-0005302646 00000 n 
-0005302918 00000 n 
-0005303190 00000 n 
-0005303462 00000 n 
-0005303734 00000 n 
-0005304006 00000 n 
-0005304267 00000 n 
-0005304518 00000 n 
-0005304768 00000 n 
-0005305018 00000 n 
-0005305268 00000 n 
-0005305524 00000 n 
-0005305769 00000 n 
-0005306008 00000 n 
-0005306260 00000 n 
-0005306510 00000 n 
-0005306762 00000 n 
-0005307020 00000 n 
-0005307270 00000 n 
-0005307524 00000 n 
-0005307782 00000 n 
-0005308039 00000 n 
-0005308294 00000 n 
-0005308544 00000 n 
-0005308794 00000 n 
-0005309043 00000 n 
-0005309293 00000 n 
-0005309543 00000 n 
-0005309793 00000 n 
-0005310042 00000 n 
-0005310292 00000 n 
-0005310542 00000 n 
-0005310797 00000 n 
-0005311055 00000 n 
-0005311307 00000 n 
-0005311559 00000 n 
-0005311817 00000 n 
-0005312074 00000 n 
-0005312324 00000 n 
-0005312577 00000 n 
-0005312835 00000 n 
-0005313092 00000 n 
-0005313346 00000 n 
-0005313596 00000 n 
-0005313846 00000 n 
-0005314096 00000 n 
-0005314346 00000 n 
-0005314596 00000 n 
-0005314846 00000 n 
-0005315098 00000 n 
-0005315356 00000 n 
-0005315613 00000 n 
-0005315866 00000 n 
-0005316119 00000 n 
-0005316377 00000 n 
-0005316634 00000 n 
-0005316886 00000 n 
-0005317140 00000 n 
-0005317392 00000 n 
-0005317639 00000 n 
-0005317881 00000 n 
-0005318134 00000 n 
-0005318390 00000 n 
-0005318640 00000 n 
-0005318890 00000 n 
-0005319140 00000 n 
-0005319393 00000 n 
-0005319645 00000 n 
-0005319903 00000 n 
-0005320160 00000 n 
-0005320410 00000 n 
-0005320663 00000 n 
-0005320921 00000 n 
-0005321178 00000 n 
-0005321436 00000 n 
-0005321693 00000 n 
-0005321951 00000 n 
-0005322207 00000 n 
-0005322463 00000 n 
-0005322721 00000 n 
-0005322971 00000 n 
-0005323221 00000 n 
-0005323474 00000 n 
-0005323728 00000 n 
-0005323978 00000 n 
-0005324236 00000 n 
-0005324493 00000 n 
-0005324751 00000 n 
-0005325004 00000 n 
-0005325254 00000 n 
-0005325509 00000 n 
-0005325761 00000 n 
-0005326014 00000 n 
-0005326272 00000 n 
-0005326529 00000 n 
-0005326779 00000 n 
-0005327029 00000 n 
-0005327283 00000 n 
-0005327537 00000 n 
-0005327787 00000 n 
-0005328042 00000 n 
-0005328292 00000 n 
-0005328543 00000 n 
-0005328793 00000 n 
-0005329045 00000 n 
-0005329295 00000 n 
-0005329547 00000 n 
-0005329797 00000 n 
-0005330049 00000 n 
-0005330299 00000 n 
-0005330549 00000 n 
-0005330801 00000 n 
-0005331051 00000 n 
-0005331301 00000 n 
-0005331551 00000 n 
-0005331801 00000 n 
-0005332051 00000 n 
-0005332301 00000 n 
-0005332551 00000 n 
-0005332801 00000 n 
-0005333051 00000 n 
-0005333301 00000 n 
-0005333551 00000 n 
-0005333801 00000 n 
-0005334051 00000 n 
-0005334293 00000 n 
-0005334544 00000 n 
-0005334802 00000 n 
-0005335054 00000 n 
-0005335304 00000 n 
-0005335554 00000 n 
-0005335804 00000 n 
-0005336056 00000 n 
-0005336314 00000 n 
-0005336571 00000 n 
-0005336829 00000 n 
-0005337084 00000 n 
-0005337334 00000 n 
-0005337584 00000 n 
-0005337833 00000 n 
-0005338075 00000 n 
-0005338322 00000 n 
-0005338572 00000 n 
-0005338822 00000 n 
-0005339072 00000 n 
-0005339321 00000 n 
-0005339569 00000 n 
-0005339811 00000 n 
-0005340059 00000 n 
-0005340309 00000 n 
-0005340559 00000 n 
-0005340809 00000 n 
-0005341059 00000 n 
-0005341309 00000 n 
-0005341558 00000 n 
-0005341809 00000 n 
-0005342059 00000 n 
-0005342309 00000 n 
-0005342559 00000 n 
-0005342809 00000 n 
-0005343058 00000 n 
-0005343308 00000 n 
-0005343558 00000 n 
-0005343807 00000 n 
-0005344057 00000 n 
-0005344305 00000 n 
-0005344552 00000 n 
-0005344796 00000 n 
-0005345046 00000 n 
-0005345296 00000 n 
-0005345546 00000 n 
-0005345796 00000 n 
-0005346046 00000 n 
-0005346296 00000 n 
-0005346550 00000 n 
-0005346800 00000 n 
-0005347054 00000 n 
-0005347310 00000 n 
-0005347560 00000 n 
-0005347810 00000 n 
-0005348064 00000 n 
-0005348319 00000 n 
-0005348569 00000 n 
-0005348825 00000 n 
-0005349080 00000 n 
-0005349330 00000 n 
-0005349582 00000 n 
-0005349832 00000 n 
-0005350082 00000 n 
-0005350334 00000 n 
-0005350584 00000 n 
-0005350838 00000 n 
-0005351088 00000 n 
-0005351338 00000 n 
-0005351588 00000 n 
-0005351844 00000 n 
-0005352100 00000 n 
-0005352355 00000 n 
-0005352605 00000 n 
-0005352863 00000 n 
-0005353120 00000 n 
-0005353378 00000 n 
-0005353633 00000 n 
-0005353883 00000 n 
-0005354133 00000 n 
-0005354389 00000 n 
-0005354641 00000 n 
-0005354891 00000 n 
-0005355137 00000 n 
-0005355383 00000 n 
-0005355633 00000 n 
-0005355886 00000 n 
-0005356138 00000 n 
-0005356388 00000 n 
-0005356638 00000 n 
-0005356888 00000 n 
-0005357138 00000 n 
-0005357388 00000 n 
-0005357638 00000 n 
-0005357888 00000 n 
-0005358138 00000 n 
-0005358388 00000 n 
-0005358633 00000 n 
-0005358875 00000 n 
-0005359125 00000 n 
-0005359375 00000 n 
-0005359625 00000 n 
-0005359874 00000 n 
-0005360124 00000 n 
-0005360373 00000 n 
-0005360617 00000 n 
-0005360864 00000 n 
-0005361114 00000 n 
-0005361364 00000 n 
-0005361614 00000 n 
-0005361864 00000 n 
-0005362114 00000 n 
-0005362370 00000 n 
-0005362626 00000 n 
-0005362884 00000 n 
-0005363141 00000 n 
-0005363396 00000 n 
-0005363646 00000 n 
-0005363896 00000 n 
-0005364146 00000 n 
-0005364400 00000 n 
-0005364658 00000 n 
-0005364915 00000 n 
-0005365169 00000 n 
-0005365419 00000 n 
-0005365675 00000 n 
-0005365931 00000 n 
-0005366189 00000 n 
-0005366443 00000 n 
-0005366693 00000 n 
-0005366949 00000 n 
-0005367199 00000 n 
-0005367449 00000 n 
-0005367702 00000 n 
-0005367960 00000 n 
-0005368217 00000 n 
-0005368473 00000 n 
-0005368723 00000 n 
-0005368976 00000 n 
-0005369226 00000 n 
-0005369482 00000 n 
-0005369738 00000 n 
-0005369996 00000 n 
-0005370253 00000 n 
-0005370503 00000 n 
-0005370759 00000 n 
-0005371015 00000 n 
-0005371273 00000 n 
-0005371530 00000 n 
-0005371788 00000 n 
-0005372038 00000 n 
-0005372294 00000 n 
-0005372548 00000 n 
-0005372798 00000 n 
-0005373056 00000 n 
-0005373313 00000 n 
-0005373571 00000 n 
-0005373828 00000 n 
-0005374084 00000 n 
-0005374334 00000 n 
-0005374589 00000 n 
-0005374845 00000 n 
-0005375095 00000 n 
-0005375345 00000 n 
-0005375595 00000 n 
-0005375849 00000 n 
-0005376107 00000 n 
-0005376360 00000 n 
-0005376610 00000 n 
-0005376860 00000 n 
-0005377110 00000 n 
-0005377360 00000 n 
-0005377610 00000 n 
-0005377860 00000 n 
-0005378118 00000 n 
-0005378375 00000 n 
-0005378633 00000 n 
-0005378890 00000 n 
-0005379148 00000 n 
-0005379405 00000 n 
-0005379663 00000 n 
-0005379920 00000 n 
-0005380175 00000 n 
-0005380429 00000 n 
-0005380687 00000 n 
-0005380944 00000 n 
-0005381199 00000 n 
-0005381449 00000 n 
-0005381704 00000 n 
-0005381954 00000 n 
-0005382204 00000 n 
-0005382454 00000 n 
-0005382708 00000 n 
-0005382958 00000 n 
-0005383216 00000 n 
-0005383473 00000 n 
-0005383727 00000 n 
-0005383977 00000 n 
-0005384221 00000 n 
-0005384463 00000 n 
-0005384713 00000 n 
-0005384969 00000 n 
-0005385233 00000 n 
-0005385496 00000 n 
-0005385752 00000 n 
-0005386008 00000 n 
-0005386264 00000 n 
-0005386520 00000 n 
-0005386780 00000 n 
-0005387044 00000 n 
-0005387307 00000 n 
-0005387571 00000 n 
-0005387833 00000 n 
-0005388095 00000 n 
-0005388359 00000 n 
-0005388622 00000 n 
-0005388886 00000 n 
-0005389147 00000 n 
-0005389403 00000 n 
-0005389659 00000 n 
-0005389915 00000 n 
-0005390174 00000 n 
-0005390438 00000 n 
-0005390701 00000 n 
-0005390960 00000 n 
-0005391212 00000 n 
-0005391462 00000 n 
-0005391711 00000 n 
-0005391958 00000 n 
-0005392200 00000 n 
-0005392450 00000 n 
-0005392699 00000 n 
-0005392949 00000 n 
-0005393198 00000 n 
-0005393444 00000 n 
-0005393693 00000 n 
-0005393949 00000 n 
-0005394205 00000 n 
-0005394466 00000 n 
-0005394722 00000 n 
-0005394978 00000 n 
-0005395234 00000 n 
-0005395490 00000 n 
-0005395751 00000 n 
-0005396015 00000 n 
-0005396271 00000 n 
-0005396527 00000 n 
-0005396783 00000 n 
-0005397039 00000 n 
-0005397295 00000 n 
-0005397551 00000 n 
-0005397807 00000 n 
-0005398063 00000 n 
-0005398327 00000 n 
-0005398590 00000 n 
-0005398854 00000 n 
-0005399117 00000 n 
-0005399381 00000 n 
-0005399644 00000 n 
-0005399908 00000 n 
-0005400171 00000 n 
-0005400435 00000 n 
-0005400697 00000 n 
-0005400959 00000 n 
-0005401223 00000 n 
-0005401483 00000 n 
-0005401739 00000 n 
-0005401995 00000 n 
-0005402251 00000 n 
-0005402502 00000 n 
-0005402752 00000 n 
-0005403001 00000 n 
-0005403251 00000 n 
-0005403499 00000 n 
-0005403741 00000 n 
-0005404001 00000 n 
-0005404257 00000 n 
-0005404513 00000 n 
-0005404769 00000 n 
-0005405026 00000 n 
-0005405282 00000 n 
-0005405544 00000 n 
-0005405806 00000 n 
-0005406064 00000 n 
-0005406322 00000 n 
-0005406586 00000 n 
-0005406847 00000 n 
-0005407103 00000 n 
-0005407365 00000 n 
-0005407627 00000 n 
-0005407891 00000 n 
-0005408154 00000 n 
-0005408418 00000 n 
-0005408681 00000 n 
-0005408943 00000 n 
-0005409199 00000 n 
-0005409452 00000 n 
-0005409708 00000 n 
-0005409965 00000 n 
-0005410221 00000 n 
-0005410477 00000 n 
-0005410741 00000 n 
-0005411004 00000 n 
-0005411268 00000 n 
-0005411531 00000 n 
-0005411795 00000 n 
-0005412058 00000 n 
-0005412322 00000 n 
-0005412585 00000 n 
-0005412849 00000 n 
-0005413107 00000 n 
-0005413371 00000 n 
-0005413631 00000 n 
-0005413887 00000 n 
-0005414148 00000 n 
-0005414412 00000 n 
-0005414674 00000 n 
-0005414936 00000 n 
-0005415200 00000 n 
-0005415463 00000 n 
-0005415727 00000 n 
-0005415990 00000 n 
-0005416254 00000 n 
-0005416517 00000 n 
-0005416781 00000 n 
-0005417042 00000 n 
-0005417298 00000 n 
-0005417556 00000 n 
-0005417812 00000 n 
-0005418068 00000 n 
-0005418324 00000 n 
-0005418580 00000 n 
-0005418836 00000 n 
-0005419092 00000 n 
-0005419348 00000 n 
-0005419600 00000 n 
-0005419850 00000 n 
-0005420099 00000 n 
-0005420346 00000 n 
-0005420591 00000 n 
-0005420847 00000 n 
-0005421103 00000 n 
-0005421365 00000 n 
-0005421621 00000 n 
-0005421880 00000 n 
-0005422136 00000 n 
-0005422392 00000 n 
-0005422648 00000 n 
-0005422904 00000 n 
-0005423162 00000 n 
-0005423418 00000 n 
-0005423675 00000 n 
-0005423933 00000 n 
-0005424190 00000 n 
-0005424446 00000 n 
-0005424704 00000 n 
-0005424960 00000 n 
-0005425216 00000 n 
-0005425476 00000 n 
-0005425740 00000 n 
-0005425998 00000 n 
-0005426254 00000 n 
-0005426513 00000 n 
-0005426777 00000 n 
-0005427037 00000 n 
-0005427293 00000 n 
-0005427557 00000 n 
-0005427820 00000 n 
-0005428084 00000 n 
-0005428347 00000 n 
-0005428611 00000 n 
-0005428874 00000 n 
-0005429138 00000 n 
-0005429401 00000 n 
-0005429665 00000 n 
-0005429927 00000 n 
-0005430189 00000 n 
-0005430453 00000 n 
-0005430707 00000 n 
-0005430962 00000 n 
-0005431226 00000 n 
-0005431489 00000 n 
-0005431748 00000 n 
-0005432004 00000 n 
-0005432260 00000 n 
-0005432516 00000 n 
-0005432772 00000 n 
-0005433033 00000 n 
-0005433297 00000 n 
-0005433559 00000 n 
-0005433820 00000 n 
-0005434076 00000 n 
-0005434335 00000 n 
-0005434593 00000 n 
-0005434857 00000 n 
-0005435120 00000 n 
-0005435380 00000 n 
-0005435634 00000 n 
-0005435898 00000 n 
-0005436161 00000 n 
-0005436422 00000 n 
-0005436678 00000 n 
-0005436934 00000 n 
-0005437190 00000 n 
-0005437448 00000 n 
-0005437708 00000 n 
-0005437964 00000 n 
-0005438220 00000 n 
-0005438471 00000 n 
-0005438732 00000 n 
-0005438996 00000 n 
-0005439258 00000 n 
-0005439520 00000 n 
-0005439778 00000 n 
-0005440037 00000 n 
-0005440298 00000 n 
-0005440554 00000 n 
-0005440810 00000 n 
-0005441066 00000 n 
-0005441322 00000 n 
-0005441574 00000 n 
-0005441830 00000 n 
-0005442081 00000 n 
-0005442337 00000 n 
-0005442593 00000 n 
-0005442845 00000 n 
-0005443101 00000 n 
-0005443359 00000 n 
-0005443618 00000 n 
-0005443876 00000 n 
-0005444135 00000 n 
-0005444391 00000 n 
-0005444645 00000 n 
-0005444901 00000 n 
-0005445157 00000 n 
-0005445418 00000 n 
-0005445682 00000 n 
-0005445944 00000 n 
-0005446204 00000 n 
-0005446462 00000 n 
-0005446726 00000 n 
-0005446989 00000 n 
-0005447253 00000 n 
-0005447509 00000 n 
-0005447770 00000 n 
-0005448034 00000 n 
-0005448296 00000 n 
-0005448558 00000 n 
-0005448822 00000 n 
-0005449085 00000 n 
-0005449343 00000 n 
-0005449599 00000 n 
-0005449855 00000 n 
-0005450105 00000 n 
-0005450361 00000 n 
-0005450617 00000 n 
-0005450881 00000 n 
-0005451144 00000 n 
-0005451408 00000 n 
-0005451671 00000 n 
-0005451930 00000 n 
-0005452190 00000 n 
-0005452454 00000 n 
-0005452717 00000 n 
-0005452981 00000 n 
-0005453243 00000 n 
-0005453505 00000 n 
-0005453769 00000 n 
-0005454032 00000 n 
-0005454296 00000 n 
-0005454559 00000 n 
-0005454823 00000 n 
-0005455086 00000 n 
-0005455343 00000 n 
-0005455599 00000 n 
-0005455856 00000 n 
-0005456114 00000 n 
-0005456378 00000 n 
-0005456636 00000 n 
-0005456895 00000 n 
-0005457154 00000 n 
-0005457412 00000 n 
-0005457676 00000 n 
-0005457937 00000 n 
-0005458193 00000 n 
-0005458448 00000 n 
-0005458708 00000 n 
-0005458964 00000 n 
-0005459213 00000 n 
-0005459463 00000 n 
-0005459712 00000 n 
-0005459958 00000 n 
-0005460200 00000 n 
-0005460442 00000 n 
-0005460682 00000 n 
-0005460926 00000 n 
-0005461168 00000 n 
-0005461412 00000 n 
-0005461658 00000 n 
-0005461900 00000 n 
-0005462142 00000 n 
-0005462383 00000 n 
-0005462625 00000 n 
-0005462866 00000 n 
-0005463109 00000 n 
-0005463351 00000 n 
-0005463596 00000 n 
-0005463838 00000 n 
-0005464080 00000 n 
-0005464295 00000 n 
-0005464495 00000 n 
-0005464701 00000 n 
-0005464926 00000 n 
-0005465117 00000 n 
-0005465303 00000 n 
-0005465488 00000 n 
-0005465674 00000 n 
-0005465859 00000 n 
-0005466045 00000 n 
-0005466229 00000 n 
-0005466413 00000 n 
-0005466599 00000 n 
-0005466784 00000 n 
-0005466970 00000 n 
-0005467155 00000 n 
-0005467341 00000 n 
-0005467526 00000 n 
-0005467712 00000 n 
-0005467897 00000 n 
-0005468083 00000 n 
-0005468267 00000 n 
-0005468449 00000 n 
-0005468633 00000 n 
-0005468817 00000 n 
-0005469003 00000 n 
-0005469188 00000 n 
-0005469374 00000 n 
-0005469559 00000 n 
-0005469745 00000 n 
-0005469930 00000 n 
-0005470116 00000 n 
-0005470301 00000 n 
-0005470487 00000 n 
-0005470671 00000 n 
-0005470857 00000 n 
-0005471049 00000 n 
-0005471239 00000 n 
-0005471431 00000 n 
-0005471621 00000 n 
-0005471813 00000 n 
-0005472000 00000 n 
-0005472192 00000 n 
-0005472382 00000 n 
-0005472574 00000 n 
-0005472764 00000 n 
-0005472956 00000 n 
-0005473145 00000 n 
-0005473334 00000 n 
-0005473526 00000 n 
-0005473716 00000 n 
-0005473908 00000 n 
-0005474098 00000 n 
-0005474290 00000 n 
-0005474480 00000 n 
-0005474672 00000 n 
-0005474862 00000 n 
-0005475054 00000 n 
-0005475243 00000 n 
-0005475430 00000 n 
-0005475619 00000 n 
-0005475808 00000 n 
-0005476000 00000 n 
-0005476190 00000 n 
-0005476382 00000 n 
-0005476572 00000 n 
-0005476764 00000 n 
-0005476954 00000 n 
-0005477146 00000 n 
-0005477336 00000 n 
-0005477528 00000 n 
-0005477717 00000 n 
-0005477906 00000 n 
-0005478098 00000 n 
-0005478288 00000 n 
-0005478480 00000 n 
-0005478670 00000 n 
-0005478862 00000 n 
-0005479049 00000 n 
-0005479227 00000 n 
-0005479404 00000 n 
-0005479582 00000 n 
-0005479759 00000 n 
-0005479937 00000 n 
-0005480114 00000 n 
-0005480292 00000 n 
-0005480468 00000 n 
-0005480644 00000 n 
-0005480822 00000 n 
-0005481008 00000 n 
-0005481198 00000 n 
-0005481384 00000 n 
-0005481578 00000 n 
-0005481780 00000 n 
-0005481986 00000 n 
-0005482229 00000 n 
-0005482506 00000 n 
-0005482757 00000 n 
-0005482925 00000 n 
-0005483140 00000 n 
-0005483359 00000 n 
-0005483553 00000 n 
-0005483819 00000 n 
-0005484052 00000 n 
-0005484259 00000 n 
-0005484460 00000 n 
-0005484672 00000 n 
-0005484884 00000 n 
-0005485099 00000 n 
-0005485320 00000 n 
-0005485538 00000 n 
-0005485756 00000 n 
-0005485974 00000 n 
-0005486192 00000 n 
-0005486410 00000 n 
-0005486624 00000 n 
-0005486837 00000 n 
-0005487060 00000 n 
-0005487278 00000 n 
-0005487502 00000 n 
-0005487726 00000 n 
-0005487946 00000 n 
-0005488164 00000 n 
-0005488382 00000 n 
-0005488600 00000 n 
-0005488818 00000 n 
-0005489036 00000 n 
-0005489254 00000 n 
-0005489461 00000 n 
-0005489679 00000 n 
-0005489897 00000 n 
-0005490115 00000 n 
-0005490333 00000 n 
-0005490540 00000 n 
-0005490753 00000 n 
-0005490971 00000 n 
-0005491189 00000 n 
-0005491407 00000 n 
-0005491628 00000 n 
-0005491848 00000 n 
-0005492066 00000 n 
-0005492281 00000 n 
-0005492485 00000 n 
-0005492689 00000 n 
-0005492893 00000 n 
-0005493104 00000 n 
-0005493293 00000 n 
-0005493531 00000 n 
-0005493769 00000 n 
-0005494012 00000 n 
-0005494264 00000 n 
-0005494516 00000 n 
-0005494768 00000 n 
-0005495020 00000 n 
-0005495272 00000 n 
-0005495524 00000 n 
-0005495776 00000 n 
-0005496033 00000 n 
-0005496290 00000 n 
-0005496548 00000 n 
-0005496806 00000 n 
-0005497064 00000 n 
-0005497322 00000 n 
-0005497580 00000 n 
-0005497838 00000 n 
-0005498096 00000 n 
-0005498354 00000 n 
-0005498612 00000 n 
-0005498866 00000 n 
-0005499121 00000 n 
-0005499379 00000 n 
-0005499637 00000 n 
-0005499895 00000 n 
-0005500153 00000 n 
-0005500416 00000 n 
-0005500690 00000 n 
-0005500956 00000 n 
-0005501222 00000 n 
-0005501488 00000 n 
-0005501754 00000 n 
-0005502020 00000 n 
-0005502292 00000 n 
-0005502564 00000 n 
-0005502832 00000 n 
-0005503093 00000 n 
-0005503351 00000 n 
-0005503609 00000 n 
-0005503873 00000 n 
-0005504137 00000 n 
-0005504395 00000 n 
-0005504653 00000 n 
-0005504911 00000 n 
-0005505169 00000 n 
-0005505427 00000 n 
-0005505685 00000 n 
-0005505943 00000 n 
-0005506201 00000 n 
-0005506459 00000 n 
-0005506717 00000 n 
-0005506975 00000 n 
-0005507233 00000 n 
-0005507491 00000 n 
-0005507746 00000 n 
-0005507990 00000 n 
-0005508241 00000 n 
-0005508499 00000 n 
-0005508757 00000 n 
-0005509015 00000 n 
-0005509273 00000 n 
-0005509531 00000 n 
-0005509789 00000 n 
-0005510042 00000 n 
-0005510286 00000 n 
-0005510537 00000 n 
-0005510795 00000 n 
-0005511053 00000 n 
-0005511311 00000 n 
-0005511560 00000 n 
-0005511804 00000 n 
-0005512048 00000 n 
-0005512292 00000 n 
-0005512536 00000 n 
-0005512780 00000 n 
-0005513058 00000 n 
-0005513352 00000 n 
-0005513644 00000 n 
-0005513937 00000 n 
-0005514235 00000 n 
-0005514533 00000 n 
-0005514831 00000 n 
-0005515129 00000 n 
-0005515422 00000 n 
-0005515709 00000 n 
-0005516007 00000 n 
-0005516305 00000 n 
-0005516608 00000 n 
-0005516911 00000 n 
-0005517209 00000 n 
-0005517507 00000 n 
-0005517805 00000 n 
-0005518103 00000 n 
-0005518401 00000 n 
-0005518688 00000 n 
-0005518986 00000 n 
-0005519284 00000 n 
-0005519582 00000 n 
-0005519877 00000 n 
-0005520170 00000 n 
-0005520461 00000 n 
-0005520745 00000 n 
-0005520966 00000 n 
-0005521168 00000 n 
-0005521370 00000 n 
-0005521572 00000 n 
-0005521774 00000 n 
-0005521973 00000 n 
-0005522170 00000 n 
-0005522378 00000 n 
-0005522584 00000 n 
-0005522785 00000 n 
-0005522970 00000 n 
-0005523092 00000 n 
-0005523223 00000 n 
-0005523347 00000 n 
-0005523472 00000 n 
-0005523597 00000 n 
-0005523722 00000 n 
-0005523846 00000 n 
-0005523971 00000 n 
-0005524096 00000 n 
-0005524221 00000 n 
-0005524346 00000 n 
-0005524470 00000 n 
-0005524595 00000 n 
-0005524720 00000 n 
-0005524845 00000 n 
-0005524969 00000 n 
-0005525094 00000 n 
-0005525219 00000 n 
-0005525344 00000 n 
-0005525468 00000 n 
-0005525593 00000 n 
-0005525718 00000 n 
-0005525843 00000 n 
-0005525966 00000 n 
-0005526091 00000 n 
-0005526220 00000 n 
-0005526349 00000 n 
-0005526475 00000 n 
-0005526604 00000 n 
-0005526743 00000 n 
-0005526871 00000 n 
-0005527000 00000 n 
-0005527141 00000 n 
-0005527275 00000 n 
-0005527414 00000 n 
-0005527559 00000 n 
-0005527704 00000 n 
-0005527849 00000 n 
-0005527994 00000 n 
-0005528139 00000 n 
-0005528284 00000 n 
-0005528427 00000 n 
-0005528570 00000 n 
-0005528715 00000 n 
-0005528860 00000 n 
-0005529005 00000 n 
-0005529150 00000 n 
-0005529295 00000 n 
-0005529440 00000 n 
-0005529585 00000 n 
-0005529730 00000 n 
-0005529873 00000 n 
-0005530015 00000 n 
-0005530157 00000 n 
-0005530298 00000 n 
-0005530439 00000 n 
-0005530581 00000 n 
-0005530723 00000 n 
-0005530864 00000 n 
-0005531005 00000 n 
-0005531146 00000 n 
-0005531287 00000 n 
-0005531429 00000 n 
-0005531571 00000 n 
-0005531713 00000 n 
-0005531855 00000 n 
-0005531997 00000 n 
-0005532138 00000 n 
-0005532279 00000 n 
-0005532420 00000 n 
-0005532561 00000 n 
-0005532702 00000 n 
-0005532843 00000 n 
-0005532984 00000 n 
-0005533125 00000 n 
-0005533266 00000 n 
-0005533407 00000 n 
-0005533547 00000 n 
-0005533687 00000 n 
-0005533828 00000 n 
-0005533969 00000 n 
-0005534110 00000 n 
-0005534252 00000 n 
-0005534394 00000 n 
-0005534533 00000 n 
-0005534672 00000 n 
-0005534813 00000 n 
-0005534954 00000 n 
-0005535095 00000 n 
-0005535236 00000 n 
-0005535378 00000 n 
-0005535520 00000 n 
-0005535662 00000 n 
-0005535803 00000 n 
-0005535945 00000 n 
-0005536087 00000 n 
-0005536229 00000 n 
-0005536371 00000 n 
-0005536512 00000 n 
-0005536653 00000 n 
-0005536796 00000 n 
-0005536939 00000 n 
-0005537081 00000 n 
-0005537223 00000 n 
-0005537365 00000 n 
-0005537507 00000 n 
-0005537650 00000 n 
-0005537793 00000 n 
-0005537935 00000 n 
-0005538076 00000 n 
-0005538217 00000 n 
-0005538358 00000 n 
-0005538499 00000 n 
-0005538641 00000 n 
-0005538783 00000 n 
-0005538925 00000 n 
-0005539066 00000 n 
-0005539208 00000 n 
-0005539350 00000 n 
-0005539492 00000 n 
-0005539634 00000 n 
-0005539776 00000 n 
-0005539919 00000 n 
-0005540061 00000 n 
-0005540204 00000 n 
-0005540346 00000 n 
-0005540487 00000 n 
-0005540628 00000 n 
-0005540770 00000 n 
-0005540911 00000 n 
-0005541053 00000 n 
-0005541195 00000 n 
-0005541338 00000 n 
-0005541481 00000 n 
-0005541623 00000 n 
-0005541765 00000 n 
-0005541908 00000 n 
-0005542050 00000 n 
-0005542191 00000 n 
-0005542331 00000 n 
-0005542472 00000 n 
-0005542613 00000 n 
-0005542754 00000 n 
-0005542896 00000 n 
-0005543038 00000 n 
-0005543180 00000 n 
-0005543322 00000 n 
-0005543465 00000 n 
-0005543608 00000 n 
-0005543750 00000 n 
-0005543892 00000 n 
-0005544035 00000 n 
-0005544176 00000 n 
-0005544316 00000 n 
-0005544456 00000 n 
-0005544584 00000 n 
-0005544711 00000 n 
-0005544836 00000 n 
-0005544961 00000 n 
-0005545085 00000 n 
-0005545210 00000 n 
-0005545335 00000 n 
-0005545460 00000 n 
-0005545584 00000 n 
-0005545709 00000 n 
-0005545834 00000 n 
-0005545959 00000 n 
-0005546083 00000 n 
-0005546208 00000 n 
-0005546331 00000 n 
-0005546457 00000 n 
-0005546593 00000 n 
-0005546737 00000 n 
-0005546876 00000 n 
-0005547010 00000 n 
-0005547143 00000 n 
-0005547277 00000 n 
-0005547410 00000 n 
-0005547544 00000 n 
-0005547677 00000 n 
-0005547817 00000 n 
-0005547960 00000 n 
-0005548103 00000 n 
-0005548245 00000 n 
-0005548389 00000 n 
-0005548535 00000 n 
-0005548679 00000 n 
-0005548822 00000 n 
-0005548965 00000 n 
-0005549108 00000 n 
-0005549251 00000 n 
-0005549394 00000 n 
-0005549536 00000 n 
-0005549683 00000 n 
-0005549836 00000 n 
-0005549989 00000 n 
-0005550141 00000 n 
-0005550281 00000 n 
-0005550407 00000 n 
-0005550501 00000 n 
-0005550631 00000 n 
-0005550756 00000 n 
-0005550881 00000 n 
-0005551005 00000 n 
-0005551134 00000 n 
-0005551273 00000 n 
-0005551418 00000 n 
-0005551563 00000 n 
-0005551706 00000 n 
-0005551847 00000 n 
-0005551989 00000 n 
-0005552130 00000 n 
-0005552271 00000 n 
-0005552410 00000 n 
-0005552549 00000 n 
-0005552691 00000 n 
-0005552833 00000 n 
-0005552975 00000 n 
-0005553116 00000 n 
-0005553258 00000 n 
-0005553399 00000 n 
-0005553541 00000 n 
-0005553683 00000 n 
-0005553823 00000 n 
-0005553965 00000 n 
-0005554099 00000 n 
-0005554224 00000 n 
-0005554349 00000 n 
-0005554477 00000 n 
-0005554615 00000 n 
-0005554758 00000 n 
-0005554900 00000 n 
-0005555032 00000 n 
-0005555106 00000 n 
-0005555247 00000 n 
-0005555390 00000 n 
-0005555531 00000 n 
-0005555672 00000 n 
-0005555814 00000 n 
-0005555928 00000 n 
-0005556059 00000 n 
-0005556101 00000 n 
-0005556308 00000 n 
+0000098872 00000 n 
+0005130489 00000 n 
+0000100951 00000 n 
+0000101101 00000 n 
+0000101252 00000 n 
+0000101406 00000 n 
+0000101560 00000 n 
+0000101719 00000 n 
+0000101878 00000 n 
+0000102037 00000 n 
+0000102196 00000 n 
+0000102360 00000 n 
+0000102519 00000 n 
+0000102673 00000 n 
+0000102826 00000 n 
+0000102980 00000 n 
+0000103139 00000 n 
+0000103298 00000 n 
+0000103452 00000 n 
+0000103611 00000 n 
+0000103770 00000 n 
+0000103929 00000 n 
+0000104082 00000 n 
+0000104237 00000 n 
+0000104392 00000 n 
+0000104546 00000 n 
+0000104705 00000 n 
+0000104869 00000 n 
+0000105033 00000 n 
+0000105196 00000 n 
+0000107588 00000 n 
+0000107746 00000 n 
+0000107910 00000 n 
+0000108069 00000 n 
+0000105484 00000 n 
+0000100564 00000 n 
+0000099051 00000 n 
+0000105358 00000 n 
+0000105421 00000 n 
+0005130671 00000 n 
+0000108233 00000 n 
+0000108397 00000 n 
+0000108559 00000 n 
+0000108720 00000 n 
+0000108870 00000 n 
+0000109022 00000 n 
+0000109176 00000 n 
+0000109329 00000 n 
+0000109483 00000 n 
+0000109642 00000 n 
+0000109806 00000 n 
+0000109965 00000 n 
+0000110128 00000 n 
+0000110287 00000 n 
+0000110451 00000 n 
+0000110610 00000 n 
+0000110774 00000 n 
+0000110933 00000 n 
+0000111096 00000 n 
+0000111250 00000 n 
+0000111404 00000 n 
+0000111563 00000 n 
+0000111722 00000 n 
+0000111880 00000 n 
+0000112039 00000 n 
+0000112198 00000 n 
+0000112350 00000 n 
+0000112504 00000 n 
+0000112656 00000 n 
+0000112810 00000 n 
+0000112969 00000 n 
+0000113127 00000 n 
+0000115532 00000 n 
+0000115685 00000 n 
+0000115839 00000 n 
+0000115998 00000 n 
+0000116162 00000 n 
+0000113342 00000 n 
+0000107129 00000 n 
+0000105600 00000 n 
+0000113279 00000 n 
+0000116326 00000 n 
+0000116490 00000 n 
+0000116648 00000 n 
+0000116802 00000 n 
+0000116961 00000 n 
+0000117120 00000 n 
+0000117279 00000 n 
+0000117437 00000 n 
+0000117596 00000 n 
+0000117755 00000 n 
+0000117914 00000 n 
+0000118066 00000 n 
+0000118219 00000 n 
+0000118373 00000 n 
+0000118532 00000 n 
+0000118696 00000 n 
+0000118855 00000 n 
+0000119014 00000 n 
+0000119173 00000 n 
+0000119332 00000 n 
+0000119496 00000 n 
+0000119660 00000 n 
+0000119814 00000 n 
+0000119972 00000 n 
+0000120125 00000 n 
+0000120284 00000 n 
+0000120443 00000 n 
+0000120602 00000 n 
+0000122980 00000 n 
+0000123131 00000 n 
+0000123285 00000 n 
+0000123439 00000 n 
+0000123598 00000 n 
+0000123757 00000 n 
+0000123916 00000 n 
+0000124074 00000 n 
+0000124238 00000 n 
+0000120824 00000 n 
+0000115100 00000 n 
+0000113444 00000 n 
+0000120761 00000 n 
+0000124402 00000 n 
+0000124566 00000 n 
+0000124720 00000 n 
+0000124878 00000 n 
+0000125037 00000 n 
+0000125191 00000 n 
+0000125350 00000 n 
+0000125509 00000 n 
+0000125668 00000 n 
+0000125828 00000 n 
+0000125986 00000 n 
+0000126145 00000 n 
+0000126304 00000 n 
+0000126458 00000 n 
+0000126612 00000 n 
+0000126771 00000 n 
+0000126930 00000 n 
+0000127089 00000 n 
+0000127241 00000 n 
+0000127394 00000 n 
+0000127547 00000 n 
+0000127701 00000 n 
+0000127860 00000 n 
+0000128019 00000 n 
+0000130477 00000 n 
+0000130628 00000 n 
+0000130782 00000 n 
+0000130936 00000 n 
+0000131095 00000 n 
+0000131259 00000 n 
+0000131423 00000 n 
+0000131587 00000 n 
+0000131746 00000 n 
+0000128235 00000 n 
+0000122548 00000 n 
+0000120926 00000 n 
+0000128172 00000 n 
+0005129772 00000 n 
+0005129594 00000 n 
+0000131905 00000 n 
+0000132059 00000 n 
+0000132209 00000 n 
+0000132361 00000 n 
+0000132515 00000 n 
+0000132669 00000 n 
+0000132828 00000 n 
+0000132986 00000 n 
+0000133145 00000 n 
+0000133304 00000 n 
+0000133463 00000 n 
+0000133616 00000 n 
+0000133770 00000 n 
+0000133925 00000 n 
+0000134080 00000 n 
+0000134240 00000 n 
+0000134400 00000 n 
+0000134559 00000 n 
+0000134714 00000 n 
+0000134874 00000 n 
+0000135034 00000 n 
+0000135194 00000 n 
+0000135354 00000 n 
+0000135512 00000 n 
+0000135672 00000 n 
+0000135832 00000 n 
+0000135991 00000 n 
+0000138631 00000 n 
+0000138791 00000 n 
+0000138952 00000 n 
+0000139112 00000 n 
+0000139268 00000 n 
+0000136207 00000 n 
+0000130018 00000 n 
+0000128365 00000 n 
+0000136144 00000 n 
+0005131526 00000 n 
+0000139429 00000 n 
+0000139590 00000 n 
+0000139745 00000 n 
+0000139906 00000 n 
+0000140066 00000 n 
+0000140227 00000 n 
+0000140393 00000 n 
+0000140549 00000 n 
+0000140710 00000 n 
+0000140871 00000 n 
+0000141032 00000 n 
+0000141193 00000 n 
+0000141354 00000 n 
+0000141508 00000 n 
+0000141664 00000 n 
+0000141825 00000 n 
+0000141985 00000 n 
+0000142141 00000 n 
+0000142301 00000 n 
+0000142467 00000 n 
+0000142633 00000 n 
+0000142794 00000 n 
+0000142955 00000 n 
+0000143116 00000 n 
+0000143281 00000 n 
+0000143442 00000 n 
+0000143598 00000 n 
+0000143759 00000 n 
+0000143920 00000 n 
+0000144086 00000 n 
+0000144250 00000 n 
+0000144414 00000 n 
+0000144577 00000 n 
+0000147232 00000 n 
+0000147401 00000 n 
+0000147565 00000 n 
+0000147731 00000 n 
+0000147887 00000 n 
+0000144802 00000 n 
+0000138154 00000 n 
+0000136309 00000 n 
+0000144739 00000 n 
+0000148048 00000 n 
+0000148209 00000 n 
+0000148369 00000 n 
+0000148530 00000 n 
+0000148696 00000 n 
+0000148862 00000 n 
+0000149028 00000 n 
+0000149193 00000 n 
+0000149359 00000 n 
+0000149525 00000 n 
+0000149691 00000 n 
+0000149857 00000 n 
+0000150023 00000 n 
+0000150186 00000 n 
+0000150352 00000 n 
+0000150508 00000 n 
+0000150669 00000 n 
+0000150830 00000 n 
+0000150984 00000 n 
+0000151140 00000 n 
+0000151296 00000 n 
+0000151457 00000 n 
+0000151618 00000 n 
+0000151778 00000 n 
+0000151944 00000 n 
+0000152105 00000 n 
+0000152266 00000 n 
+0000152422 00000 n 
+0000152583 00000 n 
+0000152744 00000 n 
+0000152899 00000 n 
+0000153060 00000 n 
+0000155576 00000 n 
+0000155729 00000 n 
+0000155885 00000 n 
+0000156041 00000 n 
+0000156197 00000 n 
+0000153283 00000 n 
+0000146764 00000 n 
+0000144904 00000 n 
+0000153220 00000 n 
+0000156358 00000 n 
+0000156524 00000 n 
+0000156690 00000 n 
+0000156856 00000 n 
+0000157021 00000 n 
+0000157182 00000 n 
+0000157343 00000 n 
+0000157509 00000 n 
+0000157663 00000 n 
+0000157824 00000 n 
+0000157985 00000 n 
+0000158146 00000 n 
+0000158307 00000 n 
+0000158463 00000 n 
+0000158619 00000 n 
+0000158779 00000 n 
+0000158939 00000 n 
+0000159095 00000 n 
+0000159251 00000 n 
+0000159411 00000 n 
+0000159571 00000 n 
+0000159732 00000 n 
+0000159898 00000 n 
+0000160064 00000 n 
+0000160230 00000 n 
+0000160396 00000 n 
+0000160557 00000 n 
+0000160712 00000 n 
+0000160869 00000 n 
+0000161026 00000 n 
+0000161183 00000 n 
+0000161339 00000 n 
+0000161501 00000 n 
+0000161662 00000 n 
+0000164299 00000 n 
+0000164452 00000 n 
+0000164608 00000 n 
+0000164769 00000 n 
+0000161880 00000 n 
+0000155090 00000 n 
+0000153413 00000 n 
+0000161817 00000 n 
+0000164930 00000 n 
+0000165091 00000 n 
+0000165252 00000 n 
+0000165407 00000 n 
+0000165568 00000 n 
+0000165734 00000 n 
+0000165900 00000 n 
+0000166061 00000 n 
+0000166221 00000 n 
+0000166382 00000 n 
+0000166548 00000 n 
+0000166714 00000 n 
+0000166868 00000 n 
+0000167023 00000 n 
+0000167184 00000 n 
+0000167345 00000 n 
+0000167506 00000 n 
+0000167662 00000 n 
+0000167818 00000 n 
+0000167979 00000 n 
+0000168133 00000 n 
+0000168289 00000 n 
+0000168445 00000 n 
+0000168605 00000 n 
+0000168764 00000 n 
+0000168925 00000 n 
+0000169091 00000 n 
+0000169247 00000 n 
+0000169408 00000 n 
+0000169569 00000 n 
+0000169729 00000 n 
+0000169885 00000 n 
+0000170046 00000 n 
+0000172695 00000 n 
+0000172860 00000 n 
+0000173016 00000 n 
+0000173176 00000 n 
+0000173337 00000 n 
+0000170273 00000 n 
+0000163831 00000 n 
+0000161982 00000 n 
+0000170210 00000 n 
+0000173498 00000 n 
+0000173659 00000 n 
+0000173823 00000 n 
+0000173989 00000 n 
+0000174149 00000 n 
+0000174310 00000 n 
+0000174471 00000 n 
+0000174632 00000 n 
+0000174797 00000 n 
+0000174963 00000 n 
+0000175129 00000 n 
+0000175285 00000 n 
+0000175446 00000 n 
+0000175607 00000 n 
+0000175767 00000 n 
+0000175921 00000 n 
+0000176076 00000 n 
+0000176232 00000 n 
+0000176392 00000 n 
+0000176558 00000 n 
+0000176724 00000 n 
+0000176890 00000 n 
+0000177055 00000 n 
+0000177221 00000 n 
+0000177386 00000 n 
+0000177552 00000 n 
+0000177718 00000 n 
+0000177884 00000 n 
+0000178040 00000 n 
+0000178201 00000 n 
+0000178367 00000 n 
+0000178533 00000 n 
+0000178688 00000 n 
+0000181160 00000 n 
+0000181320 00000 n 
+0000181476 00000 n 
+0000181632 00000 n 
+0000181793 00000 n 
+0000178910 00000 n 
+0000172218 00000 n 
+0000170375 00000 n 
+0000178847 00000 n 
+0005131216 00000 n 
+0000181954 00000 n 
+0000182115 00000 n 
+0000182270 00000 n 
+0000182424 00000 n 
+0000182580 00000 n 
+0000182736 00000 n 
+0000182891 00000 n 
+0000183052 00000 n 
+0000183213 00000 n 
+0000183374 00000 n 
+0000183535 00000 n 
+0000183696 00000 n 
+0000183856 00000 n 
+0000184012 00000 n 
+0000184168 00000 n 
+0000184329 00000 n 
+0000184490 00000 n 
+0000184644 00000 n 
+0000184800 00000 n 
+0000184956 00000 n 
+0000185112 00000 n 
+0000185273 00000 n 
+0000185433 00000 n 
+0000185590 00000 n 
+0000185746 00000 n 
+0000185907 00000 n 
+0000186068 00000 n 
+0000186224 00000 n 
+0000186380 00000 n 
+0000186540 00000 n 
+0000189230 00000 n 
+0000189383 00000 n 
+0000189539 00000 n 
+0000189694 00000 n 
+0000189855 00000 n 
+0000190008 00000 n 
+0000186764 00000 n 
+0000180710 00000 n 
+0000179026 00000 n 
+0000186701 00000 n 
+0005131652 00000 n 
+0000190164 00000 n 
+0000190320 00000 n 
+0000190481 00000 n 
+0000190642 00000 n 
+0000190798 00000 n 
+0000190958 00000 n 
+0000191119 00000 n 
+0000191275 00000 n 
+0000191436 00000 n 
+0000191601 00000 n 
+0000191767 00000 n 
+0000191932 00000 n 
+0000192098 00000 n 
+0000192264 00000 n 
+0000192430 00000 n 
+0000192585 00000 n 
+0000192746 00000 n 
+0000192906 00000 n 
+0000193067 00000 n 
+0000193228 00000 n 
+0000193389 00000 n 
+0000193544 00000 n 
+0000193705 00000 n 
+0000193865 00000 n 
+0000194031 00000 n 
+0000194197 00000 n 
+0000194363 00000 n 
+0000194529 00000 n 
+0000194695 00000 n 
+0000194861 00000 n 
+0000195027 00000 n 
+0000195192 00000 n 
+0000198027 00000 n 
+0000198182 00000 n 
+0000198343 00000 n 
+0000198503 00000 n 
+0000198664 00000 n 
+0000195419 00000 n 
+0000188753 00000 n 
+0000186866 00000 n 
+0000195356 00000 n 
+0000198825 00000 n 
+0000198981 00000 n 
+0000199141 00000 n 
+0000199302 00000 n 
+0000199462 00000 n 
+0000199623 00000 n 
+0000199784 00000 n 
+0000199945 00000 n 
+0000200106 00000 n 
+0000200262 00000 n 
+0000200423 00000 n 
+0000200584 00000 n 
+0000200745 00000 n 
+0000200906 00000 n 
+0000201063 00000 n 
+0000201220 00000 n 
+0000201377 00000 n 
+0000201534 00000 n 
+0000201691 00000 n 
+0000201853 00000 n 
+0000202015 00000 n 
+0000202169 00000 n 
+0000202324 00000 n 
+0000202485 00000 n 
+0000202645 00000 n 
+0000202801 00000 n 
+0000202962 00000 n 
+0000203123 00000 n 
+0000203284 00000 n 
+0000203440 00000 n 
+0000203601 00000 n 
+0000203762 00000 n 
+0000203922 00000 n 
+0000206594 00000 n 
+0000206754 00000 n 
+0000206910 00000 n 
+0000207071 00000 n 
+0000207232 00000 n 
+0000204144 00000 n 
+0000197550 00000 n 
+0000195521 00000 n 
+0000204081 00000 n 
+0000207393 00000 n 
+0000207554 00000 n 
+0000207715 00000 n 
+0000207876 00000 n 
+0000208036 00000 n 
+0000208197 00000 n 
+0000208353 00000 n 
+0000208514 00000 n 
+0000208674 00000 n 
+0000208835 00000 n 
+0000209001 00000 n 
+0000209162 00000 n 
+0000209323 00000 n 
+0000209484 00000 n 
+0000209645 00000 n 
+0000209805 00000 n 
+0000209965 00000 n 
+0000210127 00000 n 
+0000210289 00000 n 
+0000210450 00000 n 
+0000210611 00000 n 
+0000210773 00000 n 
+0000210935 00000 n 
+0000211097 00000 n 
+0000211259 00000 n 
+0000211421 00000 n 
+0000211583 00000 n 
+0000211738 00000 n 
+0000211899 00000 n 
+0000212060 00000 n 
+0000212221 00000 n 
+0000212376 00000 n 
+0000212537 00000 n 
+0000212697 00000 n 
+0000215603 00000 n 
+0000215763 00000 n 
+0000215924 00000 n 
+0000216080 00000 n 
+0000216241 00000 n 
+0000212914 00000 n 
+0000206108 00000 n 
+0000204274 00000 n 
+0000212851 00000 n 
+0000216402 00000 n 
+0000216563 00000 n 
+0000216724 00000 n 
+0000216881 00000 n 
+0000217042 00000 n 
+0000217204 00000 n 
+0000217366 00000 n 
+0000217528 00000 n 
+0000217689 00000 n 
+0000217851 00000 n 
+0000218013 00000 n 
+0000218175 00000 n 
+0000218337 00000 n 
+0000218500 00000 n 
+0000218663 00000 n 
+0000218825 00000 n 
+0000218987 00000 n 
+0000219150 00000 n 
+0000219313 00000 n 
+0000219475 00000 n 
+0000219631 00000 n 
+0000219793 00000 n 
+0000219955 00000 n 
+0000220117 00000 n 
+0000220279 00000 n 
+0000220441 00000 n 
+0000220603 00000 n 
+0000220759 00000 n 
+0000220921 00000 n 
+0000221083 00000 n 
+0000221245 00000 n 
+0000221407 00000 n 
+0000221563 00000 n 
+0000221724 00000 n 
+0000224578 00000 n 
+0000224744 00000 n 
+0000224911 00000 n 
+0000225078 00000 n 
+0000225245 00000 n 
+0000221952 00000 n 
+0000215117 00000 n 
+0000213044 00000 n 
+0000221889 00000 n 
+0000225412 00000 n 
+0000225579 00000 n 
+0000225746 00000 n 
+0000225908 00000 n 
+0000226064 00000 n 
+0000226226 00000 n 
+0000226388 00000 n 
+0000226550 00000 n 
+0000226710 00000 n 
+0000226872 00000 n 
+0000227034 00000 n 
+0000227196 00000 n 
+0000227353 00000 n 
+0000227510 00000 n 
+0000227672 00000 n 
+0000227833 00000 n 
+0000227994 00000 n 
+0000228151 00000 n 
+0000228308 00000 n 
+0000228464 00000 n 
+0000228625 00000 n 
+0000228787 00000 n 
+0000228949 00000 n 
+0000229111 00000 n 
+0000229273 00000 n 
+0000229435 00000 n 
+0000229597 00000 n 
+0000229758 00000 n 
+0000229920 00000 n 
+0000230083 00000 n 
+0000230246 00000 n 
+0000230408 00000 n 
+0000230571 00000 n 
+0000230733 00000 n 
+0000233344 00000 n 
+0000233506 00000 n 
+0000233669 00000 n 
+0000233832 00000 n 
+0000233995 00000 n 
+0000230957 00000 n 
+0000224092 00000 n 
+0000222082 00000 n 
+0000230894 00000 n 
+0000234158 00000 n 
+0000234315 00000 n 
+0000234469 00000 n 
+0000234625 00000 n 
+0000234781 00000 n 
+0000234937 00000 n 
+0000235097 00000 n 
+0000235258 00000 n 
+0000235419 00000 n 
+0000235585 00000 n 
+0000235746 00000 n 
+0000235907 00000 n 
+0000236067 00000 n 
+0000236228 00000 n 
+0000236394 00000 n 
+0000236550 00000 n 
+0000236711 00000 n 
+0000236872 00000 n 
+0000237033 00000 n 
+0000237187 00000 n 
+0000237343 00000 n 
+0000237499 00000 n 
+0000237654 00000 n 
+0000237813 00000 n 
+0000237974 00000 n 
+0000238130 00000 n 
+0000238291 00000 n 
+0000238451 00000 n 
+0000238612 00000 n 
+0000238772 00000 n 
+0000238933 00000 n 
+0000239094 00000 n 
+0000241657 00000 n 
+0000241817 00000 n 
+0000241978 00000 n 
+0000242139 00000 n 
+0000242305 00000 n 
+0000239311 00000 n 
+0000232876 00000 n 
+0000231059 00000 n 
+0000239248 00000 n 
+0005131778 00000 n 
+0000242471 00000 n 
+0000242637 00000 n 
+0000242802 00000 n 
+0000242968 00000 n 
+0000243134 00000 n 
+0000243298 00000 n 
+0000243462 00000 n 
+0000243625 00000 n 
+0000243791 00000 n 
+0000243955 00000 n 
+0000244119 00000 n 
+0000244275 00000 n 
+0000244431 00000 n 
+0000244588 00000 n 
+0000244749 00000 n 
+0000244903 00000 n 
+0000245059 00000 n 
+0000245215 00000 n 
+0000245371 00000 n 
+0000245532 00000 n 
+0000245693 00000 n 
+0000245849 00000 n 
+0000246010 00000 n 
+0000246170 00000 n 
+0000246324 00000 n 
+0000246480 00000 n 
+0000246636 00000 n 
+0000246797 00000 n 
+0000246958 00000 n 
+0000247123 00000 n 
+0000247284 00000 n 
+0000247450 00000 n 
+0000250000 00000 n 
+0000250155 00000 n 
+0000250311 00000 n 
+0000250471 00000 n 
+0000250632 00000 n 
+0000247677 00000 n 
+0000241189 00000 n 
+0000239427 00000 n 
+0000247614 00000 n 
+0000250793 00000 n 
+0000250949 00000 n 
+0000251105 00000 n 
+0000251266 00000 n 
+0000251420 00000 n 
+0000251575 00000 n 
+0000251731 00000 n 
+0000251891 00000 n 
+0000252056 00000 n 
+0000252222 00000 n 
+0000252388 00000 n 
+0000252554 00000 n 
+0000252715 00000 n 
+0000252881 00000 n 
+0000253047 00000 n 
+0000253213 00000 n 
+0000253377 00000 n 
+0000253536 00000 n 
+0000253696 00000 n 
+0000253857 00000 n 
+0000254021 00000 n 
+0000254187 00000 n 
+0000254353 00000 n 
+0000254519 00000 n 
+0000254675 00000 n 
+0000254831 00000 n 
+0000254987 00000 n 
+0000255148 00000 n 
+0000255314 00000 n 
+0000255475 00000 n 
+0000255635 00000 n 
+0000255790 00000 n 
+0000255951 00000 n 
+0000256111 00000 n 
+0000256271 00000 n 
+0000258825 00000 n 
+0000258978 00000 n 
+0000256493 00000 n 
+0000249505 00000 n 
+0000247793 00000 n 
+0000256430 00000 n 
+0000259134 00000 n 
+0000259290 00000 n 
+0000259451 00000 n 
+0000259617 00000 n 
+0000259778 00000 n 
+0000259943 00000 n 
+0000260109 00000 n 
+0000260270 00000 n 
+0000260431 00000 n 
+0000260592 00000 n 
+0000260757 00000 n 
+0000260923 00000 n 
+0000261089 00000 n 
+0000261255 00000 n 
+0000261411 00000 n 
+0000261572 00000 n 
+0000261729 00000 n 
+0000261883 00000 n 
+0000262039 00000 n 
+0000262195 00000 n 
+0000262351 00000 n 
+0000262512 00000 n 
+0000262673 00000 n 
+0000262834 00000 n 
+0000262995 00000 n 
+0000263151 00000 n 
+0000263311 00000 n 
+0000263471 00000 n 
+0000263632 00000 n 
+0000263793 00000 n 
+0000263954 00000 n 
+0000264110 00000 n 
+0000264271 00000 n 
+0000264431 00000 n 
+0000266793 00000 n 
+0000266946 00000 n 
+0000267102 00000 n 
+0000267258 00000 n 
+0000267414 00000 n 
+0000267570 00000 n 
+0000264655 00000 n 
+0000258366 00000 n 
+0000256595 00000 n 
+0000264592 00000 n 
+0000267726 00000 n 
+0000267886 00000 n 
+0000268047 00000 n 
+0000268208 00000 n 
+0000268364 00000 n 
+0000268525 00000 n 
+0000268679 00000 n 
+0000268835 00000 n 
+0000268991 00000 n 
+0000269152 00000 n 
+0000269313 00000 n 
+0000269473 00000 n 
+0000269634 00000 n 
+0000269788 00000 n 
+0000269944 00000 n 
+0000270099 00000 n 
+0000270260 00000 n 
+0000270421 00000 n 
+0000270587 00000 n 
+0000270753 00000 n 
+0000270919 00000 n 
+0000271084 00000 n 
+0000271248 00000 n 
+0000271414 00000 n 
+0000271580 00000 n 
+0000271741 00000 n 
+0000271902 00000 n 
+0000272063 00000 n 
+0000272223 00000 n 
+0000274686 00000 n 
+0000274839 00000 n 
+0000274995 00000 n 
+0000275155 00000 n 
+0000275315 00000 n 
+0000275476 00000 n 
+0000275622 00000 n 
+0000272440 00000 n 
+0000266343 00000 n 
+0000264771 00000 n 
+0000272377 00000 n 
+0000275776 00000 n 
+0000275932 00000 n 
+0000276093 00000 n 
+0000276254 00000 n 
+0000276415 00000 n 
+0000276571 00000 n 
+0000276732 00000 n 
+0000276893 00000 n 
+0000277059 00000 n 
+0000277225 00000 n 
+0000277391 00000 n 
+0000277557 00000 n 
+0000277718 00000 n 
+0000277883 00000 n 
+0000278049 00000 n 
+0000278215 00000 n 
+0000278381 00000 n 
+0000278545 00000 n 
+0000278709 00000 n 
+0000278871 00000 n 
+0000279024 00000 n 
+0000279179 00000 n 
+0000279340 00000 n 
+0000279505 00000 n 
+0000279671 00000 n 
+0000279837 00000 n 
+0000280003 00000 n 
+0000280169 00000 n 
+0000280330 00000 n 
+0000280486 00000 n 
+0000280646 00000 n 
+0000283042 00000 n 
+0000283195 00000 n 
+0000280868 00000 n 
+0000274209 00000 n 
+0000272542 00000 n 
+0000280805 00000 n 
+0000283351 00000 n 
+0000283507 00000 n 
+0000283668 00000 n 
+0000283834 00000 n 
+0000284000 00000 n 
+0000284160 00000 n 
+0000284320 00000 n 
+0000284481 00000 n 
+0000284637 00000 n 
+0000284798 00000 n 
+0000284958 00000 n 
+0000285119 00000 n 
+0000285280 00000 n 
+0000285441 00000 n 
+0000285602 00000 n 
+0000285763 00000 n 
+0000285920 00000 n 
+0000286066 00000 n 
+0000286220 00000 n 
+0000286376 00000 n 
+0000286531 00000 n 
+0000286687 00000 n 
+0000286841 00000 n 
+0000286997 00000 n 
+0000287158 00000 n 
+0000287319 00000 n 
+0000287480 00000 n 
+0000287641 00000 n 
+0000287807 00000 n 
+0000287973 00000 n 
+0000288127 00000 n 
+0000288283 00000 n 
+0000290790 00000 n 
+0000290943 00000 n 
+0000291099 00000 n 
+0000291255 00000 n 
+0000291411 00000 n 
+0000291572 00000 n 
+0000288502 00000 n 
+0000282601 00000 n 
+0000280970 00000 n 
+0000288439 00000 n 
+0005131904 00000 n 
+0000291728 00000 n 
+0000291883 00000 n 
+0000292039 00000 n 
+0000292193 00000 n 
+0000292349 00000 n 
+0000292504 00000 n 
+0000292650 00000 n 
+0000292804 00000 n 
+0000292960 00000 n 
+0000293121 00000 n 
+0000293282 00000 n 
+0000293448 00000 n 
+0000293613 00000 n 
+0000293769 00000 n 
+0000293925 00000 n 
+0000294080 00000 n 
+0000294241 00000 n 
+0000294407 00000 n 
+0000294573 00000 n 
+0000294739 00000 n 
+0000294895 00000 n 
+0000295055 00000 n 
+0000295216 00000 n 
+0000295382 00000 n 
+0000295544 00000 n 
+0000295698 00000 n 
+0000295854 00000 n 
+0000296010 00000 n 
+0000296165 00000 n 
+0000296321 00000 n 
+0000296477 00000 n 
+0000296633 00000 n 
+0000296793 00000 n 
+0000299225 00000 n 
+0000297015 00000 n 
+0000290304 00000 n 
+0000288604 00000 n 
+0000296952 00000 n 
+0000299379 00000 n 
+0000299534 00000 n 
+0000299690 00000 n 
+0000299851 00000 n 
+0000300011 00000 n 
+0000300172 00000 n 
+0000300328 00000 n 
+0000300489 00000 n 
+0000300650 00000 n 
+0000300811 00000 n 
+0000300972 00000 n 
+0000301132 00000 n 
+0000301293 00000 n 
+0000301449 00000 n 
+0000301610 00000 n 
+0000301765 00000 n 
+0000301921 00000 n 
+0000302075 00000 n 
+0000302230 00000 n 
+0000302386 00000 n 
+0000302542 00000 n 
+0000302698 00000 n 
+0000302854 00000 n 
+0000303010 00000 n 
+0000303166 00000 n 
+0000303321 00000 n 
+0000303476 00000 n 
+0000303633 00000 n 
+0000303790 00000 n 
+0000303945 00000 n 
+0000304099 00000 n 
+0000304255 00000 n 
+0000304409 00000 n 
+0000304570 00000 n 
+0000304731 00000 n 
+0000304892 00000 n 
+0000305047 00000 n 
+0000306440 00000 n 
+0000306593 00000 n 
+0000306749 00000 n 
+0000306905 00000 n 
+0000305264 00000 n 
+0000298748 00000 n 
+0000297117 00000 n 
+0000305201 00000 n 
+0000307059 00000 n 
+0000307215 00000 n 
+0000307370 00000 n 
+0000307531 00000 n 
+0000307692 00000 n 
+0000307846 00000 n 
+0000308000 00000 n 
+0000308217 00000 n 
+0000306206 00000 n 
+0000305366 00000 n 
+0000308154 00000 n 
+0000310005 00000 n 
+0000310158 00000 n 
+0000310311 00000 n 
+0000310464 00000 n 
+0000310617 00000 n 
+0000310770 00000 n 
+0000310923 00000 n 
+0000311076 00000 n 
+0000311229 00000 n 
+0000311382 00000 n 
+0000311535 00000 n 
+0000311689 00000 n 
+0000311843 00000 n 
+0000311997 00000 n 
+0000312151 00000 n 
+0000312305 00000 n 
+0000312459 00000 n 
+0000312612 00000 n 
+0000312765 00000 n 
+0000312919 00000 n 
+0000313072 00000 n 
+0000313225 00000 n 
+0000313379 00000 n 
+0000313532 00000 n 
+0000313686 00000 n 
+0000313837 00000 n 
+0000313992 00000 n 
+0000314146 00000 n 
+0000316297 00000 n 
+0000316451 00000 n 
+0000316606 00000 n 
+0000314425 00000 n 
+0000309618 00000 n 
+0000308319 00000 n 
+0000314299 00000 n 
+0000314362 00000 n 
+0000605029 00000 n 
+0000798496 00000 n 
+0000819159 00000 n 
+0000865542 00000 n 
+0000865795 00000 n 
+0000897757 00000 n 
+0000898071 00000 n 
+0000912668 00000 n 
+0000935930 00000 n 
+0000936183 00000 n 
+0000948102 00000 n 
+0000966429 00000 n 
+0000966680 00000 n 
+0000982072 00000 n 
+0000982262 00000 n 
+0001016570 00000 n 
+0001061073 00000 n 
+0001061326 00000 n 
+0001096225 00000 n 
+0001096477 00000 n 
+0001114559 00000 n 
+0001114812 00000 n 
+0001128572 00000 n 
+0001128825 00000 n 
+0001252502 00000 n 
+0001332703 00000 n 
+0001372959 00000 n 
+0001574316 00000 n 
+0000316761 00000 n 
+0000316916 00000 n 
+0000317071 00000 n 
+0000317226 00000 n 
+0000317381 00000 n 
+0000317536 00000 n 
+0000317690 00000 n 
+0000317845 00000 n 
+0000318000 00000 n 
+0000318155 00000 n 
+0000318310 00000 n 
+0000318466 00000 n 
+0000318621 00000 n 
+0000318777 00000 n 
+0000318933 00000 n 
+0000319089 00000 n 
+0000319245 00000 n 
+0000319399 00000 n 
+0000319555 00000 n 
+0000319711 00000 n 
+0000319867 00000 n 
+0000320022 00000 n 
+0000320177 00000 n 
+0000320395 00000 n 
+0000315928 00000 n 
+0000314527 00000 n 
+0000320332 00000 n 
+0001574442 00000 n 
+0001589865 00000 n 
+0001858973 00000 n 
+0001999895 00000 n 
+0002251704 00000 n 
+0002286204 00000 n 
+0002286393 00000 n 
+0002353921 00000 n 
+0002354110 00000 n 
+0002419732 00000 n 
+0002419858 00000 n 
+0002468456 00000 n 
+0002502210 00000 n 
+0002567419 00000 n 
+0002610098 00000 n 
+0002610227 00000 n 
+0002676783 00000 n 
+0002676976 00000 n 
+0002711963 00000 n 
+0002815771 00000 n 
+0003041028 00000 n 
+0003182654 00000 n 
+0003314423 00000 n 
+0003374259 00000 n 
+0003873478 00000 n 
+0003873607 00000 n 
+0000322272 00000 n 
+0000322424 00000 n 
+0000322577 00000 n 
+0000322729 00000 n 
+0000322881 00000 n 
+0000323033 00000 n 
+0000323187 00000 n 
+0000323341 00000 n 
+0000323495 00000 n 
+0000323649 00000 n 
+0000323803 00000 n 
+0000323956 00000 n 
+0000324110 00000 n 
+0000324264 00000 n 
+0000324417 00000 n 
+0000324570 00000 n 
+0000324723 00000 n 
+0000324877 00000 n 
+0000325031 00000 n 
+0000325185 00000 n 
+0000325339 00000 n 
+0000325493 00000 n 
+0000325647 00000 n 
+0000325801 00000 n 
+0000327473 00000 n 
+0000327626 00000 n 
+0000326079 00000 n 
+0000321921 00000 n 
+0000320483 00000 n 
+0000325953 00000 n 
+0000326016 00000 n 
+0005132030 00000 n 
+0000398474 00000 n 
+0000401320 00000 n 
+0000670689 00000 n 
+0000719304 00000 n 
+0001139258 00000 n 
+0001257554 00000 n 
+0001257680 00000 n 
+0001260580 00000 n 
+0001260706 00000 n 
+0001396686 00000 n 
+0001419379 00000 n 
+0001478752 00000 n 
+0001482704 00000 n 
+0001484338 00000 n 
+0001604365 00000 n 
+0001787083 00000 n 
+0001814436 00000 n 
+0001867404 00000 n 
+0001870849 00000 n 
+0001873567 00000 n 
+0001901418 00000 n 
+0002072995 00000 n 
+0002516558 00000 n 
+0003328760 00000 n 
+0000327780 00000 n 
+0000327934 00000 n 
+0000328088 00000 n 
+0000328240 00000 n 
+0000328394 00000 n 
+0000328548 00000 n 
+0000328701 00000 n 
+0000328855 00000 n 
+0000329009 00000 n 
+0000329163 00000 n 
+0000329443 00000 n 
+0000327230 00000 n 
+0000326195 00000 n 
+0000329317 00000 n 
+0000329380 00000 n 
+0003533133 00000 n 
+0003533457 00000 n 
+0003537554 00000 n 
+0003583253 00000 n 
+0003614144 00000 n 
+0003614273 00000 n 
+0003655104 00000 n 
+0003729830 00000 n 
+0003750507 00000 n 
+0003754381 00000 n 
+0003890866 00000 n 
+0003899144 00000 n 
+0000332122 00000 n 
+0000331873 00000 n 
+0000329545 00000 n 
+0000331996 00000 n 
+0000332059 00000 n 
+0000333671 00000 n 
+0000333820 00000 n 
+0000333992 00000 n 
+0000334163 00000 n 
+0000334332 00000 n 
+0000334508 00000 n 
+0000334677 00000 n 
+0000334829 00000 n 
+0000334998 00000 n 
+0000335150 00000 n 
+0000335322 00000 n 
+0000335492 00000 n 
+0000335661 00000 n 
+0000335813 00000 n 
+0000335982 00000 n 
+0000336151 00000 n 
+0000336324 00000 n 
+0000336490 00000 n 
+0000336642 00000 n 
+0000336811 00000 n 
+0000336992 00000 n 
+0000337158 00000 n 
+0000337312 00000 n 
+0000337480 00000 n 
+0000339507 00000 n 
+0000339676 00000 n 
+0000339848 00000 n 
+0000340019 00000 n 
+0000340184 00000 n 
+0000340343 00000 n 
+0000337771 00000 n 
+0000333320 00000 n 
+0000332224 00000 n 
+0000337645 00000 n 
+0000337708 00000 n 
+0000389929 00000 n 
+0000421580 00000 n 
+0000523145 00000 n 
+0000604966 00000 n 
+0000666415 00000 n 
+0000701431 00000 n 
+0000340512 00000 n 
+0000340667 00000 n 
+0000340836 00000 n 
+0000340990 00000 n 
+0000341159 00000 n 
+0000341328 00000 n 
+0000341486 00000 n 
+0000341655 00000 n 
+0000341826 00000 n 
+0000341996 00000 n 
+0000342145 00000 n 
+0000342316 00000 n 
+0000342485 00000 n 
+0000342654 00000 n 
+0000342823 00000 n 
+0000342989 00000 n 
+0000343160 00000 n 
+0000343315 00000 n 
+0000343484 00000 n 
+0000343652 00000 n 
+0000343804 00000 n 
+0000343973 00000 n 
+0000344154 00000 n 
+0000344320 00000 n 
+0000346201 00000 n 
+0000346370 00000 n 
+0000346518 00000 n 
+0000346687 00000 n 
+0000346855 00000 n 
+0000347011 00000 n 
+0000344530 00000 n 
+0000339102 00000 n 
+0000337887 00000 n 
+0000344467 00000 n 
+0000753123 00000 n 
+0000770305 00000 n 
+0001134812 00000 n 
+0001144539 00000 n 
+0001272248 00000 n 
+0001489240 00000 n 
+0001619233 00000 n 
+0001725121 00000 n 
+0000347180 00000 n 
+0000347349 00000 n 
+0000347520 00000 n 
+0000347670 00000 n 
+0000347839 00000 n 
+0000348009 00000 n 
+0000348177 00000 n 
+0000348351 00000 n 
+0000348508 00000 n 
+0000348680 00000 n 
+0000348849 00000 n 
+0000349008 00000 n 
+0000349177 00000 n 
+0000349348 00000 n 
+0000349519 00000 n 
+0000349696 00000 n 
+0000349844 00000 n 
+0000350015 00000 n 
+0000350183 00000 n 
+0000350341 00000 n 
+0000350512 00000 n 
+0000350681 00000 n 
+0000350850 00000 n 
+0000351005 00000 n 
+0000353010 00000 n 
+0000353183 00000 n 
+0000353354 00000 n 
+0000353500 00000 n 
+0000353670 00000 n 
+0000353838 00000 n 
+0000351238 00000 n 
+0000345796 00000 n 
+0000344632 00000 n 
+0000351175 00000 n 
+0001782780 00000 n 
+0001805435 00000 n 
+0001913133 00000 n 
+0001957383 00000 n 
+0001974432 00000 n 
+0002015590 00000 n 
+0002024147 00000 n 
+0002199694 00000 n 
+0000354008 00000 n 
+0000354157 00000 n 
+0000354333 00000 n 
+0000354505 00000 n 
+0000354681 00000 n 
+0000354858 00000 n 
+0000355028 00000 n 
+0000355196 00000 n 
+0000355364 00000 n 
+0000355533 00000 n 
+0000355686 00000 n 
+0000355855 00000 n 
+0000356007 00000 n 
+0000356175 00000 n 
+0000356321 00000 n 
+0000356490 00000 n 
+0000356667 00000 n 
+0000356830 00000 n 
+0000356999 00000 n 
+0000357149 00000 n 
+0000359019 00000 n 
+0000359188 00000 n 
+0000359364 00000 n 
+0000359513 00000 n 
+0000359682 00000 n 
+0000359832 00000 n 
+0000360001 00000 n 
+0000357379 00000 n 
+0000352641 00000 n 
+0000351340 00000 n 
+0000357316 00000 n 
+0005132156 00000 n 
+0003318578 00000 n 
+0003363790 00000 n 
+0003444894 00000 n 
+0003470746 00000 n 
+0003492204 00000 n 
+0003552245 00000 n 
+0003599776 00000 n 
+0003637970 00000 n 
+0000360169 00000 n 
+0000360320 00000 n 
+0000360488 00000 n 
+0000360657 00000 n 
+0000360809 00000 n 
+0000360978 00000 n 
+0000361137 00000 n 
+0000361308 00000 n 
+0000361477 00000 n 
+0000361644 00000 n 
+0000361798 00000 n 
+0000361966 00000 n 
+0000362112 00000 n 
+0000362280 00000 n 
+0000362430 00000 n 
+0000362601 00000 n 
+0000362772 00000 n 
+0000362941 00000 n 
+0000363092 00000 n 
+0000363261 00000 n 
+0000363432 00000 n 
+0000363605 00000 n 
+0000363774 00000 n 
+0000365443 00000 n 
+0000365612 00000 n 
+0000365783 00000 n 
+0000365955 00000 n 
+0000366101 00000 n 
+0000366268 00000 n 
+0000363985 00000 n 
+0000358614 00000 n 
+0000357481 00000 n 
+0000363922 00000 n 
+0003658877 00000 n 
+0003664559 00000 n 
+0003678504 00000 n 
+0003682651 00000 n 
+0003711628 00000 n 
+0003738804 00000 n 
+0003759802 00000 n 
+0003790013 00000 n 
+0003814736 00000 n 
+0003885050 00000 n 
+0000366420 00000 n 
+0000366591 00000 n 
+0000366760 00000 n 
+0000366931 00000 n 
+0000367084 00000 n 
+0000367255 00000 n 
+0000367424 00000 n 
+0000367579 00000 n 
+0000367750 00000 n 
+0000367919 00000 n 
+0000368088 00000 n 
+0000368259 00000 n 
+0000368407 00000 n 
+0000368584 00000 n 
+0000368753 00000 n 
+0000368922 00000 n 
+0000369076 00000 n 
+0000369257 00000 n 
+0000369407 00000 n 
+0000369638 00000 n 
+0000365083 00000 n 
+0000364087 00000 n 
+0000369575 00000 n 
+0003896518 00000 n 
+0003903442 00000 n 
+0003927929 00000 n 
+0003940412 00000 n 
+0003956661 00000 n 
+0003968475 00000 n 
+0004005124 00000 n 
+0000373658 00000 n 
+0000373409 00000 n 
+0000369740 00000 n 
+0000373532 00000 n 
+0000373595 00000 n 
+0000376240 00000 n 
+0000376410 00000 n 
+0000376580 00000 n 
+0000376748 00000 n 
+0000377168 00000 n 
+0000376069 00000 n 
+0000373774 00000 n 
+0000376917 00000 n 
+0000376980 00000 n 
+0000377043 00000 n 
+0000377105 00000 n 
+0005128938 00000 n 
+0000380786 00000 n 
+0000380349 00000 n 
+0000377312 00000 n 
+0000380472 00000 n 
+0000380535 00000 n 
+0000380598 00000 n 
+0000380660 00000 n 
+0000380723 00000 n 
+0000384791 00000 n 
+0000385084 00000 n 
+0000384647 00000 n 
+0000380902 00000 n 
+0000384959 00000 n 
+0000385022 00000 n 
+0005132282 00000 n 
+0000385968 00000 n 
+0000385722 00000 n 
+0000385214 00000 n 
+0000385845 00000 n 
+0000389322 00000 n 
+0000389652 00000 n 
+0000394361 00000 n 
+0000390175 00000 n 
+0000389160 00000 n 
+0000386070 00000 n 
+0000389805 00000 n 
+0000389488 00000 n 
+0000394518 00000 n 
+0000394677 00000 n 
+0000396151 00000 n 
+0000394199 00000 n 
+0000390305 00000 n 
+0000394836 00000 n 
+0000394899 00000 n 
+0005129085 00000 n 
+0000394961 00000 n 
+0000395024 00000 n 
+0000395087 00000 n 
+0000395150 00000 n 
+0000395213 00000 n 
+0000395276 00000 n 
+0000395339 00000 n 
+0000395402 00000 n 
+0000395465 00000 n 
+0000395528 00000 n 
+0000395652 00000 n 
+0000395713 00000 n 
+0000395776 00000 n 
+0000395839 00000 n 
+0000395901 00000 n 
+0000395964 00000 n 
+0000396027 00000 n 
+0000398535 00000 n 
+0000401383 00000 n 
+0000398597 00000 n 
+0000398288 00000 n 
+0000396308 00000 n 
+0000398411 00000 n 
+0000401446 00000 n 
+0000401134 00000 n 
+0000398699 00000 n 
+0000401257 00000 n 
+0000405570 00000 n 
+0000405727 00000 n 
+0000410311 00000 n 
+0000406948 00000 n 
+0000405417 00000 n 
+0000401548 00000 n 
+0000405884 00000 n 
+0000406008 00000 n 
+0000406071 00000 n 
+0000406133 00000 n 
+0000406196 00000 n 
+0000406259 00000 n 
+0000406322 00000 n 
+0000406385 00000 n 
+0000406448 00000 n 
+0000406511 00000 n 
+0000406573 00000 n 
+0000406696 00000 n 
+0000406759 00000 n 
+0000406822 00000 n 
+0000406885 00000 n 
+0005132408 00000 n 
+0000410480 00000 n 
+0000411555 00000 n 
+0000410158 00000 n 
+0000407105 00000 n 
+0000410626 00000 n 
+0000410811 00000 n 
+0000410873 00000 n 
+0000410995 00000 n 
+0000411058 00000 n 
+0000411121 00000 n 
+0000411184 00000 n 
+0000411308 00000 n 
+0000411370 00000 n 
+0000411432 00000 n 
+0000411494 00000 n 
+0000415113 00000 n 
+0000415265 00000 n 
+0000415416 00000 n 
+0000416062 00000 n 
+0000414951 00000 n 
+0000411713 00000 n 
+0000415568 00000 n 
+0000415631 00000 n 
+0000415694 00000 n 
+0000417288 00000 n 
+0000417041 00000 n 
+0000416192 00000 n 
+0000417164 00000 n 
+0000420476 00000 n 
+0000420677 00000 n 
+0000420826 00000 n 
+0000420984 00000 n 
+0000421139 00000 n 
+0000421297 00000 n 
+0000421763 00000 n 
+0000420287 00000 n 
+0000417404 00000 n 
+0000421456 00000 n 
+0000426028 00000 n 
+0000758325 00000 n 
+0000759331 00000 n 
+0000427158 00000 n 
+0000425658 00000 n 
+0000421865 00000 n 
+0000425781 00000 n 
+0000426091 00000 n 
+0000426154 00000 n 
+0000426217 00000 n 
+0000426280 00000 n 
+0000426343 00000 n 
+0000426406 00000 n 
+0000426468 00000 n 
+0000426531 00000 n 
+0000426594 00000 n 
+0000426657 00000 n 
+0000426720 00000 n 
+0000426783 00000 n 
+0000426846 00000 n 
+0000426909 00000 n 
+0000426972 00000 n 
+0000427035 00000 n 
+0000427096 00000 n 
+0000430727 00000 n 
+0000431035 00000 n 
+0000433405 00000 n 
+0000430565 00000 n 
+0000427315 00000 n 
+0000431190 00000 n 
+0000431253 00000 n 
+0000431316 00000 n 
+0000431377 00000 n 
+0000431438 00000 n 
+0000431499 00000 n 
+0000431562 00000 n 
+0000430882 00000 n 
+0000431625 00000 n 
+0000431688 00000 n 
+0000431751 00000 n 
+0000431812 00000 n 
+0000431875 00000 n 
+0000431936 00000 n 
+0000431997 00000 n 
+0000432058 00000 n 
+0000432121 00000 n 
+0000432182 00000 n 
+0000432242 00000 n 
+0000432303 00000 n 
+0000432364 00000 n 
+0000432425 00000 n 
+0000432486 00000 n 
+0000432547 00000 n 
+0000432608 00000 n 
+0000432669 00000 n 
+0000432730 00000 n 
+0000432790 00000 n 
+0000432851 00000 n 
+0000432912 00000 n 
+0000432973 00000 n 
+0000433034 00000 n 
+0000433095 00000 n 
+0000433156 00000 n 
+0000433217 00000 n 
+0000433280 00000 n 
+0005132534 00000 n 
+0003916861 00000 n 
+0000437984 00000 n 
+0000438134 00000 n 
+0000440866 00000 n 
+0000437831 00000 n 
+0000433535 00000 n 
+0000438288 00000 n 
+0000438351 00000 n 
+0000438414 00000 n 
+0000438477 00000 n 
+0000438540 00000 n 
+0000438603 00000 n 
+0000438666 00000 n 
+0000438729 00000 n 
+0000438792 00000 n 
+0000438855 00000 n 
+0000438918 00000 n 
+0000438981 00000 n 
+0000439044 00000 n 
+0000439107 00000 n 
+0000439170 00000 n 
+0000439232 00000 n 
+0000439295 00000 n 
+0000439358 00000 n 
+0000439421 00000 n 
+0000439484 00000 n 
+0000439547 00000 n 
+0000439672 00000 n 
+0000439735 00000 n 
+0000439798 00000 n 
+0000439861 00000 n 
+0000439924 00000 n 
+0000439986 00000 n 
+0000440049 00000 n 
+0000440112 00000 n 
+0000440175 00000 n 
+0000440238 00000 n 
+0000440301 00000 n 
+0000440364 00000 n 
+0000440427 00000 n 
+0000440490 00000 n 
+0000440553 00000 n 
+0000440616 00000 n 
+0000440679 00000 n 
+0000440742 00000 n 
+0000440804 00000 n 
+0000444688 00000 n 
+0000445216 00000 n 
+0000444544 00000 n 
+0000441023 00000 n 
+0000444839 00000 n 
+0000444902 00000 n 
+0000444965 00000 n 
+0000445028 00000 n 
+0000445091 00000 n 
+0002218689 00000 n 
+0000449533 00000 n 
+0000453356 00000 n 
+0000449389 00000 n 
+0000445360 00000 n 
+0000449688 00000 n 
+0000449751 00000 n 
+0000449814 00000 n 
+0000449877 00000 n 
+0000449940 00000 n 
+0000450003 00000 n 
+0000450066 00000 n 
+0000450129 00000 n 
+0000450192 00000 n 
+0000450255 00000 n 
+0000450316 00000 n 
+0000450379 00000 n 
+0000450442 00000 n 
+0000450505 00000 n 
+0000450568 00000 n 
+0000450631 00000 n 
+0000450694 00000 n 
+0000450757 00000 n 
+0000450820 00000 n 
+0000450882 00000 n 
+0000450945 00000 n 
+0000451008 00000 n 
+0000451071 00000 n 
+0000451134 00000 n 
+0000451197 00000 n 
+0000451260 00000 n 
+0000451323 00000 n 
+0000451386 00000 n 
+0000451448 00000 n 
+0000451511 00000 n 
+0000451574 00000 n 
+0000451637 00000 n 
+0000451700 00000 n 
+0000451763 00000 n 
+0000451826 00000 n 
+0000451887 00000 n 
+0000451948 00000 n 
+0000452009 00000 n 
+0000452072 00000 n 
+0000452135 00000 n 
+0000452198 00000 n 
+0000452259 00000 n 
+0000452320 00000 n 
+0000452381 00000 n 
+0000452442 00000 n 
+0000452503 00000 n 
+0000452564 00000 n 
+0000452625 00000 n 
+0000452686 00000 n 
+0000452747 00000 n 
+0000452808 00000 n 
+0000452869 00000 n 
+0000452930 00000 n 
+0000452991 00000 n 
+0000453052 00000 n 
+0000453113 00000 n 
+0000453174 00000 n 
+0000453235 00000 n 
+0000453296 00000 n 
+0000459903 00000 n 
+0000456652 00000 n 
+0000453485 00000 n 
+0000456775 00000 n 
+0000456838 00000 n 
+0000456901 00000 n 
+0000456964 00000 n 
+0000457027 00000 n 
+0000457088 00000 n 
+0000457151 00000 n 
+0000457214 00000 n 
+0000457275 00000 n 
+0000457336 00000 n 
+0000457397 00000 n 
+0000457460 00000 n 
+0000457523 00000 n 
+0000457584 00000 n 
+0000457645 00000 n 
+0000457705 00000 n 
+0000457766 00000 n 
+0000457827 00000 n 
+0000457888 00000 n 
+0000457949 00000 n 
+0000458010 00000 n 
+0000458071 00000 n 
+0000458132 00000 n 
+0000458193 00000 n 
+0000458253 00000 n 
+0000458314 00000 n 
+0000458375 00000 n 
+0000458436 00000 n 
+0000458497 00000 n 
+0000458558 00000 n 
+0000458621 00000 n 
+0000458681 00000 n 
+0000458742 00000 n 
+0000458803 00000 n 
+0000458866 00000 n 
+0000458929 00000 n 
+0000458990 00000 n 
+0000459051 00000 n 
+0000459112 00000 n 
+0000459173 00000 n 
+0000459233 00000 n 
+0000459294 00000 n 
+0000459355 00000 n 
+0000459416 00000 n 
+0000459477 00000 n 
+0000459538 00000 n 
+0000459599 00000 n 
+0000459660 00000 n 
+0000459721 00000 n 
+0000459781 00000 n 
+0000459842 00000 n 
+0000465032 00000 n 
+0000463778 00000 n 
+0000460005 00000 n 
+0000463901 00000 n 
+0000464088 00000 n 
+0000464151 00000 n 
+0000464214 00000 n 
+0000464277 00000 n 
+0000464340 00000 n 
+0000464403 00000 n 
+0000464466 00000 n 
+0000464529 00000 n 
+0000464592 00000 n 
+0000464654 00000 n 
+0000464717 00000 n 
+0000464780 00000 n 
+0000464843 00000 n 
+0000464906 00000 n 
+0000464969 00000 n 
+0000469385 00000 n 
+0000469547 00000 n 
+0000472901 00000 n 
+0000469232 00000 n 
+0000465189 00000 n 
+0000469715 00000 n 
+0000469778 00000 n 
+0000469841 00000 n 
+0000469904 00000 n 
+0000469967 00000 n 
+0000470030 00000 n 
+0000470093 00000 n 
+0000470156 00000 n 
+0000470219 00000 n 
+0000470282 00000 n 
+0000470343 00000 n 
+0000470406 00000 n 
+0000470469 00000 n 
+0000470532 00000 n 
+0000470595 00000 n 
+0000470658 00000 n 
+0000470721 00000 n 
+0000470784 00000 n 
+0000470847 00000 n 
+0000470909 00000 n 
+0000470972 00000 n 
+0000471035 00000 n 
+0000471098 00000 n 
+0000471161 00000 n 
+0000471224 00000 n 
+0000471287 00000 n 
+0000471350 00000 n 
+0000471413 00000 n 
+0000471476 00000 n 
+0000471539 00000 n 
+0000471602 00000 n 
+0000471665 00000 n 
+0000471728 00000 n 
+0000471789 00000 n 
+0000471850 00000 n 
+0000471912 00000 n 
+0000471975 00000 n 
+0000472038 00000 n 
+0000472099 00000 n 
+0000472161 00000 n 
+0000472224 00000 n 
+0000472285 00000 n 
+0000472345 00000 n 
+0000472406 00000 n 
+0000472469 00000 n 
+0000472532 00000 n 
+0000472593 00000 n 
+0000472656 00000 n 
+0000472719 00000 n 
+0000472780 00000 n 
+0000472841 00000 n 
+0005132660 00000 n 
+0000478393 00000 n 
+0000476373 00000 n 
+0000473030 00000 n 
+0000476496 00000 n 
+0000476559 00000 n 
+0000476620 00000 n 
+0000476681 00000 n 
+0000476742 00000 n 
+0000476803 00000 n 
+0000476864 00000 n 
+0000476924 00000 n 
+0000476985 00000 n 
+0000477046 00000 n 
+0000477107 00000 n 
+0000477168 00000 n 
+0000477230 00000 n 
+0000477293 00000 n 
+0000477354 00000 n 
+0000477415 00000 n 
+0000477478 00000 n 
+0000477540 00000 n 
+0000477597 00000 n 
+0000477658 00000 n 
+0000477719 00000 n 
+0000477780 00000 n 
+0000477841 00000 n 
+0000477902 00000 n 
+0000477963 00000 n 
+0000478024 00000 n 
+0000478087 00000 n 
+0000478149 00000 n 
+0000478209 00000 n 
+0000478270 00000 n 
+0000484495 00000 n 
+0000482426 00000 n 
+0000478523 00000 n 
+0000482549 00000 n 
+0000482674 00000 n 
+0000482737 00000 n 
+0000482800 00000 n 
+0000482862 00000 n 
+0000482925 00000 n 
+0000482988 00000 n 
+0000483051 00000 n 
+0000483114 00000 n 
+0000483177 00000 n 
+0000483240 00000 n 
+0000483303 00000 n 
+0000483366 00000 n 
+0000483425 00000 n 
+0000483488 00000 n 
+0000483551 00000 n 
+0000483614 00000 n 
+0000483677 00000 n 
+0000483740 00000 n 
+0000483803 00000 n 
+0000483866 00000 n 
+0000483929 00000 n 
+0000483992 00000 n 
+0000484054 00000 n 
+0000484117 00000 n 
+0000484180 00000 n 
+0000484243 00000 n 
+0000484306 00000 n 
+0000484369 00000 n 
+0000484432 00000 n 
+0000489935 00000 n 
+0000490100 00000 n 
+0000493698 00000 n 
+0000489782 00000 n 
+0000484638 00000 n 
+0000490265 00000 n 
+0000490328 00000 n 
+0000490391 00000 n 
+0000490454 00000 n 
+0000490517 00000 n 
+0000490579 00000 n 
+0000490642 00000 n 
+0000490705 00000 n 
+0000490768 00000 n 
+0000490831 00000 n 
+0000490894 00000 n 
+0000490957 00000 n 
+0000491020 00000 n 
+0000491083 00000 n 
+0000491145 00000 n 
+0000491208 00000 n 
+0000491271 00000 n 
+0000491334 00000 n 
+0000491397 00000 n 
+0000491460 00000 n 
+0000491523 00000 n 
+0000491586 00000 n 
+0000491649 00000 n 
+0000491710 00000 n 
+0000491773 00000 n 
+0000491836 00000 n 
+0000491899 00000 n 
+0000491962 00000 n 
+0000492025 00000 n 
+0000492088 00000 n 
+0000492151 00000 n 
+0000492214 00000 n 
+0000492276 00000 n 
+0000492339 00000 n 
+0000492402 00000 n 
+0000492465 00000 n 
+0000492528 00000 n 
+0000492591 00000 n 
+0000492654 00000 n 
+0000492715 00000 n 
+0000492778 00000 n 
+0000492841 00000 n 
+0000492902 00000 n 
+0000492963 00000 n 
+0000493024 00000 n 
+0000493085 00000 n 
+0000493148 00000 n 
+0000493211 00000 n 
+0000493273 00000 n 
+0000493334 00000 n 
+0000493395 00000 n 
+0000493456 00000 n 
+0000493517 00000 n 
+0000493577 00000 n 
+0000493638 00000 n 
+0000496042 00000 n 
+0000496891 00000 n 
+0000495898 00000 n 
+0000493841 00000 n 
+0000496212 00000 n 
+0000496275 00000 n 
+0000496336 00000 n 
+0000496397 00000 n 
+0000496458 00000 n 
+0000496519 00000 n 
+0000496580 00000 n 
+0000496643 00000 n 
+0000496706 00000 n 
+0000505996 00000 n 
+0000502201 00000 n 
+0000497021 00000 n 
+0000502324 00000 n 
+0000502387 00000 n 
+0000502450 00000 n 
+0000502513 00000 n 
+0000502576 00000 n 
+0000502639 00000 n 
+0000502702 00000 n 
+0000502765 00000 n 
+0000502828 00000 n 
+0000502891 00000 n 
+0000502952 00000 n 
+0000503015 00000 n 
+0000503078 00000 n 
+0000503141 00000 n 
+0000503204 00000 n 
+0000503267 00000 n 
+0000503330 00000 n 
+0000503393 00000 n 
+0000503456 00000 n 
+0000503518 00000 n 
+0000503581 00000 n 
+0000503644 00000 n 
+0000503707 00000 n 
+0000503770 00000 n 
+0000503833 00000 n 
+0000503896 00000 n 
+0000503959 00000 n 
+0000504022 00000 n 
+0000504084 00000 n 
+0000504147 00000 n 
+0000504210 00000 n 
+0000504273 00000 n 
+0000504336 00000 n 
+0000504399 00000 n 
+0000504462 00000 n 
+0000504525 00000 n 
+0000504588 00000 n 
+0000504650 00000 n 
+0000504712 00000 n 
+0000504775 00000 n 
+0000504838 00000 n 
+0000504901 00000 n 
+0000504962 00000 n 
+0000505023 00000 n 
+0000505084 00000 n 
+0000505145 00000 n 
+0000505206 00000 n 
+0000505267 00000 n 
+0000505327 00000 n 
+0000505388 00000 n 
+0000505449 00000 n 
+0000505510 00000 n 
+0000505571 00000 n 
+0000505632 00000 n 
+0000505693 00000 n 
+0000505754 00000 n 
+0000505815 00000 n 
+0000505875 00000 n 
+0000505936 00000 n 
+0000509182 00000 n 
+0000516497 00000 n 
+0000512582 00000 n 
+0000509038 00000 n 
+0000506139 00000 n 
+0000509334 00000 n 
+0000509397 00000 n 
+0000509458 00000 n 
+0000509519 00000 n 
+0000509580 00000 n 
+0000509641 00000 n 
+0000509702 00000 n 
+0000509762 00000 n 
+0000509823 00000 n 
+0000509884 00000 n 
+0000509945 00000 n 
+0000510006 00000 n 
+0000510067 00000 n 
+0000510128 00000 n 
+0000510190 00000 n 
+0000510253 00000 n 
+0000510314 00000 n 
+0000510375 00000 n 
+0000510436 00000 n 
+0000510497 00000 n 
+0000510557 00000 n 
+0000510618 00000 n 
+0000510679 00000 n 
+0000510740 00000 n 
+0000510801 00000 n 
+0000510862 00000 n 
+0000510923 00000 n 
+0000510984 00000 n 
+0000511045 00000 n 
+0000511105 00000 n 
+0000511166 00000 n 
+0000511227 00000 n 
+0000511288 00000 n 
+0000511349 00000 n 
+0000511410 00000 n 
+0000511471 00000 n 
+0000511532 00000 n 
+0000511593 00000 n 
+0000511652 00000 n 
+0000511713 00000 n 
+0000511774 00000 n 
+0000511835 00000 n 
+0000511896 00000 n 
+0000511957 00000 n 
+0000512020 00000 n 
+0000512083 00000 n 
+0000512144 00000 n 
+0000512207 00000 n 
+0000512270 00000 n 
+0000512333 00000 n 
+0000512396 00000 n 
+0000512458 00000 n 
+0000512519 00000 n 
+0005132786 00000 n 
+0000516647 00000 n 
+0000516798 00000 n 
+0000519026 00000 n 
+0000516335 00000 n 
+0000512684 00000 n 
+0000516950 00000 n 
+0000517075 00000 n 
+0000517138 00000 n 
+0000517201 00000 n 
+0000517264 00000 n 
+0000517327 00000 n 
+0000517390 00000 n 
+0000517453 00000 n 
+0000517516 00000 n 
+0000517579 00000 n 
+0000517642 00000 n 
+0000517705 00000 n 
+0000517768 00000 n 
+0000517831 00000 n 
+0000517894 00000 n 
+0000517957 00000 n 
+0000518020 00000 n 
+0000518082 00000 n 
+0000518145 00000 n 
+0000518208 00000 n 
+0000518271 00000 n 
+0000518334 00000 n 
+0000518397 00000 n 
+0000518460 00000 n 
+0000518523 00000 n 
+0000518586 00000 n 
+0000518648 00000 n 
+0000518711 00000 n 
+0000518774 00000 n 
+0000518837 00000 n 
+0000518900 00000 n 
+0000518963 00000 n 
+0000519953 00000 n 
+0000519705 00000 n 
+0000519183 00000 n 
+0000519828 00000 n 
+0000523268 00000 n 
+0000522834 00000 n 
+0000520055 00000 n 
+0000522957 00000 n 
+0000523020 00000 n 
+0000526762 00000 n 
+0000526915 00000 n 
+0000527068 00000 n 
+0000527223 00000 n 
+0000527631 00000 n 
+0000526591 00000 n 
+0000523370 00000 n 
+0000527382 00000 n 
+0000532561 00000 n 
+0000531559 00000 n 
+0000527775 00000 n 
+0000531682 00000 n 
+0000531745 00000 n 
+0000531808 00000 n 
+0000531933 00000 n 
+0000531996 00000 n 
+0000532121 00000 n 
+0000532184 00000 n 
+0000532247 00000 n 
+0000532310 00000 n 
+0000532435 00000 n 
+0000532498 00000 n 
+0000537367 00000 n 
+0000536114 00000 n 
+0000532704 00000 n 
+0000536237 00000 n 
+0000536362 00000 n 
+0000536425 00000 n 
+0000536488 00000 n 
+0000536613 00000 n 
+0000536676 00000 n 
+0000536739 00000 n 
+0000536802 00000 n 
+0000536865 00000 n 
+0000536928 00000 n 
+0000536991 00000 n 
+0000537052 00000 n 
+0000537115 00000 n 
+0000537178 00000 n 
+0000537241 00000 n 
+0000537304 00000 n 
+0005132912 00000 n 
+0000541191 00000 n 
+0000541350 00000 n 
+0000541501 00000 n 
+0000541800 00000 n 
+0000541957 00000 n 
+0000542114 00000 n 
+0000542830 00000 n 
+0000540993 00000 n 
+0000537524 00000 n 
+0000542268 00000 n 
+0000541652 00000 n 
+0000542455 00000 n 
+0000542517 00000 n 
+0000542580 00000 n 
+0000542643 00000 n 
+0000542706 00000 n 
+0000730564 00000 n 
+0000547444 00000 n 
+0000546882 00000 n 
+0000542959 00000 n 
+0000547005 00000 n 
+0000547130 00000 n 
+0000547193 00000 n 
+0000547256 00000 n 
+0000547319 00000 n 
+0000549120 00000 n 
+0000548934 00000 n 
+0000547601 00000 n 
+0000549057 00000 n 
+0000553087 00000 n 
+0000553240 00000 n 
+0000553956 00000 n 
+0000552934 00000 n 
+0000549208 00000 n 
+0000553396 00000 n 
+0000553459 00000 n 
+0000553522 00000 n 
+0000553585 00000 n 
+0000555846 00000 n 
+0000555598 00000 n 
+0000554099 00000 n 
+0000555721 00000 n 
+0000604684 00000 n 
+0000557877 00000 n 
+0000605155 00000 n 
+0000557733 00000 n 
+0000555976 00000 n 
+0000604841 00000 n 
+0000605092 00000 n 
+0005133038 00000 n 
+0000575841 00000 n 
+0000609148 00000 n 
+0000609682 00000 n 
+0000609004 00000 n 
+0000605294 00000 n 
+0000609305 00000 n 
+0000609430 00000 n 
+0000609493 00000 n 
+0000609556 00000 n 
+0000609619 00000 n 
+0000613543 00000 n 
+0000613699 00000 n 
+0000613865 00000 n 
+0000614288 00000 n 
+0000613372 00000 n 
+0000609812 00000 n 
+0000614163 00000 n 
+0000614015 00000 n 
+0000701618 00000 n 
+0000619277 00000 n 
+0000619091 00000 n 
+0000614404 00000 n 
+0000619214 00000 n 
+0000623269 00000 n 
+0000623604 00000 n 
+0000623125 00000 n 
+0000619365 00000 n 
+0000623417 00000 n 
+0000627495 00000 n 
+0000630599 00000 n 
+0000627798 00000 n 
+0000627351 00000 n 
+0000623734 00000 n 
+0000627673 00000 n 
+0000631219 00000 n 
+0000631375 00000 n 
+0000630756 00000 n 
+0000631065 00000 n 
+0000637016 00000 n 
+0000631601 00000 n 
+0000630410 00000 n 
+0000627928 00000 n 
+0000631538 00000 n 
+0000630911 00000 n 
+0005133164 00000 n 
+0000636559 00000 n 
+0000636714 00000 n 
+0000636869 00000 n 
+0000638932 00000 n 
+0000636388 00000 n 
+0000631717 00000 n 
+0000637172 00000 n 
+0000637296 00000 n 
+0000637359 00000 n 
+0000637422 00000 n 
+0000637485 00000 n 
+0000637548 00000 n 
+0000637611 00000 n 
+0000637674 00000 n 
+0000637737 00000 n 
+0000637800 00000 n 
+0000637862 00000 n 
+0000637925 00000 n 
+0000637988 00000 n 
+0000638051 00000 n 
+0000638114 00000 n 
+0000638177 00000 n 
+0000638240 00000 n 
+0000638303 00000 n 
+0000638366 00000 n 
+0000638428 00000 n 
+0000638491 00000 n 
+0000638554 00000 n 
+0000638617 00000 n 
+0000638680 00000 n 
+0000638743 00000 n 
+0000638806 00000 n 
+0000638869 00000 n 
+0000643557 00000 n 
+0000642807 00000 n 
+0000639089 00000 n 
+0000642930 00000 n 
+0000642993 00000 n 
+0000643056 00000 n 
+0000643119 00000 n 
+0000643182 00000 n 
+0000643245 00000 n 
+0000643308 00000 n 
+0000649036 00000 n 
+0000647912 00000 n 
+0000643714 00000 n 
+0000648035 00000 n 
+0000648160 00000 n 
+0000648222 00000 n 
+0000648285 00000 n 
+0000648348 00000 n 
+0000648411 00000 n 
+0000648474 00000 n 
+0000648537 00000 n 
+0000648600 00000 n 
+0000648663 00000 n 
+0000648726 00000 n 
+0000648788 00000 n 
+0000648973 00000 n 
+0000652972 00000 n 
+0000653124 00000 n 
+0000653282 00000 n 
+0000653932 00000 n 
+0000652810 00000 n 
+0000649193 00000 n 
+0000653429 00000 n 
+0000653492 00000 n 
+0000653555 00000 n 
+0000653618 00000 n 
+0000653681 00000 n 
+0000653744 00000 n 
+0000653807 00000 n 
+0001168521 00000 n 
+0000658163 00000 n 
+0000657604 00000 n 
+0000654048 00000 n 
+0000657727 00000 n 
+0000657975 00000 n 
+0000658038 00000 n 
+0000662563 00000 n 
+0000661814 00000 n 
+0000658307 00000 n 
+0000661937 00000 n 
+0000662000 00000 n 
+0000662063 00000 n 
+0000662126 00000 n 
+0000662437 00000 n 
+0000662500 00000 n 
+0005133290 00000 n 
+0000665812 00000 n 
+0000665964 00000 n 
+0000666133 00000 n 
+0000666599 00000 n 
+0000665650 00000 n 
+0000662707 00000 n 
+0000666290 00000 n 
+0000670752 00000 n 
+0000670877 00000 n 
+0000670503 00000 n 
+0000666701 00000 n 
+0000670626 00000 n 
+0000675862 00000 n 
+0000676015 00000 n 
+0000676167 00000 n 
+0000676471 00000 n 
+0000677673 00000 n 
+0000675682 00000 n 
+0000671007 00000 n 
+0000676668 00000 n 
+0000676793 00000 n 
+0000676856 00000 n 
+0000676919 00000 n 
+0000676982 00000 n 
+0000677045 00000 n 
+0000677107 00000 n 
+0000677170 00000 n 
+0000677233 00000 n 
+0000677296 00000 n 
+0000677359 00000 n 
+0000677422 00000 n 
+0000677485 00000 n 
+0000677548 00000 n 
+0000676320 00000 n 
+0000681856 00000 n 
+0000682012 00000 n 
+0000682169 00000 n 
+0000682762 00000 n 
+0000681694 00000 n 
+0000677830 00000 n 
+0000682323 00000 n 
+0000682386 00000 n 
+0000682449 00000 n 
+0000682512 00000 n 
+0000682575 00000 n 
+0001150658 00000 n 
+0000686964 00000 n 
+0000687117 00000 n 
+0000687708 00000 n 
+0000686811 00000 n 
+0000682919 00000 n 
+0000687271 00000 n 
+0000687582 00000 n 
+0000687645 00000 n 
+0005129412 00000 n 
+0001155320 00000 n 
+0000692861 00000 n 
+0000693014 00000 n 
+0000697585 00000 n 
+0000697749 00000 n 
+0000694341 00000 n 
+0000692708 00000 n 
+0000687867 00000 n 
+0000693209 00000 n 
+0000693334 00000 n 
+0000693397 00000 n 
+0000693460 00000 n 
+0000693523 00000 n 
+0000693586 00000 n 
+0000693649 00000 n 
+0000693712 00000 n 
+0000693775 00000 n 
+0000693837 00000 n 
+0000693900 00000 n 
+0000693963 00000 n 
+0000694026 00000 n 
+0000694089 00000 n 
+0000694152 00000 n 
+0000694215 00000 n 
+0000694278 00000 n 
+0005133416 00000 n 
+0000698321 00000 n 
+0000697432 00000 n 
+0000694526 00000 n 
+0000697949 00000 n 
+0000701681 00000 n 
+0000701183 00000 n 
+0000698465 00000 n 
+0000701306 00000 n 
+0000704016 00000 n 
+0000703830 00000 n 
+0000701811 00000 n 
+0000703953 00000 n 
+0000707878 00000 n 
+0000709459 00000 n 
+0000707755 00000 n 
+0000704132 00000 n 
+0000708515 00000 n 
+0000708640 00000 n 
+0000708703 00000 n 
+0000708766 00000 n 
+0000708829 00000 n 
+0000708892 00000 n 
+0000708955 00000 n 
+0000709018 00000 n 
+0000709081 00000 n 
+0000709144 00000 n 
+0000709207 00000 n 
+0000709270 00000 n 
+0000709333 00000 n 
+0000709396 00000 n 
+0000708403 00000 n 
+0000708493 00000 n 
+0000713612 00000 n 
+0000713822 00000 n 
+0000714910 00000 n 
+0000713459 00000 n 
+0000709632 00000 n 
+0000714033 00000 n 
+0000714158 00000 n 
+0000714221 00000 n 
+0000714284 00000 n 
+0000714347 00000 n 
+0000714410 00000 n 
+0000714473 00000 n 
+0000714598 00000 n 
+0000714661 00000 n 
+0000714724 00000 n 
+0000718459 00000 n 
+0000718623 00000 n 
+0000718776 00000 n 
+0000719556 00000 n 
+0000718297 00000 n 
+0000715081 00000 n 
+0000718930 00000 n 
+0000719179 00000 n 
+0000719367 00000 n 
+0000719430 00000 n 
+0000719493 00000 n 
+0005133542 00000 n 
+0000723822 00000 n 
+0000725042 00000 n 
+0000723678 00000 n 
+0000719713 00000 n 
+0000723976 00000 n 
+0000724039 00000 n 
+0000724102 00000 n 
+0000724165 00000 n 
+0000724227 00000 n 
+0000724290 00000 n 
+0000724353 00000 n 
+0000724415 00000 n 
+0000724478 00000 n 
+0000724541 00000 n 
+0000724604 00000 n 
+0000724667 00000 n 
+0000724730 00000 n 
+0000724793 00000 n 
+0000724856 00000 n 
+0000724919 00000 n 
+0000724980 00000 n 
+0000729629 00000 n 
+0000729780 00000 n 
+0000729953 00000 n 
+0000731193 00000 n 
+0000729458 00000 n 
+0000725199 00000 n 
+0000730377 00000 n 
+0000730166 00000 n 
+0005129234 00000 n 
+0000730689 00000 n 
+0000730752 00000 n 
+0000730815 00000 n 
+0000730878 00000 n 
+0000730941 00000 n 
+0000731004 00000 n 
+0000731067 00000 n 
+0000731130 00000 n 
+0000734975 00000 n 
+0000735199 00000 n 
+0000737029 00000 n 
+0000734822 00000 n 
+0000731394 00000 n 
+0000735395 00000 n 
+0000735520 00000 n 
+0000735583 00000 n 
+0000735646 00000 n 
+0000735709 00000 n 
+0000735772 00000 n 
+0000735835 00000 n 
+0000735898 00000 n 
+0000735960 00000 n 
+0000736023 00000 n 
+0000736086 00000 n 
+0000736149 00000 n 
+0000736212 00000 n 
+0000736275 00000 n 
+0000736337 00000 n 
+0000736400 00000 n 
+0000736463 00000 n 
+0000736526 00000 n 
+0000736589 00000 n 
+0000736652 00000 n 
+0000736715 00000 n 
+0000736778 00000 n 
+0000736841 00000 n 
+0000736903 00000 n 
+0000736966 00000 n 
+0000740982 00000 n 
+0000741144 00000 n 
+0000741481 00000 n 
+0000742453 00000 n 
+0000740811 00000 n 
+0000737174 00000 n 
+0000741639 00000 n 
+0000741314 00000 n 
+0000741764 00000 n 
+0000741827 00000 n 
+0000741890 00000 n 
+0000741953 00000 n 
+0000742016 00000 n 
+0000742079 00000 n 
+0000742142 00000 n 
+0000742205 00000 n 
+0000742391 00000 n 
+0000746374 00000 n 
+0000747059 00000 n 
+0000746126 00000 n 
+0000742597 00000 n 
+0000746249 00000 n 
+0000746561 00000 n 
+0000746624 00000 n 
+0000746686 00000 n 
+0000746748 00000 n 
+0000746934 00000 n 
+0000746996 00000 n 
+0000749754 00000 n 
+0000749444 00000 n 
+0000747230 00000 n 
+0000749567 00000 n 
+0005133668 00000 n 
+0000752851 00000 n 
+0000757364 00000 n 
+0000757517 00000 n 
+0000753308 00000 n 
+0000752707 00000 n 
+0000749898 00000 n 
+0000752998 00000 n 
+0000757677 00000 n 
+0000757831 00000 n 
+0000757984 00000 n 
+0000759646 00000 n 
+0000757184 00000 n 
+0000753438 00000 n 
+0000758138 00000 n 
+0000758388 00000 n 
+0000758451 00000 n 
+0000758514 00000 n 
+0000758577 00000 n 
+0000758640 00000 n 
+0000758703 00000 n 
+0000758765 00000 n 
+0000758828 00000 n 
+0000758891 00000 n 
+0000758954 00000 n 
+0000759017 00000 n 
+0000759080 00000 n 
+0000759143 00000 n 
+0000759206 00000 n 
+0000759394 00000 n 
+0000759457 00000 n 
+0000759520 00000 n 
+0000759583 00000 n 
+0000764643 00000 n 
+0000764797 00000 n 
+0000764953 00000 n 
+0000765104 00000 n 
+0000767020 00000 n 
+0000764472 00000 n 
+0000759789 00000 n 
+0000765258 00000 n 
+0000765321 00000 n 
+0000765384 00000 n 
+0000765447 00000 n 
+0000765510 00000 n 
+0000765573 00000 n 
+0000765636 00000 n 
+0000765699 00000 n 
+0000765762 00000 n 
+0000765825 00000 n 
+0000765888 00000 n 
+0000765951 00000 n 
+0000766014 00000 n 
+0000766077 00000 n 
+0000766140 00000 n 
+0000766202 00000 n 
+0000766265 00000 n 
+0000766328 00000 n 
+0000766391 00000 n 
+0000766454 00000 n 
+0000766517 00000 n 
+0000766580 00000 n 
+0000766643 00000 n 
+0000766706 00000 n 
+0000766768 00000 n 
+0000766831 00000 n 
+0000766894 00000 n 
+0000766957 00000 n 
+0000768066 00000 n 
+0000767818 00000 n 
+0000767177 00000 n 
+0000767941 00000 n 
+0000770552 00000 n 
+0000770057 00000 n 
+0000768168 00000 n 
+0000770180 00000 n 
+0000797944 00000 n 
+0000772076 00000 n 
+0000798095 00000 n 
+0000800342 00000 n 
+0000798686 00000 n 
+0000771923 00000 n 
+0000770654 00000 n 
+0000798246 00000 n 
+0000798371 00000 n 
+0000798433 00000 n 
+0000798560 00000 n 
+0000798623 00000 n 
+0005133794 00000 n 
+0000819223 00000 n 
+0000818590 00000 n 
+0000818737 00000 n 
+0000818883 00000 n 
+0000820633 00000 n 
+0000819349 00000 n 
+0000800180 00000 n 
+0000798839 00000 n 
+0000819033 00000 n 
+0000819096 00000 n 
+0000819286 00000 n 
+0004023163 00000 n 
+0000865606 00000 n 
+0000865116 00000 n 
+0000836192 00000 n 
+0000865267 00000 n 
+0000867264 00000 n 
+0000865985 00000 n 
+0000820480 00000 n 
+0000819488 00000 n 
+0000865416 00000 n 
+0000865479 00000 n 
+0000865669 00000 n 
+0000865732 00000 n 
+0000865859 00000 n 
+0000865922 00000 n 
+0000897820 00000 n 
+0000897481 00000 n 
+0000886409 00000 n 
+0000898195 00000 n 
+0000867120 00000 n 
+0000866124 00000 n 
+0000897631 00000 n 
+0000897694 00000 n 
+0000897945 00000 n 
+0000898008 00000 n 
+0000898133 00000 n 
+0000911967 00000 n 
+0000899820 00000 n 
+0000912118 00000 n 
+0000912266 00000 n 
+0000914124 00000 n 
+0000912857 00000 n 
+0000899658 00000 n 
+0000898362 00000 n 
+0000912416 00000 n 
+0000912479 00000 n 
+0000912542 00000 n 
+0000912605 00000 n 
+0000912732 00000 n 
+0000912794 00000 n 
+0000935994 00000 n 
+0000935504 00000 n 
+0000923196 00000 n 
+0000935654 00000 n 
+0000937695 00000 n 
+0000936373 00000 n 
+0000913971 00000 n 
+0000912982 00000 n 
+0000935804 00000 n 
+0000935867 00000 n 
+0000936057 00000 n 
+0000936120 00000 n 
+0000936247 00000 n 
+0000936310 00000 n 
+0000948166 00000 n 
+0000947826 00000 n 
+0000949998 00000 n 
+0000948354 00000 n 
+0000937551 00000 n 
+0000936514 00000 n 
+0000947976 00000 n 
+0000948039 00000 n 
+0000948291 00000 n 
+0005133920 00000 n 
+0000966493 00000 n 
+0000965859 00000 n 
+0000966006 00000 n 
+0000966153 00000 n 
+0000958754 00000 n 
+0000966932 00000 n 
+0000949836 00000 n 
+0000948508 00000 n 
+0000966303 00000 n 
+0000966366 00000 n 
+0000966556 00000 n 
+0000966619 00000 n 
+0000966744 00000 n 
+0000966807 00000 n 
+0000966870 00000 n 
+0000981586 00000 n 
+0000968333 00000 n 
+0000981736 00000 n 
+0000974946 00000 n 
+0000982388 00000 n 
+0000968180 00000 n 
+0000967073 00000 n 
+0000981885 00000 n 
+0000981948 00000 n 
+0000982011 00000 n 
+0000982136 00000 n 
+0000982199 00000 n 
+0000982326 00000 n 
+0001015893 00000 n 
+0000984024 00000 n 
+0001016044 00000 n 
+0001017963 00000 n 
+0001016760 00000 n 
+0000983871 00000 n 
+0000982529 00000 n 
+0001016194 00000 n 
+0001016319 00000 n 
+0001016382 00000 n 
+0001016444 00000 n 
+0001016507 00000 n 
+0001016634 00000 n 
+0001016697 00000 n 
+0001061137 00000 n 
+0001060646 00000 n 
+0001047814 00000 n 
+0001060797 00000 n 
+0001063267 00000 n 
+0001061516 00000 n 
+0001017810 00000 n 
+0001016900 00000 n 
+0001060947 00000 n 
+0001061010 00000 n 
+0001061200 00000 n 
+0001061263 00000 n 
+0001061390 00000 n 
+0001061453 00000 n 
+0001096289 00000 n 
+0001095948 00000 n 
+0001076229 00000 n 
+0001113923 00000 n 
+0001098234 00000 n 
+0001096790 00000 n 
+0001063123 00000 n 
+0001061657 00000 n 
+0001096099 00000 n 
+0001096162 00000 n 
+0001096352 00000 n 
+0001096415 00000 n 
+0001096541 00000 n 
+0001096604 00000 n 
+0001096729 00000 n 
+0001114073 00000 n 
+0001107277 00000 n 
+0001114222 00000 n 
+0001116266 00000 n 
+0001115001 00000 n 
+0001098072 00000 n 
+0001096945 00000 n 
+0001114370 00000 n 
+0001114433 00000 n 
+0001114496 00000 n 
+0001114623 00000 n 
+0001114686 00000 n 
+0001114749 00000 n 
+0001114876 00000 n 
+0001114938 00000 n 
+0005134046 00000 n 
+0001128636 00000 n 
+0001128296 00000 n 
+0001122302 00000 n 
+0001129014 00000 n 
+0001116122 00000 n 
+0001115142 00000 n 
+0001128446 00000 n 
+0001128509 00000 n 
+0001128699 00000 n 
+0001128762 00000 n 
+0001128889 00000 n 
+0001130326 00000 n 
+0001130140 00000 n 
+0001129169 00000 n 
+0001130263 00000 n 
+0001131204 00000 n 
+0001130956 00000 n 
+0001130442 00000 n 
+0001131079 00000 n 
+0001133979 00000 n 
+0001134139 00000 n 
+0001134453 00000 n 
+0001135061 00000 n 
+0001133808 00000 n 
+0001131306 00000 n 
+0001134624 00000 n 
+0001134687 00000 n 
+0001134297 00000 n 
+0003711882 00000 n 
+0001138799 00000 n 
+0001138955 00000 n 
+0001139446 00000 n 
+0001138646 00000 n 
+0001135191 00000 n 
+0001139133 00000 n 
+0001139321 00000 n 
+0001141297 00000 n 
+0001140987 00000 n 
+0001139590 00000 n 
+0001141110 00000 n 
+0005134172 00000 n 
+0001144663 00000 n 
+0001144291 00000 n 
+0001141427 00000 n 
+0001144414 00000 n 
+0001146857 00000 n 
+0001146609 00000 n 
+0001144779 00000 n 
+0001146732 00000 n 
+0001150783 00000 n 
+0001150410 00000 n 
+0001146987 00000 n 
+0001150533 00000 n 
+0001155383 00000 n 
+0001154633 00000 n 
+0001150927 00000 n 
+0001154756 00000 n 
+0001154819 00000 n 
+0001154882 00000 n 
+0001154945 00000 n 
+0001155008 00000 n 
+0001155071 00000 n 
+0001155134 00000 n 
+0001157926 00000 n 
+0001157740 00000 n 
+0001155527 00000 n 
+0001157863 00000 n 
+0005130851 00000 n 
+0001163713 00000 n 
+0001161704 00000 n 
+0001158057 00000 n 
+0001161827 00000 n 
+0001161890 00000 n 
+0001161953 00000 n 
+0001162016 00000 n 
+0001162079 00000 n 
+0001162142 00000 n 
+0001162205 00000 n 
+0001162268 00000 n 
+0001162331 00000 n 
+0001162393 00000 n 
+0001162456 00000 n 
+0001162519 00000 n 
+0001162582 00000 n 
+0001162645 00000 n 
+0001162708 00000 n 
+0001162771 00000 n 
+0001162834 00000 n 
+0001162897 00000 n 
+0001162959 00000 n 
+0001163022 00000 n 
+0001163085 00000 n 
+0001163148 00000 n 
+0001163211 00000 n 
+0001163274 00000 n 
+0001163337 00000 n 
+0001163400 00000 n 
+0001163463 00000 n 
+0001163525 00000 n 
+0001163588 00000 n 
+0005134298 00000 n 
+0001168088 00000 n 
+0001168242 00000 n 
+0001173825 00000 n 
+0001169716 00000 n 
+0001167935 00000 n 
+0001163843 00000 n 
+0001168396 00000 n 
+0001168584 00000 n 
+0001168647 00000 n 
+0001168710 00000 n 
+0001168773 00000 n 
+0001168836 00000 n 
+0001168899 00000 n 
+0001168962 00000 n 
+0001169025 00000 n 
+0001169088 00000 n 
+0001169151 00000 n 
+0001169214 00000 n 
+0001169275 00000 n 
+0001169338 00000 n 
+0001169401 00000 n 
+0001169464 00000 n 
+0001169527 00000 n 
+0001169590 00000 n 
+0001169653 00000 n 
+0001173980 00000 n 
+0001174127 00000 n 
+0001174290 00000 n 
+0001176197 00000 n 
+0001173654 00000 n 
+0001169873 00000 n 
+0001174438 00000 n 
+0001174501 00000 n 
+0001174564 00000 n 
+0001174627 00000 n 
+0001174690 00000 n 
+0001174753 00000 n 
+0001174816 00000 n 
+0001174878 00000 n 
+0001174941 00000 n 
+0001175066 00000 n 
+0001175129 00000 n 
+0001175192 00000 n 
+0001175255 00000 n 
+0001175318 00000 n 
+0001175380 00000 n 
+0001175443 00000 n 
+0001175506 00000 n 
+0001175569 00000 n 
+0001175632 00000 n 
+0001175695 00000 n 
+0001175757 00000 n 
+0001175820 00000 n 
+0001175883 00000 n 
+0001175946 00000 n 
+0001176009 00000 n 
+0001176134 00000 n 
+0001180229 00000 n 
+0001179668 00000 n 
+0001176368 00000 n 
+0001179791 00000 n 
+0001179916 00000 n 
+0001179979 00000 n 
+0001180042 00000 n 
+0001180104 00000 n 
+0001185304 00000 n 
+0001184304 00000 n 
+0001180359 00000 n 
+0001184427 00000 n 
+0001184552 00000 n 
+0001184615 00000 n 
+0001184678 00000 n 
+0001184803 00000 n 
+0001184866 00000 n 
+0001184929 00000 n 
+0001184992 00000 n 
+0001185116 00000 n 
+0001185179 00000 n 
+0001190017 00000 n 
+0001189643 00000 n 
+0001185490 00000 n 
+0001189766 00000 n 
+0001189891 00000 n 
+0001189954 00000 n 
+0001194584 00000 n 
+0001193710 00000 n 
+0001190203 00000 n 
+0001193833 00000 n 
+0001193896 00000 n 
+0001193959 00000 n 
+0001194146 00000 n 
+0001194209 00000 n 
+0001194272 00000 n 
+0001194333 00000 n 
+0001194396 00000 n 
+0001194459 00000 n 
+0005134424 00000 n 
+0001198935 00000 n 
+0001198184 00000 n 
+0001194741 00000 n 
+0001198307 00000 n 
+0001198494 00000 n 
+0001198557 00000 n 
+0001198620 00000 n 
+0001198683 00000 n 
+0001198746 00000 n 
+0001198809 00000 n 
+0001198872 00000 n 
+0001203430 00000 n 
+0001203058 00000 n 
+0001199121 00000 n 
+0001203181 00000 n 
+0001252162 00000 n 
+0001206477 00000 n 
+0001252627 00000 n 
+0001206333 00000 n 
+0001203574 00000 n 
+0001252315 00000 n 
+0001252565 00000 n 
+0001230497 00000 n 
+0001256892 00000 n 
+0001257046 00000 n 
+0001257196 00000 n 
+0001257345 00000 n 
+0001257806 00000 n 
+0001256721 00000 n 
+0001252809 00000 n 
+0001257491 00000 n 
+0001257617 00000 n 
+0001257743 00000 n 
+0001260643 00000 n 
+0001260368 00000 n 
+0001261021 00000 n 
+0001260224 00000 n 
+0001257922 00000 n 
+0001260517 00000 n 
+0001260769 00000 n 
+0001260832 00000 n 
+0001260895 00000 n 
+0001260958 00000 n 
+0001264709 00000 n 
+0001264213 00000 n 
+0001261123 00000 n 
+0001264336 00000 n 
+0005134550 00000 n 
+0001268016 00000 n 
+0001268294 00000 n 
+0001267872 00000 n 
+0001264853 00000 n 
+0001268170 00000 n 
+0001271816 00000 n 
+0001272432 00000 n 
+0001271663 00000 n 
+0001268452 00000 n 
+0001272123 00000 n 
+0001271970 00000 n 
+0001275640 00000 n 
+0001276806 00000 n 
+0001275703 00000 n 
+0001275330 00000 n 
+0001272562 00000 n 
+0001275453 00000 n 
+0001332172 00000 n 
+0001332329 00000 n 
+0001335152 00000 n 
+0001332828 00000 n 
+0001276644 00000 n 
+0001275847 00000 n 
+0001332640 00000 n 
+0001332765 00000 n 
+0001332485 00000 n 
+0001319876 00000 n 
+0001373022 00000 n 
+0001373147 00000 n 
+0001335029 00000 n 
+0001332954 00000 n 
+0001372896 00000 n 
+0001364591 00000 n 
+0001375750 00000 n 
+0001375440 00000 n 
+0001373287 00000 n 
+0001375563 00000 n 
+0005134676 00000 n 
+0001380391 00000 n 
+0001380714 00000 n 
+0001380880 00000 n 
+0001381828 00000 n 
+0001380220 00000 n 
+0001375852 00000 n 
+0001381079 00000 n 
+0001381266 00000 n 
+0001380554 00000 n 
+0001381329 00000 n 
+0001381392 00000 n 
+0001381455 00000 n 
+0001381518 00000 n 
+0001381581 00000 n 
+0001381644 00000 n 
+0001381705 00000 n 
+0001386339 00000 n 
+0001386029 00000 n 
+0001382013 00000 n 
+0001386152 00000 n 
+0001389717 00000 n 
+0001390497 00000 n 
+0001389573 00000 n 
+0001386441 00000 n 
+0001389869 00000 n 
+0001389994 00000 n 
+0001390119 00000 n 
+0001390182 00000 n 
+0001390245 00000 n 
+0001390308 00000 n 
+0001390371 00000 n 
+0001390434 00000 n 
+0001393336 00000 n 
+0001394340 00000 n 
+0001393183 00000 n 
+0001390655 00000 n 
+0001393649 00000 n 
+0001393774 00000 n 
+0001393837 00000 n 
+0001393900 00000 n 
+0001393962 00000 n 
+0001394025 00000 n 
+0001394088 00000 n 
+0001394151 00000 n 
+0001394214 00000 n 
+0001394277 00000 n 
+0001393494 00000 n 
+0001396749 00000 n 
+0001396812 00000 n 
+0001396500 00000 n 
+0001394470 00000 n 
+0001396623 00000 n 
+0001403649 00000 n 
+0001400578 00000 n 
+0001396914 00000 n 
+0001400701 00000 n 
+0001400888 00000 n 
+0001400950 00000 n 
+0001401012 00000 n 
+0001401075 00000 n 
+0001401138 00000 n 
+0001401201 00000 n 
+0001401264 00000 n 
+0001401327 00000 n 
+0001401390 00000 n 
+0001401453 00000 n 
+0001401516 00000 n 
+0001401578 00000 n 
+0001401641 00000 n 
+0001401704 00000 n 
+0001401767 00000 n 
+0001401830 00000 n 
+0001401893 00000 n 
+0001401956 00000 n 
+0001402019 00000 n 
+0001402082 00000 n 
+0001402144 00000 n 
+0001402207 00000 n 
+0001402270 00000 n 
+0001402333 00000 n 
+0001402396 00000 n 
+0001402459 00000 n 
+0001402521 00000 n 
+0001402584 00000 n 
+0001402647 00000 n 
+0001402710 00000 n 
+0001402773 00000 n 
+0001402836 00000 n 
+0001402899 00000 n 
+0001402962 00000 n 
+0001403025 00000 n 
+0001403087 00000 n 
+0001403150 00000 n 
+0001403213 00000 n 
+0001403276 00000 n 
+0001403339 00000 n 
+0001403402 00000 n 
+0001403465 00000 n 
+0001403528 00000 n 
+0001403591 00000 n 
+0005134802 00000 n 
+0001406812 00000 n 
+0001409144 00000 n 
+0001406659 00000 n 
+0001403779 00000 n 
+0001407132 00000 n 
+0001406972 00000 n 
+0001407257 00000 n 
+0001407320 00000 n 
+0001407383 00000 n 
+0001407446 00000 n 
+0001407509 00000 n 
+0001407572 00000 n 
+0001407635 00000 n 
+0001407698 00000 n 
+0001407761 00000 n 
+0001407824 00000 n 
+0001407886 00000 n 
+0001407949 00000 n 
+0001408012 00000 n 
+0001408075 00000 n 
+0001408138 00000 n 
+0001408201 00000 n 
+0001408264 00000 n 
+0001408327 00000 n 
+0001408390 00000 n 
+0001408452 00000 n 
+0001408515 00000 n 
+0001408578 00000 n 
+0001408641 00000 n 
+0001408704 00000 n 
+0001408767 00000 n 
+0001408830 00000 n 
+0001408893 00000 n 
+0001409018 00000 n 
+0001409081 00000 n 
+0001419316 00000 n 
+0001414882 00000 n 
+0001412119 00000 n 
+0001409288 00000 n 
+0001412242 00000 n 
+0001412367 00000 n 
+0001412430 00000 n 
+0001412493 00000 n 
+0001412556 00000 n 
+0001412619 00000 n 
+0001412680 00000 n 
+0001412743 00000 n 
+0001412806 00000 n 
+0001412869 00000 n 
+0001412931 00000 n 
+0001412994 00000 n 
+0001413057 00000 n 
+0001413120 00000 n 
+0001413183 00000 n 
+0001413246 00000 n 
+0001413309 00000 n 
+0001413372 00000 n 
+0001413435 00000 n 
+0001413498 00000 n 
+0001413561 00000 n 
+0001413624 00000 n 
+0001413687 00000 n 
+0001413750 00000 n 
+0001413813 00000 n 
+0001413876 00000 n 
+0001413939 00000 n 
+0001414002 00000 n 
+0001414065 00000 n 
+0001414128 00000 n 
+0001414191 00000 n 
+0001414253 00000 n 
+0001414316 00000 n 
+0001414379 00000 n 
+0001414442 00000 n 
+0001414504 00000 n 
+0001414567 00000 n 
+0001414630 00000 n 
+0001414693 00000 n 
+0001414756 00000 n 
+0001414819 00000 n 
+0001418880 00000 n 
+0001421014 00000 n 
+0001418727 00000 n 
+0001415012 00000 n 
+0001419191 00000 n 
+0001419036 00000 n 
+0001419442 00000 n 
+0001419505 00000 n 
+0001419568 00000 n 
+0001419631 00000 n 
+0001419694 00000 n 
+0001419757 00000 n 
+0001419819 00000 n 
+0001419882 00000 n 
+0001419945 00000 n 
+0001420008 00000 n 
+0001420071 00000 n 
+0001420134 00000 n 
+0001420197 00000 n 
+0001420260 00000 n 
+0001420323 00000 n 
+0001420385 00000 n 
+0001420448 00000 n 
+0001420511 00000 n 
+0001420574 00000 n 
+0001420637 00000 n 
+0001420700 00000 n 
+0001420763 00000 n 
+0001420826 00000 n 
+0001420889 00000 n 
+0001420951 00000 n 
+0001426726 00000 n 
+0001423712 00000 n 
+0001421144 00000 n 
+0001423835 00000 n 
+0001423898 00000 n 
+0001423961 00000 n 
+0001424024 00000 n 
+0001424087 00000 n 
+0001424150 00000 n 
+0001424213 00000 n 
+0001424276 00000 n 
+0001424339 00000 n 
+0001424401 00000 n 
+0001424464 00000 n 
+0001424527 00000 n 
+0001424590 00000 n 
+0001424653 00000 n 
+0001424716 00000 n 
+0001424779 00000 n 
+0001424842 00000 n 
+0001424905 00000 n 
+0001424967 00000 n 
+0001425030 00000 n 
+0001425093 00000 n 
+0001425156 00000 n 
+0001425219 00000 n 
+0001425282 00000 n 
+0001425345 00000 n 
+0001425470 00000 n 
+0001425533 00000 n 
+0001425596 00000 n 
+0001425659 00000 n 
+0001425722 00000 n 
+0001425784 00000 n 
+0001425847 00000 n 
+0001425910 00000 n 
+0001425973 00000 n 
+0001426036 00000 n 
+0001426099 00000 n 
+0001426162 00000 n 
+0001426225 00000 n 
+0001426288 00000 n 
+0001426349 00000 n 
+0001426412 00000 n 
+0001426475 00000 n 
+0001426538 00000 n 
+0001426601 00000 n 
+0001426663 00000 n 
+0001431995 00000 n 
+0001430180 00000 n 
+0001426842 00000 n 
+0001430303 00000 n 
+0001430366 00000 n 
+0001430429 00000 n 
+0001430492 00000 n 
+0001430555 00000 n 
+0001430618 00000 n 
+0001430681 00000 n 
+0001430744 00000 n 
+0001430807 00000 n 
+0001430869 00000 n 
+0001430932 00000 n 
+0001430995 00000 n 
+0001431058 00000 n 
+0001431121 00000 n 
+0001431184 00000 n 
+0001431247 00000 n 
+0001431310 00000 n 
+0001431373 00000 n 
+0001431435 00000 n 
+0001431498 00000 n 
+0001431623 00000 n 
+0001431686 00000 n 
+0001431748 00000 n 
+0001431808 00000 n 
+0001435989 00000 n 
+0001436157 00000 n 
+0001440463 00000 n 
+0001440634 00000 n 
+0001440846 00000 n 
+0001436792 00000 n 
+0001435827 00000 n 
+0001432168 00000 n 
+0001436544 00000 n 
+0001436351 00000 n 
+0005134928 00000 n 
+0001441036 00000 n 
+0001441249 00000 n 
+0001441442 00000 n 
+0001441637 00000 n 
+0001441838 00000 n 
+0001442010 00000 n 
+0001442163 00000 n 
+0001443150 00000 n 
+0001440238 00000 n 
+0001436936 00000 n 
+0001442334 00000 n 
+0001442521 00000 n 
+0001442584 00000 n 
+0001442647 00000 n 
+0001442710 00000 n 
+0001442773 00000 n 
+0001442836 00000 n 
+0001442899 00000 n 
+0001442962 00000 n 
+0001443024 00000 n 
+0001443087 00000 n 
+0001449162 00000 n 
+0001446337 00000 n 
+0001443280 00000 n 
+0001446460 00000 n 
+0001446585 00000 n 
+0001446646 00000 n 
+0001446709 00000 n 
+0001446772 00000 n 
+0001446835 00000 n 
+0001446898 00000 n 
+0001446961 00000 n 
+0001447024 00000 n 
+0001447087 00000 n 
+0001447150 00000 n 
+0001447213 00000 n 
+0001447276 00000 n 
+0001447339 00000 n 
+0001447402 00000 n 
+0001447465 00000 n 
+0001447528 00000 n 
+0001447591 00000 n 
+0001447654 00000 n 
+0001447717 00000 n 
+0001447779 00000 n 
+0001447842 00000 n 
+0001447905 00000 n 
+0001447968 00000 n 
+0001448031 00000 n 
+0001448094 00000 n 
+0001448157 00000 n 
+0001448220 00000 n 
+0001448283 00000 n 
+0001448345 00000 n 
+0001448408 00000 n 
+0001448471 00000 n 
+0001448534 00000 n 
+0001448597 00000 n 
+0001448660 00000 n 
+0001448723 00000 n 
+0001448786 00000 n 
+0001448849 00000 n 
+0001448912 00000 n 
+0001448975 00000 n 
+0001449038 00000 n 
+0001455592 00000 n 
+0001451759 00000 n 
+0001449292 00000 n 
+0001451882 00000 n 
+0001451945 00000 n 
+0001452008 00000 n 
+0001452071 00000 n 
+0001452134 00000 n 
+0001452197 00000 n 
+0001452260 00000 n 
+0001452323 00000 n 
+0001452386 00000 n 
+0001452448 00000 n 
+0001452511 00000 n 
+0001452574 00000 n 
+0001452637 00000 n 
+0001452700 00000 n 
+0001452763 00000 n 
+0001452826 00000 n 
+0001452889 00000 n 
+0001452952 00000 n 
+0001453014 00000 n 
+0001453077 00000 n 
+0001453140 00000 n 
+0001453203 00000 n 
+0001453266 00000 n 
+0001453329 00000 n 
+0001453392 00000 n 
+0001453455 00000 n 
+0001453518 00000 n 
+0001453580 00000 n 
+0001453643 00000 n 
+0001453706 00000 n 
+0001453769 00000 n 
+0001453832 00000 n 
+0001453895 00000 n 
+0001453958 00000 n 
+0001454021 00000 n 
+0001454084 00000 n 
+0001454146 00000 n 
+0001454209 00000 n 
+0001454272 00000 n 
+0001454335 00000 n 
+0001454398 00000 n 
+0001454461 00000 n 
+0001454524 00000 n 
+0001454587 00000 n 
+0001454650 00000 n 
+0001454713 00000 n 
+0001454776 00000 n 
+0001454839 00000 n 
+0001454902 00000 n 
+0001454965 00000 n 
+0001455028 00000 n 
+0001455091 00000 n 
+0001455154 00000 n 
+0001455217 00000 n 
+0001455280 00000 n 
+0001455342 00000 n 
+0001455405 00000 n 
+0001455468 00000 n 
+0001455530 00000 n 
+0001458989 00000 n 
+0001460967 00000 n 
+0001458845 00000 n 
+0001455708 00000 n 
+0001459143 00000 n 
+0001459206 00000 n 
+0001459269 00000 n 
+0001459394 00000 n 
+0001459457 00000 n 
+0001459520 00000 n 
+0001459582 00000 n 
+0001459645 00000 n 
+0001459708 00000 n 
+0001459771 00000 n 
+0001459834 00000 n 
+0001459897 00000 n 
+0001459960 00000 n 
+0001460023 00000 n 
+0001460086 00000 n 
+0001460149 00000 n 
+0001460212 00000 n 
+0001460275 00000 n 
+0001460338 00000 n 
+0001460401 00000 n 
+0001460464 00000 n 
+0001460527 00000 n 
+0001460589 00000 n 
+0001460652 00000 n 
+0001460715 00000 n 
+0001460778 00000 n 
+0001460841 00000 n 
+0001460904 00000 n 
+0001469445 00000 n 
+0001467347 00000 n 
+0001469632 00000 n 
+0001467203 00000 n 
+0001461110 00000 n 
+0001467496 00000 n 
+0001467559 00000 n 
+0001467622 00000 n 
+0001467685 00000 n 
+0001467748 00000 n 
+0001467810 00000 n 
+0001467873 00000 n 
+0001467936 00000 n 
+0001467999 00000 n 
+0001468062 00000 n 
+0001468125 00000 n 
+0001468188 00000 n 
+0001468251 00000 n 
+0001468314 00000 n 
+0001468376 00000 n 
+0001468439 00000 n 
+0001468502 00000 n 
+0001468565 00000 n 
+0001468628 00000 n 
+0001468691 00000 n 
+0001468754 00000 n 
+0001468817 00000 n 
+0001468880 00000 n 
+0001468941 00000 n 
+0001469004 00000 n 
+0001469067 00000 n 
+0001469130 00000 n 
+0001469193 00000 n 
+0001469256 00000 n 
+0001469319 00000 n 
+0001469382 00000 n 
+0001473205 00000 n 
+0001473364 00000 n 
+0001473523 00000 n 
+0001475118 00000 n 
+0001473043 00000 n 
+0001469803 00000 n 
+0001473675 00000 n 
+0001473738 00000 n 
+0001473800 00000 n 
+0001473861 00000 n 
+0001473924 00000 n 
+0001473987 00000 n 
+0001474174 00000 n 
+0001474237 00000 n 
+0001474300 00000 n 
+0001474363 00000 n 
+0001474425 00000 n 
+0001474488 00000 n 
+0001474551 00000 n 
+0001474614 00000 n 
+0001474677 00000 n 
+0001474740 00000 n 
+0001474803 00000 n 
+0001474866 00000 n 
+0001474929 00000 n 
+0001474992 00000 n 
+0001475055 00000 n 
+0005135054 00000 n 
+0001478815 00000 n 
+0001482767 00000 n 
+0001478878 00000 n 
+0001478566 00000 n 
+0001475248 00000 n 
+0001478689 00000 n 
+0001482487 00000 n 
+0001484463 00000 n 
+0001482343 00000 n 
+0001479008 00000 n 
+0001482641 00000 n 
+0001482830 00000 n 
+0001482893 00000 n 
+0001482956 00000 n 
+0001483019 00000 n 
+0001483082 00000 n 
+0001483144 00000 n 
+0001483207 00000 n 
+0001483270 00000 n 
+0001483333 00000 n 
+0001483396 00000 n 
+0001483459 00000 n 
+0001483522 00000 n 
+0001483585 00000 n 
+0001483648 00000 n 
+0001483710 00000 n 
+0001483773 00000 n 
+0001483836 00000 n 
+0001483899 00000 n 
+0001483962 00000 n 
+0001484025 00000 n 
+0001484088 00000 n 
+0001484151 00000 n 
+0001484214 00000 n 
+0001484401 00000 n 
+0001486226 00000 n 
+0001486693 00000 n 
+0001486082 00000 n 
+0001484621 00000 n 
+0001486382 00000 n 
+0001490590 00000 n 
+0001531535 00000 n 
+0001489363 00000 n 
+0001488992 00000 n 
+0001486866 00000 n 
+0001489115 00000 n 
+0001573793 00000 n 
+0001574100 00000 n 
+0001589639 00000 n 
+0001578406 00000 n 
+0001574568 00000 n 
+0001490428 00000 n 
+0001489550 00000 n 
+0001574253 00000 n 
+0001574379 00000 n 
+0001574505 00000 n 
+0001573948 00000 n 
+0001521333 00000 n 
+0001562946 00000 n 
+0001590609 00000 n 
+0001578262 00000 n 
+0001574723 00000 n 
+0001589802 00000 n 
+0001589928 00000 n 
+0001590053 00000 n 
+0001590115 00000 n 
+0001590178 00000 n 
+0001590241 00000 n 
+0001590302 00000 n 
+0001590365 00000 n 
+0001590428 00000 n 
+0001590489 00000 n 
+0001590551 00000 n 
+0005135180 00000 n 
+0001587588 00000 n 
+0001595458 00000 n 
+0001595148 00000 n 
+0001590777 00000 n 
+0001595271 00000 n 
+0001599552 00000 n 
+0001599702 00000 n 
+0001600476 00000 n 
+0001599399 00000 n 
+0001595588 00000 n 
+0001599850 00000 n 
+0001599913 00000 n 
+0001599976 00000 n 
+0001600039 00000 n 
+0001600102 00000 n 
+0001600227 00000 n 
+0001600290 00000 n 
+0001604428 00000 n 
+0001608621 00000 n 
+0001604930 00000 n 
+0001604179 00000 n 
+0001600606 00000 n 
+0001604302 00000 n 
+0001604553 00000 n 
+0001604616 00000 n 
+0001604679 00000 n 
+0001604742 00000 n 
+0001604805 00000 n 
+0001608777 00000 n 
+0001608930 00000 n 
+0001611727 00000 n 
+0001608459 00000 n 
+0001605060 00000 n 
+0001609086 00000 n 
+0001609211 00000 n 
+0001609273 00000 n 
+0001609336 00000 n 
+0001609399 00000 n 
+0001609462 00000 n 
+0001609525 00000 n 
+0001609588 00000 n 
+0001609651 00000 n 
+0001609714 00000 n 
+0001609776 00000 n 
+0001609839 00000 n 
+0001609902 00000 n 
+0001609965 00000 n 
+0001610028 00000 n 
+0001610091 00000 n 
+0001610154 00000 n 
+0001610217 00000 n 
+0001610280 00000 n 
+0001610343 00000 n 
+0001610406 00000 n 
+0001610469 00000 n 
+0001610532 00000 n 
+0001610595 00000 n 
+0001610720 00000 n 
+0001610783 00000 n 
+0001610846 00000 n 
+0001610909 00000 n 
+0001610972 00000 n 
+0001611035 00000 n 
+0001611098 00000 n 
+0001611161 00000 n 
+0001611223 00000 n 
+0001611286 00000 n 
+0001611349 00000 n 
+0001611412 00000 n 
+0001611475 00000 n 
+0001611538 00000 n 
+0001611601 00000 n 
+0001611664 00000 n 
+0001615685 00000 n 
+0001614746 00000 n 
+0001611885 00000 n 
+0001614869 00000 n 
+0001615118 00000 n 
+0001615181 00000 n 
+0001615244 00000 n 
+0001615307 00000 n 
+0001615370 00000 n 
+0001615433 00000 n 
+0001615496 00000 n 
+0001615559 00000 n 
+0001615622 00000 n 
+0001619358 00000 n 
+0001618985 00000 n 
+0001615829 00000 n 
+0001619108 00000 n 
+0005135306 00000 n 
+0001624328 00000 n 
+0001623203 00000 n 
+0001619474 00000 n 
+0001623326 00000 n 
+0001623636 00000 n 
+0001623699 00000 n 
+0001623762 00000 n 
+0001623825 00000 n 
+0001623888 00000 n 
+0001623951 00000 n 
+0001624014 00000 n 
+0001624077 00000 n 
+0001624140 00000 n 
+0001624203 00000 n 
+0001624265 00000 n 
+0001630307 00000 n 
+0001627731 00000 n 
+0001624472 00000 n 
+0001627854 00000 n 
+0001627917 00000 n 
+0001627980 00000 n 
+0001628043 00000 n 
+0001628106 00000 n 
+0001628169 00000 n 
+0001628231 00000 n 
+0001628294 00000 n 
+0001628357 00000 n 
+0001628420 00000 n 
+0001628483 00000 n 
+0001628546 00000 n 
+0001628609 00000 n 
+0001628672 00000 n 
+0001628735 00000 n 
+0001628797 00000 n 
+0001628860 00000 n 
+0001628923 00000 n 
+0001628986 00000 n 
+0001629049 00000 n 
+0001629112 00000 n 
+0001629175 00000 n 
+0001629238 00000 n 
+0001629301 00000 n 
+0001629364 00000 n 
+0001629427 00000 n 
+0001629490 00000 n 
+0001629553 00000 n 
+0001629616 00000 n 
+0001629679 00000 n 
+0001629742 00000 n 
+0001629805 00000 n 
+0001629867 00000 n 
+0001629930 00000 n 
+0001629993 00000 n 
+0001630056 00000 n 
+0001630119 00000 n 
+0001630182 00000 n 
+0001634699 00000 n 
+0001633507 00000 n 
+0001630451 00000 n 
+0001633630 00000 n 
+0001633693 00000 n 
+0001633756 00000 n 
+0001633819 00000 n 
+0001633882 00000 n 
+0001633945 00000 n 
+0001634008 00000 n 
+0001634071 00000 n 
+0001634134 00000 n 
+0001634197 00000 n 
+0001634322 00000 n 
+0001634385 00000 n 
+0001634511 00000 n 
+0001634574 00000 n 
+0001634637 00000 n 
+0001638145 00000 n 
+0001640816 00000 n 
+0001638001 00000 n 
+0001634815 00000 n 
+0001638301 00000 n 
+0001638427 00000 n 
+0001638490 00000 n 
+0001638553 00000 n 
+0001638616 00000 n 
+0001638679 00000 n 
+0001638742 00000 n 
+0001638805 00000 n 
+0001638868 00000 n 
+0001638931 00000 n 
+0001638994 00000 n 
+0001639055 00000 n 
+0001639118 00000 n 
+0001639181 00000 n 
+0001639243 00000 n 
+0001639305 00000 n 
+0001639368 00000 n 
+0001639431 00000 n 
+0001639494 00000 n 
+0001639557 00000 n 
+0001639620 00000 n 
+0001639683 00000 n 
+0001639746 00000 n 
+0001639809 00000 n 
+0001639872 00000 n 
+0001639935 00000 n 
+0001639998 00000 n 
+0001640061 00000 n 
+0001640124 00000 n 
+0001640187 00000 n 
+0001640250 00000 n 
+0001640313 00000 n 
+0001640376 00000 n 
+0001640439 00000 n 
+0001640502 00000 n 
+0001640565 00000 n 
+0001640627 00000 n 
+0001640690 00000 n 
+0001640753 00000 n 
+0001645824 00000 n 
+0001643880 00000 n 
+0001640946 00000 n 
+0001644003 00000 n 
+0001644066 00000 n 
+0001644129 00000 n 
+0001644191 00000 n 
+0001644254 00000 n 
+0001644317 00000 n 
+0001644380 00000 n 
+0001644443 00000 n 
+0001644506 00000 n 
+0001644569 00000 n 
+0001644632 00000 n 
+0001644694 00000 n 
+0001644757 00000 n 
+0001644820 00000 n 
+0001644883 00000 n 
+0001645009 00000 n 
+0001645072 00000 n 
+0001645135 00000 n 
+0001645198 00000 n 
+0001645260 00000 n 
+0001645323 00000 n 
+0001645386 00000 n 
+0001645449 00000 n 
+0001645512 00000 n 
+0001645574 00000 n 
+0001645637 00000 n 
+0001645700 00000 n 
+0001645762 00000 n 
+0001650279 00000 n 
+0001650441 00000 n 
+0001650753 00000 n 
+0001652854 00000 n 
+0001650108 00000 n 
+0001645954 00000 n 
+0001650909 00000 n 
+0001651035 00000 n 
+0001651098 00000 n 
+0001651161 00000 n 
+0001651224 00000 n 
+0001651287 00000 n 
+0001651350 00000 n 
+0001651413 00000 n 
+0001651476 00000 n 
+0001651539 00000 n 
+0001651602 00000 n 
+0001651664 00000 n 
+0001651727 00000 n 
+0001651790 00000 n 
+0001651853 00000 n 
+0001651916 00000 n 
+0001651979 00000 n 
+0001652042 00000 n 
+0001652105 00000 n 
+0001652168 00000 n 
+0001652231 00000 n 
+0001652293 00000 n 
+0001652355 00000 n 
+0001652418 00000 n 
+0001652481 00000 n 
+0001652544 00000 n 
+0001652605 00000 n 
+0001652666 00000 n 
+0001650598 00000 n 
+0001652729 00000 n 
+0005135432 00000 n 
+0001655544 00000 n 
+0001657650 00000 n 
+0001655400 00000 n 
+0001653011 00000 n 
+0001655698 00000 n 
+0001655824 00000 n 
+0001655887 00000 n 
+0001655950 00000 n 
+0001656013 00000 n 
+0001656076 00000 n 
+0001656139 00000 n 
+0001656202 00000 n 
+0001656265 00000 n 
+0001656328 00000 n 
+0001656391 00000 n 
+0001656454 00000 n 
+0001656517 00000 n 
+0001656580 00000 n 
+0001656706 00000 n 
+0001656769 00000 n 
+0001656832 00000 n 
+0001656895 00000 n 
+0001656958 00000 n 
+0001657084 00000 n 
+0001657147 00000 n 
+0001657210 00000 n 
+0001657273 00000 n 
+0001657336 00000 n 
+0001657399 00000 n 
+0001657461 00000 n 
+0001657524 00000 n 
+0001657587 00000 n 
+0001661162 00000 n 
+0001663260 00000 n 
+0001661018 00000 n 
+0001657780 00000 n 
+0001661311 00000 n 
+0001661437 00000 n 
+0001661500 00000 n 
+0001661563 00000 n 
+0001661626 00000 n 
+0001661689 00000 n 
+0001661814 00000 n 
+0001661877 00000 n 
+0001661940 00000 n 
+0001662003 00000 n 
+0001662066 00000 n 
+0001662129 00000 n 
+0001662192 00000 n 
+0001662254 00000 n 
+0001662317 00000 n 
+0001662380 00000 n 
+0001662443 00000 n 
+0001662506 00000 n 
+0001662569 00000 n 
+0001662632 00000 n 
+0001662695 00000 n 
+0001662758 00000 n 
+0001662821 00000 n 
+0001662884 00000 n 
+0001662947 00000 n 
+0001663010 00000 n 
+0001663073 00000 n 
+0001663135 00000 n 
+0001663198 00000 n 
+0001669458 00000 n 
+0001666128 00000 n 
+0001663390 00000 n 
+0001666251 00000 n 
+0001666314 00000 n 
+0001666377 00000 n 
+0001666440 00000 n 
+0001666503 00000 n 
+0001666566 00000 n 
+0001666629 00000 n 
+0001666691 00000 n 
+0001666752 00000 n 
+0001666815 00000 n 
+0001666878 00000 n 
+0001666941 00000 n 
+0001667004 00000 n 
+0001667067 00000 n 
+0001667130 00000 n 
+0001667193 00000 n 
+0001667256 00000 n 
+0001667319 00000 n 
+0001667382 00000 n 
+0001667445 00000 n 
+0001667508 00000 n 
+0001667571 00000 n 
+0001667634 00000 n 
+0001667697 00000 n 
+0001667760 00000 n 
+0001667823 00000 n 
+0001667886 00000 n 
+0001667948 00000 n 
+0001668011 00000 n 
+0001668074 00000 n 
+0001668137 00000 n 
+0001668200 00000 n 
+0001668263 00000 n 
+0001668326 00000 n 
+0001668389 00000 n 
+0001668452 00000 n 
+0001668514 00000 n 
+0001668577 00000 n 
+0001668640 00000 n 
+0001668703 00000 n 
+0001668766 00000 n 
+0001668829 00000 n 
+0001668892 00000 n 
+0001668955 00000 n 
+0001669018 00000 n 
+0001669080 00000 n 
+0001669143 00000 n 
+0001669206 00000 n 
+0001669269 00000 n 
+0001669332 00000 n 
+0001669395 00000 n 
+0001674579 00000 n 
+0001672629 00000 n 
+0001669560 00000 n 
+0001672752 00000 n 
+0001672941 00000 n 
+0001673004 00000 n 
+0001673067 00000 n 
+0001673130 00000 n 
+0001673193 00000 n 
+0001673256 00000 n 
+0001673319 00000 n 
+0001673382 00000 n 
+0001673445 00000 n 
+0001673508 00000 n 
+0001673571 00000 n 
+0001673634 00000 n 
+0001673697 00000 n 
+0001673760 00000 n 
+0001673823 00000 n 
+0001673886 00000 n 
+0001673949 00000 n 
+0001674012 00000 n 
+0001674075 00000 n 
+0001674138 00000 n 
+0001674201 00000 n 
+0001674264 00000 n 
+0001674327 00000 n 
+0001674390 00000 n 
+0001674453 00000 n 
+0001674516 00000 n 
+0001677949 00000 n 
+0001679909 00000 n 
+0001677805 00000 n 
+0001674695 00000 n 
+0001678150 00000 n 
+0001678213 00000 n 
+0001678276 00000 n 
+0001678337 00000 n 
+0001678400 00000 n 
+0001678463 00000 n 
+0001678526 00000 n 
+0001678589 00000 n 
+0001678652 00000 n 
+0001678715 00000 n 
+0001678778 00000 n 
+0001678841 00000 n 
+0001678967 00000 n 
+0001679029 00000 n 
+0001679092 00000 n 
+0001679154 00000 n 
+0001679217 00000 n 
+0001679280 00000 n 
+0001679343 00000 n 
+0001679406 00000 n 
+0001679469 00000 n 
+0001679532 00000 n 
+0001679595 00000 n 
+0001679658 00000 n 
+0001679721 00000 n 
+0001679784 00000 n 
+0001679847 00000 n 
+0001685336 00000 n 
+0001682827 00000 n 
+0001680039 00000 n 
+0001682950 00000 n 
+0001683013 00000 n 
+0001683076 00000 n 
+0001683139 00000 n 
+0001683202 00000 n 
+0001683265 00000 n 
+0001683328 00000 n 
+0001683391 00000 n 
+0001683454 00000 n 
+0001683516 00000 n 
+0001683579 00000 n 
+0001683642 00000 n 
+0001683705 00000 n 
+0001683768 00000 n 
+0001683831 00000 n 
+0001683894 00000 n 
+0001683957 00000 n 
+0001684020 00000 n 
+0001684081 00000 n 
+0001684144 00000 n 
+0001684207 00000 n 
+0001684270 00000 n 
+0001684333 00000 n 
+0001684396 00000 n 
+0001684459 00000 n 
+0001684521 00000 n 
+0001684582 00000 n 
+0001684645 00000 n 
+0001684708 00000 n 
+0001684771 00000 n 
+0001684834 00000 n 
+0001684897 00000 n 
+0001684960 00000 n 
+0001685023 00000 n 
+0001685086 00000 n 
+0001685149 00000 n 
+0001685211 00000 n 
+0005135558 00000 n 
+0001689768 00000 n 
+0001688763 00000 n 
+0001685452 00000 n 
+0001688886 00000 n 
+0001688949 00000 n 
+0001689012 00000 n 
+0001689075 00000 n 
+0001689138 00000 n 
+0001689201 00000 n 
+0001689264 00000 n 
+0001689327 00000 n 
+0001689390 00000 n 
+0001689453 00000 n 
+0001689516 00000 n 
+0001689579 00000 n 
+0001693192 00000 n 
+0001695110 00000 n 
+0001693048 00000 n 
+0001689912 00000 n 
+0001693349 00000 n 
+0001693412 00000 n 
+0001693475 00000 n 
+0001693538 00000 n 
+0001693601 00000 n 
+0001693664 00000 n 
+0001693727 00000 n 
+0001693790 00000 n 
+0001693852 00000 n 
+0001693915 00000 n 
+0001693978 00000 n 
+0001694041 00000 n 
+0001694104 00000 n 
+0001694167 00000 n 
+0001694230 00000 n 
+0001694292 00000 n 
+0001694355 00000 n 
+0001694418 00000 n 
+0001694481 00000 n 
+0001694544 00000 n 
+0001694606 00000 n 
+0001694669 00000 n 
+0001694732 00000 n 
+0001694795 00000 n 
+0001694858 00000 n 
+0001694921 00000 n 
+0001699407 00000 n 
+0001700376 00000 n 
+0001699263 00000 n 
+0001695240 00000 n 
+0001699557 00000 n 
+0001699620 00000 n 
+0001699683 00000 n 
+0001699809 00000 n 
+0001699872 00000 n 
+0001699935 00000 n 
+0001699998 00000 n 
+0001700061 00000 n 
+0001700124 00000 n 
+0001700187 00000 n 
+0001700250 00000 n 
+0001705106 00000 n 
+0001704291 00000 n 
+0001700520 00000 n 
+0001704414 00000 n 
+0001704477 00000 n 
+0001704540 00000 n 
+0001704603 00000 n 
+0001704666 00000 n 
+0001704729 00000 n 
+0001704792 00000 n 
+0001704855 00000 n 
+0001704981 00000 n 
+0001705043 00000 n 
+0001709592 00000 n 
+0001708841 00000 n 
+0001705264 00000 n 
+0001708964 00000 n 
+0001709090 00000 n 
+0001709153 00000 n 
+0001709215 00000 n 
+0001709278 00000 n 
+0001709340 00000 n 
+0001709466 00000 n 
+0001709529 00000 n 
+0001714149 00000 n 
+0001712390 00000 n 
+0001709750 00000 n 
+0001712513 00000 n 
+0001712576 00000 n 
+0001712639 00000 n 
+0001712702 00000 n 
+0001712765 00000 n 
+0001712828 00000 n 
+0001712891 00000 n 
+0001712954 00000 n 
+0001713017 00000 n 
+0001713080 00000 n 
+0001713143 00000 n 
+0001713332 00000 n 
+0001713395 00000 n 
+0001713458 00000 n 
+0001713521 00000 n 
+0001713584 00000 n 
+0001713647 00000 n 
+0001713710 00000 n 
+0001713773 00000 n 
+0001713835 00000 n 
+0001713898 00000 n 
+0001714024 00000 n 
+0001714087 00000 n 
+0005135684 00000 n 
+0001717943 00000 n 
+0001716625 00000 n 
+0001714279 00000 n 
+0001716748 00000 n 
+0001716811 00000 n 
+0001716874 00000 n 
+0001716937 00000 n 
+0001717000 00000 n 
+0001717063 00000 n 
+0001717126 00000 n 
+0001717378 00000 n 
+0001717441 00000 n 
+0001717504 00000 n 
+0001717565 00000 n 
+0001717691 00000 n 
+0001717754 00000 n 
+0001717817 00000 n 
+0001717880 00000 n 
+0001721558 00000 n 
+0001719988 00000 n 
+0001718073 00000 n 
+0001720111 00000 n 
+0001720237 00000 n 
+0001720300 00000 n 
+0001720363 00000 n 
+0001720426 00000 n 
+0001720489 00000 n 
+0001720552 00000 n 
+0001720615 00000 n 
+0001720678 00000 n 
+0001720741 00000 n 
+0001720803 00000 n 
+0001720866 00000 n 
+0001720929 00000 n 
+0001720991 00000 n 
+0001721054 00000 n 
+0001721117 00000 n 
+0001721180 00000 n 
+0001721243 00000 n 
+0001721306 00000 n 
+0001721369 00000 n 
+0001721432 00000 n 
+0001721495 00000 n 
+0001724841 00000 n 
+0001725310 00000 n 
+0001724697 00000 n 
+0001721688 00000 n 
+0001724995 00000 n 
+0001729968 00000 n 
+0001729719 00000 n 
+0001725440 00000 n 
+0001729842 00000 n 
+0001734324 00000 n 
+0001734012 00000 n 
+0001730112 00000 n 
+0001734135 00000 n 
+0001737992 00000 n 
+0001744764 00000 n 
+0001740397 00000 n 
+0001737848 00000 n 
+0001734468 00000 n 
+0001738146 00000 n 
+0001738398 00000 n 
+0001738461 00000 n 
+0001738524 00000 n 
+0001738587 00000 n 
+0001738649 00000 n 
+0001738712 00000 n 
+0001738775 00000 n 
+0001738838 00000 n 
+0001738901 00000 n 
+0001738964 00000 n 
+0001739027 00000 n 
+0001739090 00000 n 
+0001739153 00000 n 
+0001739216 00000 n 
+0001739279 00000 n 
+0001739341 00000 n 
+0001739404 00000 n 
+0001739467 00000 n 
+0001739530 00000 n 
+0001739593 00000 n 
+0001739656 00000 n 
+0001739719 00000 n 
+0001739782 00000 n 
+0001739843 00000 n 
+0001739904 00000 n 
+0001739967 00000 n 
+0001740028 00000 n 
+0001740089 00000 n 
+0001740152 00000 n 
+0001740213 00000 n 
+0001740274 00000 n 
+0001740335 00000 n 
+0005135810 00000 n 
+0001747100 00000 n 
+0001744620 00000 n 
+0001740554 00000 n 
+0001744918 00000 n 
+0001745044 00000 n 
+0001745107 00000 n 
+0001745170 00000 n 
+0001745233 00000 n 
+0001745295 00000 n 
+0001745358 00000 n 
+0001745421 00000 n 
+0001745484 00000 n 
+0001745547 00000 n 
+0001745610 00000 n 
+0001745673 00000 n 
+0001745736 00000 n 
+0001745799 00000 n 
+0001745861 00000 n 
+0001745924 00000 n 
+0001745987 00000 n 
+0001746050 00000 n 
+0001746113 00000 n 
+0001746176 00000 n 
+0001746239 00000 n 
+0001746300 00000 n 
+0001746360 00000 n 
+0001746423 00000 n 
+0001746484 00000 n 
+0001746545 00000 n 
+0001746606 00000 n 
+0001746669 00000 n 
+0001746730 00000 n 
+0001746791 00000 n 
+0001746852 00000 n 
+0001746913 00000 n 
+0001746974 00000 n 
+0001752063 00000 n 
+0001754475 00000 n 
+0001751919 00000 n 
+0001747271 00000 n 
+0001752221 00000 n 
+0001752284 00000 n 
+0001752347 00000 n 
+0001752410 00000 n 
+0001752473 00000 n 
+0001752536 00000 n 
+0001752599 00000 n 
+0001752662 00000 n 
+0001752725 00000 n 
+0001752787 00000 n 
+0001752850 00000 n 
+0001752913 00000 n 
+0001752976 00000 n 
+0001753039 00000 n 
+0001753102 00000 n 
+0001753165 00000 n 
+0001753228 00000 n 
+0001753291 00000 n 
+0001753353 00000 n 
+0001753416 00000 n 
+0001753479 00000 n 
+0001753542 00000 n 
+0001753605 00000 n 
+0001753668 00000 n 
+0001753731 00000 n 
+0001753794 00000 n 
+0001753857 00000 n 
+0001753920 00000 n 
+0001753983 00000 n 
+0001754046 00000 n 
+0001754109 00000 n 
+0001754171 00000 n 
+0001754234 00000 n 
+0001754297 00000 n 
+0001754358 00000 n 
+0001754419 00000 n 
+0001759432 00000 n 
+0001759588 00000 n 
+0001762300 00000 n 
+0001759279 00000 n 
+0001754632 00000 n 
+0001759738 00000 n 
+0001759801 00000 n 
+0001759864 00000 n 
+0001759925 00000 n 
+0001759986 00000 n 
+0001760047 00000 n 
+0001760108 00000 n 
+0001760169 00000 n 
+0001760232 00000 n 
+0001760295 00000 n 
+0001760358 00000 n 
+0001760418 00000 n 
+0001760542 00000 n 
+0001760605 00000 n 
+0001760668 00000 n 
+0001760731 00000 n 
+0001760794 00000 n 
+0001760857 00000 n 
+0001760920 00000 n 
+0001760983 00000 n 
+0001761046 00000 n 
+0001761108 00000 n 
+0001761171 00000 n 
+0001761234 00000 n 
+0001761297 00000 n 
+0001761360 00000 n 
+0001761423 00000 n 
+0001761486 00000 n 
+0001761549 00000 n 
+0001761612 00000 n 
+0001761673 00000 n 
+0001761734 00000 n 
+0001761797 00000 n 
+0001761860 00000 n 
+0001761923 00000 n 
+0001761986 00000 n 
+0001762049 00000 n 
+0001762112 00000 n 
+0001762175 00000 n 
+0001762238 00000 n 
+0003885305 00000 n 
+0001765381 00000 n 
+0001768252 00000 n 
+0001765237 00000 n 
+0001762471 00000 n 
+0001765547 00000 n 
+0001765610 00000 n 
+0001765673 00000 n 
+0001765736 00000 n 
+0001765799 00000 n 
+0001765862 00000 n 
+0001765925 00000 n 
+0001765987 00000 n 
+0001766050 00000 n 
+0001766113 00000 n 
+0001766176 00000 n 
+0001766239 00000 n 
+0001766302 00000 n 
+0001766365 00000 n 
+0001766428 00000 n 
+0001766490 00000 n 
+0001766553 00000 n 
+0001766616 00000 n 
+0001766679 00000 n 
+0001766742 00000 n 
+0001766805 00000 n 
+0001766868 00000 n 
+0001766931 00000 n 
+0001766994 00000 n 
+0001767057 00000 n 
+0001767120 00000 n 
+0001767183 00000 n 
+0001767246 00000 n 
+0001767309 00000 n 
+0001767372 00000 n 
+0001767435 00000 n 
+0001767497 00000 n 
+0001767560 00000 n 
+0001767623 00000 n 
+0001767686 00000 n 
+0001767749 00000 n 
+0001767812 00000 n 
+0001767875 00000 n 
+0001767938 00000 n 
+0001768000 00000 n 
+0001768063 00000 n 
+0001768126 00000 n 
+0001768189 00000 n 
+0001771118 00000 n 
+0001773249 00000 n 
+0001770974 00000 n 
+0001768382 00000 n 
+0001771274 00000 n 
+0001771337 00000 n 
+0001771400 00000 n 
+0001771463 00000 n 
+0001771526 00000 n 
+0001771589 00000 n 
+0001771652 00000 n 
+0001771715 00000 n 
+0001771776 00000 n 
+0001771837 00000 n 
+0001771898 00000 n 
+0001771959 00000 n 
+0001772020 00000 n 
+0001772080 00000 n 
+0001772141 00000 n 
+0001772202 00000 n 
+0001772263 00000 n 
+0001772324 00000 n 
+0001772385 00000 n 
+0001772446 00000 n 
+0001772507 00000 n 
+0001772568 00000 n 
+0001772628 00000 n 
+0001772691 00000 n 
+0001772754 00000 n 
+0001772815 00000 n 
+0001772876 00000 n 
+0001772937 00000 n 
+0001772999 00000 n 
+0001773062 00000 n 
+0001773123 00000 n 
+0001778065 00000 n 
+0001776705 00000 n 
+0001776891 00000 n 
+0001778947 00000 n 
+0001776552 00000 n 
+0001773379 00000 n 
+0001777122 00000 n 
+0001777185 00000 n 
+0001777248 00000 n 
+0001777311 00000 n 
+0001777374 00000 n 
+0001777436 00000 n 
+0001777499 00000 n 
+0001777562 00000 n 
+0001777625 00000 n 
+0001777688 00000 n 
+0001777751 00000 n 
+0001777814 00000 n 
+0001777877 00000 n 
+0001777940 00000 n 
+0001778002 00000 n 
+0001778128 00000 n 
+0001778191 00000 n 
+0001778254 00000 n 
+0001778317 00000 n 
+0001778380 00000 n 
+0001778443 00000 n 
+0001778506 00000 n 
+0001778569 00000 n 
+0001778632 00000 n 
+0001778695 00000 n 
+0001778758 00000 n 
+0005135936 00000 n 
+0001782504 00000 n 
+0001782905 00000 n 
+0001782360 00000 n 
+0001779104 00000 n 
+0001782654 00000 n 
+0001787146 00000 n 
+0001787641 00000 n 
+0001786897 00000 n 
+0001783049 00000 n 
+0001787020 00000 n 
+0001787272 00000 n 
+0001787335 00000 n 
+0001787396 00000 n 
+0001787456 00000 n 
+0001787519 00000 n 
+0001787580 00000 n 
+0001793575 00000 n 
+0001791504 00000 n 
+0001787785 00000 n 
+0001791627 00000 n 
+0001791815 00000 n 
+0001791878 00000 n 
+0001791941 00000 n 
+0001792004 00000 n 
+0001792067 00000 n 
+0001792130 00000 n 
+0001792193 00000 n 
+0001792256 00000 n 
+0001792319 00000 n 
+0001792382 00000 n 
+0001792444 00000 n 
+0001792507 00000 n 
+0001792570 00000 n 
+0001792633 00000 n 
+0001792696 00000 n 
+0001792759 00000 n 
+0001792822 00000 n 
+0001792885 00000 n 
+0001792948 00000 n 
+0001793009 00000 n 
+0001793072 00000 n 
+0001793135 00000 n 
+0001793198 00000 n 
+0001793261 00000 n 
+0001793324 00000 n 
+0001793387 00000 n 
+0001793450 00000 n 
+0001793513 00000 n 
+0001797213 00000 n 
+0001799499 00000 n 
+0001797069 00000 n 
+0001793719 00000 n 
+0001797362 00000 n 
+0001797425 00000 n 
+0001797488 00000 n 
+0001797551 00000 n 
+0001797614 00000 n 
+0001797677 00000 n 
+0001797740 00000 n 
+0001797802 00000 n 
+0001797865 00000 n 
+0001797928 00000 n 
+0001797991 00000 n 
+0001798054 00000 n 
+0001798117 00000 n 
+0001798180 00000 n 
+0001798243 00000 n 
+0001798306 00000 n 
+0001798368 00000 n 
+0001798431 00000 n 
+0001798494 00000 n 
+0001798557 00000 n 
+0001798620 00000 n 
+0001798683 00000 n 
+0001798746 00000 n 
+0001798809 00000 n 
+0001798872 00000 n 
+0001798934 00000 n 
+0001798997 00000 n 
+0001799060 00000 n 
+0001799186 00000 n 
+0001799248 00000 n 
+0001799311 00000 n 
+0001799373 00000 n 
+0001799436 00000 n 
+0001801526 00000 n 
+0001801997 00000 n 
+0001801382 00000 n 
+0001799629 00000 n 
+0001801683 00000 n 
+0001801872 00000 n 
+0001801935 00000 n 
+0001805558 00000 n 
+0001805186 00000 n 
+0001802127 00000 n 
+0001805309 00000 n 
+0005136062 00000 n 
+0001809948 00000 n 
+0001809390 00000 n 
+0001805688 00000 n 
+0001809513 00000 n 
+0001809702 00000 n 
+0001809765 00000 n 
+0001809826 00000 n 
+0001809887 00000 n 
+0001813996 00000 n 
+0001815630 00000 n 
+0001813843 00000 n 
+0001810092 00000 n 
+0001814310 00000 n 
+0001814154 00000 n 
+0001814499 00000 n 
+0001814625 00000 n 
+0001814688 00000 n 
+0001814751 00000 n 
+0001814813 00000 n 
+0001814876 00000 n 
+0001814939 00000 n 
+0001815002 00000 n 
+0001815065 00000 n 
+0001815128 00000 n 
+0001815191 00000 n 
+0001815254 00000 n 
+0001815317 00000 n 
+0001815379 00000 n 
+0001815442 00000 n 
+0001815505 00000 n 
+0001815568 00000 n 
+0001858608 00000 n 
+0001818985 00000 n 
+0001858759 00000 n 
+0001859599 00000 n 
+0001818832 00000 n 
+0001815774 00000 n 
+0001858910 00000 n 
+0001859035 00000 n 
+0001859098 00000 n 
+0001859161 00000 n 
+0001859223 00000 n 
+0001859286 00000 n 
+0001859349 00000 n 
+0001859412 00000 n 
+0001859474 00000 n 
+0001838081 00000 n 
+0001863811 00000 n 
+0001864894 00000 n 
+0001863667 00000 n 
+0001859767 00000 n 
+0001863954 00000 n 
+0001864017 00000 n 
+0001864080 00000 n 
+0001864143 00000 n 
+0001864206 00000 n 
+0001864269 00000 n 
+0001864332 00000 n 
+0001864395 00000 n 
+0001864458 00000 n 
+0001864521 00000 n 
+0001864582 00000 n 
+0001864645 00000 n 
+0001864707 00000 n 
+0001867467 00000 n 
+0001867530 00000 n 
+0001867218 00000 n 
+0001865038 00000 n 
+0001867341 00000 n 
+0001870427 00000 n 
+0001870575 00000 n 
+0001871036 00000 n 
+0001870274 00000 n 
+0001867660 00000 n 
+0001870723 00000 n 
+0001870911 00000 n 
+0005136188 00000 n 
+0001873630 00000 n 
+0001873693 00000 n 
+0001873381 00000 n 
+0001871180 00000 n 
+0001873504 00000 n 
+0001877634 00000 n 
+0001878475 00000 n 
+0001877490 00000 n 
+0001873809 00000 n 
+0001877845 00000 n 
+0001878097 00000 n 
+0001878160 00000 n 
+0001878286 00000 n 
+0001878349 00000 n 
+0001878412 00000 n 
+0001882753 00000 n 
+0001882126 00000 n 
+0001878648 00000 n 
+0001882249 00000 n 
+0001882564 00000 n 
+0001882627 00000 n 
+0001887286 00000 n 
+0001886911 00000 n 
+0001882911 00000 n 
+0001887034 00000 n 
+0001888357 00000 n 
+0001888171 00000 n 
+0001887459 00000 n 
+0001888294 00000 n 
+0001891255 00000 n 
+0001891006 00000 n 
+0001888473 00000 n 
+0001891129 00000 n 
+0005136314 00000 n 
+0001896636 00000 n 
+0001895322 00000 n 
+0001891399 00000 n 
+0001895445 00000 n 
+0001895508 00000 n 
+0001895571 00000 n 
+0001895634 00000 n 
+0001895697 00000 n 
+0001895760 00000 n 
+0001896011 00000 n 
+0001896074 00000 n 
+0001896137 00000 n 
+0001896200 00000 n 
+0001896263 00000 n 
+0001896326 00000 n 
+0001896389 00000 n 
+0001896452 00000 n 
+0001896515 00000 n 
+0001896578 00000 n 
+0001900325 00000 n 
+0001901607 00000 n 
+0001900181 00000 n 
+0001896779 00000 n 
+0001900474 00000 n 
+0001900537 00000 n 
+0001900600 00000 n 
+0001900663 00000 n 
+0001900726 00000 n 
+0001900789 00000 n 
+0001900852 00000 n 
+0001900915 00000 n 
+0001900978 00000 n 
+0001901041 00000 n 
+0001901104 00000 n 
+0001901166 00000 n 
+0001901229 00000 n 
+0001901292 00000 n 
+0001901481 00000 n 
+0001906158 00000 n 
+0001904305 00000 n 
+0001901737 00000 n 
+0001904428 00000 n 
+0001904617 00000 n 
+0001904679 00000 n 
+0001904742 00000 n 
+0001904805 00000 n 
+0001904866 00000 n 
+0001904927 00000 n 
+0001904988 00000 n 
+0001905048 00000 n 
+0001905111 00000 n 
+0001905174 00000 n 
+0001905234 00000 n 
+0001905295 00000 n 
+0001905357 00000 n 
+0001905419 00000 n 
+0001905482 00000 n 
+0001905545 00000 n 
+0001905606 00000 n 
+0001905666 00000 n 
+0001905729 00000 n 
+0001905790 00000 n 
+0001905853 00000 n 
+0001905916 00000 n 
+0001905977 00000 n 
+0001906038 00000 n 
+0001906099 00000 n 
+0001909973 00000 n 
+0001909162 00000 n 
+0001906288 00000 n 
+0001909285 00000 n 
+0001909348 00000 n 
+0001909411 00000 n 
+0001909472 00000 n 
+0001909535 00000 n 
+0001909598 00000 n 
+0005130131 00000 n 
+0001909784 00000 n 
+0001909847 00000 n 
+0001909910 00000 n 
+0001913320 00000 n 
+0001912884 00000 n 
+0001910145 00000 n 
+0001913007 00000 n 
+0001917575 00000 n 
+0001917326 00000 n 
+0001913450 00000 n 
+0001917449 00000 n 
+0005136440 00000 n 
+0001921653 00000 n 
+0001921280 00000 n 
+0001917719 00000 n 
+0001921403 00000 n 
+0001925493 00000 n 
+0001924993 00000 n 
+0001921755 00000 n 
+0001925116 00000 n 
+0001929875 00000 n 
+0001929563 00000 n 
+0001925623 00000 n 
+0001929686 00000 n 
+0001934052 00000 n 
+0001939642 00000 n 
+0001935520 00000 n 
+0001933908 00000 n 
+0001929991 00000 n 
+0001934200 00000 n 
+0001934389 00000 n 
+0001934451 00000 n 
+0001934514 00000 n 
+0001934577 00000 n 
+0001934640 00000 n 
+0001934703 00000 n 
+0001934828 00000 n 
+0001934891 00000 n 
+0001934954 00000 n 
+0001935017 00000 n 
+0001935080 00000 n 
+0001935143 00000 n 
+0001935205 00000 n 
+0001935268 00000 n 
+0001935331 00000 n 
+0001935394 00000 n 
+0001935457 00000 n 
+0001940733 00000 n 
+0001939498 00000 n 
+0001935677 00000 n 
+0001939790 00000 n 
+0001939853 00000 n 
+0001939915 00000 n 
+0001939978 00000 n 
+0001940041 00000 n 
+0001940104 00000 n 
+0001940167 00000 n 
+0001940230 00000 n 
+0001940356 00000 n 
+0001940419 00000 n 
+0001940482 00000 n 
+0001940545 00000 n 
+0001940608 00000 n 
+0001940670 00000 n 
+0001944933 00000 n 
+0001943304 00000 n 
+0001940890 00000 n 
+0001943427 00000 n 
+0001943490 00000 n 
+0001943553 00000 n 
+0001943616 00000 n 
+0001943679 00000 n 
+0001943742 00000 n 
+0001943805 00000 n 
+0001943868 00000 n 
+0001943931 00000 n 
+0001943993 00000 n 
+0001944119 00000 n 
+0001944182 00000 n 
+0001944245 00000 n 
+0001944308 00000 n 
+0001944371 00000 n 
+0001944434 00000 n 
+0001944560 00000 n 
+0001944623 00000 n 
+0001944686 00000 n 
+0001944749 00000 n 
+0001944812 00000 n 
+0001944875 00000 n 
+0005136566 00000 n 
+0001948707 00000 n 
+0001949637 00000 n 
+0001948563 00000 n 
+0001945049 00000 n 
+0001948882 00000 n 
+0001948945 00000 n 
+0001949008 00000 n 
+0001949071 00000 n 
+0001949134 00000 n 
+0001949197 00000 n 
+0001949260 00000 n 
+0001949323 00000 n 
+0001949386 00000 n 
+0001949449 00000 n 
+0001951786 00000 n 
+0001951973 00000 n 
+0001952161 00000 n 
+0001952338 00000 n 
+0001952508 00000 n 
+0001952883 00000 n 
+0001953258 00000 n 
+0001953949 00000 n 
+0001951570 00000 n 
+0001949753 00000 n 
+0001953445 00000 n 
+0001953571 00000 n 
+0001953634 00000 n 
+0001953697 00000 n 
+0001952696 00000 n 
+0001953071 00000 n 
+0001957099 00000 n 
+0001957635 00000 n 
+0001956955 00000 n 
+0001954065 00000 n 
+0001957257 00000 n 
+0001962779 00000 n 
+0001961775 00000 n 
+0001957751 00000 n 
+0001961898 00000 n 
+0001962024 00000 n 
+0001962087 00000 n 
+0001962150 00000 n 
+0001962276 00000 n 
+0001962339 00000 n 
+0001962464 00000 n 
+0001962527 00000 n 
+0001962590 00000 n 
+0001962716 00000 n 
+0001966300 00000 n 
+0001967350 00000 n 
+0001966156 00000 n 
+0001962922 00000 n 
+0001966470 00000 n 
+0001966596 00000 n 
+0001966659 00000 n 
+0001966722 00000 n 
+0001966784 00000 n 
+0001966910 00000 n 
+0001966973 00000 n 
+0001967036 00000 n 
+0001967099 00000 n 
+0001967162 00000 n 
+0001967225 00000 n 
+0001970503 00000 n 
+0001971162 00000 n 
+0001970359 00000 n 
+0001967479 00000 n 
+0001970659 00000 n 
+0001970911 00000 n 
+0001970974 00000 n 
+0001971037 00000 n 
+0001971099 00000 n 
+0005136692 00000 n 
+0001974808 00000 n 
+0001974183 00000 n 
+0001971319 00000 n 
+0001974306 00000 n 
+0001974493 00000 n 
+0001974556 00000 n 
+0001974619 00000 n 
+0001980627 00000 n 
+0001978646 00000 n 
+0001978209 00000 n 
+0001974965 00000 n 
+0001978332 00000 n 
+0002000084 00000 n 
+0001980504 00000 n 
+0001978762 00000 n 
+0001999832 00000 n 
+0001999958 00000 n 
+0001988590 00000 n 
+0002004500 00000 n 
+0002003813 00000 n 
+0002000238 00000 n 
+0002003936 00000 n 
+0002004062 00000 n 
+0002004125 00000 n 
+0002004187 00000 n 
+0002004248 00000 n 
+0002004311 00000 n 
+0002004374 00000 n 
+0002008468 00000 n 
+0002009634 00000 n 
+0002008324 00000 n 
+0002004630 00000 n 
+0002008631 00000 n 
+0002008883 00000 n 
+0002008946 00000 n 
+0002009009 00000 n 
+0002009135 00000 n 
+0002009198 00000 n 
+0002009261 00000 n 
+0002009324 00000 n 
+0002009387 00000 n 
+0002009450 00000 n 
+0002009513 00000 n 
+0002009576 00000 n 
+0002011523 00000 n 
+0002010959 00000 n 
+0002009778 00000 n 
+0002011082 00000 n 
+0002011145 00000 n 
+0002011208 00000 n 
+0002011271 00000 n 
+0002011334 00000 n 
+0002011397 00000 n 
+0002011460 00000 n 
+0005136818 00000 n 
+0002015078 00000 n 
+0002015314 00000 n 
+0002016659 00000 n 
+0002014925 00000 n 
+0002011625 00000 n 
+0002015464 00000 n 
+0002015716 00000 n 
+0002015778 00000 n 
+0002015841 00000 n 
+0002015904 00000 n 
+0002015967 00000 n 
+0002016030 00000 n 
+0002016093 00000 n 
+0002016156 00000 n 
+0002016219 00000 n 
+0002016282 00000 n 
+0002016345 00000 n 
+0002016408 00000 n 
+0002016470 00000 n 
+0002016533 00000 n 
+0002016596 00000 n 
+0002020421 00000 n 
+0002019543 00000 n 
+0002016830 00000 n 
+0002019666 00000 n 
+0002019855 00000 n 
+0002019917 00000 n 
+0002019980 00000 n 
+0002020043 00000 n 
+0002020106 00000 n 
+0002020169 00000 n 
+0002020232 00000 n 
+0002020295 00000 n 
+0002020358 00000 n 
+0002023710 00000 n 
+0002024336 00000 n 
+0002023557 00000 n 
+0002020550 00000 n 
+0002024021 00000 n 
+0002023866 00000 n 
+0002027407 00000 n 
+0002028251 00000 n 
+0002027263 00000 n 
+0002024452 00000 n 
+0002027559 00000 n 
+0002027685 00000 n 
+0002027748 00000 n 
+0002027811 00000 n 
+0002027874 00000 n 
+0002027937 00000 n 
+0002028000 00000 n 
+0002028063 00000 n 
+0002033677 00000 n 
+0002032682 00000 n 
+0002035751 00000 n 
+0002032529 00000 n 
+0002028424 00000 n 
+0002032985 00000 n 
+0002033048 00000 n 
+0002033111 00000 n 
+0002033174 00000 n 
+0002033237 00000 n 
+0002033299 00000 n 
+0002033362 00000 n 
+0002033425 00000 n 
+0002033488 00000 n 
+0002033551 00000 n 
+0002033614 00000 n 
+0002032835 00000 n 
+0002033802 00000 n 
+0002033865 00000 n 
+0002033928 00000 n 
+0002033991 00000 n 
+0002034054 00000 n 
+0002034117 00000 n 
+0002034180 00000 n 
+0002034243 00000 n 
+0002034306 00000 n 
+0002034369 00000 n 
+0002034432 00000 n 
+0002034494 00000 n 
+0002034557 00000 n 
+0002034620 00000 n 
+0002034683 00000 n 
+0002034746 00000 n 
+0002034809 00000 n 
+0002034872 00000 n 
+0002034935 00000 n 
+0002034998 00000 n 
+0002035060 00000 n 
+0002035123 00000 n 
+0002035186 00000 n 
+0002035249 00000 n 
+0002035312 00000 n 
+0002035375 00000 n 
+0002035438 00000 n 
+0002035501 00000 n 
+0002035564 00000 n 
+0002035626 00000 n 
+0002035689 00000 n 
+0002040958 00000 n 
+0002039263 00000 n 
+0002035922 00000 n 
+0002039386 00000 n 
+0002039449 00000 n 
+0002039512 00000 n 
+0002039575 00000 n 
+0002039638 00000 n 
+0002039763 00000 n 
+0002039826 00000 n 
+0002039888 00000 n 
+0002039951 00000 n 
+0002040014 00000 n 
+0002040077 00000 n 
+0002040140 00000 n 
+0002040203 00000 n 
+0002040266 00000 n 
+0002040329 00000 n 
+0002040392 00000 n 
+0002040455 00000 n 
+0002040518 00000 n 
+0002040581 00000 n 
+0002040643 00000 n 
+0002040706 00000 n 
+0002040769 00000 n 
+0002040832 00000 n 
+0002040895 00000 n 
+0005136944 00000 n 
+0002045051 00000 n 
+0002047215 00000 n 
+0002044907 00000 n 
+0002041102 00000 n 
+0002045202 00000 n 
+0002045265 00000 n 
+0002045328 00000 n 
+0002045391 00000 n 
+0002045454 00000 n 
+0002045517 00000 n 
+0002045580 00000 n 
+0002045643 00000 n 
+0002045706 00000 n 
+0002045768 00000 n 
+0002045831 00000 n 
+0002045894 00000 n 
+0002045957 00000 n 
+0002046020 00000 n 
+0002046083 00000 n 
+0002046146 00000 n 
+0002046209 00000 n 
+0002046272 00000 n 
+0002046334 00000 n 
+0002046397 00000 n 
+0002046460 00000 n 
+0002046523 00000 n 
+0002046586 00000 n 
+0002046649 00000 n 
+0002046712 00000 n 
+0002046775 00000 n 
+0002046838 00000 n 
+0002046900 00000 n 
+0002046963 00000 n 
+0002047026 00000 n 
+0002047089 00000 n 
+0002054559 00000 n 
+0002052306 00000 n 
+0002052458 00000 n 
+0002054747 00000 n 
+0002052153 00000 n 
+0002047372 00000 n 
+0002052610 00000 n 
+0002052673 00000 n 
+0002052736 00000 n 
+0002052799 00000 n 
+0002052862 00000 n 
+0002052924 00000 n 
+0002052987 00000 n 
+0002053050 00000 n 
+0002053113 00000 n 
+0002053176 00000 n 
+0002053239 00000 n 
+0002053302 00000 n 
+0002053365 00000 n 
+0002053428 00000 n 
+0002053490 00000 n 
+0002053553 00000 n 
+0002053616 00000 n 
+0002053679 00000 n 
+0002053742 00000 n 
+0002053805 00000 n 
+0002053868 00000 n 
+0002053931 00000 n 
+0002053994 00000 n 
+0002054055 00000 n 
+0002054118 00000 n 
+0002054181 00000 n 
+0002054244 00000 n 
+0002054307 00000 n 
+0002054370 00000 n 
+0002054433 00000 n 
+0002054496 00000 n 
+0002060152 00000 n 
+0002060493 00000 n 
+0002060008 00000 n 
+0002054976 00000 n 
+0002060305 00000 n 
+0002060430 00000 n 
+0002077916 00000 n 
+0002062854 00000 n 
+0002062606 00000 n 
+0002060666 00000 n 
+0002062729 00000 n 
+0002067394 00000 n 
+0002067545 00000 n 
+0002067694 00000 n 
+0002067849 00000 n 
+0002068003 00000 n 
+0002068159 00000 n 
+0002068561 00000 n 
+0002067205 00000 n 
+0002063027 00000 n 
+0002068310 00000 n 
+0002073058 00000 n 
+0002073373 00000 n 
+0002072809 00000 n 
+0002068734 00000 n 
+0002072932 00000 n 
+0002073121 00000 n 
+0002073184 00000 n 
+0002073247 00000 n 
+0002073310 00000 n 
+0005137070 00000 n 
+0002077437 00000 n 
+0002077616 00000 n 
+0002078042 00000 n 
+0002077284 00000 n 
+0002073544 00000 n 
+0002077790 00000 n 
+0002083166 00000 n 
+0002084764 00000 n 
+0002083022 00000 n 
+0002078172 00000 n 
+0002083319 00000 n 
+0002083508 00000 n 
+0002083571 00000 n 
+0002083634 00000 n 
+0002083697 00000 n 
+0002083760 00000 n 
+0002083823 00000 n 
+0002083886 00000 n 
+0002083949 00000 n 
+0002084012 00000 n 
+0002084074 00000 n 
+0002084137 00000 n 
+0002084200 00000 n 
+0002084263 00000 n 
+0002084326 00000 n 
+0002084389 00000 n 
+0002084452 00000 n 
+0002084515 00000 n 
+0002084641 00000 n 
+0002084703 00000 n 
+0002089773 00000 n 
+0002089084 00000 n 
+0002084950 00000 n 
+0002089207 00000 n 
+0002089332 00000 n 
+0002089395 00000 n 
+0002089458 00000 n 
+0002089521 00000 n 
+0002089584 00000 n 
+0002089647 00000 n 
+0002089710 00000 n 
+0002093894 00000 n 
+0002094610 00000 n 
+0002093750 00000 n 
+0002089989 00000 n 
+0002094045 00000 n 
+0002094297 00000 n 
+0002094360 00000 n 
+0002094423 00000 n 
+0002094486 00000 n 
+0002094547 00000 n 
+0002101068 00000 n 
+0002099058 00000 n 
+0002094754 00000 n 
+0002099181 00000 n 
+0002099307 00000 n 
+0002099370 00000 n 
+0002099433 00000 n 
+0002099496 00000 n 
+0002099559 00000 n 
+0002099622 00000 n 
+0002099685 00000 n 
+0002099747 00000 n 
+0002099810 00000 n 
+0002099873 00000 n 
+0002099936 00000 n 
+0002099999 00000 n 
+0002100062 00000 n 
+0002100125 00000 n 
+0002100188 00000 n 
+0002100251 00000 n 
+0002100313 00000 n 
+0002100376 00000 n 
+0002100439 00000 n 
+0002100502 00000 n 
+0002100565 00000 n 
+0002100628 00000 n 
+0002100691 00000 n 
+0002100754 00000 n 
+0002100817 00000 n 
+0002100879 00000 n 
+0002100942 00000 n 
+0002101005 00000 n 
+0002106824 00000 n 
+0002105383 00000 n 
+0002101212 00000 n 
+0002105506 00000 n 
+0002105631 00000 n 
+0002105694 00000 n 
+0002105757 00000 n 
+0002105820 00000 n 
+0002105883 00000 n 
+0002105946 00000 n 
+0002106009 00000 n 
+0002106072 00000 n 
+0002106135 00000 n 
+0002106198 00000 n 
+0002106260 00000 n 
+0002106323 00000 n 
+0002106386 00000 n 
+0002106512 00000 n 
+0002106574 00000 n 
+0002106636 00000 n 
+0002106699 00000 n 
+0002106762 00000 n 
+0005137196 00000 n 
+0002113683 00000 n 
+0002110355 00000 n 
+0002106968 00000 n 
+0002110478 00000 n 
+0002110541 00000 n 
+0002110604 00000 n 
+0002110667 00000 n 
+0002110730 00000 n 
+0002110793 00000 n 
+0002110856 00000 n 
+0002110918 00000 n 
+0002110981 00000 n 
+0002111044 00000 n 
+0002111107 00000 n 
+0002111170 00000 n 
+0002111233 00000 n 
+0002111296 00000 n 
+0002111359 00000 n 
+0002111422 00000 n 
+0002111484 00000 n 
+0002111547 00000 n 
+0002111610 00000 n 
+0002111673 00000 n 
+0002111736 00000 n 
+0002111799 00000 n 
+0002111862 00000 n 
+0002111925 00000 n 
+0002111988 00000 n 
+0002112050 00000 n 
+0002112113 00000 n 
+0002112238 00000 n 
+0002112301 00000 n 
+0002112364 00000 n 
+0002112426 00000 n 
+0002112489 00000 n 
+0002112552 00000 n 
+0002112615 00000 n 
+0002112678 00000 n 
+0002112741 00000 n 
+0002112804 00000 n 
+0002112867 00000 n 
+0002112930 00000 n 
+0002112992 00000 n 
+0002113055 00000 n 
+0002113118 00000 n 
+0002113181 00000 n 
+0002113244 00000 n 
+0002113307 00000 n 
+0002113370 00000 n 
+0002113433 00000 n 
+0002113496 00000 n 
+0002113558 00000 n 
+0002113621 00000 n 
+0002120152 00000 n 
+0002117639 00000 n 
+0002113813 00000 n 
+0002117762 00000 n 
+0002117825 00000 n 
+0002117888 00000 n 
+0002117951 00000 n 
+0002118014 00000 n 
+0002118077 00000 n 
+0002118140 00000 n 
+0002118202 00000 n 
+0002118265 00000 n 
+0002118328 00000 n 
+0002118391 00000 n 
+0002118454 00000 n 
+0002118517 00000 n 
+0002118580 00000 n 
+0002118643 00000 n 
+0002118769 00000 n 
+0002118832 00000 n 
+0002118895 00000 n 
+0002118958 00000 n 
+0002119021 00000 n 
+0002119083 00000 n 
+0002119146 00000 n 
+0002119209 00000 n 
+0002119272 00000 n 
+0002119335 00000 n 
+0002119398 00000 n 
+0002119461 00000 n 
+0002119524 00000 n 
+0002119587 00000 n 
+0002119650 00000 n 
+0002119713 00000 n 
+0002119776 00000 n 
+0002119839 00000 n 
+0002119964 00000 n 
+0002120027 00000 n 
+0002120090 00000 n 
+0002126664 00000 n 
+0002124151 00000 n 
+0002120296 00000 n 
+0002124274 00000 n 
+0002124337 00000 n 
+0002124400 00000 n 
+0002124463 00000 n 
+0002124526 00000 n 
+0002124589 00000 n 
+0002124652 00000 n 
+0002124714 00000 n 
+0002124777 00000 n 
+0002124840 00000 n 
+0002124903 00000 n 
+0002124966 00000 n 
+0002125029 00000 n 
+0002125092 00000 n 
+0002125155 00000 n 
+0002125218 00000 n 
+0002125280 00000 n 
+0002125343 00000 n 
+0002125406 00000 n 
+0002125469 00000 n 
+0002125532 00000 n 
+0002125595 00000 n 
+0002125658 00000 n 
+0002125721 00000 n 
+0002125784 00000 n 
+0002125846 00000 n 
+0002125909 00000 n 
+0002125972 00000 n 
+0002126035 00000 n 
+0002126098 00000 n 
+0002126161 00000 n 
+0002126224 00000 n 
+0002126287 00000 n 
+0002126350 00000 n 
+0002126412 00000 n 
+0002126538 00000 n 
+0002126601 00000 n 
+0002132541 00000 n 
+0002130153 00000 n 
+0002126794 00000 n 
+0002130276 00000 n 
+0002130339 00000 n 
+0002130402 00000 n 
+0002130528 00000 n 
+0002130591 00000 n 
+0002130654 00000 n 
+0002130717 00000 n 
+0002130780 00000 n 
+0002130843 00000 n 
+0002130906 00000 n 
+0002130969 00000 n 
+0002131032 00000 n 
+0002131094 00000 n 
+0002131157 00000 n 
+0002131220 00000 n 
+0002131283 00000 n 
+0002131346 00000 n 
+0002131409 00000 n 
+0002131472 00000 n 
+0002131535 00000 n 
+0002131598 00000 n 
+0002131659 00000 n 
+0002131785 00000 n 
+0002131848 00000 n 
+0002131911 00000 n 
+0002131974 00000 n 
+0002132037 00000 n 
+0002132100 00000 n 
+0002132163 00000 n 
+0002132226 00000 n 
+0002132289 00000 n 
+0002132352 00000 n 
+0002132415 00000 n 
+0002132478 00000 n 
+0002136834 00000 n 
+0002136081 00000 n 
+0002132699 00000 n 
+0002136204 00000 n 
+0002136393 00000 n 
+0002136456 00000 n 
+0002136519 00000 n 
+0002136582 00000 n 
+0002136645 00000 n 
+0002136771 00000 n 
+0002141617 00000 n 
+0002140738 00000 n 
+0002136992 00000 n 
+0002140861 00000 n 
+0002140924 00000 n 
+0002140987 00000 n 
+0002141050 00000 n 
+0002141113 00000 n 
+0002141176 00000 n 
+0002141239 00000 n 
+0002141302 00000 n 
+0002141365 00000 n 
+0002141428 00000 n 
+0002141491 00000 n 
+0005137322 00000 n 
+0002145669 00000 n 
+0002146517 00000 n 
+0002145525 00000 n 
+0002141775 00000 n 
+0002145824 00000 n 
+0002145887 00000 n 
+0002145950 00000 n 
+0002146013 00000 n 
+0002146076 00000 n 
+0002146202 00000 n 
+0002146265 00000 n 
+0002146328 00000 n 
+0002151339 00000 n 
+0002150150 00000 n 
+0002146661 00000 n 
+0002150273 00000 n 
+0002150336 00000 n 
+0002150399 00000 n 
+0002150462 00000 n 
+0002150525 00000 n 
+0002150588 00000 n 
+0002150651 00000 n 
+0002150713 00000 n 
+0002150774 00000 n 
+0002150836 00000 n 
+0002150899 00000 n 
+0002150962 00000 n 
+0002151025 00000 n 
+0002151088 00000 n 
+0002151151 00000 n 
+0002151214 00000 n 
+0002157785 00000 n 
+0002154076 00000 n 
+0002151497 00000 n 
+0002154199 00000 n 
+0002154262 00000 n 
+0002154325 00000 n 
+0002154388 00000 n 
+0002154451 00000 n 
+0002154514 00000 n 
+0002154577 00000 n 
+0002154640 00000 n 
+0002154703 00000 n 
+0002154765 00000 n 
+0002154828 00000 n 
+0002154891 00000 n 
+0002154954 00000 n 
+0002155017 00000 n 
+0002155080 00000 n 
+0002155143 00000 n 
+0002155206 00000 n 
+0002155269 00000 n 
+0002155331 00000 n 
+0002155394 00000 n 
+0002155457 00000 n 
+0002155520 00000 n 
+0002155583 00000 n 
+0002155646 00000 n 
+0002155709 00000 n 
+0002155772 00000 n 
+0002155834 00000 n 
+0002155897 00000 n 
+0002155960 00000 n 
+0002156023 00000 n 
+0002156086 00000 n 
+0002156149 00000 n 
+0002156212 00000 n 
+0002156275 00000 n 
+0002156337 00000 n 
+0002156400 00000 n 
+0002156463 00000 n 
+0002156526 00000 n 
+0002156589 00000 n 
+0002156652 00000 n 
+0002156715 00000 n 
+0002156778 00000 n 
+0002156840 00000 n 
+0002156903 00000 n 
+0002156966 00000 n 
+0002157029 00000 n 
+0002157092 00000 n 
+0002157155 00000 n 
+0002157218 00000 n 
+0002157281 00000 n 
+0002157344 00000 n 
+0002157407 00000 n 
+0002157470 00000 n 
+0002157533 00000 n 
+0002157596 00000 n 
+0002157659 00000 n 
+0002157722 00000 n 
+0002161802 00000 n 
+0002161490 00000 n 
+0002157901 00000 n 
+0002161613 00000 n 
+0002168271 00000 n 
+0002165633 00000 n 
+0002161960 00000 n 
+0002165756 00000 n 
+0002165819 00000 n 
+0002165882 00000 n 
+0002166007 00000 n 
+0002166070 00000 n 
+0002166133 00000 n 
+0002166196 00000 n 
+0002166259 00000 n 
+0002166322 00000 n 
+0002166385 00000 n 
+0002166448 00000 n 
+0002166511 00000 n 
+0002166574 00000 n 
+0002166637 00000 n 
+0002166700 00000 n 
+0002166763 00000 n 
+0002166826 00000 n 
+0002166889 00000 n 
+0002166952 00000 n 
+0002167014 00000 n 
+0002167077 00000 n 
+0002167140 00000 n 
+0002167203 00000 n 
+0002167266 00000 n 
+0002167329 00000 n 
+0002167392 00000 n 
+0002167455 00000 n 
+0002167518 00000 n 
+0002167580 00000 n 
+0002167643 00000 n 
+0002167706 00000 n 
+0002167769 00000 n 
+0002167832 00000 n 
+0002167895 00000 n 
+0002167958 00000 n 
+0002168021 00000 n 
+0002168084 00000 n 
+0002168146 00000 n 
+0002168209 00000 n 
+0002175055 00000 n 
+0002171285 00000 n 
+0002168415 00000 n 
+0002171408 00000 n 
+0002171471 00000 n 
+0002171534 00000 n 
+0002171597 00000 n 
+0002171660 00000 n 
+0002171723 00000 n 
+0002171786 00000 n 
+0002171848 00000 n 
+0002171911 00000 n 
+0002171974 00000 n 
+0002172037 00000 n 
+0002172100 00000 n 
+0002172163 00000 n 
+0002172226 00000 n 
+0002172289 00000 n 
+0002172352 00000 n 
+0002172414 00000 n 
+0002172477 00000 n 
+0002172540 00000 n 
+0002172603 00000 n 
+0002172666 00000 n 
+0002172729 00000 n 
+0002172792 00000 n 
+0002172855 00000 n 
+0002172918 00000 n 
+0002172981 00000 n 
+0002173044 00000 n 
+0002173107 00000 n 
+0002173170 00000 n 
+0002173233 00000 n 
+0002173296 00000 n 
+0002173359 00000 n 
+0002173422 00000 n 
+0002173485 00000 n 
+0002173547 00000 n 
+0002173610 00000 n 
+0002173673 00000 n 
+0002173736 00000 n 
+0002173799 00000 n 
+0002173862 00000 n 
+0002173925 00000 n 
+0002173988 00000 n 
+0002174051 00000 n 
+0002174112 00000 n 
+0002174175 00000 n 
+0002174238 00000 n 
+0002174301 00000 n 
+0002174364 00000 n 
+0002174427 00000 n 
+0002174490 00000 n 
+0002174553 00000 n 
+0002174616 00000 n 
+0002174679 00000 n 
+0002174742 00000 n 
+0002174805 00000 n 
+0002174868 00000 n 
+0002174930 00000 n 
+0002174993 00000 n 
+0005137448 00000 n 
+0002178800 00000 n 
+0002178957 00000 n 
+0002179112 00000 n 
+0002179291 00000 n 
+0002180226 00000 n 
+0002178629 00000 n 
+0002175157 00000 n 
+0002179471 00000 n 
+0002179534 00000 n 
+0002179597 00000 n 
+0002179660 00000 n 
+0002179723 00000 n 
+0002179786 00000 n 
+0002179849 00000 n 
+0002179911 00000 n 
+0002819961 00000 n 
+0002187736 00000 n 
+0002183590 00000 n 
+0002183026 00000 n 
+0002180356 00000 n 
+0002183149 00000 n 
+0002183401 00000 n 
+0002183464 00000 n 
+0002183527 00000 n 
+0002188324 00000 n 
+0002187592 00000 n 
+0002183706 00000 n 
+0002187947 00000 n 
+0002188073 00000 n 
+0002188135 00000 n 
+0002188198 00000 n 
+0002188261 00000 n 
+0002192412 00000 n 
+0002192593 00000 n 
+0002192750 00000 n 
+0002192904 00000 n 
+0002193702 00000 n 
+0002192241 00000 n 
+0002188468 00000 n 
+0002193072 00000 n 
+0002193450 00000 n 
+0002193513 00000 n 
+0002193576 00000 n 
+0002193639 00000 n 
+0002195476 00000 n 
+0002195227 00000 n 
+0002193860 00000 n 
+0002195350 00000 n 
+0002198885 00000 n 
+0002199054 00000 n 
+0002199213 00000 n 
+0002199385 00000 n 
+0002200009 00000 n 
+0002198714 00000 n 
+0002195592 00000 n 
+0002199568 00000 n 
+0005137574 00000 n 
+0002205035 00000 n 
+0002212088 00000 n 
+0002206705 00000 n 
+0002204891 00000 n 
+0002200167 00000 n 
+0002205195 00000 n 
+0002205321 00000 n 
+0002205384 00000 n 
+0002205447 00000 n 
+0002205510 00000 n 
+0002205573 00000 n 
+0002205635 00000 n 
+0002205761 00000 n 
+0002205824 00000 n 
+0002205887 00000 n 
+0002205950 00000 n 
+0002206013 00000 n 
+0002206076 00000 n 
+0002206139 00000 n 
+0002206202 00000 n 
+0002206264 00000 n 
+0002206327 00000 n 
+0002206390 00000 n 
+0002206453 00000 n 
+0002206516 00000 n 
+0002206579 00000 n 
+0002206642 00000 n 
+0002214135 00000 n 
+0002211944 00000 n 
+0002206905 00000 n 
+0002212247 00000 n 
+0002212373 00000 n 
+0002212436 00000 n 
+0002212499 00000 n 
+0002212562 00000 n 
+0002212625 00000 n 
+0002212687 00000 n 
+0002212750 00000 n 
+0002212813 00000 n 
+0002212876 00000 n 
+0002212939 00000 n 
+0002213002 00000 n 
+0002213065 00000 n 
+0002213128 00000 n 
+0002213191 00000 n 
+0002213253 00000 n 
+0002213316 00000 n 
+0002213379 00000 n 
+0002213442 00000 n 
+0005128790 00000 n 
+0002213505 00000 n 
+0002213568 00000 n 
+0002213631 00000 n 
+0002213694 00000 n 
+0002213757 00000 n 
+0002213820 00000 n 
+0002213883 00000 n 
+0002213946 00000 n 
+0002218752 00000 n 
+0002217812 00000 n 
+0002214336 00000 n 
+0002217935 00000 n 
+0002218061 00000 n 
+0002218124 00000 n 
+0002218187 00000 n 
+0002218248 00000 n 
+0002218311 00000 n 
+0002218374 00000 n 
+0002218437 00000 n 
+0002218500 00000 n 
+0002222462 00000 n 
+0002223062 00000 n 
+0002222318 00000 n 
+0002218897 00000 n 
+0002222622 00000 n 
+0002222685 00000 n 
+0002222748 00000 n 
+0002222811 00000 n 
+0002222874 00000 n 
+0002226383 00000 n 
+0002230509 00000 n 
+0002226786 00000 n 
+0002226239 00000 n 
+0002223234 00000 n 
+0002226534 00000 n 
+0002226660 00000 n 
+0002251767 00000 n 
+0002251492 00000 n 
+0002254706 00000 n 
+0002252019 00000 n 
+0002230365 00000 n 
+0002226916 00000 n 
+0002251641 00000 n 
+0002251956 00000 n 
+0005137700 00000 n 
+0002251303 00000 n 
+0002286267 00000 n 
+0002285990 00000 n 
+0002269963 00000 n 
+0002286519 00000 n 
+0002254562 00000 n 
+0002252181 00000 n 
+0002286141 00000 n 
+0002286456 00000 n 
+0002269777 00000 n 
+0002285803 00000 n 
+0002290489 00000 n 
+0002290920 00000 n 
+0002290345 00000 n 
+0002286710 00000 n 
+0002290668 00000 n 
+0002294864 00000 n 
+0002295048 00000 n 
+0002295667 00000 n 
+0002294711 00000 n 
+0002291093 00000 n 
+0002295226 00000 n 
+0002295415 00000 n 
+0002295478 00000 n 
+0002295541 00000 n 
+0002295604 00000 n 
+0002300184 00000 n 
+0002299245 00000 n 
+0002295854 00000 n 
+0002299368 00000 n 
+0002299493 00000 n 
+0002299556 00000 n 
+0002299619 00000 n 
+0002299682 00000 n 
+0002299745 00000 n 
+0002299808 00000 n 
+0002299871 00000 n 
+0002299933 00000 n 
+0002299995 00000 n 
+0002353344 00000 n 
+0002302631 00000 n 
+0002353644 00000 n 
+0002325243 00000 n 
+0002354236 00000 n 
+0002302469 00000 n 
+0002300328 00000 n 
+0002353795 00000 n 
+0002353494 00000 n 
+0002353984 00000 n 
+0002354173 00000 n 
+0002325056 00000 n 
+0002353155 00000 n 
+0002419295 00000 n 
+0002356845 00000 n 
+0002419450 00000 n 
+0002389701 00000 n 
+0002419984 00000 n 
+0002356692 00000 n 
+0002354455 00000 n 
+0002419606 00000 n 
+0002419795 00000 n 
+0002419921 00000 n 
+0005137826 00000 n 
+0002389512 00000 n 
+0002419106 00000 n 
+0002467883 00000 n 
+0002422380 00000 n 
+0002468180 00000 n 
+0002471394 00000 n 
+0002468645 00000 n 
+0002422218 00000 n 
+0002420189 00000 n 
+0002468330 00000 n 
+0002468031 00000 n 
+0002468519 00000 n 
+0002467694 00000 n 
+0002502273 00000 n 
+0002502399 00000 n 
+0002471271 00000 n 
+0002468821 00000 n 
+0002502147 00000 n 
+0002501958 00000 n 
+0002507269 00000 n 
+0002506579 00000 n 
+0002502575 00000 n 
+0002506702 00000 n 
+0002506765 00000 n 
+0002506828 00000 n 
+0002506954 00000 n 
+0002507017 00000 n 
+0002507080 00000 n 
+0002507143 00000 n 
+0002511923 00000 n 
+0002511170 00000 n 
+0002507442 00000 n 
+0002511293 00000 n 
+0002511482 00000 n 
+0002511545 00000 n 
+0002511671 00000 n 
+0002511734 00000 n 
+0002511797 00000 n 
+0002511860 00000 n 
+0002516146 00000 n 
+0002566696 00000 n 
+0002519783 00000 n 
+0002516751 00000 n 
+0002515999 00000 n 
+0002512096 00000 n 
+0002516299 00000 n 
+0002516428 00000 n 
+0002516493 00000 n 
+0002516622 00000 n 
+0002567172 00000 n 
+0002567013 00000 n 
+0002567612 00000 n 
+0002519604 00000 n 
+0002516939 00000 n 
+0002567354 00000 n 
+0002566855 00000 n 
+0002567483 00000 n 
+0005137953 00000 n 
+0002566506 00000 n 
+0002609721 00000 n 
+0002570278 00000 n 
+0002609876 00000 n 
+0002599906 00000 n 
+0002614141 00000 n 
+0002610355 00000 n 
+0002570119 00000 n 
+0002567790 00000 n 
+0002610033 00000 n 
+0002610162 00000 n 
+0002610291 00000 n 
+0002572678 00000 n 
+0002608122 00000 n 
+0002614321 00000 n 
+0002614503 00000 n 
+0002614690 00000 n 
+0002614899 00000 n 
+0002615078 00000 n 
+0002615256 00000 n 
+0002615469 00000 n 
+0002615620 00000 n 
+0002676352 00000 n 
+0002616287 00000 n 
+0002613912 00000 n 
+0002610527 00000 n 
+0002615771 00000 n 
+0002615964 00000 n 
+0002616029 00000 n 
+0002616094 00000 n 
+0002676847 00000 n 
+0002677039 00000 n 
+0002618535 00000 n 
+0002676504 00000 n 
+0002646597 00000 n 
+0002677168 00000 n 
+0002618376 00000 n 
+0002616418 00000 n 
+0002676654 00000 n 
+0002646409 00000 n 
+0002676162 00000 n 
+0002711336 00000 n 
+0002680583 00000 n 
+0002712156 00000 n 
+0002680424 00000 n 
+0002677348 00000 n 
+0002711640 00000 n 
+0002711769 00000 n 
+0002711834 00000 n 
+0002711898 00000 n 
+0002711489 00000 n 
+0002712027 00000 n 
+0002711146 00000 n 
+0002715679 00000 n 
+0002716180 00000 n 
+0002715530 00000 n 
+0002712361 00000 n 
+0002715859 00000 n 
+0002720447 00000 n 
+0002721218 00000 n 
+0002720288 00000 n 
+0002716339 00000 n 
+0002720769 00000 n 
+0002720609 00000 n 
+0005138086 00000 n 
+0002725759 00000 n 
+0002725914 00000 n 
+0002728235 00000 n 
+0002725600 00000 n 
+0002721378 00000 n 
+0002726097 00000 n 
+0002726225 00000 n 
+0002726290 00000 n 
+0002726355 00000 n 
+0002726420 00000 n 
+0002726485 00000 n 
+0002726550 00000 n 
+0002726615 00000 n 
+0002726680 00000 n 
+0002726745 00000 n 
+0002726810 00000 n 
+0002726875 00000 n 
+0002726940 00000 n 
+0002727005 00000 n 
+0002727070 00000 n 
+0002727134 00000 n 
+0002727199 00000 n 
+0002727264 00000 n 
+0002727329 00000 n 
+0002727394 00000 n 
+0002727459 00000 n 
+0002727524 00000 n 
+0002727589 00000 n 
+0002727653 00000 n 
+0002727781 00000 n 
+0002727846 00000 n 
+0002727911 00000 n 
+0002727976 00000 n 
+0002728041 00000 n 
+0002728106 00000 n 
+0002728170 00000 n 
+0002732056 00000 n 
+0002730891 00000 n 
+0002728394 00000 n 
+0002731018 00000 n 
+0002731083 00000 n 
+0002731148 00000 n 
+0002731213 00000 n 
+0002731278 00000 n 
+0002731343 00000 n 
+0002731408 00000 n 
+0002731473 00000 n 
+0002731538 00000 n 
+0002731603 00000 n 
+0002731668 00000 n 
+0002731733 00000 n 
+0002731798 00000 n 
+0002731862 00000 n 
+0002731927 00000 n 
+0002735627 00000 n 
+0002736066 00000 n 
+0002735478 00000 n 
+0002732216 00000 n 
+0002735810 00000 n 
+0002740407 00000 n 
+0002740697 00000 n 
+0002740258 00000 n 
+0002736225 00000 n 
+0002740569 00000 n 
+0002747729 00000 n 
+0002744489 00000 n 
+0002740842 00000 n 
+0002744616 00000 n 
+0002744745 00000 n 
+0002744810 00000 n 
+0002744875 00000 n 
+0002745004 00000 n 
+0002745069 00000 n 
+0002745134 00000 n 
+0002745198 00000 n 
+0002745263 00000 n 
+0002745328 00000 n 
+0002745393 00000 n 
+0002745458 00000 n 
+0002745523 00000 n 
+0002745588 00000 n 
+0002745653 00000 n 
+0002745718 00000 n 
+0002745783 00000 n 
+0002745848 00000 n 
+0002745913 00000 n 
+0002745978 00000 n 
+0002746043 00000 n 
+0002746108 00000 n 
+0002746173 00000 n 
+0002746238 00000 n 
+0002746303 00000 n 
+0002746368 00000 n 
+0002746432 00000 n 
+0002746497 00000 n 
+0002746562 00000 n 
+0002746627 00000 n 
+0002746692 00000 n 
+0002746757 00000 n 
+0002746822 00000 n 
+0002746887 00000 n 
+0002746952 00000 n 
+0002747016 00000 n 
+0002747081 00000 n 
+0002747146 00000 n 
+0002747211 00000 n 
+0002747276 00000 n 
+0002747341 00000 n 
+0002747406 00000 n 
+0002747471 00000 n 
+0002747536 00000 n 
+0002747600 00000 n 
+0002747665 00000 n 
+0002752948 00000 n 
+0002751004 00000 n 
+0002747874 00000 n 
+0002751131 00000 n 
+0002751196 00000 n 
+0002751261 00000 n 
+0002751326 00000 n 
+0002751391 00000 n 
+0002751456 00000 n 
+0002751521 00000 n 
+0002751585 00000 n 
+0002751650 00000 n 
+0002751715 00000 n 
+0002751780 00000 n 
+0002751845 00000 n 
+0002751910 00000 n 
+0002751975 00000 n 
+0002752040 00000 n 
+0002752105 00000 n 
+0002752169 00000 n 
+0002752234 00000 n 
+0002752299 00000 n 
+0002752364 00000 n 
+0002752493 00000 n 
+0002752558 00000 n 
+0002752623 00000 n 
+0002752688 00000 n 
+0002752753 00000 n 
+0002752818 00000 n 
+0002752883 00000 n 
+0005138219 00000 n 
+0002755922 00000 n 
+0002759417 00000 n 
+0002756980 00000 n 
+0002755773 00000 n 
+0002753122 00000 n 
+0002756073 00000 n 
+0002756202 00000 n 
+0002756267 00000 n 
+0002756332 00000 n 
+0002756397 00000 n 
+0002756462 00000 n 
+0002756527 00000 n 
+0002756656 00000 n 
+0002756721 00000 n 
+0002756786 00000 n 
+0002756851 00000 n 
+0002815835 00000 n 
+0002816094 00000 n 
+0002759290 00000 n 
+0002757139 00000 n 
+0002815706 00000 n 
+0002815964 00000 n 
+0002816029 00000 n 
+0002815516 00000 n 
+0002820993 00000 n 
+0002819705 00000 n 
+0002816286 00000 n 
+0002819832 00000 n 
+0002820089 00000 n 
+0002820154 00000 n 
+0002820219 00000 n 
+0002820284 00000 n 
+0002820413 00000 n 
+0002820478 00000 n 
+0002820543 00000 n 
+0002820608 00000 n 
+0002820673 00000 n 
+0002820738 00000 n 
+0002820803 00000 n 
+0002820868 00000 n 
+0002820933 00000 n 
+0002827032 00000 n 
+0002825091 00000 n 
+0002821152 00000 n 
+0002825218 00000 n 
+0002825347 00000 n 
+0002825411 00000 n 
+0002825476 00000 n 
+0002825541 00000 n 
+0002825670 00000 n 
+0002825735 00000 n 
+0002825800 00000 n 
+0002825865 00000 n 
+0002825930 00000 n 
+0002825995 00000 n 
+0002826060 00000 n 
+0002826125 00000 n 
+0002826190 00000 n 
+0002826255 00000 n 
+0002826319 00000 n 
+0002826384 00000 n 
+0002826449 00000 n 
+0002826514 00000 n 
+0002826579 00000 n 
+0002826644 00000 n 
+0002826709 00000 n 
+0002826774 00000 n 
+0002826839 00000 n 
+0002826903 00000 n 
+0002826968 00000 n 
+0002832607 00000 n 
+0002831135 00000 n 
+0002827191 00000 n 
+0002831262 00000 n 
+0002831327 00000 n 
+0002831392 00000 n 
+0002831457 00000 n 
+0002831522 00000 n 
+0002831587 00000 n 
+0002831652 00000 n 
+0002831844 00000 n 
+0002831909 00000 n 
+0002831974 00000 n 
+0002832037 00000 n 
+0002832100 00000 n 
+0002832165 00000 n 
+0002832230 00000 n 
+0002832292 00000 n 
+0002832355 00000 n 
+0002832418 00000 n 
+0002832481 00000 n 
+0002832544 00000 n 
+0002839478 00000 n 
+0002836566 00000 n 
+0002832766 00000 n 
+0002836693 00000 n 
+0002836758 00000 n 
+0002836823 00000 n 
+0002836886 00000 n 
+0002836951 00000 n 
+0002837016 00000 n 
+0002837079 00000 n 
+0002837141 00000 n 
+0002837204 00000 n 
+0002837267 00000 n 
+0002837330 00000 n 
+0002837393 00000 n 
+0002837456 00000 n 
+0002837519 00000 n 
+0002837582 00000 n 
+0002837645 00000 n 
+0002837707 00000 n 
+0002837770 00000 n 
+0002837833 00000 n 
+0002837896 00000 n 
+0002837959 00000 n 
+0002838022 00000 n 
+0002838085 00000 n 
+0002838148 00000 n 
+0002838211 00000 n 
+0002838274 00000 n 
+0002838339 00000 n 
+0002838404 00000 n 
+0002838466 00000 n 
+0002838529 00000 n 
+0002838592 00000 n 
+0002838655 00000 n 
+0002838718 00000 n 
+0002838781 00000 n 
+0002838846 00000 n 
+0002838911 00000 n 
+0002838973 00000 n 
+0002839036 00000 n 
+0002839099 00000 n 
+0002839162 00000 n 
+0002839225 00000 n 
+0002839288 00000 n 
+0002839351 00000 n 
+0002839414 00000 n 
+0005138352 00000 n 
+0002846233 00000 n 
+0002843257 00000 n 
+0002839609 00000 n 
+0002843384 00000 n 
+0002843449 00000 n 
+0002843514 00000 n 
+0002843577 00000 n 
+0002843640 00000 n 
+0002843703 00000 n 
+0002843766 00000 n 
+0002843829 00000 n 
+0002843893 00000 n 
+0002843958 00000 n 
+0002844020 00000 n 
+0002844083 00000 n 
+0002844146 00000 n 
+0002844209 00000 n 
+0002844272 00000 n 
+0002844335 00000 n 
+0002844398 00000 n 
+0002844461 00000 n 
+0002844524 00000 n 
+0002844586 00000 n 
+0002844649 00000 n 
+0002844712 00000 n 
+0002844777 00000 n 
+0002844842 00000 n 
+0002844905 00000 n 
+0002844968 00000 n 
+0002845031 00000 n 
+0002845094 00000 n 
+0002845156 00000 n 
+0002845219 00000 n 
+0002845282 00000 n 
+0002845345 00000 n 
+0002845408 00000 n 
+0002845471 00000 n 
+0002845536 00000 n 
+0002845601 00000 n 
+0002845664 00000 n 
+0002845727 00000 n 
+0002845790 00000 n 
+0002845855 00000 n 
+0002845920 00000 n 
+0002845983 00000 n 
+0002846046 00000 n 
+0002846108 00000 n 
+0002846171 00000 n 
+0002852751 00000 n 
+0002849906 00000 n 
+0002846350 00000 n 
+0002850033 00000 n 
+0002850098 00000 n 
+0002850161 00000 n 
+0002850224 00000 n 
+0002850287 00000 n 
+0002850350 00000 n 
+0002850413 00000 n 
+0002850475 00000 n 
+0002850538 00000 n 
+0002850601 00000 n 
+0002850664 00000 n 
+0002850727 00000 n 
+0002850790 00000 n 
+0002850853 00000 n 
+0002850916 00000 n 
+0002850979 00000 n 
+0002851041 00000 n 
+0002851104 00000 n 
+0002851167 00000 n 
+0002851230 00000 n 
+0002851293 00000 n 
+0002851356 00000 n 
+0002851419 00000 n 
+0002851482 00000 n 
+0002851545 00000 n 
+0002851607 00000 n 
+0002851670 00000 n 
+0002851733 00000 n 
+0002851796 00000 n 
+0002851859 00000 n 
+0002851922 00000 n 
+0002851985 00000 n 
+0002852048 00000 n 
+0002852111 00000 n 
+0002852176 00000 n 
+0002852241 00000 n 
+0002852304 00000 n 
+0002852367 00000 n 
+0002852432 00000 n 
+0002852497 00000 n 
+0002852560 00000 n 
+0002852625 00000 n 
+0002852689 00000 n 
+0002858110 00000 n 
+0002856689 00000 n 
+0002852882 00000 n 
+0002856816 00000 n 
+0002856881 00000 n 
+0002856946 00000 n 
+0002857011 00000 n 
+0002857076 00000 n 
+0002857202 00000 n 
+0002857267 00000 n 
+0002857332 00000 n 
+0002857397 00000 n 
+0002857462 00000 n 
+0002857527 00000 n 
+0002857592 00000 n 
+0002857657 00000 n 
+0002857722 00000 n 
+0002857787 00000 n 
+0002857852 00000 n 
+0002857917 00000 n 
+0002868665 00000 n 
+0002864075 00000 n 
+0002862070 00000 n 
+0002858256 00000 n 
+0002862197 00000 n 
+0002862454 00000 n 
+0002862519 00000 n 
+0002862584 00000 n 
+0002862649 00000 n 
+0002862714 00000 n 
+0002862778 00000 n 
+0002862843 00000 n 
+0002862908 00000 n 
+0002862973 00000 n 
+0002863038 00000 n 
+0002863103 00000 n 
+0002863168 00000 n 
+0002863233 00000 n 
+0002863298 00000 n 
+0002863363 00000 n 
+0002863428 00000 n 
+0002863491 00000 n 
+0002863556 00000 n 
+0002863621 00000 n 
+0002863686 00000 n 
+0002863751 00000 n 
+0002863816 00000 n 
+0002863945 00000 n 
+0002864010 00000 n 
+0002868860 00000 n 
+0002869052 00000 n 
+0002869231 00000 n 
+0002869438 00000 n 
+0002869629 00000 n 
+0002869823 00000 n 
+0002869997 00000 n 
+0002870514 00000 n 
+0002868446 00000 n 
+0002864235 00000 n 
+0002870193 00000 n 
+0002875006 00000 n 
+0002875224 00000 n 
+0002875440 00000 n 
+0002875656 00000 n 
+0002875840 00000 n 
+0002876017 00000 n 
+0002876187 00000 n 
+0002876368 00000 n 
+0002876543 00000 n 
+0002876729 00000 n 
+0002876899 00000 n 
+0002877119 00000 n 
+0002877351 00000 n 
+0002877584 00000 n 
+0002877851 00000 n 
+0002882571 00000 n 
+0002882742 00000 n 
+0002878317 00000 n 
+0002874717 00000 n 
+0002870659 00000 n 
+0002878061 00000 n 
+0005138485 00000 n 
+0002882925 00000 n 
+0002883141 00000 n 
+0002883331 00000 n 
+0002883517 00000 n 
+0002883750 00000 n 
+0002883946 00000 n 
+0002884125 00000 n 
+0002884320 00000 n 
+0002884527 00000 n 
+0002889193 00000 n 
+0002885003 00000 n 
+0002882322 00000 n 
+0002878435 00000 n 
+0002884747 00000 n 
+0002889400 00000 n 
+0002889592 00000 n 
+0002889783 00000 n 
+0002889974 00000 n 
+0002890162 00000 n 
+0002890355 00000 n 
+0002890835 00000 n 
+0002891075 00000 n 
+0002891280 00000 n 
+0002891901 00000 n 
+0002888944 00000 n 
+0002885148 00000 n 
+0002891512 00000 n 
+0002890596 00000 n 
+0002891577 00000 n 
+0002891642 00000 n 
+0002891706 00000 n 
+0002891771 00000 n 
+0002891836 00000 n 
+0002895686 00000 n 
+0002896395 00000 n 
+0002895537 00000 n 
+0002892004 00000 n 
+0002895880 00000 n 
+0002896072 00000 n 
+0002896137 00000 n 
+0002896202 00000 n 
+0002899979 00000 n 
+0002899270 00000 n 
+0002896554 00000 n 
+0002899397 00000 n 
+0002899525 00000 n 
+0002899590 00000 n 
+0002899655 00000 n 
+0002899720 00000 n 
+0002899785 00000 n 
+0002899850 00000 n 
+0002904682 00000 n 
+0002903651 00000 n 
+0002900138 00000 n 
+0002903778 00000 n 
+0002904034 00000 n 
+0002904099 00000 n 
+0002904164 00000 n 
+0002904229 00000 n 
+0002904294 00000 n 
+0002904359 00000 n 
+0002904424 00000 n 
+0002904489 00000 n 
+0002904553 00000 n 
+0002904618 00000 n 
+0002908797 00000 n 
+0002908349 00000 n 
+0002904827 00000 n 
+0002908476 00000 n 
+0005138618 00000 n 
+0002914820 00000 n 
+0002912941 00000 n 
+0002908970 00000 n 
+0002913068 00000 n 
+0002913197 00000 n 
+0002913262 00000 n 
+0002913327 00000 n 
+0002913392 00000 n 
+0002913457 00000 n 
+0002913522 00000 n 
+0002913586 00000 n 
+0002913651 00000 n 
+0002913716 00000 n 
+0002913781 00000 n 
+0002913846 00000 n 
+0002913911 00000 n 
+0002913976 00000 n 
+0002914041 00000 n 
+0002914106 00000 n 
+0002914170 00000 n 
+0002914235 00000 n 
+0002914300 00000 n 
+0002914365 00000 n 
+0002914430 00000 n 
+0002914495 00000 n 
+0002914560 00000 n 
+0002914625 00000 n 
+0002914690 00000 n 
+0002914755 00000 n 
+0003040600 00000 n 
+0003040749 00000 n 
+0002916133 00000 n 
+0003042293 00000 n 
+0003041157 00000 n 
+0002915974 00000 n 
+0002914979 00000 n 
+0003040899 00000 n 
+0003041092 00000 n 
+0002973597 00000 n 
+0003182718 00000 n 
+0003182911 00000 n 
+0003042166 00000 n 
+0003041299 00000 n 
+0003182589 00000 n 
+0003098107 00000 n 
+0003186912 00000 n 
+0003187648 00000 n 
+0003186763 00000 n 
+0003183053 00000 n 
+0003187070 00000 n 
+0003187199 00000 n 
+0003191832 00000 n 
+0003190804 00000 n 
+0003187807 00000 n 
+0003190931 00000 n 
+0003191444 00000 n 
+0003191509 00000 n 
+0003191574 00000 n 
+0003191639 00000 n 
+0003191703 00000 n 
+0003191768 00000 n 
+0003197016 00000 n 
+0003195854 00000 n 
+0003191991 00000 n 
+0003195981 00000 n 
+0003196046 00000 n 
+0003196111 00000 n 
+0003196176 00000 n 
+0003196240 00000 n 
+0003196305 00000 n 
+0003196370 00000 n 
+0003196435 00000 n 
+0003196500 00000 n 
+0003196565 00000 n 
+0003196630 00000 n 
+0003196695 00000 n 
+0005138751 00000 n 
+0003314078 00000 n 
+0003198525 00000 n 
+0003314551 00000 n 
+0003198376 00000 n 
+0003197190 00000 n 
+0003314230 00000 n 
+0003314487 00000 n 
+0003313888 00000 n 
+0003317835 00000 n 
+0003318140 00000 n 
+0003319352 00000 n 
+0003317656 00000 n 
+0003314729 00000 n 
+0003318449 00000 n 
+0003317988 00000 n 
+0003318768 00000 n 
+0003318832 00000 n 
+0003318897 00000 n 
+0003318962 00000 n 
+0003319027 00000 n 
+0003319092 00000 n 
+0003319157 00000 n 
+0003319222 00000 n 
+0003319287 00000 n 
+0003318296 00000 n 
+0003323479 00000 n 
+0003324247 00000 n 
+0003322573 00000 n 
+0003319510 00000 n 
+0003322700 00000 n 
+0003322765 00000 n 
+0003322830 00000 n 
+0003322895 00000 n 
+0003322960 00000 n 
+0003323024 00000 n 
+0003323089 00000 n 
+0003323154 00000 n 
+0003323219 00000 n 
+0003323284 00000 n 
+0003323349 00000 n 
+0003323414 00000 n 
+0003323736 00000 n 
+0003323801 00000 n 
+0003323866 00000 n 
+0003323931 00000 n 
+0003323994 00000 n 
+0003324057 00000 n 
+0003324122 00000 n 
+0003324184 00000 n 
+0003327451 00000 n 
+0003328953 00000 n 
+0003327302 00000 n 
+0003324405 00000 n 
+0003327604 00000 n 
+0003327669 00000 n 
+0003327734 00000 n 
+0003327796 00000 n 
+0003327859 00000 n 
+0003327924 00000 n 
+0003327987 00000 n 
+0003328050 00000 n 
+0003328115 00000 n 
+0003328178 00000 n 
+0003328241 00000 n 
+0003328306 00000 n 
+0003328371 00000 n 
+0003328436 00000 n 
+0003328501 00000 n 
+0003328566 00000 n 
+0003328631 00000 n 
+0003328824 00000 n 
+0003333130 00000 n 
+0003332745 00000 n 
+0003329112 00000 n 
+0003332872 00000 n 
+0003333001 00000 n 
+0003336896 00000 n 
+0003337120 00000 n 
+0003337338 00000 n 
+0003337535 00000 n 
+0003337712 00000 n 
+0003337893 00000 n 
+0003338100 00000 n 
+0003338307 00000 n 
+0003338502 00000 n 
+0003339110 00000 n 
+0003336667 00000 n 
+0003333289 00000 n 
+0003338658 00000 n 
+0003338915 00000 n 
+0003338980 00000 n 
+0003339045 00000 n 
+0005138884 00000 n 
+0003345131 00000 n 
+0003343718 00000 n 
+0003339298 00000 n 
+0003343845 00000 n 
+0003343910 00000 n 
+0003343975 00000 n 
+0003344040 00000 n 
+0003344105 00000 n 
+0003344170 00000 n 
+0003344235 00000 n 
+0003344300 00000 n 
+0003344365 00000 n 
+0003344430 00000 n 
+0003344495 00000 n 
+0003344560 00000 n 
+0003344624 00000 n 
+0003344688 00000 n 
+0003344753 00000 n 
+0003344818 00000 n 
+0003344881 00000 n 
+0003344944 00000 n 
+0003345006 00000 n 
+0003345069 00000 n 
+0003348492 00000 n 
+0003348937 00000 n 
+0003349143 00000 n 
+0003349323 00000 n 
+0003350422 00000 n 
+0003348303 00000 n 
+0003345261 00000 n 
+0003349524 00000 n 
+0003349589 00000 n 
+0003349652 00000 n 
+0003349715 00000 n 
+0003349778 00000 n 
+0003349841 00000 n 
+0003348716 00000 n 
+0003350162 00000 n 
+0003350227 00000 n 
+0003350292 00000 n 
+0003350357 00000 n 
+0003357932 00000 n 
+0003353716 00000 n 
+0003350553 00000 n 
+0003353843 00000 n 
+0003353908 00000 n 
+0003353973 00000 n 
+0003354038 00000 n 
+0003354103 00000 n 
+0003354168 00000 n 
+0003354233 00000 n 
+0003354298 00000 n 
+0003354363 00000 n 
+0003354427 00000 n 
+0003354492 00000 n 
+0003354557 00000 n 
+0003354622 00000 n 
+0003354687 00000 n 
+0003354752 00000 n 
+0003354817 00000 n 
+0003354882 00000 n 
+0003354947 00000 n 
+0003355011 00000 n 
+0003355076 00000 n 
+0003355141 00000 n 
+0003355206 00000 n 
+0003355271 00000 n 
+0003355336 00000 n 
+0003355401 00000 n 
+0003355466 00000 n 
+0003355531 00000 n 
+0003355595 00000 n 
+0003355660 00000 n 
+0003355725 00000 n 
+0003355790 00000 n 
+0003355855 00000 n 
+0003355920 00000 n 
+0003355985 00000 n 
+0003356050 00000 n 
+0003356115 00000 n 
+0003356179 00000 n 
+0003356244 00000 n 
+0003356309 00000 n 
+0003356374 00000 n 
+0003356439 00000 n 
+0003356504 00000 n 
+0003356569 00000 n 
+0003356634 00000 n 
+0003356699 00000 n 
+0003356764 00000 n 
+0003356829 00000 n 
+0003356894 00000 n 
+0003356959 00000 n 
+0003357024 00000 n 
+0003357089 00000 n 
+0003357154 00000 n 
+0003357219 00000 n 
+0003357284 00000 n 
+0003357349 00000 n 
+0003357413 00000 n 
+0003357478 00000 n 
+0003357543 00000 n 
+0003357608 00000 n 
+0003357673 00000 n 
+0003357738 00000 n 
+0003357803 00000 n 
+0003357868 00000 n 
+0003360961 00000 n 
+0003359666 00000 n 
+0003358035 00000 n 
+0003359793 00000 n 
+0003359858 00000 n 
+0003359923 00000 n 
+0003359988 00000 n 
+0003360053 00000 n 
+0003360118 00000 n 
+0003360183 00000 n 
+0003360247 00000 n 
+0003360312 00000 n 
+0003360377 00000 n 
+0003360442 00000 n 
+0003360507 00000 n 
+0003360572 00000 n 
+0003360637 00000 n 
+0003360702 00000 n 
+0003360767 00000 n 
+0003360831 00000 n 
+0003360896 00000 n 
+0003366397 00000 n 
+0003363916 00000 n 
+0003363534 00000 n 
+0003361064 00000 n 
+0003363661 00000 n 
+0003374516 00000 n 
+0003366270 00000 n 
+0003364061 00000 n 
+0003374194 00000 n 
+0003374323 00000 n 
+0005139017 00000 n 
+0003373279 00000 n 
+0003378530 00000 n 
+0003378083 00000 n 
+0003374658 00000 n 
+0003378210 00000 n 
+0003386976 00000 n 
+0003383050 00000 n 
+0003382536 00000 n 
+0003378675 00000 n 
+0003382663 00000 n 
+0003382856 00000 n 
+0003382921 00000 n 
+0003387270 00000 n 
+0003387437 00000 n 
+0003388199 00000 n 
+0003386787 00000 n 
+0003383167 00000 n 
+0003387814 00000 n 
+0003387124 00000 n 
+0003387626 00000 n 
+0003393846 00000 n 
+0003392039 00000 n 
+0003388344 00000 n 
+0003392166 00000 n 
+0003392358 00000 n 
+0003392423 00000 n 
+0003392488 00000 n 
+0003392552 00000 n 
+0003392617 00000 n 
+0003392682 00000 n 
+0003392747 00000 n 
+0003392812 00000 n 
+0003392877 00000 n 
+0003392942 00000 n 
+0003393007 00000 n 
+0003393071 00000 n 
+0003393136 00000 n 
+0003393201 00000 n 
+0003393266 00000 n 
+0003393331 00000 n 
+0003393396 00000 n 
+0003393461 00000 n 
+0003393526 00000 n 
+0003393591 00000 n 
+0003393656 00000 n 
+0003393721 00000 n 
+0003393786 00000 n 
+0003398848 00000 n 
+0003399087 00000 n 
+0003399324 00000 n 
+0003401035 00000 n 
+0003398679 00000 n 
+0003393992 00000 n 
+0003399479 00000 n 
+0003399608 00000 n 
+0003399673 00000 n 
+0003399738 00000 n 
+0003399803 00000 n 
+0003399932 00000 n 
+0003399997 00000 n 
+0003400062 00000 n 
+0003400127 00000 n 
+0003400192 00000 n 
+0003400257 00000 n 
+0003400322 00000 n 
+0003400387 00000 n 
+0003400451 00000 n 
+0003400516 00000 n 
+0003400581 00000 n 
+0003400646 00000 n 
+0003400711 00000 n 
+0003400776 00000 n 
+0003400841 00000 n 
+0003400906 00000 n 
+0003406248 00000 n 
+0003404179 00000 n 
+0003401222 00000 n 
+0003404306 00000 n 
+0003404371 00000 n 
+0003404436 00000 n 
+0003404565 00000 n 
+0003404630 00000 n 
+0003404695 00000 n 
+0003404760 00000 n 
+0003404825 00000 n 
+0003404889 00000 n 
+0003404954 00000 n 
+0003405019 00000 n 
+0003405084 00000 n 
+0003405149 00000 n 
+0003405214 00000 n 
+0003405279 00000 n 
+0003405344 00000 n 
+0003405409 00000 n 
+0003405474 00000 n 
+0003405539 00000 n 
+0003405604 00000 n 
+0003405668 00000 n 
+0003405733 00000 n 
+0003405798 00000 n 
+0003405863 00000 n 
+0003405928 00000 n 
+0003405993 00000 n 
+0003406058 00000 n 
+0003406123 00000 n 
+0003406188 00000 n 
+0005139150 00000 n 
+0003411936 00000 n 
+0003409215 00000 n 
+0003406407 00000 n 
+0003409342 00000 n 
+0003409407 00000 n 
+0003409472 00000 n 
+0003409537 00000 n 
+0003409602 00000 n 
+0003409795 00000 n 
+0003409860 00000 n 
+0003409925 00000 n 
+0003409990 00000 n 
+0003410055 00000 n 
+0003410120 00000 n 
+0003410185 00000 n 
+0003410250 00000 n 
+0003410315 00000 n 
+0003410380 00000 n 
+0003410445 00000 n 
+0003410509 00000 n 
+0003410574 00000 n 
+0003410639 00000 n 
+0003410704 00000 n 
+0003410769 00000 n 
+0003410834 00000 n 
+0003410899 00000 n 
+0003410964 00000 n 
+0003411029 00000 n 
+0003411093 00000 n 
+0003411158 00000 n 
+0003411223 00000 n 
+0003411288 00000 n 
+0003411353 00000 n 
+0003411418 00000 n 
+0003411483 00000 n 
+0003411548 00000 n 
+0003411613 00000 n 
+0003411678 00000 n 
+0003411743 00000 n 
+0003411807 00000 n 
+0003411872 00000 n 
+0003415087 00000 n 
+0003418815 00000 n 
+0003414938 00000 n 
+0003412067 00000 n 
+0003415247 00000 n 
+0003415312 00000 n 
+0003415377 00000 n 
+0003415442 00000 n 
+0003415507 00000 n 
+0003415572 00000 n 
+0003415637 00000 n 
+0003415701 00000 n 
+0003415766 00000 n 
+0003415831 00000 n 
+0003415896 00000 n 
+0003415961 00000 n 
+0003416026 00000 n 
+0003416091 00000 n 
+0003416219 00000 n 
+0003416284 00000 n 
+0003416349 00000 n 
+0003416414 00000 n 
+0003416479 00000 n 
+0003416544 00000 n 
+0003416609 00000 n 
+0003416674 00000 n 
+0003416739 00000 n 
+0003416804 00000 n 
+0003416869 00000 n 
+0003416934 00000 n 
+0003416999 00000 n 
+0003417064 00000 n 
+0003417129 00000 n 
+0003417194 00000 n 
+0003417259 00000 n 
+0003417324 00000 n 
+0003417389 00000 n 
+0003417454 00000 n 
+0003417518 00000 n 
+0003417583 00000 n 
+0003417648 00000 n 
+0003417713 00000 n 
+0003417778 00000 n 
+0003417843 00000 n 
+0003417908 00000 n 
+0003417973 00000 n 
+0003418038 00000 n 
+0003418102 00000 n 
+0003418167 00000 n 
+0003418232 00000 n 
+0003418297 00000 n 
+0003418362 00000 n 
+0003418427 00000 n 
+0003418492 00000 n 
+0003418557 00000 n 
+0003418622 00000 n 
+0003418686 00000 n 
+0003418751 00000 n 
+0003936495 00000 n 
+0003423694 00000 n 
+0003421883 00000 n 
+0003418932 00000 n 
+0003422010 00000 n 
+0003422075 00000 n 
+0003422140 00000 n 
+0003422205 00000 n 
+0003422270 00000 n 
+0003422335 00000 n 
+0003422400 00000 n 
+0003422464 00000 n 
+0003422529 00000 n 
+0003422593 00000 n 
+0003422658 00000 n 
+0003422723 00000 n 
+0003422916 00000 n 
+0003422981 00000 n 
+0003423046 00000 n 
+0003423111 00000 n 
+0003423240 00000 n 
+0003423305 00000 n 
+0003423370 00000 n 
+0003423435 00000 n 
+0003423499 00000 n 
+0003423564 00000 n 
+0003423629 00000 n 
+0003429223 00000 n 
+0003426892 00000 n 
+0003423825 00000 n 
+0003427019 00000 n 
+0003427084 00000 n 
+0003427149 00000 n 
+0003427214 00000 n 
+0003427279 00000 n 
+0003427344 00000 n 
+0003427408 00000 n 
+0003427473 00000 n 
+0003427538 00000 n 
+0003427603 00000 n 
+0003427668 00000 n 
+0003427733 00000 n 
+0003427798 00000 n 
+0003427863 00000 n 
+0003427928 00000 n 
+0003427993 00000 n 
+0003428058 00000 n 
+0003428123 00000 n 
+0003428188 00000 n 
+0003428251 00000 n 
+0003428316 00000 n 
+0003428381 00000 n 
+0003428446 00000 n 
+0003428510 00000 n 
+0003428575 00000 n 
+0003428640 00000 n 
+0003428705 00000 n 
+0003428770 00000 n 
+0003428899 00000 n 
+0003428964 00000 n 
+0003429029 00000 n 
+0003429094 00000 n 
+0003429159 00000 n 
+0003435719 00000 n 
+0003431957 00000 n 
+0003429382 00000 n 
+0003432084 00000 n 
+0003432149 00000 n 
+0003432214 00000 n 
+0003432279 00000 n 
+0003432344 00000 n 
+0003432409 00000 n 
+0003432474 00000 n 
+0003432538 00000 n 
+0003432603 00000 n 
+0003432668 00000 n 
+0003432733 00000 n 
+0003432798 00000 n 
+0003432863 00000 n 
+0003432928 00000 n 
+0003432993 00000 n 
+0003433058 00000 n 
+0003433122 00000 n 
+0003433187 00000 n 
+0003433252 00000 n 
+0003433317 00000 n 
+0003433382 00000 n 
+0003433447 00000 n 
+0003433512 00000 n 
+0003433577 00000 n 
+0003433642 00000 n 
+0003433706 00000 n 
+0003433771 00000 n 
+0003433836 00000 n 
+0003433901 00000 n 
+0003433966 00000 n 
+0003434031 00000 n 
+0003434096 00000 n 
+0003434161 00000 n 
+0003434226 00000 n 
+0003434290 00000 n 
+0003434355 00000 n 
+0003434420 00000 n 
+0003434485 00000 n 
+0003434550 00000 n 
+0003434615 00000 n 
+0003434680 00000 n 
+0003434745 00000 n 
+0003434810 00000 n 
+0003434874 00000 n 
+0003434939 00000 n 
+0003435004 00000 n 
+0003435069 00000 n 
+0003435134 00000 n 
+0003435199 00000 n 
+0003435264 00000 n 
+0003435329 00000 n 
+0003435394 00000 n 
+0003435459 00000 n 
+0003435524 00000 n 
+0003435589 00000 n 
+0003435654 00000 n 
+0003440549 00000 n 
+0003438808 00000 n 
+0003435836 00000 n 
+0003438935 00000 n 
+0003439256 00000 n 
+0003439321 00000 n 
+0003439385 00000 n 
+0003439450 00000 n 
+0003439515 00000 n 
+0003439580 00000 n 
+0003439645 00000 n 
+0003439710 00000 n 
+0003439775 00000 n 
+0003439840 00000 n 
+0003439905 00000 n 
+0003439969 00000 n 
+0003440034 00000 n 
+0003440099 00000 n 
+0003440164 00000 n 
+0003440229 00000 n 
+0003440294 00000 n 
+0003440359 00000 n 
+0003440424 00000 n 
+0003440489 00000 n 
+0005139283 00000 n 
+0003442133 00000 n 
+0003441746 00000 n 
+0003440723 00000 n 
+0003441873 00000 n 
+0003441938 00000 n 
+0003442003 00000 n 
+0003442068 00000 n 
+0003444362 00000 n 
+0003444562 00000 n 
+0003445148 00000 n 
+0003444203 00000 n 
+0003442250 00000 n 
+0003444765 00000 n 
+0003449203 00000 n 
+0003449378 00000 n 
+0003449694 00000 n 
+0003449044 00000 n 
+0003445279 00000 n 
+0003449565 00000 n 
+0003453170 00000 n 
+0003453341 00000 n 
+0003453522 00000 n 
+0003453694 00000 n 
+0003453865 00000 n 
+0003454035 00000 n 
+0003455827 00000 n 
+0003452971 00000 n 
+0003449797 00000 n 
+0003454208 00000 n 
+0003454401 00000 n 
+0003454466 00000 n 
+0003454530 00000 n 
+0003454595 00000 n 
+0003454660 00000 n 
+0003454725 00000 n 
+0003454790 00000 n 
+0003454855 00000 n 
+0003454920 00000 n 
+0003454985 00000 n 
+0003455050 00000 n 
+0003455114 00000 n 
+0003455179 00000 n 
+0003455244 00000 n 
+0003455309 00000 n 
+0003455374 00000 n 
+0003455439 00000 n 
+0003455504 00000 n 
+0003455569 00000 n 
+0003455634 00000 n 
+0003455698 00000 n 
+0003455763 00000 n 
+0003459040 00000 n 
+0003459230 00000 n 
+0003462839 00000 n 
+0003458881 00000 n 
+0003455958 00000 n 
+0003459401 00000 n 
+0003459466 00000 n 
+0003459531 00000 n 
+0003459596 00000 n 
+0003459661 00000 n 
+0003459726 00000 n 
+0003459791 00000 n 
+0003459855 00000 n 
+0003459920 00000 n 
+0003459985 00000 n 
+0003460050 00000 n 
+0003460115 00000 n 
+0003460180 00000 n 
+0003460245 00000 n 
+0003460310 00000 n 
+0003460375 00000 n 
+0003460439 00000 n 
+0003460504 00000 n 
+0003460569 00000 n 
+0003460634 00000 n 
+0003460699 00000 n 
+0003460764 00000 n 
+0003460829 00000 n 
+0003460894 00000 n 
+0003460959 00000 n 
+0003461023 00000 n 
+0003461088 00000 n 
+0003461153 00000 n 
+0003461218 00000 n 
+0003461283 00000 n 
+0003461348 00000 n 
+0003461413 00000 n 
+0003461478 00000 n 
+0003461543 00000 n 
+0003461607 00000 n 
+0003461672 00000 n 
+0003461737 00000 n 
+0003461802 00000 n 
+0003461867 00000 n 
+0003461932 00000 n 
+0003461997 00000 n 
+0003462062 00000 n 
+0003462127 00000 n 
+0003462191 00000 n 
+0003462256 00000 n 
+0003462321 00000 n 
+0003462386 00000 n 
+0003462451 00000 n 
+0003462516 00000 n 
+0003462581 00000 n 
+0003462646 00000 n 
+0003462711 00000 n 
+0003465371 00000 n 
+0003465582 00000 n 
+0003467289 00000 n 
+0003465212 00000 n 
+0003462956 00000 n 
+0003465731 00000 n 
+0003465796 00000 n 
+0003465861 00000 n 
+0003465990 00000 n 
+0003466055 00000 n 
+0003466120 00000 n 
+0003466185 00000 n 
+0003466250 00000 n 
+0003466315 00000 n 
+0003466380 00000 n 
+0003466445 00000 n 
+0003466510 00000 n 
+0003466575 00000 n 
+0003466640 00000 n 
+0003466705 00000 n 
+0003466769 00000 n 
+0003466834 00000 n 
+0003466899 00000 n 
+0003466964 00000 n 
+0003467029 00000 n 
+0003467094 00000 n 
+0003467159 00000 n 
+0003467224 00000 n 
+0005139416 00000 n 
+0003475109 00000 n 
+0003470936 00000 n 
+0003470490 00000 n 
+0003467434 00000 n 
+0003470617 00000 n 
+0003475656 00000 n 
+0003474960 00000 n 
+0003471067 00000 n 
+0003475335 00000 n 
+0003480269 00000 n 
+0003479690 00000 n 
+0003475801 00000 n 
+0003479817 00000 n 
+0003479946 00000 n 
+0003480011 00000 n 
+0003480075 00000 n 
+0003480140 00000 n 
+0003483779 00000 n 
+0003484169 00000 n 
+0003483630 00000 n 
+0003480414 00000 n 
+0003483976 00000 n 
+0003488308 00000 n 
+0003487277 00000 n 
+0003484300 00000 n 
+0003487404 00000 n 
+0003487725 00000 n 
+0003487790 00000 n 
+0003487855 00000 n 
+0003487920 00000 n 
+0003487983 00000 n 
+0003488048 00000 n 
+0003488113 00000 n 
+0003488178 00000 n 
+0003488243 00000 n 
+0003489966 00000 n 
+0003489646 00000 n 
+0003488439 00000 n 
+0003489773 00000 n 
+0005139549 00000 n 
+0003492458 00000 n 
+0003491948 00000 n 
+0003490097 00000 n 
+0003492075 00000 n 
+0003497131 00000 n 
+0003496099 00000 n 
+0003492590 00000 n 
+0003496226 00000 n 
+0003496355 00000 n 
+0003496420 00000 n 
+0003496484 00000 n 
+0003496549 00000 n 
+0003496678 00000 n 
+0003496743 00000 n 
+0003496872 00000 n 
+0003496937 00000 n 
+0003497002 00000 n 
+0003502170 00000 n 
+0003501154 00000 n 
+0003497303 00000 n 
+0003501281 00000 n 
+0003501346 00000 n 
+0003501410 00000 n 
+0003501473 00000 n 
+0003501535 00000 n 
+0003501598 00000 n 
+0003501661 00000 n 
+0003501724 00000 n 
+0003501787 00000 n 
+0003501850 00000 n 
+0003502041 00000 n 
+0003502105 00000 n 
+0003506816 00000 n 
+0003506170 00000 n 
+0003502330 00000 n 
+0003506297 00000 n 
+0003506362 00000 n 
+0003506427 00000 n 
+0003506492 00000 n 
+0003506557 00000 n 
+0003506622 00000 n 
+0003506687 00000 n 
+0003511130 00000 n 
+0003509972 00000 n 
+0003507004 00000 n 
+0003510099 00000 n 
+0003510228 00000 n 
+0003510292 00000 n 
+0003510356 00000 n 
+0003510420 00000 n 
+0003510485 00000 n 
+0003510549 00000 n 
+0003510613 00000 n 
+0003510677 00000 n 
+0003510742 00000 n 
+0003510807 00000 n 
+0003510936 00000 n 
+0003511000 00000 n 
+0003511065 00000 n 
+0003515373 00000 n 
+0003514014 00000 n 
+0003511289 00000 n 
+0003514141 00000 n 
+0003514206 00000 n 
+0003514271 00000 n 
+0003514336 00000 n 
+0003514401 00000 n 
+0003514466 00000 n 
+0003514531 00000 n 
+0003514596 00000 n 
+0003514661 00000 n 
+0003514726 00000 n 
+0003514791 00000 n 
+0003514856 00000 n 
+0003514921 00000 n 
+0003514986 00000 n 
+0003515051 00000 n 
+0003515116 00000 n 
+0005139682 00000 n 
+0003518116 00000 n 
+0003518271 00000 n 
+0003523087 00000 n 
+0003523394 00000 n 
+0003519415 00000 n 
+0003517947 00000 n 
+0003515518 00000 n 
+0003518576 00000 n 
+0003518705 00000 n 
+0003518770 00000 n 
+0003518835 00000 n 
+0003518900 00000 n 
+0003518965 00000 n 
+0003519030 00000 n 
+0003519095 00000 n 
+0003519160 00000 n 
+0003518424 00000 n 
+0003523548 00000 n 
+0003524025 00000 n 
+0003522908 00000 n 
+0003519560 00000 n 
+0003523704 00000 n 
+0003523242 00000 n 
+0003528707 00000 n 
+0003527933 00000 n 
+0003524156 00000 n 
+0003528060 00000 n 
+0003528253 00000 n 
+0003528318 00000 n 
+0003528382 00000 n 
+0003528447 00000 n 
+0003528512 00000 n 
+0003528577 00000 n 
+0003528642 00000 n 
+0003532241 00000 n 
+0003532397 00000 n 
+0003533650 00000 n 
+0003532082 00000 n 
+0003528838 00000 n 
+0003532549 00000 n 
+0003532614 00000 n 
+0003532678 00000 n 
+0003532743 00000 n 
+0003532808 00000 n 
+0003532873 00000 n 
+0003532938 00000 n 
+0003533003 00000 n 
+0003533068 00000 n 
+0003533197 00000 n 
+0003533262 00000 n 
+0003533327 00000 n 
+0003533392 00000 n 
+0003533521 00000 n 
+0003537331 00000 n 
+0003537682 00000 n 
+0003537182 00000 n 
+0003533781 00000 n 
+0003537489 00000 n 
+0003537618 00000 n 
+0003541730 00000 n 
+0003540892 00000 n 
+0003537827 00000 n 
+0003541019 00000 n 
+0003541084 00000 n 
+0003541149 00000 n 
+0003541214 00000 n 
+0003541279 00000 n 
+0003541344 00000 n 
+0003541408 00000 n 
+0003541473 00000 n 
+0005139815 00000 n 
+0003545873 00000 n 
+0003545357 00000 n 
+0003541875 00000 n 
+0003545484 00000 n 
+0003545613 00000 n 
+0003545678 00000 n 
+0003545743 00000 n 
+0003545808 00000 n 
+0003547903 00000 n 
+0003548115 00000 n 
+0003548778 00000 n 
+0003547744 00000 n 
+0003546045 00000 n 
+0003548325 00000 n 
+0003548390 00000 n 
+0003548455 00000 n 
+0003548520 00000 n 
+0003548585 00000 n 
+0003548650 00000 n 
+0003551964 00000 n 
+0003552371 00000 n 
+0003551815 00000 n 
+0003548922 00000 n 
+0003552116 00000 n 
+0003556126 00000 n 
+0003556834 00000 n 
+0003555977 00000 n 
+0003552517 00000 n 
+0003556317 00000 n 
+0003556510 00000 n 
+0003556575 00000 n 
+0003556704 00000 n 
+0003556769 00000 n 
+0003561832 00000 n 
+0003561515 00000 n 
+0003556980 00000 n 
+0003561642 00000 n 
+0003561707 00000 n 
+0003561770 00000 n 
+0003567178 00000 n 
+0003566232 00000 n 
+0003561963 00000 n 
+0003566359 00000 n 
+0003566424 00000 n 
+0003566489 00000 n 
+0003566552 00000 n 
+0003566615 00000 n 
+0003566678 00000 n 
+0003566740 00000 n 
+0003566803 00000 n 
+0003566866 00000 n 
+0003566929 00000 n 
+0003566994 00000 n 
+0003567057 00000 n 
+0003567120 00000 n 
+0005139948 00000 n 
+0003573143 00000 n 
+0003570815 00000 n 
+0003567309 00000 n 
+0003570942 00000 n 
+0003571007 00000 n 
+0003571072 00000 n 
+0003571263 00000 n 
+0003571328 00000 n 
+0003571392 00000 n 
+0003571457 00000 n 
+0003571522 00000 n 
+0003571587 00000 n 
+0003571652 00000 n 
+0003571717 00000 n 
+0003571782 00000 n 
+0003571847 00000 n 
+0003571912 00000 n 
+0003571976 00000 n 
+0003572041 00000 n 
+0003572106 00000 n 
+0003572171 00000 n 
+0003572300 00000 n 
+0003572364 00000 n 
+0003572429 00000 n 
+0003572494 00000 n 
+0003572559 00000 n 
+0003572623 00000 n 
+0003572688 00000 n 
+0003572753 00000 n 
+0003572818 00000 n 
+0003572883 00000 n 
+0003572948 00000 n 
+0003573013 00000 n 
+0003573078 00000 n 
+0003578652 00000 n 
+0003576777 00000 n 
+0003573289 00000 n 
+0003576904 00000 n 
+0003576969 00000 n 
+0003577034 00000 n 
+0003577099 00000 n 
+0003577164 00000 n 
+0003577229 00000 n 
+0003577294 00000 n 
+0003577359 00000 n 
+0003577424 00000 n 
+0003577488 00000 n 
+0003577552 00000 n 
+0003577617 00000 n 
+0003577681 00000 n 
+0003577746 00000 n 
+0003577811 00000 n 
+0003577876 00000 n 
+0003577941 00000 n 
+0003578006 00000 n 
+0003578071 00000 n 
+0003578136 00000 n 
+0003578201 00000 n 
+0003578266 00000 n 
+0003578331 00000 n 
+0003578396 00000 n 
+0003578460 00000 n 
+0003582967 00000 n 
+0003583382 00000 n 
+0003582818 00000 n 
+0003578812 00000 n 
+0003583124 00000 n 
+0003583317 00000 n 
+0003589066 00000 n 
+0003586347 00000 n 
+0003583585 00000 n 
+0003586474 00000 n 
+0003586603 00000 n 
+0003586668 00000 n 
+0003586733 00000 n 
+0003586798 00000 n 
+0003586863 00000 n 
+0003586928 00000 n 
+0003586993 00000 n 
+0003587058 00000 n 
+0003587123 00000 n 
+0003587188 00000 n 
+0003587253 00000 n 
+0003587382 00000 n 
+0003587446 00000 n 
+0003587510 00000 n 
+0003587575 00000 n 
+0003587640 00000 n 
+0003587705 00000 n 
+0003587770 00000 n 
+0003587835 00000 n 
+0003587900 00000 n 
+0003587965 00000 n 
+0003588030 00000 n 
+0003588094 00000 n 
+0003588159 00000 n 
+0003588288 00000 n 
+0003588353 00000 n 
+0003588418 00000 n 
+0003588483 00000 n 
+0003588548 00000 n 
+0003588613 00000 n 
+0003588678 00000 n 
+0003588743 00000 n 
+0003588808 00000 n 
+0003588872 00000 n 
+0003588937 00000 n 
+0003594895 00000 n 
+0003592175 00000 n 
+0003589211 00000 n 
+0003592302 00000 n 
+0003592367 00000 n 
+0003592432 00000 n 
+0003592497 00000 n 
+0003592562 00000 n 
+0003592627 00000 n 
+0003592692 00000 n 
+0003592757 00000 n 
+0003592822 00000 n 
+0003592886 00000 n 
+0003592951 00000 n 
+0003593016 00000 n 
+0003593081 00000 n 
+0003593274 00000 n 
+0003593339 00000 n 
+0003593404 00000 n 
+0003593469 00000 n 
+0003593534 00000 n 
+0003593599 00000 n 
+0003593663 00000 n 
+0003593728 00000 n 
+0003593793 00000 n 
+0003593922 00000 n 
+0003593987 00000 n 
+0003594052 00000 n 
+0003594117 00000 n 
+0003594182 00000 n 
+0003594247 00000 n 
+0003594312 00000 n 
+0003594376 00000 n 
+0003594441 00000 n 
+0003594506 00000 n 
+0003594571 00000 n 
+0003594636 00000 n 
+0003594701 00000 n 
+0003594766 00000 n 
+0003594831 00000 n 
+0003596962 00000 n 
+0003596250 00000 n 
+0003595054 00000 n 
+0003596377 00000 n 
+0003596442 00000 n 
+0003596507 00000 n 
+0003596572 00000 n 
+0003596637 00000 n 
+0003596702 00000 n 
+0003596767 00000 n 
+0003596832 00000 n 
+0003596897 00000 n 
+0005140081 00000 n 
+0003599968 00000 n 
+0003599520 00000 n 
+0003597079 00000 n 
+0003599647 00000 n 
+0003603729 00000 n 
+0003603151 00000 n 
+0003600071 00000 n 
+0003603278 00000 n 
+0003603471 00000 n 
+0003603536 00000 n 
+0003603601 00000 n 
+0003607521 00000 n 
+0003607678 00000 n 
+0003613759 00000 n 
+0003613919 00000 n 
+0003609645 00000 n 
+0003607362 00000 n 
+0003603861 00000 n 
+0003607833 00000 n 
+0003607962 00000 n 
+0003608027 00000 n 
+0003608091 00000 n 
+0003608218 00000 n 
+0003608283 00000 n 
+0003608348 00000 n 
+0003608413 00000 n 
+0003608478 00000 n 
+0003608543 00000 n 
+0003608608 00000 n 
+0003608673 00000 n 
+0003608738 00000 n 
+0003608803 00000 n 
+0003608867 00000 n 
+0003608932 00000 n 
+0003608997 00000 n 
+0003609062 00000 n 
+0003609127 00000 n 
+0003609192 00000 n 
+0003609257 00000 n 
+0003609322 00000 n 
+0003609387 00000 n 
+0003609451 00000 n 
+0003609516 00000 n 
+0003614208 00000 n 
+0003614337 00000 n 
+0003614466 00000 n 
+0003613600 00000 n 
+0003609791 00000 n 
+0003614079 00000 n 
+0003622353 00000 n 
+0003618529 00000 n 
+0003614597 00000 n 
+0003618656 00000 n 
+0003618785 00000 n 
+0003618850 00000 n 
+0003618915 00000 n 
+0003618980 00000 n 
+0003619045 00000 n 
+0003619110 00000 n 
+0003619175 00000 n 
+0003619240 00000 n 
+0003619305 00000 n 
+0003619369 00000 n 
+0003619434 00000 n 
+0003619499 00000 n 
+0003619564 00000 n 
+0003619629 00000 n 
+0003619694 00000 n 
+0003619759 00000 n 
+0003619824 00000 n 
+0003619889 00000 n 
+0003619953 00000 n 
+0003620018 00000 n 
+0003620083 00000 n 
+0003620148 00000 n 
+0003620213 00000 n 
+0003620278 00000 n 
+0003620343 00000 n 
+0003620408 00000 n 
+0003620473 00000 n 
+0003620537 00000 n 
+0003620602 00000 n 
+0003620667 00000 n 
+0003620732 00000 n 
+0003620797 00000 n 
+0003620862 00000 n 
+0003620927 00000 n 
+0003620992 00000 n 
+0003621057 00000 n 
+0003621121 00000 n 
+0003621186 00000 n 
+0003621251 00000 n 
+0003621316 00000 n 
+0003621381 00000 n 
+0003621446 00000 n 
+0003621511 00000 n 
+0003621576 00000 n 
+0003621641 00000 n 
+0003621706 00000 n 
+0003621771 00000 n 
+0003621836 00000 n 
+0003621901 00000 n 
+0003621966 00000 n 
+0003622031 00000 n 
+0003622096 00000 n 
+0003622161 00000 n 
+0003622226 00000 n 
+0003622291 00000 n 
+0003626375 00000 n 
+0003628605 00000 n 
+0003626226 00000 n 
+0003622470 00000 n 
+0003626531 00000 n 
+0003626596 00000 n 
+0003626661 00000 n 
+0003626726 00000 n 
+0003626791 00000 n 
+0003626856 00000 n 
+0003626921 00000 n 
+0003626985 00000 n 
+0003627050 00000 n 
+0003627115 00000 n 
+0003627180 00000 n 
+0003627245 00000 n 
+0003627310 00000 n 
+0003627375 00000 n 
+0003627440 00000 n 
+0003627505 00000 n 
+0003627569 00000 n 
+0003627634 00000 n 
+0003627699 00000 n 
+0003627764 00000 n 
+0003627829 00000 n 
+0003627894 00000 n 
+0003627959 00000 n 
+0003628024 00000 n 
+0003628281 00000 n 
+0003628346 00000 n 
+0003628411 00000 n 
+0003628475 00000 n 
+0003628540 00000 n 
+0005140214 00000 n 
+0003632519 00000 n 
+0003631099 00000 n 
+0003628749 00000 n 
+0003631226 00000 n 
+0003631547 00000 n 
+0003631612 00000 n 
+0003631677 00000 n 
+0003631742 00000 n 
+0003631806 00000 n 
+0003631871 00000 n 
+0003631936 00000 n 
+0003632001 00000 n 
+0003632066 00000 n 
+0003632131 00000 n 
+0003632196 00000 n 
+0003632261 00000 n 
+0003632326 00000 n 
+0003632390 00000 n 
+0003632455 00000 n 
+0003634638 00000 n 
+0003633862 00000 n 
+0003632650 00000 n 
+0003633989 00000 n 
+0003634054 00000 n 
+0003634119 00000 n 
+0003634184 00000 n 
+0003634249 00000 n 
+0003634314 00000 n 
+0003634379 00000 n 
+0003634443 00000 n 
+0003634508 00000 n 
+0003634573 00000 n 
+0003637495 00000 n 
+0003637668 00000 n 
+0003638224 00000 n 
+0003637336 00000 n 
+0003634741 00000 n 
+0003637841 00000 n 
+0003641858 00000 n 
+0003642292 00000 n 
+0003641709 00000 n 
+0003638369 00000 n 
+0003642035 00000 n 
+0003646627 00000 n 
+0003646435 00000 n 
+0003642466 00000 n 
+0003646562 00000 n 
+0003650759 00000 n 
+0003650915 00000 n 
+0003651126 00000 n 
+0003651324 00000 n 
+0003652954 00000 n 
+0003650580 00000 n 
+0003646758 00000 n 
+0003651482 00000 n 
+0003651547 00000 n 
+0003651612 00000 n 
+0003651677 00000 n 
+0003651742 00000 n 
+0003651807 00000 n 
+0003651872 00000 n 
+0003651936 00000 n 
+0003652001 00000 n 
+0003652066 00000 n 
+0003652195 00000 n 
+0003652260 00000 n 
+0003652323 00000 n 
+0003652386 00000 n 
+0003652449 00000 n 
+0003652512 00000 n 
+0003652574 00000 n 
+0003652637 00000 n 
+0003652702 00000 n 
+0003652765 00000 n 
+0003652828 00000 n 
+0005140347 00000 n 
+0003655168 00000 n 
+0003655361 00000 n 
+0003654912 00000 n 
+0003653126 00000 n 
+0003655039 00000 n 
+0003658365 00000 n 
+0003658567 00000 n 
+0003659133 00000 n 
+0003658206 00000 n 
+0003655506 00000 n 
+0003658748 00000 n 
+0003661406 00000 n 
+0003661578 00000 n 
+0003662013 00000 n 
+0003661247 00000 n 
+0003659250 00000 n 
+0003661756 00000 n 
+0003664815 00000 n 
+0003664303 00000 n 
+0003662130 00000 n 
+0003664430 00000 n 
+0003667867 00000 n 
+0003667483 00000 n 
+0003664918 00000 n 
+0003667610 00000 n 
+0003671110 00000 n 
+0003670598 00000 n 
+0003667998 00000 n 
+0003670725 00000 n 
+0005140480 00000 n 
+0003673903 00000 n 
+0003674154 00000 n 
+0003674648 00000 n 
+0003673744 00000 n 
+0003671241 00000 n 
+0003674327 00000 n 
+0003679085 00000 n 
+0003678248 00000 n 
+0003674765 00000 n 
+0003678375 00000 n 
+0003678566 00000 n 
+0003678631 00000 n 
+0003678696 00000 n 
+0003678761 00000 n 
+0003678826 00000 n 
+0003678890 00000 n 
+0003678955 00000 n 
+0003679020 00000 n 
+0003682841 00000 n 
+0003682395 00000 n 
+0003679243 00000 n 
+0003682522 00000 n 
+0003686630 00000 n 
+0003686910 00000 n 
+0003686481 00000 n 
+0003682972 00000 n 
+0003686781 00000 n 
+0003693991 00000 n 
+0003691827 00000 n 
+0003694964 00000 n 
+0003691678 00000 n 
+0003687055 00000 n 
+0003691980 00000 n 
+0003692045 00000 n 
+0003692110 00000 n 
+0003692175 00000 n 
+0003692240 00000 n 
+0003692305 00000 n 
+0003692370 00000 n 
+0003692435 00000 n 
+0003692500 00000 n 
+0003692565 00000 n 
+0003692628 00000 n 
+0003692693 00000 n 
+0003692758 00000 n 
+0003692823 00000 n 
+0003692888 00000 n 
+0003692953 00000 n 
+0003693018 00000 n 
+0003693083 00000 n 
+0003693148 00000 n 
+0003693212 00000 n 
+0003693277 00000 n 
+0003693342 00000 n 
+0003693407 00000 n 
+0003693472 00000 n 
+0003693537 00000 n 
+0003693602 00000 n 
+0003693667 00000 n 
+0003693732 00000 n 
+0003693796 00000 n 
+0003693861 00000 n 
+0003693926 00000 n 
+0003694056 00000 n 
+0003694121 00000 n 
+0003694185 00000 n 
+0003694250 00000 n 
+0003694315 00000 n 
+0003694380 00000 n 
+0003694445 00000 n 
+0003694510 00000 n 
+0003694575 00000 n 
+0003694640 00000 n 
+0003694705 00000 n 
+0003694769 00000 n 
+0003694834 00000 n 
+0003694899 00000 n 
+0003699131 00000 n 
+0003699285 00000 n 
+0003699439 00000 n 
+0003701474 00000 n 
+0003698962 00000 n 
+0003695108 00000 n 
+0003699594 00000 n 
+0003699723 00000 n 
+0003699788 00000 n 
+0003699853 00000 n 
+0003699918 00000 n 
+0003699983 00000 n 
+0003700048 00000 n 
+0003700113 00000 n 
+0003700178 00000 n 
+0003700243 00000 n 
+0003700307 00000 n 
+0003700372 00000 n 
+0003700437 00000 n 
+0003700502 00000 n 
+0003700567 00000 n 
+0003700632 00000 n 
+0003700697 00000 n 
+0003700762 00000 n 
+0003700827 00000 n 
+0003700891 00000 n 
+0003700956 00000 n 
+0003701021 00000 n 
+0003701086 00000 n 
+0003701151 00000 n 
+0003701216 00000 n 
+0003701281 00000 n 
+0003701346 00000 n 
+0003701410 00000 n 
+0005140613 00000 n 
+0003706570 00000 n 
+0003707284 00000 n 
+0003707349 00000 n 
+0003704691 00000 n 
+0003701632 00000 n 
+0003704818 00000 n 
+0003704883 00000 n 
+0003704948 00000 n 
+0003705013 00000 n 
+0003705078 00000 n 
+0003705143 00000 n 
+0003705208 00000 n 
+0003705273 00000 n 
+0003705338 00000 n 
+0003705403 00000 n 
+0003705466 00000 n 
+0003705531 00000 n 
+0003705596 00000 n 
+0003705661 00000 n 
+0003705726 00000 n 
+0003705791 00000 n 
+0003705856 00000 n 
+0003705921 00000 n 
+0003705986 00000 n 
+0003706050 00000 n 
+0003706115 00000 n 
+0003706180 00000 n 
+0003706245 00000 n 
+0003706310 00000 n 
+0003706375 00000 n 
+0003706440 00000 n 
+0003706505 00000 n 
+0003706635 00000 n 
+0003706700 00000 n 
+0003706765 00000 n 
+0003706830 00000 n 
+0003706895 00000 n 
+0003706960 00000 n 
+0003707024 00000 n 
+0003707089 00000 n 
+0003707154 00000 n 
+0003707219 00000 n 
+0003708234 00000 n 
+0003707978 00000 n 
+0003707465 00000 n 
+0003708105 00000 n 
+0003711280 00000 n 
+0003712010 00000 n 
+0003711131 00000 n 
+0003708337 00000 n 
+0003711434 00000 n 
+0003711499 00000 n 
+0003714703 00000 n 
+0003716109 00000 n 
+0003714554 00000 n 
+0003712155 00000 n 
+0003714880 00000 n 
+0003715137 00000 n 
+0003715200 00000 n 
+0003715265 00000 n 
+0003715330 00000 n 
+0003715395 00000 n 
+0003715460 00000 n 
+0003715525 00000 n 
+0003715590 00000 n 
+0003715655 00000 n 
+0003715720 00000 n 
+0003715785 00000 n 
+0003715850 00000 n 
+0003715915 00000 n 
+0003715980 00000 n 
+0003717485 00000 n 
+0003717229 00000 n 
+0003716240 00000 n 
+0003717356 00000 n 
+0003718864 00000 n 
+0003718608 00000 n 
+0003717588 00000 n 
+0003718735 00000 n 
+0005140746 00000 n 
+0003720086 00000 n 
+0003719894 00000 n 
+0003718967 00000 n 
+0003720021 00000 n 
+0003721316 00000 n 
+0003721124 00000 n 
+0003720175 00000 n 
+0003721251 00000 n 
+0003722745 00000 n 
+0003722489 00000 n 
+0003721405 00000 n 
+0003722616 00000 n 
+0003726148 00000 n 
+0003726299 00000 n 
+0003726451 00000 n 
+0003726610 00000 n 
+0003727341 00000 n 
+0003725969 00000 n 
+0003722848 00000 n 
+0003726761 00000 n 
+0003727018 00000 n 
+0003727083 00000 n 
+0003727212 00000 n 
+0003727277 00000 n 
+0003729893 00000 n 
+0003729957 00000 n 
+0003729638 00000 n 
+0003727486 00000 n 
+0003729765 00000 n 
+0003733865 00000 n 
+0003733026 00000 n 
+0003730060 00000 n 
+0003733153 00000 n 
+0003733346 00000 n 
+0003733411 00000 n 
+0003733476 00000 n 
+0003733541 00000 n 
+0003733606 00000 n 
+0003733671 00000 n 
+0003733736 00000 n 
+0005140879 00000 n 
+0003736232 00000 n 
+0003735587 00000 n 
+0003733996 00000 n 
+0003735714 00000 n 
+0003735843 00000 n 
+0003735908 00000 n 
+0003735973 00000 n 
+0003736037 00000 n 
+0003736102 00000 n 
+0003736167 00000 n 
+0003738994 00000 n 
+0003738548 00000 n 
+0003736376 00000 n 
+0003738675 00000 n 
+0003741847 00000 n 
+0003741591 00000 n 
+0003739111 00000 n 
+0003741718 00000 n 
+0003745997 00000 n 
+0003745485 00000 n 
+0003741950 00000 n 
+0003745612 00000 n 
+0003749018 00000 n 
+0003750700 00000 n 
+0003748869 00000 n 
+0003746156 00000 n 
+0003749171 00000 n 
+0003749236 00000 n 
+0003749301 00000 n 
+0003749366 00000 n 
+0003749431 00000 n 
+0003749496 00000 n 
+0003749561 00000 n 
+0003749625 00000 n 
+0003749688 00000 n 
+0003749751 00000 n 
+0003749814 00000 n 
+0003749877 00000 n 
+0003749940 00000 n 
+0003750003 00000 n 
+0003750066 00000 n 
+0003750129 00000 n 
+0003750192 00000 n 
+0003750255 00000 n 
+0003750316 00000 n 
+0003750379 00000 n 
+0003750571 00000 n 
+0003754159 00000 n 
+0003754574 00000 n 
+0003754010 00000 n 
+0003750859 00000 n 
+0003754316 00000 n 
+0003754445 00000 n 
+0005141012 00000 n 
+0003756485 00000 n 
+0003756293 00000 n 
+0003754733 00000 n 
+0003756420 00000 n 
+0003759523 00000 n 
+0003760056 00000 n 
+0003759374 00000 n 
+0003756602 00000 n 
+0003759673 00000 n 
+0003770943 00000 n 
+0003765303 00000 n 
+0003763495 00000 n 
+0003760187 00000 n 
+0003763622 00000 n 
+0003763751 00000 n 
+0003763816 00000 n 
+0003763881 00000 n 
+0003763946 00000 n 
+0003764011 00000 n 
+0003764075 00000 n 
+0003764140 00000 n 
+0003764205 00000 n 
+0003764270 00000 n 
+0003764335 00000 n 
+0003764400 00000 n 
+0003764465 00000 n 
+0003764530 00000 n 
+0003764595 00000 n 
+0003764723 00000 n 
+0003764787 00000 n 
+0003764850 00000 n 
+0003764915 00000 n 
+0003764979 00000 n 
+0003765044 00000 n 
+0003765108 00000 n 
+0003765173 00000 n 
+0003765238 00000 n 
+0003771462 00000 n 
+0003768285 00000 n 
+0003765434 00000 n 
+0003768412 00000 n 
+0003768477 00000 n 
+0003768542 00000 n 
+0003768607 00000 n 
+0003768672 00000 n 
+0003768737 00000 n 
+0003768802 00000 n 
+0003768867 00000 n 
+0003768932 00000 n 
+0003768997 00000 n 
+0003769062 00000 n 
+0003769127 00000 n 
+0003769192 00000 n 
+0003769257 00000 n 
+0003769322 00000 n 
+0003769387 00000 n 
+0003769452 00000 n 
+0003769515 00000 n 
+0003769580 00000 n 
+0003769645 00000 n 
+0003769710 00000 n 
+0003769775 00000 n 
+0003769840 00000 n 
+0003769905 00000 n 
+0003769970 00000 n 
+0003770035 00000 n 
+0003770100 00000 n 
+0003770165 00000 n 
+0003770230 00000 n 
+0003770295 00000 n 
+0003770360 00000 n 
+0003770425 00000 n 
+0003770490 00000 n 
+0003770555 00000 n 
+0003770620 00000 n 
+0003770685 00000 n 
+0003770749 00000 n 
+0003770814 00000 n 
+0003771008 00000 n 
+0003771073 00000 n 
+0003771138 00000 n 
+0003771203 00000 n 
+0003771268 00000 n 
+0003771333 00000 n 
+0003771398 00000 n 
+0003775006 00000 n 
+0003776851 00000 n 
+0003774857 00000 n 
+0003771593 00000 n 
+0003775174 00000 n 
+0003775239 00000 n 
+0003775304 00000 n 
+0003775369 00000 n 
+0003775434 00000 n 
+0003775499 00000 n 
+0003775564 00000 n 
+0003775628 00000 n 
+0003775693 00000 n 
+0003775758 00000 n 
+0003775823 00000 n 
+0003775888 00000 n 
+0003775953 00000 n 
+0003776082 00000 n 
+0003776147 00000 n 
+0003776212 00000 n 
+0003776277 00000 n 
+0003776340 00000 n 
+0003776403 00000 n 
+0003776466 00000 n 
+0003776531 00000 n 
+0003776596 00000 n 
+0003776661 00000 n 
+0003776724 00000 n 
+0003780564 00000 n 
+0003781188 00000 n 
+0003780415 00000 n 
+0003777010 00000 n 
+0003780738 00000 n 
+0003780803 00000 n 
+0003780867 00000 n 
+0003780932 00000 n 
+0005141145 00000 n 
+0003784532 00000 n 
+0003784020 00000 n 
+0003781376 00000 n 
+0003784147 00000 n 
+0003785851 00000 n 
+0003785595 00000 n 
+0003784649 00000 n 
+0003785722 00000 n 
+0003786737 00000 n 
+0003786481 00000 n 
+0003785968 00000 n 
+0003786608 00000 n 
+0003789666 00000 n 
+0003790660 00000 n 
+0003789517 00000 n 
+0003786840 00000 n 
+0003789819 00000 n 
+0003789884 00000 n 
+0003790205 00000 n 
+0003790270 00000 n 
+0003790335 00000 n 
+0003790400 00000 n 
+0003790465 00000 n 
+0003790530 00000 n 
+0003790595 00000 n 
+0003796137 00000 n 
+0003794618 00000 n 
+0003790818 00000 n 
+0003794745 00000 n 
+0003794874 00000 n 
+0003794939 00000 n 
+0003795004 00000 n 
+0003795069 00000 n 
+0003795132 00000 n 
+0003795195 00000 n 
+0003795258 00000 n 
+0003795321 00000 n 
+0003795384 00000 n 
+0003795446 00000 n 
+0003795509 00000 n 
+0003795572 00000 n 
+0003795635 00000 n 
+0003795698 00000 n 
+0003795761 00000 n 
+0003795824 00000 n 
+0003795887 00000 n 
+0003795950 00000 n 
+0003796012 00000 n 
+0003796075 00000 n 
+0003800599 00000 n 
+0003800750 00000 n 
+0003800900 00000 n 
+0003802406 00000 n 
+0003800430 00000 n 
+0003796282 00000 n 
+0003801051 00000 n 
+0003801116 00000 n 
+0003801179 00000 n 
+0003801242 00000 n 
+0003801305 00000 n 
+0003801368 00000 n 
+0003801432 00000 n 
+0003801497 00000 n 
+0003801562 00000 n 
+0003801627 00000 n 
+0003801692 00000 n 
+0003801756 00000 n 
+0003801821 00000 n 
+0003801886 00000 n 
+0003801951 00000 n 
+0003802016 00000 n 
+0003802081 00000 n 
+0003802146 00000 n 
+0003802211 00000 n 
+0003802276 00000 n 
+0003802341 00000 n 
+0005141278 00000 n 
+0003807318 00000 n 
+0003806347 00000 n 
+0003802564 00000 n 
+0003806474 00000 n 
+0003806539 00000 n 
+0003806604 00000 n 
+0003806669 00000 n 
+0003806734 00000 n 
+0003806799 00000 n 
+0003806864 00000 n 
+0003806929 00000 n 
+0003806994 00000 n 
+0003807059 00000 n 
+0003807124 00000 n 
+0003807189 00000 n 
+0003807254 00000 n 
+0003811070 00000 n 
+0003810554 00000 n 
+0003807463 00000 n 
+0003810681 00000 n 
+0003810746 00000 n 
+0003810811 00000 n 
+0003810876 00000 n 
+0003810940 00000 n 
+0003811005 00000 n 
+0003814266 00000 n 
+0003814437 00000 n 
+0003816453 00000 n 
+0003815251 00000 n 
+0003814107 00000 n 
+0003811230 00000 n 
+0003814607 00000 n 
+0003814928 00000 n 
+0003814993 00000 n 
+0003815058 00000 n 
+0003873260 00000 n 
+0003835091 00000 n 
+0003873736 00000 n 
+0003816304 00000 n 
+0003815410 00000 n 
+0003873413 00000 n 
+0003873542 00000 n 
+0003873671 00000 n 
+0003876568 00000 n 
+0003876760 00000 n 
+0003880399 00000 n 
+0003880564 00000 n 
+0003877272 00000 n 
+0003876409 00000 n 
+0003873908 00000 n 
+0003876951 00000 n 
+0003880739 00000 n 
+0003881104 00000 n 
+0003880230 00000 n 
+0003877389 00000 n 
+0003880911 00000 n 
+0005141411 00000 n 
+0003884419 00000 n 
+0003884596 00000 n 
+0003884768 00000 n 
+0003885624 00000 n 
+0003884250 00000 n 
+0003881249 00000 n 
+0003884921 00000 n 
+0003885369 00000 n 
+0003885434 00000 n 
+0003885499 00000 n 
+0003885564 00000 n 
+0003890325 00000 n 
+0003891189 00000 n 
+0003890176 00000 n 
+0003885768 00000 n 
+0003890478 00000 n 
+0003890607 00000 n 
+0003890671 00000 n 
+0003890736 00000 n 
+0003890801 00000 n 
+0003890930 00000 n 
+0003891059 00000 n 
+0003891124 00000 n 
+0003894022 00000 n 
+0003893442 00000 n 
+0003891361 00000 n 
+0003893569 00000 n 
+0003893698 00000 n 
+0003893763 00000 n 
+0003893828 00000 n 
+0003893893 00000 n 
+0003896903 00000 n 
+0003896262 00000 n 
+0003894167 00000 n 
+0003896389 00000 n 
+0003896708 00000 n 
+0003896773 00000 n 
+0003896838 00000 n 
+0003899273 00000 n 
+0003898952 00000 n 
+0003897034 00000 n 
+0003899079 00000 n 
+0003899208 00000 n 
+0003900136 00000 n 
+0003899880 00000 n 
+0003899376 00000 n 
+0003900007 00000 n 
+0005141544 00000 n 
+0003902540 00000 n 
+0003902707 00000 n 
+0003902895 00000 n 
+0003903069 00000 n 
+0003903890 00000 n 
+0003902361 00000 n 
+0003900239 00000 n 
+0003903248 00000 n 
+0003903313 00000 n 
+0003903826 00000 n 
+0003907213 00000 n 
+0003907399 00000 n 
+0003907587 00000 n 
+0003909117 00000 n 
+0003907044 00000 n 
+0003904007 00000 n 
+0003907760 00000 n 
+0003907825 00000 n 
+0003907890 00000 n 
+0003907955 00000 n 
+0003908018 00000 n 
+0003908083 00000 n 
+0003908146 00000 n 
+0003908211 00000 n 
+0003908276 00000 n 
+0003908467 00000 n 
+0003908532 00000 n 
+0003908597 00000 n 
+0003908662 00000 n 
+0003908727 00000 n 
+0003908792 00000 n 
+0003908857 00000 n 
+0003908922 00000 n 
+0003908987 00000 n 
+0003909052 00000 n 
+0003913793 00000 n 
+0003912178 00000 n 
+0003909262 00000 n 
+0003912305 00000 n 
+0003912434 00000 n 
+0003912499 00000 n 
+0003912563 00000 n 
+0003912628 00000 n 
+0003912693 00000 n 
+0003912757 00000 n 
+0003912822 00000 n 
+0003912887 00000 n 
+0003912952 00000 n 
+0003913017 00000 n 
+0003913082 00000 n 
+0003913147 00000 n 
+0003913212 00000 n 
+0003913277 00000 n 
+0003913342 00000 n 
+0003913405 00000 n 
+0003913470 00000 n 
+0003913598 00000 n 
+0003913663 00000 n 
+0003913728 00000 n 
+0003917243 00000 n 
+0003916414 00000 n 
+0003913938 00000 n 
+0003916541 00000 n 
+0003916989 00000 n 
+0003917054 00000 n 
+0003917119 00000 n 
+0003917183 00000 n 
+0003921222 00000 n 
+0003920252 00000 n 
+0003917360 00000 n 
+0003920379 00000 n 
+0003920444 00000 n 
+0003920509 00000 n 
+0003920574 00000 n 
+0003920639 00000 n 
+0003920704 00000 n 
+0003920833 00000 n 
+0003920898 00000 n 
+0003920963 00000 n 
+0003921028 00000 n 
+0003921093 00000 n 
+0003924804 00000 n 
+0003923313 00000 n 
+0003921396 00000 n 
+0003923440 00000 n 
+0003923505 00000 n 
+0003923570 00000 n 
+0003923635 00000 n 
+0003923700 00000 n 
+0003923765 00000 n 
+0003923830 00000 n 
+0003923895 00000 n 
+0003923960 00000 n 
+0003924025 00000 n 
+0003924090 00000 n 
+0003924155 00000 n 
+0003924284 00000 n 
+0003924349 00000 n 
+0003924414 00000 n 
+0003924479 00000 n 
+0003924544 00000 n 
+0003924609 00000 n 
+0003924674 00000 n 
+0003924739 00000 n 
+0005141677 00000 n 
+0003927632 00000 n 
+0003928185 00000 n 
+0003927483 00000 n 
+0003924935 00000 n 
+0003927800 00000 n 
+0003933561 00000 n 
+0003931034 00000 n 
+0003928302 00000 n 
+0003931161 00000 n 
+0003931226 00000 n 
+0003931291 00000 n 
+0003931356 00000 n 
+0003931421 00000 n 
+0003931486 00000 n 
+0003931551 00000 n 
+0003931616 00000 n 
+0003931681 00000 n 
+0003931746 00000 n 
+0003931809 00000 n 
+0003931874 00000 n 
+0003931939 00000 n 
+0003932004 00000 n 
+0003932069 00000 n 
+0003932134 00000 n 
+0003932199 00000 n 
+0003932264 00000 n 
+0003932329 00000 n 
+0003932394 00000 n 
+0003932459 00000 n 
+0003932524 00000 n 
+0003932589 00000 n 
+0003932654 00000 n 
+0003932719 00000 n 
+0003932784 00000 n 
+0003932848 00000 n 
+0003932913 00000 n 
+0003932978 00000 n 
+0003933043 00000 n 
+0003933108 00000 n 
+0003933173 00000 n 
+0003933238 00000 n 
+0003933302 00000 n 
+0003933431 00000 n 
+0003933496 00000 n 
+0003935889 00000 n 
+0003936560 00000 n 
+0003935740 00000 n 
+0003933678 00000 n 
+0003936174 00000 n 
+0003939354 00000 n 
+0003939526 00000 n 
+0003939717 00000 n 
+0003939903 00000 n 
+0003940096 00000 n 
+0003940668 00000 n 
+0003939165 00000 n 
+0003936677 00000 n 
+0003940283 00000 n 
+0003944488 00000 n 
+0003944886 00000 n 
+0003945076 00000 n 
+0003945971 00000 n 
+0003944309 00000 n 
+0003940799 00000 n 
+0003945264 00000 n 
+0003944688 00000 n 
+0003945393 00000 n 
+0003945458 00000 n 
+0003945523 00000 n 
+0003945588 00000 n 
+0003949346 00000 n 
+0003952504 00000 n 
+0003950014 00000 n 
+0003949197 00000 n 
+0003946116 00000 n 
+0003949500 00000 n 
+0003949757 00000 n 
+0005141810 00000 n 
+0003952662 00000 n 
+0003953785 00000 n 
+0003952335 00000 n 
+0003950173 00000 n 
+0003953072 00000 n 
+0003953137 00000 n 
+0003953201 00000 n 
+0003953266 00000 n 
+0003953331 00000 n 
+0003953396 00000 n 
+0003953461 00000 n 
+0003953526 00000 n 
+0003953591 00000 n 
+0003953656 00000 n 
+0003952867 00000 n 
+0003956850 00000 n 
+0003956405 00000 n 
+0003953929 00000 n 
+0003956532 00000 n 
+0003963826 00000 n 
+0003960436 00000 n 
+0003959863 00000 n 
+0003956995 00000 n 
+0003959990 00000 n 
+0003964303 00000 n 
+0003963677 00000 n 
+0003960581 00000 n 
+0003963983 00000 n 
+0003967124 00000 n 
+0003967301 00000 n 
+0003967649 00000 n 
+0003967820 00000 n 
+0003967993 00000 n 
+0003967478 00000 n 
+0003968164 00000 n 
+0003968925 00000 n 
+0003966915 00000 n 
+0003964448 00000 n 
+0003968346 00000 n 
+0003968603 00000 n 
+0003968732 00000 n 
+0003968860 00000 n 
+0003974910 00000 n 
+0003972121 00000 n 
+0003969056 00000 n 
+0003972248 00000 n 
+0003972313 00000 n 
+0003972378 00000 n 
+0003972443 00000 n 
+0003972508 00000 n 
+0003972573 00000 n 
+0003972638 00000 n 
+0003972703 00000 n 
+0003972768 00000 n 
+0003972833 00000 n 
+0003972898 00000 n 
+0003972963 00000 n 
+0003973028 00000 n 
+0003973093 00000 n 
+0003973158 00000 n 
+0003973223 00000 n 
+0003973288 00000 n 
+0003973353 00000 n 
+0003973418 00000 n 
+0003973483 00000 n 
+0003973548 00000 n 
+0003973613 00000 n 
+0003973678 00000 n 
+0003973743 00000 n 
+0003973808 00000 n 
+0003973873 00000 n 
+0003973937 00000 n 
+0003974002 00000 n 
+0003974067 00000 n 
+0003974132 00000 n 
+0003974197 00000 n 
+0003974262 00000 n 
+0003974327 00000 n 
+0003974392 00000 n 
+0003974457 00000 n 
+0003974521 00000 n 
+0003974586 00000 n 
+0003974651 00000 n 
+0003974716 00000 n 
+0003974845 00000 n 
+0005141943 00000 n 
+0003982171 00000 n 
+0003978346 00000 n 
+0003975069 00000 n 
+0003978473 00000 n 
+0003978538 00000 n 
+0003978603 00000 n 
+0003978668 00000 n 
+0003978733 00000 n 
+0003978798 00000 n 
+0003978863 00000 n 
+0003978928 00000 n 
+0003978993 00000 n 
+0003979057 00000 n 
+0003979122 00000 n 
+0003979187 00000 n 
+0003979252 00000 n 
+0003979317 00000 n 
+0003979382 00000 n 
+0003979447 00000 n 
+0003979512 00000 n 
+0003979577 00000 n 
+0003979641 00000 n 
+0003979706 00000 n 
+0003979771 00000 n 
+0003979836 00000 n 
+0003979901 00000 n 
+0003979966 00000 n 
+0003980031 00000 n 
+0003980096 00000 n 
+0003980161 00000 n 
+0003980225 00000 n 
+0003980290 00000 n 
+0003980355 00000 n 
+0003980420 00000 n 
+0003980485 00000 n 
+0003980550 00000 n 
+0003980615 00000 n 
+0003980680 00000 n 
+0003980745 00000 n 
+0003980810 00000 n 
+0003980874 00000 n 
+0003980939 00000 n 
+0003981004 00000 n 
+0003981069 00000 n 
+0003981134 00000 n 
+0003981199 00000 n 
+0003981264 00000 n 
+0003981329 00000 n 
+0003981394 00000 n 
+0003981458 00000 n 
+0003981523 00000 n 
+0003981588 00000 n 
+0003981653 00000 n 
+0003981718 00000 n 
+0003981783 00000 n 
+0003981848 00000 n 
+0003981913 00000 n 
+0003981978 00000 n 
+0003982042 00000 n 
+0003982107 00000 n 
+0003985270 00000 n 
+0003988470 00000 n 
+0003985121 00000 n 
+0003982288 00000 n 
+0003985427 00000 n 
+0003985492 00000 n 
+0003985557 00000 n 
+0003985622 00000 n 
+0003985687 00000 n 
+0003985752 00000 n 
+0003985817 00000 n 
+0003985881 00000 n 
+0003985946 00000 n 
+0003986011 00000 n 
+0003986076 00000 n 
+0003986141 00000 n 
+0003986206 00000 n 
+0003986271 00000 n 
+0003986336 00000 n 
+0003986401 00000 n 
+0003986465 00000 n 
+0003986594 00000 n 
+0003986659 00000 n 
+0003986724 00000 n 
+0003986789 00000 n 
+0003986854 00000 n 
+0003986919 00000 n 
+0003986984 00000 n 
+0003987049 00000 n 
+0003987113 00000 n 
+0003987178 00000 n 
+0003987243 00000 n 
+0003987308 00000 n 
+0003987373 00000 n 
+0003987438 00000 n 
+0003987503 00000 n 
+0003987568 00000 n 
+0003987633 00000 n 
+0003987697 00000 n 
+0003987762 00000 n 
+0003987827 00000 n 
+0003987955 00000 n 
+0003988020 00000 n 
+0003988085 00000 n 
+0003988150 00000 n 
+0003988215 00000 n 
+0003988280 00000 n 
+0003988345 00000 n 
+0003988410 00000 n 
+0003991583 00000 n 
+0003991740 00000 n 
+0003991901 00000 n 
+0003994789 00000 n 
+0003991414 00000 n 
+0003988587 00000 n 
+0003992063 00000 n 
+0003992128 00000 n 
+0003992193 00000 n 
+0003992258 00000 n 
+0003992323 00000 n 
+0003992388 00000 n 
+0003992453 00000 n 
+0003992518 00000 n 
+0003992583 00000 n 
+0003992648 00000 n 
+0003992713 00000 n 
+0003992778 00000 n 
+0003992843 00000 n 
+0003992908 00000 n 
+0003992973 00000 n 
+0003993037 00000 n 
+0003993102 00000 n 
+0003993167 00000 n 
+0003993232 00000 n 
+0003993297 00000 n 
+0003993362 00000 n 
+0003993427 00000 n 
+0003993492 00000 n 
+0003993557 00000 n 
+0003993621 00000 n 
+0003993686 00000 n 
+0003993751 00000 n 
+0003993816 00000 n 
+0003993881 00000 n 
+0003993946 00000 n 
+0003994011 00000 n 
+0003994076 00000 n 
+0003994141 00000 n 
+0003994205 00000 n 
+0003994270 00000 n 
+0003994335 00000 n 
+0003994400 00000 n 
+0003994465 00000 n 
+0003994530 00000 n 
+0003994595 00000 n 
+0003994724 00000 n 
+0003998200 00000 n 
+0003998382 00000 n 
+0003998567 00000 n 
+0003998935 00000 n 
+0003998031 00000 n 
+0003994934 00000 n 
+0003998743 00000 n 
+0004001193 00000 n 
+0004001511 00000 n 
+0004001044 00000 n 
+0003999052 00000 n 
+0004001382 00000 n 
+0004004455 00000 n 
+0004004622 00000 n 
+0004004816 00000 n 
+0004005510 00000 n 
+0004004286 00000 n 
+0004001614 00000 n 
+0004004995 00000 n 
+0004005251 00000 n 
+0004005316 00000 n 
+0004005381 00000 n 
+0005142076 00000 n 
+0004011364 00000 n 
+0004008772 00000 n 
+0004005613 00000 n 
+0004008899 00000 n 
+0004009028 00000 n 
+0004009093 00000 n 
+0004009158 00000 n 
+0004009223 00000 n 
+0004009288 00000 n 
+0004009353 00000 n 
+0004009418 00000 n 
+0004009483 00000 n 
+0004009548 00000 n 
+0004009612 00000 n 
+0004009677 00000 n 
+0004009742 00000 n 
+0004009807 00000 n 
+0004009872 00000 n 
+0004009937 00000 n 
+0004010002 00000 n 
+0004010067 00000 n 
+0004010132 00000 n 
+0004010196 00000 n 
+0004010261 00000 n 
+0004010326 00000 n 
+0004010391 00000 n 
+0004010456 00000 n 
+0004010521 00000 n 
+0004010586 00000 n 
+0004010651 00000 n 
+0004010716 00000 n 
+0004010780 00000 n 
+0004010845 00000 n 
+0004010910 00000 n 
+0004010975 00000 n 
+0004011040 00000 n 
+0004011105 00000 n 
+0004011170 00000 n 
+0004011235 00000 n 
+0004011300 00000 n 
+0004017896 00000 n 
+0004013941 00000 n 
+0004011481 00000 n 
+0004014068 00000 n 
+0004014133 00000 n 
+0004014198 00000 n 
+0004014263 00000 n 
+0004014328 00000 n 
+0004014393 00000 n 
+0004014458 00000 n 
+0004014522 00000 n 
+0004014587 00000 n 
+0004014652 00000 n 
+0004014717 00000 n 
+0004014782 00000 n 
+0004014847 00000 n 
+0004014912 00000 n 
+0004014977 00000 n 
+0004015042 00000 n 
+0004015106 00000 n 
+0004015171 00000 n 
+0004015236 00000 n 
+0004015301 00000 n 
+0004015366 00000 n 
+0004015431 00000 n 
+0004015496 00000 n 
+0004015561 00000 n 
+0004015626 00000 n 
+0004015690 00000 n 
+0004015755 00000 n 
+0004015820 00000 n 
+0004015885 00000 n 
+0004015950 00000 n 
+0004016015 00000 n 
+0004016080 00000 n 
+0004016145 00000 n 
+0004016210 00000 n 
+0004016274 00000 n 
+0004016339 00000 n 
+0004016404 00000 n 
+0004016469 00000 n 
+0004016534 00000 n 
+0004016599 00000 n 
+0004016664 00000 n 
+0004016728 00000 n 
+0004016793 00000 n 
+0004016858 00000 n 
+0004016923 00000 n 
+0004016988 00000 n 
+0004017053 00000 n 
+0004017118 00000 n 
+0004017183 00000 n 
+0004017248 00000 n 
+0004017313 00000 n 
+0004017378 00000 n 
+0004017443 00000 n 
+0004017508 00000 n 
+0004017573 00000 n 
+0004017638 00000 n 
+0004017703 00000 n 
+0004017767 00000 n 
+0004017832 00000 n 
+0004024200 00000 n 
+0004020768 00000 n 
+0004017999 00000 n 
+0004020895 00000 n 
+0004020960 00000 n 
+0004021025 00000 n 
+0004021090 00000 n 
+0004021155 00000 n 
+0004021220 00000 n 
+0004021285 00000 n 
+0004021350 00000 n 
+0004021415 00000 n 
+0004021480 00000 n 
+0004021545 00000 n 
+0004021609 00000 n 
+0004021674 00000 n 
+0004021739 00000 n 
+0004021804 00000 n 
+0004021869 00000 n 
+0004021934 00000 n 
+0004021999 00000 n 
+0004022064 00000 n 
+0004022129 00000 n 
+0004022193 00000 n 
+0004022258 00000 n 
+0004022323 00000 n 
+0004022386 00000 n 
+0004022451 00000 n 
+0004022516 00000 n 
+0004022581 00000 n 
+0004022646 00000 n 
+0004022711 00000 n 
+0004022776 00000 n 
+0004022841 00000 n 
+0004022906 00000 n 
+0004022971 00000 n 
+0004023035 00000 n 
+0004023227 00000 n 
+0004023292 00000 n 
+0004023357 00000 n 
+0004023422 00000 n 
+0004023487 00000 n 
+0004023552 00000 n 
+0004023617 00000 n 
+0004023682 00000 n 
+0004023747 00000 n 
+0004023812 00000 n 
+0004023876 00000 n 
+0004023941 00000 n 
+0004024006 00000 n 
+0004024071 00000 n 
+0004024136 00000 n 
+0004025924 00000 n 
+0004025343 00000 n 
+0004024317 00000 n 
+0004025470 00000 n 
+0004025535 00000 n 
+0004025600 00000 n 
+0004025665 00000 n 
+0004025730 00000 n 
+0004025795 00000 n 
+0004025860 00000 n 
+0004028972 00000 n 
+0004029265 00000 n 
+0004028823 00000 n 
+0004026027 00000 n 
+0004029136 00000 n 
+0004033108 00000 n 
+0004032916 00000 n 
+0004029368 00000 n 
+0004033043 00000 n 
+0005142209 00000 n 
+0004036702 00000 n 
+0004036380 00000 n 
+0004033211 00000 n 
+0004036507 00000 n 
+0004036572 00000 n 
+0004036637 00000 n 
+0004041424 00000 n 
+0004040777 00000 n 
+0004036805 00000 n 
+0004040904 00000 n 
+0004040969 00000 n 
+0004041034 00000 n 
+0004041099 00000 n 
+0004041164 00000 n 
+0004041229 00000 n 
+0004041294 00000 n 
+0004041359 00000 n 
+0004045827 00000 n 
+0004045245 00000 n 
+0004041527 00000 n 
+0004045372 00000 n 
+0004045437 00000 n 
+0004045502 00000 n 
+0004045567 00000 n 
+0004045632 00000 n 
+0004045697 00000 n 
+0004045762 00000 n 
+0004049460 00000 n 
+0004049268 00000 n 
+0004045930 00000 n 
+0004049395 00000 n 
+0004053696 00000 n 
+0004053504 00000 n 
+0004049563 00000 n 
+0004053631 00000 n 
+0004057843 00000 n 
+0004057198 00000 n 
+0004053799 00000 n 
+0004057325 00000 n 
+0004057390 00000 n 
+0004057455 00000 n 
+0004057520 00000 n 
+0004057585 00000 n 
+0004057650 00000 n 
+0004057714 00000 n 
+0004057779 00000 n 
+0005142342 00000 n 
+0004060547 00000 n 
+0004060897 00000 n 
+0004062263 00000 n 
+0004060368 00000 n 
+0004057960 00000 n 
+0004061290 00000 n 
+0004061355 00000 n 
+0004061420 00000 n 
+0004061485 00000 n 
+0004061550 00000 n 
+0004061615 00000 n 
+0004061680 00000 n 
+0004061744 00000 n 
+0004061809 00000 n 
+0004061874 00000 n 
+0004061939 00000 n 
+0004062004 00000 n 
+0004062069 00000 n 
+0004062133 00000 n 
+0004062198 00000 n 
+0004060725 00000 n 
+0004061094 00000 n 
+0004065277 00000 n 
+0004065435 00000 n 
+0004065607 00000 n 
+0004065755 00000 n 
+0004066032 00000 n 
+0004065098 00000 n 
+0004062366 00000 n 
+0004065903 00000 n 
+0004069774 00000 n 
+0004069921 00000 n 
+0004070145 00000 n 
+0004069615 00000 n 
+0004066163 00000 n 
+0004070080 00000 n 
+0004071381 00000 n 
+0004071189 00000 n 
+0004070262 00000 n 
+0004071316 00000 n 
+0004074752 00000 n 
+0004074905 00000 n 
+0004075058 00000 n 
+0004075209 00000 n 
+0004075360 00000 n 
+0004075511 00000 n 
+0004075663 00000 n 
+0004075814 00000 n 
+0004075966 00000 n 
+0004076117 00000 n 
+0004076270 00000 n 
+0004076421 00000 n 
+0004076573 00000 n 
+0004076725 00000 n 
+0004076877 00000 n 
+0004077030 00000 n 
+0004077183 00000 n 
+0004077336 00000 n 
+0004077488 00000 n 
+0004077641 00000 n 
+0004077794 00000 n 
+0004077947 00000 n 
+0004078097 00000 n 
+0004078249 00000 n 
+0004078401 00000 n 
+0004078554 00000 n 
+0004078707 00000 n 
+0004078860 00000 n 
+0004079013 00000 n 
+0004079166 00000 n 
+0004079319 00000 n 
+0004079472 00000 n 
+0004079625 00000 n 
+0004079777 00000 n 
+0004079927 00000 n 
+0004080077 00000 n 
+0004080228 00000 n 
+0004080380 00000 n 
+0004080532 00000 n 
+0004080685 00000 n 
+0004080837 00000 n 
+0004080989 00000 n 
+0004081141 00000 n 
+0004081294 00000 n 
+0004081444 00000 n 
+0004081597 00000 n 
+0004081749 00000 n 
+0004081901 00000 n 
+0004082054 00000 n 
+0004082207 00000 n 
+0004082359 00000 n 
+0004082511 00000 n 
+0004082664 00000 n 
+0004082815 00000 n 
+0004082967 00000 n 
+0004083120 00000 n 
+0004083273 00000 n 
+0004083426 00000 n 
+0004083579 00000 n 
+0004083732 00000 n 
+0004083885 00000 n 
+0004084038 00000 n 
+0004084190 00000 n 
+0004084342 00000 n 
+0004084495 00000 n 
+0004084648 00000 n 
+0004084801 00000 n 
+0004084953 00000 n 
+0004085106 00000 n 
+0004085259 00000 n 
+0004085412 00000 n 
+0004085565 00000 n 
+0004085717 00000 n 
+0004085870 00000 n 
+0004086023 00000 n 
+0004086175 00000 n 
+0004086328 00000 n 
+0004086480 00000 n 
+0004086631 00000 n 
+0004086783 00000 n 
+0004086934 00000 n 
+0004087086 00000 n 
+0004087238 00000 n 
+0004087390 00000 n 
+0004087542 00000 n 
+0004087695 00000 n 
+0004087848 00000 n 
+0004088001 00000 n 
+0004088153 00000 n 
+0004088306 00000 n 
+0004088459 00000 n 
+0004088611 00000 n 
+0004088764 00000 n 
+0004088915 00000 n 
+0004089066 00000 n 
+0004089216 00000 n 
+0004089367 00000 n 
+0004089519 00000 n 
+0004089672 00000 n 
+0004089825 00000 n 
+0004089978 00000 n 
+0004090129 00000 n 
+0004090280 00000 n 
+0004090433 00000 n 
+0004090586 00000 n 
+0004090737 00000 n 
+0004090890 00000 n 
+0004091042 00000 n 
+0004091194 00000 n 
+0004091347 00000 n 
+0004091498 00000 n 
+0004091649 00000 n 
+0004091802 00000 n 
+0004091955 00000 n 
+0004092107 00000 n 
+0004092260 00000 n 
+0004092413 00000 n 
+0004092566 00000 n 
+0004092719 00000 n 
+0004092871 00000 n 
+0004093023 00000 n 
+0004093176 00000 n 
+0004093329 00000 n 
+0004093480 00000 n 
+0004093633 00000 n 
+0004093785 00000 n 
+0004093938 00000 n 
+0004094091 00000 n 
+0004094244 00000 n 
+0004094397 00000 n 
+0004094550 00000 n 
+0004094702 00000 n 
+0004094855 00000 n 
+0004095008 00000 n 
+0004095161 00000 n 
+0004095314 00000 n 
+0004095467 00000 n 
+0004095620 00000 n 
+0004095772 00000 n 
+0004095925 00000 n 
+0004096078 00000 n 
+0004096231 00000 n 
+0004096384 00000 n 
+0004096536 00000 n 
+0004096689 00000 n 
+0004096842 00000 n 
+0004096995 00000 n 
+0004097147 00000 n 
+0004097298 00000 n 
+0004101629 00000 n 
+0004097576 00000 n 
+0004073123 00000 n 
+0004071498 00000 n 
+0004097448 00000 n 
+0004101780 00000 n 
+0004101931 00000 n 
+0004102082 00000 n 
+0004102234 00000 n 
+0004102386 00000 n 
+0004102538 00000 n 
+0004102691 00000 n 
+0004102843 00000 n 
+0004102996 00000 n 
+0004103147 00000 n 
+0004103300 00000 n 
+0004103452 00000 n 
+0004103604 00000 n 
+0004103754 00000 n 
+0004103907 00000 n 
+0004104058 00000 n 
+0004104210 00000 n 
+0004104360 00000 n 
+0004104512 00000 n 
+0004104664 00000 n 
+0004104816 00000 n 
+0004104968 00000 n 
+0004105119 00000 n 
+0004105272 00000 n 
+0004105424 00000 n 
+0004105576 00000 n 
+0004105729 00000 n 
+0004105880 00000 n 
+0004106032 00000 n 
+0004106185 00000 n 
+0004106338 00000 n 
+0004106491 00000 n 
+0004106644 00000 n 
+0004106797 00000 n 
+0004106946 00000 n 
+0004107099 00000 n 
+0004107251 00000 n 
+0004107404 00000 n 
+0004107557 00000 n 
+0004107706 00000 n 
+0004107858 00000 n 
+0004108010 00000 n 
+0004108163 00000 n 
+0004108315 00000 n 
+0004108467 00000 n 
+0004108619 00000 n 
+0004108771 00000 n 
+0004108922 00000 n 
+0004109074 00000 n 
+0004109225 00000 n 
+0004109378 00000 n 
+0004109531 00000 n 
+0004109684 00000 n 
+0004109836 00000 n 
+0004109988 00000 n 
+0004110140 00000 n 
+0004110292 00000 n 
+0004110444 00000 n 
+0004110596 00000 n 
+0004110749 00000 n 
+0004110902 00000 n 
+0004111055 00000 n 
+0004111206 00000 n 
+0004111358 00000 n 
+0004111510 00000 n 
+0004111663 00000 n 
+0004111816 00000 n 
+0004111969 00000 n 
+0004112121 00000 n 
+0004112273 00000 n 
+0004112425 00000 n 
+0004112575 00000 n 
+0004112728 00000 n 
+0004112881 00000 n 
+0004113034 00000 n 
+0004113187 00000 n 
+0004113340 00000 n 
+0004113493 00000 n 
+0004113646 00000 n 
+0004113798 00000 n 
+0004113950 00000 n 
+0004114101 00000 n 
+0004114253 00000 n 
+0004114405 00000 n 
+0004114557 00000 n 
+0004114709 00000 n 
+0004114861 00000 n 
+0004115013 00000 n 
+0004115166 00000 n 
+0004115319 00000 n 
+0004115471 00000 n 
+0004115624 00000 n 
+0004115775 00000 n 
+0004115928 00000 n 
+0004116081 00000 n 
+0004116234 00000 n 
+0004116387 00000 n 
+0004116539 00000 n 
+0004116690 00000 n 
+0004116841 00000 n 
+0004116991 00000 n 
+0004117143 00000 n 
+0004117294 00000 n 
+0004117446 00000 n 
+0004117598 00000 n 
+0004117750 00000 n 
+0004117901 00000 n 
+0004118053 00000 n 
+0004118205 00000 n 
+0004118358 00000 n 
+0004118511 00000 n 
+0004118664 00000 n 
+0004118816 00000 n 
+0004118969 00000 n 
+0004119122 00000 n 
+0004119275 00000 n 
+0004119428 00000 n 
+0004119581 00000 n 
+0004119733 00000 n 
+0004119885 00000 n 
+0004120037 00000 n 
+0004120189 00000 n 
+0004120341 00000 n 
+0004120494 00000 n 
+0004120647 00000 n 
+0004120799 00000 n 
+0004120952 00000 n 
+0004121104 00000 n 
+0004121256 00000 n 
+0004121408 00000 n 
+0004121561 00000 n 
+0004121714 00000 n 
+0004121867 00000 n 
+0004122020 00000 n 
+0004122173 00000 n 
+0004122326 00000 n 
+0004122478 00000 n 
+0004122631 00000 n 
+0004122784 00000 n 
+0004122937 00000 n 
+0004123090 00000 n 
+0004123243 00000 n 
+0004123395 00000 n 
+0004123548 00000 n 
+0004123698 00000 n 
+0004123851 00000 n 
+0004124004 00000 n 
+0004124156 00000 n 
+0004124309 00000 n 
+0004124462 00000 n 
+0004124614 00000 n 
+0004124766 00000 n 
+0004124919 00000 n 
+0004125071 00000 n 
+0004125223 00000 n 
+0004125375 00000 n 
+0004125528 00000 n 
+0004125681 00000 n 
+0004125834 00000 n 
+0004125987 00000 n 
+0004126138 00000 n 
+0004126289 00000 n 
+0004126441 00000 n 
+0004126592 00000 n 
+0004126744 00000 n 
+0004126895 00000 n 
+0004127046 00000 n 
+0004127197 00000 n 
+0004131493 00000 n 
+0004127413 00000 n 
+0004099800 00000 n 
+0004097693 00000 n 
+0004127348 00000 n 
+0005142475 00000 n 
+0004131645 00000 n 
+0004131798 00000 n 
+0004131950 00000 n 
+0004132103 00000 n 
+0004132252 00000 n 
+0004132405 00000 n 
+0004132555 00000 n 
+0004132706 00000 n 
+0004132858 00000 n 
+0004133010 00000 n 
+0004133162 00000 n 
+0004133314 00000 n 
+0004133465 00000 n 
+0004133617 00000 n 
+0004133768 00000 n 
+0004133920 00000 n 
+0004134072 00000 n 
+0004134222 00000 n 
+0004134375 00000 n 
+0004134527 00000 n 
+0004134680 00000 n 
+0004134833 00000 n 
+0004134986 00000 n 
+0004135138 00000 n 
+0004135291 00000 n 
+0004135442 00000 n 
+0004135594 00000 n 
+0004135746 00000 n 
+0004135897 00000 n 
+0004136049 00000 n 
+0004136201 00000 n 
+0004136353 00000 n 
+0004136505 00000 n 
+0004136657 00000 n 
+0004136809 00000 n 
+0004136961 00000 n 
+0004137114 00000 n 
+0004137267 00000 n 
+0004137419 00000 n 
+0004137572 00000 n 
+0004137724 00000 n 
+0004137877 00000 n 
+0004138030 00000 n 
+0004138183 00000 n 
+0004138333 00000 n 
+0004138486 00000 n 
+0004138639 00000 n 
+0004138791 00000 n 
+0004138943 00000 n 
+0004139096 00000 n 
+0004139247 00000 n 
+0004139400 00000 n 
+0004139553 00000 n 
+0004139706 00000 n 
+0004139858 00000 n 
+0004140011 00000 n 
+0004140162 00000 n 
+0004140313 00000 n 
+0004140465 00000 n 
+0004140618 00000 n 
+0004140771 00000 n 
+0004140924 00000 n 
+0004141075 00000 n 
+0004141228 00000 n 
+0004141380 00000 n 
+0004141532 00000 n 
+0004141684 00000 n 
+0004141837 00000 n 
+0004141989 00000 n 
+0004142141 00000 n 
+0004142292 00000 n 
+0004142445 00000 n 
+0004142597 00000 n 
+0004142750 00000 n 
+0004142902 00000 n 
+0004143055 00000 n 
+0004143205 00000 n 
+0004143358 00000 n 
+0004143509 00000 n 
+0004143662 00000 n 
+0004143814 00000 n 
+0004143966 00000 n 
+0004144118 00000 n 
+0004144270 00000 n 
+0004144422 00000 n 
+0004144574 00000 n 
+0004144727 00000 n 
+0004144879 00000 n 
+0004145032 00000 n 
+0004145184 00000 n 
+0004145337 00000 n 
+0004145489 00000 n 
+0004145642 00000 n 
+0004145793 00000 n 
+0004145945 00000 n 
+0004146098 00000 n 
+0004146251 00000 n 
+0004146402 00000 n 
+0004146555 00000 n 
+0004146708 00000 n 
+0004146861 00000 n 
+0004147012 00000 n 
+0004147163 00000 n 
+0004147315 00000 n 
+0004147468 00000 n 
+0004147621 00000 n 
+0004147774 00000 n 
+0004147927 00000 n 
+0004148079 00000 n 
+0004148231 00000 n 
+0004148383 00000 n 
+0004148535 00000 n 
+0004148688 00000 n 
+0004148839 00000 n 
+0004148990 00000 n 
+0004149142 00000 n 
+0004149293 00000 n 
+0004149445 00000 n 
+0004149597 00000 n 
+0004149749 00000 n 
+0004149900 00000 n 
+0004150052 00000 n 
+0004150204 00000 n 
+0004150356 00000 n 
+0004150509 00000 n 
+0004150662 00000 n 
+0004150815 00000 n 
+0004150968 00000 n 
+0004151119 00000 n 
+0004151272 00000 n 
+0004151424 00000 n 
+0004151575 00000 n 
+0004151727 00000 n 
+0004151880 00000 n 
+0004152033 00000 n 
+0004152185 00000 n 
+0004152338 00000 n 
+0004152490 00000 n 
+0004152643 00000 n 
+0004152796 00000 n 
+0004152948 00000 n 
+0004153099 00000 n 
+0004153249 00000 n 
+0004153402 00000 n 
+0004153552 00000 n 
+0004153705 00000 n 
+0004153857 00000 n 
+0004154009 00000 n 
+0004154157 00000 n 
+0004154310 00000 n 
+0004154463 00000 n 
+0004154615 00000 n 
+0004154768 00000 n 
+0004154920 00000 n 
+0004155072 00000 n 
+0004155224 00000 n 
+0004155375 00000 n 
+0004155528 00000 n 
+0004155679 00000 n 
+0004155832 00000 n 
+0004155985 00000 n 
+0004156137 00000 n 
+0004156289 00000 n 
+0004156441 00000 n 
+0004156593 00000 n 
+0004156746 00000 n 
+0004156899 00000 n 
+0004157052 00000 n 
+0004157204 00000 n 
+0004157355 00000 n 
+0004157507 00000 n 
+0004161758 00000 n 
+0004157722 00000 n 
+0004129634 00000 n 
+0004127530 00000 n 
+0004157657 00000 n 
+0004161910 00000 n 
+0004162061 00000 n 
+0004162213 00000 n 
+0004162365 00000 n 
+0004162517 00000 n 
+0004162670 00000 n 
+0004162821 00000 n 
+0004162974 00000 n 
+0004163125 00000 n 
+0004163278 00000 n 
+0004163431 00000 n 
+0004163584 00000 n 
+0004163735 00000 n 
+0004163888 00000 n 
+0004164040 00000 n 
+0004164193 00000 n 
+0004164344 00000 n 
+0004164496 00000 n 
+0004164649 00000 n 
+0004164802 00000 n 
+0004164953 00000 n 
+0004165106 00000 n 
+0004165256 00000 n 
+0004165407 00000 n 
+0004165558 00000 n 
+0004165710 00000 n 
+0004165862 00000 n 
+0004166014 00000 n 
+0004166166 00000 n 
+0004166319 00000 n 
+0004166471 00000 n 
+0004166624 00000 n 
+0004166776 00000 n 
+0004166929 00000 n 
+0004167081 00000 n 
+0004167234 00000 n 
+0004167387 00000 n 
+0004167539 00000 n 
+0004167692 00000 n 
+0004167844 00000 n 
+0004167996 00000 n 
+0004168149 00000 n 
+0004168302 00000 n 
+0004168452 00000 n 
+0004168605 00000 n 
+0004168757 00000 n 
+0004168910 00000 n 
+0004169062 00000 n 
+0004169215 00000 n 
+0004169368 00000 n 
+0004169519 00000 n 
+0004169672 00000 n 
+0004169825 00000 n 
+0004169978 00000 n 
+0004170131 00000 n 
+0004170281 00000 n 
+0004170431 00000 n 
+0004170584 00000 n 
+0004170736 00000 n 
+0004170888 00000 n 
+0004171038 00000 n 
+0004171190 00000 n 
+0004171343 00000 n 
+0004171496 00000 n 
+0004171647 00000 n 
+0004171799 00000 n 
+0004171950 00000 n 
+0004172103 00000 n 
+0004172254 00000 n 
+0004172407 00000 n 
+0004172559 00000 n 
+0004172711 00000 n 
+0004172862 00000 n 
+0004173014 00000 n 
+0004173167 00000 n 
+0004173320 00000 n 
+0004173471 00000 n 
+0004173623 00000 n 
+0004173775 00000 n 
+0004173928 00000 n 
+0004174081 00000 n 
+0004174234 00000 n 
+0004174385 00000 n 
+0004174537 00000 n 
+0004174688 00000 n 
+0004174840 00000 n 
+0004174992 00000 n 
+0004175145 00000 n 
+0004175297 00000 n 
+0004175449 00000 n 
+0004175599 00000 n 
+0004175750 00000 n 
+0004175902 00000 n 
+0004176053 00000 n 
+0004176205 00000 n 
+0004176358 00000 n 
+0004176511 00000 n 
+0004176663 00000 n 
+0004176814 00000 n 
+0004176966 00000 n 
+0004177118 00000 n 
+0004177271 00000 n 
+0004177423 00000 n 
+0004177575 00000 n 
+0004177726 00000 n 
+0004177879 00000 n 
+0004178031 00000 n 
+0004178184 00000 n 
+0004178335 00000 n 
+0004178486 00000 n 
+0004178637 00000 n 
+0004178789 00000 n 
+0004178941 00000 n 
+0004179093 00000 n 
+0004179246 00000 n 
+0004179398 00000 n 
+0004179551 00000 n 
+0004179704 00000 n 
+0004179856 00000 n 
+0004180008 00000 n 
+0004180161 00000 n 
+0004180314 00000 n 
+0004180466 00000 n 
+0004180619 00000 n 
+0004180772 00000 n 
+0004180924 00000 n 
+0004181074 00000 n 
+0004181225 00000 n 
+0004181377 00000 n 
+0004181528 00000 n 
+0004181681 00000 n 
+0004181833 00000 n 
+0004181985 00000 n 
+0004182137 00000 n 
+0004182290 00000 n 
+0004182443 00000 n 
+0004182595 00000 n 
+0004182748 00000 n 
+0004182900 00000 n 
+0004183053 00000 n 
+0004183206 00000 n 
+0004183359 00000 n 
+0004183512 00000 n 
+0004183665 00000 n 
+0004183818 00000 n 
+0004183971 00000 n 
+0004184124 00000 n 
+0004184277 00000 n 
+0004184430 00000 n 
+0004184583 00000 n 
+0004184736 00000 n 
+0004184887 00000 n 
+0004185040 00000 n 
+0004185192 00000 n 
+0004185344 00000 n 
+0004185497 00000 n 
+0004185649 00000 n 
+0004185801 00000 n 
+0004185953 00000 n 
+0004186106 00000 n 
+0004186258 00000 n 
+0004190009 00000 n 
+0004186473 00000 n 
+0004159999 00000 n 
+0004157839 00000 n 
+0004186408 00000 n 
+0004190162 00000 n 
+0004190315 00000 n 
+0004190467 00000 n 
+0004190620 00000 n 
+0004190773 00000 n 
+0004190926 00000 n 
+0004191078 00000 n 
+0004191230 00000 n 
+0004191383 00000 n 
+0004191535 00000 n 
+0004191686 00000 n 
+0004191838 00000 n 
+0004191989 00000 n 
+0004192140 00000 n 
+0004192293 00000 n 
+0004192444 00000 n 
+0004192596 00000 n 
+0004192746 00000 n 
+0004192898 00000 n 
+0004193048 00000 n 
+0004193200 00000 n 
+0004193353 00000 n 
+0004193502 00000 n 
+0004193652 00000 n 
+0004193805 00000 n 
+0004193958 00000 n 
+0004194111 00000 n 
+0004194262 00000 n 
+0004194415 00000 n 
+0004194568 00000 n 
+0004194719 00000 n 
+0004194872 00000 n 
+0004195025 00000 n 
+0004195178 00000 n 
+0004195329 00000 n 
+0004195482 00000 n 
+0004195631 00000 n 
+0004195783 00000 n 
+0004195935 00000 n 
+0004196088 00000 n 
+0004196240 00000 n 
+0004196393 00000 n 
+0004196544 00000 n 
+0004196696 00000 n 
+0004196849 00000 n 
+0004197002 00000 n 
+0004197155 00000 n 
+0004197307 00000 n 
+0004197459 00000 n 
+0004197608 00000 n 
+0004197759 00000 n 
+0004197910 00000 n 
+0004198059 00000 n 
+0004198209 00000 n 
+0004198362 00000 n 
+0004198515 00000 n 
+0004198665 00000 n 
+0004198817 00000 n 
+0004198968 00000 n 
+0004199119 00000 n 
+0004199272 00000 n 
+0004199425 00000 n 
+0004199577 00000 n 
+0004199729 00000 n 
+0004199882 00000 n 
+0004200034 00000 n 
+0004200186 00000 n 
+0004200339 00000 n 
+0004200492 00000 n 
+0004200642 00000 n 
+0004200794 00000 n 
+0004200946 00000 n 
+0004201099 00000 n 
+0004201252 00000 n 
+0004201405 00000 n 
+0004201555 00000 n 
+0004201708 00000 n 
+0004201860 00000 n 
+0004202013 00000 n 
+0004202163 00000 n 
+0004202316 00000 n 
+0004202468 00000 n 
+0004202620 00000 n 
+0004202772 00000 n 
+0004202922 00000 n 
+0004203074 00000 n 
+0004203226 00000 n 
+0004203378 00000 n 
+0004203530 00000 n 
+0004203683 00000 n 
+0004203834 00000 n 
+0004203986 00000 n 
+0004204139 00000 n 
+0004204292 00000 n 
+0004204445 00000 n 
+0004204597 00000 n 
+0004204749 00000 n 
+0004204902 00000 n 
+0004205055 00000 n 
+0004205206 00000 n 
+0004205359 00000 n 
+0004205512 00000 n 
+0004205663 00000 n 
+0004205816 00000 n 
+0004205968 00000 n 
+0004206120 00000 n 
+0004206271 00000 n 
+0004206424 00000 n 
+0004206576 00000 n 
+0004206729 00000 n 
+0004206882 00000 n 
+0004207034 00000 n 
+0004207187 00000 n 
+0004207338 00000 n 
+0004207489 00000 n 
+0004207642 00000 n 
+0004207795 00000 n 
+0004207946 00000 n 
+0004208098 00000 n 
+0004208250 00000 n 
+0004208402 00000 n 
+0004208554 00000 n 
+0004208706 00000 n 
+0004208858 00000 n 
+0004209011 00000 n 
+0004209164 00000 n 
+0004209315 00000 n 
+0004213281 00000 n 
+0004209531 00000 n 
+0004188590 00000 n 
+0004186590 00000 n 
+0004209466 00000 n 
+0004213433 00000 n 
+0004213586 00000 n 
+0004213736 00000 n 
+0004213889 00000 n 
+0004214041 00000 n 
+0004214193 00000 n 
+0004214346 00000 n 
+0004214497 00000 n 
+0004214648 00000 n 
+0004214800 00000 n 
+0004214951 00000 n 
+0004215103 00000 n 
+0004215253 00000 n 
+0004215405 00000 n 
+0004215558 00000 n 
+0004215711 00000 n 
+0004215861 00000 n 
+0004216013 00000 n 
+0004216166 00000 n 
+0004216318 00000 n 
+0004216470 00000 n 
+0004216622 00000 n 
+0004216774 00000 n 
+0004216926 00000 n 
+0004217079 00000 n 
+0004217231 00000 n 
+0004217383 00000 n 
+0004217535 00000 n 
+0004217686 00000 n 
+0004217836 00000 n 
+0004217989 00000 n 
+0004218141 00000 n 
+0004218293 00000 n 
+0004218446 00000 n 
+0004218599 00000 n 
+0004218748 00000 n 
+0004218900 00000 n 
+0004219052 00000 n 
+0004219205 00000 n 
+0004219357 00000 n 
+0004219510 00000 n 
+0004219663 00000 n 
+0004219816 00000 n 
+0004219969 00000 n 
+0004220119 00000 n 
+0004220271 00000 n 
+0004220424 00000 n 
+0004220577 00000 n 
+0004220730 00000 n 
+0004220883 00000 n 
+0004221035 00000 n 
+0004221188 00000 n 
+0004221341 00000 n 
+0004221493 00000 n 
+0004221645 00000 n 
+0004221798 00000 n 
+0004221949 00000 n 
+0004222101 00000 n 
+0004222253 00000 n 
+0004222405 00000 n 
+0004222556 00000 n 
+0004222708 00000 n 
+0004222859 00000 n 
+0004223011 00000 n 
+0004223164 00000 n 
+0004223316 00000 n 
+0004223469 00000 n 
+0004223622 00000 n 
+0004223774 00000 n 
+0004223926 00000 n 
+0004224078 00000 n 
+0004224229 00000 n 
+0004224381 00000 n 
+0004224532 00000 n 
+0004224684 00000 n 
+0004224835 00000 n 
+0004224988 00000 n 
+0004225140 00000 n 
+0004225293 00000 n 
+0004225445 00000 n 
+0004225594 00000 n 
+0004225747 00000 n 
+0004225900 00000 n 
+0004226053 00000 n 
+0004226205 00000 n 
+0004226356 00000 n 
+0004226509 00000 n 
+0004226660 00000 n 
+0004226811 00000 n 
+0004226963 00000 n 
+0004227113 00000 n 
+0004227265 00000 n 
+0004227417 00000 n 
+0004227570 00000 n 
+0004227722 00000 n 
+0004227874 00000 n 
+0004228027 00000 n 
+0004228180 00000 n 
+0004228332 00000 n 
+0004228485 00000 n 
+0004228636 00000 n 
+0004228787 00000 n 
+0004228939 00000 n 
+0004229088 00000 n 
+0004229240 00000 n 
+0004229393 00000 n 
+0004229545 00000 n 
+0004229697 00000 n 
+0004229850 00000 n 
+0004230003 00000 n 
+0004230155 00000 n 
+0004230306 00000 n 
+0004230458 00000 n 
+0004230611 00000 n 
+0004230763 00000 n 
+0004230916 00000 n 
+0004231068 00000 n 
+0004231221 00000 n 
+0004231373 00000 n 
+0004231526 00000 n 
+0004231679 00000 n 
+0004231831 00000 n 
+0004231984 00000 n 
+0004232136 00000 n 
+0004232287 00000 n 
+0004232440 00000 n 
+0004232592 00000 n 
+0004232745 00000 n 
+0004232897 00000 n 
+0004233050 00000 n 
+0004233203 00000 n 
+0004233356 00000 n 
+0004233507 00000 n 
+0004233660 00000 n 
+0004233813 00000 n 
+0004233966 00000 n 
+0004234118 00000 n 
+0004234270 00000 n 
+0004234423 00000 n 
+0004234574 00000 n 
+0004234727 00000 n 
+0004234879 00000 n 
+0004235031 00000 n 
+0004235184 00000 n 
+0004235337 00000 n 
+0004235490 00000 n 
+0004235642 00000 n 
+0004235795 00000 n 
+0004235948 00000 n 
+0004236101 00000 n 
+0004236252 00000 n 
+0004236405 00000 n 
+0004236557 00000 n 
+0004236708 00000 n 
+0004236858 00000 n 
+0004241105 00000 n 
+0004237074 00000 n 
+0004211582 00000 n 
+0004209634 00000 n 
+0004237009 00000 n 
+0004241256 00000 n 
+0004241409 00000 n 
+0004241562 00000 n 
+0004241715 00000 n 
+0004241868 00000 n 
+0004242021 00000 n 
+0004242174 00000 n 
+0004242327 00000 n 
+0004242479 00000 n 
+0004242631 00000 n 
+0004242783 00000 n 
+0004242936 00000 n 
+0004243088 00000 n 
+0004243240 00000 n 
+0004243392 00000 n 
+0004243544 00000 n 
+0004243697 00000 n 
+0004243850 00000 n 
+0004244001 00000 n 
+0004244152 00000 n 
+0004244303 00000 n 
+0004244455 00000 n 
+0004244607 00000 n 
+0004244759 00000 n 
+0004244912 00000 n 
+0004245065 00000 n 
+0004245218 00000 n 
+0004245369 00000 n 
+0004245522 00000 n 
+0004245675 00000 n 
+0004245826 00000 n 
+0004245978 00000 n 
+0004246129 00000 n 
+0004246281 00000 n 
+0004246434 00000 n 
+0004246583 00000 n 
+0004246734 00000 n 
+0004246884 00000 n 
+0004247035 00000 n 
+0004247186 00000 n 
+0004247337 00000 n 
+0004247489 00000 n 
+0004247641 00000 n 
+0004247793 00000 n 
+0004247945 00000 n 
+0004248097 00000 n 
+0004248249 00000 n 
+0004248401 00000 n 
+0004248554 00000 n 
+0004248705 00000 n 
+0004248857 00000 n 
+0004249010 00000 n 
+0004249162 00000 n 
+0004249314 00000 n 
+0004249464 00000 n 
+0004249616 00000 n 
+0004249766 00000 n 
+0004249918 00000 n 
+0004250070 00000 n 
+0004250222 00000 n 
+0004250375 00000 n 
+0004250527 00000 n 
+0004250680 00000 n 
+0004250833 00000 n 
+0004250986 00000 n 
+0004251139 00000 n 
+0004251292 00000 n 
+0004251445 00000 n 
+0004251597 00000 n 
+0004251748 00000 n 
+0004251898 00000 n 
+0004252051 00000 n 
+0004252204 00000 n 
+0004252357 00000 n 
+0004252510 00000 n 
+0004252662 00000 n 
+0004252815 00000 n 
+0004252968 00000 n 
+0004253120 00000 n 
+0004253272 00000 n 
+0004253424 00000 n 
+0004253576 00000 n 
+0004253729 00000 n 
+0004253881 00000 n 
+0004254034 00000 n 
+0004254186 00000 n 
+0004254338 00000 n 
+0004254489 00000 n 
+0004254642 00000 n 
+0004254794 00000 n 
+0004254946 00000 n 
+0004255098 00000 n 
+0004255251 00000 n 
+0004255404 00000 n 
+0004255555 00000 n 
+0004255707 00000 n 
+0004255859 00000 n 
+0004256011 00000 n 
+0004256163 00000 n 
+0004256315 00000 n 
+0004256467 00000 n 
+0004256619 00000 n 
+0004256772 00000 n 
+0004256924 00000 n 
+0004257077 00000 n 
+0004257230 00000 n 
+0004257382 00000 n 
+0004257535 00000 n 
+0004257685 00000 n 
+0004257835 00000 n 
+0004257987 00000 n 
+0004258139 00000 n 
+0004258291 00000 n 
+0004258444 00000 n 
+0004258595 00000 n 
+0004258746 00000 n 
+0004258896 00000 n 
+0004259047 00000 n 
+0004259198 00000 n 
+0004259349 00000 n 
+0004259499 00000 n 
+0004259650 00000 n 
+0004259801 00000 n 
+0004259952 00000 n 
+0004260102 00000 n 
+0004260253 00000 n 
+0004260405 00000 n 
+0004260557 00000 n 
+0004260708 00000 n 
+0004260861 00000 n 
+0004261013 00000 n 
+0004261166 00000 n 
+0004261319 00000 n 
+0004261471 00000 n 
+0004261624 00000 n 
+0004261776 00000 n 
+0004261928 00000 n 
+0004262081 00000 n 
+0004262233 00000 n 
+0004262385 00000 n 
+0004262536 00000 n 
+0004262689 00000 n 
+0004262841 00000 n 
+0004262993 00000 n 
+0004263144 00000 n 
+0004263295 00000 n 
+0004263448 00000 n 
+0004263599 00000 n 
+0004263751 00000 n 
+0004263904 00000 n 
+0004264057 00000 n 
+0004264209 00000 n 
+0004264362 00000 n 
+0004264514 00000 n 
+0004264667 00000 n 
+0004264820 00000 n 
+0004264971 00000 n 
+0004265122 00000 n 
+0004265274 00000 n 
+0004265426 00000 n 
+0004265577 00000 n 
+0004265729 00000 n 
+0004265881 00000 n 
+0004266032 00000 n 
+0004266184 00000 n 
+0004266337 00000 n 
+0004266486 00000 n 
+0004266635 00000 n 
+0004271249 00000 n 
+0004271400 00000 n 
+0004266850 00000 n 
+0004239276 00000 n 
+0004237177 00000 n 
+0004266785 00000 n 
+0004271549 00000 n 
+0004271701 00000 n 
+0004271853 00000 n 
+0004272005 00000 n 
+0004272157 00000 n 
+0004272308 00000 n 
+0004272461 00000 n 
+0004272613 00000 n 
+0004272766 00000 n 
+0004272917 00000 n 
+0004273067 00000 n 
+0004273219 00000 n 
+0004273370 00000 n 
+0004273522 00000 n 
+0004273675 00000 n 
+0004273826 00000 n 
+0004273979 00000 n 
+0004274130 00000 n 
+0004274282 00000 n 
+0004274434 00000 n 
+0004274586 00000 n 
+0004274739 00000 n 
+0004274892 00000 n 
+0004275042 00000 n 
+0004275194 00000 n 
+0004275347 00000 n 
+0004275498 00000 n 
+0004275650 00000 n 
+0004275802 00000 n 
+0004275953 00000 n 
+0004276105 00000 n 
+0004276257 00000 n 
+0004276410 00000 n 
+0004276563 00000 n 
+0004276716 00000 n 
+0004276868 00000 n 
+0004277021 00000 n 
+0004277174 00000 n 
+0004277326 00000 n 
+0004277479 00000 n 
+0004277631 00000 n 
+0004277783 00000 n 
+0004277934 00000 n 
+0004278086 00000 n 
+0004278239 00000 n 
+0004278392 00000 n 
+0004278545 00000 n 
+0004278698 00000 n 
+0004278851 00000 n 
+0004279004 00000 n 
+0004279157 00000 n 
+0004279310 00000 n 
+0004279463 00000 n 
+0004279616 00000 n 
+0004279769 00000 n 
+0004279922 00000 n 
+0004280073 00000 n 
+0004280226 00000 n 
+0004280378 00000 n 
+0004280531 00000 n 
+0004280683 00000 n 
+0004280836 00000 n 
+0004280989 00000 n 
+0004281141 00000 n 
+0004281292 00000 n 
+0004281444 00000 n 
+0004281595 00000 n 
+0004281747 00000 n 
+0004281900 00000 n 
+0004282052 00000 n 
+0004282203 00000 n 
+0004282356 00000 n 
+0004282508 00000 n 
+0004282659 00000 n 
+0004282811 00000 n 
+0004282963 00000 n 
+0004283115 00000 n 
+0004283266 00000 n 
+0004283418 00000 n 
+0004283571 00000 n 
+0004283723 00000 n 
+0004283875 00000 n 
+0004284025 00000 n 
+0004284175 00000 n 
+0004284326 00000 n 
+0004284477 00000 n 
+0004284628 00000 n 
+0004284779 00000 n 
+0004284931 00000 n 
+0004285083 00000 n 
+0004285235 00000 n 
+0004285387 00000 n 
+0004285539 00000 n 
+0004285692 00000 n 
+0004285843 00000 n 
+0004285995 00000 n 
+0004286147 00000 n 
+0004286300 00000 n 
+0004286453 00000 n 
+0004286606 00000 n 
+0004286758 00000 n 
+0004286911 00000 n 
+0004287064 00000 n 
+0004287216 00000 n 
+0004287369 00000 n 
+0004287521 00000 n 
+0004287673 00000 n 
+0004287826 00000 n 
+0004287978 00000 n 
+0004288129 00000 n 
+0004288281 00000 n 
+0004288432 00000 n 
+0004288585 00000 n 
+0004288736 00000 n 
+0004288885 00000 n 
+0004289037 00000 n 
+0004289189 00000 n 
+0004289340 00000 n 
+0004289492 00000 n 
+0004289644 00000 n 
+0004289796 00000 n 
+0004289949 00000 n 
+0004290102 00000 n 
+0004290255 00000 n 
+0004290408 00000 n 
+0004290559 00000 n 
+0004290712 00000 n 
+0004290863 00000 n 
+0004291016 00000 n 
+0004291168 00000 n 
+0004291321 00000 n 
+0004291473 00000 n 
+0004291626 00000 n 
+0004291778 00000 n 
+0004291931 00000 n 
+0004292084 00000 n 
+0004292236 00000 n 
+0004292389 00000 n 
+0004292542 00000 n 
+0004292694 00000 n 
+0004292844 00000 n 
+0004292997 00000 n 
+0004293150 00000 n 
+0004293302 00000 n 
+0004293454 00000 n 
+0004293606 00000 n 
+0004293759 00000 n 
+0004293910 00000 n 
+0004294061 00000 n 
+0004294213 00000 n 
+0004294365 00000 n 
+0004294517 00000 n 
+0004294668 00000 n 
+0004294820 00000 n 
+0004294973 00000 n 
+0004295125 00000 n 
+0004295278 00000 n 
+0004295431 00000 n 
+0004295584 00000 n 
+0004295736 00000 n 
+0004295888 00000 n 
+0004296041 00000 n 
+0004296194 00000 n 
+0004296346 00000 n 
+0004296499 00000 n 
+0004296651 00000 n 
+0004296804 00000 n 
+0004296956 00000 n 
+0004297109 00000 n 
+0004297261 00000 n 
+0004297414 00000 n 
+0004297567 00000 n 
+0004297719 00000 n 
+0004297872 00000 n 
+0004298024 00000 n 
+0004298176 00000 n 
+0004298329 00000 n 
+0004298480 00000 n 
+0004298631 00000 n 
+0004298783 00000 n 
+0004298933 00000 n 
+0004299083 00000 n 
+0004299236 00000 n 
+0004299389 00000 n 
+0004299542 00000 n 
+0004299695 00000 n 
+0004299847 00000 n 
+0004299999 00000 n 
+0004300151 00000 n 
+0004300302 00000 n 
+0004300453 00000 n 
+0004300603 00000 n 
+0004304601 00000 n 
+0004304749 00000 n 
+0004304901 00000 n 
+0004300816 00000 n 
+0004269170 00000 n 
+0004266953 00000 n 
+0004300751 00000 n 
+0005142608 00000 n 
+0004305053 00000 n 
+0004305206 00000 n 
+0004305359 00000 n 
+0004305510 00000 n 
+0004305662 00000 n 
+0004305813 00000 n 
+0004305964 00000 n 
+0004306115 00000 n 
+0004306267 00000 n 
+0004306418 00000 n 
+0004306570 00000 n 
+0004306721 00000 n 
+0004306871 00000 n 
+0004307023 00000 n 
+0004307176 00000 n 
+0004307327 00000 n 
+0004307478 00000 n 
+0004307631 00000 n 
+0004307784 00000 n 
+0004307936 00000 n 
+0004308089 00000 n 
+0004308240 00000 n 
+0004308393 00000 n 
+0004308545 00000 n 
+0004308697 00000 n 
+0004308849 00000 n 
+0004309000 00000 n 
+0004309151 00000 n 
+0004309301 00000 n 
+0004309451 00000 n 
+0004309603 00000 n 
+0004309755 00000 n 
+0004309906 00000 n 
+0004310059 00000 n 
+0004310212 00000 n 
+0004310365 00000 n 
+0004310517 00000 n 
+0004310670 00000 n 
+0004310823 00000 n 
+0004310975 00000 n 
+0004311128 00000 n 
+0004311281 00000 n 
+0004311434 00000 n 
+0004311587 00000 n 
+0004311739 00000 n 
+0004311892 00000 n 
+0004312045 00000 n 
+0004312198 00000 n 
+0004312350 00000 n 
+0004312502 00000 n 
+0004312653 00000 n 
+0004312805 00000 n 
+0004312958 00000 n 
+0004313110 00000 n 
+0004313263 00000 n 
+0004313415 00000 n 
+0004313568 00000 n 
+0004313719 00000 n 
+0004313871 00000 n 
+0004314022 00000 n 
+0004314174 00000 n 
+0004314326 00000 n 
+0004314479 00000 n 
+0004314632 00000 n 
+0004314785 00000 n 
+0004314933 00000 n 
+0004315086 00000 n 
+0004315237 00000 n 
+0004315387 00000 n 
+0004315540 00000 n 
+0004315692 00000 n 
+0004315845 00000 n 
+0004315998 00000 n 
+0004316149 00000 n 
+0004316299 00000 n 
+0004316452 00000 n 
+0004316604 00000 n 
+0004316757 00000 n 
+0004316910 00000 n 
+0004317063 00000 n 
+0004317216 00000 n 
+0004317369 00000 n 
+0004317521 00000 n 
+0004317674 00000 n 
+0004317826 00000 n 
+0004317979 00000 n 
+0004318131 00000 n 
+0004318283 00000 n 
+0004318436 00000 n 
+0004318589 00000 n 
+0004318741 00000 n 
+0004318894 00000 n 
+0004319046 00000 n 
+0004319199 00000 n 
+0004319352 00000 n 
+0004319504 00000 n 
+0004319656 00000 n 
+0004319808 00000 n 
+0004319961 00000 n 
+0004320112 00000 n 
+0004320264 00000 n 
+0004320416 00000 n 
+0004320568 00000 n 
+0004320721 00000 n 
+0004320872 00000 n 
+0004321024 00000 n 
+0004321177 00000 n 
+0004321329 00000 n 
+0004321482 00000 n 
+0004321635 00000 n 
+0004321788 00000 n 
+0004321940 00000 n 
+0004322092 00000 n 
+0004322245 00000 n 
+0004322398 00000 n 
+0004322551 00000 n 
+0004322704 00000 n 
+0004322856 00000 n 
+0004323009 00000 n 
+0004323161 00000 n 
+0004323314 00000 n 
+0004323467 00000 n 
+0004323620 00000 n 
+0004323772 00000 n 
+0004323925 00000 n 
+0004324078 00000 n 
+0004324229 00000 n 
+0004324381 00000 n 
+0004324534 00000 n 
+0004324687 00000 n 
+0004324840 00000 n 
+0004324990 00000 n 
+0004325142 00000 n 
+0004325291 00000 n 
+0004329603 00000 n 
+0004325505 00000 n 
+0004303092 00000 n 
+0004300933 00000 n 
+0004325440 00000 n 
+0004329754 00000 n 
+0004329907 00000 n 
+0004330058 00000 n 
+0004330210 00000 n 
+0004330362 00000 n 
+0004330515 00000 n 
+0004330668 00000 n 
+0004330821 00000 n 
+0004330974 00000 n 
+0004331127 00000 n 
+0004331280 00000 n 
+0004331432 00000 n 
+0004331584 00000 n 
+0004331736 00000 n 
+0004331888 00000 n 
+0004332040 00000 n 
+0004332193 00000 n 
+0004332344 00000 n 
+0004332496 00000 n 
+0004332649 00000 n 
+0004332800 00000 n 
+0004332952 00000 n 
+0004333105 00000 n 
+0004333258 00000 n 
+0004333410 00000 n 
+0004333562 00000 n 
+0004333712 00000 n 
+0004333863 00000 n 
+0004334016 00000 n 
+0004334168 00000 n 
+0004334320 00000 n 
+0004334473 00000 n 
+0004334626 00000 n 
+0004334779 00000 n 
+0004334930 00000 n 
+0004335083 00000 n 
+0004335235 00000 n 
+0004335387 00000 n 
+0004335539 00000 n 
+0004335691 00000 n 
+0004335844 00000 n 
+0004335997 00000 n 
+0004336148 00000 n 
+0004336301 00000 n 
+0004336453 00000 n 
+0004336603 00000 n 
+0004336756 00000 n 
+0004336909 00000 n 
+0004337060 00000 n 
+0004337211 00000 n 
+0004337363 00000 n 
+0004337515 00000 n 
+0004337668 00000 n 
+0004337821 00000 n 
+0004337972 00000 n 
+0004338124 00000 n 
+0004338277 00000 n 
+0004338429 00000 n 
+0004338581 00000 n 
+0004338732 00000 n 
+0004338884 00000 n 
+0004339035 00000 n 
+0004339187 00000 n 
+0004339340 00000 n 
+0004339491 00000 n 
+0004339643 00000 n 
+0004339796 00000 n 
+0004339949 00000 n 
+0004340102 00000 n 
+0004340255 00000 n 
+0004340404 00000 n 
+0004340556 00000 n 
+0004340707 00000 n 
+0004340858 00000 n 
+0004341009 00000 n 
+0004341161 00000 n 
+0004341313 00000 n 
+0004341462 00000 n 
+0004341612 00000 n 
+0004341762 00000 n 
+0004341914 00000 n 
+0004342067 00000 n 
+0004342220 00000 n 
+0004342372 00000 n 
+0004342525 00000 n 
+0004342678 00000 n 
+0004342831 00000 n 
+0004342984 00000 n 
+0004343136 00000 n 
+0004343288 00000 n 
+0004343439 00000 n 
+0004343590 00000 n 
+0004343742 00000 n 
+0004343894 00000 n 
+0004344046 00000 n 
+0004344199 00000 n 
+0004344352 00000 n 
+0004344505 00000 n 
+0004344658 00000 n 
+0004344811 00000 n 
+0004344964 00000 n 
+0004345114 00000 n 
+0004345266 00000 n 
+0004345417 00000 n 
+0004345569 00000 n 
+0004345722 00000 n 
+0004345874 00000 n 
+0004346026 00000 n 
+0004346178 00000 n 
+0004346330 00000 n 
+0004346483 00000 n 
+0004346635 00000 n 
+0004346787 00000 n 
+0004346939 00000 n 
+0004347092 00000 n 
+0004347245 00000 n 
+0004347397 00000 n 
+0004347550 00000 n 
+0004347702 00000 n 
+0004347855 00000 n 
+0004348007 00000 n 
+0004348160 00000 n 
+0004348313 00000 n 
+0004348466 00000 n 
+0004348619 00000 n 
+0004348772 00000 n 
+0004348924 00000 n 
+0004349077 00000 n 
+0004349230 00000 n 
+0004349382 00000 n 
+0004349535 00000 n 
+0004349688 00000 n 
+0004349840 00000 n 
+0004349993 00000 n 
+0004350145 00000 n 
+0004350297 00000 n 
+0004350450 00000 n 
+0004350603 00000 n 
+0004350755 00000 n 
+0004350906 00000 n 
+0004351058 00000 n 
+0004351210 00000 n 
+0004351362 00000 n 
+0004351515 00000 n 
+0004351668 00000 n 
+0004351821 00000 n 
+0004351974 00000 n 
+0004352126 00000 n 
+0004352278 00000 n 
+0004352430 00000 n 
+0004352583 00000 n 
+0004352734 00000 n 
+0004352886 00000 n 
+0004353038 00000 n 
+0004353191 00000 n 
+0004353341 00000 n 
+0004353493 00000 n 
+0004353646 00000 n 
+0004353798 00000 n 
+0004353950 00000 n 
+0004354102 00000 n 
+0004354255 00000 n 
+0004354408 00000 n 
+0004354560 00000 n 
+0004354713 00000 n 
+0004354864 00000 n 
+0004358981 00000 n 
+0004355080 00000 n 
+0004327794 00000 n 
+0004325622 00000 n 
+0004355015 00000 n 
+0004359134 00000 n 
+0004359286 00000 n 
+0004359439 00000 n 
+0004359592 00000 n 
+0004359745 00000 n 
+0004359897 00000 n 
+0004360050 00000 n 
+0004360203 00000 n 
+0004360356 00000 n 
+0004360507 00000 n 
+0004360659 00000 n 
+0004360812 00000 n 
+0004360964 00000 n 
+0004361117 00000 n 
+0004361269 00000 n 
+0004361421 00000 n 
+0004361572 00000 n 
+0004361722 00000 n 
+0004361872 00000 n 
+0004362023 00000 n 
+0004362174 00000 n 
+0004362326 00000 n 
+0004362478 00000 n 
+0004362630 00000 n 
+0004362782 00000 n 
+0004362934 00000 n 
+0004363085 00000 n 
+0004363237 00000 n 
+0004363390 00000 n 
+0004363543 00000 n 
+0004363696 00000 n 
+0004363847 00000 n 
+0004364000 00000 n 
+0004364153 00000 n 
+0004364304 00000 n 
+0004364456 00000 n 
+0004364608 00000 n 
+0004364759 00000 n 
+0004364910 00000 n 
+0004365063 00000 n 
+0004365216 00000 n 
+0004365368 00000 n 
+0004365520 00000 n 
+0004365668 00000 n 
+0004365821 00000 n 
+0004365973 00000 n 
+0004366124 00000 n 
+0004366276 00000 n 
+0004366429 00000 n 
+0004366581 00000 n 
+0004366733 00000 n 
+0004366886 00000 n 
+0004367039 00000 n 
+0004367192 00000 n 
+0004367345 00000 n 
+0004367498 00000 n 
+0004367651 00000 n 
+0004367804 00000 n 
+0004367956 00000 n 
+0004368109 00000 n 
+0004368260 00000 n 
+0004368413 00000 n 
+0004368566 00000 n 
+0004368718 00000 n 
+0004368871 00000 n 
+0004369024 00000 n 
+0004369175 00000 n 
+0004369328 00000 n 
+0004369481 00000 n 
+0004369632 00000 n 
+0004369785 00000 n 
+0004369935 00000 n 
+0004370087 00000 n 
+0004370239 00000 n 
+0004370391 00000 n 
+0004370541 00000 n 
+0004370691 00000 n 
+0004370841 00000 n 
+0004370994 00000 n 
+0004371147 00000 n 
+0004371299 00000 n 
+0004371452 00000 n 
+0004371605 00000 n 
+0004371758 00000 n 
+0004371911 00000 n 
+0004372063 00000 n 
+0004372216 00000 n 
+0004372368 00000 n 
+0004372520 00000 n 
+0004372672 00000 n 
+0004372824 00000 n 
+0004372976 00000 n 
+0004373129 00000 n 
+0004373282 00000 n 
+0004373435 00000 n 
+0004373588 00000 n 
+0004373740 00000 n 
+0004373893 00000 n 
+0004374046 00000 n 
+0004374197 00000 n 
+0004374347 00000 n 
+0004374498 00000 n 
+0004374650 00000 n 
+0004374802 00000 n 
+0004374954 00000 n 
+0004375107 00000 n 
+0004375259 00000 n 
+0004375412 00000 n 
+0004375564 00000 n 
+0004375716 00000 n 
+0004375869 00000 n 
+0004376021 00000 n 
+0004376174 00000 n 
+0004376327 00000 n 
+0004376480 00000 n 
+0004376632 00000 n 
+0004376785 00000 n 
+0004376937 00000 n 
+0004377089 00000 n 
+0004377242 00000 n 
+0004377394 00000 n 
+0004377547 00000 n 
+0004377700 00000 n 
+0004377853 00000 n 
+0004378006 00000 n 
+0004378159 00000 n 
+0004378312 00000 n 
+0004378465 00000 n 
+0004378617 00000 n 
+0004378770 00000 n 
+0004378922 00000 n 
+0004379075 00000 n 
+0004379228 00000 n 
+0004379381 00000 n 
+0004379534 00000 n 
+0004379687 00000 n 
+0004379840 00000 n 
+0004379993 00000 n 
+0004380146 00000 n 
+0004380299 00000 n 
+0004380452 00000 n 
+0004380605 00000 n 
+0004380758 00000 n 
+0004380911 00000 n 
+0004381064 00000 n 
+0004381217 00000 n 
+0004381370 00000 n 
+0004381523 00000 n 
+0004381676 00000 n 
+0004381828 00000 n 
+0004381981 00000 n 
+0004382133 00000 n 
+0004382286 00000 n 
+0004382438 00000 n 
+0004382590 00000 n 
+0004382743 00000 n 
+0004382896 00000 n 
+0004383047 00000 n 
+0004383200 00000 n 
+0004383353 00000 n 
+0004383506 00000 n 
+0004383657 00000 n 
+0004383809 00000 n 
+0004383960 00000 n 
+0004387952 00000 n 
+0004388104 00000 n 
+0004384175 00000 n 
+0004357192 00000 n 
+0004355197 00000 n 
+0004384110 00000 n 
+0004388256 00000 n 
+0004388409 00000 n 
+0004388562 00000 n 
+0004388713 00000 n 
+0004388863 00000 n 
+0004389016 00000 n 
+0004389169 00000 n 
+0004389321 00000 n 
+0004389472 00000 n 
+0004389625 00000 n 
+0004389776 00000 n 
+0004389929 00000 n 
+0004390081 00000 n 
+0004390233 00000 n 
+0004390386 00000 n 
+0004390538 00000 n 
+0004390690 00000 n 
+0004390842 00000 n 
+0004390995 00000 n 
+0004391148 00000 n 
+0004391300 00000 n 
+0004391453 00000 n 
+0004391605 00000 n 
+0004391758 00000 n 
+0004391911 00000 n 
+0004392064 00000 n 
+0004392217 00000 n 
+0004392370 00000 n 
+0004392521 00000 n 
+0004392673 00000 n 
+0004392826 00000 n 
+0004392977 00000 n 
+0004393130 00000 n 
+0004393283 00000 n 
+0004393436 00000 n 
+0004393589 00000 n 
+0004393742 00000 n 
+0004393895 00000 n 
+0004394047 00000 n 
+0004394200 00000 n 
+0004394353 00000 n 
+0004394506 00000 n 
+0004394657 00000 n 
+0004394809 00000 n 
+0004394962 00000 n 
+0004395114 00000 n 
+0004395266 00000 n 
+0004395418 00000 n 
+0004395571 00000 n 
+0004395724 00000 n 
+0004395877 00000 n 
+0004396030 00000 n 
+0004396182 00000 n 
+0004396334 00000 n 
+0004396485 00000 n 
+0004396637 00000 n 
+0004396788 00000 n 
+0004396941 00000 n 
+0004397092 00000 n 
+0004397243 00000 n 
+0004397396 00000 n 
+0004397546 00000 n 
+0004397696 00000 n 
+0004397848 00000 n 
+0004398000 00000 n 
+0004398153 00000 n 
+0004398306 00000 n 
+0004398457 00000 n 
+0004398607 00000 n 
+0004398758 00000 n 
+0004398909 00000 n 
+0004399061 00000 n 
+0004399213 00000 n 
+0004399364 00000 n 
+0004399515 00000 n 
+0004399664 00000 n 
+0004399815 00000 n 
+0004399966 00000 n 
+0004400119 00000 n 
+0004400269 00000 n 
+0004400420 00000 n 
+0004400572 00000 n 
+0004400725 00000 n 
+0004400878 00000 n 
+0004401031 00000 n 
+0004401184 00000 n 
+0004401337 00000 n 
+0004401490 00000 n 
+0004401643 00000 n 
+0004401796 00000 n 
+0004401949 00000 n 
+0004402101 00000 n 
+0004402253 00000 n 
+0004402405 00000 n 
+0004402557 00000 n 
+0004402709 00000 n 
+0004402861 00000 n 
+0004403013 00000 n 
+0004403165 00000 n 
+0004403318 00000 n 
+0004403470 00000 n 
+0004403623 00000 n 
+0004403776 00000 n 
+0004403929 00000 n 
+0004404082 00000 n 
+0004404234 00000 n 
+0004404387 00000 n 
+0004404535 00000 n 
+0004404683 00000 n 
+0004404835 00000 n 
+0004404988 00000 n 
+0004405141 00000 n 
+0004405294 00000 n 
+0004405445 00000 n 
+0004405597 00000 n 
+0004405749 00000 n 
+0004405902 00000 n 
+0004406055 00000 n 
+0004406208 00000 n 
+0004406361 00000 n 
+0004406513 00000 n 
+0004406663 00000 n 
+0004406813 00000 n 
+0004406963 00000 n 
+0004407115 00000 n 
+0004407267 00000 n 
+0004407419 00000 n 
+0004407571 00000 n 
+0004407723 00000 n 
+0004407875 00000 n 
+0004408027 00000 n 
+0004408178 00000 n 
+0004408330 00000 n 
+0004408482 00000 n 
+0004408635 00000 n 
+0004408787 00000 n 
+0004408940 00000 n 
+0004409092 00000 n 
+0004409244 00000 n 
+0004409396 00000 n 
+0004409549 00000 n 
+0004409702 00000 n 
+0004409854 00000 n 
+0004410007 00000 n 
+0004410159 00000 n 
+0004410310 00000 n 
+0004410461 00000 n 
+0004410614 00000 n 
+0004410764 00000 n 
+0004415250 00000 n 
+0004415403 00000 n 
+0004410980 00000 n 
+0004386303 00000 n 
+0004384278 00000 n 
+0004410915 00000 n 
+0004415556 00000 n 
+0004415708 00000 n 
+0004415861 00000 n 
+0004416013 00000 n 
+0004416163 00000 n 
+0004416312 00000 n 
+0004416462 00000 n 
+0004416613 00000 n 
+0004416764 00000 n 
+0004416915 00000 n 
+0004417066 00000 n 
+0004417218 00000 n 
+0004417370 00000 n 
+0004417521 00000 n 
+0004417673 00000 n 
+0004417824 00000 n 
+0004417976 00000 n 
+0004418128 00000 n 
+0004418281 00000 n 
+0004418434 00000 n 
+0004418587 00000 n 
+0004418739 00000 n 
+0004418892 00000 n 
+0004419045 00000 n 
+0004419198 00000 n 
+0004419351 00000 n 
+0004419504 00000 n 
+0004419655 00000 n 
+0004419807 00000 n 
+0004419959 00000 n 
+0004420110 00000 n 
+0004420263 00000 n 
+0004420413 00000 n 
+0004420565 00000 n 
+0004420717 00000 n 
+0004420869 00000 n 
+0004421020 00000 n 
+0004421171 00000 n 
+0004421322 00000 n 
+0004421473 00000 n 
+0004421625 00000 n 
+0004421778 00000 n 
+0004421931 00000 n 
+0004422083 00000 n 
+0004422235 00000 n 
+0004422388 00000 n 
+0004422541 00000 n 
+0004422694 00000 n 
+0004422845 00000 n 
+0004422998 00000 n 
+0004423150 00000 n 
+0004423303 00000 n 
+0004423456 00000 n 
+0004423608 00000 n 
+0004423761 00000 n 
+0004423913 00000 n 
+0004424065 00000 n 
+0004424218 00000 n 
+0004424370 00000 n 
+0004424523 00000 n 
+0004424676 00000 n 
+0004424828 00000 n 
+0004424980 00000 n 
+0004425131 00000 n 
+0004425282 00000 n 
+0004425434 00000 n 
+0004425586 00000 n 
+0004425737 00000 n 
+0004425889 00000 n 
+0004426042 00000 n 
+0004426195 00000 n 
+0004426348 00000 n 
+0004426500 00000 n 
+0004426653 00000 n 
+0004426804 00000 n 
+0004426956 00000 n 
+0004427107 00000 n 
+0004427259 00000 n 
+0004427412 00000 n 
+0004427565 00000 n 
+0004427718 00000 n 
+0004427871 00000 n 
+0004428024 00000 n 
+0004428177 00000 n 
+0004428330 00000 n 
+0004428481 00000 n 
+0004428633 00000 n 
+0004428786 00000 n 
+0004428937 00000 n 
+0004429088 00000 n 
+0004429238 00000 n 
+0004429389 00000 n 
+0004429541 00000 n 
+0004429693 00000 n 
+0004429844 00000 n 
+0004429996 00000 n 
+0004430149 00000 n 
+0004430302 00000 n 
+0004430455 00000 n 
+0004430607 00000 n 
+0004430758 00000 n 
+0004430911 00000 n 
+0004431064 00000 n 
+0004431215 00000 n 
+0004431365 00000 n 
+0004431517 00000 n 
+0004431670 00000 n 
+0004431823 00000 n 
+0004431975 00000 n 
+0004432127 00000 n 
+0004432280 00000 n 
+0004432432 00000 n 
+0004432585 00000 n 
+0004432737 00000 n 
+0004432888 00000 n 
+0004433040 00000 n 
+0004433193 00000 n 
+0004433343 00000 n 
+0004433496 00000 n 
+0004433649 00000 n 
+0004433802 00000 n 
+0004433955 00000 n 
+0004434108 00000 n 
+0004434261 00000 n 
+0004434414 00000 n 
+0004434566 00000 n 
+0004434719 00000 n 
+0004434872 00000 n 
+0004435025 00000 n 
+0004435177 00000 n 
+0004435330 00000 n 
+0004435483 00000 n 
+0004435635 00000 n 
+0004435787 00000 n 
+0004435939 00000 n 
+0004436092 00000 n 
+0004436244 00000 n 
+0004436396 00000 n 
+0004436548 00000 n 
+0004436700 00000 n 
+0004436853 00000 n 
+0004437005 00000 n 
+0004437158 00000 n 
+0004437309 00000 n 
+0004437462 00000 n 
+0004437613 00000 n 
+0004437764 00000 n 
+0004437916 00000 n 
+0004438069 00000 n 
+0004438222 00000 n 
+0004438375 00000 n 
+0004438527 00000 n 
+0004438680 00000 n 
+0004438833 00000 n 
+0004438984 00000 n 
+0004439136 00000 n 
+0004439288 00000 n 
+0004439440 00000 n 
+0004439591 00000 n 
+0004439742 00000 n 
+0004439893 00000 n 
+0004440045 00000 n 
+0004440196 00000 n 
+0004440349 00000 n 
+0004440502 00000 n 
+0004440654 00000 n 
+0004440807 00000 n 
+0004440960 00000 n 
+0004441113 00000 n 
+0004441265 00000 n 
+0004441416 00000 n 
+0004441568 00000 n 
+0004441720 00000 n 
+0004441872 00000 n 
+0004442024 00000 n 
+0004442176 00000 n 
+0004442329 00000 n 
+0004442480 00000 n 
+0004442631 00000 n 
+0004446827 00000 n 
+0004442847 00000 n 
+0004413301 00000 n 
+0004411097 00000 n 
+0004442782 00000 n 
+0004446980 00000 n 
+0004447133 00000 n 
+0004447285 00000 n 
+0004447438 00000 n 
+0004447590 00000 n 
+0004447742 00000 n 
+0004447895 00000 n 
+0004448046 00000 n 
+0004448197 00000 n 
+0004448350 00000 n 
+0004448502 00000 n 
+0004448653 00000 n 
+0004448805 00000 n 
+0004448956 00000 n 
+0004449108 00000 n 
+0004449260 00000 n 
+0004449412 00000 n 
+0004449565 00000 n 
+0004449716 00000 n 
+0004449869 00000 n 
+0004450020 00000 n 
+0004450172 00000 n 
+0004450324 00000 n 
+0004450477 00000 n 
+0004450630 00000 n 
+0004450781 00000 n 
+0004450933 00000 n 
+0004451085 00000 n 
+0004451238 00000 n 
+0004451389 00000 n 
+0004451541 00000 n 
+0004451694 00000 n 
+0004451845 00000 n 
+0004451998 00000 n 
+0004452151 00000 n 
+0004452303 00000 n 
+0004452456 00000 n 
+0004452608 00000 n 
+0004452761 00000 n 
+0004452912 00000 n 
+0004453065 00000 n 
+0004453218 00000 n 
+0004453371 00000 n 
+0004453523 00000 n 
+0004453674 00000 n 
+0004453827 00000 n 
+0004453979 00000 n 
+0004454129 00000 n 
+0004454282 00000 n 
+0004454433 00000 n 
+0004454583 00000 n 
+0004454734 00000 n 
+0004454886 00000 n 
+0004455039 00000 n 
+0004455186 00000 n 
+0004455338 00000 n 
+0004455490 00000 n 
+0004455642 00000 n 
+0004455793 00000 n 
+0004455945 00000 n 
+0004456097 00000 n 
+0004456250 00000 n 
+0004456403 00000 n 
+0004456555 00000 n 
+0004456708 00000 n 
+0004456859 00000 n 
+0004457010 00000 n 
+0004457161 00000 n 
+0004457313 00000 n 
+0004457460 00000 n 
+0004457611 00000 n 
+0004457763 00000 n 
+0004457916 00000 n 
+0004458069 00000 n 
+0004458221 00000 n 
+0004458374 00000 n 
+0004458526 00000 n 
+0004458678 00000 n 
+0004458831 00000 n 
+0004458984 00000 n 
+0004459137 00000 n 
+0004459287 00000 n 
+0004459438 00000 n 
+0004459591 00000 n 
+0004459744 00000 n 
+0004459897 00000 n 
+0004460049 00000 n 
+0004460202 00000 n 
+0004460353 00000 n 
+0004460504 00000 n 
+0004460657 00000 n 
+0004460810 00000 n 
+0004460963 00000 n 
+0004461114 00000 n 
+0004461267 00000 n 
+0004461420 00000 n 
+0004461573 00000 n 
+0004461726 00000 n 
+0004461878 00000 n 
+0004462030 00000 n 
+0004462183 00000 n 
+0004462336 00000 n 
+0004462488 00000 n 
+0004462639 00000 n 
+0004462792 00000 n 
+0004462944 00000 n 
+0004463097 00000 n 
+0004463250 00000 n 
+0004463403 00000 n 
+0004463556 00000 n 
+0004463709 00000 n 
+0004463862 00000 n 
+0004464015 00000 n 
+0004464167 00000 n 
+0004464319 00000 n 
+0004464471 00000 n 
+0004464623 00000 n 
+0004464774 00000 n 
+0004464926 00000 n 
+0004465078 00000 n 
+0004465229 00000 n 
+0004465381 00000 n 
+0004465533 00000 n 
+0004465685 00000 n 
+0004465836 00000 n 
+0004465988 00000 n 
+0004466141 00000 n 
+0004466294 00000 n 
+0004466445 00000 n 
+0004466597 00000 n 
+0004466750 00000 n 
+0004466903 00000 n 
+0004467056 00000 n 
+0004467207 00000 n 
+0004467359 00000 n 
+0004467511 00000 n 
+0004467664 00000 n 
+0004467817 00000 n 
+0004467970 00000 n 
+0004468122 00000 n 
+0004468273 00000 n 
+0004468425 00000 n 
+0004468575 00000 n 
+0004468726 00000 n 
+0004468878 00000 n 
+0004469030 00000 n 
+0004469182 00000 n 
+0004469333 00000 n 
+0004469485 00000 n 
+0004469637 00000 n 
+0004469789 00000 n 
+0004469941 00000 n 
+0004470093 00000 n 
+0004470242 00000 n 
+0004470393 00000 n 
+0004470545 00000 n 
+0004470696 00000 n 
+0004470847 00000 n 
+0004470997 00000 n 
+0004471148 00000 n 
+0004471299 00000 n 
+0004471449 00000 n 
+0004471601 00000 n 
+0004471753 00000 n 
+0004471905 00000 n 
+0004472057 00000 n 
+0004472210 00000 n 
+0004472363 00000 n 
+0004472514 00000 n 
+0004472667 00000 n 
+0004472819 00000 n 
+0004472971 00000 n 
+0004476859 00000 n 
+0004477009 00000 n 
+0004473185 00000 n 
+0004444958 00000 n 
+0004442950 00000 n 
+0004473120 00000 n 
+0005142741 00000 n 
+0004477161 00000 n 
+0004477311 00000 n 
+0004477462 00000 n 
+0004477615 00000 n 
+0004477768 00000 n 
+0004477921 00000 n 
+0004478073 00000 n 
+0004478224 00000 n 
+0004478377 00000 n 
+0004478529 00000 n 
+0004478682 00000 n 
+0004478834 00000 n 
+0004478987 00000 n 
+0004479140 00000 n 
+0004479292 00000 n 
+0004479444 00000 n 
+0004479596 00000 n 
+0004479748 00000 n 
+0004479900 00000 n 
+0004480053 00000 n 
+0004480205 00000 n 
+0004480357 00000 n 
+0004480510 00000 n 
+0004480663 00000 n 
+0004480816 00000 n 
+0004480969 00000 n 
+0004481121 00000 n 
+0004481272 00000 n 
+0004481424 00000 n 
+0004481576 00000 n 
+0004481728 00000 n 
+0004481880 00000 n 
+0004482030 00000 n 
+0004482182 00000 n 
+0004482335 00000 n 
+0004482488 00000 n 
+0004482641 00000 n 
+0004482793 00000 n 
+0004482946 00000 n 
+0004483098 00000 n 
+0004483250 00000 n 
+0004483403 00000 n 
+0004483556 00000 n 
+0004483709 00000 n 
+0004483860 00000 n 
+0004484009 00000 n 
+0004484160 00000 n 
+0004484312 00000 n 
+0004484465 00000 n 
+0004484617 00000 n 
+0004484770 00000 n 
+0004484923 00000 n 
+0004485075 00000 n 
+0004485228 00000 n 
+0004485380 00000 n 
+0004485533 00000 n 
+0004485686 00000 n 
+0004485838 00000 n 
+0004485990 00000 n 
+0004486143 00000 n 
+0004486294 00000 n 
+0004486447 00000 n 
+0004486600 00000 n 
+0004486750 00000 n 
+0004486903 00000 n 
+0004487056 00000 n 
+0004487208 00000 n 
+0004487359 00000 n 
+0004487512 00000 n 
+0004487665 00000 n 
+0004487816 00000 n 
+0004487968 00000 n 
+0004488119 00000 n 
+0004488271 00000 n 
+0004488424 00000 n 
+0004488576 00000 n 
+0004488728 00000 n 
+0004488880 00000 n 
+0004489031 00000 n 
+0004489183 00000 n 
+0004489336 00000 n 
+0004489488 00000 n 
+0004489641 00000 n 
+0004489793 00000 n 
+0004489946 00000 n 
+0004490098 00000 n 
+0004490251 00000 n 
+0004490403 00000 n 
+0004490555 00000 n 
+0004490707 00000 n 
+0004490860 00000 n 
+0004491013 00000 n 
+0004491166 00000 n 
+0004491319 00000 n 
+0004491471 00000 n 
+0004491624 00000 n 
+0004491777 00000 n 
+0004491930 00000 n 
+0004492080 00000 n 
+0004492230 00000 n 
+0004492382 00000 n 
+0004492533 00000 n 
+0004492686 00000 n 
+0004492838 00000 n 
+0004492991 00000 n 
+0004493144 00000 n 
+0004493295 00000 n 
+0004493448 00000 n 
+0004493601 00000 n 
+0004493753 00000 n 
+0004493905 00000 n 
+0004494056 00000 n 
+0004494209 00000 n 
+0004494361 00000 n 
+0004494513 00000 n 
+0004494666 00000 n 
+0004494818 00000 n 
+0004494970 00000 n 
+0004495123 00000 n 
+0004495276 00000 n 
+0004495428 00000 n 
+0004495581 00000 n 
+0004495734 00000 n 
+0004495887 00000 n 
+0004496040 00000 n 
+0004496193 00000 n 
+0004496346 00000 n 
+0004496498 00000 n 
+0004496651 00000 n 
+0004496803 00000 n 
+0004496956 00000 n 
+0004497107 00000 n 
+0004497260 00000 n 
+0004497413 00000 n 
+0004497566 00000 n 
+0004497719 00000 n 
+0004497869 00000 n 
+0004501816 00000 n 
+0004498084 00000 n 
+0004475330 00000 n 
+0004473302 00000 n 
+0004498019 00000 n 
+0004501967 00000 n 
+0004502119 00000 n 
+0004502270 00000 n 
+0004502421 00000 n 
+0004502573 00000 n 
+0004502726 00000 n 
+0004502879 00000 n 
+0004503029 00000 n 
+0004503181 00000 n 
+0004503332 00000 n 
+0004503485 00000 n 
+0004503636 00000 n 
+0004503789 00000 n 
+0004503942 00000 n 
+0004504093 00000 n 
+0004504246 00000 n 
+0004504397 00000 n 
+0004504550 00000 n 
+0004504702 00000 n 
+0004504855 00000 n 
+0004505007 00000 n 
+0004505160 00000 n 
+0004505313 00000 n 
+0004505466 00000 n 
+0004505618 00000 n 
+0004505770 00000 n 
+0004505922 00000 n 
+0004506075 00000 n 
+0004506227 00000 n 
+0004506379 00000 n 
+0004506532 00000 n 
+0004506684 00000 n 
+0004506837 00000 n 
+0004506990 00000 n 
+0004507142 00000 n 
+0004507295 00000 n 
+0004507447 00000 n 
+0004507599 00000 n 
+0004507751 00000 n 
+0004507903 00000 n 
+0004508055 00000 n 
+0004508207 00000 n 
+0004508360 00000 n 
+0004508513 00000 n 
+0004508665 00000 n 
+0004508818 00000 n 
+0004508970 00000 n 
+0004509122 00000 n 
+0004509275 00000 n 
+0004509426 00000 n 
+0004509578 00000 n 
+0004509731 00000 n 
+0004509884 00000 n 
+0004510036 00000 n 
+0004510189 00000 n 
+0004510341 00000 n 
+0004510493 00000 n 
+0004510645 00000 n 
+0004510797 00000 n 
+0004510950 00000 n 
+0004511101 00000 n 
+0004511251 00000 n 
+0004511404 00000 n 
+0004511556 00000 n 
+0004511708 00000 n 
+0004511860 00000 n 
+0004512012 00000 n 
+0004512162 00000 n 
+0004512314 00000 n 
+0004512467 00000 n 
+0004512619 00000 n 
+0004512770 00000 n 
+0004512922 00000 n 
+0004513074 00000 n 
+0004513226 00000 n 
+0004513379 00000 n 
+0004513530 00000 n 
+0004513682 00000 n 
+0004513835 00000 n 
+0004513987 00000 n 
+0004514140 00000 n 
+0004514293 00000 n 
+0004514445 00000 n 
+0004514598 00000 n 
+0004514749 00000 n 
+0004514901 00000 n 
+0004515053 00000 n 
+0004515205 00000 n 
+0004515358 00000 n 
+0004515511 00000 n 
+0004515663 00000 n 
+0004515815 00000 n 
+0004515968 00000 n 
+0004516121 00000 n 
+0004516274 00000 n 
+0004516427 00000 n 
+0004516580 00000 n 
+0004516733 00000 n 
+0004516886 00000 n 
+0004517039 00000 n 
+0004517192 00000 n 
+0004517344 00000 n 
+0004517497 00000 n 
+0004517648 00000 n 
+0004517800 00000 n 
+0004517952 00000 n 
+0004518104 00000 n 
+0004518256 00000 n 
+0004518408 00000 n 
+0004518561 00000 n 
+0004518714 00000 n 
+0004518867 00000 n 
+0004519020 00000 n 
+0004519171 00000 n 
+0004519324 00000 n 
+0004519477 00000 n 
+0004519630 00000 n 
+0004519783 00000 n 
+0004519936 00000 n 
+0004520089 00000 n 
+0004520241 00000 n 
+0004520392 00000 n 
+0004520543 00000 n 
+0004520695 00000 n 
+0004520848 00000 n 
+0004521000 00000 n 
+0004521153 00000 n 
+0004521306 00000 n 
+0004521459 00000 n 
+0004521611 00000 n 
+0004521764 00000 n 
+0004521917 00000 n 
+0004522070 00000 n 
+0004522222 00000 n 
+0004522375 00000 n 
+0004522527 00000 n 
+0004522680 00000 n 
+0004522832 00000 n 
+0004522984 00000 n 
+0004523136 00000 n 
+0004523289 00000 n 
+0004523442 00000 n 
+0004523595 00000 n 
+0004523747 00000 n 
+0004523900 00000 n 
+0004524051 00000 n 
+0004524203 00000 n 
+0004524356 00000 n 
+0004524509 00000 n 
+0004524662 00000 n 
+0004524814 00000 n 
+0004524966 00000 n 
+0004525117 00000 n 
+0004529266 00000 n 
+0004529418 00000 n 
+0004525333 00000 n 
+0004500137 00000 n 
+0004498187 00000 n 
+0004525268 00000 n 
+0004529569 00000 n 
+0004529721 00000 n 
+0004529873 00000 n 
+0004530025 00000 n 
+0004530177 00000 n 
+0004530330 00000 n 
+0004530482 00000 n 
+0004530635 00000 n 
+0004530787 00000 n 
+0004530939 00000 n 
+0004531092 00000 n 
+0004531244 00000 n 
+0004531395 00000 n 
+0004531547 00000 n 
+0004531699 00000 n 
+0004531852 00000 n 
+0004532003 00000 n 
+0004532155 00000 n 
+0004532307 00000 n 
+0004532459 00000 n 
+0004532611 00000 n 
+0004532762 00000 n 
+0004532915 00000 n 
+0004533067 00000 n 
+0004533219 00000 n 
+0004533371 00000 n 
+0004533523 00000 n 
+0004533674 00000 n 
+0004533826 00000 n 
+0004533978 00000 n 
+0004534129 00000 n 
+0004534280 00000 n 
+0004534432 00000 n 
+0004534584 00000 n 
+0004534737 00000 n 
+0004534890 00000 n 
+0004535043 00000 n 
+0004535196 00000 n 
+0004535348 00000 n 
+0004535500 00000 n 
+0004535652 00000 n 
+0004535804 00000 n 
+0004535955 00000 n 
+0004536107 00000 n 
+0004536259 00000 n 
+0004536412 00000 n 
+0004536564 00000 n 
+0004536716 00000 n 
+0004536868 00000 n 
+0004537020 00000 n 
+0004537173 00000 n 
+0004537325 00000 n 
+0004537478 00000 n 
+0004537631 00000 n 
+0004537783 00000 n 
+0004537936 00000 n 
+0004538089 00000 n 
+0004538242 00000 n 
+0004538393 00000 n 
+0004538545 00000 n 
+0004538698 00000 n 
+0004538850 00000 n 
+0004539002 00000 n 
+0004539153 00000 n 
+0004539303 00000 n 
+0004539455 00000 n 
+0004539606 00000 n 
+0004539758 00000 n 
+0004539911 00000 n 
+0004540062 00000 n 
+0004540213 00000 n 
+0004540366 00000 n 
+0004540518 00000 n 
+0004540670 00000 n 
+0004540821 00000 n 
+0004540973 00000 n 
+0004541126 00000 n 
+0004541279 00000 n 
+0004541432 00000 n 
+0004541585 00000 n 
+0004541737 00000 n 
+0004541888 00000 n 
+0004542039 00000 n 
+0004542192 00000 n 
+0004542344 00000 n 
+0004542497 00000 n 
+0004542649 00000 n 
+0004542801 00000 n 
+0004542952 00000 n 
+0004543103 00000 n 
+0004543252 00000 n 
+0004543405 00000 n 
+0004543556 00000 n 
+0004543707 00000 n 
+0004543860 00000 n 
+0004544013 00000 n 
+0004544165 00000 n 
+0004544317 00000 n 
+0004544469 00000 n 
+0004544620 00000 n 
+0004544772 00000 n 
+0004544924 00000 n 
+0004545075 00000 n 
+0004545227 00000 n 
+0004545379 00000 n 
+0004545530 00000 n 
+0004545683 00000 n 
+0004545835 00000 n 
+0004545988 00000 n 
+0004546139 00000 n 
+0004546291 00000 n 
+0004546444 00000 n 
+0004546596 00000 n 
+0004546748 00000 n 
+0004546900 00000 n 
+0004547053 00000 n 
+0004547205 00000 n 
+0004547357 00000 n 
+0004547508 00000 n 
+0004547660 00000 n 
+0004547811 00000 n 
+0004547964 00000 n 
+0004548115 00000 n 
+0004548268 00000 n 
+0004548420 00000 n 
+0004548572 00000 n 
+0004548724 00000 n 
+0004548876 00000 n 
+0004549028 00000 n 
+0004549180 00000 n 
+0004549332 00000 n 
+0004549485 00000 n 
+0004549638 00000 n 
+0004549788 00000 n 
+0004549940 00000 n 
+0004550091 00000 n 
+0004550243 00000 n 
+0004550395 00000 n 
+0004550546 00000 n 
+0004550699 00000 n 
+0004550851 00000 n 
+0004551004 00000 n 
+0004551154 00000 n 
+0004551305 00000 n 
+0004551457 00000 n 
+0004551609 00000 n 
+0004551761 00000 n 
+0004551913 00000 n 
+0004552065 00000 n 
+0004552218 00000 n 
+0004552371 00000 n 
+0004552522 00000 n 
+0004552674 00000 n 
+0004552827 00000 n 
+0004552979 00000 n 
+0004553131 00000 n 
+0004553284 00000 n 
+0004553435 00000 n 
+0004558038 00000 n 
+0004558189 00000 n 
+0004558340 00000 n 
+0004553650 00000 n 
+0004527527 00000 n 
+0004525450 00000 n 
+0004553585 00000 n 
+0004558492 00000 n 
+0004558642 00000 n 
+0004558793 00000 n 
+0004558946 00000 n 
+0004559098 00000 n 
+0004559251 00000 n 
+0004559403 00000 n 
+0004559553 00000 n 
+0004559704 00000 n 
+0004559857 00000 n 
+0004560010 00000 n 
+0004560163 00000 n 
+0004560316 00000 n 
+0004560464 00000 n 
+0004560614 00000 n 
+0004560766 00000 n 
+0004560918 00000 n 
+0004561069 00000 n 
+0004561221 00000 n 
+0004561372 00000 n 
+0004561525 00000 n 
+0004561678 00000 n 
+0004561831 00000 n 
+0004561984 00000 n 
+0004562137 00000 n 
+0004562289 00000 n 
+0004562442 00000 n 
+0004562595 00000 n 
+0004562747 00000 n 
+0004562900 00000 n 
+0004563052 00000 n 
+0004563204 00000 n 
+0004563356 00000 n 
+0004563507 00000 n 
+0004563659 00000 n 
+0004563809 00000 n 
+0004563961 00000 n 
+0004564114 00000 n 
+0004564266 00000 n 
+0004564419 00000 n 
+0004564572 00000 n 
+0004564724 00000 n 
+0004564877 00000 n 
+0004565029 00000 n 
+0004565181 00000 n 
+0004565334 00000 n 
+0004565486 00000 n 
+0004565639 00000 n 
+0004565792 00000 n 
+0004565945 00000 n 
+0004566097 00000 n 
+0004566250 00000 n 
+0004566403 00000 n 
+0004566554 00000 n 
+0004566706 00000 n 
+0004566858 00000 n 
+0004567011 00000 n 
+0004567163 00000 n 
+0004567313 00000 n 
+0004567466 00000 n 
+0004567619 00000 n 
+0004567769 00000 n 
+0004567921 00000 n 
+0004568074 00000 n 
+0004568227 00000 n 
+0004568379 00000 n 
+0004568531 00000 n 
+0004568684 00000 n 
+0004568836 00000 n 
+0004568989 00000 n 
+0004569142 00000 n 
+0004569295 00000 n 
+0004569447 00000 n 
+0004569600 00000 n 
+0004569753 00000 n 
+0004569904 00000 n 
+0004570057 00000 n 
+0004570210 00000 n 
+0004570363 00000 n 
+0004570516 00000 n 
+0004570669 00000 n 
+0004570822 00000 n 
+0004570973 00000 n 
+0004571125 00000 n 
+0004571278 00000 n 
+0004571431 00000 n 
+0004571583 00000 n 
+0004571736 00000 n 
+0004571888 00000 n 
+0004572040 00000 n 
+0004572193 00000 n 
+0004572345 00000 n 
+0004572497 00000 n 
+0004572650 00000 n 
+0004572803 00000 n 
+0004572955 00000 n 
+0004573107 00000 n 
+0004573258 00000 n 
+0004573411 00000 n 
+0004573564 00000 n 
+0004573716 00000 n 
+0004573869 00000 n 
+0004574022 00000 n 
+0004574175 00000 n 
+0004574328 00000 n 
+0004574479 00000 n 
+0004574629 00000 n 
+0004574782 00000 n 
+0004574935 00000 n 
+0004575087 00000 n 
+0004575239 00000 n 
+0004575391 00000 n 
+0004575544 00000 n 
+0004575697 00000 n 
+0004575850 00000 n 
+0004576003 00000 n 
+0004576156 00000 n 
+0004576309 00000 n 
+0004576462 00000 n 
+0004576613 00000 n 
+0004576764 00000 n 
+0004576916 00000 n 
+0004577068 00000 n 
+0004577220 00000 n 
+0004577372 00000 n 
+0004577523 00000 n 
+0004577675 00000 n 
+0004577828 00000 n 
+0004577980 00000 n 
+0004578133 00000 n 
+0004578286 00000 n 
+0004578439 00000 n 
+0004578591 00000 n 
+0004578744 00000 n 
+0004578897 00000 n 
+0004579050 00000 n 
+0004579203 00000 n 
+0004579356 00000 n 
+0004579508 00000 n 
+0004579661 00000 n 
+0004579813 00000 n 
+0004579965 00000 n 
+0004580117 00000 n 
+0004580269 00000 n 
+0004580422 00000 n 
+0004580575 00000 n 
+0004580726 00000 n 
+0004580879 00000 n 
+0004581031 00000 n 
+0004581184 00000 n 
+0004581337 00000 n 
+0004581490 00000 n 
+0004581643 00000 n 
+0004581796 00000 n 
+0004581948 00000 n 
+0004582101 00000 n 
+0004582254 00000 n 
+0004582406 00000 n 
+0004582558 00000 n 
+0004582710 00000 n 
+0004582861 00000 n 
+0004583013 00000 n 
+0004583166 00000 n 
+0004583319 00000 n 
+0004583472 00000 n 
+0004583624 00000 n 
+0004583776 00000 n 
+0004583929 00000 n 
+0004584080 00000 n 
+0004584233 00000 n 
+0004584386 00000 n 
+0004584539 00000 n 
+0004584692 00000 n 
+0004584845 00000 n 
+0004584998 00000 n 
+0004585151 00000 n 
+0004585304 00000 n 
+0004585457 00000 n 
+0004585610 00000 n 
+0004585763 00000 n 
+0004585915 00000 n 
+0004586068 00000 n 
+0004586221 00000 n 
+0004586372 00000 n 
+0004586523 00000 n 
+0004591592 00000 n 
+0004591745 00000 n 
+0004586738 00000 n 
+0004556019 00000 n 
+0004553753 00000 n 
+0004586673 00000 n 
+0004591896 00000 n 
+0004592048 00000 n 
+0004592201 00000 n 
+0004592353 00000 n 
+0004592505 00000 n 
+0004592655 00000 n 
+0004592806 00000 n 
+0004592957 00000 n 
+0004593108 00000 n 
+0004593261 00000 n 
+0004593413 00000 n 
+0004593564 00000 n 
+0004593715 00000 n 
+0004593868 00000 n 
+0004594020 00000 n 
+0004594172 00000 n 
+0004594324 00000 n 
+0004594476 00000 n 
+0004594627 00000 n 
+0004594777 00000 n 
+0004594927 00000 n 
+0004595080 00000 n 
+0004595232 00000 n 
+0004595383 00000 n 
+0004595536 00000 n 
+0004595689 00000 n 
+0004595841 00000 n 
+0004595992 00000 n 
+0004596143 00000 n 
+0004596294 00000 n 
+0004596447 00000 n 
+0004596596 00000 n 
+0004596748 00000 n 
+0004596900 00000 n 
+0004597053 00000 n 
+0004597205 00000 n 
+0004597358 00000 n 
+0004597511 00000 n 
+0004597664 00000 n 
+0004597817 00000 n 
+0004597970 00000 n 
+0004598123 00000 n 
+0004598276 00000 n 
+0004598428 00000 n 
+0004598581 00000 n 
+0004598734 00000 n 
+0004598886 00000 n 
+0004599038 00000 n 
+0004599191 00000 n 
+0004599344 00000 n 
+0004599497 00000 n 
+0004599650 00000 n 
+0004599802 00000 n 
+0004599953 00000 n 
+0004600106 00000 n 
+0004600258 00000 n 
+0004600411 00000 n 
+0004600564 00000 n 
+0004600717 00000 n 
+0004600870 00000 n 
+0004601023 00000 n 
+0004601175 00000 n 
+0004601328 00000 n 
+0004601481 00000 n 
+0004601634 00000 n 
+0004601787 00000 n 
+0004601938 00000 n 
+0004602091 00000 n 
+0004602244 00000 n 
+0004602396 00000 n 
+0004602549 00000 n 
+0004602700 00000 n 
+0004602851 00000 n 
+0004602998 00000 n 
+0004603150 00000 n 
+0004603301 00000 n 
+0004603453 00000 n 
+0004603605 00000 n 
+0004603757 00000 n 
+0004603910 00000 n 
+0004604063 00000 n 
+0004604216 00000 n 
+0004604369 00000 n 
+0004604522 00000 n 
+0004604673 00000 n 
+0004604826 00000 n 
+0004604979 00000 n 
+0004605132 00000 n 
+0004605285 00000 n 
+0004605438 00000 n 
+0004605591 00000 n 
+0004605743 00000 n 
+0004605895 00000 n 
+0004606048 00000 n 
+0004606198 00000 n 
+0004606350 00000 n 
+0004606502 00000 n 
+0004606655 00000 n 
+0004606808 00000 n 
+0004606959 00000 n 
+0004607112 00000 n 
+0004607264 00000 n 
+0004607417 00000 n 
+0004607569 00000 n 
+0004607720 00000 n 
+0004607872 00000 n 
+0004608025 00000 n 
+0004608175 00000 n 
+0004608328 00000 n 
+0004608480 00000 n 
+0004608632 00000 n 
+0004608784 00000 n 
+0004608936 00000 n 
+0004609089 00000 n 
+0004609241 00000 n 
+0004609394 00000 n 
+0004609545 00000 n 
+0004609698 00000 n 
+0004609850 00000 n 
+0004610002 00000 n 
+0004610153 00000 n 
+0004610305 00000 n 
+0004610457 00000 n 
+0004610608 00000 n 
+0004610761 00000 n 
+0004610914 00000 n 
+0004611067 00000 n 
+0004611219 00000 n 
+0004611370 00000 n 
+0004611522 00000 n 
+0004611674 00000 n 
+0004611827 00000 n 
+0004611979 00000 n 
+0004612132 00000 n 
+0004612284 00000 n 
+0004612437 00000 n 
+0004612590 00000 n 
+0004612743 00000 n 
+0004612896 00000 n 
+0004613049 00000 n 
+0004613202 00000 n 
+0004613355 00000 n 
+0004613506 00000 n 
+0004613658 00000 n 
+0004613811 00000 n 
+0004613963 00000 n 
+0004614116 00000 n 
+0004614269 00000 n 
+0004614422 00000 n 
+0004614575 00000 n 
+0004614727 00000 n 
+0004614879 00000 n 
+0004615031 00000 n 
+0004615184 00000 n 
+0004615337 00000 n 
+0004615490 00000 n 
+0004615643 00000 n 
+0004615795 00000 n 
+0004615948 00000 n 
+0004616101 00000 n 
+0004616254 00000 n 
+0004616407 00000 n 
+0004616558 00000 n 
+0004616711 00000 n 
+0004616863 00000 n 
+0004617015 00000 n 
+0004617166 00000 n 
+0004617317 00000 n 
+0004617469 00000 n 
+0004617620 00000 n 
+0004617771 00000 n 
+0004617923 00000 n 
+0004618075 00000 n 
+0004618227 00000 n 
+0004618379 00000 n 
+0004618531 00000 n 
+0004618683 00000 n 
+0004618836 00000 n 
+0004618987 00000 n 
+0004619140 00000 n 
+0004619293 00000 n 
+0004619446 00000 n 
+0004619598 00000 n 
+0004619751 00000 n 
+0004619904 00000 n 
+0004620057 00000 n 
+0004620209 00000 n 
+0004620362 00000 n 
+0004620513 00000 n 
+0004620666 00000 n 
+0004620818 00000 n 
+0004620971 00000 n 
+0004621124 00000 n 
+0004621277 00000 n 
+0004621430 00000 n 
+0004621583 00000 n 
+0004621736 00000 n 
+0004621888 00000 n 
+0004622041 00000 n 
+0004622194 00000 n 
+0004622347 00000 n 
+0004622500 00000 n 
+0004622652 00000 n 
+0004622805 00000 n 
+0004622956 00000 n 
+0004623109 00000 n 
+0004623261 00000 n 
+0004623413 00000 n 
+0004623565 00000 n 
+0004623718 00000 n 
+0004623871 00000 n 
+0004624023 00000 n 
+0004624175 00000 n 
+0004624328 00000 n 
+0004624480 00000 n 
+0004624633 00000 n 
+0004624786 00000 n 
+0004624939 00000 n 
+0004625092 00000 n 
+0004625245 00000 n 
+0004625397 00000 n 
+0004625549 00000 n 
+0004625702 00000 n 
+0004625853 00000 n 
+0004630174 00000 n 
+0004626069 00000 n 
+0004589193 00000 n 
+0004586855 00000 n 
+0004626004 00000 n 
+0004630326 00000 n 
+0004630479 00000 n 
+0004630632 00000 n 
+0004630784 00000 n 
+0004630937 00000 n 
+0004631090 00000 n 
+0004631243 00000 n 
+0004631396 00000 n 
+0004631548 00000 n 
+0004631698 00000 n 
+0004631849 00000 n 
+0004632002 00000 n 
+0004632154 00000 n 
+0004632307 00000 n 
+0004632458 00000 n 
+0004632610 00000 n 
+0004632761 00000 n 
+0004632913 00000 n 
+0004633065 00000 n 
+0004633215 00000 n 
+0004633367 00000 n 
+0004633519 00000 n 
+0004633672 00000 n 
+0004633823 00000 n 
+0004633975 00000 n 
+0004634127 00000 n 
+0004634280 00000 n 
+0004634432 00000 n 
+0004634584 00000 n 
+0004634737 00000 n 
+0004634890 00000 n 
+0004635043 00000 n 
+0004635195 00000 n 
+0004635345 00000 n 
+0004635494 00000 n 
+0004635646 00000 n 
+0004635797 00000 n 
+0004635950 00000 n 
+0004636102 00000 n 
+0004636255 00000 n 
+0004636408 00000 n 
+0004636561 00000 n 
+0004636714 00000 n 
+0004636867 00000 n 
+0004637020 00000 n 
+0004637173 00000 n 
+0004637325 00000 n 
+0004637477 00000 n 
+0004637630 00000 n 
+0004637782 00000 n 
+0004637935 00000 n 
+0004638087 00000 n 
+0004638239 00000 n 
+0004638391 00000 n 
+0004638543 00000 n 
+0004638695 00000 n 
+0004638847 00000 n 
+0004638997 00000 n 
+0004639150 00000 n 
+0004639300 00000 n 
+0004639452 00000 n 
+0004639605 00000 n 
+0004639755 00000 n 
+0004639908 00000 n 
+0004640059 00000 n 
+0004640212 00000 n 
+0004640363 00000 n 
+0004640516 00000 n 
+0004640667 00000 n 
+0004640820 00000 n 
+0004640970 00000 n 
+0004641122 00000 n 
+0004641275 00000 n 
+0004641428 00000 n 
+0004641578 00000 n 
+0004641729 00000 n 
+0004641880 00000 n 
+0004642032 00000 n 
+0004642184 00000 n 
+0004642337 00000 n 
+0004642489 00000 n 
+0004642642 00000 n 
+0004642794 00000 n 
+0004642947 00000 n 
+0004643100 00000 n 
+0004643252 00000 n 
+0004643405 00000 n 
+0004643557 00000 n 
+0004643709 00000 n 
+0004643861 00000 n 
+0004644013 00000 n 
+0004644165 00000 n 
+0004644317 00000 n 
+0004644468 00000 n 
+0004644621 00000 n 
+0004644773 00000 n 
+0004644926 00000 n 
+0004645079 00000 n 
+0004645231 00000 n 
+0004645384 00000 n 
+0004645536 00000 n 
+0004645689 00000 n 
+0004645840 00000 n 
+0004645993 00000 n 
+0004646146 00000 n 
+0004646298 00000 n 
+0004646451 00000 n 
+0004646604 00000 n 
+0004646757 00000 n 
+0004646910 00000 n 
+0004647062 00000 n 
+0004647215 00000 n 
+0004647367 00000 n 
+0004647520 00000 n 
+0004647673 00000 n 
+0004647825 00000 n 
+0004647978 00000 n 
+0004648131 00000 n 
+0004648284 00000 n 
+0004648437 00000 n 
+0004648590 00000 n 
+0004648743 00000 n 
+0004648895 00000 n 
+0004649047 00000 n 
+0004649198 00000 n 
+0004649350 00000 n 
+0004649502 00000 n 
+0004649655 00000 n 
+0004649807 00000 n 
+0004649960 00000 n 
+0004650113 00000 n 
+0004650266 00000 n 
+0004650418 00000 n 
+0004650571 00000 n 
+0004650723 00000 n 
+0004650875 00000 n 
+0004651025 00000 n 
+0004651176 00000 n 
+0004651329 00000 n 
+0004651482 00000 n 
+0004651635 00000 n 
+0004651787 00000 n 
+0004651940 00000 n 
+0004652092 00000 n 
+0004652245 00000 n 
+0004652398 00000 n 
+0004652550 00000 n 
+0004652702 00000 n 
+0004652855 00000 n 
+0004653007 00000 n 
+0004653160 00000 n 
+0004653313 00000 n 
+0004653465 00000 n 
+0004653616 00000 n 
+0004653769 00000 n 
+0004653922 00000 n 
+0004654075 00000 n 
+0004654228 00000 n 
+0004654380 00000 n 
+0004654532 00000 n 
+0004654685 00000 n 
+0004654837 00000 n 
+0004654990 00000 n 
+0004655143 00000 n 
+0004655296 00000 n 
+0004655449 00000 n 
+0004655601 00000 n 
+0004655754 00000 n 
+0004655907 00000 n 
+0004656060 00000 n 
+0004656213 00000 n 
+0004656362 00000 n 
+0004656513 00000 n 
+0004656664 00000 n 
+0004656815 00000 n 
+0004656966 00000 n 
+0004657117 00000 n 
+0004657267 00000 n 
+0004661155 00000 n 
+0004657483 00000 n 
+0004628245 00000 n 
+0004626186 00000 n 
+0004657418 00000 n 
+0005142874 00000 n 
+0004661308 00000 n 
+0004661461 00000 n 
+0004661614 00000 n 
+0004661766 00000 n 
+0004661919 00000 n 
+0004662071 00000 n 
+0004662224 00000 n 
+0004662377 00000 n 
+0004662529 00000 n 
+0004662682 00000 n 
+0004662833 00000 n 
+0004662985 00000 n 
+0004663138 00000 n 
+0004663291 00000 n 
+0004663444 00000 n 
+0004663597 00000 n 
+0004663750 00000 n 
+0004663901 00000 n 
+0004664054 00000 n 
+0004664206 00000 n 
+0004664358 00000 n 
+0004664511 00000 n 
+0004664663 00000 n 
+0004664815 00000 n 
+0004664968 00000 n 
+0004665120 00000 n 
+0004665273 00000 n 
+0004665424 00000 n 
+0004665577 00000 n 
+0004665728 00000 n 
+0004665881 00000 n 
+0004666033 00000 n 
+0004666186 00000 n 
+0004666338 00000 n 
+0004666487 00000 n 
+0004666639 00000 n 
+0004666791 00000 n 
+0004666944 00000 n 
+0004667095 00000 n 
+0004667247 00000 n 
+0004667400 00000 n 
+0004667553 00000 n 
+0004667706 00000 n 
+0004667858 00000 n 
+0004668011 00000 n 
+0004668163 00000 n 
+0004668316 00000 n 
+0004668468 00000 n 
+0004668621 00000 n 
+0004668774 00000 n 
+0004668927 00000 n 
+0004669080 00000 n 
+0004669233 00000 n 
+0004669386 00000 n 
+0004669539 00000 n 
+0004669692 00000 n 
+0004669845 00000 n 
+0004669998 00000 n 
+0004670150 00000 n 
+0004670303 00000 n 
+0004670455 00000 n 
+0004670608 00000 n 
+0004670759 00000 n 
+0004670910 00000 n 
+0004671062 00000 n 
+0004671215 00000 n 
+0004671367 00000 n 
+0004671519 00000 n 
+0004671671 00000 n 
+0004671823 00000 n 
+0004671976 00000 n 
+0004672127 00000 n 
+0004672279 00000 n 
+0004672431 00000 n 
+0004672584 00000 n 
+0004672736 00000 n 
+0004672889 00000 n 
+0004673042 00000 n 
+0004673194 00000 n 
+0004673347 00000 n 
+0004673499 00000 n 
+0004673652 00000 n 
+0004673805 00000 n 
+0004673955 00000 n 
+0004674102 00000 n 
+0004674252 00000 n 
+0004674402 00000 n 
+0004674553 00000 n 
+0004674706 00000 n 
+0004674859 00000 n 
+0004675012 00000 n 
+0004675164 00000 n 
+0004675316 00000 n 
+0004675469 00000 n 
+0004675618 00000 n 
+0004675771 00000 n 
+0004675923 00000 n 
+0004676075 00000 n 
+0004676227 00000 n 
+0004676380 00000 n 
+0004676531 00000 n 
+0004676681 00000 n 
+0004676833 00000 n 
+0004676985 00000 n 
+0004677136 00000 n 
+0004677287 00000 n 
+0004677440 00000 n 
+0004677592 00000 n 
+0004677745 00000 n 
+0004677895 00000 n 
+0004678048 00000 n 
+0004678199 00000 n 
+0004678352 00000 n 
+0004678504 00000 n 
+0004678657 00000 n 
+0004678810 00000 n 
+0004678963 00000 n 
+0004679116 00000 n 
+0004679269 00000 n 
+0004679422 00000 n 
+0004679575 00000 n 
+0004679728 00000 n 
+0004679881 00000 n 
+0004680034 00000 n 
+0004680187 00000 n 
+0004680340 00000 n 
+0004680492 00000 n 
+0004680644 00000 n 
+0004680797 00000 n 
+0004680950 00000 n 
+0004681103 00000 n 
+0004681256 00000 n 
+0004681409 00000 n 
+0004681561 00000 n 
+0004681713 00000 n 
+0004681866 00000 n 
+0004682018 00000 n 
+0004682171 00000 n 
+0004682324 00000 n 
+0004682477 00000 n 
+0004682630 00000 n 
+0004682783 00000 n 
+0004682936 00000 n 
+0004683089 00000 n 
+0004683240 00000 n 
+0004683393 00000 n 
+0004683546 00000 n 
+0004683699 00000 n 
+0004683852 00000 n 
+0004684004 00000 n 
+0004688073 00000 n 
+0004684220 00000 n 
+0004659506 00000 n 
+0004657586 00000 n 
+0004684155 00000 n 
+0004688225 00000 n 
+0004688378 00000 n 
+0004688531 00000 n 
+0004688684 00000 n 
+0004688836 00000 n 
+0004688988 00000 n 
+0004689141 00000 n 
+0004689291 00000 n 
+0004689442 00000 n 
+0004689594 00000 n 
+0004689745 00000 n 
+0004689896 00000 n 
+0004690049 00000 n 
+0004690197 00000 n 
+0004690349 00000 n 
+0004690501 00000 n 
+0004690651 00000 n 
+0004690803 00000 n 
+0004690955 00000 n 
+0004691106 00000 n 
+0004691259 00000 n 
+0004691412 00000 n 
+0004691565 00000 n 
+0004691717 00000 n 
+0004691869 00000 n 
+0004692021 00000 n 
+0004692174 00000 n 
+0004692325 00000 n 
+0004692477 00000 n 
+0004692630 00000 n 
+0004692783 00000 n 
+0004692935 00000 n 
+0004693088 00000 n 
+0004693238 00000 n 
+0004693389 00000 n 
+0004693540 00000 n 
+0004693691 00000 n 
+0004693844 00000 n 
+0004693993 00000 n 
+0004694143 00000 n 
+0004694294 00000 n 
+0004694447 00000 n 
+0004694600 00000 n 
+0004694752 00000 n 
+0004694905 00000 n 
+0004695056 00000 n 
+0004695208 00000 n 
+0004695361 00000 n 
+0004695514 00000 n 
+0004695667 00000 n 
+0004695819 00000 n 
+0004695971 00000 n 
+0004696124 00000 n 
+0004696275 00000 n 
+0004696428 00000 n 
+0004696580 00000 n 
+0004696732 00000 n 
+0004696885 00000 n 
+0004697037 00000 n 
+0004697189 00000 n 
+0004697341 00000 n 
+0004697492 00000 n 
+0004697645 00000 n 
+0004697796 00000 n 
+0004697948 00000 n 
+0004698100 00000 n 
+0004698253 00000 n 
+0004698406 00000 n 
+0004698558 00000 n 
+0004698711 00000 n 
+0004698862 00000 n 
+0004699012 00000 n 
+0004699163 00000 n 
+0004699316 00000 n 
+0004699468 00000 n 
+0004699620 00000 n 
+0004699772 00000 n 
+0004699925 00000 n 
+0004700076 00000 n 
+0004700229 00000 n 
+0004700382 00000 n 
+0004700535 00000 n 
+0004700687 00000 n 
+0004700840 00000 n 
+0004700993 00000 n 
+0004701144 00000 n 
+0004701296 00000 n 
+0004701449 00000 n 
+0004701601 00000 n 
+0004701754 00000 n 
+0004701906 00000 n 
+0004702058 00000 n 
+0004702210 00000 n 
+0004702362 00000 n 
+0004702514 00000 n 
+0004702667 00000 n 
+0004702819 00000 n 
+0004702971 00000 n 
+0004703122 00000 n 
+0004703274 00000 n 
+0004703427 00000 n 
+0004703578 00000 n 
+0004703730 00000 n 
+0004703883 00000 n 
+0004704034 00000 n 
+0004704186 00000 n 
+0004704339 00000 n 
+0004704492 00000 n 
+0004704645 00000 n 
+0004704797 00000 n 
+0004704950 00000 n 
+0004705103 00000 n 
+0004705255 00000 n 
+0004705407 00000 n 
+0004705559 00000 n 
+0004705711 00000 n 
+0004705864 00000 n 
+0004706016 00000 n 
+0004706168 00000 n 
+0004706321 00000 n 
+0004706473 00000 n 
+0004706625 00000 n 
+0004706777 00000 n 
+0004706927 00000 n 
+0004707080 00000 n 
+0004707233 00000 n 
+0004707384 00000 n 
+0004707536 00000 n 
+0004707689 00000 n 
+0004707839 00000 n 
+0004707991 00000 n 
+0004708143 00000 n 
+0004708295 00000 n 
+0004708447 00000 n 
+0004708597 00000 n 
+0004708749 00000 n 
+0004708900 00000 n 
+0004709053 00000 n 
+0004709205 00000 n 
+0004709358 00000 n 
+0004709510 00000 n 
+0004709662 00000 n 
+0004709815 00000 n 
+0004709967 00000 n 
+0004710120 00000 n 
+0004710272 00000 n 
+0004710424 00000 n 
+0004710577 00000 n 
+0004710730 00000 n 
+0004710883 00000 n 
+0004711035 00000 n 
+0004711187 00000 n 
+0004711339 00000 n 
+0004711492 00000 n 
+0004711643 00000 n 
+0004716121 00000 n 
+0004711859 00000 n 
+0004686374 00000 n 
+0004684337 00000 n 
+0004711794 00000 n 
+0004716274 00000 n 
+0004716426 00000 n 
+0004716577 00000 n 
+0004716729 00000 n 
+0004716881 00000 n 
+0004717033 00000 n 
+0004717185 00000 n 
+0004717337 00000 n 
+0004717488 00000 n 
+0004717639 00000 n 
+0004717792 00000 n 
+0004717944 00000 n 
+0004718094 00000 n 
+0004718245 00000 n 
+0004718397 00000 n 
+0004718550 00000 n 
+0004718703 00000 n 
+0004718856 00000 n 
+0004719009 00000 n 
+0004719162 00000 n 
+0004719315 00000 n 
+0004719468 00000 n 
+0004719621 00000 n 
+0004719773 00000 n 
+0004719925 00000 n 
+0004720078 00000 n 
+0004720227 00000 n 
+0004720377 00000 n 
+0004720527 00000 n 
+0004720679 00000 n 
+0004720832 00000 n 
+0004720983 00000 n 
+0004721135 00000 n 
+0004721288 00000 n 
+0004721441 00000 n 
+0004721591 00000 n 
+0004721742 00000 n 
+0004721895 00000 n 
+0004722047 00000 n 
+0004722200 00000 n 
+0004722353 00000 n 
+0004722506 00000 n 
+0004722659 00000 n 
+0004722811 00000 n 
+0004722961 00000 n 
+0004723112 00000 n 
+0004723265 00000 n 
+0004723417 00000 n 
+0004723569 00000 n 
+0004723721 00000 n 
+0004723872 00000 n 
+0004724024 00000 n 
+0004724173 00000 n 
+0004724324 00000 n 
+0004724476 00000 n 
+0004724628 00000 n 
+0004724781 00000 n 
+0004724934 00000 n 
+0004725087 00000 n 
+0004725239 00000 n 
+0004725391 00000 n 
+0004725544 00000 n 
+0004725697 00000 n 
+0004725850 00000 n 
+0004726003 00000 n 
+0004726156 00000 n 
+0004726309 00000 n 
+0004726461 00000 n 
+0004726614 00000 n 
+0004726767 00000 n 
+0004726920 00000 n 
+0004727072 00000 n 
+0004727225 00000 n 
+0004727378 00000 n 
+0004727531 00000 n 
+0004727684 00000 n 
+0004727836 00000 n 
+0004727988 00000 n 
+0004728140 00000 n 
+0004728293 00000 n 
+0004728446 00000 n 
+0004728598 00000 n 
+0004728751 00000 n 
+0004728903 00000 n 
+0004729054 00000 n 
+0004729206 00000 n 
+0004729358 00000 n 
+0004729510 00000 n 
+0004729661 00000 n 
+0004729811 00000 n 
+0004729962 00000 n 
+0004730115 00000 n 
+0004730267 00000 n 
+0004730420 00000 n 
+0004730573 00000 n 
+0004730726 00000 n 
+0004730877 00000 n 
+0004731028 00000 n 
+0004731180 00000 n 
+0004731333 00000 n 
+0004731486 00000 n 
+0004731639 00000 n 
+0004731789 00000 n 
+0004731940 00000 n 
+0004732091 00000 n 
+0004732243 00000 n 
+0004732395 00000 n 
+0004732547 00000 n 
+0004732699 00000 n 
+0004732852 00000 n 
+0004733003 00000 n 
+0004733156 00000 n 
+0004733308 00000 n 
+0004733459 00000 n 
+0004733610 00000 n 
+0004733762 00000 n 
+0004733915 00000 n 
+0004734066 00000 n 
+0004734217 00000 n 
+0004734369 00000 n 
+0004734521 00000 n 
+0004734673 00000 n 
+0004734823 00000 n 
+0004734974 00000 n 
+0004735126 00000 n 
+0004735279 00000 n 
+0004735430 00000 n 
+0004735582 00000 n 
+0004735734 00000 n 
+0004735887 00000 n 
+0004736039 00000 n 
+0004736192 00000 n 
+0004736344 00000 n 
+0004736495 00000 n 
+0004736647 00000 n 
+0004736799 00000 n 
+0004736950 00000 n 
+0004737102 00000 n 
+0004737254 00000 n 
+0004737407 00000 n 
+0004737560 00000 n 
+0004737712 00000 n 
+0004737865 00000 n 
+0004738018 00000 n 
+0004738171 00000 n 
+0004738324 00000 n 
+0004738477 00000 n 
+0004738629 00000 n 
+0004738782 00000 n 
+0004738934 00000 n 
+0004739087 00000 n 
+0004739240 00000 n 
+0004739393 00000 n 
+0004739546 00000 n 
+0004739698 00000 n 
+0004739851 00000 n 
+0004740003 00000 n 
+0004740156 00000 n 
+0004740309 00000 n 
+0004740461 00000 n 
+0004740614 00000 n 
+0004740767 00000 n 
+0004740920 00000 n 
+0004741073 00000 n 
+0004741226 00000 n 
+0004741379 00000 n 
+0004741529 00000 n 
+0004741682 00000 n 
+0004741834 00000 n 
+0004741987 00000 n 
+0004742140 00000 n 
+0004742293 00000 n 
+0004742445 00000 n 
+0004742597 00000 n 
+0004742750 00000 n 
+0004742903 00000 n 
+0004743056 00000 n 
+0004743208 00000 n 
+0004743361 00000 n 
+0004743513 00000 n 
+0004743666 00000 n 
+0004743816 00000 n 
+0004743969 00000 n 
+0004744121 00000 n 
+0004744273 00000 n 
+0004744425 00000 n 
+0004744577 00000 n 
+0004744730 00000 n 
+0004744883 00000 n 
+0004745036 00000 n 
+0004745188 00000 n 
+0004745341 00000 n 
+0004745493 00000 n 
+0004745646 00000 n 
+0004745797 00000 n 
+0004745950 00000 n 
+0004746102 00000 n 
+0004746255 00000 n 
+0004746408 00000 n 
+0004746561 00000 n 
+0004746712 00000 n 
+0004750744 00000 n 
+0004746928 00000 n 
+0004713962 00000 n 
+0004711962 00000 n 
+0004746863 00000 n 
+0004750897 00000 n 
+0004751050 00000 n 
+0004751200 00000 n 
+0004751352 00000 n 
+0004751504 00000 n 
+0004751657 00000 n 
+0004751808 00000 n 
+0004751958 00000 n 
+0004752110 00000 n 
+0004752261 00000 n 
+0004752414 00000 n 
+0004752566 00000 n 
+0004752717 00000 n 
+0004752869 00000 n 
+0004753021 00000 n 
+0004753173 00000 n 
+0004753325 00000 n 
+0004753476 00000 n 
+0004753627 00000 n 
+0004753778 00000 n 
+0004753930 00000 n 
+0004754082 00000 n 
+0004754235 00000 n 
+0004754388 00000 n 
+0004754539 00000 n 
+0004754691 00000 n 
+0004754843 00000 n 
+0004754994 00000 n 
+0004755146 00000 n 
+0004755298 00000 n 
+0004755448 00000 n 
+0004755600 00000 n 
+0004755751 00000 n 
+0004755902 00000 n 
+0004756055 00000 n 
+0004756208 00000 n 
+0004756361 00000 n 
+0004756514 00000 n 
+0004756667 00000 n 
+0004756820 00000 n 
+0004756973 00000 n 
+0004757126 00000 n 
+0004757278 00000 n 
+0004757430 00000 n 
+0004757582 00000 n 
+0004757735 00000 n 
+0004757888 00000 n 
+0004758040 00000 n 
+0004758192 00000 n 
+0004758344 00000 n 
+0004758496 00000 n 
+0004758649 00000 n 
+0004758801 00000 n 
+0004758954 00000 n 
+0004759107 00000 n 
+0004759260 00000 n 
+0004759412 00000 n 
+0004759565 00000 n 
+0004759717 00000 n 
+0004759869 00000 n 
+0004760020 00000 n 
+0004760173 00000 n 
+0004760325 00000 n 
+0004760477 00000 n 
+0004760629 00000 n 
+0004760780 00000 n 
+0004760933 00000 n 
+0004761085 00000 n 
+0004761236 00000 n 
+0004761388 00000 n 
+0004761540 00000 n 
+0004761693 00000 n 
+0004761845 00000 n 
+0004761998 00000 n 
+0004762151 00000 n 
+0004762304 00000 n 
+0004762457 00000 n 
+0004762610 00000 n 
+0004762763 00000 n 
+0004762914 00000 n 
+0004763065 00000 n 
+0004763215 00000 n 
+0004763366 00000 n 
+0004763517 00000 n 
+0004763669 00000 n 
+0004763821 00000 n 
+0004763973 00000 n 
+0004764126 00000 n 
+0004764278 00000 n 
+0004764430 00000 n 
+0004764581 00000 n 
+0004764733 00000 n 
+0004764884 00000 n 
+0004765031 00000 n 
+0004765182 00000 n 
+0004765334 00000 n 
+0004765486 00000 n 
+0004765638 00000 n 
+0004765790 00000 n 
+0004765941 00000 n 
+0004766092 00000 n 
+0004766245 00000 n 
+0004766398 00000 n 
+0004766551 00000 n 
+0004766703 00000 n 
+0004766856 00000 n 
+0004767009 00000 n 
+0004767161 00000 n 
+0004767313 00000 n 
+0004767465 00000 n 
+0004767618 00000 n 
+0004767771 00000 n 
+0004767924 00000 n 
+0004768077 00000 n 
+0004768230 00000 n 
+0004768382 00000 n 
+0004768534 00000 n 
+0004768686 00000 n 
+0004768839 00000 n 
+0004768992 00000 n 
+0004769145 00000 n 
+0004769298 00000 n 
+0004769451 00000 n 
+0004769604 00000 n 
+0004769757 00000 n 
+0004769910 00000 n 
+0004770061 00000 n 
+0004770213 00000 n 
+0004770366 00000 n 
+0004770518 00000 n 
+0004770670 00000 n 
+0004770821 00000 n 
+0004770973 00000 n 
+0004771124 00000 n 
+0004771277 00000 n 
+0004771430 00000 n 
+0004771583 00000 n 
+0004771735 00000 n 
+0004771886 00000 n 
+0004772039 00000 n 
+0004772191 00000 n 
+0004772344 00000 n 
+0004772497 00000 n 
+0004772650 00000 n 
+0004772803 00000 n 
+0004772956 00000 n 
+0004773109 00000 n 
+0004773260 00000 n 
+0004778018 00000 n 
+0004778168 00000 n 
+0004778319 00000 n 
+0004773476 00000 n 
+0004749115 00000 n 
+0004747031 00000 n 
+0004773411 00000 n 
+0004778471 00000 n 
+0004778624 00000 n 
+0004778775 00000 n 
+0004778927 00000 n 
+0004779078 00000 n 
+0004779231 00000 n 
+0004779383 00000 n 
+0004779532 00000 n 
+0004779685 00000 n 
+0004779836 00000 n 
+0004779985 00000 n 
+0004780135 00000 n 
+0004780287 00000 n 
+0004780439 00000 n 
+0004780591 00000 n 
+0004780744 00000 n 
+0004780896 00000 n 
+0004781047 00000 n 
+0004781200 00000 n 
+0004781352 00000 n 
+0004781504 00000 n 
+0004781657 00000 n 
+0004781807 00000 n 
+0004781957 00000 n 
+0004782109 00000 n 
+0004782261 00000 n 
+0004782413 00000 n 
+0004782564 00000 n 
+0004782716 00000 n 
+0004782867 00000 n 
+0004783020 00000 n 
+0004783173 00000 n 
+0004783326 00000 n 
+0004783478 00000 n 
+0004783631 00000 n 
+0004783783 00000 n 
+0004783936 00000 n 
+0004784089 00000 n 
+0004784242 00000 n 
+0004784394 00000 n 
+0004784547 00000 n 
+0004784700 00000 n 
+0004784853 00000 n 
+0004785006 00000 n 
+0004785159 00000 n 
+0004785311 00000 n 
+0004785464 00000 n 
+0004785617 00000 n 
+0004785770 00000 n 
+0004785923 00000 n 
+0004786074 00000 n 
+0004786225 00000 n 
+0004786378 00000 n 
+0004786529 00000 n 
+0004786682 00000 n 
+0004786835 00000 n 
+0004786987 00000 n 
+0004787139 00000 n 
+0004787290 00000 n 
+0004787440 00000 n 
+0004787593 00000 n 
+0004787744 00000 n 
+0004787896 00000 n 
+0004788047 00000 n 
+0004788200 00000 n 
+0004788351 00000 n 
+0004788504 00000 n 
+0004788655 00000 n 
+0004788806 00000 n 
+0004788959 00000 n 
+0004789109 00000 n 
+0004789260 00000 n 
+0004789411 00000 n 
+0004789563 00000 n 
+0004789715 00000 n 
+0004789866 00000 n 
+0004790016 00000 n 
+0004790169 00000 n 
+0004790322 00000 n 
+0004790474 00000 n 
+0004790627 00000 n 
+0004790780 00000 n 
+0004790931 00000 n 
+0004791082 00000 n 
+0004791233 00000 n 
+0004791384 00000 n 
+0004791535 00000 n 
+0004791686 00000 n 
+0004791837 00000 n 
+0004791989 00000 n 
+0004792140 00000 n 
+0004792292 00000 n 
+0004792443 00000 n 
+0004792595 00000 n 
+0004792747 00000 n 
+0004792899 00000 n 
+0004793050 00000 n 
+0004793203 00000 n 
+0004793355 00000 n 
+0004793508 00000 n 
+0004793661 00000 n 
+0004793812 00000 n 
+0004793964 00000 n 
+0004794117 00000 n 
+0004794268 00000 n 
+0004794421 00000 n 
+0004794573 00000 n 
+0004794726 00000 n 
+0004794879 00000 n 
+0004795032 00000 n 
+0004795185 00000 n 
+0004795336 00000 n 
+0004795488 00000 n 
+0004795641 00000 n 
+0004795792 00000 n 
+0004795945 00000 n 
+0004796097 00000 n 
+0004796249 00000 n 
+0004796401 00000 n 
+0004796553 00000 n 
+0004796706 00000 n 
+0004796857 00000 n 
+0004797008 00000 n 
+0004797161 00000 n 
+0004797313 00000 n 
+0004797466 00000 n 
+0004797619 00000 n 
+0004797771 00000 n 
+0004797924 00000 n 
+0004798075 00000 n 
+0004798226 00000 n 
+0004798378 00000 n 
+0004798530 00000 n 
+0004798683 00000 n 
+0004798836 00000 n 
+0004798988 00000 n 
+0004799141 00000 n 
+0004799294 00000 n 
+0004799447 00000 n 
+0004799600 00000 n 
+0004799753 00000 n 
+0004799904 00000 n 
+0004800057 00000 n 
+0004800209 00000 n 
+0004800362 00000 n 
+0004800515 00000 n 
+0004800668 00000 n 
+0004800821 00000 n 
+0004800974 00000 n 
+0004801127 00000 n 
+0004801280 00000 n 
+0004801433 00000 n 
+0004801586 00000 n 
+0004801739 00000 n 
+0004801891 00000 n 
+0004802044 00000 n 
+0004802195 00000 n 
+0004802347 00000 n 
+0004802499 00000 n 
+0004802650 00000 n 
+0004802802 00000 n 
+0004802954 00000 n 
+0004803105 00000 n 
+0004803257 00000 n 
+0004803410 00000 n 
+0004803562 00000 n 
+0004803715 00000 n 
+0004803866 00000 n 
+0004804019 00000 n 
+0004804171 00000 n 
+0004804324 00000 n 
+0004804477 00000 n 
+0004804630 00000 n 
+0004804783 00000 n 
+0004804936 00000 n 
+0004805089 00000 n 
+0004805242 00000 n 
+0004805395 00000 n 
+0004805547 00000 n 
+0004805700 00000 n 
+0004805853 00000 n 
+0004806006 00000 n 
+0004806156 00000 n 
+0004806309 00000 n 
+0004806461 00000 n 
+0004806614 00000 n 
+0004806764 00000 n 
+0004806916 00000 n 
+0004807069 00000 n 
+0004807221 00000 n 
+0004807373 00000 n 
+0004807526 00000 n 
+0004807679 00000 n 
+0004807832 00000 n 
+0004807985 00000 n 
+0004808138 00000 n 
+0004808291 00000 n 
+0004808444 00000 n 
+0004808595 00000 n 
+0004808748 00000 n 
+0004808901 00000 n 
+0004809054 00000 n 
+0004809207 00000 n 
+0004809360 00000 n 
+0004809512 00000 n 
+0004809662 00000 n 
+0004813628 00000 n 
+0004809877 00000 n 
+0004775789 00000 n 
+0004773579 00000 n 
+0004809812 00000 n 
+0004813781 00000 n 
+0004813932 00000 n 
+0004814082 00000 n 
+0004814235 00000 n 
+0004814388 00000 n 
+0004814536 00000 n 
+0004814688 00000 n 
+0004814841 00000 n 
+0004814993 00000 n 
+0004815146 00000 n 
+0004815298 00000 n 
+0004815451 00000 n 
+0004815603 00000 n 
+0004815753 00000 n 
+0004815904 00000 n 
+0004816056 00000 n 
+0004816208 00000 n 
+0004816360 00000 n 
+0004816511 00000 n 
+0004816663 00000 n 
+0004816815 00000 n 
+0004816967 00000 n 
+0004817118 00000 n 
+0004817270 00000 n 
+0004817419 00000 n 
+0004817570 00000 n 
+0004817723 00000 n 
+0004817875 00000 n 
+0004818025 00000 n 
+0004818175 00000 n 
+0004818326 00000 n 
+0004818478 00000 n 
+0004818631 00000 n 
+0004818783 00000 n 
+0004818936 00000 n 
+0004819089 00000 n 
+0004819242 00000 n 
+0004819393 00000 n 
+0004819544 00000 n 
+0004819696 00000 n 
+0004819848 00000 n 
+0004820001 00000 n 
+0004820152 00000 n 
+0004820303 00000 n 
+0004820455 00000 n 
+0004820607 00000 n 
+0004820759 00000 n 
+0004820911 00000 n 
+0004821059 00000 n 
+0004821210 00000 n 
+0004821362 00000 n 
+0004821515 00000 n 
+0004821666 00000 n 
+0004821818 00000 n 
+0004821969 00000 n 
+0004822120 00000 n 
+0004822271 00000 n 
+0004822423 00000 n 
+0004822574 00000 n 
+0004822725 00000 n 
+0004822878 00000 n 
+0004823029 00000 n 
+0004823180 00000 n 
+0004823333 00000 n 
+0004823484 00000 n 
+0004823635 00000 n 
+0004823788 00000 n 
+0004823941 00000 n 
+0004824094 00000 n 
+0004824246 00000 n 
+0004824396 00000 n 
+0004824548 00000 n 
+0004824700 00000 n 
+0004824852 00000 n 
+0004825004 00000 n 
+0004825156 00000 n 
+0004825309 00000 n 
+0004825461 00000 n 
+0004825613 00000 n 
+0004825762 00000 n 
+0004825911 00000 n 
+0004826061 00000 n 
+0004826212 00000 n 
+0004826364 00000 n 
+0004826516 00000 n 
+0004826668 00000 n 
+0004826821 00000 n 
+0004826973 00000 n 
+0004827124 00000 n 
+0004827276 00000 n 
+0004827429 00000 n 
+0004827581 00000 n 
+0004827734 00000 n 
+0004827885 00000 n 
+0004828037 00000 n 
+0004828189 00000 n 
+0004828342 00000 n 
+0004828495 00000 n 
+0004828647 00000 n 
+0004828800 00000 n 
+0004828952 00000 n 
+0004829104 00000 n 
+0004829254 00000 n 
+0004829407 00000 n 
+0004829558 00000 n 
+0004829711 00000 n 
+0004829863 00000 n 
+0004830016 00000 n 
+0004830169 00000 n 
+0004830321 00000 n 
+0004830474 00000 n 
+0004830627 00000 n 
+0004830780 00000 n 
+0004830933 00000 n 
+0004831085 00000 n 
+0004831237 00000 n 
+0004831390 00000 n 
+0004831543 00000 n 
+0004831696 00000 n 
+0004831847 00000 n 
+0004831999 00000 n 
+0004832151 00000 n 
+0004832304 00000 n 
+0004832456 00000 n 
+0004832609 00000 n 
+0004832762 00000 n 
+0004832915 00000 n 
+0004833068 00000 n 
+0004833221 00000 n 
+0004833374 00000 n 
+0004833526 00000 n 
+0004833678 00000 n 
+0004833828 00000 n 
+0004833980 00000 n 
+0004834133 00000 n 
+0004834285 00000 n 
+0004834437 00000 n 
+0004834589 00000 n 
+0004834741 00000 n 
+0004834894 00000 n 
+0004835047 00000 n 
+0004835200 00000 n 
+0004835353 00000 n 
+0004835504 00000 n 
+0004835657 00000 n 
+0004835808 00000 n 
+0004835959 00000 n 
+0004836112 00000 n 
+0004836264 00000 n 
+0004836415 00000 n 
+0004836565 00000 n 
+0004840874 00000 n 
+0004841027 00000 n 
+0004836780 00000 n 
+0004811969 00000 n 
+0004809980 00000 n 
+0004836715 00000 n 
+0005143007 00000 n 
+0004841179 00000 n 
+0004841331 00000 n 
+0004841480 00000 n 
+0004841631 00000 n 
+0004841782 00000 n 
+0004841934 00000 n 
+0004842086 00000 n 
+0004842237 00000 n 
+0004842389 00000 n 
+0004842541 00000 n 
+0004842693 00000 n 
+0004842845 00000 n 
+0004842997 00000 n 
+0004843150 00000 n 
+0004843301 00000 n 
+0004843451 00000 n 
+0004843604 00000 n 
+0004843756 00000 n 
+0004843909 00000 n 
+0004844059 00000 n 
+0004844211 00000 n 
+0004844364 00000 n 
+0004844517 00000 n 
+0004844670 00000 n 
+0004844823 00000 n 
+0004844975 00000 n 
+0004845126 00000 n 
+0004845279 00000 n 
+0004845430 00000 n 
+0004845582 00000 n 
+0004845735 00000 n 
+0004845888 00000 n 
+0004846040 00000 n 
+0004846190 00000 n 
+0004846342 00000 n 
+0004846495 00000 n 
+0004846648 00000 n 
+0004846801 00000 n 
+0004846953 00000 n 
+0004847106 00000 n 
+0004847258 00000 n 
+0004847411 00000 n 
+0004847564 00000 n 
+0004847717 00000 n 
+0004847869 00000 n 
+0004848020 00000 n 
+0004848172 00000 n 
+0004848325 00000 n 
+0004848477 00000 n 
+0004848630 00000 n 
+0004848782 00000 n 
+0004848934 00000 n 
+0004849084 00000 n 
+0004849236 00000 n 
+0004849389 00000 n 
+0004849542 00000 n 
+0004849695 00000 n 
+0004849848 00000 n 
+0004850001 00000 n 
+0004850153 00000 n 
+0004850305 00000 n 
+0004850456 00000 n 
+0004850609 00000 n 
+0004850760 00000 n 
+0004850911 00000 n 
+0004851059 00000 n 
+0004851212 00000 n 
+0004851365 00000 n 
+0004851516 00000 n 
+0004851669 00000 n 
+0004851819 00000 n 
+0004851968 00000 n 
+0004852120 00000 n 
+0004852272 00000 n 
+0004852425 00000 n 
+0004852578 00000 n 
+0004852731 00000 n 
+0004852884 00000 n 
+0004853035 00000 n 
+0004853187 00000 n 
+0004853340 00000 n 
+0004853490 00000 n 
+0004853643 00000 n 
+0004853796 00000 n 
+0004853949 00000 n 
+0004854101 00000 n 
+0004854253 00000 n 
+0004854405 00000 n 
+0004854557 00000 n 
+0004854709 00000 n 
+0004854860 00000 n 
+0004855013 00000 n 
+0004855165 00000 n 
+0004855317 00000 n 
+0004855470 00000 n 
+0004855622 00000 n 
+0004855774 00000 n 
+0004855927 00000 n 
+0004856080 00000 n 
+0004856231 00000 n 
+0004856383 00000 n 
+0004856535 00000 n 
+0004856687 00000 n 
+0004856840 00000 n 
+0004856993 00000 n 
+0004857146 00000 n 
+0004857299 00000 n 
+0004857452 00000 n 
+0004857605 00000 n 
+0004857758 00000 n 
+0004857910 00000 n 
+0004858063 00000 n 
+0004858215 00000 n 
+0004858368 00000 n 
+0004858521 00000 n 
+0004858674 00000 n 
+0004858827 00000 n 
+0004858980 00000 n 
+0004859133 00000 n 
+0004859286 00000 n 
+0004859439 00000 n 
+0004859591 00000 n 
+0004859744 00000 n 
+0004859897 00000 n 
+0004860050 00000 n 
+0004860202 00000 n 
+0004860355 00000 n 
+0004860508 00000 n 
+0004860661 00000 n 
+0004860813 00000 n 
+0004860966 00000 n 
+0004861119 00000 n 
+0004861270 00000 n 
+0004861422 00000 n 
+0004861574 00000 n 
+0004861726 00000 n 
+0004861878 00000 n 
+0004862030 00000 n 
+0004862183 00000 n 
+0004862335 00000 n 
+0004862486 00000 n 
+0004862637 00000 n 
+0004862787 00000 n 
+0004862938 00000 n 
+0004863089 00000 n 
+0004863240 00000 n 
+0004863392 00000 n 
+0004863544 00000 n 
+0004863696 00000 n 
+0004863848 00000 n 
+0004863999 00000 n 
+0004864150 00000 n 
+0004864302 00000 n 
+0004864453 00000 n 
+0004864606 00000 n 
+0004864758 00000 n 
+0004864911 00000 n 
+0004865064 00000 n 
+0004865217 00000 n 
+0004865370 00000 n 
+0004865522 00000 n 
+0004865675 00000 n 
+0004865828 00000 n 
+0004865978 00000 n 
+0004866130 00000 n 
+0004866283 00000 n 
+0004866433 00000 n 
+0004866585 00000 n 
+0004866738 00000 n 
+0004866890 00000 n 
+0004867042 00000 n 
+0004870993 00000 n 
+0004867257 00000 n 
+0004839005 00000 n 
+0004836883 00000 n 
+0004867192 00000 n 
+0004871144 00000 n 
+0004871296 00000 n 
+0004871447 00000 n 
+0004871598 00000 n 
+0004871751 00000 n 
+0004871904 00000 n 
+0004872056 00000 n 
+0004872209 00000 n 
+0004872362 00000 n 
+0004872514 00000 n 
+0004872666 00000 n 
+0004872819 00000 n 
+0004872971 00000 n 
+0004873124 00000 n 
+0004873275 00000 n 
+0004873428 00000 n 
+0004873580 00000 n 
+0004873732 00000 n 
+0004873885 00000 n 
+0004874037 00000 n 
+0004874188 00000 n 
+0004874339 00000 n 
+0004874492 00000 n 
+0004874644 00000 n 
+0004874797 00000 n 
+0004874950 00000 n 
+0004875102 00000 n 
+0004875255 00000 n 
+0004875408 00000 n 
+0004875560 00000 n 
+0004875711 00000 n 
+0004875863 00000 n 
+0004876015 00000 n 
+0004876167 00000 n 
+0004876320 00000 n 
+0004876473 00000 n 
+0004876625 00000 n 
+0004876778 00000 n 
+0004876929 00000 n 
+0004877082 00000 n 
+0004877235 00000 n 
+0004877387 00000 n 
+0004877540 00000 n 
+0004877691 00000 n 
+0004877843 00000 n 
+0004877995 00000 n 
+0004878148 00000 n 
+0004878299 00000 n 
+0004878450 00000 n 
+0004878602 00000 n 
+0004878755 00000 n 
+0004878907 00000 n 
+0004879058 00000 n 
+0004879208 00000 n 
+0004879359 00000 n 
+0004879512 00000 n 
+0004879664 00000 n 
+0004879817 00000 n 
+0004879968 00000 n 
+0004880120 00000 n 
+0004880273 00000 n 
+0004880424 00000 n 
+0004880577 00000 n 
+0004880730 00000 n 
+0004880883 00000 n 
+0004881035 00000 n 
+0004881188 00000 n 
+0004881341 00000 n 
+0004881494 00000 n 
+0004881646 00000 n 
+0004881799 00000 n 
+0004881952 00000 n 
+0004882103 00000 n 
+0004882254 00000 n 
+0004882406 00000 n 
+0004882557 00000 n 
+0004882708 00000 n 
+0004882860 00000 n 
+0004883013 00000 n 
+0004883166 00000 n 
+0004883319 00000 n 
+0004883471 00000 n 
+0004883624 00000 n 
+0004883777 00000 n 
+0004883930 00000 n 
+0004884082 00000 n 
+0004884234 00000 n 
+0004884385 00000 n 
+0004884537 00000 n 
+0004884689 00000 n 
+0004884842 00000 n 
+0004884994 00000 n 
+0004885145 00000 n 
+0004885297 00000 n 
+0004885447 00000 n 
+0004885599 00000 n 
+0004885752 00000 n 
+0004885905 00000 n 
+0004886058 00000 n 
+0004886210 00000 n 
+0004886362 00000 n 
+0004886514 00000 n 
+0004886666 00000 n 
+0004886819 00000 n 
+0004886971 00000 n 
+0004887123 00000 n 
+0004887276 00000 n 
+0004887429 00000 n 
+0004887581 00000 n 
+0004887734 00000 n 
+0004887886 00000 n 
+0004888039 00000 n 
+0004888191 00000 n 
+0004888343 00000 n 
+0004888495 00000 n 
+0004888648 00000 n 
+0004888801 00000 n 
+0004888953 00000 n 
+0004889106 00000 n 
+0004889259 00000 n 
+0004889412 00000 n 
+0004889563 00000 n 
+0004889716 00000 n 
+0004889869 00000 n 
+0004890021 00000 n 
+0004890174 00000 n 
+0004890327 00000 n 
+0004890479 00000 n 
+0004890632 00000 n 
+0004890785 00000 n 
+0004890938 00000 n 
+0004891090 00000 n 
+0004891243 00000 n 
+0004891395 00000 n 
+0004891548 00000 n 
+0004891700 00000 n 
+0004891852 00000 n 
+0004892005 00000 n 
+0004892157 00000 n 
+0004892310 00000 n 
+0004892462 00000 n 
+0004892614 00000 n 
+0004892767 00000 n 
+0004892920 00000 n 
+0004893072 00000 n 
+0004893225 00000 n 
+0004893377 00000 n 
+0004893529 00000 n 
+0004893681 00000 n 
+0004893833 00000 n 
+0004898535 00000 n 
+0004894048 00000 n 
+0004869344 00000 n 
+0004867374 00000 n 
+0004893983 00000 n 
+0004898685 00000 n 
+0004898837 00000 n 
+0004898990 00000 n 
+0004899143 00000 n 
+0004899296 00000 n 
+0004899446 00000 n 
+0004899598 00000 n 
+0004899750 00000 n 
+0004899902 00000 n 
+0004900055 00000 n 
+0004900206 00000 n 
+0004900359 00000 n 
+0004900512 00000 n 
+0004900663 00000 n 
+0004900816 00000 n 
+0004900967 00000 n 
+0004901119 00000 n 
+0004901270 00000 n 
+0004901422 00000 n 
+0004901574 00000 n 
+0004901725 00000 n 
+0004901878 00000 n 
+0004902031 00000 n 
+0004902183 00000 n 
+0004902336 00000 n 
+0004902488 00000 n 
+0004902641 00000 n 
+0004902794 00000 n 
+0004902944 00000 n 
+0004903097 00000 n 
+0004903250 00000 n 
+0004903402 00000 n 
+0004903555 00000 n 
+0004903707 00000 n 
+0004903860 00000 n 
+0004904013 00000 n 
+0004904165 00000 n 
+0004904317 00000 n 
+0004904470 00000 n 
+0004904622 00000 n 
+0004904775 00000 n 
+0004904924 00000 n 
+0004905074 00000 n 
+0004905225 00000 n 
+0004905376 00000 n 
+0004905526 00000 n 
+0004905678 00000 n 
+0004905830 00000 n 
+0004905982 00000 n 
+0004906134 00000 n 
+0004906286 00000 n 
+0004906438 00000 n 
+0004906590 00000 n 
+0004906743 00000 n 
+0004906896 00000 n 
+0004907048 00000 n 
+0004907201 00000 n 
+0004907353 00000 n 
+0004907506 00000 n 
+0004907659 00000 n 
+0004907811 00000 n 
+0004907963 00000 n 
+0004908116 00000 n 
+0004908268 00000 n 
+0004908420 00000 n 
+0004908572 00000 n 
+0004908725 00000 n 
+0004908876 00000 n 
+0004909029 00000 n 
+0004909181 00000 n 
+0004909333 00000 n 
+0004909485 00000 n 
+0004909638 00000 n 
+0004909789 00000 n 
+0004909940 00000 n 
+0004910093 00000 n 
+0004910246 00000 n 
+0004910398 00000 n 
+0004910550 00000 n 
+0004910703 00000 n 
+0004910856 00000 n 
+0004911009 00000 n 
+0004911162 00000 n 
+0004911314 00000 n 
+0004911466 00000 n 
+0004911619 00000 n 
+0004911772 00000 n 
+0004911925 00000 n 
+0004912078 00000 n 
+0004912231 00000 n 
+0004912383 00000 n 
+0004912534 00000 n 
+0004912684 00000 n 
+0004912835 00000 n 
+0004912987 00000 n 
+0004913139 00000 n 
+0004913292 00000 n 
+0004913444 00000 n 
+0004913597 00000 n 
+0004913749 00000 n 
+0004913901 00000 n 
+0004914052 00000 n 
+0004914204 00000 n 
+0004914353 00000 n 
+0004914502 00000 n 
+0004914651 00000 n 
+0004914801 00000 n 
+0004914954 00000 n 
+0004915107 00000 n 
+0004915259 00000 n 
+0004915412 00000 n 
+0004915565 00000 n 
+0004915718 00000 n 
+0004915870 00000 n 
+0004916023 00000 n 
+0004916176 00000 n 
+0004916328 00000 n 
+0004916481 00000 n 
+0004916633 00000 n 
+0004916785 00000 n 
+0004916937 00000 n 
+0004917089 00000 n 
+0004917242 00000 n 
+0004917395 00000 n 
+0004917547 00000 n 
+0004917699 00000 n 
+0004917852 00000 n 
+0004918005 00000 n 
+0004918158 00000 n 
+0004918311 00000 n 
+0004918464 00000 n 
+0004918617 00000 n 
+0004918770 00000 n 
+0004918922 00000 n 
+0004919074 00000 n 
+0004919226 00000 n 
+0004919378 00000 n 
+0004919531 00000 n 
+0004919682 00000 n 
+0004919832 00000 n 
+0004919985 00000 n 
+0004920137 00000 n 
+0004920289 00000 n 
+0004920441 00000 n 
+0004920593 00000 n 
+0004920745 00000 n 
+0004920897 00000 n 
+0004921049 00000 n 
+0004921201 00000 n 
+0004921353 00000 n 
+0004921505 00000 n 
+0004921657 00000 n 
+0004921809 00000 n 
+0004921960 00000 n 
+0004922111 00000 n 
+0004922260 00000 n 
+0004922411 00000 n 
+0004922563 00000 n 
+0004922715 00000 n 
+0004922866 00000 n 
+0004923018 00000 n 
+0004923170 00000 n 
+0004923323 00000 n 
+0004923475 00000 n 
+0004923627 00000 n 
+0004923779 00000 n 
+0004923932 00000 n 
+0004924082 00000 n 
+0004924234 00000 n 
+0004924385 00000 n 
+0004924537 00000 n 
+0004924690 00000 n 
+0004924842 00000 n 
+0004924995 00000 n 
+0004925146 00000 n 
+0004925298 00000 n 
+0004925448 00000 n 
+0004925600 00000 n 
+0004925751 00000 n 
+0004925903 00000 n 
+0004926056 00000 n 
+0004926207 00000 n 
+0004926359 00000 n 
+0004926512 00000 n 
+0004926665 00000 n 
+0004926818 00000 n 
+0004926971 00000 n 
+0004927124 00000 n 
+0004927276 00000 n 
+0004927428 00000 n 
+0004927580 00000 n 
+0004927732 00000 n 
+0004927884 00000 n 
+0004928036 00000 n 
+0004928188 00000 n 
+0004928340 00000 n 
+0004928492 00000 n 
+0004928645 00000 n 
+0004928798 00000 n 
+0004928951 00000 n 
+0004929102 00000 n 
+0004929254 00000 n 
+0004929407 00000 n 
+0004929558 00000 n 
+0004929709 00000 n 
+0004931297 00000 n 
+0004929924 00000 n 
+0004896336 00000 n 
+0004894165 00000 n 
+0004929859 00000 n 
+0004931447 00000 n 
+0004931600 00000 n 
+0004931753 00000 n 
+0004931906 00000 n 
+0004932058 00000 n 
+0004932211 00000 n 
+0004932363 00000 n 
+0004932515 00000 n 
+0004932666 00000 n 
+0004932819 00000 n 
+0004932972 00000 n 
+0004933125 00000 n 
+0004933275 00000 n 
+0004933428 00000 n 
+0004933580 00000 n 
+0004933732 00000 n 
+0004933885 00000 n 
+0004934033 00000 n 
+0004934186 00000 n 
+0004934337 00000 n 
+0004934488 00000 n 
+0004934641 00000 n 
+0004934792 00000 n 
+0004934943 00000 n 
+0004935091 00000 n 
+0004935308 00000 n 
+0004930898 00000 n 
+0004930041 00000 n 
+0004935243 00000 n 
+0004935425 00000 n 
+0005128171 00000 n 
+0004935452 00000 n 
+0004935913 00000 n 
+0004936154 00000 n 
+0004936487 00000 n 
+0004936836 00000 n 
+0004936873 00000 n 
+0004937085 00000 n 
+0004937562 00000 n 
+0004937959 00000 n 
+0004938348 00000 n 
+0004938924 00000 n 
+0004939302 00000 n 
+0004939881 00000 n 
+0004940461 00000 n 
+0004941353 00000 n 
+0004943023 00000 n 
+0004943262 00000 n 
+0004944750 00000 n 
+0004945001 00000 n 
+0004946855 00000 n 
+0004947087 00000 n 
+0004956582 00000 n 
+0004956889 00000 n 
+0004969207 00000 n 
+0004969582 00000 n 
+0004990129 00000 n 
+0004990788 00000 n 
+0005007601 00000 n 
+0005008150 00000 n 
+0005022133 00000 n 
+0005022681 00000 n 
+0005031477 00000 n 
+0005031778 00000 n 
+0005043067 00000 n 
+0005043622 00000 n 
+0005052151 00000 n 
+0005052559 00000 n 
+0005073092 00000 n 
+0005073708 00000 n 
+0005084376 00000 n 
+0005084679 00000 n 
+0005107780 00000 n 
+0005108537 00000 n 
+0005127604 00000 n 
+0005143130 00000 n 
+0005143258 00000 n 
+0005143386 00000 n 
+0005143514 00000 n 
+0005143642 00000 n 
+0005143770 00000 n 
+0005143898 00000 n 
+0005144026 00000 n 
+0005144154 00000 n 
+0005144284 00000 n 
+0005144418 00000 n 
+0005144552 00000 n 
+0005144686 00000 n 
+0005144820 00000 n 
+0005144954 00000 n 
+0005145088 00000 n 
+0005145171 00000 n 
+0005145306 00000 n 
+0005145441 00000 n 
+0005145556 00000 n 
+0005145643 00000 n 
+0005238541 00000 n 
+0005238767 00000 n 
+0005238955 00000 n 
+0005239149 00000 n 
+0005239335 00000 n 
+0005239520 00000 n 
+0005239706 00000 n 
+0005239891 00000 n 
+0005240077 00000 n 
+0005240262 00000 n 
+0005240448 00000 n 
+0005240632 00000 n 
+0005240816 00000 n 
+0005241002 00000 n 
+0005241187 00000 n 
+0005241373 00000 n 
+0005241558 00000 n 
+0005241744 00000 n 
+0005241929 00000 n 
+0005242115 00000 n 
+0005242300 00000 n 
+0005242486 00000 n 
+0005242667 00000 n 
+0005242853 00000 n 
+0005243037 00000 n 
+0005243221 00000 n 
+0005243407 00000 n 
+0005243592 00000 n 
+0005243778 00000 n 
+0005243963 00000 n 
+0005244149 00000 n 
+0005244334 00000 n 
+0005244520 00000 n 
+0005244705 00000 n 
+0005244891 00000 n 
+0005245075 00000 n 
+0005245259 00000 n 
+0005245445 00000 n 
+0005245630 00000 n 
+0005245816 00000 n 
+0005245999 00000 n 
+0005246185 00000 n 
+0005246370 00000 n 
+0005246556 00000 n 
+0005246741 00000 n 
+0005246927 00000 n 
+0005247112 00000 n 
+0005247298 00000 n 
+0005247482 00000 n 
+0005247666 00000 n 
+0005247852 00000 n 
+0005248037 00000 n 
+0005248223 00000 n 
+0005248408 00000 n 
+0005248594 00000 n 
+0005248779 00000 n 
+0005248965 00000 n 
+0005249150 00000 n 
+0005249336 00000 n 
+0005249517 00000 n 
+0005249703 00000 n 
+0005249887 00000 n 
+0005250071 00000 n 
+0005250257 00000 n 
+0005250442 00000 n 
+0005250628 00000 n 
+0005250813 00000 n 
+0005250999 00000 n 
+0005251184 00000 n 
+0005251370 00000 n 
+0005251555 00000 n 
+0005251741 00000 n 
+0005251925 00000 n 
+0005252109 00000 n 
+0005252295 00000 n 
+0005252480 00000 n 
+0005252666 00000 n 
+0005252849 00000 n 
+0005253035 00000 n 
+0005253220 00000 n 
+0005253406 00000 n 
+0005253595 00000 n 
+0005253787 00000 n 
+0005253977 00000 n 
+0005254169 00000 n 
+0005254358 00000 n 
+0005254547 00000 n 
+0005254739 00000 n 
+0005254929 00000 n 
+0005255121 00000 n 
+0005255311 00000 n 
+0005255503 00000 n 
+0005255693 00000 n 
+0005255885 00000 n 
+0005256075 00000 n 
+0005256267 00000 n 
+0005256452 00000 n 
+0005256644 00000 n 
+0005256833 00000 n 
+0005257022 00000 n 
+0005257214 00000 n 
+0005257404 00000 n 
+0005257596 00000 n 
+0005257786 00000 n 
+0005257978 00000 n 
+0005258168 00000 n 
+0005258360 00000 n 
+0005258550 00000 n 
+0005258742 00000 n 
+0005258931 00000 n 
+0005259120 00000 n 
+0005259312 00000 n 
+0005259502 00000 n 
+0005259694 00000 n 
+0005259881 00000 n 
+0005260073 00000 n 
+0005260263 00000 n 
+0005260455 00000 n 
+0005260645 00000 n 
+0005260837 00000 n 
+0005261027 00000 n 
+0005261219 00000 n 
+0005261408 00000 n 
+0005261597 00000 n 
+0005261789 00000 n 
+0005261979 00000 n 
+0005262171 00000 n 
+0005262361 00000 n 
+0005262553 00000 n 
+0005262743 00000 n 
+0005262935 00000 n 
+0005263125 00000 n 
+0005263317 00000 n 
+0005263502 00000 n 
+0005263694 00000 n 
+0005263883 00000 n 
+0005264072 00000 n 
+0005264264 00000 n 
+0005264454 00000 n 
+0005264646 00000 n 
+0005264836 00000 n 
+0005265028 00000 n 
+0005265218 00000 n 
+0005265410 00000 n 
+0005265600 00000 n 
+0005265792 00000 n 
+0005265981 00000 n 
+0005266170 00000 n 
+0005266352 00000 n 
+0005266530 00000 n 
+0005266734 00000 n 
+0005266947 00000 n 
+0005267170 00000 n 
+0005267400 00000 n 
+0005267567 00000 n 
+0005267739 00000 n 
+0005267918 00000 n 
+0005268145 00000 n 
+0005268356 00000 n 
+0005268577 00000 n 
+0005268793 00000 n 
+0005268985 00000 n 
+0005269187 00000 n 
+0005269382 00000 n 
+0005269584 00000 n 
+0005269782 00000 n 
+0005269981 00000 n 
+0005270183 00000 n 
+0005270383 00000 n 
+0005270585 00000 n 
+0005270778 00000 n 
+0005270998 00000 n 
+0005271192 00000 n 
+0005271393 00000 n 
+0005271613 00000 n 
+0005271816 00000 n 
+0005272034 00000 n 
+0005272252 00000 n 
+0005272470 00000 n 
+0005272683 00000 n 
+0005272895 00000 n 
+0005273114 00000 n 
+0005273338 00000 n 
+0005273559 00000 n 
+0005273771 00000 n 
+0005273960 00000 n 
+0005274137 00000 n 
+0005274383 00000 n 
+0005274585 00000 n 
+0005274798 00000 n 
+0005275016 00000 n 
+0005275229 00000 n 
+0005275439 00000 n 
+0005275647 00000 n 
+0005275857 00000 n 
+0005276066 00000 n 
+0005276268 00000 n 
+0005276481 00000 n 
+0005276713 00000 n 
+0005276933 00000 n 
+0005277143 00000 n 
+0005277365 00000 n 
+0005277610 00000 n 
+0005277861 00000 n 
+0005278127 00000 n 
+0005278393 00000 n 
+0005278659 00000 n 
+0005278925 00000 n 
+0005279191 00000 n 
+0005279457 00000 n 
+0005279723 00000 n 
+0005279989 00000 n 
+0005280255 00000 n 
+0005280521 00000 n 
+0005280787 00000 n 
+0005281053 00000 n 
+0005281319 00000 n 
+0005281585 00000 n 
+0005281851 00000 n 
+0005282117 00000 n 
+0005282383 00000 n 
+0005282649 00000 n 
+0005282915 00000 n 
+0005283181 00000 n 
+0005283447 00000 n 
+0005283713 00000 n 
+0005283979 00000 n 
+0005284245 00000 n 
+0005284511 00000 n 
+0005284777 00000 n 
+0005285043 00000 n 
+0005285309 00000 n 
+0005285575 00000 n 
+0005285841 00000 n 
+0005286107 00000 n 
+0005286373 00000 n 
+0005286639 00000 n 
+0005286905 00000 n 
+0005287171 00000 n 
+0005287437 00000 n 
+0005287703 00000 n 
+0005287969 00000 n 
+0005288235 00000 n 
+0005288493 00000 n 
+0005288743 00000 n 
+0005288993 00000 n 
+0005289243 00000 n 
+0005289493 00000 n 
+0005289743 00000 n 
+0005289993 00000 n 
+0005290255 00000 n 
+0005290521 00000 n 
+0005290787 00000 n 
+0005291053 00000 n 
+0005291319 00000 n 
+0005291585 00000 n 
+0005291851 00000 n 
+0005292117 00000 n 
+0005292383 00000 n 
+0005292649 00000 n 
+0005292917 00000 n 
+0005293189 00000 n 
+0005293461 00000 n 
+0005293733 00000 n 
+0005294005 00000 n 
+0005294277 00000 n 
+0005294549 00000 n 
+0005294821 00000 n 
+0005295093 00000 n 
+0005295365 00000 n 
+0005295637 00000 n 
+0005295909 00000 n 
+0005296181 00000 n 
+0005296453 00000 n 
+0005296725 00000 n 
+0005296997 00000 n 
+0005297269 00000 n 
+0005297541 00000 n 
+0005297813 00000 n 
+0005298085 00000 n 
+0005298357 00000 n 
+0005298629 00000 n 
+0005298901 00000 n 
+0005299173 00000 n 
+0005299440 00000 n 
+0005299690 00000 n 
+0005299948 00000 n 
+0005300220 00000 n 
+0005300492 00000 n 
+0005300764 00000 n 
+0005301036 00000 n 
+0005301297 00000 n 
+0005301552 00000 n 
+0005301824 00000 n 
+0005302096 00000 n 
+0005302368 00000 n 
+0005302640 00000 n 
+0005302912 00000 n 
+0005303184 00000 n 
+0005303456 00000 n 
+0005303728 00000 n 
+0005304000 00000 n 
+0005304261 00000 n 
+0005304512 00000 n 
+0005304762 00000 n 
+0005305012 00000 n 
+0005305262 00000 n 
+0005305518 00000 n 
+0005305763 00000 n 
+0005306002 00000 n 
+0005306254 00000 n 
+0005306504 00000 n 
+0005306756 00000 n 
+0005307014 00000 n 
+0005307264 00000 n 
+0005307518 00000 n 
+0005307776 00000 n 
+0005308033 00000 n 
+0005308288 00000 n 
+0005308538 00000 n 
+0005308788 00000 n 
+0005309037 00000 n 
+0005309287 00000 n 
+0005309537 00000 n 
+0005309787 00000 n 
+0005310036 00000 n 
+0005310286 00000 n 
+0005310536 00000 n 
+0005310791 00000 n 
+0005311049 00000 n 
+0005311301 00000 n 
+0005311553 00000 n 
+0005311811 00000 n 
+0005312068 00000 n 
+0005312318 00000 n 
+0005312571 00000 n 
+0005312829 00000 n 
+0005313086 00000 n 
+0005313340 00000 n 
+0005313590 00000 n 
+0005313840 00000 n 
+0005314090 00000 n 
+0005314340 00000 n 
+0005314590 00000 n 
+0005314840 00000 n 
+0005315092 00000 n 
+0005315350 00000 n 
+0005315607 00000 n 
+0005315860 00000 n 
+0005316113 00000 n 
+0005316371 00000 n 
+0005316628 00000 n 
+0005316880 00000 n 
+0005317134 00000 n 
+0005317386 00000 n 
+0005317633 00000 n 
+0005317875 00000 n 
+0005318128 00000 n 
+0005318384 00000 n 
+0005318634 00000 n 
+0005318884 00000 n 
+0005319134 00000 n 
+0005319387 00000 n 
+0005319639 00000 n 
+0005319897 00000 n 
+0005320154 00000 n 
+0005320404 00000 n 
+0005320657 00000 n 
+0005320915 00000 n 
+0005321172 00000 n 
+0005321430 00000 n 
+0005321687 00000 n 
+0005321945 00000 n 
+0005322201 00000 n 
+0005322457 00000 n 
+0005322715 00000 n 
+0005322965 00000 n 
+0005323215 00000 n 
+0005323468 00000 n 
+0005323722 00000 n 
+0005323972 00000 n 
+0005324230 00000 n 
+0005324487 00000 n 
+0005324745 00000 n 
+0005324998 00000 n 
+0005325248 00000 n 
+0005325503 00000 n 
+0005325755 00000 n 
+0005326008 00000 n 
+0005326266 00000 n 
+0005326523 00000 n 
+0005326773 00000 n 
+0005327023 00000 n 
+0005327277 00000 n 
+0005327531 00000 n 
+0005327781 00000 n 
+0005328036 00000 n 
+0005328286 00000 n 
+0005328537 00000 n 
+0005328787 00000 n 
+0005329039 00000 n 
+0005329289 00000 n 
+0005329541 00000 n 
+0005329791 00000 n 
+0005330043 00000 n 
+0005330293 00000 n 
+0005330543 00000 n 
+0005330795 00000 n 
+0005331045 00000 n 
+0005331295 00000 n 
+0005331545 00000 n 
+0005331795 00000 n 
+0005332045 00000 n 
+0005332295 00000 n 
+0005332545 00000 n 
+0005332795 00000 n 
+0005333045 00000 n 
+0005333295 00000 n 
+0005333545 00000 n 
+0005333795 00000 n 
+0005334045 00000 n 
+0005334287 00000 n 
+0005334538 00000 n 
+0005334796 00000 n 
+0005335048 00000 n 
+0005335298 00000 n 
+0005335548 00000 n 
+0005335798 00000 n 
+0005336050 00000 n 
+0005336308 00000 n 
+0005336565 00000 n 
+0005336823 00000 n 
+0005337078 00000 n 
+0005337328 00000 n 
+0005337578 00000 n 
+0005337827 00000 n 
+0005338069 00000 n 
+0005338316 00000 n 
+0005338566 00000 n 
+0005338816 00000 n 
+0005339066 00000 n 
+0005339315 00000 n 
+0005339563 00000 n 
+0005339805 00000 n 
+0005340053 00000 n 
+0005340303 00000 n 
+0005340553 00000 n 
+0005340803 00000 n 
+0005341053 00000 n 
+0005341303 00000 n 
+0005341552 00000 n 
+0005341803 00000 n 
+0005342053 00000 n 
+0005342303 00000 n 
+0005342553 00000 n 
+0005342803 00000 n 
+0005343052 00000 n 
+0005343302 00000 n 
+0005343552 00000 n 
+0005343801 00000 n 
+0005344051 00000 n 
+0005344299 00000 n 
+0005344546 00000 n 
+0005344790 00000 n 
+0005345040 00000 n 
+0005345290 00000 n 
+0005345540 00000 n 
+0005345790 00000 n 
+0005346040 00000 n 
+0005346290 00000 n 
+0005346544 00000 n 
+0005346794 00000 n 
+0005347048 00000 n 
+0005347304 00000 n 
+0005347554 00000 n 
+0005347804 00000 n 
+0005348058 00000 n 
+0005348313 00000 n 
+0005348563 00000 n 
+0005348819 00000 n 
+0005349074 00000 n 
+0005349324 00000 n 
+0005349576 00000 n 
+0005349826 00000 n 
+0005350076 00000 n 
+0005350328 00000 n 
+0005350578 00000 n 
+0005350832 00000 n 
+0005351082 00000 n 
+0005351332 00000 n 
+0005351582 00000 n 
+0005351838 00000 n 
+0005352094 00000 n 
+0005352349 00000 n 
+0005352599 00000 n 
+0005352857 00000 n 
+0005353114 00000 n 
+0005353372 00000 n 
+0005353627 00000 n 
+0005353877 00000 n 
+0005354127 00000 n 
+0005354383 00000 n 
+0005354635 00000 n 
+0005354885 00000 n 
+0005355131 00000 n 
+0005355377 00000 n 
+0005355627 00000 n 
+0005355880 00000 n 
+0005356132 00000 n 
+0005356382 00000 n 
+0005356632 00000 n 
+0005356882 00000 n 
+0005357132 00000 n 
+0005357382 00000 n 
+0005357632 00000 n 
+0005357882 00000 n 
+0005358132 00000 n 
+0005358382 00000 n 
+0005358627 00000 n 
+0005358869 00000 n 
+0005359119 00000 n 
+0005359369 00000 n 
+0005359619 00000 n 
+0005359868 00000 n 
+0005360118 00000 n 
+0005360367 00000 n 
+0005360611 00000 n 
+0005360858 00000 n 
+0005361108 00000 n 
+0005361358 00000 n 
+0005361608 00000 n 
+0005361858 00000 n 
+0005362108 00000 n 
+0005362364 00000 n 
+0005362620 00000 n 
+0005362878 00000 n 
+0005363135 00000 n 
+0005363390 00000 n 
+0005363640 00000 n 
+0005363890 00000 n 
+0005364140 00000 n 
+0005364394 00000 n 
+0005364652 00000 n 
+0005364909 00000 n 
+0005365163 00000 n 
+0005365413 00000 n 
+0005365669 00000 n 
+0005365925 00000 n 
+0005366183 00000 n 
+0005366437 00000 n 
+0005366687 00000 n 
+0005366943 00000 n 
+0005367193 00000 n 
+0005367443 00000 n 
+0005367696 00000 n 
+0005367954 00000 n 
+0005368211 00000 n 
+0005368467 00000 n 
+0005368717 00000 n 
+0005368970 00000 n 
+0005369220 00000 n 
+0005369476 00000 n 
+0005369732 00000 n 
+0005369990 00000 n 
+0005370247 00000 n 
+0005370497 00000 n 
+0005370753 00000 n 
+0005371009 00000 n 
+0005371267 00000 n 
+0005371524 00000 n 
+0005371782 00000 n 
+0005372032 00000 n 
+0005372288 00000 n 
+0005372542 00000 n 
+0005372792 00000 n 
+0005373050 00000 n 
+0005373307 00000 n 
+0005373565 00000 n 
+0005373822 00000 n 
+0005374078 00000 n 
+0005374328 00000 n 
+0005374583 00000 n 
+0005374839 00000 n 
+0005375089 00000 n 
+0005375339 00000 n 
+0005375589 00000 n 
+0005375843 00000 n 
+0005376101 00000 n 
+0005376354 00000 n 
+0005376604 00000 n 
+0005376854 00000 n 
+0005377104 00000 n 
+0005377354 00000 n 
+0005377604 00000 n 
+0005377854 00000 n 
+0005378112 00000 n 
+0005378369 00000 n 
+0005378627 00000 n 
+0005378884 00000 n 
+0005379142 00000 n 
+0005379399 00000 n 
+0005379657 00000 n 
+0005379914 00000 n 
+0005380169 00000 n 
+0005380423 00000 n 
+0005380681 00000 n 
+0005380938 00000 n 
+0005381193 00000 n 
+0005381443 00000 n 
+0005381698 00000 n 
+0005381948 00000 n 
+0005382198 00000 n 
+0005382448 00000 n 
+0005382702 00000 n 
+0005382952 00000 n 
+0005383210 00000 n 
+0005383467 00000 n 
+0005383721 00000 n 
+0005383971 00000 n 
+0005384215 00000 n 
+0005384457 00000 n 
+0005384707 00000 n 
+0005384963 00000 n 
+0005385227 00000 n 
+0005385490 00000 n 
+0005385746 00000 n 
+0005386002 00000 n 
+0005386258 00000 n 
+0005386514 00000 n 
+0005386774 00000 n 
+0005387038 00000 n 
+0005387301 00000 n 
+0005387565 00000 n 
+0005387827 00000 n 
+0005388089 00000 n 
+0005388353 00000 n 
+0005388616 00000 n 
+0005388880 00000 n 
+0005389141 00000 n 
+0005389397 00000 n 
+0005389653 00000 n 
+0005389909 00000 n 
+0005390168 00000 n 
+0005390432 00000 n 
+0005390695 00000 n 
+0005390954 00000 n 
+0005391206 00000 n 
+0005391456 00000 n 
+0005391705 00000 n 
+0005391952 00000 n 
+0005392194 00000 n 
+0005392444 00000 n 
+0005392693 00000 n 
+0005392943 00000 n 
+0005393192 00000 n 
+0005393438 00000 n 
+0005393687 00000 n 
+0005393943 00000 n 
+0005394199 00000 n 
+0005394460 00000 n 
+0005394716 00000 n 
+0005394972 00000 n 
+0005395228 00000 n 
+0005395484 00000 n 
+0005395745 00000 n 
+0005396009 00000 n 
+0005396265 00000 n 
+0005396521 00000 n 
+0005396777 00000 n 
+0005397033 00000 n 
+0005397289 00000 n 
+0005397545 00000 n 
+0005397801 00000 n 
+0005398057 00000 n 
+0005398321 00000 n 
+0005398584 00000 n 
+0005398848 00000 n 
+0005399111 00000 n 
+0005399375 00000 n 
+0005399638 00000 n 
+0005399902 00000 n 
+0005400165 00000 n 
+0005400429 00000 n 
+0005400691 00000 n 
+0005400953 00000 n 
+0005401217 00000 n 
+0005401477 00000 n 
+0005401733 00000 n 
+0005401989 00000 n 
+0005402245 00000 n 
+0005402496 00000 n 
+0005402746 00000 n 
+0005402995 00000 n 
+0005403245 00000 n 
+0005403493 00000 n 
+0005403735 00000 n 
+0005403995 00000 n 
+0005404251 00000 n 
+0005404507 00000 n 
+0005404763 00000 n 
+0005405020 00000 n 
+0005405276 00000 n 
+0005405538 00000 n 
+0005405800 00000 n 
+0005406058 00000 n 
+0005406316 00000 n 
+0005406580 00000 n 
+0005406841 00000 n 
+0005407097 00000 n 
+0005407359 00000 n 
+0005407621 00000 n 
+0005407885 00000 n 
+0005408148 00000 n 
+0005408412 00000 n 
+0005408675 00000 n 
+0005408937 00000 n 
+0005409193 00000 n 
+0005409446 00000 n 
+0005409702 00000 n 
+0005409959 00000 n 
+0005410215 00000 n 
+0005410471 00000 n 
+0005410735 00000 n 
+0005410998 00000 n 
+0005411262 00000 n 
+0005411525 00000 n 
+0005411789 00000 n 
+0005412052 00000 n 
+0005412316 00000 n 
+0005412579 00000 n 
+0005412843 00000 n 
+0005413101 00000 n 
+0005413365 00000 n 
+0005413625 00000 n 
+0005413881 00000 n 
+0005414142 00000 n 
+0005414406 00000 n 
+0005414668 00000 n 
+0005414930 00000 n 
+0005415194 00000 n 
+0005415457 00000 n 
+0005415721 00000 n 
+0005415984 00000 n 
+0005416248 00000 n 
+0005416511 00000 n 
+0005416775 00000 n 
+0005417036 00000 n 
+0005417292 00000 n 
+0005417550 00000 n 
+0005417806 00000 n 
+0005418062 00000 n 
+0005418318 00000 n 
+0005418574 00000 n 
+0005418830 00000 n 
+0005419086 00000 n 
+0005419342 00000 n 
+0005419594 00000 n 
+0005419844 00000 n 
+0005420093 00000 n 
+0005420340 00000 n 
+0005420585 00000 n 
+0005420841 00000 n 
+0005421097 00000 n 
+0005421359 00000 n 
+0005421615 00000 n 
+0005421874 00000 n 
+0005422130 00000 n 
+0005422386 00000 n 
+0005422642 00000 n 
+0005422898 00000 n 
+0005423156 00000 n 
+0005423412 00000 n 
+0005423669 00000 n 
+0005423927 00000 n 
+0005424184 00000 n 
+0005424440 00000 n 
+0005424698 00000 n 
+0005424954 00000 n 
+0005425210 00000 n 
+0005425470 00000 n 
+0005425734 00000 n 
+0005425992 00000 n 
+0005426248 00000 n 
+0005426507 00000 n 
+0005426771 00000 n 
+0005427031 00000 n 
+0005427287 00000 n 
+0005427551 00000 n 
+0005427814 00000 n 
+0005428078 00000 n 
+0005428341 00000 n 
+0005428605 00000 n 
+0005428868 00000 n 
+0005429132 00000 n 
+0005429395 00000 n 
+0005429659 00000 n 
+0005429921 00000 n 
+0005430183 00000 n 
+0005430447 00000 n 
+0005430701 00000 n 
+0005430956 00000 n 
+0005431220 00000 n 
+0005431483 00000 n 
+0005431742 00000 n 
+0005431998 00000 n 
+0005432254 00000 n 
+0005432510 00000 n 
+0005432766 00000 n 
+0005433027 00000 n 
+0005433291 00000 n 
+0005433553 00000 n 
+0005433814 00000 n 
+0005434070 00000 n 
+0005434329 00000 n 
+0005434587 00000 n 
+0005434851 00000 n 
+0005435114 00000 n 
+0005435374 00000 n 
+0005435628 00000 n 
+0005435892 00000 n 
+0005436155 00000 n 
+0005436416 00000 n 
+0005436672 00000 n 
+0005436928 00000 n 
+0005437184 00000 n 
+0005437442 00000 n 
+0005437702 00000 n 
+0005437958 00000 n 
+0005438214 00000 n 
+0005438465 00000 n 
+0005438726 00000 n 
+0005438990 00000 n 
+0005439252 00000 n 
+0005439514 00000 n 
+0005439772 00000 n 
+0005440031 00000 n 
+0005440292 00000 n 
+0005440548 00000 n 
+0005440804 00000 n 
+0005441060 00000 n 
+0005441316 00000 n 
+0005441568 00000 n 
+0005441824 00000 n 
+0005442075 00000 n 
+0005442331 00000 n 
+0005442587 00000 n 
+0005442839 00000 n 
+0005443095 00000 n 
+0005443353 00000 n 
+0005443612 00000 n 
+0005443870 00000 n 
+0005444129 00000 n 
+0005444385 00000 n 
+0005444639 00000 n 
+0005444895 00000 n 
+0005445151 00000 n 
+0005445412 00000 n 
+0005445676 00000 n 
+0005445938 00000 n 
+0005446198 00000 n 
+0005446456 00000 n 
+0005446720 00000 n 
+0005446983 00000 n 
+0005447247 00000 n 
+0005447503 00000 n 
+0005447764 00000 n 
+0005448028 00000 n 
+0005448290 00000 n 
+0005448552 00000 n 
+0005448816 00000 n 
+0005449079 00000 n 
+0005449337 00000 n 
+0005449593 00000 n 
+0005449849 00000 n 
+0005450099 00000 n 
+0005450355 00000 n 
+0005450611 00000 n 
+0005450875 00000 n 
+0005451138 00000 n 
+0005451402 00000 n 
+0005451665 00000 n 
+0005451924 00000 n 
+0005452184 00000 n 
+0005452448 00000 n 
+0005452711 00000 n 
+0005452975 00000 n 
+0005453237 00000 n 
+0005453499 00000 n 
+0005453763 00000 n 
+0005454026 00000 n 
+0005454290 00000 n 
+0005454553 00000 n 
+0005454817 00000 n 
+0005455080 00000 n 
+0005455337 00000 n 
+0005455593 00000 n 
+0005455850 00000 n 
+0005456108 00000 n 
+0005456372 00000 n 
+0005456630 00000 n 
+0005456889 00000 n 
+0005457148 00000 n 
+0005457406 00000 n 
+0005457670 00000 n 
+0005457931 00000 n 
+0005458187 00000 n 
+0005458442 00000 n 
+0005458702 00000 n 
+0005458958 00000 n 
+0005459207 00000 n 
+0005459457 00000 n 
+0005459706 00000 n 
+0005459952 00000 n 
+0005460194 00000 n 
+0005460436 00000 n 
+0005460676 00000 n 
+0005460920 00000 n 
+0005461162 00000 n 
+0005461406 00000 n 
+0005461652 00000 n 
+0005461894 00000 n 
+0005462136 00000 n 
+0005462377 00000 n 
+0005462619 00000 n 
+0005462860 00000 n 
+0005463103 00000 n 
+0005463345 00000 n 
+0005463590 00000 n 
+0005463832 00000 n 
+0005464074 00000 n 
+0005464289 00000 n 
+0005464489 00000 n 
+0005464695 00000 n 
+0005464920 00000 n 
+0005465111 00000 n 
+0005465297 00000 n 
+0005465482 00000 n 
+0005465668 00000 n 
+0005465853 00000 n 
+0005466039 00000 n 
+0005466223 00000 n 
+0005466407 00000 n 
+0005466593 00000 n 
+0005466778 00000 n 
+0005466964 00000 n 
+0005467149 00000 n 
+0005467335 00000 n 
+0005467520 00000 n 
+0005467706 00000 n 
+0005467891 00000 n 
+0005468077 00000 n 
+0005468261 00000 n 
+0005468443 00000 n 
+0005468627 00000 n 
+0005468811 00000 n 
+0005468997 00000 n 
+0005469182 00000 n 
+0005469368 00000 n 
+0005469553 00000 n 
+0005469739 00000 n 
+0005469924 00000 n 
+0005470110 00000 n 
+0005470295 00000 n 
+0005470481 00000 n 
+0005470665 00000 n 
+0005470851 00000 n 
+0005471043 00000 n 
+0005471233 00000 n 
+0005471425 00000 n 
+0005471615 00000 n 
+0005471807 00000 n 
+0005471994 00000 n 
+0005472186 00000 n 
+0005472376 00000 n 
+0005472568 00000 n 
+0005472758 00000 n 
+0005472950 00000 n 
+0005473139 00000 n 
+0005473328 00000 n 
+0005473520 00000 n 
+0005473710 00000 n 
+0005473902 00000 n 
+0005474092 00000 n 
+0005474284 00000 n 
+0005474474 00000 n 
+0005474666 00000 n 
+0005474856 00000 n 
+0005475048 00000 n 
+0005475237 00000 n 
+0005475424 00000 n 
+0005475613 00000 n 
+0005475802 00000 n 
+0005475994 00000 n 
+0005476184 00000 n 
+0005476376 00000 n 
+0005476566 00000 n 
+0005476758 00000 n 
+0005476948 00000 n 
+0005477140 00000 n 
+0005477330 00000 n 
+0005477522 00000 n 
+0005477711 00000 n 
+0005477900 00000 n 
+0005478092 00000 n 
+0005478282 00000 n 
+0005478474 00000 n 
+0005478664 00000 n 
+0005478856 00000 n 
+0005479043 00000 n 
+0005479221 00000 n 
+0005479398 00000 n 
+0005479576 00000 n 
+0005479753 00000 n 
+0005479931 00000 n 
+0005480108 00000 n 
+0005480286 00000 n 
+0005480462 00000 n 
+0005480638 00000 n 
+0005480816 00000 n 
+0005481002 00000 n 
+0005481192 00000 n 
+0005481378 00000 n 
+0005481572 00000 n 
+0005481774 00000 n 
+0005481980 00000 n 
+0005482223 00000 n 
+0005482500 00000 n 
+0005482751 00000 n 
+0005482919 00000 n 
+0005483134 00000 n 
+0005483353 00000 n 
+0005483547 00000 n 
+0005483813 00000 n 
+0005484046 00000 n 
+0005484253 00000 n 
+0005484454 00000 n 
+0005484666 00000 n 
+0005484878 00000 n 
+0005485093 00000 n 
+0005485314 00000 n 
+0005485532 00000 n 
+0005485750 00000 n 
+0005485968 00000 n 
+0005486186 00000 n 
+0005486404 00000 n 
+0005486618 00000 n 
+0005486831 00000 n 
+0005487054 00000 n 
+0005487272 00000 n 
+0005487496 00000 n 
+0005487720 00000 n 
+0005487940 00000 n 
+0005488158 00000 n 
+0005488376 00000 n 
+0005488594 00000 n 
+0005488812 00000 n 
+0005489030 00000 n 
+0005489248 00000 n 
+0005489455 00000 n 
+0005489673 00000 n 
+0005489891 00000 n 
+0005490109 00000 n 
+0005490327 00000 n 
+0005490534 00000 n 
+0005490747 00000 n 
+0005490965 00000 n 
+0005491183 00000 n 
+0005491401 00000 n 
+0005491622 00000 n 
+0005491842 00000 n 
+0005492060 00000 n 
+0005492275 00000 n 
+0005492479 00000 n 
+0005492683 00000 n 
+0005492887 00000 n 
+0005493098 00000 n 
+0005493287 00000 n 
+0005493525 00000 n 
+0005493763 00000 n 
+0005494006 00000 n 
+0005494258 00000 n 
+0005494510 00000 n 
+0005494762 00000 n 
+0005495014 00000 n 
+0005495266 00000 n 
+0005495518 00000 n 
+0005495770 00000 n 
+0005496027 00000 n 
+0005496284 00000 n 
+0005496542 00000 n 
+0005496800 00000 n 
+0005497058 00000 n 
+0005497316 00000 n 
+0005497574 00000 n 
+0005497832 00000 n 
+0005498090 00000 n 
+0005498348 00000 n 
+0005498606 00000 n 
+0005498860 00000 n 
+0005499115 00000 n 
+0005499373 00000 n 
+0005499631 00000 n 
+0005499889 00000 n 
+0005500147 00000 n 
+0005500410 00000 n 
+0005500684 00000 n 
+0005500950 00000 n 
+0005501216 00000 n 
+0005501482 00000 n 
+0005501748 00000 n 
+0005502014 00000 n 
+0005502286 00000 n 
+0005502558 00000 n 
+0005502826 00000 n 
+0005503087 00000 n 
+0005503345 00000 n 
+0005503603 00000 n 
+0005503867 00000 n 
+0005504131 00000 n 
+0005504389 00000 n 
+0005504647 00000 n 
+0005504905 00000 n 
+0005505163 00000 n 
+0005505421 00000 n 
+0005505679 00000 n 
+0005505937 00000 n 
+0005506195 00000 n 
+0005506453 00000 n 
+0005506711 00000 n 
+0005506969 00000 n 
+0005507227 00000 n 
+0005507485 00000 n 
+0005507740 00000 n 
+0005507984 00000 n 
+0005508235 00000 n 
+0005508493 00000 n 
+0005508751 00000 n 
+0005509009 00000 n 
+0005509267 00000 n 
+0005509525 00000 n 
+0005509783 00000 n 
+0005510036 00000 n 
+0005510280 00000 n 
+0005510531 00000 n 
+0005510789 00000 n 
+0005511047 00000 n 
+0005511305 00000 n 
+0005511554 00000 n 
+0005511798 00000 n 
+0005512042 00000 n 
+0005512286 00000 n 
+0005512530 00000 n 
+0005512774 00000 n 
+0005513052 00000 n 
+0005513346 00000 n 
+0005513638 00000 n 
+0005513931 00000 n 
+0005514229 00000 n 
+0005514527 00000 n 
+0005514825 00000 n 
+0005515123 00000 n 
+0005515416 00000 n 
+0005515703 00000 n 
+0005516001 00000 n 
+0005516299 00000 n 
+0005516602 00000 n 
+0005516905 00000 n 
+0005517203 00000 n 
+0005517501 00000 n 
+0005517799 00000 n 
+0005518097 00000 n 
+0005518395 00000 n 
+0005518682 00000 n 
+0005518980 00000 n 
+0005519278 00000 n 
+0005519576 00000 n 
+0005519871 00000 n 
+0005520164 00000 n 
+0005520455 00000 n 
+0005520739 00000 n 
+0005520960 00000 n 
+0005521162 00000 n 
+0005521364 00000 n 
+0005521566 00000 n 
+0005521768 00000 n 
+0005521967 00000 n 
+0005522164 00000 n 
+0005522372 00000 n 
+0005522578 00000 n 
+0005522779 00000 n 
+0005522964 00000 n 
+0005523086 00000 n 
+0005523217 00000 n 
+0005523341 00000 n 
+0005523466 00000 n 
+0005523591 00000 n 
+0005523716 00000 n 
+0005523840 00000 n 
+0005523965 00000 n 
+0005524090 00000 n 
+0005524215 00000 n 
+0005524340 00000 n 
+0005524464 00000 n 
+0005524589 00000 n 
+0005524714 00000 n 
+0005524839 00000 n 
+0005524963 00000 n 
+0005525088 00000 n 
+0005525213 00000 n 
+0005525338 00000 n 
+0005525462 00000 n 
+0005525587 00000 n 
+0005525712 00000 n 
+0005525837 00000 n 
+0005525960 00000 n 
+0005526085 00000 n 
+0005526214 00000 n 
+0005526343 00000 n 
+0005526469 00000 n 
+0005526598 00000 n 
+0005526737 00000 n 
+0005526865 00000 n 
+0005526994 00000 n 
+0005527135 00000 n 
+0005527269 00000 n 
+0005527408 00000 n 
+0005527553 00000 n 
+0005527698 00000 n 
+0005527843 00000 n 
+0005527988 00000 n 
+0005528133 00000 n 
+0005528278 00000 n 
+0005528421 00000 n 
+0005528564 00000 n 
+0005528709 00000 n 
+0005528854 00000 n 
+0005528999 00000 n 
+0005529144 00000 n 
+0005529289 00000 n 
+0005529434 00000 n 
+0005529579 00000 n 
+0005529724 00000 n 
+0005529867 00000 n 
+0005530009 00000 n 
+0005530151 00000 n 
+0005530292 00000 n 
+0005530433 00000 n 
+0005530575 00000 n 
+0005530717 00000 n 
+0005530858 00000 n 
+0005530999 00000 n 
+0005531140 00000 n 
+0005531281 00000 n 
+0005531423 00000 n 
+0005531565 00000 n 
+0005531707 00000 n 
+0005531849 00000 n 
+0005531991 00000 n 
+0005532132 00000 n 
+0005532273 00000 n 
+0005532414 00000 n 
+0005532555 00000 n 
+0005532696 00000 n 
+0005532837 00000 n 
+0005532978 00000 n 
+0005533119 00000 n 
+0005533260 00000 n 
+0005533401 00000 n 
+0005533541 00000 n 
+0005533681 00000 n 
+0005533822 00000 n 
+0005533963 00000 n 
+0005534104 00000 n 
+0005534246 00000 n 
+0005534388 00000 n 
+0005534527 00000 n 
+0005534666 00000 n 
+0005534807 00000 n 
+0005534948 00000 n 
+0005535089 00000 n 
+0005535230 00000 n 
+0005535372 00000 n 
+0005535514 00000 n 
+0005535656 00000 n 
+0005535797 00000 n 
+0005535939 00000 n 
+0005536081 00000 n 
+0005536223 00000 n 
+0005536365 00000 n 
+0005536506 00000 n 
+0005536647 00000 n 
+0005536790 00000 n 
+0005536933 00000 n 
+0005537075 00000 n 
+0005537217 00000 n 
+0005537359 00000 n 
+0005537501 00000 n 
+0005537644 00000 n 
+0005537787 00000 n 
+0005537929 00000 n 
+0005538070 00000 n 
+0005538211 00000 n 
+0005538352 00000 n 
+0005538493 00000 n 
+0005538635 00000 n 
+0005538777 00000 n 
+0005538919 00000 n 
+0005539060 00000 n 
+0005539202 00000 n 
+0005539344 00000 n 
+0005539486 00000 n 
+0005539628 00000 n 
+0005539770 00000 n 
+0005539913 00000 n 
+0005540055 00000 n 
+0005540198 00000 n 
+0005540340 00000 n 
+0005540481 00000 n 
+0005540622 00000 n 
+0005540764 00000 n 
+0005540905 00000 n 
+0005541047 00000 n 
+0005541189 00000 n 
+0005541332 00000 n 
+0005541475 00000 n 
+0005541617 00000 n 
+0005541759 00000 n 
+0005541902 00000 n 
+0005542044 00000 n 
+0005542185 00000 n 
+0005542325 00000 n 
+0005542466 00000 n 
+0005542607 00000 n 
+0005542748 00000 n 
+0005542890 00000 n 
+0005543032 00000 n 
+0005543174 00000 n 
+0005543316 00000 n 
+0005543459 00000 n 
+0005543602 00000 n 
+0005543744 00000 n 
+0005543886 00000 n 
+0005544029 00000 n 
+0005544170 00000 n 
+0005544310 00000 n 
+0005544450 00000 n 
+0005544578 00000 n 
+0005544705 00000 n 
+0005544830 00000 n 
+0005544955 00000 n 
+0005545079 00000 n 
+0005545204 00000 n 
+0005545329 00000 n 
+0005545454 00000 n 
+0005545578 00000 n 
+0005545703 00000 n 
+0005545828 00000 n 
+0005545953 00000 n 
+0005546077 00000 n 
+0005546202 00000 n 
+0005546325 00000 n 
+0005546451 00000 n 
+0005546587 00000 n 
+0005546731 00000 n 
+0005546870 00000 n 
+0005547004 00000 n 
+0005547137 00000 n 
+0005547271 00000 n 
+0005547404 00000 n 
+0005547538 00000 n 
+0005547671 00000 n 
+0005547811 00000 n 
+0005547954 00000 n 
+0005548097 00000 n 
+0005548239 00000 n 
+0005548383 00000 n 
+0005548529 00000 n 
+0005548673 00000 n 
+0005548816 00000 n 
+0005548959 00000 n 
+0005549102 00000 n 
+0005549245 00000 n 
+0005549388 00000 n 
+0005549530 00000 n 
+0005549677 00000 n 
+0005549830 00000 n 
+0005549983 00000 n 
+0005550135 00000 n 
+0005550275 00000 n 
+0005550401 00000 n 
+0005550495 00000 n 
+0005550625 00000 n 
+0005550750 00000 n 
+0005550875 00000 n 
+0005550999 00000 n 
+0005551128 00000 n 
+0005551267 00000 n 
+0005551412 00000 n 
+0005551557 00000 n 
+0005551700 00000 n 
+0005551841 00000 n 
+0005551983 00000 n 
+0005552124 00000 n 
+0005552265 00000 n 
+0005552404 00000 n 
+0005552543 00000 n 
+0005552685 00000 n 
+0005552827 00000 n 
+0005552969 00000 n 
+0005553110 00000 n 
+0005553252 00000 n 
+0005553393 00000 n 
+0005553535 00000 n 
+0005553677 00000 n 
+0005553817 00000 n 
+0005553959 00000 n 
+0005554093 00000 n 
+0005554218 00000 n 
+0005554343 00000 n 
+0005554471 00000 n 
+0005554609 00000 n 
+0005554752 00000 n 
+0005554894 00000 n 
+0005555026 00000 n 
+0005555100 00000 n 
+0005555241 00000 n 
+0005555384 00000 n 
+0005555525 00000 n 
+0005555666 00000 n 
+0005555808 00000 n 
+0005555922 00000 n 
+0005556053 00000 n 
+0005556095 00000 n 
+0005556302 00000 n 
 trailer
 << /Size 19886
 /Root 19884 0 R
 /Info 19885 0 R
-/ID [<8DF98C82DFC3E8134A71E53530D9901A> <8DF98C82DFC3E8134A71E53530D9901A>] >>
+/ID [<428F3DD64FA7099F863C9DC26738B535> <428F3DD64FA7099F863C9DC26738B535>] >>
 startxref
-5556627
+5556621
 %%EOF

Modified: branches/samba/experimental/docs/htmldocs/manpages/mount.cifs.8.html
===================================================================
--- branches/samba/experimental/docs/htmldocs/manpages/mount.cifs.8.html	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/docs/htmldocs/manpages/mount.cifs.8.html	2009-12-16 21:43:48 UTC (rev 3157)
@@ -49,7 +49,7 @@
 			</p><pre class="programlisting">
 		username=<em class="replaceable"><code>value</code></em>
 		password=<em class="replaceable"><code>value</code></em>
-		workgroup=<em class="replaceable"><code>value</code></em>
+		domain=<em class="replaceable"><code>value</code></em>
 </pre><p>
 This is preferred over having passwords in plaintext in a
 shared file, such as <code class="filename">/etc/fstab</code>. Be sure to protect any
@@ -205,11 +205,11 @@
 
 		</p></dd><dt><span class="term">wsize=<em class="replaceable"><code>arg</code></em></span></dt><dd><p>default network write size (default 57344)
                 maximum wsize currently allowed by CIFS is 57344 (fourteen
-                4096 byte pages)</p></dd><dt><span class="term">--verbose</span></dt><dd><p>Print additional debugging information for the mount. Note that this parameter must be specified before the -o. For example:</p><p>mount -t cifs //server/share /mnt --verbose -o user=username</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2532638"></a><h2>SERVICE FORMATTING AND DELIMITERS</h2><p>
+                4096 byte pages)</p></dd><dt><span class="term">--verbose</span></dt><dd><p>Print additional debugging information for the mount. Note that this parameter must be specified before the -o. For example:</p><p>mount -t cifs //server/share /mnt --verbose -o user=username</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2532637"></a><h2>SERVICE FORMATTING AND DELIMITERS</h2><p>
 		It's generally preferred to use forward slashes (/) as a delimiter in service names. They are considered to be the "universal delimiter" since they are generally not allowed to be embedded within path components on Windows machines and the client can convert them to blackslashes (\) unconditionally. Conversely, backslash characters are allowed by POSIX to be part of a path component, and can't be automatically converted in the same way.
 	</p><p>
 		mount.cifs will attempt to convert backslashes to forward slashes where it's able to do so, but it cannot do so in any path component following the sharename.
-	</p></div><div class="refsect1" lang="en"><a name="id2532661"></a><h2>FILE AND DIRECTORY OWNERSHIP AND PERMISSIONS</h2><p> The core CIFS protocol does not provide unix ownership
+	</p></div><div class="refsect1" lang="en"><a name="id2532660"></a><h2>FILE AND DIRECTORY OWNERSHIP AND PERMISSIONS</h2><p> The core CIFS protocol does not provide unix ownership
 information or mode for files and directories. Because of this, files
 and directories will generally appear to be owned by whatever values the
 uid= or gid= options are set, and will have permissions set to the
@@ -234,7 +234,7 @@
 	</p><p>It's also possible to override permission checking on the client
 altogether via the noperm option. Server-side permission checks cannot be
 overriden. The permission checks done by the server will always correspond to
-the credentials used to mount the share, and not necessarily to the user who is accessing the share.</p></div><div class="refsect1" lang="en"><a name="id2532717"></a><h2>ENVIRONMENT VARIABLES</h2><p>
+the credentials used to mount the share, and not necessarily to the user who is accessing the share.</p></div><div class="refsect1" lang="en"><a name="id2532716"></a><h2>ENVIRONMENT VARIABLES</h2><p>
 		The variable <span class="emphasis"><em>USER</em></span> may contain the username of the
 person to be used to authenticate to the server.
 The variable can be used to set both username and
@@ -246,12 +246,12 @@
 		The variable <span class="emphasis"><em>PASSWD_FILE</em></span> may contain the pathname
 of a file to read the password from. A single line of input is
 read and used as the password.
-	</p></div><div class="refsect1" lang="en"><a name="id2532749"></a><h2>NOTES</h2><p>This command may be used only by root, unless installed setuid, in which case the noeexec and nosuid mount flags are enabled. When installed as a setuid program, the program follows the conventions set forth by the mount program for user mounts.</p><p>
+	</p></div><div class="refsect1" lang="en"><a name="id2532748"></a><h2>NOTES</h2><p>This command may be used only by root, unless installed setuid, in which case the noeexec and nosuid mount flags are enabled. When installed as a setuid program, the program follows the conventions set forth by the mount program for user mounts.</p><p>
 	Some samba client tools like smbclient(8) honour client-side
 	configuration parameters present in smb.conf. Unlike those
 	client tools, <span class="emphasis"><em>mount.cifs</em></span> ignores smb.conf
 	completely.
-	</p></div><div class="refsect1" lang="en"><a name="id2532771"></a><h2>CONFIGURATION</h2><p>
+	</p></div><div class="refsect1" lang="en"><a name="id2532770"></a><h2>CONFIGURATION</h2><p>
 The primary mechanism for making configuration changes and for reading 
 debug information for the cifs vfs is via the Linux /proc filesystem.
 In the directory <code class="filename">/proc/fs/cifs</code> are various 
@@ -262,7 +262,7 @@
 cifs.ko which will list the options that may be passed to cifs during module
 installation (device driver load).
 For more information see the kernel file <code class="filename">fs/cifs/README</code>.
-</p></div><div class="refsect1" lang="en"><a name="id2532802"></a><h2>BUGS</h2><p>Mounting using the CIFS URL specification is currently not supported.
+</p></div><div class="refsect1" lang="en"><a name="id2532801"></a><h2>BUGS</h2><p>Mounting using the CIFS URL specification is currently not supported.
 	</p><p>The credentials file does not handle usernames or passwords with
 		leading space.</p><p>
 Note that the typical response to a bug report is a suggestion
@@ -270,11 +270,11 @@
 and always include which versions you use of relevant software
 when reporting bugs (minimum: mount.cifs (try mount.cifs -V), kernel (see /proc/version) and
 server type you are trying to contact.
-</p></div><div class="refsect1" lang="en"><a name="id2532827"></a><h2>VERSION</h2><p>This man page is correct for version 1.52 of 
-	the cifs vfs filesystem (roughly Linux kernel 2.6.24).</p></div><div class="refsect1" lang="en"><a name="id2532838"></a><h2>SEE ALSO</h2><p>
+</p></div><div class="refsect1" lang="en"><a name="id2532826"></a><h2>VERSION</h2><p>This man page is correct for version 1.52 of 
+	the cifs vfs filesystem (roughly Linux kernel 2.6.24).</p></div><div class="refsect1" lang="en"><a name="id2532837"></a><h2>SEE ALSO</h2><p>
 	Documentation/filesystems/cifs.txt and fs/cifs/README in the linux kernel
 	source tree may contain additional options and information.
-</p><p><a class="citerefentry" href="umount.cifs.8.html"><span class="citerefentry"><span class="refentrytitle">umount.cifs</span>(8)</span></a></p></div><div class="refsect1" lang="en"><a name="id2532859"></a><h2>AUTHOR</h2><p>Steve French</p><p>The syntax and manpage were loosely based on that of smbmount. It 
+</p><p><a class="citerefentry" href="umount.cifs.8.html"><span class="citerefentry"><span class="refentrytitle">umount.cifs</span>(8)</span></a></p></div><div class="refsect1" lang="en"><a name="id2532858"></a><h2>AUTHOR</h2><p>Steve French</p><p>The syntax and manpage were loosely based on that of smbmount. It 
 		was converted to Docbook/XML by Jelmer Vernooij.</p><p>The maintainer of the Linux cifs vfs and the userspace
 		tool <span class="emphasis"><em>mount.cifs</em></span> is <a class="ulink" href="mailto:sfrench at samba.org" target="_top">Steve French</a>.
 		The <a class="ulink" href="mailto:linux-cifs-client at lists.samba.org" target="_top">Linux CIFS Mailing list</a> 

Modified: branches/samba/experimental/docs-xml/manpages-3/mount.cifs.8.xml
===================================================================
--- branches/samba/experimental/docs-xml/manpages-3/mount.cifs.8.xml	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/docs-xml/manpages-3/mount.cifs.8.xml	2009-12-16 21:43:48 UTC (rev 3157)
@@ -121,7 +121,7 @@
 <programlisting>
 		username=<replaceable>value</replaceable>
 		password=<replaceable>value</replaceable>
-		workgroup=<replaceable>value</replaceable>
+		domain=<replaceable>value</replaceable>
 </programlisting>
 
 		<para>

Copied: branches/samba/experimental/docs-xml/smbdotconf/base/enablecorefiles.xml (from rev 3156, tags/samba/upstream_3.5.0~pre2/docs-xml/smbdotconf/base/enablecorefiles.xml)
===================================================================
--- branches/samba/experimental/docs-xml/smbdotconf/base/enablecorefiles.xml	                        (rev 0)
+++ branches/samba/experimental/docs-xml/smbdotconf/base/enablecorefiles.xml	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,15 @@
+<samba:parameter name="enable core files"
+                 context="G"
+                 basic="1" advanced="1" developer="1"
+                 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+
+<description>
+        <para>This parameter specifies whether core dumps should be written
+	on internal exits. Normally set to <constant>yes</constant>.
+	You should never need to change this.
+	</para>
+</description>
+
+	<value type="default">yes</value>
+	<value type="example">no</value>
+</samba:parameter>

Copied: branches/samba/experimental/docs-xml/smbdotconf/ldap/ldapderef.xml (from rev 3156, tags/samba/upstream_3.5.0~pre2/docs-xml/smbdotconf/ldap/ldapderef.xml)
===================================================================
--- branches/samba/experimental/docs-xml/smbdotconf/ldap/ldapderef.xml	                        (rev 0)
+++ branches/samba/experimental/docs-xml/smbdotconf/ldap/ldapderef.xml	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,21 @@
+<samba:parameter name="ldap deref" context="G" type="enum"
+	advanced="1" developer="1"
+	xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+
+<description>
+
+	<para>This option controls whether Samba should tell the LDAP library
+	to use a certain alias dereferencing method. The default is
+	<emphasis>auto</emphasis>, which means that the default setting of the
+	ldap client library will be kept. Other possible values are
+	<emphasis>never</emphasis>, <emphasis>finding</emphasis>,
+	<emphasis>searching</emphasis> and <emphasis>always</emphasis>. Grab
+	your LDAP manual for more information.
+	</para>
+
+</description>
+
+<value type="default">auto</value>
+<value type="example">searching</value>
+
+</samba:parameter>

Copied: branches/samba/experimental/docs-xml/smbdotconf/ldap/ldappagesize.xml (from rev 3156, tags/samba/upstream_3.5.0~pre2/docs-xml/smbdotconf/ldap/ldappagesize.xml)
===================================================================
--- branches/samba/experimental/docs-xml/smbdotconf/ldap/ldappagesize.xml	                        (rev 0)
+++ branches/samba/experimental/docs-xml/smbdotconf/ldap/ldappagesize.xml	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,18 @@
+<samba:parameter name="ldap page size"
+	context="G"
+	type="integer"
+	advanced="1" developer="1"
+        xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>
+	This parameter specifies the number of entries per page.
+	</para>
+
+	<para>If the LDAP server supports paged results, clients can
+	request	subsets of search results (pages) instead of the entire list.
+	This parameter specifies the size of these pages.
+	</para>
+</description>
+<value type="default">1024</value>
+<value type="example">512</value>
+</samba:parameter>

Copied: branches/samba/experimental/docs-xml/smbdotconf/misc/cachedirectory.xml (from rev 3156, tags/samba/upstream_3.5.0~pre2/docs-xml/smbdotconf/misc/cachedirectory.xml)
===================================================================
--- branches/samba/experimental/docs-xml/smbdotconf/misc/cachedirectory.xml	                        (rev 0)
+++ branches/samba/experimental/docs-xml/smbdotconf/misc/cachedirectory.xml	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,22 @@
+<samba:parameter name="cache directory"
+                 context="G"
+                 advanced="1" developer="1"
+		 type="string"
+                 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>Usually, most of the TDB files are stored in the <parameter
+	moreinfo="none">lock directory</parameter>. Since Samba 3.4.0, it is
+	possible to differentiate between TDB files with persistent data and
+	TDB files with non-persistent data using the
+	<parameter moreinfo="none">state directory</parameter> and the
+	<parameter moreinfo="none">cache directory</parameter> options.
+	</para>
+
+	<para> This option specifies the directory where TDB files containing
+	non-persistent data will be stored.
+	</para>
+</description>
+
+<value type="default">${prefix}/var/locks</value>
+<value type="example">/var/run/samba/locks/cache</value>
+</samba:parameter>

Copied: branches/samba/experimental/docs-xml/smbdotconf/misc/directorynamecachesize.xml (from rev 3156, tags/samba/upstream_3.5.0~pre2/docs-xml/smbdotconf/misc/directorynamecachesize.xml)
===================================================================
--- branches/samba/experimental/docs-xml/smbdotconf/misc/directorynamecachesize.xml	                        (rev 0)
+++ branches/samba/experimental/docs-xml/smbdotconf/misc/directorynamecachesize.xml	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,14 @@
+<samba:parameter name="directory name cache size"
+		 context="S"
+		 type="integer"
+		 advanced="1"
+		 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>
+	This parameter specifies the the size of the directory name cache.
+	It will be needed to turn this off for *BSD systems.
+	</para>
+
+</description>
+<value type="default">100</value>
+</samba:parameter>

Modified: branches/samba/experimental/docs-xml/smbdotconf/misc/dosfiletimes.xml
===================================================================
--- branches/samba/experimental/docs-xml/smbdotconf/misc/dosfiletimes.xml	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/docs-xml/smbdotconf/misc/dosfiletimes.xml	2009-12-16 21:43:48 UTC (rev 3157)
@@ -6,12 +6,10 @@
 	<para>Under DOS and Windows, if a user can write to a 
 	file they can change the timestamp on it. Under POSIX semantics, 
 	only the owner of the file or root may change the timestamp. By 
-	default, Samba runs with POSIX semantics and refuses to change the 
+	default, Samba emulates the DOS semantics and allows to change the 
 	timestamp on a file if the user <command moreinfo="none">smbd</command> is acting 
-	on behalf of is not the file owner. Setting this option to <constant>
-	yes</constant> allows DOS semantics and <citerefentry><refentrytitle>smbd</refentrytitle>
-	<manvolnum>8</manvolnum></citerefentry> will change the file 
-	timestamp as DOS requires. Due to changes in Microsoft Office 2000 and beyond,
+	on behalf has write permissions.
+	Due to changes in Microsoft Office 2000 and beyond,
 	the default for this parameter has been changed from "no" to "yes" in Samba 3.0.14
 	and above. Microsoft Excel will display dialog box warnings about the file being
 	changed by another user if this parameter is not set to "yes" and files are being

Modified: branches/samba/experimental/docs-xml/smbdotconf/misc/fakedirectorycreatetimes.xml
===================================================================
--- branches/samba/experimental/docs-xml/smbdotconf/misc/fakedirectorycreatetimes.xml	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/docs-xml/smbdotconf/misc/fakedirectorycreatetimes.xml	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1,5 +1,5 @@
 <samba:parameter name="fake directory create times"
-		 context="G"
+		 context="S"
 		 type="boolean"
 		 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
 <description>

Copied: branches/samba/experimental/docs-xml/smbdotconf/misc/statedirectory.xml (from rev 3156, tags/samba/upstream_3.5.0~pre2/docs-xml/smbdotconf/misc/statedirectory.xml)
===================================================================
--- branches/samba/experimental/docs-xml/smbdotconf/misc/statedirectory.xml	                        (rev 0)
+++ branches/samba/experimental/docs-xml/smbdotconf/misc/statedirectory.xml	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,22 @@
+<samba:parameter name="state directory"
+                 context="G"
+                 advanced="1" developer="1"
+		 type="string"
+                 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>Usually, most of the TDB files are stored in the
+	<parameter moreinfo="none">lock directory</parameter>. Since
+	Samba 3.4.0, it is possible to differentiate between TDB files
+	with persistent data and TDB files with non-persistent data using
+	the <parameter moreinfo="none">state directory</parameter> and the
+	<parameter moreinfo="none">cache directory</parameter> options.
+	</para>
+
+	<para> This option specifies the directory where TDB files containing
+	persistent data will be stored.
+	</para>
+</description>
+
+<value type="default">${prefix}/var/locks</value>
+<value type="example">/var/run/samba/locks/state</value>
+</samba:parameter>

Copied: branches/samba/experimental/docs-xml/smbdotconf/tuning/aiowritebehind.xml (from rev 3156, tags/samba/upstream_3.5.0~pre2/docs-xml/smbdotconf/tuning/aiowritebehind.xml)
===================================================================
--- branches/samba/experimental/docs-xml/smbdotconf/tuning/aiowritebehind.xml	                        (rev 0)
+++ branches/samba/experimental/docs-xml/smbdotconf/tuning/aiowritebehind.xml	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,23 @@
+<samba:parameter name="aio write behind"
+                 context="S"
+		 type="string"
+                 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>If Samba has been built with asynchronous I/O support,
+	Samba will not wait until write requests are finished before returning
+	the result to the client for files listed in this parameter.
+	Instead, Samba will immediately return that the write
+	request has been finished successfully, no matter if the
+	operation will succeed or not. This might speed up clients without
+	aio support, but is really dangerous, because data could be lost
+	and files could be damaged.
+	</para>
+	<para>
+	The syntax is identical to the <smbconfoption name="veto files"/>
+	parameter.
+	</para>
+</description>
+
+<value type="default"/>
+<value type="example">/*.tmp/</value>
+</samba:parameter>

Modified: branches/samba/experimental/examples/VFS/skel_opaque.c
===================================================================
--- branches/samba/experimental/examples/VFS/skel_opaque.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/examples/VFS/skel_opaque.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -313,7 +313,7 @@
 	return false;
 }
 
-static int skel_kernel_flock(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 share_mode)
+static int skel_kernel_flock(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 share_mode, uint32 access_mask)
 {
 	errno = ENOSYS;
 	return -1;
@@ -454,8 +454,10 @@
 }
 
 static NTSTATUS skel_translate_name(struct vfs_handle_struct *handle,
-				char **mapped_name,
-				enum vfs_translate_direction direction)
+				const char *mapped_name,
+				enum vfs_translate_direction direction,
+				TALLOC_CTX *mem_ctx,
+				char **pmapped_name)
 {
 	return NT_STATUS_NOT_IMPLEMENTED;
 }

Modified: branches/samba/experimental/examples/VFS/skel_transparent.c
===================================================================
--- branches/samba/experimental/examples/VFS/skel_transparent.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/examples/VFS/skel_transparent.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -295,9 +295,9 @@
 	return SMB_VFS_NEXT_LOCK(handle, fsp, op, offset, count, type);
 }
 
-static int skel_kernel_flock(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 share_mode)
+static int skel_kernel_flock(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 share_mode, uint32 access_mask)
 {
-	return SMB_VFS_NEXT_KERNEL_FLOCK(handle, fsp, share_mode);
+	return SMB_VFS_NEXT_KERNEL_FLOCK(handle, fsp, share_mode, access_mask);
 }
 
 static int skel_linux_setlease(struct vfs_handle_struct *handle, struct files_struct *fsp, int leasetype)
@@ -443,12 +443,13 @@
 }
 
 static NTSTATUS skel_translate_name(struct vfs_handle_struct *handle,
-				char **mapped_name,
-				enum vfs_translate_direction direction)
+				const char *mapped_name,
+				enum vfs_translate_direction direction,
+				TALLOC_CTX *mem_ctx,
+				char **pmapped_name)
 {
-	return SMB_VFS_NEXT_TRANSLATE_NAME(handle,
-					mapped_name,
-					direction);
+	return SMB_VFS_NEXT_TRANSLATE_NAME(handle, mapped_name, direction,
+					   mem_ctx, pmapped_name);
 }
 
 static NTSTATUS skel_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp,

Modified: branches/samba/experimental/lib/tevent/tevent_internal.h
===================================================================
--- branches/samba/experimental/lib/tevent/tevent_internal.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/lib/tevent/tevent_internal.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -142,7 +142,7 @@
 		struct tevent_immediate *trigger;
 
 		/**
-		 * @brief the timer event if tevent_req_set_timeout was used
+		 * @brief the timer event if tevent_req_set_endtime was used
 		 *
 		 */
 		struct tevent_timer *timer;

Modified: branches/samba/experimental/librpc/gen_ndr/cli_spoolss.c
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/cli_spoolss.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/cli_spoolss.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -11057,7 +11057,7 @@
 	}
 
 	/* Copy out parameters */
-	memcpy(discard_const_p(uint8_t, state->orig.out.value_name), state->tmp.out.value_name, (state->tmp.in.value_offered / 2) * sizeof(*state->orig.out.value_name));
+	memcpy(discard_const_p(uint8_t *, state->orig.out.value_name), state->tmp.out.value_name, (state->tmp.in.value_offered / 2) * sizeof(*state->orig.out.value_name));
 	*state->orig.out.value_needed = *state->tmp.out.value_needed;
 	*state->orig.out.type = *state->tmp.out.type;
 	memcpy(state->orig.out.data, state->tmp.out.data, (state->tmp.in.data_offered) * sizeof(*state->orig.out.data));
@@ -11132,7 +11132,7 @@
 	}
 
 	/* Return variables */
-	memcpy(discard_const_p(uint8_t, value_name), r.out.value_name, (r.in.value_offered / 2) * sizeof(*value_name));
+	memcpy(discard_const_p(uint8_t *, value_name), r.out.value_name, (r.in.value_offered / 2) * sizeof(*value_name));
 	*value_needed = *r.out.value_needed;
 	*type = *r.out.type;
 	memcpy(data, r.out.data, (r.in.data_offered) * sizeof(*data));
@@ -11710,8 +11710,8 @@
 							const char *_key_name /* [in] [charset(UTF16)] */,
 							const char *_value_name /* [in] [charset(UTF16)] */,
 							enum winreg_Type _type /* [in]  */,
-							uint8_t *_buffer /* [in] [ref,size_is(offered)] */,
-							uint32_t _offered /* [in]  */)
+							union spoolss_PrinterData _data /* [in] [subcontext(4),switch_is(type)] */,
+							uint32_t __offered /* [in] [value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] */)
 {
 	struct tevent_req *req;
 	struct rpccli_spoolss_SetPrinterDataEx_state *state;
@@ -11730,8 +11730,8 @@
 	state->orig.in.key_name = _key_name;
 	state->orig.in.value_name = _value_name;
 	state->orig.in.type = _type;
-	state->orig.in.buffer = _buffer;
-	state->orig.in.offered = _offered;
+	state->orig.in.data = _data;
+	state->orig.in._offered = __offered;
 
 	/* Out parameters */
 
@@ -11814,8 +11814,8 @@
 					 const char *key_name /* [in] [charset(UTF16)] */,
 					 const char *value_name /* [in] [charset(UTF16)] */,
 					 enum winreg_Type type /* [in]  */,
-					 uint8_t *buffer /* [in] [ref,size_is(offered)] */,
-					 uint32_t offered /* [in]  */,
+					 union spoolss_PrinterData data /* [in] [subcontext(4),switch_is(type)] */,
+					 uint32_t _offered /* [in] [value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] */,
 					 WERROR *werror)
 {
 	struct spoolss_SetPrinterDataEx r;
@@ -11826,8 +11826,8 @@
 	r.in.key_name = key_name;
 	r.in.value_name = value_name;
 	r.in.type = type;
-	r.in.buffer = buffer;
-	r.in.offered = offered;
+	r.in.data = data;
+	r.in._offered = _offered;
 
 	status = cli->dispatch(cli,
 				mem_ctx,
@@ -11868,9 +11868,9 @@
 							struct policy_handle *_handle /* [in] [ref] */,
 							const char *_key_name /* [in] [charset(UTF16)] */,
 							const char *_value_name /* [in] [charset(UTF16)] */,
+							uint32_t _offered /* [in]  */,
 							enum winreg_Type *_type /* [out] [ref] */,
-							uint8_t *_buffer /* [out] [ref,size_is(offered)] */,
-							uint32_t _offered /* [in]  */,
+							union spoolss_PrinterData *_data /* [out] [subcontext_size(offered),ref,subcontext(4),switch_is(*type)] */,
 							uint32_t *_needed /* [out] [ref] */)
 {
 	struct tevent_req *req;
@@ -11893,7 +11893,7 @@
 
 	/* Out parameters */
 	state->orig.out.type = _type;
-	state->orig.out.buffer = _buffer;
+	state->orig.out.data = _data;
 	state->orig.out.needed = _needed;
 
 	/* Result */
@@ -11943,7 +11943,7 @@
 
 	/* Copy out parameters */
 	*state->orig.out.type = *state->tmp.out.type;
-	memcpy(state->orig.out.buffer, state->tmp.out.buffer, (state->tmp.in.offered) * sizeof(*state->orig.out.buffer));
+	*state->orig.out.data = *state->tmp.out.data;
 	*state->orig.out.needed = *state->tmp.out.needed;
 
 	/* Copy result */
@@ -11983,9 +11983,9 @@
 					 struct policy_handle *handle /* [in] [ref] */,
 					 const char *key_name /* [in] [charset(UTF16)] */,
 					 const char *value_name /* [in] [charset(UTF16)] */,
+					 uint32_t offered /* [in]  */,
 					 enum winreg_Type *type /* [out] [ref] */,
-					 uint8_t *buffer /* [out] [ref,size_is(offered)] */,
-					 uint32_t offered /* [in]  */,
+					 union spoolss_PrinterData *data /* [out] [subcontext_size(offered),ref,subcontext(4),switch_is(*type)] */,
 					 uint32_t *needed /* [out] [ref] */,
 					 WERROR *werror)
 {
@@ -12014,7 +12014,7 @@
 
 	/* Return variables */
 	*type = *r.out.type;
-	memcpy(buffer, r.out.buffer, (r.in.offered) * sizeof(*buffer));
+	*data = *r.out.data;
 	*needed = *r.out.needed;
 
 	/* Return result */
@@ -12207,7 +12207,8 @@
 						      struct rpc_pipe_client *cli,
 						      struct policy_handle *_handle /* [in] [ref] */,
 						      const char *_key_name /* [in] [charset(UTF16)] */,
-						      uint16_t *_key_buffer /* [out] [ref,size_is(offered/2)] */,
+						      uint32_t *__ndr_size /* [out] [ref] */,
+						      union spoolss_KeyNames *_key_buffer /* [out] [subcontext_size(*_ndr_size*2),ref,subcontext(0),switch_is(*_ndr_size)] */,
 						      uint32_t _offered /* [in]  */,
 						      uint32_t *_needed /* [out] [ref] */)
 {
@@ -12229,6 +12230,7 @@
 	state->orig.in.offered = _offered;
 
 	/* Out parameters */
+	state->orig.out._ndr_size = __ndr_size;
 	state->orig.out.key_buffer = _key_buffer;
 	state->orig.out.needed = _needed;
 
@@ -12278,7 +12280,8 @@
 	}
 
 	/* Copy out parameters */
-	memcpy(state->orig.out.key_buffer, state->tmp.out.key_buffer, (state->tmp.in.offered / 2) * sizeof(*state->orig.out.key_buffer));
+	*state->orig.out._ndr_size = *state->tmp.out._ndr_size;
+	*state->orig.out.key_buffer = *state->tmp.out.key_buffer;
 	*state->orig.out.needed = *state->tmp.out.needed;
 
 	/* Copy result */
@@ -12317,7 +12320,8 @@
 				       TALLOC_CTX *mem_ctx,
 				       struct policy_handle *handle /* [in] [ref] */,
 				       const char *key_name /* [in] [charset(UTF16)] */,
-				       uint16_t *key_buffer /* [out] [ref,size_is(offered/2)] */,
+				       uint32_t *_ndr_size /* [out] [ref] */,
+				       union spoolss_KeyNames *key_buffer /* [out] [subcontext_size(*_ndr_size*2),ref,subcontext(0),switch_is(*_ndr_size)] */,
 				       uint32_t offered /* [in]  */,
 				       uint32_t *needed /* [out] [ref] */,
 				       WERROR *werror)
@@ -12345,7 +12349,8 @@
 	}
 
 	/* Return variables */
-	memcpy(key_buffer, r.out.key_buffer, (r.in.offered / 2) * sizeof(*key_buffer));
+	*_ndr_size = *r.out._ndr_size;
+	*key_buffer = *r.out.key_buffer;
 	*needed = *r.out.needed;
 
 	/* Return result */
@@ -15678,7 +15683,7 @@
 
 	/* Copy out parameters */
 	if (state->orig.out.driver_package_cab && state->tmp.out.driver_package_cab) {
-		memcpy(discard_const_p(uint8_t, state->orig.out.driver_package_cab), state->tmp.out.driver_package_cab, (state->tmp.in.driver_package_cab_size) * sizeof(*state->orig.out.driver_package_cab));
+		memcpy(discard_const_p(uint8_t *, state->orig.out.driver_package_cab), state->tmp.out.driver_package_cab, (state->tmp.in.driver_package_cab_size) * sizeof(*state->orig.out.driver_package_cab));
 	}
 	*state->orig.out.required = *state->tmp.out.required;
 
@@ -15752,7 +15757,7 @@
 
 	/* Return variables */
 	if (driver_package_cab && r.out.driver_package_cab) {
-		memcpy(discard_const_p(uint8_t, driver_package_cab), r.out.driver_package_cab, (r.in.driver_package_cab_size) * sizeof(*driver_package_cab));
+		memcpy(discard_const_p(uint8_t *, driver_package_cab), r.out.driver_package_cab, (r.in.driver_package_cab_size) * sizeof(*driver_package_cab));
 	}
 	*required = *r.out.required;
 

Modified: branches/samba/experimental/librpc/gen_ndr/cli_spoolss.h
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/cli_spoolss.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/cli_spoolss.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1199,8 +1199,8 @@
 							const char *_key_name /* [in] [charset(UTF16)] */,
 							const char *_value_name /* [in] [charset(UTF16)] */,
 							enum winreg_Type _type /* [in]  */,
-							uint8_t *_buffer /* [in] [ref,size_is(offered)] */,
-							uint32_t _offered /* [in]  */);
+							union spoolss_PrinterData _data /* [in] [subcontext(4),switch_is(type)] */,
+							uint32_t __offered /* [in] [value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] */);
 NTSTATUS rpccli_spoolss_SetPrinterDataEx_recv(struct tevent_req *req,
 					      TALLOC_CTX *mem_ctx,
 					      WERROR *result);
@@ -1210,8 +1210,8 @@
 					 const char *key_name /* [in] [charset(UTF16)] */,
 					 const char *value_name /* [in] [charset(UTF16)] */,
 					 enum winreg_Type type /* [in]  */,
-					 uint8_t *buffer /* [in] [ref,size_is(offered)] */,
-					 uint32_t offered /* [in]  */,
+					 union spoolss_PrinterData data /* [in] [subcontext(4),switch_is(type)] */,
+					 uint32_t _offered /* [in] [value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] */,
 					 WERROR *werror);
 struct tevent_req *rpccli_spoolss_GetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
 							struct tevent_context *ev,
@@ -1219,9 +1219,9 @@
 							struct policy_handle *_handle /* [in] [ref] */,
 							const char *_key_name /* [in] [charset(UTF16)] */,
 							const char *_value_name /* [in] [charset(UTF16)] */,
+							uint32_t _offered /* [in]  */,
 							enum winreg_Type *_type /* [out] [ref] */,
-							uint8_t *_buffer /* [out] [ref,size_is(offered)] */,
-							uint32_t _offered /* [in]  */,
+							union spoolss_PrinterData *_data /* [out] [subcontext_size(offered),ref,subcontext(4),switch_is(*type)] */,
 							uint32_t *_needed /* [out] [ref] */);
 NTSTATUS rpccli_spoolss_GetPrinterDataEx_recv(struct tevent_req *req,
 					      TALLOC_CTX *mem_ctx,
@@ -1231,9 +1231,9 @@
 					 struct policy_handle *handle /* [in] [ref] */,
 					 const char *key_name /* [in] [charset(UTF16)] */,
 					 const char *value_name /* [in] [charset(UTF16)] */,
+					 uint32_t offered /* [in]  */,
 					 enum winreg_Type *type /* [out] [ref] */,
-					 uint8_t *buffer /* [out] [ref,size_is(offered)] */,
-					 uint32_t offered /* [in]  */,
+					 union spoolss_PrinterData *data /* [out] [subcontext_size(offered),ref,subcontext(4),switch_is(*type)] */,
 					 uint32_t *needed /* [out] [ref] */,
 					 WERROR *werror);
 struct tevent_req *rpccli_spoolss_EnumPrinterDataEx_send(TALLOC_CTX *mem_ctx,
@@ -1262,7 +1262,8 @@
 						      struct rpc_pipe_client *cli,
 						      struct policy_handle *_handle /* [in] [ref] */,
 						      const char *_key_name /* [in] [charset(UTF16)] */,
-						      uint16_t *_key_buffer /* [out] [ref,size_is(offered/2)] */,
+						      uint32_t *__ndr_size /* [out] [ref] */,
+						      union spoolss_KeyNames *_key_buffer /* [out] [subcontext_size(*_ndr_size*2),ref,subcontext(0),switch_is(*_ndr_size)] */,
 						      uint32_t _offered /* [in]  */,
 						      uint32_t *_needed /* [out] [ref] */);
 NTSTATUS rpccli_spoolss_EnumPrinterKey_recv(struct tevent_req *req,
@@ -1272,7 +1273,8 @@
 				       TALLOC_CTX *mem_ctx,
 				       struct policy_handle *handle /* [in] [ref] */,
 				       const char *key_name /* [in] [charset(UTF16)] */,
-				       uint16_t *key_buffer /* [out] [ref,size_is(offered/2)] */,
+				       uint32_t *_ndr_size /* [out] [ref] */,
+				       union spoolss_KeyNames *key_buffer /* [out] [subcontext_size(*_ndr_size*2),ref,subcontext(0),switch_is(*_ndr_size)] */,
 				       uint32_t offered /* [in]  */,
 				       uint32_t *needed /* [out] [ref] */,
 				       WERROR *werror);

Modified: branches/samba/experimental/librpc/gen_ndr/drsuapi.h
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/drsuapi.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/drsuapi.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -517,7 +517,7 @@
 }/* [gensize,public] */;
 
 struct drsuapi_DsReplicaObjectIdentifier3Binary {
-	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r,ndr->iconv_convenience,ndr->flags))] */
+	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r,ndr->iconv_convenience,ndr->flags))] */
 	uint32_t __ndr_size_sid;/* [value(ndr_size_dom_sid28(&sid,ndr->flags))] */
 	struct GUID guid;
 	struct dom_sid28 sid;
@@ -525,7 +525,7 @@
 	const char *dn;/* [charset(UTF16)] */
 	uint32_t __ndr_size_binary;/* [value(binary.length+4)] */
 	DATA_BLOB binary;/* [flag(LIBNDR_FLAG_REMAINING)] */
-}/* [gensize,public] */;
+}/* [public] */;
 
 struct drsuapi_DsReplicaAttribute {
 	enum drsuapi_DsAttributeId attid;

Modified: branches/samba/experimental/librpc/gen_ndr/lsa.h
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/lsa.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/lsa.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -312,7 +312,7 @@
 };
 
 struct lsa_SidArray {
-	uint32_t num_sids;/* [range(0,1000)] */
+	uint32_t num_sids;/* [range(0,20480)] */
 	struct lsa_SidPtr *sids;/* [unique,size_is(num_sids)] */
 }/* [public] */;
 
@@ -397,7 +397,7 @@
 };
 
 struct lsa_TransNameArray {
-	uint32_t count;/* [range(0,1000)] */
+	uint32_t count;/* [range(0,20480)] */
 	struct lsa_TranslatedName *names;/* [unique,size_is(count)] */
 };
 

Modified: branches/samba/experimental/librpc/gen_ndr/misc.h
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/misc.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/misc.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -89,6 +89,6 @@
 	uint32_t value;/* [case(REG_DWORD)] */
 	const char ** string_array;/* [flag(LIBNDR_FLAG_STR_NULLTERM),case(REG_MULTI_SZ)] */
 	DATA_BLOB data;/* [flag(LIBNDR_FLAG_REMAINING),default] */
-}/* [nodiscriminant,public] */;
+}/* [public,nodiscriminant,flag(LIBNDR_FLAG_LITTLE_ENDIAN)] */;
 
 #endif /* _HEADER_misc */

Modified: branches/samba/experimental/librpc/gen_ndr/ndr_drsuapi.c
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/ndr_drsuapi.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/ndr_drsuapi.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -2176,7 +2176,7 @@
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->iconv_convenience, ndr->flags)));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r, ndr->iconv_convenience, ndr->flags)));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_dom_sid28(&r->sid, ndr->flags)));
 		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
 		NDR_CHECK(ndr_push_dom_sid28(ndr, NDR_SCALARS, &r->sid));
@@ -2226,7 +2226,7 @@
 {
 	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjectIdentifier3Binary");
 	ndr->depth++;
-	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->iconv_convenience, ndr->flags):r->__ndr_size);
+	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r, ndr->iconv_convenience, ndr->flags):r->__ndr_size);
 	ndr_print_uint32(ndr, "__ndr_size_sid", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_dom_sid28(&r->sid, ndr->flags):r->__ndr_size_sid);
 	ndr_print_GUID(ndr, "guid", &r->guid);
 	ndr_print_dom_sid28(ndr, "sid", &r->sid);
@@ -2237,11 +2237,6 @@
 	ndr->depth--;
 }
 
-_PUBLIC_ size_t ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary(const struct drsuapi_DsReplicaObjectIdentifier3Binary *r, struct smb_iconv_convenience *ic, int flags)
-{
-	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3Binary, ic);
-}
-
 _PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaAttribute(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaAttribute *r)
 {
 	if (ndr_flags & NDR_SCALARS) {

Modified: branches/samba/experimental/librpc/gen_ndr/ndr_drsuapi.h
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/ndr_drsuapi.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/ndr_drsuapi.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -120,7 +120,6 @@
 enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectIdentifier3Binary(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectIdentifier3Binary *r);
 enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectIdentifier3Binary(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectIdentifier3Binary *r);
 void ndr_print_drsuapi_DsReplicaObjectIdentifier3Binary(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectIdentifier3Binary *r);
-size_t ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary(const struct drsuapi_DsReplicaObjectIdentifier3Binary *r, struct smb_iconv_convenience *ic, int flags);
 enum ndr_err_code ndr_push_drsuapi_DsReplicaAttribute(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaAttribute *r);
 enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttribute(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaAttribute *r);
 void ndr_print_drsuapi_DsReplicaAttribute(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttribute *r);

Modified: branches/samba/experimental/librpc/gen_ndr/ndr_lsa.c
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/ndr_lsa.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/ndr_lsa.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1945,7 +1945,7 @@
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 5));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_sids));
-		if (r->num_sids > 1000) {
+		if (r->num_sids > 20480) {
 			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 		}
 		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
@@ -2444,7 +2444,7 @@
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 5));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count > 1000) {
+		if (r->count > 20480) {
 			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 		}
 		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_names));

Modified: branches/samba/experimental/librpc/gen_ndr/ndr_misc.c
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/ndr_misc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/ndr_misc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -213,77 +213,106 @@
 
 _PUBLIC_ enum ndr_err_code ndr_push_winreg_Data(struct ndr_push *ndr, int ndr_flags, const union winreg_Data *r)
 {
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_union_align(ndr, 4));
-		switch (level) {
-			case REG_NONE: {
-			break; }
+	{
+		uint32_t _flags_save_UNION = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
+		if (ndr_flags & NDR_SCALARS) {
+			int level = ndr_push_get_switch_value(ndr, r);
+			NDR_CHECK(ndr_push_union_align(ndr, 4));
+			switch (level) {
+				case REG_NONE: {
+				break; }
 
-			case REG_SZ: {
-				{
-					uint32_t _flags_save_string = ndr->flags;
-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-					NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
-					ndr->flags = _flags_save_string;
-				}
-			break; }
+				case REG_SZ: {
+					{
+						uint32_t _flags_save_string = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+						NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
+						ndr->flags = _flags_save_string;
+					}
+				break; }
 
-			case REG_BINARY: {
-				{
-					uint32_t _flags_save_DATA_BLOB = ndr->flags;
-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-					NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->binary));
-					ndr->flags = _flags_save_DATA_BLOB;
-				}
-			break; }
+				case REG_EXPAND_SZ: {
+					{
+						uint32_t _flags_save_string = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+						NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
+						ndr->flags = _flags_save_string;
+					}
+				break; }
 
-			case REG_DWORD: {
-				NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
-			break; }
+				case REG_BINARY: {
+					{
+						uint32_t _flags_save_DATA_BLOB = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+						NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->binary));
+						ndr->flags = _flags_save_DATA_BLOB;
+					}
+				break; }
 
-			case REG_MULTI_SZ: {
-				{
-					uint32_t _flags_save_string_array = ndr->flags;
-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-					NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
-					ndr->flags = _flags_save_string_array;
-				}
-			break; }
+				case REG_DWORD: {
+					NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
+				break; }
 
-			default: {
-				{
-					uint32_t _flags_save_DATA_BLOB = ndr->flags;
-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-					NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->data));
-					ndr->flags = _flags_save_DATA_BLOB;
-				}
-			break; }
+				case REG_DWORD_BIG_ENDIAN: {
+					{
+						uint32_t _flags_save_uint32 = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
+						NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
+						ndr->flags = _flags_save_uint32;
+					}
+				break; }
 
+				case REG_MULTI_SZ: {
+					{
+						uint32_t _flags_save_string_array = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+						NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
+						ndr->flags = _flags_save_string_array;
+					}
+				break; }
+
+				default: {
+					{
+						uint32_t _flags_save_DATA_BLOB = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+						NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->data));
+						ndr->flags = _flags_save_DATA_BLOB;
+					}
+				break; }
+
+			}
 		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case REG_NONE:
-			break;
+		if (ndr_flags & NDR_BUFFERS) {
+			int level = ndr_push_get_switch_value(ndr, r);
+			switch (level) {
+				case REG_NONE:
+				break;
 
-			case REG_SZ:
-			break;
+				case REG_SZ:
+				break;
 
-			case REG_BINARY:
-			break;
+				case REG_EXPAND_SZ:
+				break;
 
-			case REG_DWORD:
-			break;
+				case REG_BINARY:
+				break;
 
-			case REG_MULTI_SZ:
-			break;
+				case REG_DWORD:
+				break;
 
-			default:
-			break;
+				case REG_DWORD_BIG_ENDIAN:
+				break;
 
+				case REG_MULTI_SZ:
+				break;
+
+				default:
+				break;
+
+			}
 		}
+		ndr->flags = _flags_save_UNION;
 	}
 	return NDR_ERR_SUCCESS;
 }
@@ -291,109 +320,151 @@
 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_Data(struct ndr_pull *ndr, int ndr_flags, union winreg_Data *r)
 {
 	int level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_union_align(ndr, 4));
-		switch (level) {
-			case REG_NONE: {
-			break; }
+	{
+		uint32_t _flags_save_UNION = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
+		level = ndr_pull_get_switch_value(ndr, r);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_pull_union_align(ndr, 4));
+			switch (level) {
+				case REG_NONE: {
+				break; }
 
-			case REG_SZ: {
-				{
-					uint32_t _flags_save_string = ndr->flags;
-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-					NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
-					ndr->flags = _flags_save_string;
-				}
-			break; }
+				case REG_SZ: {
+					{
+						uint32_t _flags_save_string = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+						NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
+						ndr->flags = _flags_save_string;
+					}
+				break; }
 
-			case REG_BINARY: {
-				{
-					uint32_t _flags_save_DATA_BLOB = ndr->flags;
-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-					NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->binary));
-					ndr->flags = _flags_save_DATA_BLOB;
-				}
-			break; }
+				case REG_EXPAND_SZ: {
+					{
+						uint32_t _flags_save_string = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+						NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
+						ndr->flags = _flags_save_string;
+					}
+				break; }
 
-			case REG_DWORD: {
-				NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
-			break; }
+				case REG_BINARY: {
+					{
+						uint32_t _flags_save_DATA_BLOB = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+						NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->binary));
+						ndr->flags = _flags_save_DATA_BLOB;
+					}
+				break; }
 
-			case REG_MULTI_SZ: {
-				{
-					uint32_t _flags_save_string_array = ndr->flags;
-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-					NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
-					ndr->flags = _flags_save_string_array;
-				}
-			break; }
+				case REG_DWORD: {
+					NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
+				break; }
 
-			default: {
-				{
-					uint32_t _flags_save_DATA_BLOB = ndr->flags;
-					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-					NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->data));
-					ndr->flags = _flags_save_DATA_BLOB;
-				}
-			break; }
+				case REG_DWORD_BIG_ENDIAN: {
+					{
+						uint32_t _flags_save_uint32 = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
+						NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
+						ndr->flags = _flags_save_uint32;
+					}
+				break; }
 
+				case REG_MULTI_SZ: {
+					{
+						uint32_t _flags_save_string_array = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+						NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
+						ndr->flags = _flags_save_string_array;
+					}
+				break; }
+
+				default: {
+					{
+						uint32_t _flags_save_DATA_BLOB = ndr->flags;
+						ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+						NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->data));
+						ndr->flags = _flags_save_DATA_BLOB;
+					}
+				break; }
+
+			}
 		}
+		if (ndr_flags & NDR_BUFFERS) {
+			switch (level) {
+				case REG_NONE:
+				break;
+
+				case REG_SZ:
+				break;
+
+				case REG_EXPAND_SZ:
+				break;
+
+				case REG_BINARY:
+				break;
+
+				case REG_DWORD:
+				break;
+
+				case REG_DWORD_BIG_ENDIAN:
+				break;
+
+				case REG_MULTI_SZ:
+				break;
+
+				default:
+				break;
+
+			}
+		}
+		ndr->flags = _flags_save_UNION;
 	}
-	if (ndr_flags & NDR_BUFFERS) {
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_winreg_Data(struct ndr_print *ndr, const char *name, const union winreg_Data *r)
+{
+	int level;
+	{
+		uint32_t _flags_save_UNION = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
+		level = ndr_print_get_switch_value(ndr, r);
+		ndr_print_union(ndr, name, level, "winreg_Data");
 		switch (level) {
 			case REG_NONE:
 			break;
 
 			case REG_SZ:
+				ndr_print_string(ndr, "string", r->string);
 			break;
 
+			case REG_EXPAND_SZ:
+				ndr_print_string(ndr, "string", r->string);
+			break;
+
 			case REG_BINARY:
+				ndr_print_DATA_BLOB(ndr, "binary", r->binary);
 			break;
 
 			case REG_DWORD:
+				ndr_print_uint32(ndr, "value", r->value);
 			break;
 
+			case REG_DWORD_BIG_ENDIAN:
+				ndr_print_uint32(ndr, "value", r->value);
+			break;
+
 			case REG_MULTI_SZ:
+				ndr_print_string_array(ndr, "string_array", r->string_array);
 			break;
 
 			default:
+				ndr_print_DATA_BLOB(ndr, "data", r->data);
 			break;
 
 		}
+		ndr->flags = _flags_save_UNION;
 	}
-	return NDR_ERR_SUCCESS;
 }
 
-_PUBLIC_ void ndr_print_winreg_Data(struct ndr_print *ndr, const char *name, const union winreg_Data *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "winreg_Data");
-	switch (level) {
-		case REG_NONE:
-		break;
-
-		case REG_SZ:
-			ndr_print_string(ndr, "string", r->string);
-		break;
-
-		case REG_BINARY:
-			ndr_print_DATA_BLOB(ndr, "binary", r->binary);
-		break;
-
-		case REG_DWORD:
-			ndr_print_uint32(ndr, "value", r->value);
-		break;
-
-		case REG_MULTI_SZ:
-			ndr_print_string_array(ndr, "string_array", r->string_array);
-		break;
-
-		default:
-			ndr_print_DATA_BLOB(ndr, "data", r->data);
-		break;
-
-	}
-}
-

Modified: branches/samba/experimental/librpc/gen_ndr/ndr_spoolss.c
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/ndr_spoolss.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/ndr_spoolss.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1045,7 +1045,7 @@
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->devicename, 32, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->devicename, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_push_spoolss_DeviceModeSpecVersion(ndr, NDR_SCALARS, r->specversion));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->driverversion));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
@@ -1064,7 +1064,7 @@
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->yresolution));
 		NDR_CHECK(ndr_push_spoolss_DeviceModeTTOption(ndr, NDR_SCALARS, r->ttoption));
 		NDR_CHECK(ndr_push_spoolss_DeviceModeCollate(ndr, NDR_SCALARS, r->collate));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->formname, 32, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->formname, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logpixels));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bitsperpel));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pelswidth));
@@ -1101,7 +1101,7 @@
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->devicename, 32, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->devicename, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_pull_spoolss_DeviceModeSpecVersion(ndr, NDR_SCALARS, &r->specversion));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->driverversion));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
@@ -1120,7 +1120,7 @@
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->yresolution));
 		NDR_CHECK(ndr_pull_spoolss_DeviceModeTTOption(ndr, NDR_SCALARS, &r->ttoption));
 		NDR_CHECK(ndr_pull_spoolss_DeviceModeCollate(ndr, NDR_SCALARS, &r->collate));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->formname, 32, sizeof(uint16_t), CH_UTF16));
+		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->formname, MAXDEVICENAME, sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logpixels));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bitsperpel));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pelswidth));
@@ -12886,6 +12886,12 @@
 			ndr->flags = _flags_save_string;
 		}
 		{
+			uint32_t _flags_save_string_array = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
+			ndr->flags = _flags_save_string_array;
+		}
+		{
 			uint32_t _flags_save_string = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
@@ -12900,12 +12906,6 @@
 		{
 			uint32_t _flags_save_string_array = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->dependent_files));
-			ndr->flags = _flags_save_string_array;
-		}
-		{
-			uint32_t _flags_save_string_array = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->previous_names));
 			ndr->flags = _flags_save_string_array;
 		}
@@ -13026,6 +13026,15 @@
 			ndr->flags = _flags_save_string;
 		}
 		{
+			uint32_t _flags_save_string_array = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			if (r->dependent_files) {
+				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->dependent_files));
+				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->dependent_files));
+			}
+			ndr->flags = _flags_save_string_array;
+		}
+		{
 			uint32_t _flags_save_string = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 			if (r->monitor_name) {
@@ -13046,15 +13055,6 @@
 		{
 			uint32_t _flags_save_string_array = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->dependent_files) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->dependent_files));
-				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->dependent_files));
-			}
-			ndr->flags = _flags_save_string_array;
-		}
-		{
-			uint32_t _flags_save_string_array = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 			if (r->previous_names) {
 				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->previous_names));
 				NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->previous_names));
@@ -13160,12 +13160,12 @@
 	TALLOC_CTX *_mem_save_config_file_0;
 	uint32_t _ptr_help_file;
 	TALLOC_CTX *_mem_save_help_file_0;
+	uint32_t _ptr_dependent_files;
+	TALLOC_CTX *_mem_save_dependent_files_0;
 	uint32_t _ptr_monitor_name;
 	TALLOC_CTX *_mem_save_monitor_name_0;
 	uint32_t _ptr_default_datatype;
 	TALLOC_CTX *_mem_save_default_datatype_0;
-	uint32_t _ptr_dependent_files;
-	TALLOC_CTX *_mem_save_dependent_files_0;
 	uint32_t _ptr_previous_names;
 	TALLOC_CTX *_mem_save_previous_names_0;
 	uint32_t _ptr_manufacturer_name;
@@ -13262,6 +13262,18 @@
 			ndr->flags = _flags_save_string;
 		}
 		{
+			uint32_t _flags_save_string_array = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
+			if (_ptr_dependent_files) {
+				NDR_PULL_ALLOC(ndr, r->dependent_files);
+				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->dependent_files, _ptr_dependent_files));
+			} else {
+				r->dependent_files = NULL;
+			}
+			ndr->flags = _flags_save_string_array;
+		}
+		{
 			uint32_t _flags_save_string = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_monitor_name));
@@ -13288,18 +13300,6 @@
 		{
 			uint32_t _flags_save_string_array = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependent_files));
-			if (_ptr_dependent_files) {
-				NDR_PULL_ALLOC(ndr, r->dependent_files);
-				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->dependent_files, _ptr_dependent_files));
-			} else {
-				r->dependent_files = NULL;
-			}
-			ndr->flags = _flags_save_string_array;
-		}
-		{
-			uint32_t _flags_save_string_array = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_previous_names));
 			if (_ptr_previous_names) {
 				NDR_PULL_ALLOC(ndr, r->previous_names);
@@ -13516,6 +13516,21 @@
 			ndr->flags = _flags_save_string;
 		}
 		{
+			uint32_t _flags_save_string_array = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			if (r->dependent_files) {
+				uint32_t _relative_save_offset;
+				_relative_save_offset = ndr->offset;
+				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->dependent_files));
+				_mem_save_dependent_files_0 = NDR_PULL_GET_MEM_CTX(ndr);
+				NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 0);
+				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->dependent_files));
+				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
+				ndr->offset = _relative_save_offset;
+			}
+			ndr->flags = _flags_save_string_array;
+		}
+		{
 			uint32_t _flags_save_string = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 			if (r->monitor_name) {
@@ -13548,21 +13563,6 @@
 		{
 			uint32_t _flags_save_string_array = ndr->flags;
 			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->dependent_files) {
-				uint32_t _relative_save_offset;
-				_relative_save_offset = ndr->offset;
-				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->dependent_files));
-				_mem_save_dependent_files_0 = NDR_PULL_GET_MEM_CTX(ndr);
-				NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 0);
-				NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->dependent_files));
-				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependent_files_0, 0);
-				ndr->offset = _relative_save_offset;
-			}
-			ndr->flags = _flags_save_string_array;
-		}
-		{
-			uint32_t _flags_save_string_array = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 			if (r->previous_names) {
 				uint32_t _relative_save_offset;
 				_relative_save_offset = ndr->offset;
@@ -13755,6 +13755,12 @@
 		ndr_print_string(ndr, "help_file", r->help_file);
 	}
 	ndr->depth--;
+	ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
+	ndr->depth++;
+	if (r->dependent_files) {
+		ndr_print_string_array(ndr, "dependent_files", r->dependent_files);
+	}
+	ndr->depth--;
 	ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
 	ndr->depth++;
 	if (r->monitor_name) {
@@ -13767,12 +13773,6 @@
 		ndr_print_string(ndr, "default_datatype", r->default_datatype);
 	}
 	ndr->depth--;
-	ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
-	ndr->depth++;
-	if (r->dependent_files) {
-		ndr_print_string_array(ndr, "dependent_files", r->dependent_files);
-	}
-	ndr->depth--;
 	ndr_print_ptr(ndr, "previous_names", r->previous_names);
 	ndr->depth++;
 	if (r->previous_names) {
@@ -15364,11 +15364,6 @@
 	}
 }
 
-_PUBLIC_ size_t ndr_size_spoolss_PrinterData(const union spoolss_PrinterData *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
-{
-	return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterData, ic);
-}
-
 static enum ndr_err_code ndr_push_spoolss_FormFlags(struct ndr_push *ndr, int ndr_flags, enum spoolss_FormFlags r)
 {
 	NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r));
@@ -15621,7 +15616,8 @@
 			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
 			ndr->flags = _flags_save_string;
 		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lang_id));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lang_id));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unused));
 		NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
@@ -15730,7 +15726,8 @@
 			}
 			ndr->flags = _flags_save_string;
 		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lang_id));
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lang_id));
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unused));
 		NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
@@ -15831,7 +15828,8 @@
 		ndr_print_string(ndr, "display_name", r->display_name);
 	}
 	ndr->depth--;
-	ndr_print_uint32(ndr, "lang_id", r->lang_id);
+	ndr_print_uint16(ndr, "lang_id", r->lang_id);
+	ndr_print_uint16(ndr, "unused", r->unused);
 	ndr->depth--;
 }
 
@@ -19190,6 +19188,105 @@
 	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterEnumValues, ic);
 }
 
+static enum ndr_err_code ndr_push_spoolss_KeyNames(struct ndr_push *ndr, int ndr_flags, const union spoolss_KeyNames *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		int level = ndr_push_get_switch_value(ndr, r);
+		NDR_CHECK(ndr_push_union_align(ndr, 4));
+		switch (level) {
+			case 0: {
+			break; }
+
+			case 1: {
+			break; }
+
+			default: {
+				{
+					uint32_t _flags_save_string_array = ndr->flags;
+					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+					NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
+					ndr->flags = _flags_save_string_array;
+				}
+			break; }
+
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		int level = ndr_push_get_switch_value(ndr, r);
+		switch (level) {
+			case 0:
+			break;
+
+			case 1:
+			break;
+
+			default:
+			break;
+
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_KeyNames(struct ndr_pull *ndr, int ndr_flags, union spoolss_KeyNames *r)
+{
+	int level;
+	level = ndr_pull_get_switch_value(ndr, r);
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_union_align(ndr, 4));
+		switch (level) {
+			case 0: {
+			break; }
+
+			case 1: {
+			break; }
+
+			default: {
+				{
+					uint32_t _flags_save_string_array = ndr->flags;
+					ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+					NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
+					ndr->flags = _flags_save_string_array;
+				}
+			break; }
+
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		switch (level) {
+			case 0:
+			break;
+
+			case 1:
+			break;
+
+			default:
+			break;
+
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_KeyNames(struct ndr_print *ndr, const char *name, const union spoolss_KeyNames *r)
+{
+	int level;
+	level = ndr_print_get_switch_value(ndr, r);
+	ndr_print_union(ndr, name, level, "spoolss_KeyNames");
+	switch (level) {
+		case 0:
+		break;
+
+		case 1:
+		break;
+
+		default:
+			ndr_print_string_array(ndr, "string_array", r->string_array);
+		break;
+
+	}
+}
+
 _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DeleteDriverFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 {
 	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
@@ -27239,7 +27336,7 @@
 	ndr->depth--;
 }
 
-static enum ndr_err_code ndr_push_spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterDataEx *r)
+_PUBLIC_ enum ndr_err_code ndr_push__spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct _spoolss_SetPrinterDataEx *r)
 {
 	if (flags & NDR_IN) {
 		if (r->in.handle == NULL) {
@@ -27255,12 +27352,8 @@
 		NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.value_name, CH_UTF16)));
 		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.value_name, ndr_charset_length(r->in.value_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->in.type));
-		if (r->in.buffer == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
-		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.offered));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
+		NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->in.data));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in._offered));
 	}
 	if (flags & NDR_OUT) {
 		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
@@ -27268,6 +27361,21 @@
 	return NDR_ERR_SUCCESS;
 }
 
+_PUBLIC_ enum ndr_err_code ndr_push___spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct __spoolss_SetPrinterDataEx *r)
+{
+	if (flags & NDR_IN) {
+		NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->in.type));
+	}
+	if (flags & NDR_OUT) {
+		if (r->out.data == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.data, r->in.type));
+		NDR_CHECK(ndr_push_spoolss_PrinterData(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.data));
+	}
+	return NDR_ERR_SUCCESS;
+}
+
 static enum ndr_err_code ndr_pull_spoolss_SetPrinterDataEx(struct ndr_pull *ndr, int flags, struct spoolss_SetPrinterDataEx *r)
 {
 	TALLOC_CTX *_mem_save_handle_0;
@@ -27294,15 +27402,14 @@
 		NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t)));
 		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.value_name, ndr_get_array_length(ndr, &r->in.value_name), sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->in.type));
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
+		{
+			struct ndr_pull *_ndr_data;
+			NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_data, 4, -1));
+			NDR_CHECK(ndr_pull_set_switch_value(_ndr_data, &r->in.data, r->in.type));
+			NDR_CHECK(ndr_pull_spoolss_PrinterData(_ndr_data, NDR_SCALARS|NDR_BUFFERS, &r->in.data));
+			NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_data, 4, -1));
 		}
-		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
-		if (r->in.buffer) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.offered));
-		}
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in._offered));
 	}
 	if (flags & NDR_OUT) {
 		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
@@ -27327,12 +27434,10 @@
 		ndr_print_string(ndr, "key_name", r->in.key_name);
 		ndr_print_string(ndr, "value_name", r->in.value_name);
 		ndr_print_winreg_Type(ndr, "type", r->in.type);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.offered);
+		ndr_print_set_switch_value(ndr, &r->in.data, r->in.type);
+		ndr_print_spoolss_PrinterData(ndr, "data", &r->in.data);
+		ndr_print_uint32(ndr, "_offered", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_spoolss_PrinterData(&r->in.data, r->in.type, ndr->iconv_convenience, flags):r->in._offered);
 		ndr->depth--;
-		ndr_print_uint32(ndr, "offered", r->in.offered);
-		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
 		ndr_print_struct(ndr, "out", "spoolss_SetPrinterDataEx");
@@ -27343,7 +27448,7 @@
 	ndr->depth--;
 }
 
-static enum ndr_err_code ndr_push_spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDataEx *r)
+_PUBLIC_ enum ndr_err_code ndr_push__spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct _spoolss_GetPrinterDataEx *r)
 {
 	if (flags & NDR_IN) {
 		if (r->in.handle == NULL) {
@@ -27365,11 +27470,10 @@
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
 		NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
-		if (r->out.buffer == NULL) {
+		if (r->out.data == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
-		NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered));
-		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
+		NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->out.data));
 		if (r->out.needed == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
@@ -27379,10 +27483,11 @@
 	return NDR_ERR_SUCCESS;
 }
 
-static enum ndr_err_code ndr_pull_spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDataEx *r)
+_PUBLIC_ enum ndr_err_code ndr_pull__spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct _spoolss_GetPrinterDataEx *r)
 {
 	TALLOC_CTX *_mem_save_handle_0;
 	TALLOC_CTX *_mem_save_type_0;
+	TALLOC_CTX *_mem_save_data_0;
 	TALLOC_CTX *_mem_save_needed_0;
 	if (flags & NDR_IN) {
 		ZERO_STRUCT(r->out);
@@ -27411,8 +27516,8 @@
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
 		NDR_PULL_ALLOC(ndr, r->out.type);
 		ZERO_STRUCTP(r->out.type);
-		NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
-		memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer));
+		NDR_PULL_ALLOC(ndr, r->out.data);
+		ZERO_STRUCTP(r->out.data);
 		NDR_PULL_ALLOC(ndr, r->out.needed);
 		ZERO_STRUCTP(r->out.needed);
 	}
@@ -27424,11 +27529,13 @@
 		NDR_PULL_SET_MEM_CTX(ndr, r->out.type, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
+			NDR_PULL_ALLOC(ndr, r->out.data);
 		}
-		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
+		_mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.data, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->out.data));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, LIBNDR_FLAG_REF_ALLOC);
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 			NDR_PULL_ALLOC(ndr, r->out.needed);
 		}
@@ -27437,13 +27544,48 @@
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-		if (r->out.buffer) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push___spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct __spoolss_GetPrinterDataEx *r)
+{
+	if (flags & NDR_IN) {
+		NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->in.type));
+	}
+	if (flags & NDR_OUT) {
+		if (r->out.data == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
+		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.data, r->in.type));
+		NDR_CHECK(ndr_push_spoolss_PrinterData(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.data));
 	}
 	return NDR_ERR_SUCCESS;
 }
 
+_PUBLIC_ enum ndr_err_code ndr_pull___spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct __spoolss_GetPrinterDataEx *r)
+{
+	TALLOC_CTX *_mem_save_data_0;
+	if (flags & NDR_IN) {
+		ZERO_STRUCT(r->out);
+
+		NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->in.type));
+		NDR_PULL_ALLOC(ndr, r->out.data);
+		ZERO_STRUCTP(r->out.data);
+	}
+	if (flags & NDR_OUT) {
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->out.data);
+		}
+		_mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.data, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.data, r->in.type));
+		NDR_CHECK(ndr_pull_spoolss_PrinterData(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.data));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, LIBNDR_FLAG_REF_ALLOC);
+	}
+	return NDR_ERR_SUCCESS;
+}
+
 _PUBLIC_ void ndr_print_spoolss_GetPrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetPrinterDataEx *r)
 {
 	ndr_print_struct(ndr, name, "spoolss_GetPrinterDataEx");
@@ -27470,9 +27612,10 @@
 		ndr->depth++;
 		ndr_print_winreg_Type(ndr, "type", *r->out.type);
 		ndr->depth--;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
+		ndr_print_ptr(ndr, "data", r->out.data);
 		ndr->depth++;
-		ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
+		ndr_print_set_switch_value(ndr, r->out.data, *r->out.type);
+		ndr_print_spoolss_PrinterData(ndr, "data", r->out.data);
 		ndr->depth--;
 		ndr_print_ptr(ndr, "needed", r->out.needed);
 		ndr->depth++;
@@ -27658,7 +27801,6 @@
 
 _PUBLIC_ enum ndr_err_code ndr_push_spoolss_EnumPrinterKey(struct ndr_push *ndr, int flags, const struct spoolss_EnumPrinterKey *r)
 {
-	uint32_t cntr_key_buffer_1;
 	if (flags & NDR_IN) {
 		if (r->in.handle == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
@@ -27671,12 +27813,19 @@
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 	}
 	if (flags & NDR_OUT) {
+		if (r->out._ndr_size == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out._ndr_size));
 		if (r->out.key_buffer == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
-		NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered / 2));
-		for (cntr_key_buffer_1 = 0; cntr_key_buffer_1 < r->in.offered / 2; cntr_key_buffer_1++) {
-			NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->out.key_buffer[cntr_key_buffer_1]));
+		{
+			struct ndr_push *_ndr_key_buffer;
+			NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_key_buffer, 0, *r->out._ndr_size * 2));
+			NDR_CHECK(ndr_push_set_switch_value(_ndr_key_buffer, r->out.key_buffer, *r->out._ndr_size));
+			NDR_CHECK(ndr_push_spoolss_KeyNames(_ndr_key_buffer, NDR_SCALARS|NDR_BUFFERS, r->out.key_buffer));
+			NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_key_buffer, 0, *r->out._ndr_size * 2));
 		}
 		if (r->out.needed == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
@@ -27689,9 +27838,9 @@
 
 _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_EnumPrinterKey(struct ndr_pull *ndr, int flags, struct spoolss_EnumPrinterKey *r)
 {
-	uint32_t cntr_key_buffer_1;
 	TALLOC_CTX *_mem_save_handle_0;
-	TALLOC_CTX *_mem_save_key_buffer_1;
+	TALLOC_CTX *_mem_save__ndr_size_0;
+	TALLOC_CTX *_mem_save_key_buffer_0;
 	TALLOC_CTX *_mem_save_needed_0;
 	if (flags & NDR_IN) {
 		ZERO_STRUCT(r->out);
@@ -27711,22 +27860,34 @@
 		NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t)));
 		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.key_name, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
-		NDR_PULL_ALLOC_N(ndr, r->out.key_buffer, r->in.offered / 2);
-		memset(r->out.key_buffer, 0, (r->in.offered / 2) * sizeof(*r->out.key_buffer));
+		NDR_PULL_ALLOC(ndr, r->out._ndr_size);
+		ZERO_STRUCTP(r->out._ndr_size);
+		NDR_PULL_ALLOC(ndr, r->out.key_buffer);
+		ZERO_STRUCTP(r->out.key_buffer);
 		NDR_PULL_ALLOC(ndr, r->out.needed);
 		ZERO_STRUCTP(r->out.needed);
 	}
 	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->out.key_buffer));
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC_N(ndr, r->out.key_buffer, ndr_get_array_size(ndr, &r->out.key_buffer));
+			NDR_PULL_ALLOC(ndr, r->out._ndr_size);
 		}
-		_mem_save_key_buffer_1 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.key_buffer, 0);
-		for (cntr_key_buffer_1 = 0; cntr_key_buffer_1 < r->in.offered / 2; cntr_key_buffer_1++) {
-			NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.key_buffer[cntr_key_buffer_1]));
+		_mem_save__ndr_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out._ndr_size, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out._ndr_size));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save__ndr_size_0, LIBNDR_FLAG_REF_ALLOC);
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->out.key_buffer);
 		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_buffer_1, 0);
+		_mem_save_key_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.key_buffer, LIBNDR_FLAG_REF_ALLOC);
+		{
+			struct ndr_pull *_ndr_key_buffer;
+			NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_key_buffer, 0, *r->out._ndr_size * 2));
+			NDR_CHECK(ndr_pull_set_switch_value(_ndr_key_buffer, r->out.key_buffer, *r->out._ndr_size));
+			NDR_CHECK(ndr_pull_spoolss_KeyNames(_ndr_key_buffer, NDR_SCALARS|NDR_BUFFERS, r->out.key_buffer));
+			NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_key_buffer, 0, *r->out._ndr_size * 2));
+		}
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_buffer_0, LIBNDR_FLAG_REF_ALLOC);
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 			NDR_PULL_ALLOC(ndr, r->out.needed);
 		}
@@ -27735,16 +27896,12 @@
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-		if (r->out.key_buffer) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.key_buffer, r->in.offered / 2));
-		}
 	}
 	return NDR_ERR_SUCCESS;
 }
 
 _PUBLIC_ void ndr_print_spoolss_EnumPrinterKey(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumPrinterKey *r)
 {
-	uint32_t cntr_key_buffer_1;
 	ndr_print_struct(ndr, name, "spoolss_EnumPrinterKey");
 	ndr->depth++;
 	if (flags & NDR_SET_VALUES) {
@@ -27764,19 +27921,15 @@
 	if (flags & NDR_OUT) {
 		ndr_print_struct(ndr, "out", "spoolss_EnumPrinterKey");
 		ndr->depth++;
+		ndr_print_ptr(ndr, "_ndr_size", r->out._ndr_size);
+		ndr->depth++;
+		ndr_print_uint32(ndr, "_ndr_size", *r->out._ndr_size);
+		ndr->depth--;
 		ndr_print_ptr(ndr, "key_buffer", r->out.key_buffer);
 		ndr->depth++;
-		ndr->print(ndr, "%s: ARRAY(%d)", "key_buffer", (int)r->in.offered / 2);
-		ndr->depth++;
-		for (cntr_key_buffer_1=0;cntr_key_buffer_1<r->in.offered / 2;cntr_key_buffer_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_key_buffer_1) != -1) {
-				ndr_print_uint16(ndr, "key_buffer", r->out.key_buffer[cntr_key_buffer_1]);
-				free(idx_1);
-			}
-		}
+		ndr_print_set_switch_value(ndr, r->out.key_buffer, *r->out._ndr_size);
+		ndr_print_spoolss_KeyNames(ndr, "key_buffer", r->out.key_buffer);
 		ndr->depth--;
-		ndr->depth--;
 		ndr_print_ptr(ndr, "needed", r->out.needed);
 		ndr->depth++;
 		ndr_print_uint32(ndr, "needed", *r->out.needed);

Modified: branches/samba/experimental/librpc/gen_ndr/ndr_spoolss.h
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/ndr_spoolss.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/ndr_spoolss.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -433,7 +433,6 @@
 enum ndr_err_code ndr_push_spoolss_PrinterData(struct ndr_push *ndr, int ndr_flags, const union spoolss_PrinterData *r);
 enum ndr_err_code ndr_pull_spoolss_PrinterData(struct ndr_pull *ndr, int ndr_flags, union spoolss_PrinterData *r);
 void ndr_print_spoolss_PrinterData(struct ndr_print *ndr, const char *name, const union spoolss_PrinterData *r);
-size_t ndr_size_spoolss_PrinterData(const union spoolss_PrinterData *r, uint32_t level, struct smb_iconv_convenience *ic, int flags);
 void ndr_print_spoolss_FormFlags(struct ndr_print *ndr, const char *name, enum spoolss_FormFlags r);
 void ndr_print_spoolss_FormSize(struct ndr_print *ndr, const char *name, const struct spoolss_FormSize *r);
 void ndr_print_spoolss_FormArea(struct ndr_print *ndr, const char *name, const struct spoolss_FormArea *r);
@@ -522,6 +521,7 @@
 enum ndr_err_code ndr_pull_spoolss_PrinterEnumValues(struct ndr_pull *ndr, int ndr_flags, struct spoolss_PrinterEnumValues *r);
 void ndr_print_spoolss_PrinterEnumValues(struct ndr_print *ndr, const char *name, const struct spoolss_PrinterEnumValues *r);
 size_t ndr_size_spoolss_PrinterEnumValues(const struct spoolss_PrinterEnumValues *r, struct smb_iconv_convenience *ic, int flags);
+void ndr_print_spoolss_KeyNames(struct ndr_print *ndr, const char *name, const union spoolss_KeyNames *r);
 enum ndr_err_code ndr_push_spoolss_DeleteDriverFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
 enum ndr_err_code ndr_pull_spoolss_DeleteDriverFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
 void ndr_print_spoolss_DeleteDriverFlags(struct ndr_print *ndr, const char *name, uint32_t r);
@@ -713,7 +713,22 @@
 void ndr_print_spoolss_4a(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_4a *r);
 void ndr_print_spoolss_4b(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_4b *r);
 void ndr_print_spoolss_4c(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_4c *r);
+enum ndr_err_code ndr_push__spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct _spoolss_SetPrinterDataEx *r);
+enum ndr_err_code ndr_pull__spoolss_SetPrinterDataEx(struct ndr_pull *ndr, int flags, struct _spoolss_SetPrinterDataEx *r);
+void ndr_print__spoolss_SetPrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct _spoolss_SetPrinterDataEx *r);
+enum ndr_err_code ndr_push___spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct __spoolss_SetPrinterDataEx *r);
+enum ndr_err_code ndr_pull___spoolss_SetPrinterDataEx(struct ndr_pull *ndr, int flags, struct __spoolss_SetPrinterDataEx *r);
+void ndr_print___spoolss_SetPrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct __spoolss_SetPrinterDataEx *r);
+enum ndr_err_code ndr_push_spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterDataEx *r);
 void ndr_print_spoolss_SetPrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_SetPrinterDataEx *r);
+enum ndr_err_code ndr_push__spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct _spoolss_GetPrinterDataEx *r);
+enum ndr_err_code ndr_pull__spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct _spoolss_GetPrinterDataEx *r);
+void ndr_print__spoolss_GetPrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct _spoolss_GetPrinterDataEx *r);
+enum ndr_err_code ndr_push___spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct __spoolss_GetPrinterDataEx *r);
+enum ndr_err_code ndr_pull___spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct __spoolss_GetPrinterDataEx *r);
+void ndr_print___spoolss_GetPrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct __spoolss_GetPrinterDataEx *r);
+enum ndr_err_code ndr_push_spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDataEx *r);
+enum ndr_err_code ndr_pull_spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDataEx *r);
 void ndr_print_spoolss_GetPrinterDataEx(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_GetPrinterDataEx *r);
 enum ndr_err_code ndr_push__spoolss_EnumPrinterDataEx(struct ndr_push *ndr, int flags, const struct _spoolss_EnumPrinterDataEx *r);
 enum ndr_err_code ndr_pull__spoolss_EnumPrinterDataEx(struct ndr_pull *ndr, int flags, struct _spoolss_EnumPrinterDataEx *r);

Modified: branches/samba/experimental/librpc/gen_ndr/spoolss.h
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/spoolss.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/spoolss.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -12,6 +12,7 @@
 
 #define PRINTER_STATUS_OK	( 0x00000000 )
 #define JOB_STATUS_QUEUED	( 0x0000 )
+#define MAXDEVICENAME	( 32 )
 #define PRINTER_ENUM_ICONMASK	( (PRINTER_ENUM_ICON1|PRINTER_ENUM_ICON2|PRINTER_ENUM_ICON3|PRINTER_ENUM_ICON4|PRINTER_ENUM_ICON5|PRINTER_ENUM_ICON6|PRINTER_ENUM_ICON7|PRINTER_ENUM_ICON8) )
 #define SPL_ARCH_WIN40	( "WIN40" )
 #define SPL_ARCH_W32X86	( "W32X86" )
@@ -20,8 +21,12 @@
 #define SPL_ARCH_W32PPC	( "W32PPC" )
 #define SPL_ARCH_IA64	( "IA64" )
 #define SPL_ARCH_X64	( "x64" )
-#define SPOOLSS_ARCHITECTURE_ALL	( "all" )
+#define SPOOLSS_ARCHITECTURE_ALL	( "All" )
+#define SPOOLSS_ARCHITECTURE_ALL_CLUSTER	( "AllCluster" )
 #define SPOOLSS_ARCHITECTURE_NT_X86	( "Windows NT x86" )
+#define SPOOLSS_ARCHITECTURE_IA_64	( "Windows IA64" )
+#define SPOOLSS_ARCHITECTURE_x64	( "Windows x64" )
+#define SPOOLSS_ARCHITECTURE_4_0	( "Windows 4.0" )
 #define SPOOLSS_DEFAULT_SERVER_PATH	( "C:\\WINDOWS\\system32\\spool" )
 #define SPOOL_PRINTERDATA_KEY	( "PrinterDriverData" )
 #define SPOOL_DSSPOOLER_KEY	( "DsSpooler" )
@@ -1428,9 +1433,9 @@
 	const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
 	const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
 	const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+	const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
 	const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
 	const char * default_datatype;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
-	const char ** dependent_files;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
 	const char ** previous_names;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
 	NTTIME driver_date;
 	uint64_t driver_version;
@@ -1564,7 +1569,7 @@
 	uint32_t value;/* [case(REG_DWORD)] */
 	const char ** string_array;/* [flag(LIBNDR_FLAG_STR_NULLTERM),case(REG_MULTI_SZ)] */
 	DATA_BLOB data;/* [flag(LIBNDR_FLAG_REMAINING),default] */
-}/* [gensize,public,nodiscriminant] */;
+}/* [nodiscriminant,public] */;
 
 enum spoolss_FormFlags
 #ifndef USE_UINT_ENUMS
@@ -1615,7 +1620,8 @@
 	const char * mui_dll;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
 	uint32_t ressource_id;
 	const char * display_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
-	uint32_t lang_id;
+	uint16_t lang_id;
+	uint16_t unused;
 }/* [gensize,public] */;
 
 union spoolss_FormInfo {
@@ -2048,6 +2054,10 @@
 	uint32_t data_length;/* [value(ndr_size_spoolss_PrinterData(data,type,ndr->iconv_convenience,ndr->flags))] */
 }/* [relative_base,gensize,public] */;
 
+union spoolss_KeyNames {
+	const char ** string_array;/* [default,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+}/* [nodiscriminant] */;
+
 /* bitmap spoolss_DeleteDriverFlags */
 #define DPD_DELETE_UNUSED_FILES ( 0x00000001 )
 #define DPD_DELETE_SPECIFIC_VERSION ( 0x00000002 )
@@ -3462,23 +3472,82 @@
 };
 
 
+struct _spoolss_SetPrinterDataEx {
+	struct {
+		struct policy_handle *handle;/* [ref] */
+		const char *key_name;/* [charset(UTF16)] */
+		const char *value_name;/* [charset(UTF16)] */
+		enum winreg_Type type;
+		DATA_BLOB data;
+		uint32_t _offered;
+	} in;
+
+	struct {
+		WERROR result;
+	} out;
+
+};
+
+
+struct __spoolss_SetPrinterDataEx {
+	struct {
+		enum winreg_Type type;
+	} in;
+
+	struct {
+		union spoolss_PrinterData *data;/* [ref,switch_is(type)] */
+	} out;
+
+};
+
+
 struct spoolss_SetPrinterDataEx {
 	struct {
 		struct policy_handle *handle;/* [ref] */
 		const char *key_name;/* [charset(UTF16)] */
 		const char *value_name;/* [charset(UTF16)] */
 		enum winreg_Type type;
-		uint8_t *buffer;/* [ref,size_is(offered)] */
+		union spoolss_PrinterData data;/* [subcontext(4),switch_is(type)] */
+		uint32_t _offered;/* [value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] */
+	} in;
+
+	struct {
+		WERROR result;
+	} out;
+
+};
+
+
+struct _spoolss_GetPrinterDataEx {
+	struct {
+		struct policy_handle *handle;/* [ref] */
+		const char *key_name;/* [charset(UTF16)] */
+		const char *value_name;/* [charset(UTF16)] */
 		uint32_t offered;
 	} in;
 
 	struct {
+		enum winreg_Type *type;/* [ref] */
+		DATA_BLOB *data;/* [ref] */
+		uint32_t *needed;/* [ref] */
 		WERROR result;
 	} out;
 
 };
 
 
+struct __spoolss_GetPrinterDataEx {
+	struct {
+		enum winreg_Type type;
+	} in;
+
+	struct {
+		union spoolss_PrinterData *data;/* [ref,switch_is(type)] */
+	} out;
+
+};
+
+
 struct spoolss_GetPrinterDataEx {
 	struct {
 		struct policy_handle *handle;/* [ref] */
@@ -3489,7 +3558,7 @@
 
 	struct {
 		enum winreg_Type *type;/* [ref] */
-		uint8_t *buffer;/* [ref,size_is(offered)] */
+		union spoolss_PrinterData *data;/* [subcontext_size(offered),ref,subcontext(4),switch_is(*type)] */
 		uint32_t *needed;/* [ref] */
 		WERROR result;
 	} out;
@@ -3551,7 +3620,8 @@
 	} in;
 
 	struct {
-		uint16_t *key_buffer;/* [ref,size_is(offered/2)] */
+		uint32_t *_ndr_size;/* [ref] */
+		union spoolss_KeyNames *key_buffer;/* [subcontext_size(*_ndr_size*2),ref,subcontext(0),switch_is(*_ndr_size)] */
 		uint32_t *needed;/* [ref] */
 		WERROR result;
 	} out;

Modified: branches/samba/experimental/librpc/gen_ndr/srv_spoolss.c
===================================================================
--- branches/samba/experimental/librpc/gen_ndr/srv_spoolss.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/gen_ndr/srv_spoolss.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -6147,8 +6147,8 @@
 		return false;
 	}
 
-	r->out.buffer = talloc_zero_array(r, uint8_t, r->in.offered);
-	if (r->out.buffer == NULL) {
+	r->out.data = talloc_zero(r, union spoolss_PrinterData);
+	if (r->out.data == NULL) {
 		talloc_free(r);
 		return false;
 	}
@@ -6325,7 +6325,13 @@
 	}
 
 	ZERO_STRUCT(r->out);
-	r->out.key_buffer = talloc_zero_array(r, uint16_t, r->in.offered / 2);
+	r->out._ndr_size = talloc_zero(r, uint32_t);
+	if (r->out._ndr_size == NULL) {
+		talloc_free(r);
+		return false;
+	}
+
+	r->out.key_buffer = talloc_zero(r, union spoolss_KeyNames);
 	if (r->out.key_buffer == NULL) {
 		talloc_free(r);
 		return false;
@@ -9465,8 +9471,8 @@
 			return NT_STATUS_NO_MEMORY;
 			}
 
-			r->out.buffer = talloc_zero_array(mem_ctx, uint8_t, r->in.offered);
-			if (r->out.buffer == NULL) {
+			r->out.data = talloc_zero(mem_ctx, union spoolss_PrinterData);
+			if (r->out.data == NULL) {
 			return NT_STATUS_NO_MEMORY;
 			}
 
@@ -9504,7 +9510,12 @@
 		case NDR_SPOOLSS_ENUMPRINTERKEY: {
 			struct spoolss_EnumPrinterKey *r = (struct spoolss_EnumPrinterKey *)_r;
 			ZERO_STRUCT(r->out);
-			r->out.key_buffer = talloc_zero_array(mem_ctx, uint16_t, r->in.offered / 2);
+			r->out._ndr_size = talloc_zero(mem_ctx, uint32_t);
+			if (r->out._ndr_size == NULL) {
+			return NT_STATUS_NO_MEMORY;
+			}
+
+			r->out.key_buffer = talloc_zero(mem_ctx, union spoolss_KeyNames);
 			if (r->out.key_buffer == NULL) {
 			return NT_STATUS_NO_MEMORY;
 			}

Modified: branches/samba/experimental/librpc/idl/drsuapi.idl
===================================================================
--- branches/samba/experimental/librpc/idl/drsuapi.idl	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/idl/drsuapi.idl	2009-12-16 21:43:48 UTC (rev 3157)
@@ -552,8 +552,8 @@
 		[charset(UTF16)] uint16 dn[__ndr_size_dn+1];
 	} drsuapi_DsReplicaObjectIdentifier3;
 
-	typedef [public,gensize] struct {
-		[value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->iconv_convenience, ndr->flags))] uint32 __ndr_size;
+	typedef [public] struct {
+		[value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r, ndr->iconv_convenience, ndr->flags))] uint32 __ndr_size;
 		[value(ndr_size_dom_sid28(&sid,ndr->flags))]  uint32 __ndr_size_sid;
 		GUID guid;
 		dom_sid28 sid;

Modified: branches/samba/experimental/librpc/idl/lsa.idl
===================================================================
--- branches/samba/experimental/librpc/idl/lsa.idl	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/idl/lsa.idl	2009-12-16 21:43:48 UTC (rev 3157)
@@ -451,7 +451,7 @@
 	} lsa_SidPtr;
 
 	typedef [public] struct {
-		[range(0,1000)] uint32 num_sids;
+		[range(0,20480)] uint32 num_sids;
 		[size_is(num_sids)] lsa_SidPtr *sids;
 	} lsa_SidArray;
 
@@ -564,7 +564,7 @@
 	} lsa_TranslatedName;
 
 	typedef struct {
-		[range(0,1000)] uint32 count;
+		[range(0,20480)] uint32 count;
 		[size_is(count)] lsa_TranslatedName *names;
 	} lsa_TransNameArray;
 

Modified: branches/samba/experimental/librpc/idl/misc.idl
===================================================================
--- branches/samba/experimental/librpc/idl/misc.idl	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/idl/misc.idl	2009-12-16 21:43:48 UTC (rev 3157)
@@ -61,11 +61,13 @@
 		REG_QWORD                      = 11
 	} winreg_Type;
 
-	typedef [nodiscriminant,public] union {
+	typedef [nodiscriminant,public,flag(NDR_LITTLE_ENDIAN)] union {
 		[case(REG_NONE)];
 		[case(REG_SZ)] nstring string;
+		[case(REG_EXPAND_SZ)] nstring string;
 		[case(REG_BINARY),flag(NDR_REMAINING)] DATA_BLOB binary;
 		[case(REG_DWORD)] uint32 value;
+		[case(REG_DWORD_BIG_ENDIAN),flag(NDR_BIG_ENDIAN)] uint32 value;
 		[case(REG_MULTI_SZ)] nstring_array string_array;
 		[default,flag(NDR_REMAINING)] DATA_BLOB data;
 	} winreg_Data;

Modified: branches/samba/experimental/librpc/idl/spoolss.idl
===================================================================
--- branches/samba/experimental/librpc/idl/spoolss.idl	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/idl/spoolss.idl	2009-12-16 21:43:48 UTC (rev 3157)
@@ -368,8 +368,10 @@
 		DMDITHER_GRAYSCALE	= 0x0000000A
 	} spoolss_DeviceModeDitherType;
 
+	const int MAXDEVICENAME	= 32;
+
 	typedef [public,gensize] struct {
-		[charset(UTF16)] uint16 devicename[32];
+		[charset(UTF16)] uint16 devicename[MAXDEVICENAME];
 		spoolss_DeviceModeSpecVersion specversion;
 		uint16 driverversion;
 		uint16 size;
@@ -388,7 +390,7 @@
 		uint16 yresolution;
 		spoolss_DeviceModeTTOption ttoption;
 		spoolss_DeviceModeCollate collate;
-		[charset(UTF16)] uint16 formname[32];
+		[charset(UTF16)] uint16 formname[MAXDEVICENAME];
 		uint16 logpixels; /* reserved */
 		uint32 bitsperpel; /* reserved */
 		uint32 pelswidth; /* reserved */
@@ -1197,9 +1199,9 @@
 		[relative] nstring *data_file;
 		[relative] nstring *config_file;
 		[relative] nstring *help_file;
+		[relative] nstring_array *dependent_files;
 		[relative] nstring *monitor_name;
 		[relative] nstring *default_datatype;
-		[relative] nstring_array *dependent_files;
 		[relative] nstring_array *previous_names;
 		NTTIME driver_date;
 		hyper driver_version;
@@ -1491,8 +1493,12 @@
 	const string SPL_ARCH_IA64		= "IA64";
 	const string SPL_ARCH_X64		= "x64";
 
-	const string SPOOLSS_ARCHITECTURE_ALL			= "all";
+	const string SPOOLSS_ARCHITECTURE_ALL			= "All";
+	const string SPOOLSS_ARCHITECTURE_ALL_CLUSTER		= "AllCluster";
 	const string SPOOLSS_ARCHITECTURE_NT_X86		= "Windows NT x86";
+	const string SPOOLSS_ARCHITECTURE_IA_64			= "Windows IA64";
+	const string SPOOLSS_ARCHITECTURE_x64			= "Windows x64";
+	const string SPOOLSS_ARCHITECTURE_4_0			= "Windows 4.0";
 	const string SPOOLSS_DEFAULT_SERVER_PATH		= "C:\\WINDOWS\\system32\\spool";
 
 	typedef [public,gensize] struct {
@@ -1518,7 +1524,7 @@
 		uint8 reserved;
 	} spoolss_OSVersionEx;
 
-	typedef [nodiscriminant,public,gensize] union {
+	typedef [nodiscriminant,public] union {
 		[case(REG_NONE)];
 		[case(REG_SZ)] nstring string;
 		[case(REG_BINARY),flag(NDR_REMAINING)] DATA_BLOB binary;
@@ -1691,7 +1697,8 @@
 		[relative] nstring *mui_dll;
 		uint32 ressource_id;
 		[relative] nstring *display_name;
-		uint32 lang_id;
+		uint16 lang_id;
+		uint16 unused;
 	} spoolss_FormInfo2;
 
 	typedef [nodiscriminant,relative_base,public,gensize] union {
@@ -2518,24 +2525,49 @@
 
 	/******************/
 	/* Function: 0x4d */
-	WERROR spoolss_SetPrinterDataEx(
+	[noopnum,nopull,noprint,public] WERROR _spoolss_SetPrinterDataEx(
 		[in,ref] policy_handle *handle,
-		[in] 	 [string,charset(UTF16)] uint16 key_name[],
-		[in] 	 [string,charset(UTF16)] uint16 value_name[],
-		[in] 	 winreg_Type type,
-		[in,ref] [size_is(offered)] uint8 *buffer,
-		[in] 	 uint32 offered
+		[in] [string,charset(UTF16)] uint16 key_name[],
+		[in] [string,charset(UTF16)] uint16 value_name[],
+		[in] winreg_Type type,
+		[in] DATA_BLOB data,
+		[in] uint32 _offered
 	);
+	[noopnum,nopull,noprint,public] void __spoolss_SetPrinterDataEx(
+		[in] winreg_Type type,
+		[out,ref,switch_is(type)] spoolss_PrinterData *data
+	);
+	[nopush] WERROR spoolss_SetPrinterDataEx(
+		[in,ref] policy_handle *handle,
+		[in] [string,charset(UTF16)] uint16 key_name[],
+		[in] [string,charset(UTF16)] uint16 value_name[],
+		[in] winreg_Type type,
+		[in,subcontext(4),switch_is(type)] spoolss_PrinterData data,
+		[in,value(ndr_size_spoolss_PrinterData(&data,type,ndr->iconv_convenience,flags))] uint32 _offered
+	);
 
 	/******************/
 	/* Function: 0x4e */
-	WERROR spoolss_GetPrinterDataEx(
+	[noopnum,noprint,public] WERROR _spoolss_GetPrinterDataEx(
 		[in,ref] policy_handle *handle,
 		[in] 	 [string,charset(UTF16)] uint16 key_name[],
 		[in] 	 [string,charset(UTF16)] uint16 value_name[],
+		[in] 	 uint32 offered,
 		[out,ref] winreg_Type *type,
-		[out,ref] [size_is(offered)] uint8 *buffer,
+		[out,ref] DATA_BLOB *data,
+		[out,ref] uint32 *needed
+	);
+	[noopnum,noprint,public] void __spoolss_GetPrinterDataEx(
+		[in] winreg_Type type,
+		[out,ref,switch_is(type)] spoolss_PrinterData *data
+	);
+	[nopull,nopush,public] WERROR spoolss_GetPrinterDataEx(
+		[in,ref] policy_handle *handle,
+		[in] 	 [string,charset(UTF16)] uint16 key_name[],
+		[in] 	 [string,charset(UTF16)] uint16 value_name[],
 		[in] 	 uint32 offered,
+		[out,ref] winreg_Type *type,
+		[out,ref,subcontext(4),subcontext_size(offered),switch_is(*type)] spoolss_PrinterData *data,
 		[out,ref] uint32 *needed
 	);
 
@@ -2571,12 +2603,19 @@
 		[out,ref] uint32 *needed
 	);
 
+	typedef [nodiscriminant] union {
+		[case(0)];
+		[case(1)];
+		[default] nstring_array string_array;
+	} spoolss_KeyNames;
+
 	/******************/
 	/* Function: 0x50 */
 	[public] WERROR spoolss_EnumPrinterKey(
 		[in, ref] policy_handle *handle,
 		[in] [string,charset(UTF16)] uint16 key_name[],
-		[out,ref] [size_is(offered/2)] uint16 *key_buffer,
+		[out,ref] uint32 *_ndr_size,
+		[out,ref,subcontext(0),subcontext_size(*_ndr_size*2),switch_is(*_ndr_size)] spoolss_KeyNames *key_buffer,
 		[in] uint32 offered,
 		[out,ref] uint32 *needed
 	);

Modified: branches/samba/experimental/librpc/ndr/ndr_drsuapi.c
===================================================================
--- branches/samba/experimental/librpc/ndr/ndr_drsuapi.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/ndr/ndr_drsuapi.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -351,3 +351,9 @@
 	}
 	return NDR_ERR_SUCCESS;
 }
+
+_PUBLIC_ size_t ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(const struct drsuapi_DsReplicaObjectIdentifier3Binary *r, struct smb_iconv_convenience *ic, int flags)
+{
+	return ndr_size_struct((const struct drsuapi_DsReplicaObjectIdentifier3 *)r, flags, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3, ic);
+}
+

Modified: branches/samba/experimental/librpc/ndr/ndr_drsuapi.h
===================================================================
--- branches/samba/experimental/librpc/ndr/ndr_drsuapi.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/ndr/ndr_drsuapi.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -32,4 +32,6 @@
 enum ndr_err_code ndr_pull_drsuapi_DsReplicaOID(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaOID *r);
 size_t ndr_size_drsuapi_DsReplicaOID_oid(const char *oid, int flags);
 
+size_t ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(const struct drsuapi_DsReplicaObjectIdentifier3Binary *r, struct smb_iconv_convenience *ic, int flags);
+
 #endif /* _LIBRPC_NDR_NDR_DRSUAPI_H */

Modified: branches/samba/experimental/librpc/ndr/ndr_spoolss_buf.c
===================================================================
--- branches/samba/experimental/librpc/ndr/ndr_spoolss_buf.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/ndr/ndr_spoolss_buf.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -693,6 +693,153 @@
 	return NDR_ERR_SUCCESS;
 }
 
+/*
+  spoolss_GetPrinterDataEx
+*/
+enum ndr_err_code ndr_push_spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDataEx *r)
+{
+	struct _spoolss_GetPrinterDataEx _r;
+	if (flags & NDR_IN) {
+		_r.in.handle	= r->in.handle;
+		_r.in.key_name	= r->in.key_name;
+		_r.in.value_name= r->in.value_name;
+		_r.in.offered	= r->in.offered;
+		NDR_CHECK(ndr_push__spoolss_GetPrinterDataEx(ndr, flags, &_r));
+	}
+	if (flags & NDR_OUT) {
+		struct ndr_push *_ndr_info;
+		DATA_BLOB blob = data_blob(NULL, 0);
+		_r.in.handle	= r->in.handle;
+		_r.in.key_name	= r->in.key_name;
+		_r.in.value_name= r->in.value_name;
+		_r.in.offered	= r->in.offered;
+		_r.out.type	= r->out.type;
+		_r.out.data	= &blob;
+		_r.out.needed	= r->out.needed;
+		_r.out.result	= r->out.result;
+		{
+			struct __spoolss_GetPrinterDataEx __r;
+			DATA_BLOB _blob;
+			_ndr_info = ndr_push_init_ctx(ndr, ndr->iconv_convenience);
+			NDR_ERR_HAVE_NO_MEMORY(_ndr_info);
+			_ndr_info->flags= ndr->flags;
+			__r.in.type	= *r->out.type;
+			__r.out.data	= r->out.data;
+			NDR_CHECK(ndr_push___spoolss_GetPrinterDataEx(_ndr_info, flags, &__r));
+			if (r->in.offered > _ndr_info->offset) {
+				uint32_t _padding_len = r->in.offered - _ndr_info->offset;
+				NDR_CHECK(ndr_push_zero(_ndr_info, _padding_len));
+			}
+			_blob = ndr_push_blob(_ndr_info);
+			_r.out.data = &_blob;
+		}
+		NDR_CHECK(ndr_push__spoolss_GetPrinterDataEx(ndr, flags, &_r));
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+enum ndr_err_code ndr_pull_spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDataEx *r)
+{
+	struct _spoolss_GetPrinterDataEx _r;
+	if (flags & NDR_IN) {
+		DATA_BLOB blob = data_blob(NULL,0);
+		ZERO_STRUCT(r->out);
+
+		_r.in.handle	= r->in.handle;
+		_r.in.key_name	= r->in.key_name;
+		_r.in.value_name= r->in.value_name;
+		_r.in.offered	= r->in.offered;
+		_r.out.type	= r->out.type;
+		_r.out.data	= &blob;
+		_r.out.needed	= r->out.needed;
+		NDR_CHECK(ndr_pull__spoolss_GetPrinterDataEx(ndr, flags, &_r));
+		r->in.handle	= _r.in.handle;
+		r->in.key_name	= _r.in.key_name;
+		r->in.value_name= _r.in.value_name;
+		r->in.offered	= _r.in.offered;
+		r->out.needed	= _r.out.needed;
+	}
+	if (flags & NDR_OUT) {
+		DATA_BLOB blob = data_blob_talloc(ndr,NULL,0);
+		_r.in.handle	= r->in.handle;
+		_r.in.key_name	= r->in.key_name;
+		_r.in.value_name= r->in.value_name;
+		_r.in.offered	= r->in.offered;
+		_r.out.type	= r->out.type;
+		_r.out.data	= &blob;
+		_r.out.needed	= r->out.needed;
+		_r.out.result	= r->out.result;
+		NDR_CHECK(ndr_pull__spoolss_GetPrinterDataEx(ndr, flags, &_r));
+		r->out.type	= _r.out.type;
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->out.data);
+		}
+		ZERO_STRUCTP(r->out.data);
+		r->out.needed	= _r.out.needed;
+		r->out.result	= _r.out.result;
+		if (_r.out.data && _r.out.data->length != r->in.offered) {
+			return ndr_pull_error(ndr, NDR_ERR_BUFSIZE,
+				"SPOOLSS Buffer: r->in.offered[%u] doesn't match length of out buffer[%u]",
+				(unsigned)r->in.offered, (unsigned)_r.out.data->length);
+		}
+		if (_r.out.data && _r.out.data->length > 0 && *r->out.needed <= _r.out.data->length) {
+			struct __spoolss_GetPrinterDataEx __r;
+			struct ndr_pull *_ndr_data = ndr_pull_init_blob(_r.out.data, ndr, ndr->iconv_convenience);
+			NDR_ERR_HAVE_NO_MEMORY(_ndr_data);
+			_ndr_data->flags= ndr->flags;
+			__r.in.type	= *r->out.type;
+			__r.out.data	= r->out.data;
+			NDR_CHECK(ndr_pull___spoolss_GetPrinterDataEx(_ndr_data, flags, &__r));
+			r->out.data	= __r.out.data;
+		} else {
+			*r->out.type	= REG_NONE;
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+/*
+  spoolss_SetPrinterDataEx
+*/
+enum ndr_err_code ndr_push_spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterDataEx *r)
+{
+	struct _spoolss_SetPrinterDataEx _r;
+	if (flags & NDR_IN) {
+		struct ndr_push *_ndr_data;
+		struct __spoolss_SetPrinterDataEx __r;
+		DATA_BLOB _data_blob_data;
+
+		_ndr_data = ndr_push_init_ctx(ndr, ndr->iconv_convenience);
+		NDR_ERR_HAVE_NO_MEMORY(_ndr_data);
+		_ndr_data->flags= ndr->flags;
+
+		__r.in.type	= r->in.type;
+		__r.out.data	= discard_const_p(union spoolss_PrinterData, &r->in.data);
+		NDR_CHECK(ndr_push___spoolss_SetPrinterDataEx(_ndr_data, NDR_OUT, &__r));
+		_data_blob_data = ndr_push_blob(_ndr_data);
+
+		_r.in.handle	= r->in.handle;
+		_r.in.key_name	= r->in.key_name;
+		_r.in.value_name= r->in.value_name;
+		_r.in.type	= r->in.type;
+		_r.in.data	= _data_blob_data;
+		_r.in._offered	= _data_blob_data.length;
+		_r.out.result	= r->out.result;
+		NDR_CHECK(ndr_push__spoolss_SetPrinterDataEx(ndr, flags, &_r));
+	}
+	if (flags & NDR_OUT) {
+		_r.in.handle	= r->in.handle;
+		_r.in.key_name	= r->in.key_name;
+		_r.in.value_name= r->in.value_name;
+		_r.in.type	= r->in.type;
+		_r.in.data	= data_blob(NULL,0),
+		_r.in._offered	= r->in._offered;
+		_r.out.result	= r->out.result;
+		NDR_CHECK(ndr_push__spoolss_SetPrinterDataEx(ndr, flags, &_r));
+	}
+	return NDR_ERR_SUCCESS;
+}
+
 uint32_t _ndr_size_spoolss_DeviceMode(struct spoolss_DeviceMode *devmode, struct smb_iconv_convenience *ic, uint32_t flags)
 {
 	if (!devmode) return 0;
@@ -1208,3 +1355,11 @@
 	}
 }
 
+_PUBLIC_ size_t ndr_size_spoolss_PrinterData(const union spoolss_PrinterData *r, uint32_t level, struct smb_iconv_convenience *ic, int flags)
+{
+	if (!r) {
+		return 0;
+	}
+	return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterData, ic);
+}
+

Modified: branches/samba/experimental/librpc/ndr/ndr_spoolss_buf.h
===================================================================
--- branches/samba/experimental/librpc/ndr/ndr_spoolss_buf.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/librpc/ndr/ndr_spoolss_buf.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -45,11 +45,15 @@
 enum ndr_err_code ndr_push_spoolss_GetPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterData *r);
 enum ndr_err_code ndr_pull_spoolss_GetPrinterData(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterData *r);
 enum ndr_err_code ndr_push_spoolss_SetPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterData *r);
+enum ndr_err_code ndr_push_spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDataEx *r);
+enum ndr_err_code ndr_pull_spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDataEx *r);
+enum ndr_err_code ndr_push_spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterDataEx *r);
 uint32_t _ndr_size_spoolss_DeviceMode(struct spoolss_DeviceMode *devmode, struct smb_iconv_convenience *ic, uint32_t flags);
 size_t ndr_size_spoolss_StringArray(const struct spoolss_StringArray *r, struct smb_iconv_convenience *ic, int flags);
 _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverInfo101(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverInfo101 *r);
 _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverInfo101(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverInfo101 *r);
 void ndr_print_spoolss_Field(struct ndr_print *ndr, const char *name, const union spoolss_Field *r);
+size_t ndr_size_spoolss_PrinterData(const union spoolss_PrinterData *r, uint32_t level, struct smb_iconv_convenience *ic, int flags);
 
 #undef _PRINTF_ATTRIBUTE
 #define _PRINTF_ATTRIBUTE(a1, a2)

Modified: branches/samba/experimental/nsswitch/pam_winbind.c
===================================================================
--- branches/samba/experimental/nsswitch/pam_winbind.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/nsswitch/pam_winbind.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -807,7 +807,44 @@
 	return pam_winbind_request_log(ctx, ret, username, fn);
 }
 
+#if defined(HAVE_PAM_RADIO_TYPE)
+static bool _pam_winbind_change_pwd(struct pwb_context *ctx)
+{
+	struct pam_message msg, *pmsg;
+	struct pam_response *resp = NULL;
+	const char *prompt;
+	int ret;
+	bool retval = false;
+	prompt = _("Do you want to change your password now?");
+	pmsg = &msg;
+	msg.msg_style = PAM_RADIO_TYPE;
+	msg.msg = prompt;
+	ret = converse(ctx->pamh, 1, &pmsg, &resp);
+	if (resp == NULL) {
+		if (ret == PAM_SUCCESS) {
+			_pam_log(ctx, LOG_CRIT, "pam_winbind: system error!\n");
+			return false;
+		}
+	}
+	if (ret != PAM_SUCCESS) {
+		return false;
+	}
+	_pam_log(ctx, LOG_CRIT, "Received [%s] reply from application.\n", resp->resp);
 
+	if (strcasecmp(resp->resp, "yes") == 0) {
+		retval = true;
+	}
+
+	_pam_drop_reply(resp, 1);
+	return retval;
+}
+#else
+static bool _pam_winbind_change_pwd(struct pwb_context *ctx)
+{
+	return false;
+}
+#endif
+
 /**
  * send a password expiry message if required
  *
@@ -823,15 +860,22 @@
 					      time_t next_change,
 					      time_t now,
 					      int warn_pwd_expire,
-					      bool *already_expired)
+					      bool *already_expired,
+					      bool *change_pwd)
 {
 	int days = 0;
 	struct tm tm_now, tm_next_change;
+	bool retval = false;
+	int ret;
 
 	if (already_expired) {
 		*already_expired = false;
 	}
 
+	if (change_pwd) {
+		*change_pwd = false;
+	}
+
 	if (next_change <= now) {
 		PAM_WB_REMARK_DIRECT(ctx, "NT_STATUS_PASSWORD_EXPIRED");
 		if (already_expired) {
@@ -854,15 +898,61 @@
 	       (tm_now.tm_yday+tm_now.tm_year*365);
 
 	if (days == 0) {
-		_make_remark(ctx, PAM_TEXT_INFO,
-			     _("Your password expires today"));
+		ret = _make_remark(ctx, PAM_TEXT_INFO,
+				_("Your password expires today.\n"));
+
+		/*
+		 * If change_pwd and already_expired is null.
+		 * We are just sending a notification message.
+		 * We don't expect any response in this case.
+		 */
+
+		if (!change_pwd && !already_expired) {
+			return true;
+		}
+
+		/*
+		 * successfully sent the warning message.
+		 * Give the user a chance to change pwd.
+		 */
+		if (ret == PAM_SUCCESS) {
+			if (change_pwd) {
+				retval = _pam_winbind_change_pwd(ctx);
+				if (retval) {
+					*change_pwd = true;
+				}
+			}
+		}
 		return true;
 	}
 
 	if (days > 0 && days < warn_pwd_expire) {
-		_make_remark_format(ctx, PAM_TEXT_INFO,
-				    _("Your password will expire in %d %s"),
-				    days, (days > 1) ? _("days"):_("day"));
+
+		ret = _make_remark_format(ctx, PAM_TEXT_INFO,
+					_("Your password will expire in %d %s.\n"),
+					days, (days > 1) ? _("days"):_("day"));
+		/*
+		 * If change_pwd and already_expired is null.
+		 * We are just sending a notification message.
+		 * We don't expect any response in this case.
+		 */
+
+		if (!change_pwd && !already_expired) {
+			return true;
+		}
+
+		/*
+		 * successfully sent the warning message.
+		 * Give the user a chance to change pwd.
+		 */
+		if (ret == PAM_SUCCESS) {
+			if (change_pwd) {
+				retval = _pam_winbind_change_pwd(ctx);
+				if (retval) {
+					*change_pwd = true;
+				}
+			}
+		}
 		return true;
 	}
 
@@ -883,7 +973,8 @@
 				      const struct wbcAuthUserInfo *info,
 				      const struct wbcUserPasswordPolicyInfo *policy,
 				      int warn_pwd_expire,
-				      bool *already_expired)
+				      bool *already_expired,
+				      bool *change_pwd)
 {
 	time_t now = time(NULL);
 	time_t next_change = 0;
@@ -896,6 +987,10 @@
 		*already_expired = false;
 	}
 
+	if (change_pwd) {
+		*change_pwd = false;
+	}
+
 	/* accounts with WBC_ACB_PWNOEXP set never receive a warning */
 	if (info->acct_flags & WBC_ACB_PWNOEXP) {
 		return;
@@ -911,7 +1006,8 @@
 
 	if (_pam_send_password_expiry_message(ctx, next_change, now,
 					      warn_pwd_expire,
-					      already_expired)) {
+					      already_expired,
+					      change_pwd)) {
 		return;
 	}
 
@@ -927,7 +1023,8 @@
 
 	if (_pam_send_password_expiry_message(ctx, next_change, now,
 					      warn_pwd_expire,
-					      already_expired)) {
+					      already_expired,
+					      change_pwd)) {
 		return;
 	}
 
@@ -1744,11 +1841,13 @@
 	if ((ret == PAM_SUCCESS) && user_info && policy && info) {
 
 		bool already_expired = false;
+		bool change_pwd = false;
 
 		/* warn a user if the password is about to expire soon */
 		_pam_warn_password_expiry(ctx, user_info, policy,
 					  warn_pwd_expire,
-					  &already_expired);
+					  &already_expired,
+					  &change_pwd);
 
 		if (already_expired == true) {
 
@@ -1767,6 +1866,11 @@
 			return PAM_AUTHTOK_EXPIRED;
 		}
 
+		if (change_pwd) {
+			ret = PAM_NEW_AUTHTOK_REQD;
+			goto done;
+		}
+
 		/* inform about logon type */
 		_pam_warn_logon_type(ctx, user, user_info->user_flags);
 
@@ -3123,7 +3227,7 @@
 				 * expire soon */
 				_pam_warn_password_expiry(ctx, user_info, policy,
 							  warn_pwd_expire,
-							  NULL);
+							  NULL, NULL);
 
 				/* set some info3 info for other modules in the
 				 * stack */

Modified: branches/samba/experimental/nsswitch/winbind_krb5_locator.c
===================================================================
--- branches/samba/experimental/nsswitch/winbind_krb5_locator.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/nsswitch/winbind_krb5_locator.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -26,7 +26,11 @@
 
 #if defined(HAVE_KRB5) && defined(HAVE_KRB5_LOCATE_PLUGIN_H)
 
-#include <krb5/krb5.h>
+#if HAVE_COM_ERR_H
+#include <com_err.h>
+#endif
+
+#include <krb5.h>
 #include <krb5/locate_plugin.h>
 
 #ifndef KRB5_PLUGIN_NO_HANDLE

Modified: branches/samba/experimental/packaging/RHEL/makerpms.git.sh
===================================================================
--- branches/samba/experimental/packaging/RHEL/makerpms.git.sh	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/packaging/RHEL/makerpms.git.sh	2009-12-16 21:43:48 UTC (rev 3157)
@@ -29,7 +29,7 @@
 
 DIRNAME=$(dirname $0)
 TOPDIR=${DIRNAME}/../..
-SRCDIR=${TOPDIR}/source
+SRCDIR=${TOPDIR}/source3
 VERSION_H=${SRCDIR}/include/version.h
 
 SPECFILE="samba.spec"
@@ -61,8 +61,8 @@
 	exit 1
 fi
 
-VERSION=`grep SAMBA_VERSION_OFFICIAL_STRING ${VERSION_H} | awk '{print $3}'`
-vendor_version=`grep SAMBA_VERSION_VENDOR_SUFFIX ${VERSION_H} | awk '{print $3}'`
+VERSION=`grep "^#define SAMBA_VERSION_OFFICIAL_STRING " ${VERSION_H} | awk '{print $3}'`
+vendor_version=`grep "^#define SAMBA_VERSION_VENDOR_SUFFIX " ${VERSION_H} | awk '{print $3}'`
 if test "x${vendor_version}"  != "x" ; then
 	VERSION="${VERSION}-${vendor_version}"
 fi

Modified: branches/samba/experimental/packaging/RHEL/makerpms.sh
===================================================================
--- branches/samba/experimental/packaging/RHEL/makerpms.sh	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/packaging/RHEL/makerpms.sh	2009-12-16 21:43:48 UTC (rev 3157)
@@ -16,11 +16,11 @@
 SPECDIR=`rpm --eval %_specdir`
 SRCDIR=`rpm --eval %_sourcedir`
 
-# At this point the SPECDIR and SRCDIR vaiables must have a value!
+# At this point the SPECDIR and SRCDIR variables must have a value!
 
 USERID=`id -u`
 GRPID=`id -g`
-VERSION='3.5.0pre1'
+VERSION='3.5.0pre2'
 REVISION=''
 SPECFILE="samba.spec"
 RPMVER=`rpm --version | awk '{print $3}'`

Modified: branches/samba/experimental/packaging/RHEL/makerpms.sh.tmpl
===================================================================
--- branches/samba/experimental/packaging/RHEL/makerpms.sh.tmpl	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/packaging/RHEL/makerpms.sh.tmpl	2009-12-16 21:43:48 UTC (rev 3157)
@@ -16,7 +16,7 @@
 SPECDIR=`rpm --eval %_specdir`
 SRCDIR=`rpm --eval %_sourcedir`
 
-# At this point the SPECDIR and SRCDIR vaiables must have a value!
+# At this point the SPECDIR and SRCDIR variables must have a value!
 
 USERID=`id -u`
 GRPID=`id -g`

Modified: branches/samba/experimental/packaging/RHEL/samba.spec
===================================================================
--- branches/samba/experimental/packaging/RHEL/samba.spec	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/packaging/RHEL/samba.spec	2009-12-16 21:43:48 UTC (rev 3157)
@@ -5,7 +5,7 @@
 Vendor: Samba Team
 Packager: Samba Team <samba at samba.org>
 Name:         samba
-Version:      3.5.0pre1
+Version:      3.5.0pre2
 Release:      1
 Epoch:        0
 License: GNU GPL version 3

Modified: branches/samba/experimental/packaging/RHEL-CTDB/samba.spec
===================================================================
--- branches/samba/experimental/packaging/RHEL-CTDB/samba.spec	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/packaging/RHEL-CTDB/samba.spec	2009-12-16 21:43:48 UTC (rev 3157)
@@ -5,7 +5,7 @@
 Vendor: Samba Team
 Packager: Samba Team <samba at samba.org>
 Name:         samba
-Version:      3.5.0pre1
+Version:      3.5.0pre2
 Release:      1GITHASH
 Epoch:        0
 License: GNU GPL version 3
@@ -268,8 +268,18 @@
 
 
 make -j %{numcpu} %{?_smp_mflags} \
-	all modules pam_smbpass
+	everything modules pam_smbpass
 
+# check that desired suppor has been compiled into smbd:
+export LD_LIBRARY_PATH=./bin
+for test in HAVE_POSIX_ACLS HAVE_LDAP HAVE_KRB5 HAVE_GPFS CLUSTER_SUPPORT
+do
+	if ! $(./bin/smbd -b | grep -q $test ) ; then
+		echo "ERROR: '$test' is not in smbd. Build stopped."
+		exit 1;
+	fi
+done
+
 # Remove some permission bits to avoid to many dependencies
 cd ..
 find examples docs -type f | xargs -r chmod -x
@@ -302,6 +312,9 @@
 cd source3
 make DESTDIR=$RPM_BUILD_ROOT \
         install
+
+make DESTDIR=$RPM_BUILD_ROOT \
+        install-dbwrap_tool install-dbwrap_torture
 cd ..
 
 # NSS winbind support
@@ -457,9 +470,35 @@
 %{_bindir}/tdbdump
 %{_bindir}/eventlogadm
 
-%{_libarchdir}/samba/vfs/*.so
-%{_libarchdir}/samba/auth/*.so
+%{_libarchdir}/samba/auth/script.so
+%{_libarchdir}/samba/vfs/acl_tdb.so
+%{_libarchdir}/samba/vfs/acl_xattr.so
+%{_libarchdir}/samba/vfs/aio_fork.so
+%{_libarchdir}/samba/vfs/audit.so
+%{_libarchdir}/samba/vfs/cap.so
+%{_libarchdir}/samba/vfs/default_quota.so
+%{_libarchdir}/samba/vfs/dirsort.so
+%{_libarchdir}/samba/vfs/expand_msdfs.so
+%{_libarchdir}/samba/vfs/extd_audit.so
+%{_libarchdir}/samba/vfs/fake_perms.so
+%{_libarchdir}/samba/vfs/fileid.so
+%{_libarchdir}/samba/vfs/full_audit.so
+%{_libarchdir}/samba/vfs/gpfs.so
+%{_libarchdir}/samba/vfs/netatalk.so
+%{_libarchdir}/samba/vfs/preopen.so
+%{_libarchdir}/samba/vfs/readahead.so
+%{_libarchdir}/samba/vfs/readonly.so
+%{_libarchdir}/samba/vfs/recycle.so
+%{_libarchdir}/samba/vfs/shadow_copy.so
+%{_libarchdir}/samba/vfs/shadow_copy2.so
+%{_libarchdir}/samba/vfs/smb_traffic_analyzer.so
+%{_libarchdir}/samba/vfs/streams_depot.so
+%{_libarchdir}/samba/vfs/streams_xattr.so
+%{_libarchdir}/samba/vfs/syncops.so
+%{_libarchdir}/samba/vfs/tsmsm.so
+%{_libarchdir}/samba/vfs/xattr_tdb.so
 
+
 %{_mandir}/man1/smbcontrol.1*
 %{_mandir}/man1/smbstatus.1*
 %{_mandir}/man1/vfstest.1*
@@ -543,33 +582,42 @@
 %config(noreplace) %{_sysconfdir}/samba/lmhosts
 %attr(755,root,root) %config %{initdir}/winbind
 
-#%attr(755,root,root) /%{_libarch}/libnss_wins.so*
-%attr(755,root,root) /%{_libarch}/libnss_winbind.so*
+%attr(755,root,root) /%{_libarch}/libnss_winbind.so
+%attr(755,root,root) /%{_libarch}/libnss_winbind.so.2
 %attr(755,root,root) /%{_libarch}/security/pam_winbind.so
 %attr(755,root,root) /%{_libarch}/security/pam_smbpass.so
 /usr/share/locale/*/LC_MESSAGES/pam_winbind.mo
 
-%{_libarchdir}/samba/idmap/*.so
-%{_libarchdir}/samba/nss_info/*.so
+%{_libarchdir}/samba/charset/CP437.so
+%{_libarchdir}/samba/charset/CP850.so
+%{_libarchdir}/samba/idmap/ad.so
+%{_libarchdir}/samba/idmap/rid.so
+%{_libarchdir}/samba/idmap/tdb2.so
+%{_libarchdir}/samba/lowcase.dat
+%{_libarchdir}/samba/nss_info/rfc2307.so
+%{_libarchdir}/samba/nss_info/sfu.so
+%{_libarchdir}/samba/nss_info/sfu20.so
+%{_libarchdir}/samba/upcase.dat
+%{_libarchdir}/samba/valid.dat
 
 %{_includedir}/libsmbclient.h
 %{_libarchdir}/libsmbclient.*
-#%{_includedir}/libmsrpc.h
-#%{_libarchdir}/libmsrpc.*
 %{_includedir}/smb_share_modes.h
-%{_libarchdir}/libsmbsharemodes.*
+%{_libarchdir}/libsmbsharemodes.so
+%{_libarchdir}/libsmbsharemodes.so.0
 
-%{_libarchdir}/samba/*.dat
-%{_libarchdir}/samba/charset/*.so
-
 %{_includedir}/netapi.h
 %{_includedir}/wbclient.h
 %{_includedir}/talloc.h
 %{_includedir}/tdb.h
-%{_libarchdir}/libnetapi.so*
-%{_libarchdir}/libtalloc.so*
-%{_libarchdir}/libtdb.so*
-%{_libarchdir}/libwbclient.so*
+%{_libarchdir}/libnetapi.so
+%{_libarchdir}/libnetapi.so.0
+%{_libarchdir}/libtalloc.so
+%{_libarchdir}/libtalloc.so.1
+%{_libarchdir}/libtdb.so
+%{_libarchdir}/libtdb.so.1
+%{_libarchdir}/libwbclient.so
+%{_libarchdir}/libwbclient.so.0
 
 %{_libarchdir}/krb5/plugins/libkrb5/winbind_krb5_locator.so
 
@@ -590,6 +638,8 @@
 %{_bindir}/ntlm_auth
 %{_bindir}/pdbedit
 %{_bindir}/smbcquotas
+%{_bindir}/dbwrap_tool
+%{_bindir}/dbwrap_torture
 
 %{_mandir}/man1/ntlm_auth.1*
 %{_mandir}/man1/profiles.1*
@@ -614,11 +664,14 @@
 
 %ifarch x86_64 ppc64
 %files winbind-32bit
-%attr(755,root,root) /lib/libnss_winbind.so*
-#%attr(755,root,root) /lib/libnss_wins.so*
-%attr(755,root,root) /usr/lib/libtalloc.so*
-%attr(755,root,root) /usr/lib/libtdb.so*
-%attr(755,root,root) /usr/lib/libwbclient.so*
+%attr(755,root,root) /lib/libnss_winbind.so
+%attr(755,root,root) /lib/libnss_winbind.so.2
+%attr(755,root,root) /usr/lib/libtalloc.so
+%attr(755,root,root) /usr/lib/libtalloc.so.1
+%attr(755,root,root) /usr/lib/libtdb.so
+%attr(755,root,root) /usr/lib/libtdb.so.1
+%attr(755,root,root) /usr/lib/libwbclient.so
+%attr(755,root,root) /usr/lib/libwbclient.so.0
 %attr(755,root,root) /lib/security/pam_winbind.so
 %endif
 

Modified: branches/samba/experimental/packaging/RHEL-CTDB/samba.spec.tmpl
===================================================================
--- branches/samba/experimental/packaging/RHEL-CTDB/samba.spec.tmpl	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/packaging/RHEL-CTDB/samba.spec.tmpl	2009-12-16 21:43:48 UTC (rev 3157)
@@ -268,8 +268,18 @@
 
 
 make -j %{numcpu} %{?_smp_mflags} \
-	all modules pam_smbpass
+	everything modules pam_smbpass
 
+# check that desired suppor has been compiled into smbd:
+export LD_LIBRARY_PATH=./bin
+for test in HAVE_POSIX_ACLS HAVE_LDAP HAVE_KRB5 HAVE_GPFS CLUSTER_SUPPORT
+do
+	if ! $(./bin/smbd -b | grep -q $test ) ; then
+		echo "ERROR: '$test' is not in smbd. Build stopped."
+		exit 1;
+	fi
+done
+
 # Remove some permission bits to avoid to many dependencies
 cd ..
 find examples docs -type f | xargs -r chmod -x
@@ -302,6 +312,9 @@
 cd source3
 make DESTDIR=$RPM_BUILD_ROOT \
         install
+
+make DESTDIR=$RPM_BUILD_ROOT \
+        install-dbwrap_tool install-dbwrap_torture
 cd ..
 
 # NSS winbind support
@@ -457,9 +470,35 @@
 %{_bindir}/tdbdump
 %{_bindir}/eventlogadm
 
-%{_libarchdir}/samba/vfs/*.so
-%{_libarchdir}/samba/auth/*.so
+%{_libarchdir}/samba/auth/script.so
+%{_libarchdir}/samba/vfs/acl_tdb.so
+%{_libarchdir}/samba/vfs/acl_xattr.so
+%{_libarchdir}/samba/vfs/aio_fork.so
+%{_libarchdir}/samba/vfs/audit.so
+%{_libarchdir}/samba/vfs/cap.so
+%{_libarchdir}/samba/vfs/default_quota.so
+%{_libarchdir}/samba/vfs/dirsort.so
+%{_libarchdir}/samba/vfs/expand_msdfs.so
+%{_libarchdir}/samba/vfs/extd_audit.so
+%{_libarchdir}/samba/vfs/fake_perms.so
+%{_libarchdir}/samba/vfs/fileid.so
+%{_libarchdir}/samba/vfs/full_audit.so
+%{_libarchdir}/samba/vfs/gpfs.so
+%{_libarchdir}/samba/vfs/netatalk.so
+%{_libarchdir}/samba/vfs/preopen.so
+%{_libarchdir}/samba/vfs/readahead.so
+%{_libarchdir}/samba/vfs/readonly.so
+%{_libarchdir}/samba/vfs/recycle.so
+%{_libarchdir}/samba/vfs/shadow_copy.so
+%{_libarchdir}/samba/vfs/shadow_copy2.so
+%{_libarchdir}/samba/vfs/smb_traffic_analyzer.so
+%{_libarchdir}/samba/vfs/streams_depot.so
+%{_libarchdir}/samba/vfs/streams_xattr.so
+%{_libarchdir}/samba/vfs/syncops.so
+%{_libarchdir}/samba/vfs/tsmsm.so
+%{_libarchdir}/samba/vfs/xattr_tdb.so
 
+
 %{_mandir}/man1/smbcontrol.1*
 %{_mandir}/man1/smbstatus.1*
 %{_mandir}/man1/vfstest.1*
@@ -543,33 +582,42 @@
 %config(noreplace) %{_sysconfdir}/samba/lmhosts
 %attr(755,root,root) %config %{initdir}/winbind
 
-#%attr(755,root,root) /%{_libarch}/libnss_wins.so*
-%attr(755,root,root) /%{_libarch}/libnss_winbind.so*
+%attr(755,root,root) /%{_libarch}/libnss_winbind.so
+%attr(755,root,root) /%{_libarch}/libnss_winbind.so.2
 %attr(755,root,root) /%{_libarch}/security/pam_winbind.so
 %attr(755,root,root) /%{_libarch}/security/pam_smbpass.so
 /usr/share/locale/*/LC_MESSAGES/pam_winbind.mo
 
-%{_libarchdir}/samba/idmap/*.so
-%{_libarchdir}/samba/nss_info/*.so
+%{_libarchdir}/samba/charset/CP437.so
+%{_libarchdir}/samba/charset/CP850.so
+%{_libarchdir}/samba/idmap/ad.so
+%{_libarchdir}/samba/idmap/rid.so
+%{_libarchdir}/samba/idmap/tdb2.so
+%{_libarchdir}/samba/lowcase.dat
+%{_libarchdir}/samba/nss_info/rfc2307.so
+%{_libarchdir}/samba/nss_info/sfu.so
+%{_libarchdir}/samba/nss_info/sfu20.so
+%{_libarchdir}/samba/upcase.dat
+%{_libarchdir}/samba/valid.dat
 
 %{_includedir}/libsmbclient.h
 %{_libarchdir}/libsmbclient.*
-#%{_includedir}/libmsrpc.h
-#%{_libarchdir}/libmsrpc.*
 %{_includedir}/smb_share_modes.h
-%{_libarchdir}/libsmbsharemodes.*
+%{_libarchdir}/libsmbsharemodes.so
+%{_libarchdir}/libsmbsharemodes.so.0
 
-%{_libarchdir}/samba/*.dat
-%{_libarchdir}/samba/charset/*.so
-
 %{_includedir}/netapi.h
 %{_includedir}/wbclient.h
 %{_includedir}/talloc.h
 %{_includedir}/tdb.h
-%{_libarchdir}/libnetapi.so*
-%{_libarchdir}/libtalloc.so*
-%{_libarchdir}/libtdb.so*
-%{_libarchdir}/libwbclient.so*
+%{_libarchdir}/libnetapi.so
+%{_libarchdir}/libnetapi.so.0
+%{_libarchdir}/libtalloc.so
+%{_libarchdir}/libtalloc.so.1
+%{_libarchdir}/libtdb.so
+%{_libarchdir}/libtdb.so.1
+%{_libarchdir}/libwbclient.so
+%{_libarchdir}/libwbclient.so.0
 
 %{_libarchdir}/krb5/plugins/libkrb5/winbind_krb5_locator.so
 
@@ -590,6 +638,8 @@
 %{_bindir}/ntlm_auth
 %{_bindir}/pdbedit
 %{_bindir}/smbcquotas
+%{_bindir}/dbwrap_tool
+%{_bindir}/dbwrap_torture
 
 %{_mandir}/man1/ntlm_auth.1*
 %{_mandir}/man1/profiles.1*
@@ -614,11 +664,14 @@
 
 %ifarch x86_64 ppc64
 %files winbind-32bit
-%attr(755,root,root) /lib/libnss_winbind.so*
-#%attr(755,root,root) /lib/libnss_wins.so*
-%attr(755,root,root) /usr/lib/libtalloc.so*
-%attr(755,root,root) /usr/lib/libtdb.so*
-%attr(755,root,root) /usr/lib/libwbclient.so*
+%attr(755,root,root) /lib/libnss_winbind.so
+%attr(755,root,root) /lib/libnss_winbind.so.2
+%attr(755,root,root) /usr/lib/libtalloc.so
+%attr(755,root,root) /usr/lib/libtalloc.so.1
+%attr(755,root,root) /usr/lib/libtdb.so
+%attr(755,root,root) /usr/lib/libtdb.so.1
+%attr(755,root,root) /usr/lib/libwbclient.so
+%attr(755,root,root) /usr/lib/libwbclient.so.0
 %attr(755,root,root) /lib/security/pam_winbind.so
 %endif
 

Modified: branches/samba/experimental/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
===================================================================
--- branches/samba/experimental/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm	2009-12-16 21:43:48 UTC (rev 3157)
@@ -105,7 +105,7 @@
 		} else {
 			my $size_is = ParseExpr($l->{SIZE_IS}, $env, $e->{ORIGINAL});
 			if (has_property($e, "charset")) {
-				$self->pidl("memcpy(discard_const_p(uint8_t, $o$e->{NAME}), ${r}out.$e->{NAME}, ($size_is) * sizeof(*$o$e->{NAME}));");
+				$self->pidl("memcpy(discard_const_p(uint8_t *, $o$e->{NAME}), ${r}out.$e->{NAME}, ($size_is) * sizeof(*$o$e->{NAME}));");
 			} else {
 				$self->pidl("memcpy($o$e->{NAME}, ${r}out.$e->{NAME}, ($size_is) * sizeof(*$o$e->{NAME}));");
 			}

Modified: branches/samba/experimental/release-scripts/create-tarball
===================================================================
--- branches/samba/experimental/release-scripts/create-tarball	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/release-scripts/create-tarball	2009-12-16 21:43:48 UTC (rev 3157)
@@ -213,10 +213,10 @@
     # Remove RFCs as they are non-free content (with a strict interpretation of
     # the DFSG)
 
-    if [ -d source4 ]; then
-	echo "Removing RFCs"
-	find source4/ -name "rfc*.txt" -exec rm -f {} \;
-    fi
+    #if [ -d source4 ]; then
+    #	echo "Removing RFCs"
+    #	find source4/ -name "rfc*.txt" -exec rm -f {} \;
+    #fi
 
     packaging/bin/update-pkginfo ${version} 1 ""
 

Modified: branches/samba/experimental/source3/Makefile.in
===================================================================
--- branches/samba/experimental/source3/Makefile.in	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/Makefile.in	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1061,9 +1061,7 @@
                $(LIBSMB_OBJ) $(LDB_OBJ) $(LIB_NONSMBD_OBJ) \
                $(LIBNDR_GEN_OBJ0) $(FNAME_UTIL_OBJ)
 
-NSSTEST_OBJ = torture/nsstest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(LDB_OBJ) $(KRBCLIENT_OBJ) \
-                 $(LIB_NONSMBD_OBJ) \
-		 $(LIBNDR_GEN_OBJ0)
+NSSTEST_OBJ = torture/nsstest.o $(LIBSAMBAUTIL_OBJ)
 
 PDBTEST_OBJ = torture/pdbtest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
 		$(LIB_NONSMBD_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
@@ -1716,11 +1714,9 @@
 		$(LIBS) $(KRB5LIBS) $(LDAP_LIBS) $(POPT_LIBS) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(ZLIB_LIBS)
 
-bin/nsstest at EXEEXT@: $(BINARY_PREREQS) $(NSSTEST_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB)
+bin/nsstest at EXEEXT@: $(BINARY_PREREQS) $(NSSTEST_OBJ)
 	@echo Linking $@
-	@$(CC) -o $@ $(NSSTEST_OBJ) $(LDFLAGS) $(DYNEXP) \
-		$(LIBS) $(KRB5LIBS)  $(LDAP_LIBS) $(POPT_LIBS) \
-		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(ZLIB_LIBS)
+	@$(CC) -o $@ $(NSSTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS)
 
 bin/pdbtest at EXEEXT@: $(BINARY_PREREQS) $(PDBTEST_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
 	@echo Linking $@

Modified: branches/samba/experimental/source3/VERSION
===================================================================
--- branches/samba/experimental/source3/VERSION	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/VERSION	2009-12-16 21:43:48 UTC (rev 3157)
@@ -46,7 +46,7 @@
 # e.g. SAMBA_VERSION_PRE_RELEASE=1                     #
 #  ->  "2.2.9pre1"                                     #
 ########################################################
-SAMBA_VERSION_PRE_RELEASE=1
+SAMBA_VERSION_PRE_RELEASE=2
 
 ########################################################
 # For 'rc' releases the version will be                #

Modified: branches/samba/experimental/source3/auth/auth_sam.c
===================================================================
--- branches/samba/experimental/source3/auth/auth_sam.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/auth/auth_sam.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -206,13 +206,13 @@
 		/* check for immediate expiry "must change at next logon" 
 		 * for a user account. */
 		if (((acct_ctrl & (ACB_WSTRUST|ACB_SVRTRUST)) == 0) && (last_set_time == 0)) {
-			DEBUG(1,("sam_account_ok: Account for user '%s' password must change!.\n", pdb_get_username(sampass)));
+			DEBUG(1,("sam_account_ok: Account for user '%s' password must change!\n", pdb_get_username(sampass)));
 			return NT_STATUS_PASSWORD_MUST_CHANGE;
 		}
 
 		/* check for expired password */
 		if (must_change_time < time(NULL) && must_change_time != 0) {
-			DEBUG(1,("sam_account_ok: Account for user '%s' password expired!.\n", pdb_get_username(sampass)));
+			DEBUG(1,("sam_account_ok: Account for user '%s' password expired!\n", pdb_get_username(sampass)));
 			DEBUG(1,("sam_account_ok: Password expired at '%s' (%ld) unix time.\n", http_timestring(talloc_tos(), must_change_time), (long)must_change_time));
 			return NT_STATUS_PASSWORD_EXPIRED;
 		}

Modified: branches/samba/experimental/source3/client/client.c
===================================================================
--- branches/samba/experimental/source3/client/client.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/client/client.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,7 +23,8 @@
 
 #include "includes.h"
 #include "client/client_proto.h"
-#include "include/rpc_client.h"
+#include "../librpc/gen_ndr/cli_srvsvc.h"
+
 #ifndef REGISTER
 #define REGISTER 0
 #endif
@@ -1744,7 +1745,7 @@
 		SMB_STRUCT_STAT st;
 		/* allow '-' to represent stdin
 		   jdblair, 24.jun.98 */
-		if (!file_exist_stat(lname,&st) &&
+		if (!file_exist_stat(lname, &st, false) &&
 		    (strcmp(lname,"-"))) {
 			d_printf("%s does not exist\n",lname);
 			return 1;
@@ -3435,7 +3436,7 @@
 	SMB_STRUCT_STAT sbuf;
 
 	ok = next_token_talloc(ctx, &cmd_ptr,&buf,NULL);
-	if (ok && (sys_stat(buf,&sbuf) == 0)) {
+	if (ok && (sys_stat(buf, &sbuf, false) == 0)) {
 		newer_than = convert_timespec_to_time_t(sbuf.st_ex_mtime);
 		DEBUG(1,("Getting files newer than %s",
 			 time_to_asc(newer_than)));
@@ -3614,7 +3615,7 @@
 		return 1;
 	}
 
-	if (!file_exist_stat(local_name, &st)) {
+	if (!file_exist_stat(local_name, &st, false)) {
 		d_printf("%s does not exist\n", local_name);
 		return 1;
 	}

Modified: branches/samba/experimental/source3/client/clitar.c
===================================================================
--- branches/samba/experimental/source3/client/clitar.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/client/clitar.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -404,7 +404,7 @@
 	(void) dozerobuf(f, TBLOCK);
 	(void) dozerobuf(f, TBLOCK);
 
-	if (sys_fstat(f, &stbuf) == -1) {
+	if (sys_fstat(f, &stbuf, false) == -1) {
 		DEBUG(0, ("Couldn't stat file handle\n"));
 		return;
 	}
@@ -1792,7 +1792,8 @@
 				} else {
 					SMB_STRUCT_STAT stbuf;
 
-					if (sys_stat(argv[Optind], &stbuf) == 0) {
+					if (sys_stat(argv[Optind], &stbuf,
+						     false) == 0) {
 						newer_than = convert_timespec_to_time_t(
 							stbuf.st_ex_mtime);
 						DEBUG(1,("Getting files newer than %s",

Modified: branches/samba/experimental/source3/configure
===================================================================
--- branches/samba/experimental/source3/configure	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/configure	2009-12-16 21:43:48 UTC (rev 3157)
@@ -712,6 +712,12 @@
 WBCLIENT_LDFLAGS
 WBCLIENT_INCLUDES
 CTDB_CFLAGS
+KRB5CONFIG
+LDBLDAP
+SMBLDAPUTIL
+SMBLDAP
+FAKE_KASERVER_OBJ
+SMB_FAM_LIBS
 LIBADDNS_SOVER
 UNINSTALL_LIBADDNS
 INSTALL_LIBADDNS
@@ -785,12 +791,6 @@
 LIBTALLOC_CFLAGS
 PKG_CONFIG
 USESHARED
-KRB5CONFIG
-LDBLDAP
-SMBLDAPUTIL
-SMBLDAP
-FAKE_KASERVER_OBJ
-SMB_FAM_LIBS
 LIB_PATH_VAR
 ROFF
 SYMSEXT
@@ -1003,6 +1003,16 @@
 enable_shared
 enable_pie
 enable_relro
+enable_shared_libs
+with_static_libs
+enable_external_libtalloc
+with_libtalloc
+enable_external_libtdb
+with_libtdb
+with_libnetapi
+with_libsmbclient
+with_libsmbsharemodes
+with_libaddns
 with_libiconv
 enable_fam
 with_afs
@@ -1025,16 +1035,6 @@
 with_quotas
 with_sys_quotas
 with_utmp
-enable_shared_libs
-with_static_libs
-enable_external_libtalloc
-with_libtalloc
-enable_external_libtdb
-with_libtdb
-with_libnetapi
-with_libsmbclient
-with_libsmbsharemodes
-with_libaddns
 with_ctdb
 with_cluster_support
 with_acl_support
@@ -1718,12 +1718,12 @@
   --enable-pie            Turn on pie support if available (default=yes)
   --enable-relro          Turn on Relocations Read-Only (relro) support if
                           available (default=yes)
-  --enable-fam            Turn on FAM support (default=auto)
   --enable-shared-libs    Use shared libraries internally (default=yes)
   --enable-external-libtalloc
                           Enable external talloc [default=auto]
   --enable-external-libtdb
                           Enable external tdb [default=auto]
+  --enable-fam            Turn on FAM support (default=auto)
   --enable-dnssd          Enable DNS service discovery support (default=no)
   --enable-avahi          Enable Avahi support (default=auto)
   --enable-pthreadpool    Enable pthreads pool helper support (default=auto)
@@ -1777,6 +1777,21 @@
   --with-profiling-data   Include gathering source code profile information
                           (default=no)
   --with-readline=DIR     Look for readline include/libs in DIR (default=auto)
+  --with-static-libs=LIBS Comma-separated list of names of (internal)
+                          libraries to link statically (instead of
+                          dynamically)
+  --with-libtalloc        Build the libtalloc shared library (default=yes if
+                          shared libs supported)
+  --with-libtdb           Build the libtdb shared library (default=yes if
+                          shared libs supported)
+  --with-libnetapi        Build the libnetapi shared library (default=yes if
+                          shared libs supported)
+  --with-libsmbclient     Build the libsmbclient shared library (default=yes if
+                          shared libs supported)
+  --with-libsmbsharemodes Build the libsmbsharemodes shared library (default=yes if
+                          shared libs supported)
+  --with-libaddns         Build the libaddns shared library (default=no
+                          (undefined API))
   --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include
                           (default=auto)
   --with-afs              Include AFS clear-text auth support (default=no)
@@ -1804,21 +1819,6 @@
   --with-sys-quotas       Include lib/sysquotas.c support (default=auto)
   --with-utmp             Include utmp accounting (default, if supported by
                           OS)
-  --with-static-libs=LIBS Comma-separated list of names of (internal)
-                          libraries to link statically (instead of
-                          dynamically)
-  --with-libtalloc        Build the libtalloc shared library (default=yes if
-                          shared libs supported)
-  --with-libtdb           Build the libtdb shared library (default=yes if
-                          shared libs supported)
-  --with-libnetapi        Build the libnetapi shared library (default=yes if
-                          shared libs supported)
-  --with-libsmbclient     Build the libsmbclient shared library (default=yes if
-                          shared libs supported)
-  --with-libsmbsharemodes Build the libsmbsharemodes shared library (default=yes if
-                          shared libs supported)
-  --with-libaddns         Build the libaddns shared library (default=no
-                          (undefined API))
   --with-ctdb=DIR         Where to find ctdb sources
   --with-cluster-support  Enable cluster extensions (default=auto)
   --with-acl-support      Include ACL support (default=auto)
@@ -40631,7 +40631,9 @@
 
 
 
-for ac_func in lstat64 fopen64 atexit grantpt lseek64 ftruncate64
+
+
+for ac_func in lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64
 do
 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -51471,13 +51473,18 @@
 
   # and these are for particular systems
   case "$host_os" in
-		*linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
-			case "$host_os" in *linux*)
-
+		*linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
+			case "$host_os" in
+				*linux*)
 cat >>confdefs.h <<\_ACEOF
 #define LINUX 1
 _ACEOF
  ;;
+				*qnx*)
+cat >>confdefs.h <<\_ACEOF
+#define QNX 1
+_ACEOF
+ ;;
 			esac
 			BLDSHARED="true"
 			LDSHFLAGS="-shared -Wl,-Bsymbolic"
@@ -51672,16 +51679,6 @@
 _ACEOF
 
 			;;
-		*qnx*)
-cat >>confdefs.h <<\_ACEOF
-#define QNX 1
-_ACEOF
-
-			cat >>confdefs.h <<\_ACEOF
-#define STAT_ST_BLOCKSIZE 512
-_ACEOF
-
-			;;
 		*osf*)
 cat >>confdefs.h <<\_ACEOF
 #define OSF1 1
@@ -52128,6 +52125,2181 @@
 
 
 
+
+###########################################################
+#
+# Configuration of subsystem / libraries
+#
+###########################################################
+
+INSTALLLIBCMD_SH=:
+INSTALLLIBCMD_A=:
+UNINSTALLLIBCMD_SH=:
+UNINSTALLLIBCMD_A=:
+
+if test $BLDSHARED = true; then
+	INSTALLLIBCMD_SH="\$(INSTALLCMD)"
+	UNINSTALLLIBCMD_SH="rm -f"
+fi
+if test $enable_static = yes; then
+	INSTALLLIBCMD_A="\$(INSTALLCMD)"
+	UNINSTALLLIBCMD_A="rm -f"
+fi
+
+#################################################
+# --disable-shared-libs
+# can be used to disable the internal use of shared libs altogether
+# (this only has an effect when building shared libs is enabled)
+#
+USESHARED=false
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to use shared libraries internally" >&5
+$as_echo_n "checking whether to use shared libraries internally... " >&6; }
+# Check whether --enable-shared-libs was given.
+if test "${enable_shared_libs+set}" = set; then
+  enableval=$enable_shared_libs; enable_shared_libs=$enableval
+else
+  enable_shared_libs=yes
+fi
+
+
+if test x"$enable_shared_libs" != x"no" ; then
+	USESHARED=$BLDSHARED
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $USESHARED" >&5
+$as_echo "$USESHARED" >&6; }
+
+if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
+	{ $as_echo "$as_me:$LINENO: WARNING: --enable-shared-libs: no support for shared libraries" >&5
+$as_echo "$as_me: WARNING: --enable-shared-libs: no support for shared libraries" >&2;}
+fi
+
+#################################################
+# --with-static-libs=LIBS:
+#   link (internal) libs dynamically or statically?
+#
+# If a subsystem is built as a library then this controls whether they are
+# linked into Samba targets statically or dynamically:
+#
+# * If we build the shared library at all, we link dynamically by default.
+#
+# * We only link statically if we don't build shared or if the library
+#   appears in the --with-static-libs configure option.
+#
+# Example:
+#   --with-static-libs=libtalloc makes use of libtalloc.a instead
+#   of linking the dynamic variant with -ltalloc.
+#
+# NOTE: This option only affects libraries that we do not only build
+# but that samba also links against as libraries (as opposed to linking
+# the plain object files. - This has to be configured in Makefile.in.
+# So in particular it does not harm to give invalid or unknown names here.
+#
+
+
+# Check whether --with-static-libs was given.
+if test "${with_static_libs+set}" = set; then
+  withval=$with_static_libs; if test $withval; then
+  for lib in `echo $withval | sed -e 's/,/ /g'` ; do
+			lib=`echo $lib | tr '[a-z]' '[A-Z]'`
+			eval LINK_$lib=STATIC
+		done
+fi
+
+fi
+
+
+#
+# WORKAROUND:
+#   until we have organized other internal subsystems (as util, registry
+#   and smbconf) into shared libraries, we CAN NOT link libnetapi
+#   dynamically to samba programs.
+#
+LINK_LIBNETAPI=STATIC
+
+LINK_LIBSMBCLIENT=STATIC
+
+#
+#  The library versions are hardcoded here
+#  and filled into the LIBFOO_SOVER variable.
+#
+#  TODO: for talloc and tdb (at least), these should
+#  be extracted from their respective source directories
+#
+# Check whether --enable-external_libtalloc was given.
+if test "${enable_external_libtalloc+set}" = set; then
+  enableval=$enable_external_libtalloc;  enable_external_libtalloc=$enableval
+else
+   enable_external_libtalloc=auto
+fi
+
+
+if test "x$enable_external_libtalloc" != xno
+then
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:$LINENO: checking for LIBTALLOC" >&5
+$as_echo_n "checking for LIBTALLOC... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$LIBTALLOC_CFLAGS"; then
+        pkg_cv_LIBTALLOC_CFLAGS="$LIBTALLOC_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"talloc >= 2.0.1\"") >&5
+  ($PKG_CONFIG --exists --print-errors "talloc >= 2.0.1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_LIBTALLOC_CFLAGS=`$PKG_CONFIG --cflags "talloc >= 2.0.1" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$LIBTALLOC_LIBS"; then
+        pkg_cv_LIBTALLOC_LIBS="$LIBTALLOC_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"talloc >= 2.0.1\"") >&5
+  ($PKG_CONFIG --exists --print-errors "talloc >= 2.0.1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_LIBTALLOC_LIBS=`$PKG_CONFIG --libs "talloc >= 2.0.1" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        LIBTALLOC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "talloc >= 2.0.1"`
+        else
+	        LIBTALLOC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "talloc >= 2.0.1"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBTALLOC_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+                if test x$enable_external_libtalloc = xyes; then
+			{ { $as_echo "$as_me:$LINENO: error: Unable to find libtalloc" >&5
+$as_echo "$as_me: error: Unable to find libtalloc" >&2;}
+   { (exit 1); exit 1; }; }
+		  else
+			enable_external_libtalloc=no
+		  fi
+
+elif test $pkg_failed = untried; then
+	if test x$enable_external_libtalloc = xyes; then
+			{ { $as_echo "$as_me:$LINENO: error: Unable to find libtalloc" >&5
+$as_echo "$as_me: error: Unable to find libtalloc" >&2;}
+   { (exit 1); exit 1; }; }
+		  else
+			enable_external_libtalloc=no
+		  fi
+
+else
+	LIBTALLOC_CFLAGS=$pkg_cv_LIBTALLOC_CFLAGS
+	LIBTALLOC_LIBS=$pkg_cv_LIBTALLOC_LIBS
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	 enable_external_libtalloc=yes
+fi
+fi
+
+if test "x$enable_external_libtalloc" = xno
+then
+	tallocdir=""
+tallocpaths=". lib/talloc talloc ../talloc ../lib/talloc"
+for d in $tallocpaths; do
+	if test -f "$srcdir/$d/talloc.c"; then
+		tallocdir="$d"
+
+		break;
+	fi
+done
+if test x"$tallocdir" = "x"; then
+   { { $as_echo "$as_me:$LINENO: error: cannot find talloc source in $tallocpaths" >&5
+$as_echo "$as_me: error: cannot find talloc source in $tallocpaths" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+TALLOC_OBJ="talloc.o"
+
+
+TALLOC_CFLAGS="-I$srcdir/$tallocdir"
+
+
+TALLOC_LIBS=""
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:$LINENO: checking size of size_t" >&5
+$as_echo_n "checking size of size_t... " >&6; }
+if test "${ac_cv_sizeof_size_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr $ac_mid + 1`
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_hi=`expr '(' $ac_mid ')' - 1`
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_size_t=$ac_lo;;
+'') if test "$ac_cv_type_size_t" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (size_t)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (size_t)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_size_t=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+static long int longval () { return (long int) (sizeof (size_t)); }
+static unsigned long int ulongval () { return (long int) (sizeof (size_t)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (size_t))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (size_t))))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (size_t))))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_size_t=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_size_t" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (size_t)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (size_t)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_size_t=0
+   fi
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5
+$as_echo "$ac_cv_sizeof_size_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:$LINENO: checking size of void *" >&5
+$as_echo_n "checking size of void *... " >&6; }
+if test "${ac_cv_sizeof_void_p+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr $ac_mid + 1`
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (void *))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_hi=`expr '(' $ac_mid ')' - 1`
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_void_p=$ac_lo;;
+'') if test "$ac_cv_type_void_p" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (void *)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_void_p=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+static long int longval () { return (long int) (sizeof (void *)); }
+static unsigned long int ulongval () { return (long int) (sizeof (void *)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (void *))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (void *))))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (void *))))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_void_p=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_void_p" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (void *)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_void_p=0
+   fi
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5
+$as_echo "$ac_cv_sizeof_void_p" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
+_ACEOF
+
+
+
+if test $ac_cv_sizeof_size_t -lt $ac_cv_sizeof_void_p; then
+	{ $as_echo "$as_me:$LINENO: WARNING: size_t cannot represent the amount of used memory of a process" >&5
+$as_echo "$as_me: WARNING: size_t cannot represent the amount of used memory of a process" >&2;}
+	{ $as_echo "$as_me:$LINENO: WARNING: please report this to <samba-technical at samba.org>" >&5
+$as_echo "$as_me: WARNING: please report this to <samba-technical at samba.org>" >&2;}
+	{ $as_echo "$as_me:$LINENO: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&5
+$as_echo "$as_me: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&2;}
+	{ $as_echo "$as_me:$LINENO: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&5
+$as_echo "$as_me: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&2;}
+	{ { $as_echo "$as_me:$LINENO: error: sizeof(size_t) < sizeof(void *)" >&5
+$as_echo "$as_me: error: sizeof(size_t) < sizeof(void *)" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+if test x"$VERSIONSCRIPT" != "x"; then
+    EXPORTSFILE=talloc.exports
+
+fi
+
+	LINK_LIBTALLOC=STATIC
+
+
+
+
+
+LIBTALLOC_SHARED_TARGET=bin/libtalloc.$SHLIBEXT
+LIBTALLOC_STATIC_TARGET=bin/libtalloc.a
+LIBTALLOC_SHARED=
+LIBTALLOC_STATIC=
+LIBTALLOC_LIBS=-ltalloc
+LIBTALLOC_TARGET=
+INSTALL_LIBTALLOC=
+UNINSTALL_LIBTALLOC=
+
+LIBTALLOC_SOVER=2
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to build the libtalloc shared library" >&5
+$as_echo_n "checking whether to build the libtalloc shared library... " >&6; }
+
+
+# Check whether --with-libtalloc was given.
+if test "${with_libtalloc+set}" = set; then
+  withval=$with_libtalloc;
+case "$withval" in
+	no)
+		{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+		build_lib=no
+		;;
+	*)
+		build_lib=yes
+		;;
+esac
+
+else
+
+# if unspecified, default is to build it if possible.
+build_lib=yes
+
+
+fi
+
+
+
+if eval test x"$build_lib" = "xyes" ; then
+	# only set the install targets if the user chose the library
+	INSTALL_LIBTALLOC=installlibtalloc
+	UNINSTALL_LIBTALLOC=uninstalllibtalloc
+	if eval $BLDSHARED = true; then
+		LIBTALLOC_SHARED=$LIBTALLOC_SHARED_TARGET
+		LIBTALLOC_TARGET=$LIBTALLOC_SHARED_TARGET
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+		if test x"$USESHARED" != x"true" -o x"$LINK_LIBTALLOC" = "xSTATIC" ; then
+			enable_static=yes
+			LIBTALLOC_TARGET=$LIBTALLOC_STATIC_TARGET
+			LIBTALLOC_LIBS=$LIBTALLOC_STATIC_TARGET
+		else
+			LIBTALLOC_LIBS=-ltalloc
+		fi
+	else
+		enable_static=yes
+		LIBTALLOC_TARGET=$LIBTALLOC_STATIC_TARGET
+		LIBTALLOC_LIBS=$LIBTALLOC_STATIC_TARGET
+		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
+$as_echo "no shared library support -- will supply static library" >&6; }
+	fi
+else
+	enable_static=yes
+	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
+$as_echo "shared library not selected" >&6; }
+fi
+if test $enable_static = yes; then
+	LIBTALLOC_STATIC=$LIBTALLOC_STATIC_TARGET
+fi
+
+
+
+
+
+
+	LIBTALLOC_OBJ0=""
+	for obj in ${TALLOC_OBJ}; do
+		LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
+	done
+	SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
+	SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
+
+
+	TALLOCTORT="bin/talloctort\$(EXEEXT)"
+
+fi
+
+
+# Check whether --enable-external_libtdb was given.
+if test "${enable_external_libtdb+set}" = set; then
+  enableval=$enable_external_libtdb;  enable_external_libtalloc=$enableval
+else
+   enable_external_libtalloc=auto
+fi
+
+
+if test "x$enable_external_libtdb" != xno
+then
+
+pkg_failed=no
+{ $as_echo "$as_me:$LINENO: checking for LIBTDB" >&5
+$as_echo_n "checking for LIBTDB... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$LIBTDB_CFLAGS"; then
+        pkg_cv_LIBTDB_CFLAGS="$LIBTDB_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"tdb >= 1.1.7\"") >&5
+  ($PKG_CONFIG --exists --print-errors "tdb >= 1.1.7") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_LIBTDB_CFLAGS=`$PKG_CONFIG --cflags "tdb >= 1.1.7" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$LIBTDB_LIBS"; then
+        pkg_cv_LIBTDB_LIBS="$LIBTDB_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"tdb >= 1.1.7\"") >&5
+  ($PKG_CONFIG --exists --print-errors "tdb >= 1.1.7") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_LIBTDB_LIBS=`$PKG_CONFIG --libs "tdb >= 1.1.7" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        LIBTDB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "tdb >= 1.1.7"`
+        else
+	        LIBTDB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "tdb >= 1.1.7"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBTDB_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+		if test x$enable_external_libtdb = xyes; then
+			{ { $as_echo "$as_me:$LINENO: error: Unable to find libtdb" >&5
+$as_echo "$as_me: error: Unable to find libtdb" >&2;}
+   { (exit 1); exit 1; }; }
+		else
+			enable_external_libtdb=no
+		fi
+
+elif test $pkg_failed = untried; then
+
+		if test x$enable_external_libtdb = xyes; then
+			{ { $as_echo "$as_me:$LINENO: error: Unable to find libtdb" >&5
+$as_echo "$as_me: error: Unable to find libtdb" >&2;}
+   { (exit 1); exit 1; }; }
+		else
+			enable_external_libtdb=no
+		fi
+
+else
+	LIBTDB_CFLAGS=$pkg_cv_LIBTDB_CFLAGS
+	LIBTDB_LIBS=$pkg_cv_LIBTDB_LIBS
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	 enable_external_libtdb=yes
+fi
+fi
+
+
+if test "x$enable_external_libtdb" = xno
+then
+	tdbdir=""
+tdbpaths=". lib/tdb tdb ../tdb ../lib/tdb"
+for d in $tdbpaths; do
+	if test -f "$srcdir/$d/common/tdb.c"; then
+		tdbdir="$d"
+
+		break;
+	fi
+done
+if test x"$tdbdir" = "x"; then
+   { { $as_echo "$as_me:$LINENO: error: cannot find tdb source in $tdbpaths" >&5
+$as_echo "$as_me: error: cannot find tdb source in $tdbpaths" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+TDB_OBJ="common/tdb.o common/dump.o common/transaction.o common/error.o common/traverse.o"
+TDB_OBJ="$TDB_OBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o common/check.o"
+
+
+
+TDB_LIBS=""
+
+
+TDB_CFLAGS="-I$tdbdir/include"
+
+
+
+
+
+
+
+for ac_func in mmap pread pwrite getpagesize utime
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+for ac_header in getopt.h sys/select.h sys/time.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ---------------------------------------- ##
+## Report this to samba-technical at samba.org ##
+## ---------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for pread declaration" >&5
+$as_echo_n "checking for pread declaration... " >&6; }
+if test "${ac_cv_have_pread_decl+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <unistd.h>
+int
+main ()
+{
+int i = (int)pread
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_pread_decl=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_have_pread_decl=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_pread_decl" >&5
+$as_echo "$ac_cv_have_pread_decl" >&6; }
+ if test x"$ac_cv_have_pread_decl" = x"yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PREAD_DECL 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for pwrite declaration" >&5
+$as_echo_n "checking for pwrite declaration... " >&6; }
+if test "${ac_cv_have_pwrite_decl+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <unistd.h>
+int
+main ()
+{
+int i = (int)pwrite
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_pwrite_decl=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_have_pwrite_decl=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_pwrite_decl" >&5
+$as_echo "$ac_cv_have_pwrite_decl" >&6; }
+ if test x"$ac_cv_have_pwrite_decl" = x"yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PWRITE_DECL 1
+_ACEOF
+
+ fi
+
+
+if test x"$VERSIONSCRIPT" != "x"; then
+    EXPORTSFILE=tdb.exports
+
+fi
+
+	LINK_LIBTDB=STATIC
+
+
+
+
+
+LIBTDB_SHARED_TARGET=bin/libtdb.$SHLIBEXT
+LIBTDB_STATIC_TARGET=bin/libtdb.a
+LIBTDB_SHARED=
+LIBTDB_STATIC=
+LIBTDB_LIBS=-ltdb
+LIBTDB_TARGET=
+INSTALL_LIBTDB=
+UNINSTALL_LIBTDB=
+
+LIBTDB_SOVER=1
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to build the libtdb shared library" >&5
+$as_echo_n "checking whether to build the libtdb shared library... " >&6; }
+
+
+# Check whether --with-libtdb was given.
+if test "${with_libtdb+set}" = set; then
+  withval=$with_libtdb;
+case "$withval" in
+	no)
+		{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+		build_lib=no
+		;;
+	*)
+		build_lib=yes
+		;;
+esac
+
+else
+
+# if unspecified, default is to build it if possible.
+build_lib=yes
+
+
+fi
+
+
+
+if eval test x"$build_lib" = "xyes" ; then
+	# only set the install targets if the user chose the library
+	INSTALL_LIBTDB=installlibtdb
+	UNINSTALL_LIBTDB=uninstalllibtdb
+	if eval $BLDSHARED = true; then
+		LIBTDB_SHARED=$LIBTDB_SHARED_TARGET
+		LIBTDB_TARGET=$LIBTDB_SHARED_TARGET
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+		if test x"$USESHARED" != x"true" -o x"$LINK_LIBTDB" = "xSTATIC" ; then
+			enable_static=yes
+			LIBTDB_TARGET=$LIBTDB_STATIC_TARGET
+			LIBTDB_LIBS=$LIBTDB_STATIC_TARGET
+		else
+			LIBTDB_LIBS=-ltdb
+		fi
+	else
+		enable_static=yes
+		LIBTDB_TARGET=$LIBTDB_STATIC_TARGET
+		LIBTDB_LIBS=$LIBTDB_STATIC_TARGET
+		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
+$as_echo "no shared library support -- will supply static library" >&6; }
+	fi
+else
+	enable_static=yes
+	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
+$as_echo "shared library not selected" >&6; }
+fi
+if test $enable_static = yes; then
+	LIBTDB_STATIC=$LIBTDB_STATIC_TARGET
+fi
+
+
+
+
+
+
+	LIBTDB_OBJ0=""
+	for obj in ${TDB_OBJ}; do
+		LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
+	done
+
+	SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
+	SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
+
+	TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
+
+	TDBDUMP="bin/tdbdump\$(EXEEXT)"
+
+	TDBTOOL="bin/tdbtool\$(EXEEXT)"
+
+	TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
+
+fi
+
+
+
+
+
+
+LIBNETAPI_SHARED_TARGET=bin/libnetapi.$SHLIBEXT
+LIBNETAPI_STATIC_TARGET=bin/libnetapi.a
+LIBNETAPI_SHARED=
+LIBNETAPI_STATIC=
+LIBNETAPI_LIBS=-lnetapi
+LIBNETAPI_TARGET=
+INSTALL_LIBNETAPI=
+UNINSTALL_LIBNETAPI=
+
+LIBNETAPI_SOVER=0
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to build the libnetapi shared library" >&5
+$as_echo_n "checking whether to build the libnetapi shared library... " >&6; }
+
+
+# Check whether --with-libnetapi was given.
+if test "${with_libnetapi+set}" = set; then
+  withval=$with_libnetapi;
+case "$withval" in
+	no)
+		{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+		build_lib=no
+		;;
+	*)
+		build_lib=yes
+		;;
+esac
+
+else
+
+# if unspecified, default is to build it if possible.
+build_lib=yes
+
+
+fi
+
+
+
+if eval test x"$build_lib" = "xyes" ; then
+	# only set the install targets if the user chose the library
+	INSTALL_LIBNETAPI=installlibnetapi
+	UNINSTALL_LIBNETAPI=uninstalllibnetapi
+	if eval $BLDSHARED = true; then
+		LIBNETAPI_SHARED=$LIBNETAPI_SHARED_TARGET
+		LIBNETAPI_TARGET=$LIBNETAPI_SHARED_TARGET
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+		if test x"$USESHARED" != x"true" -o x"$LINK_LIBNETAPI" = "xSTATIC" ; then
+			enable_static=yes
+			LIBNETAPI_TARGET=$LIBNETAPI_STATIC_TARGET
+			LIBNETAPI_LIBS=$LIBNETAPI_STATIC_TARGET
+		else
+			LIBNETAPI_LIBS=-lnetapi
+		fi
+	else
+		enable_static=yes
+		LIBNETAPI_TARGET=$LIBNETAPI_STATIC_TARGET
+		LIBNETAPI_LIBS=$LIBNETAPI_STATIC_TARGET
+		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
+$as_echo "no shared library support -- will supply static library" >&6; }
+	fi
+else
+	enable_static=yes
+	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
+$as_echo "shared library not selected" >&6; }
+fi
+if test $enable_static = yes; then
+	LIBNETAPI_STATIC=$LIBNETAPI_STATIC_TARGET
+fi
+
+
+
+
+
+
+
+
+
+
+
+LIBSMBCLIENT_SHARED_TARGET=bin/libsmbclient.$SHLIBEXT
+LIBSMBCLIENT_STATIC_TARGET=bin/libsmbclient.a
+LIBSMBCLIENT_SHARED=
+LIBSMBCLIENT_STATIC=
+LIBSMBCLIENT_LIBS=-lsmbclient
+LIBSMBCLIENT_TARGET=
+INSTALL_LIBSMBCLIENT=
+UNINSTALL_LIBSMBCLIENT=
+
+LIBSMBCLIENT_SOVER=0
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to build the libsmbclient shared library" >&5
+$as_echo_n "checking whether to build the libsmbclient shared library... " >&6; }
+
+
+# Check whether --with-libsmbclient was given.
+if test "${with_libsmbclient+set}" = set; then
+  withval=$with_libsmbclient;
+case "$withval" in
+	no)
+		{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+		build_lib=no
+		;;
+	*)
+		build_lib=yes
+		;;
+esac
+
+else
+
+# if unspecified, default is to build it if possible.
+build_lib=yes
+
+
+fi
+
+
+
+if eval test x"$build_lib" = "xyes" ; then
+	# only set the install targets if the user chose the library
+	INSTALL_LIBSMBCLIENT=installlibsmbclient
+	UNINSTALL_LIBSMBCLIENT=uninstalllibsmbclient
+	if eval $BLDSHARED = true; then
+		LIBSMBCLIENT_SHARED=$LIBSMBCLIENT_SHARED_TARGET
+		LIBSMBCLIENT_TARGET=$LIBSMBCLIENT_SHARED_TARGET
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+		if test x"$USESHARED" != x"true" -o x"$LINK_LIBSMBCLIENT" = "xSTATIC" ; then
+			enable_static=yes
+			LIBSMBCLIENT_TARGET=$LIBSMBCLIENT_STATIC_TARGET
+			LIBSMBCLIENT_LIBS=$LIBSMBCLIENT_STATIC_TARGET
+		else
+			LIBSMBCLIENT_LIBS=-lsmbclient
+		fi
+	else
+		enable_static=yes
+		LIBSMBCLIENT_TARGET=$LIBSMBCLIENT_STATIC_TARGET
+		LIBSMBCLIENT_LIBS=$LIBSMBCLIENT_STATIC_TARGET
+		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
+$as_echo "no shared library support -- will supply static library" >&6; }
+	fi
+else
+	enable_static=yes
+	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
+$as_echo "shared library not selected" >&6; }
+fi
+if test $enable_static = yes; then
+	LIBSMBCLIENT_STATIC=$LIBSMBCLIENT_STATIC_TARGET
+fi
+
+
+
+
+
+
+
+
+
+
+
+LIBSMBSHAREMODES_SHARED_TARGET=bin/libsmbsharemodes.$SHLIBEXT
+LIBSMBSHAREMODES_STATIC_TARGET=bin/libsmbsharemodes.a
+LIBSMBSHAREMODES_SHARED=
+LIBSMBSHAREMODES_STATIC=
+LIBSMBSHAREMODES_LIBS=-lsmbsharemodes
+LIBSMBSHAREMODES_TARGET=
+INSTALL_LIBSMBSHAREMODES=
+UNINSTALL_LIBSMBSHAREMODES=
+
+LIBSMBSHAREMODES_SOVER=0
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to build the libsmbsharemodes shared library" >&5
+$as_echo_n "checking whether to build the libsmbsharemodes shared library... " >&6; }
+
+
+# Check whether --with-libsmbsharemodes was given.
+if test "${with_libsmbsharemodes+set}" = set; then
+  withval=$with_libsmbsharemodes;
+case "$withval" in
+	no)
+		{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+		build_lib=no
+		;;
+	*)
+		build_lib=yes
+		;;
+esac
+
+else
+
+# if unspecified, default is to build it if possible.
+build_lib=yes
+
+
+fi
+
+
+
+if eval test x"$build_lib" = "xyes" ; then
+	# only set the install targets if the user chose the library
+	INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
+	UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
+	if eval $BLDSHARED = true; then
+		LIBSMBSHAREMODES_SHARED=$LIBSMBSHAREMODES_SHARED_TARGET
+		LIBSMBSHAREMODES_TARGET=$LIBSMBSHAREMODES_SHARED_TARGET
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+		if test x"$USESHARED" != x"true" -o x"$LINK_LIBSMBSHAREMODES" = "xSTATIC" ; then
+			enable_static=yes
+			LIBSMBSHAREMODES_TARGET=$LIBSMBSHAREMODES_STATIC_TARGET
+			LIBSMBSHAREMODES_LIBS=$LIBSMBSHAREMODES_STATIC_TARGET
+		else
+			LIBSMBSHAREMODES_LIBS=-lsmbsharemodes
+		fi
+	else
+		enable_static=yes
+		LIBSMBSHAREMODES_TARGET=$LIBSMBSHAREMODES_STATIC_TARGET
+		LIBSMBSHAREMODES_LIBS=$LIBSMBSHAREMODES_STATIC_TARGET
+		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
+$as_echo "no shared library support -- will supply static library" >&6; }
+	fi
+else
+	enable_static=yes
+	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
+$as_echo "shared library not selected" >&6; }
+fi
+if test $enable_static = yes; then
+	LIBSMBSHAREMODES_STATIC=$LIBSMBSHAREMODES_STATIC_TARGET
+fi
+
+
+
+
+
+
+
+
+
+
+
+LIBADDNS_SHARED_TARGET=bin/libaddns.$SHLIBEXT
+LIBADDNS_STATIC_TARGET=bin/libaddns.a
+LIBADDNS_SHARED=
+LIBADDNS_STATIC=
+LIBADDNS_LIBS=-laddns
+LIBADDNS_TARGET=
+INSTALL_LIBADDNS=
+UNINSTALL_LIBADDNS=
+
+LIBADDNS_SOVER=0
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to build the libaddns shared library" >&5
+$as_echo_n "checking whether to build the libaddns shared library... " >&6; }
+
+
+# Check whether --with-libaddns was given.
+if test "${with_libaddns+set}" = set; then
+  withval=$with_libaddns;
+case "$withval" in
+	yes)
+		build_lib=yes
+		;;
+	*)
+		{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+		build_lib=no
+		;;
+esac
+
+else
+
+# if unspecified, default is not to build
+{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+build_lib=no
+
+
+fi
+
+
+
+if eval test x"$build_lib" = "xyes" ; then
+	# only set the install targets if the user chose the library
+	INSTALL_LIBADDNS=installlibaddns
+	UNINSTALL_LIBADDNS=uninstalllibaddns
+	if eval $BLDSHARED = true; then
+		LIBADDNS_SHARED=$LIBADDNS_SHARED_TARGET
+		LIBADDNS_TARGET=$LIBADDNS_SHARED_TARGET
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+		if test x"$USESHARED" != x"true" -o x"$LINK_LIBADDNS" = "xSTATIC" ; then
+			enable_static=yes
+			LIBADDNS_TARGET=$LIBADDNS_STATIC_TARGET
+			LIBADDNS_LIBS=$LIBADDNS_STATIC_TARGET
+		else
+			LIBADDNS_LIBS=-laddns
+		fi
+	else
+		enable_static=yes
+		LIBADDNS_TARGET=$LIBADDNS_STATIC_TARGET
+		LIBADDNS_LIBS=$LIBADDNS_STATIC_TARGET
+		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
+$as_echo "no shared library support -- will supply static library" >&6; }
+	fi
+else
+	enable_static=yes
+	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
+$as_echo "shared library not selected" >&6; }
+fi
+if test $enable_static = yes; then
+	LIBADDNS_STATIC=$LIBADDNS_STATIC_TARGET
+fi
+
+
+
+
+
+
+
+
+
 ################
 
 { $as_echo "$as_me:$LINENO: checking for long long" >&5
@@ -54350,7 +56522,8 @@
 
 
 
-for ac_func in pututline pututxline updwtmp updwtmpx getutmpx
+
+for ac_func in pututline pututxline updwtmp updwtmpx getutmpx getutxent
 do
 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -55298,8 +57471,8 @@
     jm_cv_giconv=no
     jm_save_LIBS="$LIBS"
 
-        if test "$jm_cv_func_iconv" != yes; then
-      cat >conftest.$ac_ext <<_ACEOF
+    if test "$jm_cv_func_iconv" != yes; then
+    cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -55311,8 +57484,8 @@
 main ()
 {
 iconv_t cd = iconv_open("","");
-         iconv(cd,NULL,NULL,NULL,NULL);
-         iconv_close(cd);
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);
   ;
   return 0;
 }
@@ -55339,9 +57512,9 @@
 	 $as_test_x conftest$ac_exeext
        }; then
   jm_cv_func_iconv=yes
-         jm_cv_include="giconv.h"
-         jm_cv_giconv="yes"
-         jm_cv_lib_iconv=""
+       jm_cv_include="giconv.h"
+       jm_cv_giconv="yes"
+       jm_cv_lib_iconv=""
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -55353,8 +57526,8 @@
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 
-            if test "$jm_cv_func_iconv" != yes; then
-        cat >conftest.$ac_ext <<_ACEOF
+        if test "$jm_cv_func_iconv" != yes; then
+      cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -55366,8 +57539,8 @@
 main ()
 {
 iconv_t cd = iconv_open("","");
-           iconv(cd,NULL,NULL,NULL,NULL);
-           iconv_close(cd);
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);
   ;
   return 0;
 }
@@ -55394,8 +57567,8 @@
 	 $as_test_x conftest$ac_exeext
        }; then
   jm_cv_include="iconv.h"
-           jm_cv_func_iconv=yes
-           jm_cv_lib_iconv=""
+         jm_cv_func_iconv=yes
+         jm_cv_lib_iconv=""
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -55407,10 +57580,10 @@
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 
-          if test "$jm_cv_lib_iconv" != yes; then
-            jm_save_LIBS="$LIBS"
-            LIBS="$LIBS -lgiconv"
-            cat >conftest.$ac_ext <<_ACEOF
+            if test "$jm_cv_func_iconv" != yes; then
+        jm_save_LIBS="$LIBS"
+        LIBS="$LIBS -lgiconv"
+        cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -55422,8 +57595,8 @@
 main ()
 {
 iconv_t cd = iconv_open("","");
-               iconv(cd,NULL,NULL,NULL,NULL);
-               iconv_close(cd);
+           iconv(cd,NULL,NULL,NULL,NULL);
+           iconv_close(cd);
   ;
   return 0;
 }
@@ -55450,10 +57623,10 @@
 	 $as_test_x conftest$ac_exeext
        }; then
   jm_cv_lib_iconv=yes
-              jm_cv_func_iconv=yes
-              jm_cv_include="giconv.h"
-              jm_cv_giconv=yes
-              jm_cv_lib_iconv="giconv"
+          jm_cv_func_iconv=yes
+          jm_cv_include="giconv.h"
+          jm_cv_giconv=yes
+          jm_cv_lib_iconv="giconv"
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -55465,9 +57638,9 @@
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 
-           LIBS="$jm_save_LIBS"
+        LIBS="$jm_save_LIBS"
 
-        if test "$jm_cv_func_iconv" != yes; then
+                if test "$jm_cv_func_iconv" != yes; then
           jm_save_LIBS="$LIBS"
           LIBS="$LIBS -liconv"
           cat >conftest.$ac_ext <<_ACEOF
@@ -55524,7 +57697,7 @@
       conftest$ac_exeext conftest.$ac_ext
           LIBS="$jm_save_LIBS"
 
-          if test "$jm_cv_lib_iconv" != yes; then
+                    if test "$jm_cv_func_iconv" != yes; then
             jm_save_LIBS="$LIBS"
             LIBS="$LIBS -lbiconv"
             cat >conftest.$ac_ext <<_ACEOF
@@ -55583,7 +57756,7 @@
       conftest$ac_exeext conftest.$ac_ext
 
             LIBS="$jm_save_LIBS"
-	  fi
+          fi
         fi
       fi
     fi
@@ -59445,6 +61618,74 @@
   fi
 fi
 
+# glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
+{ $as_echo "$as_me:$LINENO: checking for broken posix_fallocate" >&5
+$as_echo_n "checking for broken posix_fallocate... " >&6; }
+if test "${samba_cv_HAVE_BROKEN_POSIX_FALLOCATE+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  #define _XOPEN_SOURCE 600
+  #include <stdlib.h>
+  #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
+    probably broken posix_fallocate
+  #endif
+
+int
+main ()
+{
+
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" >&5
+$as_echo "$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" >&6; }
+if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BROKEN_POSIX_FALLOCATE /**/
+_ACEOF
+
+fi
+
+
 { $as_echo "$as_me:$LINENO: checking for st_blocks in struct stat" >&5
 $as_echo_n "checking for st_blocks in struct stat... " >&6; }
 if test "${samba_cv_HAVE_STAT_ST_BLOCKS+set}" = set; then
@@ -62059,8 +64300,7 @@
   # note that this check is done here to allow for different kerberos
   # include paths
 
-
-for ac_header in krb5.h krb5/krb5.h
+for ac_header in krb5.h
 do
 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
@@ -62248,8 +64488,8 @@
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#ifdef HAVE_KRB5_KRB5_H
- #include <krb5/krb5.h>
+#ifdef HAVE_KRB5_H
+ #include <krb5.h>
  #endif
 
 
@@ -62305,8 +64545,71 @@
 		EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
 	fi
   fi
+
+  # check for new heimdal KRB5_DEPRECATED handling
+
+  { $as_echo "$as_me:$LINENO: checking for KRB5_DEPRECATED define taking an identifier" >&5
+$as_echo_n "checking for KRB5_DEPRECATED define taking an identifier... " >&6; }
+if test "${samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define KRB5_DEPRECATED 1
+      #include <krb5.h>
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no
 fi
 
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" >&5
+$as_echo "$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" >&6; }
+
+  if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER 1
+_ACEOF
+
+  fi
+fi
+
 # Now we have determined whether we really want ADS support
 use_ads=no
 if test x"$with_ads_support" != x"no"; then
@@ -72118,6 +74421,82 @@
 fi # try_pam != no
 
 #################################################
+# check for PAM_RADIO_TYPE
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#if (!defined(LINUX))
+
+#define PAM_EXTERN extern
+#if defined(HAVE_SECURITY_PAM_APPL_H)
+#include <security/pam_appl.h>
+#elif defined(HAVE_PAM_PAM_APPL_H)
+#include <pam/pam_appl.h>
+#endif
+
+#endif
+
+#if defined(HAVE_SECURITY_PAM_MODULES_H)
+#include <security/pam_modules.h>
+#elif defined(HAVE_PAM_PAM_MODULES_H)
+#include <pam/pam_modules.h>
+#endif
+
+#if defined(HAVE_SECURITY__PAM_MACROS_H)
+#include <security/_pam_macros.h>
+#elif defined(HAVE_PAM__PAM_MACROS_H)
+#include <pam/_pam_macros.h>
+#endif
+
+#ifdef HAVE_SECURITY_PAM_EXT_H
+#include <security/pam_ext.h>
+#endif
+
+int
+main ()
+{
+int i; i = PAM_RADIO_TYPE;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PAM_RADIO_TYPE 1
+_ACEOF
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+#################################################
 # check for pam_smbpass support
 PAM_MODULES=""
 INSTALL_PAM_MODULES=""
@@ -74324,2172 +76703,8 @@
 $as_echo "no$utmp_no_reason" >&6; }
 fi
 
-INSTALLLIBCMD_SH=:
-INSTALLLIBCMD_A=:
-UNINSTALLLIBCMD_SH=:
-UNINSTALLLIBCMD_A=:
 
-if test $BLDSHARED = true; then
-	INSTALLLIBCMD_SH="\$(INSTALLCMD)"
-	UNINSTALLLIBCMD_SH="rm -f"
-fi
-if test $enable_static = yes; then
-	INSTALLLIBCMD_A="\$(INSTALLCMD)"
-	UNINSTALLLIBCMD_A="rm -f"
-fi
-
 #################################################
-# --disable-shared-libs
-# can be used to disable the internal use of shared libs altogether
-# (this only has an effect when building shared libs is enabled)
-#
-USESHARED=false
-
-
-{ $as_echo "$as_me:$LINENO: checking whether to use shared libraries internally" >&5
-$as_echo_n "checking whether to use shared libraries internally... " >&6; }
-# Check whether --enable-shared-libs was given.
-if test "${enable_shared_libs+set}" = set; then
-  enableval=$enable_shared_libs; enable_shared_libs=$enableval
-else
-  enable_shared_libs=yes
-fi
-
-
-if test x"$enable_shared_libs" != x"no" ; then
-	USESHARED=$BLDSHARED
-fi
-
-{ $as_echo "$as_me:$LINENO: result: $USESHARED" >&5
-$as_echo "$USESHARED" >&6; }
-
-if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
-	{ $as_echo "$as_me:$LINENO: WARNING: --enable-shared-libs: no support for shared libraries" >&5
-$as_echo "$as_me: WARNING: --enable-shared-libs: no support for shared libraries" >&2;}
-fi
-
-#################################################
-# --with-static-libs=LIBS:
-#   link (internal) libs dynamically or statically?
-#
-# If a subsystem is built as a library then this controls whether they are
-# linked into Samba targets statically or dynamically:
-#
-# * If we build the shared library at all, we link dynamically by default.
-#
-# * We only link statically if we don't build shared or if the library
-#   appears in the --with-static-libs configure option.
-#
-# Example:
-#   --with-static-libs=libtalloc makes use of libtalloc.a instead
-#   of linking the dynamic variant with -ltalloc.
-#
-# NOTE: This option only affects libraries that we do not only build
-# but that samba also links against as libraries (as opposed to linking
-# the plain object files. - This has to be configured in Makefile.in.
-# So in particular it does not harm to give invalid or unknown names here.
-#
-
-
-# Check whether --with-static-libs was given.
-if test "${with_static_libs+set}" = set; then
-  withval=$with_static_libs; if test $withval; then
-  for lib in `echo $withval | sed -e 's/,/ /g'` ; do
-			lib=`echo $lib | tr '[a-z]' '[A-Z]'`
-			eval LINK_$lib=STATIC
-		done
-fi
-
-fi
-
-
-#
-# WORKAROUND:
-#   until we have organized other internal subsystems (as util, registry
-#   and smbconf) into shared libraries, we CAN NOT link libnetapi
-#   dynamically to samba programs.
-#
-LINK_LIBNETAPI=STATIC
-
-LINK_LIBSMBCLIENT=STATIC
-
-#
-#  The library versions are hardcoded here
-#  and filled into the LIBFOO_SOVER variable.
-#
-#  TODO: for talloc and tdb (at least), these should
-#  be extracted from their respective source directories
-#
-# Check whether --enable-external_libtalloc was given.
-if test "${enable_external_libtalloc+set}" = set; then
-  enableval=$enable_external_libtalloc;  enable_external_libtalloc=$enableval
-else
-   enable_external_libtalloc=auto
-fi
-
-
-if test "x$enable_external_libtalloc" != xno
-then
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_pt_PKG_CONFIG" = x; then
-    PKG_CONFIG=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    PKG_CONFIG=$ac_pt_PKG_CONFIG
-  fi
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=0.9.0
-	{ $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-	else
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-		PKG_CONFIG=""
-	fi
-
-fi
-
-pkg_failed=no
-{ $as_echo "$as_me:$LINENO: checking for LIBTALLOC" >&5
-$as_echo_n "checking for LIBTALLOC... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$LIBTALLOC_CFLAGS"; then
-        pkg_cv_LIBTALLOC_CFLAGS="$LIBTALLOC_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"talloc >= 2.0.1\"") >&5
-  ($PKG_CONFIG --exists --print-errors "talloc >= 2.0.1") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  pkg_cv_LIBTALLOC_CFLAGS=`$PKG_CONFIG --cflags "talloc >= 2.0.1" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$LIBTALLOC_LIBS"; then
-        pkg_cv_LIBTALLOC_LIBS="$LIBTALLOC_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"talloc >= 2.0.1\"") >&5
-  ($PKG_CONFIG --exists --print-errors "talloc >= 2.0.1") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  pkg_cv_LIBTALLOC_LIBS=`$PKG_CONFIG --libs "talloc >= 2.0.1" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        LIBTALLOC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "talloc >= 2.0.1"`
-        else
-	        LIBTALLOC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "talloc >= 2.0.1"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$LIBTALLOC_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-                 if test x$enable_external_libtalloc = xyes; then
-		 	{ { $as_echo "$as_me:$LINENO: error: Unable to find libtalloc" >&5
-$as_echo "$as_me: error: Unable to find libtalloc" >&2;}
-   { (exit 1); exit 1; }; }
-	      else
-			enable_external_libtalloc=no
-		  fi
-
-elif test $pkg_failed = untried; then
-	 if test x$enable_external_libtalloc = xyes; then
-		 	{ { $as_echo "$as_me:$LINENO: error: Unable to find libtalloc" >&5
-$as_echo "$as_me: error: Unable to find libtalloc" >&2;}
-   { (exit 1); exit 1; }; }
-	      else
-			enable_external_libtalloc=no
-		  fi
-
-else
-	LIBTALLOC_CFLAGS=$pkg_cv_LIBTALLOC_CFLAGS
-	LIBTALLOC_LIBS=$pkg_cv_LIBTALLOC_LIBS
-        { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-	 enable_external_libtalloc=yes
-fi
-fi
-
-if test "x$enable_external_libtalloc" = xno
-then
-	tallocdir=""
-tallocpaths=". lib/talloc talloc ../talloc ../lib/talloc"
-for d in $tallocpaths; do
-	if test -f "$srcdir/$d/talloc.c"; then
-		tallocdir="$d"
-
-		break;
-	fi
-done
-if test x"$tallocdir" = "x"; then
-   { { $as_echo "$as_me:$LINENO: error: cannot find talloc source in $tallocpaths" >&5
-$as_echo "$as_me: error: cannot find talloc source in $tallocpaths" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-TALLOC_OBJ="talloc.o"
-
-
-TALLOC_CFLAGS="-I$srcdir/$tallocdir"
-
-
-TALLOC_LIBS=""
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:$LINENO: checking size of size_t" >&5
-$as_echo_n "checking size of size_t... " >&6; }
-if test "${ac_cv_sizeof_size_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) >= 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) < 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) >= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_hi=`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo= ac_hi=
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (size_t))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_size_t=$ac_lo;;
-'') if test "$ac_cv_type_size_t" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (size_t)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (size_t)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_size_t=0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-static long int longval () { return (long int) (sizeof (size_t)); }
-static unsigned long int ulongval () { return (long int) (sizeof (size_t)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (size_t))) < 0)
-    {
-      long int i = longval ();
-      if (i != ((long int) (sizeof (size_t))))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ((long int) (sizeof (size_t))))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_size_t=`cat conftest.val`
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-if test "$ac_cv_type_size_t" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (size_t)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (size_t)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_size_t=0
-   fi
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5
-$as_echo "$ac_cv_sizeof_size_t" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:$LINENO: checking size of void *" >&5
-$as_echo_n "checking size of void *... " >&6; }
-if test "${ac_cv_sizeof_void_p+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) < 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=$ac_mid; break
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_hi=`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			ac_mid=`expr 2 '*' $ac_mid`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo= ac_hi=
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_void_p=$ac_lo;;
-'') if test "$ac_cv_type_void_p" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (void *)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_void_p=0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-static long int longval () { return (long int) (sizeof (void *)); }
-static unsigned long int ulongval () { return (long int) (sizeof (void *)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (void *))) < 0)
-    {
-      long int i = longval ();
-      if (i != ((long int) (sizeof (void *))))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ((long int) (sizeof (void *))))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_void_p=`cat conftest.val`
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-if test "$ac_cv_type_void_p" = yes; then
-     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *)
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute sizeof (void *)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-   else
-     ac_cv_sizeof_void_p=0
-   fi
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5
-$as_echo "$ac_cv_sizeof_void_p" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
-_ACEOF
-
-
-
-if test $ac_cv_sizeof_size_t -lt $ac_cv_sizeof_void_p; then
-	{ $as_echo "$as_me:$LINENO: WARNING: size_t cannot represent the amount of used memory of a process" >&5
-$as_echo "$as_me: WARNING: size_t cannot represent the amount of used memory of a process" >&2;}
-	{ $as_echo "$as_me:$LINENO: WARNING: please report this to <samba-technical at samba.org>" >&5
-$as_echo "$as_me: WARNING: please report this to <samba-technical at samba.org>" >&2;}
-	{ $as_echo "$as_me:$LINENO: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&5
-$as_echo "$as_me: WARNING: sizeof(size_t) = $ac_cv_sizeof_size_t" >&2;}
-	{ $as_echo "$as_me:$LINENO: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&5
-$as_echo "$as_me: WARNING: sizeof(void *) = $ac_cv_sizeof_void_p" >&2;}
-	{ { $as_echo "$as_me:$LINENO: error: sizeof(size_t) < sizeof(void *)" >&5
-$as_echo "$as_me: error: sizeof(size_t) < sizeof(void *)" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-if test x"$VERSIONSCRIPT" != "x"; then
-    EXPORTSFILE=talloc.exports
-
-fi
-
-	LINK_LIBTALLOC=STATIC
-
-
-
-
-
-LIBTALLOC_SHARED_TARGET=bin/libtalloc.$SHLIBEXT
-LIBTALLOC_STATIC_TARGET=bin/libtalloc.a
-LIBTALLOC_SHARED=
-LIBTALLOC_STATIC=
-LIBTALLOC_LIBS=-ltalloc
-LIBTALLOC_TARGET=
-INSTALL_LIBTALLOC=
-UNINSTALL_LIBTALLOC=
-
-LIBTALLOC_SOVER=2
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking whether to build the libtalloc shared library" >&5
-$as_echo_n "checking whether to build the libtalloc shared library... " >&6; }
-
-
-# Check whether --with-libtalloc was given.
-if test "${with_libtalloc+set}" = set; then
-  withval=$with_libtalloc;
-case "$withval" in
-	no)
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-		build_lib=no
-		;;
-	*)
-		build_lib=yes
-		;;
-esac
-
-else
-
-# if unspecified, default is to build it if possible.
-build_lib=yes
-
-
-fi
-
-
-
-if eval test x"$build_lib" = "xyes" ; then
-	# only set the install targets if the user chose the library
-	INSTALL_LIBTALLOC=installlibtalloc
-	UNINSTALL_LIBTALLOC=uninstalllibtalloc
-	if eval $BLDSHARED = true; then
-		LIBTALLOC_SHARED=$LIBTALLOC_SHARED_TARGET
-		LIBTALLOC_TARGET=$LIBTALLOC_SHARED_TARGET
-		{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-		if test x"$USESHARED" != x"true" -o x"$LINK_LIBTALLOC" = "xSTATIC" ; then
-			enable_static=yes
-			LIBTALLOC_TARGET=$LIBTALLOC_STATIC_TARGET
-			LIBTALLOC_LIBS=$LIBTALLOC_STATIC_TARGET
-		else
-			LIBTALLOC_LIBS=-ltalloc
-		fi
-	else
-		enable_static=yes
-		LIBTALLOC_TARGET=$LIBTALLOC_STATIC_TARGET
-		LIBTALLOC_LIBS=$LIBTALLOC_STATIC_TARGET
-		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
-$as_echo "no shared library support -- will supply static library" >&6; }
-	fi
-else
-	enable_static=yes
-	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
-$as_echo "shared library not selected" >&6; }
-fi
-if test $enable_static = yes; then
-	LIBTALLOC_STATIC=$LIBTALLOC_STATIC_TARGET
-fi
-
-
-
-
-
-
-	LIBTALLOC_OBJ0=""
-	for obj in ${TALLOC_OBJ}; do
-		LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
-	done
-	SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
-
-
-	TALLOCTORT="bin/talloctort\$(EXEEXT)"
-
-fi
-
-
-# Check whether --enable-external_libtdb was given.
-if test "${enable_external_libtdb+set}" = set; then
-  enableval=$enable_external_libtdb;  enable_external_libtalloc=$enableval
-else
-   enable_external_libtalloc=auto
-fi
-
-
-if test "x$enable_external_libtdb" != xno
-then
-
-pkg_failed=no
-{ $as_echo "$as_me:$LINENO: checking for LIBTDB" >&5
-$as_echo_n "checking for LIBTDB... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$LIBTDB_CFLAGS"; then
-        pkg_cv_LIBTDB_CFLAGS="$LIBTDB_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"tdb >= 1.1.4\"") >&5
-  ($PKG_CONFIG --exists --print-errors "tdb >= 1.1.4") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  pkg_cv_LIBTDB_CFLAGS=`$PKG_CONFIG --cflags "tdb >= 1.1.4" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$LIBTDB_LIBS"; then
-        pkg_cv_LIBTDB_LIBS="$LIBTDB_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"tdb >= 1.1.4\"") >&5
-  ($PKG_CONFIG --exists --print-errors "tdb >= 1.1.4") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  pkg_cv_LIBTDB_LIBS=`$PKG_CONFIG --libs "tdb >= 1.1.4" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        LIBTDB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "tdb >= 1.1.4"`
-        else
-	        LIBTDB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "tdb >= 1.1.4"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$LIBTDB_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-		if test x$enable_external_libtdb = xyes; then
-			{ { $as_echo "$as_me:$LINENO: error: Unable to find libtdb" >&5
-$as_echo "$as_me: error: Unable to find libtdb" >&2;}
-   { (exit 1); exit 1; }; }
-		else
-			enable_external_libtdb=no
-		fi
-
-elif test $pkg_failed = untried; then
-
-		if test x$enable_external_libtdb = xyes; then
-			{ { $as_echo "$as_me:$LINENO: error: Unable to find libtdb" >&5
-$as_echo "$as_me: error: Unable to find libtdb" >&2;}
-   { (exit 1); exit 1; }; }
-		else
-			enable_external_libtdb=no
-		fi
-
-else
-	LIBTDB_CFLAGS=$pkg_cv_LIBTDB_CFLAGS
-	LIBTDB_LIBS=$pkg_cv_LIBTDB_LIBS
-        { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-	 enable_external_libtdb=yes
-fi
-fi
-
-
-if test "x$enable_external_libtdb" = xno
-then
-	tdbdir=""
-tdbpaths=". lib/tdb tdb ../tdb ../lib/tdb"
-for d in $tdbpaths; do
-	if test -f "$srcdir/$d/common/tdb.c"; then
-		tdbdir="$d"
-
-		break;
-	fi
-done
-if test x"$tdbdir" = "x"; then
-   { { $as_echo "$as_me:$LINENO: error: cannot find tdb source in $tdbpaths" >&5
-$as_echo "$as_me: error: cannot find tdb source in $tdbpaths" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-TDB_OBJ="common/tdb.o common/dump.o common/transaction.o common/error.o common/traverse.o"
-TDB_OBJ="$TDB_OBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o common/check.o"
-
-
-
-TDB_LIBS=""
-
-
-TDB_CFLAGS="-I$tdbdir/include"
-
-
-
-
-
-
-
-for ac_func in mmap pread pwrite getpagesize utime
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-for ac_header in getopt.h sys/select.h sys/time.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## ---------------------------------------- ##
-## Report this to samba-technical at samba.org ##
-## ---------------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
- { $as_echo "$as_me:$LINENO: checking for pread declaration" >&5
-$as_echo_n "checking for pread declaration... " >&6; }
-if test "${ac_cv_have_pread_decl+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <unistd.h>
-int
-main ()
-{
-int i = (int)pread
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_have_pread_decl=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_have_pread_decl=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_pread_decl" >&5
-$as_echo "$ac_cv_have_pread_decl" >&6; }
- if test x"$ac_cv_have_pread_decl" = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PREAD_DECL 1
-_ACEOF
-
- fi
-
-
- { $as_echo "$as_me:$LINENO: checking for pwrite declaration" >&5
-$as_echo_n "checking for pwrite declaration... " >&6; }
-if test "${ac_cv_have_pwrite_decl+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <unistd.h>
-int
-main ()
-{
-int i = (int)pwrite
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_have_pwrite_decl=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_have_pwrite_decl=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_pwrite_decl" >&5
-$as_echo "$ac_cv_have_pwrite_decl" >&6; }
- if test x"$ac_cv_have_pwrite_decl" = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PWRITE_DECL 1
-_ACEOF
-
- fi
-
-
-if test x"$VERSIONSCRIPT" != "x"; then
-    EXPORTSFILE=tdb.exports
-
-fi
-
-	LINK_LIBTDB=STATIC
-
-
-
-
-
-LIBTDB_SHARED_TARGET=bin/libtdb.$SHLIBEXT
-LIBTDB_STATIC_TARGET=bin/libtdb.a
-LIBTDB_SHARED=
-LIBTDB_STATIC=
-LIBTDB_LIBS=-ltdb
-LIBTDB_TARGET=
-INSTALL_LIBTDB=
-UNINSTALL_LIBTDB=
-
-LIBTDB_SOVER=1
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking whether to build the libtdb shared library" >&5
-$as_echo_n "checking whether to build the libtdb shared library... " >&6; }
-
-
-# Check whether --with-libtdb was given.
-if test "${with_libtdb+set}" = set; then
-  withval=$with_libtdb;
-case "$withval" in
-	no)
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-		build_lib=no
-		;;
-	*)
-		build_lib=yes
-		;;
-esac
-
-else
-
-# if unspecified, default is to build it if possible.
-build_lib=yes
-
-
-fi
-
-
-
-if eval test x"$build_lib" = "xyes" ; then
-	# only set the install targets if the user chose the library
-	INSTALL_LIBTDB=installlibtdb
-	UNINSTALL_LIBTDB=uninstalllibtdb
-	if eval $BLDSHARED = true; then
-		LIBTDB_SHARED=$LIBTDB_SHARED_TARGET
-		LIBTDB_TARGET=$LIBTDB_SHARED_TARGET
-		{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-		if test x"$USESHARED" != x"true" -o x"$LINK_LIBTDB" = "xSTATIC" ; then
-			enable_static=yes
-			LIBTDB_TARGET=$LIBTDB_STATIC_TARGET
-			LIBTDB_LIBS=$LIBTDB_STATIC_TARGET
-		else
-			LIBTDB_LIBS=-ltdb
-		fi
-	else
-		enable_static=yes
-		LIBTDB_TARGET=$LIBTDB_STATIC_TARGET
-		LIBTDB_LIBS=$LIBTDB_STATIC_TARGET
-		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
-$as_echo "no shared library support -- will supply static library" >&6; }
-	fi
-else
-	enable_static=yes
-	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
-$as_echo "shared library not selected" >&6; }
-fi
-if test $enable_static = yes; then
-	LIBTDB_STATIC=$LIBTDB_STATIC_TARGET
-fi
-
-
-
-
-
-
-	LIBTDB_OBJ0=""
-	for obj in ${TDB_OBJ}; do
-		LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
-	done
-
-	SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
-
-	TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
-
-	TDBDUMP="bin/tdbdump\$(EXEEXT)"
-
-	TDBTOOL="bin/tdbtool\$(EXEEXT)"
-
-	TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
-
-fi
-
-
-
-
-
-
-LIBNETAPI_SHARED_TARGET=bin/libnetapi.$SHLIBEXT
-LIBNETAPI_STATIC_TARGET=bin/libnetapi.a
-LIBNETAPI_SHARED=
-LIBNETAPI_STATIC=
-LIBNETAPI_LIBS=-lnetapi
-LIBNETAPI_TARGET=
-INSTALL_LIBNETAPI=
-UNINSTALL_LIBNETAPI=
-
-LIBNETAPI_SOVER=0
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking whether to build the libnetapi shared library" >&5
-$as_echo_n "checking whether to build the libnetapi shared library... " >&6; }
-
-
-# Check whether --with-libnetapi was given.
-if test "${with_libnetapi+set}" = set; then
-  withval=$with_libnetapi;
-case "$withval" in
-	no)
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-		build_lib=no
-		;;
-	*)
-		build_lib=yes
-		;;
-esac
-
-else
-
-# if unspecified, default is to build it if possible.
-build_lib=yes
-
-
-fi
-
-
-
-if eval test x"$build_lib" = "xyes" ; then
-	# only set the install targets if the user chose the library
-	INSTALL_LIBNETAPI=installlibnetapi
-	UNINSTALL_LIBNETAPI=uninstalllibnetapi
-	if eval $BLDSHARED = true; then
-		LIBNETAPI_SHARED=$LIBNETAPI_SHARED_TARGET
-		LIBNETAPI_TARGET=$LIBNETAPI_SHARED_TARGET
-		{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-		if test x"$USESHARED" != x"true" -o x"$LINK_LIBNETAPI" = "xSTATIC" ; then
-			enable_static=yes
-			LIBNETAPI_TARGET=$LIBNETAPI_STATIC_TARGET
-			LIBNETAPI_LIBS=$LIBNETAPI_STATIC_TARGET
-		else
-			LIBNETAPI_LIBS=-lnetapi
-		fi
-	else
-		enable_static=yes
-		LIBNETAPI_TARGET=$LIBNETAPI_STATIC_TARGET
-		LIBNETAPI_LIBS=$LIBNETAPI_STATIC_TARGET
-		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
-$as_echo "no shared library support -- will supply static library" >&6; }
-	fi
-else
-	enable_static=yes
-	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
-$as_echo "shared library not selected" >&6; }
-fi
-if test $enable_static = yes; then
-	LIBNETAPI_STATIC=$LIBNETAPI_STATIC_TARGET
-fi
-
-
-
-
-
-
-
-
-
-
-
-LIBSMBCLIENT_SHARED_TARGET=bin/libsmbclient.$SHLIBEXT
-LIBSMBCLIENT_STATIC_TARGET=bin/libsmbclient.a
-LIBSMBCLIENT_SHARED=
-LIBSMBCLIENT_STATIC=
-LIBSMBCLIENT_LIBS=-lsmbclient
-LIBSMBCLIENT_TARGET=
-INSTALL_LIBSMBCLIENT=
-UNINSTALL_LIBSMBCLIENT=
-
-LIBSMBCLIENT_SOVER=0
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking whether to build the libsmbclient shared library" >&5
-$as_echo_n "checking whether to build the libsmbclient shared library... " >&6; }
-
-
-# Check whether --with-libsmbclient was given.
-if test "${with_libsmbclient+set}" = set; then
-  withval=$with_libsmbclient;
-case "$withval" in
-	no)
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-		build_lib=no
-		;;
-	*)
-		build_lib=yes
-		;;
-esac
-
-else
-
-# if unspecified, default is to build it if possible.
-build_lib=yes
-
-
-fi
-
-
-
-if eval test x"$build_lib" = "xyes" ; then
-	# only set the install targets if the user chose the library
-	INSTALL_LIBSMBCLIENT=installlibsmbclient
-	UNINSTALL_LIBSMBCLIENT=uninstalllibsmbclient
-	if eval $BLDSHARED = true; then
-		LIBSMBCLIENT_SHARED=$LIBSMBCLIENT_SHARED_TARGET
-		LIBSMBCLIENT_TARGET=$LIBSMBCLIENT_SHARED_TARGET
-		{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-		if test x"$USESHARED" != x"true" -o x"$LINK_LIBSMBCLIENT" = "xSTATIC" ; then
-			enable_static=yes
-			LIBSMBCLIENT_TARGET=$LIBSMBCLIENT_STATIC_TARGET
-			LIBSMBCLIENT_LIBS=$LIBSMBCLIENT_STATIC_TARGET
-		else
-			LIBSMBCLIENT_LIBS=-lsmbclient
-		fi
-	else
-		enable_static=yes
-		LIBSMBCLIENT_TARGET=$LIBSMBCLIENT_STATIC_TARGET
-		LIBSMBCLIENT_LIBS=$LIBSMBCLIENT_STATIC_TARGET
-		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
-$as_echo "no shared library support -- will supply static library" >&6; }
-	fi
-else
-	enable_static=yes
-	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
-$as_echo "shared library not selected" >&6; }
-fi
-if test $enable_static = yes; then
-	LIBSMBCLIENT_STATIC=$LIBSMBCLIENT_STATIC_TARGET
-fi
-
-
-
-
-
-
-
-
-
-
-
-LIBSMBSHAREMODES_SHARED_TARGET=bin/libsmbsharemodes.$SHLIBEXT
-LIBSMBSHAREMODES_STATIC_TARGET=bin/libsmbsharemodes.a
-LIBSMBSHAREMODES_SHARED=
-LIBSMBSHAREMODES_STATIC=
-LIBSMBSHAREMODES_LIBS=-lsmbsharemodes
-LIBSMBSHAREMODES_TARGET=
-INSTALL_LIBSMBSHAREMODES=
-UNINSTALL_LIBSMBSHAREMODES=
-
-LIBSMBSHAREMODES_SOVER=0
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking whether to build the libsmbsharemodes shared library" >&5
-$as_echo_n "checking whether to build the libsmbsharemodes shared library... " >&6; }
-
-
-# Check whether --with-libsmbsharemodes was given.
-if test "${with_libsmbsharemodes+set}" = set; then
-  withval=$with_libsmbsharemodes;
-case "$withval" in
-	no)
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-		build_lib=no
-		;;
-	*)
-		build_lib=yes
-		;;
-esac
-
-else
-
-# if unspecified, default is to build it if possible.
-build_lib=yes
-
-
-fi
-
-
-
-if eval test x"$build_lib" = "xyes" ; then
-	# only set the install targets if the user chose the library
-	INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
-	UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
-	if eval $BLDSHARED = true; then
-		LIBSMBSHAREMODES_SHARED=$LIBSMBSHAREMODES_SHARED_TARGET
-		LIBSMBSHAREMODES_TARGET=$LIBSMBSHAREMODES_SHARED_TARGET
-		{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-		if test x"$USESHARED" != x"true" -o x"$LINK_LIBSMBSHAREMODES" = "xSTATIC" ; then
-			enable_static=yes
-			LIBSMBSHAREMODES_TARGET=$LIBSMBSHAREMODES_STATIC_TARGET
-			LIBSMBSHAREMODES_LIBS=$LIBSMBSHAREMODES_STATIC_TARGET
-		else
-			LIBSMBSHAREMODES_LIBS=-lsmbsharemodes
-		fi
-	else
-		enable_static=yes
-		LIBSMBSHAREMODES_TARGET=$LIBSMBSHAREMODES_STATIC_TARGET
-		LIBSMBSHAREMODES_LIBS=$LIBSMBSHAREMODES_STATIC_TARGET
-		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
-$as_echo "no shared library support -- will supply static library" >&6; }
-	fi
-else
-	enable_static=yes
-	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
-$as_echo "shared library not selected" >&6; }
-fi
-if test $enable_static = yes; then
-	LIBSMBSHAREMODES_STATIC=$LIBSMBSHAREMODES_STATIC_TARGET
-fi
-
-
-
-
-
-
-
-
-
-
-
-LIBADDNS_SHARED_TARGET=bin/libaddns.$SHLIBEXT
-LIBADDNS_STATIC_TARGET=bin/libaddns.a
-LIBADDNS_SHARED=
-LIBADDNS_STATIC=
-LIBADDNS_LIBS=-laddns
-LIBADDNS_TARGET=
-INSTALL_LIBADDNS=
-UNINSTALL_LIBADDNS=
-
-LIBADDNS_SOVER=0
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking whether to build the libaddns shared library" >&5
-$as_echo_n "checking whether to build the libaddns shared library... " >&6; }
-
-
-# Check whether --with-libaddns was given.
-if test "${with_libaddns+set}" = set; then
-  withval=$with_libaddns;
-case "$withval" in
-	yes)
-		build_lib=yes
-		;;
-	*)
-		{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-		build_lib=no
-		;;
-esac
-
-else
-
-# if unspecified, default is not to build
-{ $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-build_lib=no
-
-
-fi
-
-
-
-if eval test x"$build_lib" = "xyes" ; then
-	# only set the install targets if the user chose the library
-	INSTALL_LIBADDNS=installlibaddns
-	UNINSTALL_LIBADDNS=uninstalllibaddns
-	if eval $BLDSHARED = true; then
-		LIBADDNS_SHARED=$LIBADDNS_SHARED_TARGET
-		LIBADDNS_TARGET=$LIBADDNS_SHARED_TARGET
-		{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-		if test x"$USESHARED" != x"true" -o x"$LINK_LIBADDNS" = "xSTATIC" ; then
-			enable_static=yes
-			LIBADDNS_TARGET=$LIBADDNS_STATIC_TARGET
-			LIBADDNS_LIBS=$LIBADDNS_STATIC_TARGET
-		else
-			LIBADDNS_LIBS=-laddns
-		fi
-	else
-		enable_static=yes
-		LIBADDNS_TARGET=$LIBADDNS_STATIC_TARGET
-		LIBADDNS_LIBS=$LIBADDNS_STATIC_TARGET
-		{ $as_echo "$as_me:$LINENO: result: no shared library support -- will supply static library" >&5
-$as_echo "no shared library support -- will supply static library" >&6; }
-	fi
-else
-	enable_static=yes
-	{ $as_echo "$as_me:$LINENO: result: shared library not selected" >&5
-$as_echo "shared library not selected" >&6; }
-fi
-if test $enable_static = yes; then
-	LIBADDNS_STATIC=$LIBADDNS_STATIC_TARGET
-fi
-
-
-
-
-
-
-
-
-#################################################
 # these tests are taken from the GNU fileutils package
 { $as_echo "$as_me:$LINENO: checking how to get filesystem space usage..." >&5
 $as_echo "$as_me: checking how to get filesystem space usage..." >&6;}
@@ -77380,7 +77595,7 @@
 
 
 SAVED_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $CTDB_CPPFLAGS"
+CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
 ctdb_broken="missing or broken headers"
 
 

Modified: branches/samba/experimental/source3/configure.in
===================================================================
--- branches/samba/experimental/source3/configure.in	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/configure.in	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1007,7 +1007,7 @@
 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
-AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64)
+AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64)
 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
 AC_CHECK_FUNCS(getpwent_r)
@@ -1491,9 +1491,10 @@
 
   # and these are for particular systems
   case "$host_os" in
-		*linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
-			case "$host_os" in *linux*)
-				AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
+		*linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
+			case "$host_os" in
+				*linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
+				*qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
 			esac
 			BLDSHARED="true"
 			LDSHFLAGS="-shared -Wl,-Bsymbolic"
@@ -1606,9 +1607,6 @@
 			AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
 			AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
 			;;
-		*qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
-			AC_DEFINE(STAT_ST_BLOCKSIZE,512)
-			;;
 		*osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
 			BLDSHARED="true"
 			LDSHFLAGS="-shared"
@@ -1787,6 +1785,184 @@
 
 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
 
+
+###########################################################
+#
+# Configuration of subsystem / libraries
+#
+###########################################################
+
+INSTALLLIBCMD_SH=:
+INSTALLLIBCMD_A=:
+UNINSTALLLIBCMD_SH=:
+UNINSTALLLIBCMD_A=:
+
+if test $BLDSHARED = true; then
+	INSTALLLIBCMD_SH="\$(INSTALLCMD)"
+	UNINSTALLLIBCMD_SH="rm -f"
+fi
+if test $enable_static = yes; then
+	INSTALLLIBCMD_A="\$(INSTALLCMD)"
+	UNINSTALLLIBCMD_A="rm -f"
+fi
+
+#################################################
+# --disable-shared-libs
+# can be used to disable the internal use of shared libs altogether
+# (this only has an effect when building shared libs is enabled)
+#
+USESHARED=false
+AC_SUBST(USESHARED)
+
+AC_MSG_CHECKING(whether to use shared libraries internally)
+AC_ARG_ENABLE([shared-libs],
+	AS_HELP_STRING([--enable-shared-libs],
+		[Use shared libraries internally (default=yes)]),
+	[enable_shared_libs=$enableval],
+	[enable_shared_libs=yes])
+
+if test x"$enable_shared_libs" != x"no" ; then
+	USESHARED=$BLDSHARED
+fi
+
+AC_MSG_RESULT([$USESHARED])
+
+if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
+	AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
+fi
+
+#################################################
+# --with-static-libs=LIBS:
+#   link (internal) libs dynamically or statically?
+#
+# If a subsystem is built as a library then this controls whether they are
+# linked into Samba targets statically or dynamically:
+#
+# * If we build the shared library at all, we link dynamically by default.
+#
+# * We only link statically if we don't build shared or if the library
+#   appears in the --with-static-libs configure option.
+#
+# Example:
+#   --with-static-libs=libtalloc makes use of libtalloc.a instead
+#   of linking the dynamic variant with -ltalloc.
+#
+# NOTE: This option only affects libraries that we do not only build
+# but that samba also links against as libraries (as opposed to linking
+# the plain object files. - This has to be configured in Makefile.in.
+# So in particular it does not harm to give invalid or unknown names here.
+#
+
+AC_ARG_WITH([static-libs],
+	[AS_HELP_STRING([--with-static-libs=LIBS],
+		[Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
+	[AS_IF([test $withval],
+		[for lib in `echo $withval | sed -e 's/,/ /g'` ; do
+			[lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
+			eval LINK_$lib=STATIC
+		done], [])],
+	[])
+
+#
+# WORKAROUND:
+#   until we have organized other internal subsystems (as util, registry
+#   and smbconf) into shared libraries, we CAN NOT link libnetapi
+#   dynamically to samba programs.
+#
+LINK_LIBNETAPI=STATIC
+
+LINK_LIBSMBCLIENT=STATIC
+
+#
+#  The library versions are hardcoded here
+#  and filled into the LIBFOO_SOVER variable.
+#
+#  TODO: for talloc and tdb (at least), these should
+#  be extracted from their respective source directories
+#
+AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
+[ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
+
+if test "x$enable_external_libtalloc" != xno
+then
+	PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
+		[ enable_external_libtalloc=yes ],
+		[if test x$enable_external_libtalloc = xyes; then
+			AC_MSG_ERROR([Unable to find libtalloc])
+		  else
+			enable_external_libtalloc=no
+		  fi
+		])
+fi
+
+if test "x$enable_external_libtalloc" = xno
+then
+	m4_include(../lib/talloc/libtalloc.m4)
+	LINK_LIBTALLOC=STATIC
+	SMB_LIBRARY(talloc, 2)
+	LIBTALLOC_OBJ0=""
+	for obj in ${TALLOC_OBJ}; do
+		LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
+	done
+	SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
+	SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
+	AC_SUBST(LIBTALLOC_OBJ0)
+
+	TALLOCTORT="bin/talloctort\$(EXEEXT)"
+	AC_SUBST(TALLOCTORT)
+fi
+
+
+AC_ARG_ENABLE(external_libtdb,
+	[AS_HELP_STRING([--enable-external-libtdb],
+		[Enable external tdb [default=auto]])],
+		[ enable_external_libtalloc=$enableval ],
+		[ enable_external_libtalloc=auto ])
+
+if test "x$enable_external_libtdb" != xno
+then
+	PKG_CHECK_MODULES(LIBTDB, tdb >= 1.1.7,
+		[ enable_external_libtdb=yes ],
+		[
+		if test x$enable_external_libtdb = xyes; then
+			AC_MSG_ERROR([Unable to find libtdb])
+		else
+			enable_external_libtdb=no
+		fi
+		])
+fi
+
+AC_SUBST(LIBTDB_OBJ0)
+if test "x$enable_external_libtdb" = xno
+then
+	m4_include(../lib/tdb/libtdb.m4)
+	LINK_LIBTDB=STATIC
+	SMB_LIBRARY(tdb, 1)
+	LIBTDB_OBJ0=""
+	for obj in ${TDB_OBJ}; do
+		LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
+	done
+	AC_SUBST(LIBTDB_OBJ0)
+	SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
+	SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
+
+	TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
+	AC_SUBST(TDBBACKUP)
+	TDBDUMP="bin/tdbdump\$(EXEEXT)"
+	AC_SUBST(TDBDUMP)
+	TDBTOOL="bin/tdbtool\$(EXEEXT)"
+	AC_SUBST(TDBTOOL)
+	TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
+	AC_SUBST(TDBTORTURE)
+fi
+
+SMB_LIBRARY(netapi, 0)
+SMB_LIBRARY(smbclient, 0)
+SMB_LIBRARY(smbsharemodes, 0)
+SMB_LIBRARY(addns, 0, no, [undefined API])
+
+
+
 ################
 
 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
@@ -2036,7 +2212,7 @@
 dnl  But we don't need to do each and every one, because our code uses
 dnl  mostly just the utmp (not utmpx) fields.
 
-AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
+AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
 
 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
 AC_TRY_COMPILE([#include <sys/types.h>
@@ -2741,6 +2917,22 @@
   fi
 fi
 
+# glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
+AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
+AC_TRY_COMPILE([
+  #define _XOPEN_SOURCE 600
+  #include <stdlib.h>
+  #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
+    probably broken posix_fallocate
+  #endif
+], [
+], 
+samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
+if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
+	AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
+fi
+
+
 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
 AC_TRY_COMPILE([#include <sys/types.h>
 #include <sys/stat.h>
@@ -3279,7 +3471,7 @@
   # now check for krb5.h. Some systems have the libraries without the headers!
   # note that this check is done here to allow for different kerberos
   # include paths
-  AC_CHECK_HEADERS(krb5.h krb5/krb5.h)
+  AC_CHECK_HEADERS(krb5.h)
 
   if test x"$ac_cv_header_krb5_h" = x"no"; then
 
@@ -3301,8 +3493,8 @@
     LDFLAGS=$ac_save_LDFLAGS
   fi
   AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
-[[#ifdef HAVE_KRB5_KRB5_H
- #include <krb5/krb5.h>
+[[#ifdef HAVE_KRB5_H
+ #include <krb5.h>
  #endif
 ]])
 
@@ -3312,6 +3504,22 @@
 		EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
 	fi
   fi
+
+  # check for new heimdal KRB5_DEPRECATED handling
+
+  AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
+                samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
+    AC_TRY_COMPILE(
+      [#define KRB5_DEPRECATED 1
+      #include <krb5.h>],
+      [],
+      samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
+      samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
+
+  if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
+    AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
+	       [Whether to use deprecated krb5 interfaces])
+  fi
 fi
 
 # Now we have determined whether we really want ADS support
@@ -4233,6 +4441,39 @@
 fi # try_pam != no
 
 #################################################
+# check for PAM_RADIO_TYPE
+AC_TRY_COMPILE([
+#if (!defined(LINUX))
+
+#define PAM_EXTERN extern
+#if defined(HAVE_SECURITY_PAM_APPL_H)
+#include <security/pam_appl.h>
+#elif defined(HAVE_PAM_PAM_APPL_H)
+#include <pam/pam_appl.h>
+#endif
+
+#endif
+
+#if defined(HAVE_SECURITY_PAM_MODULES_H)
+#include <security/pam_modules.h>
+#elif defined(HAVE_PAM_PAM_MODULES_H)
+#include <pam/pam_modules.h>
+#endif
+
+#if defined(HAVE_SECURITY__PAM_MACROS_H)
+#include <security/_pam_macros.h>
+#elif defined(HAVE_PAM__PAM_MACROS_H)
+#include <pam/_pam_macros.h>
+#endif
+
+#ifdef HAVE_SECURITY_PAM_EXT_H
+#include <security/pam_ext.h>
+#endif
+],
+[int i; i = PAM_RADIO_TYPE; ],
+AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
+
+#################################################
 # check for pam_smbpass support
 PAM_MODULES=""
 INSTALL_PAM_MODULES=""
@@ -4697,175 +4938,8 @@
         AC_MSG_RESULT(no$utmp_no_reason)
 fi
 
-INSTALLLIBCMD_SH=:
-INSTALLLIBCMD_A=:
-UNINSTALLLIBCMD_SH=:
-UNINSTALLLIBCMD_A=:
 
-if test $BLDSHARED = true; then
-	INSTALLLIBCMD_SH="\$(INSTALLCMD)"
-	UNINSTALLLIBCMD_SH="rm -f"
-fi
-if test $enable_static = yes; then
-	INSTALLLIBCMD_A="\$(INSTALLCMD)"
-	UNINSTALLLIBCMD_A="rm -f"
-fi
-
 #################################################
-# --disable-shared-libs
-# can be used to disable the internal use of shared libs altogether
-# (this only has an effect when building shared libs is enabled)
-#
-USESHARED=false
-AC_SUBST(USESHARED)
-
-AC_MSG_CHECKING(whether to use shared libraries internally)
-AC_ARG_ENABLE([shared-libs],
-	AS_HELP_STRING([--enable-shared-libs],
-		[Use shared libraries internally (default=yes)]),
-	[enable_shared_libs=$enableval],
-	[enable_shared_libs=yes])
-
-if test x"$enable_shared_libs" != x"no" ; then
-	USESHARED=$BLDSHARED
-fi
-
-AC_MSG_RESULT([$USESHARED])
-
-if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
-	AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
-fi
-
-#################################################
-# --with-static-libs=LIBS:
-#   link (internal) libs dynamically or statically?
-#
-# If a subsystem is built as a library then this controls whether they are
-# linked into Samba targets statically or dynamically:
-#
-# * If we build the shared library at all, we link dynamically by default.
-#
-# * We only link statically if we don't build shared or if the library
-#   appears in the --with-static-libs configure option.
-#
-# Example:
-#   --with-static-libs=libtalloc makes use of libtalloc.a instead
-#   of linking the dynamic variant with -ltalloc.
-#
-# NOTE: This option only affects libraries that we do not only build
-# but that samba also links against as libraries (as opposed to linking
-# the plain object files. - This has to be configured in Makefile.in.
-# So in particular it does not harm to give invalid or unknown names here.
-#
-
-AC_ARG_WITH([static-libs],
-	[AS_HELP_STRING([--with-static-libs=LIBS],
-		[Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
-	[AS_IF([test $withval],
-		[for lib in `echo $withval | sed -e 's/,/ /g'` ; do
-			[lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
-			eval LINK_$lib=STATIC
-		done], [])],
-	[])
-
-#
-# WORKAROUND:
-#   until we have organized other internal subsystems (as util, registry
-#   and smbconf) into shared libraries, we CAN NOT link libnetapi
-#   dynamically to samba programs.
-#
-LINK_LIBNETAPI=STATIC
-
-LINK_LIBSMBCLIENT=STATIC
-
-#
-#  The library versions are hardcoded here
-#  and filled into the LIBFOO_SOVER variable.
-#
-#  TODO: for talloc and tdb (at least), these should
-#  be extracted from their respective source directories
-#
-AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])], 
-[ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
-
-if test "x$enable_external_libtalloc" != xno
-then
-	PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
-		[ enable_external_libtalloc=yes ],
-		[ if test x$enable_external_libtalloc = xyes; then
-		 	AC_MSG_ERROR([Unable to find libtalloc])
-	      else 
-			enable_external_libtalloc=no
-		  fi
-		])
-fi
-
-if test "x$enable_external_libtalloc" = xno
-then
-	m4_include(../lib/talloc/libtalloc.m4)
-	LINK_LIBTALLOC=STATIC
-	SMB_LIBRARY(talloc, 2)
-	LIBTALLOC_OBJ0=""
-	for obj in ${TALLOC_OBJ}; do
-		LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
-	done
-	SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
-	AC_SUBST(LIBTALLOC_OBJ0)
-
-	TALLOCTORT="bin/talloctort\$(EXEEXT)"
-	AC_SUBST(TALLOCTORT)
-fi
-
-
-AC_ARG_ENABLE(external_libtdb,
-	[AS_HELP_STRING([--enable-external-libtdb],
-		[Enable external tdb [default=auto]])],
-		[ enable_external_libtalloc=$enableval ],
-		[ enable_external_libtalloc=auto ])
-
-if test "x$enable_external_libtdb" != xno
-then
-	PKG_CHECK_MODULES(LIBTDB, tdb >= 1.1.4,
-		[ enable_external_libtdb=yes ],
-		[
-		if test x$enable_external_libtdb = xyes; then
-			AC_MSG_ERROR([Unable to find libtdb])
-		else
-			enable_external_libtdb=no
-		fi
-		])
-fi
-
-AC_SUBST(LIBTDB_OBJ0)
-if test "x$enable_external_libtdb" = xno
-then
-	m4_include(../lib/tdb/libtdb.m4)
-	LINK_LIBTDB=STATIC
-	SMB_LIBRARY(tdb, 1)
-	LIBTDB_OBJ0=""
-	for obj in ${TDB_OBJ}; do
-		LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
-	done
-	AC_SUBST(LIBTDB_OBJ0)
-	SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
-
-	TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
-	AC_SUBST(TDBBACKUP)
-	TDBDUMP="bin/tdbdump\$(EXEEXT)"
-	AC_SUBST(TDBDUMP)
-	TDBTOOL="bin/tdbtool\$(EXEEXT)"
-	AC_SUBST(TDBTOOL)
-	TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
-	AC_SUBST(TDBTORTURE)
-fi
-
-SMB_LIBRARY(netapi, 0)
-SMB_LIBRARY(smbclient, 0)
-SMB_LIBRARY(smbsharemodes, 0)
-SMB_LIBRARY(addns, 0, no, [undefined API])
-
-
-#################################################
 # these tests are taken from the GNU fileutils package
 AC_CHECKING(how to get filesystem space usage)
 space=no
@@ -5127,7 +5201,7 @@
   esac])
 
 SAVED_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $CTDB_CPPFLAGS"
+CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
 ctdb_broken="missing or broken headers"
 
 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[

Modified: branches/samba/experimental/source3/include/ads.h
===================================================================
--- branches/samba/experimental/source3/include/ads.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/ads.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -8,6 +8,24 @@
 
 #include "../libds/common/flags.h"
 
+/*
+ * This should be under the HAVE_KRB5 flag but since they're used
+ * in lp_kerberos_method(), they ned to be always available
+ */
+#define KERBEROS_VERIFY_SECRETS 0
+#define KERBEROS_VERIFY_SYSTEM_KEYTAB 1
+#define KERBEROS_VERIFY_DEDICATED_KEYTAB 2
+#define KERBEROS_VERIFY_SECRETS_AND_KEYTAB 3
+
+/*
+ * If you add any entries to the above, please modify the below expressions
+ * so they remain accurate.
+ */
+#define USE_KERBEROS_KEYTAB (KERBEROS_VERIFY_SECRETS != lp_kerberos_method())
+#define USE_SYSTEM_KEYTAB \
+    ((KERBEROS_VERIFY_SECRETS_AND_KEYTAB == lp_kerberos_method()) || \
+     (KERBEROS_VERIFY_SYSTEM_KEYTAB == lp_kerberos_method()))
+
 #define TOK_ID_KRB_AP_REQ	((const uint8_t *)"\x01\x00")
 #define TOK_ID_KRB_AP_REP	((const uint8_t *)"\x02\x00")
 #define TOK_ID_KRB_ERROR	((const uint8_t *)"\x03\x00")
@@ -229,62 +247,9 @@
 /* Kerberos environment variable names */
 #define KRB5_ENV_CCNAME "KRB5CCNAME"
 
-/* Heimdal uses a slightly different name */
-#if defined(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5)
-#define ENCTYPE_ARCFOUR_HMAC ENCTYPE_ARCFOUR_HMAC_MD5
-#endif
-
-/* The older versions of heimdal that don't have this
-   define don't seem to use it anyway.  I'm told they
-   always use a subkey */
-#ifndef HAVE_AP_OPTS_USE_SUBKEY
-#define AP_OPTS_USE_SUBKEY 0
-#endif
-
 #define WELL_KNOWN_GUID_COMPUTERS	"AA312825768811D1ADED00C04FD8D5CD" 
 #define WELL_KNOWN_GUID_USERS		"A9D1CA15768811D1ADED00C04FD8D5CD"
 
-#ifndef KRB5_ADDR_NETBIOS
-#define KRB5_ADDR_NETBIOS 0x14
-#endif
-
-#ifndef KRB5KRB_ERR_RESPONSE_TOO_BIG
-#define KRB5KRB_ERR_RESPONSE_TOO_BIG (-1765328332L)
-#endif
-
-#ifdef HAVE_KRB5
-typedef struct {
-#if defined(HAVE_MAGIC_IN_KRB5_ADDRESS) && defined(HAVE_ADDRTYPE_IN_KRB5_ADDRESS) /* MIT */
-	krb5_address **addrs;
-#elif defined(HAVE_KRB5_ADDRESSES) /* Heimdal */
-	krb5_addresses *addrs;
-#else
-#error UNKNOWN_KRB5_ADDRESS_TYPE
-#endif /* defined(HAVE_MAGIC_IN_KRB5_ADDRESS) && defined(HAVE_ADDRTYPE_IN_KRB5_ADDRESS) */
-} smb_krb5_addresses;
-
-#ifdef HAVE_KRB5_KEYBLOCK_KEYVALUE /* Heimdal */
-#define KRB5_KEY_TYPE(k)	((k)->keytype)
-#define KRB5_KEY_LENGTH(k)	((k)->keyvalue.length)
-#define KRB5_KEY_DATA(k)	((k)->keyvalue.data)
-#define KRB5_KEY_DATA_CAST	void
-#else /* MIT */
-#define KRB5_KEY_TYPE(k)	((k)->enctype)
-#define KRB5_KEY_LENGTH(k)	((k)->length)
-#define KRB5_KEY_DATA(k)	((k)->contents)
-#define KRB5_KEY_DATA_CAST	krb5_octet
-#endif /* HAVE_KRB5_KEYBLOCK_KEYVALUE */
-
-#ifdef HAVE_KRB5_KEYTAB_ENTRY_KEY               /* MIT */
-#define KRB5_KT_KEY(k)		(&(k)->key)
-#elif HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK          /* Heimdal */
-#define KRB5_KT_KEY(k)		(&(k)->keyblock)
-#else
-#error krb5_keytab_entry has no key or keyblock member
-#endif /* HAVE_KRB5_KEYTAB_ENTRY_KEY */
-
-#endif /* HAVE_KRB5 */
-
 enum ads_extended_dn_flags {
 	ADS_EXTENDED_DN_HEX_STRING	= 0,
 	ADS_EXTENDED_DN_STRING		= 1 /* not supported on win2k */

Modified: branches/samba/experimental/source3/include/authdata.h
===================================================================
--- branches/samba/experimental/source3/include/authdata.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/authdata.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,8 +21,6 @@
 #ifndef _AUTHDATA_H
 #define _AUTHDATA_H
 
-#include "rpc_misc.h"
-
 #define PAC_TYPE_LOGON_INFO 1
 #define PAC_TYPE_SERVER_CHECKSUM 6
 #define PAC_TYPE_PRIVSVR_CHECKSUM 7

Modified: branches/samba/experimental/source3/include/config.h.in
===================================================================
--- branches/samba/experimental/source3/include/config.h.in	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/config.h.in	2009-12-16 21:43:48 UTC (rev 3157)
@@ -255,6 +255,9 @@
 /* Whether getgroups is broken */
 #undef HAVE_BROKEN_GETGROUPS
 
+/* Whether we have a broken posix_fallocate */
+#undef HAVE_BROKEN_POSIX_FALLOCATE
+
 /* Whether readdir() returns the wrong name offset */
 #undef HAVE_BROKEN_READDIR_NAME
 
@@ -836,6 +839,9 @@
 /* Define to 1 if you have the `getutmpx' function. */
 #undef HAVE_GETUTMPX
 
+/* Define to 1 if you have the `getutxent' function. */
+#undef HAVE_GETUTXENT
+
 /* Define to 1 if you have the `getxattr' function. */
 #undef HAVE_GETXATTR
 
@@ -1052,6 +1058,9 @@
 /* Define to 1 if you have the `krb5_decode_ap_req' function. */
 #undef HAVE_KRB5_DECODE_AP_REQ
 
+/* Whether to use deprecated krb5 interfaces */
+#undef HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER
+
 /* Whether the type krb5_encrypt_block exists */
 #undef HAVE_KRB5_ENCRYPT_BLOCK
 
@@ -1145,9 +1154,6 @@
 /* Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available */
 #undef HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM
 
-/* Define to 1 if you have the <krb5/krb5.h> header file. */
-#undef HAVE_KRB5_KRB5_H
-
 /* Define to 1 if you have the `krb5_krbhst_get_addrinfo' function. */
 #undef HAVE_KRB5_KRBHST_GET_ADDRINFO
 
@@ -1649,6 +1655,9 @@
 /* Define to 1 if you have the <pam/pam_modules.h> header file. */
 #undef HAVE_PAM_PAM_MODULES_H
 
+/* Define to 1 if PAM_RADIO_TYPE is available */
+#undef HAVE_PAM_RADIO_TYPE
+
 /* Define to 1 if you have the `pam_start' function. */
 #undef HAVE_PAM_START
 
@@ -1688,6 +1697,12 @@
 /* Whether posix_fadvise is available */
 #undef HAVE_POSIX_FADVISE
 
+/* Define to 1 if you have the `posix_fallocate' function. */
+#undef HAVE_POSIX_FALLOCATE
+
+/* Define to 1 if you have the `posix_fallocate64' function. */
+#undef HAVE_POSIX_FALLOCATE64
+
 /* Define to 1 if you have the `posix_memalign' function. */
 #undef HAVE_POSIX_MEMALIGN
 

Modified: branches/samba/experimental/source3/include/includes.h
===================================================================
--- branches/samba/experimental/source3/include/includes.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/includes.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,11 +20,6 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-/* work around broken krb5.h on sles9 */
-#ifdef SIZEOF_LONG
-#undef SIZEOF_LONG
-#endif
-
 #include "../replace/replace.h"
 
 /* make sure we have included the correct config.h */
@@ -146,9 +141,7 @@
 #endif
 #endif /* HAVE_NETGROUP */
 
-#if HAVE_KRB5_H
-#include <krb5.h>
-#else
+#ifndef HAVE_KRB5_H
 #undef HAVE_KRB5
 #endif
 
@@ -659,7 +652,6 @@
 #include "passdb.h"
 #include "rpc_secdes.h"
 #include "../libgpo/gpo.h"
-#include "authdata.h"
 #include "msdfs.h"
 #include "rap.h"
 #include "../lib/crypto/md5.h"
@@ -687,7 +679,6 @@
 #include "mangle.h"
 #include "module.h"
 #include "nsswitch/winbind_client.h"
-#include "rpc_client.h"
 #include "dbwrap.h"
 #include "packet.h"
 #include "ctdbd_conn.h"
@@ -930,167 +921,6 @@
 #define XATTR_REPLACE 0x2       /* set value, fail if attr does not exist */
 #endif
 
-/*
- * This should be under the HAVE_KRB5 flag but since they're used
- * in lp_kerberos_method(), they ned to be always available
- */
-#define KERBEROS_VERIFY_SECRETS 0
-#define KERBEROS_VERIFY_SYSTEM_KEYTAB 1
-#define KERBEROS_VERIFY_DEDICATED_KEYTAB 2
-#define KERBEROS_VERIFY_SECRETS_AND_KEYTAB 3
-
-/*
- * If you add any entries to the above, please modify the below expressions
- * so they remain accurate.
- */
-#define USE_KERBEROS_KEYTAB (KERBEROS_VERIFY_SECRETS != lp_kerberos_method())
-#define USE_SYSTEM_KEYTAB \
-    ((KERBEROS_VERIFY_SECRETS_AND_KEYTAB == lp_kerberos_method()) || \
-     (KERBEROS_VERIFY_SYSTEM_KEYTAB == lp_kerberos_method()))
-
-#if defined(HAVE_KRB5)
-krb5_error_code smb_krb5_parse_name(krb5_context context,
-				const char *name, /* in unix charset */
-                                krb5_principal *principal);
-
-krb5_error_code smb_krb5_unparse_name(TALLOC_CTX *mem_ctx,
-				      krb5_context context,
-				      krb5_const_principal principal,
-				      char **unix_name);
-
-#ifndef HAVE_KRB5_SET_REAL_TIME
-krb5_error_code krb5_set_real_time(krb5_context context, int32_t seconds, int32_t microseconds);
-#endif
-
-krb5_error_code krb5_set_default_tgs_ktypes(krb5_context ctx, const krb5_enctype *enc);
-
-#if defined(HAVE_KRB5_AUTH_CON_SETKEY) && !defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY)
-krb5_error_code krb5_auth_con_setuseruserkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock *keyblock);
-#endif
-
-#ifndef HAVE_KRB5_FREE_UNPARSED_NAME
-void krb5_free_unparsed_name(krb5_context ctx, char *val);
-#endif
-
-/* Stub out initialize_krb5_error_table since it is not present in all
- * Kerberos implementations. If it's not present, it's not necessary to
- * call it.
- */
-#ifndef HAVE_INITIALIZE_KRB5_ERROR_TABLE
-#define initialize_krb5_error_table()
-#endif
-
-/* Samba wrapper function for krb5 functionality. */
-bool setup_kaddr( krb5_address *pkaddr, struct sockaddr_storage *paddr);
-int create_kerberos_key_from_string(krb5_context context, krb5_principal host_princ, krb5_data *password, krb5_keyblock *key, krb5_enctype enctype, bool no_salt);
-bool get_auth_data_from_tkt(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, krb5_ticket *tkt);
-krb5_const_principal get_principal_from_tkt(krb5_ticket *tkt);
-krb5_error_code smb_krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters);
-#if defined(HAVE_KRB5_LOCATE_KDC)
-krb5_error_code krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters);
-#endif
-krb5_error_code get_kerberos_allowed_etypes(krb5_context context, krb5_enctype **enctypes);
-bool get_krb5_smb_session_key(krb5_context context, krb5_auth_context auth_context, DATA_BLOB *session_key, bool remote);
-krb5_error_code smb_krb5_kt_free_entry(krb5_context context, krb5_keytab_entry *kt_entry);
-krb5_principal kerberos_fetch_salt_princ_for_host_princ(krb5_context context, krb5_principal host_princ, int enctype);
-void kerberos_set_creds_enctype(krb5_creds *pcreds, int enctype);
-bool kerberos_compatible_enctypes(krb5_context context, krb5_enctype enctype1, krb5_enctype enctype2);
-void kerberos_free_data_contents(krb5_context context, krb5_data *pdata);
-NTSTATUS decode_pac_data(TALLOC_CTX *mem_ctx,
-			 DATA_BLOB *pac_data_blob,
-			 krb5_context context,
-			 krb5_keyblock *service_keyblock,
-			 krb5_const_principal client_principal,
-			 time_t tgs_authtime,
-			 struct PAC_DATA **pac_data_out);
-void smb_krb5_checksum_from_pac_sig(krb5_checksum *cksum, 
-				    struct PAC_SIGNATURE_DATA *sig);
-krb5_error_code smb_krb5_verify_checksum(krb5_context context,
-					 const krb5_keyblock *keyblock,
-					 krb5_keyusage usage,
-					 krb5_checksum *cksum,
-					 uint8 *data,
-					 size_t length);
-time_t get_authtime_from_tkt(krb5_ticket *tkt);
-void smb_krb5_free_ap_req(krb5_context context, 
-			  krb5_ap_req *ap_req);
-krb5_error_code smb_krb5_get_keyinfo_from_ap_req(krb5_context context, 
-						 const krb5_data *inbuf, 
-						 krb5_kvno *kvno, 
-						 krb5_enctype *enctype);
-krb5_error_code krb5_rd_req_return_keyblock_from_keytab(krb5_context context,
-							krb5_auth_context *auth_context,
-							const krb5_data *inbuf,
-							krb5_const_principal server,
-							krb5_keytab keytab,
-							krb5_flags *ap_req_options,
-							krb5_ticket **ticket, 
-							krb5_keyblock **keyblock);
-krb5_error_code smb_krb5_parse_name_norealm(krb5_context context, 
-					    const char *name, 
-					    krb5_principal *principal);
-bool smb_krb5_principal_compare_any_realm(krb5_context context, 
-					  krb5_const_principal princ1, 
-					  krb5_const_principal princ2);
-int cli_krb5_get_ticket(const char *principal, time_t time_offset,
-			DATA_BLOB *ticket, DATA_BLOB *session_key_krb5,
-			uint32 extra_ap_opts, const char *ccname,
-			time_t *tgs_expire,
-			const char *impersonate_princ_s);
-krb5_error_code smb_krb5_renew_ticket(const char *ccache_string, const char *client_string, const char *service_string, time_t *expire_time);
-krb5_error_code kpasswd_err_to_krb5_err(krb5_error_code res_code);
-krb5_error_code smb_krb5_gen_netbios_krb5_address(smb_krb5_addresses **kerb_addr);
-krb5_error_code smb_krb5_free_addresses(krb5_context context, smb_krb5_addresses *addr);
-NTSTATUS krb5_to_nt_status(krb5_error_code kerberos_error);
-krb5_error_code nt_status_to_krb5(NTSTATUS nt_status);
-void smb_krb5_free_error(krb5_context context, krb5_error *krberror);
-krb5_error_code handle_krberror_packet(krb5_context context,
-                                         krb5_data *packet);
-
-void smb_krb5_get_init_creds_opt_free(krb5_context context,
-				    krb5_get_init_creds_opt *opt);
-krb5_error_code smb_krb5_get_init_creds_opt_alloc(krb5_context context,
-				    krb5_get_init_creds_opt **opt);
-krb5_error_code smb_krb5_mk_error(krb5_context context,
-					krb5_error_code error_code,
-					const krb5_principal server,
-					krb5_data *reply);
-krb5_enctype smb_get_enctype_from_kt_entry(krb5_keytab_entry *kt_entry);
-krb5_error_code smb_krb5_enctype_to_string(krb5_context context, 
- 					    krb5_enctype enctype, 
-					    char **etype_s);
-krb5_error_code smb_krb5_open_keytab(krb5_context context, 
- 				      const char *keytab_name, 
-				      bool write_access, 
-				      krb5_keytab *keytab);
-krb5_error_code smb_krb5_keytab_name(TALLOC_CTX *mem_ctx,
-				     krb5_context context,
-				     krb5_keytab keytab,
-				     const char **keytab_name);
-int smb_krb5_kt_add_entry_ext(krb5_context context,
-			      krb5_keytab keytab,
-			      krb5_kvno kvno,
-			      const char *princ_s,
-			      krb5_enctype *enctypes,
-			      krb5_data password,
-			      bool no_salt,
-			      bool keep_old_entries);
-krb5_error_code smb_krb5_get_credentials(krb5_context context,
-					 krb5_ccache ccache,
-					 krb5_principal me,
-					 krb5_principal server,
-					 krb5_principal impersonate_princ,
-					 krb5_creds **out_creds);
-krb5_error_code smb_krb5_get_creds(const char *server_s,
-				   time_t time_offset,
-				   const char *cc,
-				   const char *impersonate_princ_s,
-				   krb5_creds **creds_p);
-char *smb_krb5_principal_get_realm(krb5_context context,
-				   krb5_principal principal);
-#endif /* HAVE_KRB5 */
-
-
 #ifdef HAVE_LDAP
 
 /* function declarations not included in proto.h */

Copied: branches/samba/experimental/source3/include/krb5_protos.h (from rev 3156, tags/samba/upstream_3.5.0~pre2/source3/include/krb5_protos.h)
===================================================================
--- branches/samba/experimental/source3/include/krb5_protos.h	                        (rev 0)
+++ branches/samba/experimental/source3/include/krb5_protos.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,148 @@
+/* work around broken krb5.h on sles9 */
+#ifdef SIZEOF_LONG
+#undef SIZEOF_LONG
+#endif
+
+
+#if defined(HAVE_KRB5)
+krb5_error_code smb_krb5_parse_name(krb5_context context,
+				const char *name, /* in unix charset */
+                                krb5_principal *principal);
+
+krb5_error_code smb_krb5_unparse_name(TALLOC_CTX *mem_ctx,
+				      krb5_context context,
+				      krb5_const_principal principal,
+				      char **unix_name);
+
+#ifndef HAVE_KRB5_SET_REAL_TIME
+krb5_error_code krb5_set_real_time(krb5_context context, int32_t seconds, int32_t microseconds);
+#endif
+
+krb5_error_code krb5_set_default_tgs_ktypes(krb5_context ctx, const krb5_enctype *enc);
+
+#if defined(HAVE_KRB5_AUTH_CON_SETKEY) && !defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY)
+krb5_error_code krb5_auth_con_setuseruserkey(krb5_context context, krb5_auth_context auth_context, krb5_keyblock *keyblock);
+#endif
+
+#ifndef HAVE_KRB5_FREE_UNPARSED_NAME
+void krb5_free_unparsed_name(krb5_context ctx, char *val);
+#endif
+
+/* Stub out initialize_krb5_error_table since it is not present in all
+ * Kerberos implementations. If it's not present, it's not necessary to
+ * call it.
+ */
+#ifndef HAVE_INITIALIZE_KRB5_ERROR_TABLE
+#define initialize_krb5_error_table()
+#endif
+
+/* Samba wrapper function for krb5 functionality. */
+bool setup_kaddr( krb5_address *pkaddr, struct sockaddr_storage *paddr);
+int create_kerberos_key_from_string(krb5_context context, krb5_principal host_princ, krb5_data *password, krb5_keyblock *key, krb5_enctype enctype, bool no_salt);
+bool get_auth_data_from_tkt(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, krb5_ticket *tkt);
+krb5_const_principal get_principal_from_tkt(krb5_ticket *tkt);
+krb5_error_code smb_krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters);
+#if defined(HAVE_KRB5_LOCATE_KDC)
+krb5_error_code krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters);
+#endif
+krb5_error_code get_kerberos_allowed_etypes(krb5_context context, krb5_enctype **enctypes);
+bool get_krb5_smb_session_key(krb5_context context, krb5_auth_context auth_context, DATA_BLOB *session_key, bool remote);
+krb5_error_code smb_krb5_kt_free_entry(krb5_context context, krb5_keytab_entry *kt_entry);
+krb5_principal kerberos_fetch_salt_princ_for_host_princ(krb5_context context, krb5_principal host_princ, int enctype);
+void kerberos_set_creds_enctype(krb5_creds *pcreds, int enctype);
+bool kerberos_compatible_enctypes(krb5_context context, krb5_enctype enctype1, krb5_enctype enctype2);
+void kerberos_free_data_contents(krb5_context context, krb5_data *pdata);
+NTSTATUS decode_pac_data(TALLOC_CTX *mem_ctx,
+			 DATA_BLOB *pac_data_blob,
+			 krb5_context context,
+			 krb5_keyblock *service_keyblock,
+			 krb5_const_principal client_principal,
+			 time_t tgs_authtime,
+			 struct PAC_DATA **pac_data_out);
+void smb_krb5_checksum_from_pac_sig(krb5_checksum *cksum,
+				    struct PAC_SIGNATURE_DATA *sig);
+krb5_error_code smb_krb5_verify_checksum(krb5_context context,
+					 const krb5_keyblock *keyblock,
+					 krb5_keyusage usage,
+					 krb5_checksum *cksum,
+					 uint8 *data,
+					 size_t length);
+time_t get_authtime_from_tkt(krb5_ticket *tkt);
+void smb_krb5_free_ap_req(krb5_context context,
+			  krb5_ap_req *ap_req);
+krb5_error_code smb_krb5_get_keyinfo_from_ap_req(krb5_context context,
+						 const krb5_data *inbuf,
+						 krb5_kvno *kvno,
+						 krb5_enctype *enctype);
+krb5_error_code krb5_rd_req_return_keyblock_from_keytab(krb5_context context,
+							krb5_auth_context *auth_context,
+							const krb5_data *inbuf,
+							krb5_const_principal server,
+							krb5_keytab keytab,
+							krb5_flags *ap_req_options,
+							krb5_ticket **ticket,
+							krb5_keyblock **keyblock);
+krb5_error_code smb_krb5_parse_name_norealm(krb5_context context,
+					    const char *name,
+					    krb5_principal *principal);
+bool smb_krb5_principal_compare_any_realm(krb5_context context,
+					  krb5_const_principal princ1,
+					  krb5_const_principal princ2);
+int cli_krb5_get_ticket(const char *principal, time_t time_offset,
+			DATA_BLOB *ticket, DATA_BLOB *session_key_krb5,
+			uint32 extra_ap_opts, const char *ccname,
+			time_t *tgs_expire,
+			const char *impersonate_princ_s);
+krb5_error_code smb_krb5_renew_ticket(const char *ccache_string, const char *client_string, const char *service_string, time_t *expire_time);
+krb5_error_code kpasswd_err_to_krb5_err(krb5_error_code res_code);
+krb5_error_code smb_krb5_gen_netbios_krb5_address(smb_krb5_addresses **kerb_addr);
+krb5_error_code smb_krb5_free_addresses(krb5_context context, smb_krb5_addresses *addr);
+NTSTATUS krb5_to_nt_status(krb5_error_code kerberos_error);
+krb5_error_code nt_status_to_krb5(NTSTATUS nt_status);
+void smb_krb5_free_error(krb5_context context, krb5_error *krberror);
+krb5_error_code handle_krberror_packet(krb5_context context,
+                                         krb5_data *packet);
+
+void smb_krb5_get_init_creds_opt_free(krb5_context context,
+				    krb5_get_init_creds_opt *opt);
+krb5_error_code smb_krb5_get_init_creds_opt_alloc(krb5_context context,
+				    krb5_get_init_creds_opt **opt);
+krb5_error_code smb_krb5_mk_error(krb5_context context,
+					krb5_error_code error_code,
+					const krb5_principal server,
+					krb5_data *reply);
+krb5_enctype smb_get_enctype_from_kt_entry(krb5_keytab_entry *kt_entry);
+krb5_error_code smb_krb5_enctype_to_string(krb5_context context,
+					    krb5_enctype enctype,
+					    char **etype_s);
+krb5_error_code smb_krb5_open_keytab(krb5_context context,
+				      const char *keytab_name,
+				      bool write_access,
+				      krb5_keytab *keytab);
+krb5_error_code smb_krb5_keytab_name(TALLOC_CTX *mem_ctx,
+				     krb5_context context,
+				     krb5_keytab keytab,
+				     const char **keytab_name);
+int smb_krb5_kt_add_entry_ext(krb5_context context,
+			      krb5_keytab keytab,
+			      krb5_kvno kvno,
+			      const char *princ_s,
+			      krb5_enctype *enctypes,
+			      krb5_data password,
+			      bool no_salt,
+			      bool keep_old_entries);
+krb5_error_code smb_krb5_get_credentials(krb5_context context,
+					 krb5_ccache ccache,
+					 krb5_principal me,
+					 krb5_principal server,
+					 krb5_principal impersonate_princ,
+					 krb5_creds **out_creds);
+krb5_error_code smb_krb5_get_creds(const char *server_s,
+				   time_t time_offset,
+				   const char *cc,
+				   const char *impersonate_princ_s,
+				   krb5_creds **creds_p);
+char *smb_krb5_principal_get_realm(krb5_context context,
+				   krb5_principal principal);
+#endif /* HAVE_KRB5 */
+

Modified: branches/samba/experimental/source3/include/local.h
===================================================================
--- branches/samba/experimental/source3/include/local.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/local.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -66,7 +66,25 @@
 #ifndef MAX_OPEN_FILES
 #define MAX_OPEN_FILES 10000
 #endif
- 
+
+/*
+ * Fudgefactor required for open tdb's, etc.
+ */
+
+#ifndef MAX_OPEN_FUDGEFACTOR
+#define MAX_OPEN_FUDGEFACTOR 20
+#endif
+
+/*
+ * Minimum number of open files needed for Windows7 to
+ * work correctly. A little conservative but better that
+ * than run out of fd's.
+ */
+
+#ifndef MIN_OPEN_FILES_WINDOWS
+#define MIN_OPEN_FILES_WINDOWS 1050
+#endif
+
 #define WORDMAX 0xFFFF
 
 /* the maximum password length before we declare a likely attack */

Modified: branches/samba/experimental/source3/include/nt_printing.h
===================================================================
--- branches/samba/experimental/source3/include/nt_printing.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/nt_printing.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -36,8 +36,6 @@
 	NT_PRINTER_KEY	*keys;
 } NT_PRINTER_DATA;
 
-#define MAXDEVICENAME	32
-
 typedef struct ntdevicemode
 {
 	fstring	devicename;

Modified: branches/samba/experimental/source3/include/ntdomain.h
===================================================================
--- branches/samba/experimental/source3/include/ntdomain.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/ntdomain.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -28,6 +28,8 @@
  * in the NTDOM branch - it didn't belong there.
  */
 
+#define prs_init_empty( _ps_, _ctx_, _io_ ) (void) prs_init((_ps_), 0, (_ctx_), (_io_))
+
 typedef struct _prs_struct {
 	bool io; /* parsing in or out of data stream */
 	/* 

Modified: branches/samba/experimental/source3/include/passdb.h
===================================================================
--- branches/samba/experimental/source3/include/passdb.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/passdb.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,21 @@
 #ifndef _PASSDB_H
 #define _PASSDB_H
 
+/**********************************************************************
+ * Masks for mappings between unix uid and gid types and
+ * NT RIDS.
+ **********************************************************************/
+
+#define BASE_RID (0x000003E8L)
+
+/* Take the bottom bit. */
+#define RID_TYPE_MASK 		1
+#define RID_MULTIPLIER 		2
+
+/* The two common types. */
+#define USER_RID_TYPE 		0
+#define GROUP_RID_TYPE 		1
+
 /*
  * bit flags representing initialized fields in struct samu
  */

Modified: branches/samba/experimental/source3/include/proto.h
===================================================================
--- branches/samba/experimental/source3/include/proto.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/proto.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -691,6 +691,7 @@
 NTSTATUS sec_desc_add_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, uint32 mask, size_t *sd_size);
 NTSTATUS sec_desc_mod_sid(SEC_DESC *sd, DOM_SID *sid, uint32 mask);
 NTSTATUS sec_desc_del_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, size_t *sd_size);
+bool sd_has_inheritable_components(const SEC_DESC *parent_ctr, bool container);
 NTSTATUS se_create_child_secdesc(TALLOC_CTX *ctx,
                                         SEC_DESC **ppsd,
 					size_t *psize,
@@ -927,10 +928,14 @@
 int sys_fcntl_long(int fd, int cmd, long arg);
 void update_stat_ex_mtime(struct stat_ex *dst, struct timespec write_ts);
 void update_stat_ex_create_time(struct stat_ex *dst, struct timespec create_time);
-int sys_stat(const char *fname,SMB_STRUCT_STAT *sbuf);
-int sys_fstat(int fd,SMB_STRUCT_STAT *sbuf);
-int sys_lstat(const char *fname,SMB_STRUCT_STAT *sbuf);
+int sys_stat(const char *fname, SMB_STRUCT_STAT *sbuf,
+	     bool fake_dir_create_times);
+int sys_fstat(int fd, SMB_STRUCT_STAT *sbuf,
+	      bool fake_dir_create_times);
+int sys_lstat(const char *fname,SMB_STRUCT_STAT *sbuf,
+	      bool fake_dir_create_times);
 int sys_ftruncate(int fd, SMB_OFF_T offset);
+int sys_posix_fallocate(int fd, SMB_OFF_T offset, SMB_OFF_T len);
 SMB_OFF_T sys_lseek(int fd, SMB_OFF_T offset, int whence);
 int sys_fseek(FILE *fp, SMB_OFF_T offset, int whence);
 SMB_OFF_T sys_ftell(FILE *fp);
@@ -1118,9 +1123,9 @@
 						 const struct user_auth_info *info);
 bool set_cmdline_auth_info_machine_account_creds(struct user_auth_info *auth_info);
 void set_cmdline_auth_info_getpass(struct user_auth_info *auth_info);
-bool file_exist_stat(const char *fname,SMB_STRUCT_STAT *sbuf);
+bool file_exist_stat(const char *fname,SMB_STRUCT_STAT *sbuf,
+		     bool fake_dir_create_times);
 bool socket_exist(const char *fname);
-bool directory_exist_stat(char *dname,SMB_STRUCT_STAT *st);
 uint64_t get_file_size_stat(const SMB_STRUCT_STAT *sbuf);
 SMB_OFF_T get_file_size(char *file_name);
 char *attrib_string(uint16 mode);
@@ -2088,22 +2093,10 @@
 #include "librpc/gen_ndr/ndr_svcctl.h"
 #include "librpc/gen_ndr/ndr_winreg.h"
 #include "librpc/gen_ndr/ndr_wkssvc.h"
+#include "librpc/gen_ndr/ndr_drsuapi.h"
+#include "librpc/gen_ndr/ndr_spoolss.h"
+#include "librpc/gen_ndr/ndr_initshutdown.h"
 
-#include "librpc/gen_ndr/srv_dfs.h"
-#include "librpc/gen_ndr/srv_dssetup.h"
-#include "librpc/gen_ndr/srv_echo.h"
-#include "librpc/gen_ndr/srv_eventlog.h"
-#include "librpc/gen_ndr/srv_initshutdown.h"
-#include "librpc/gen_ndr/srv_lsa.h"
-#include "librpc/gen_ndr/srv_netlogon.h"
-#include "librpc/gen_ndr/srv_ntsvcs.h"
-#include "librpc/gen_ndr/srv_samr.h"
-#include "librpc/gen_ndr/srv_srvsvc.h"
-#include "librpc/gen_ndr/srv_svcctl.h"
-#include "librpc/gen_ndr/srv_winreg.h"
-#include "librpc/gen_ndr/srv_wkssvc.h"
-#include "librpc/gen_ndr/srv_spoolss.h"
-
 #include "librpc/ndr/libndr.h"
 
 /* The following definitions come from librpc/ndr/util.c  */
@@ -3493,8 +3486,7 @@
 void del_deferred_open_entry(struct share_mode_lock *lck, uint16 mid);
 bool remove_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
 bool downgrade_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
-NTSTATUS can_set_delete_on_close(files_struct *fsp, bool delete_on_close,
-				 uint32 dosmode);
+NTSTATUS can_set_delete_on_close(files_struct *fsp, uint32 dosmode);
 void set_delete_on_close_token(struct share_mode_lock *lck, const UNIX_USER_TOKEN *tok);
 void set_delete_on_close_lck(struct share_mode_lock *lck, bool delete_on_close, const UNIX_USER_TOKEN *tok);
 bool set_delete_on_close(files_struct *fsp, bool delete_on_close, const UNIX_USER_TOKEN *tok);
@@ -4001,6 +3993,7 @@
 char *lp_ldap_admin_dn(void);
 int lp_ldap_ssl(void);
 bool lp_ldap_ssl_ads(void);
+int lp_ldap_deref(void);
 int lp_ldap_follow_referral(void);
 int lp_ldap_passwd_sync(void);
 bool lp_ldap_delete_dn(void);
@@ -4206,7 +4199,7 @@
 bool lp_dos_filemode(int );
 bool lp_dos_filetimes(int );
 bool lp_dos_filetime_resolution(int );
-bool lp_fake_dir_create_times(void);
+bool lp_fake_dir_create_times(int);
 bool lp_blocking_locks(int );
 bool lp_inherit_perms(int );
 bool lp_inherit_acls(int );
@@ -4864,15 +4857,15 @@
 			      char **driver_name,
 			      uint32_t *version);
 WERROR get_a_printer_driver(TALLOC_CTX *mem_ctx,
-			    union spoolss_DriverInfo **driver_p, uint32_t level,
+			    struct spoolss_DriverInfo8 **driver_p,
 			    const char *drivername, const char *architecture,
 			    uint32_t version);
-uint32_t free_a_printer_driver(union spoolss_DriverInfo *driver);
-bool printer_driver_in_use(const struct spoolss_DriverInfo3 *info_3);
+uint32_t free_a_printer_driver(struct spoolss_DriverInfo8 *driver);
+bool printer_driver_in_use(const struct spoolss_DriverInfo8 *r);
 bool printer_driver_files_in_use(TALLOC_CTX *mem_ctx,
-				 struct spoolss_DriverInfo3 *info);
+				 struct spoolss_DriverInfo8 *r);
 WERROR delete_printer_driver(struct pipes_struct *rpc_pipe,
-			     const struct spoolss_DriverInfo3 *info_3,
+			     const struct spoolss_DriverInfo8 *r,
 			     uint32 version, bool delete_files );
 WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr);
 bool nt_printing_getsec(TALLOC_CTX *ctx, const char *sharename, SEC_DESC_BUF **secdesc_ctr);
@@ -6889,9 +6882,6 @@
 void reply_printqueue(struct smb_request *req);
 void reply_printwrite(struct smb_request *req);
 void reply_mkdir(struct smb_request *req);
-NTSTATUS rmdir_internals(TALLOC_CTX *ctx,
-			connection_struct *conn,
-			struct smb_filename *smb_dname);
 void reply_rmdir(struct smb_request *req);
 NTSTATUS rename_internals_fsp(connection_struct *conn,
 			files_struct *fsp,

Deleted: branches/samba/experimental/source3/include/rpc_client.h
===================================================================
--- branches/samba/experimental/source3/include/rpc_client.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/rpc_client.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1,44 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   SMB parameters and setup
-   Copyright (C) Gerald (Jerry) Carter         2005.
-   
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-   
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _RPC_CLIENT_H
-#define _RPC_CLIENT_H
-
-/* autogenerated client stubs */
-
-#include "librpc/gen_ndr/cli_echo.h"
-#include "librpc/gen_ndr/cli_lsa.h"
-#include "librpc/gen_ndr/cli_svcctl.h"
-#include "librpc/gen_ndr/cli_wkssvc.h"
-#include "librpc/gen_ndr/cli_eventlog.h"
-#include "librpc/gen_ndr/cli_dfs.h"
-#include "librpc/gen_ndr/cli_initshutdown.h"
-#include "librpc/gen_ndr/cli_winreg.h"
-#include "librpc/gen_ndr/cli_srvsvc.h"
-#include "librpc/gen_ndr/cli_samr.h"
-#include "librpc/gen_ndr/cli_netlogon.h"
-#include "librpc/gen_ndr/cli_dssetup.h"
-#include "librpc/gen_ndr/cli_ntsvcs.h"
-#include "librpc/gen_ndr/cli_epmapper.h"
-#include "librpc/gen_ndr/cli_drsuapi.h"
-#include "librpc/gen_ndr/cli_spoolss.h"
-
-#define prs_init_empty( _ps_, _ctx_, _io_ ) (void) prs_init((_ps_), 0, (_ctx_), (_io_))
-
-#endif /* _RPC_CLIENT_H */

Modified: branches/samba/experimental/source3/include/rpc_misc.h
===================================================================
--- branches/samba/experimental/source3/include/rpc_misc.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/rpc_misc.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -66,23 +66,7 @@
 #define BUILTIN_ALIAS_RID_PRE_2K_ACCESS (0x0000022aL)
 
 
-/********************************************************************** 
- * Masks for mappings between unix uid and gid types and
- * NT RIDS.
- **********************************************************************/
 
-#define BASE_RID (0x000003E8L)
-
-/* Take the bottom bit. */
-#define RID_TYPE_MASK 		1
-#define RID_MULTIPLIER 		2
-
-/* The two common types. */
-#define USER_RID_TYPE 		0
-#define GROUP_RID_TYPE 		1
-
-
-
 /********************************************************************** 
  * RPC policy handle used pretty much everywhere
  **********************************************************************/

Modified: branches/samba/experimental/source3/include/smb.h
===================================================================
--- branches/samba/experimental/source3/include/smb.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/smb.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1895,8 +1895,6 @@
 #define SAMBA_XATTR_DOS_ATTRIB "user.DOSATTRIB"
 /* Prefix for DosStreams in the vfs_streams_xattr module */
 #define SAMBA_XATTR_DOSSTREAM_PREFIX "user.DosStream."
-/* Prefix for DOS timestamps. */
-#define SAMBA_XATTR_DOSTIMESTAMPS "user.DosTimestamps"
 /* Prefix for xattrs storing streams. */
 #define SAMBA_XATTR_MARKER "user.SAMBA_STREAMS"
 

Copied: branches/samba/experimental/source3/include/smb_krb5.h (from rev 3156, tags/samba/upstream_3.5.0~pre2/source3/include/smb_krb5.h)
===================================================================
--- branches/samba/experimental/source3/include/smb_krb5.h	                        (rev 0)
+++ branches/samba/experimental/source3/include/smb_krb5.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,72 @@
+#ifndef _HEADER_smb_krb5_h
+#define _HEADER_smb_krb5_h
+
+#define KRB5_PRIVATE    1       /* this file uses PRIVATE interfaces! */
+/* this file uses DEPRECATED interfaces! */
+
+#if defined(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER)
+#define KRB5_DEPRECATED 1
+#else
+#define KRB5_DEPRECATED
+#endif
+
+#if HAVE_KRB5_H
+#include <krb5.h>
+#endif
+
+#ifndef KRB5_ADDR_NETBIOS
+#define KRB5_ADDR_NETBIOS 0x14
+#endif
+
+#ifndef KRB5KRB_ERR_RESPONSE_TOO_BIG
+#define KRB5KRB_ERR_RESPONSE_TOO_BIG (-1765328332L)
+#endif
+
+/* Heimdal uses a slightly different name */
+#if defined(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5)
+#define ENCTYPE_ARCFOUR_HMAC ENCTYPE_ARCFOUR_HMAC_MD5
+#endif
+
+/* The older versions of heimdal that don't have this
+   define don't seem to use it anyway.  I'm told they
+   always use a subkey */
+#ifndef HAVE_AP_OPTS_USE_SUBKEY
+#define AP_OPTS_USE_SUBKEY 0
+#endif
+
+#ifdef HAVE_KRB5
+typedef struct {
+#if defined(HAVE_MAGIC_IN_KRB5_ADDRESS) && defined(HAVE_ADDRTYPE_IN_KRB5_ADDRESS) /* MIT */
+	krb5_address **addrs;
+#elif defined(HAVE_KRB5_ADDRESSES) /* Heimdal */
+	krb5_addresses *addrs;
+#else
+#error UNKNOWN_KRB5_ADDRESS_TYPE
+#endif /* defined(HAVE_MAGIC_IN_KRB5_ADDRESS) && defined(HAVE_ADDRTYPE_IN_KRB5_ADDRESS) */
+} smb_krb5_addresses;
+
+#ifdef HAVE_KRB5_KEYBLOCK_KEYVALUE /* Heimdal */
+#define KRB5_KEY_TYPE(k)	((k)->keytype)
+#define KRB5_KEY_LENGTH(k)	((k)->keyvalue.length)
+#define KRB5_KEY_DATA(k)	((k)->keyvalue.data)
+#define KRB5_KEY_DATA_CAST	void
+#else /* MIT */
+#define KRB5_KEY_TYPE(k)	((k)->enctype)
+#define KRB5_KEY_LENGTH(k)	((k)->length)
+#define KRB5_KEY_DATA(k)	((k)->contents)
+#define KRB5_KEY_DATA_CAST	krb5_octet
+#endif /* HAVE_KRB5_KEYBLOCK_KEYVALUE */
+
+#ifdef HAVE_KRB5_KEYTAB_ENTRY_KEY               /* MIT */
+#define KRB5_KT_KEY(k)		(&(k)->key)
+#elif HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK          /* Heimdal */
+#define KRB5_KT_KEY(k)		(&(k)->keyblock)
+#else
+#error krb5_keytab_entry has no key or keyblock member
+#endif /* HAVE_KRB5_KEYTAB_ENTRY_KEY */
+
+#endif /* HAVE_KRB5 */
+
+#include "krb5_protos.h"
+
+#endif /* _HEADER_smb_krb5_h */

Modified: branches/samba/experimental/source3/include/version.h
===================================================================
--- branches/samba/experimental/source3/include/version.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/include/version.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -2,8 +2,8 @@
 #define SAMBA_VERSION_MAJOR 3
 #define SAMBA_VERSION_MINOR 5
 #define SAMBA_VERSION_RELEASE 0
-#define SAMBA_VERSION_PRE_RELEASE 1
-#define SAMBA_VERSION_OFFICIAL_STRING "3.5.0pre1"
+#define SAMBA_VERSION_PRE_RELEASE 2
+#define SAMBA_VERSION_OFFICIAL_STRING "3.5.0pre2"
 #ifdef SAMBA_VERSION_VENDOR_FUNCTION
 #  define SAMBA_VERSION_STRING SAMBA_VERSION_VENDOR_FUNCTION
 #else /* SAMBA_VERSION_VENDOR_FUNCTION */

Modified: branches/samba/experimental/source3/lib/dbwrap_ctdb.c
===================================================================
--- branches/samba/experimental/source3/lib/dbwrap_ctdb.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/dbwrap_ctdb.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -381,6 +381,8 @@
 	pid = getpid();
 	data.dptr = (unsigned char *)&pid;
 	data.dsize = sizeof(pid_t);
+	crec->header.rsn++;
+	crec->header.dmaster = get_my_vnn();
 	status = db_ctdb_ltdb_store(ctx, key, &(crec->header), data);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(0, (__location__ " Failed to store pid in transaction "
@@ -848,7 +850,7 @@
 			}
 		}
 
-		if (++retries == 5) {
+		if (++retries == 100) {
 			DEBUG(0,(__location__ " Giving up transaction on db 0x%08x after %d retries failure_control=%u\n", 
 				 h->ctx->db_id, retries, (unsigned)failure_control));
 			ctdbd_control_local(messaging_ctdbd_connection(), failure_control,

Modified: branches/samba/experimental/source3/lib/debug.c
===================================================================
--- branches/samba/experimental/source3/lib/debug.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/debug.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -746,7 +746,8 @@
 
 	maxlog = lp_max_log_size() * 1024;
 
-	if( sys_fstat( x_fileno( dbf ), &st ) == 0 && st.st_ex_size > maxlog ) {
+	if(sys_fstat(x_fileno(dbf), &st, false) == 0
+	   && st.st_ex_size > maxlog ) {
 		(void)reopen_logs();
 		if( dbf && get_file_size( debugf ) > maxlog ) {
 			char *name = NULL;

Modified: branches/samba/experimental/source3/lib/gencache.c
===================================================================
--- branches/samba/experimental/source3/lib/gencache.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/gencache.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -55,6 +55,7 @@
 {
 	char* cache_fname = NULL;
 	int open_flags = O_RDWR|O_CREAT;
+	bool first_try = true;
 
 	/* skip file open if it's already opened */
 	if (cache) return True;
@@ -63,7 +64,30 @@
 
 	DEBUG(5, ("Opening cache file at %s\n", cache_fname));
 
+again:
 	cache = tdb_open_log(cache_fname, 0, TDB_DEFAULT, open_flags, 0644);
+	if (cache) {
+		int ret;
+		ret = tdb_check(cache, NULL, NULL);
+		if (ret != 0) {
+			tdb_close(cache);
+			cache = NULL;
+			if (!first_try) {
+				DEBUG(0, ("gencache_init: tdb_check(%s) failed\n",
+					  cache_fname));
+				return false;
+			}
+			first_try = false;
+			DEBUG(0, ("gencache_init: tdb_check(%s) failed - retry after CLEAR_IF_FIRST\n",
+				  cache_fname));
+			cache = tdb_open_log(cache_fname, 0, TDB_CLEAR_IF_FIRST, open_flags, 0644);
+			if (cache) {
+				tdb_close(cache);
+				cache = NULL;
+				goto again;
+			}
+		}
+	}
 
 	if (!cache && (errno == EACCES)) {
 		open_flags = O_RDONLY;
@@ -89,6 +113,7 @@
 		DEBUG(5, ("Opening %s failed: %s\n", cache_fname,
 			  strerror(errno)));
 		tdb_close(cache);
+		cache = NULL;
 		return false;
 	}
 

Modified: branches/samba/experimental/source3/lib/netapi/file.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/file.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/file.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 #include "lib/netapi/netapi.h"
 #include "lib/netapi/netapi_private.h"
 #include "lib/netapi/libnetapi.h"
+#include "../librpc/gen_ndr/cli_srvsvc.h"
 
 /****************************************************************
 ****************************************************************/

Modified: branches/samba/experimental/source3/lib/netapi/getdc.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/getdc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/getdc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -24,6 +24,7 @@
 #include "lib/netapi/netapi_private.h"
 #include "lib/netapi/libnetapi.h"
 #include "libnet/libnet.h"
+#include "../librpc/gen_ndr/cli_netlogon.h"
 
 /********************************************************************
 ********************************************************************/

Modified: branches/samba/experimental/source3/lib/netapi/group.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/group.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/group.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 #include "lib/netapi/netapi.h"
 #include "lib/netapi/netapi_private.h"
 #include "lib/netapi/libnetapi.h"
+#include "../librpc/gen_ndr/cli_samr.h"
 
 /****************************************************************
 ****************************************************************/

Modified: branches/samba/experimental/source3/lib/netapi/joindomain.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/joindomain.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/joindomain.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -25,6 +25,7 @@
 #include "lib/netapi/libnetapi.h"
 #include "libnet/libnet.h"
 #include "libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_wkssvc.h"
 
 /****************************************************************
 ****************************************************************/

Modified: branches/samba/experimental/source3/lib/netapi/localgroup.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/localgroup.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/localgroup.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,8 @@
 #include "lib/netapi/netapi.h"
 #include "lib/netapi/netapi_private.h"
 #include "lib/netapi/libnetapi.h"
+#include "../librpc/gen_ndr/cli_samr.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
 
 static NTSTATUS libnetapi_samr_lookup_and_open_alias(TALLOC_CTX *mem_ctx,
 						     struct rpc_pipe_client *pipe_cli,

Modified: branches/samba/experimental/source3/lib/netapi/netlogon.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/netlogon.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/netlogon.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 #include "lib/netapi/netapi.h"
 #include "lib/netapi/netapi_private.h"
 #include "lib/netapi/libnetapi.h"
+#include "../librpc/gen_ndr/cli_netlogon.h"
 
 static WERROR construct_data(enum netr_LogonControlCode function_code,
 			     const uint8_t *data_in,

Modified: branches/samba/experimental/source3/lib/netapi/samr.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/samr.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/samr.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 #include "includes.h"
 #include "lib/netapi/netapi.h"
 #include "lib/netapi/netapi_private.h"
+#include "../librpc/gen_ndr/cli_samr.h"
 
 /****************************************************************
 ****************************************************************/

Modified: branches/samba/experimental/source3/lib/netapi/serverinfo.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/serverinfo.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/serverinfo.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -24,6 +24,7 @@
 #include "lib/netapi/netapi_private.h"
 #include "lib/netapi/libnetapi.h"
 #include "libnet/libnet.h"
+#include "../librpc/gen_ndr/cli_srvsvc.h"
 
 /****************************************************************
 ****************************************************************/

Modified: branches/samba/experimental/source3/lib/netapi/share.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/share.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/share.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 #include "lib/netapi/netapi.h"
 #include "lib/netapi/netapi_private.h"
 #include "lib/netapi/libnetapi.h"
+#include "../librpc/gen_ndr/cli_srvsvc.h"
 
 /****************************************************************
 ****************************************************************/

Modified: branches/samba/experimental/source3/lib/netapi/shutdown.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/shutdown.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/shutdown.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 #include "lib/netapi/netapi.h"
 #include "lib/netapi/netapi_private.h"
 #include "lib/netapi/libnetapi.h"
+#include "../librpc/gen_ndr/cli_initshutdown.h"
 
 /****************************************************************
 ****************************************************************/

Modified: branches/samba/experimental/source3/lib/netapi/user.c
===================================================================
--- branches/samba/experimental/source3/lib/netapi/user.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/netapi/user.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 #include "lib/netapi/netapi.h"
 #include "lib/netapi/netapi_private.h"
 #include "lib/netapi/libnetapi.h"
+#include "../librpc/gen_ndr/cli_samr.h"
 
 /****************************************************************
 ****************************************************************/

Modified: branches/samba/experimental/source3/lib/secdesc.c
===================================================================
--- branches/samba/experimental/source3/lib/secdesc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/secdesc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -474,6 +474,26 @@
 	return false;
 }
 
+/*
+ * Does a security descriptor have any inheritable components for
+ * the newly created type ?
+ */
+
+bool sd_has_inheritable_components(const SEC_DESC *parent_ctr, bool container)
+{
+	unsigned int i;
+	const SEC_ACL *the_acl = parent_ctr->dacl;
+
+	for (i = 0; i < the_acl->num_aces; i++) {
+		const SEC_ACE *ace = &the_acl->aces[i];
+
+		if (is_inheritable_ace(ace, container)) {
+			return true;
+		}
+	}
+	return false;
+}
+
 /* Create a child security descriptor using another security descriptor as
    the parent container.  This child object can either be a container or
    non-container object. */

Modified: branches/samba/experimental/source3/lib/smbldap.c
===================================================================
--- branches/samba/experimental/source3/lib/smbldap.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/smbldap.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -877,6 +877,7 @@
 {
 	int rc = LDAP_SUCCESS;
 	int version;
+	int deref;
 	LDAP **ldap_struct = &ldap_state->ldap_struct;
 
 	rc = smb_ldap_setup_conn(ldap_struct, ldap_state->uri);
@@ -902,6 +903,16 @@
 		return rc;
 	}
 
+	/* Set alias dereferencing method */
+	deref = lp_ldap_deref();
+	if (deref != -1) {
+		if (ldap_set_option (*ldap_struct, LDAP_OPT_DEREF, &deref) != LDAP_OPT_SUCCESS) {
+			DEBUG(1,("smbldap_open_connection: Failed to set dereferencing method: %d\n", deref));
+		} else {
+			DEBUG(5,("Set dereferencing method: %d\n", deref));
+		}
+	}
+
 	DEBUG(2, ("smbldap_open_connection: connection opened\n"));
 	return rc;
 }

Modified: branches/samba/experimental/source3/lib/sysquotas.c
===================================================================
--- branches/samba/experimental/source3/lib/sysquotas.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/sysquotas.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -60,7 +60,7 @@
 	(*bdev) = NULL;
 	(*fs) = NULL;
 	
-	if ( sys_stat(path, &S) == -1 )
+	if ( sys_stat(path, &S, false) == -1 )
 		return (-1);
 
 	devno = S.st_ex_dev ;
@@ -71,7 +71,7 @@
 	}
   
 	while ((mnt = getmntent(fp))) {
-		if ( sys_stat(mnt->mnt_dir,&S) == -1 )
+		if ( sys_stat(mnt->mnt_dir, &S, false) == -1 )
 			continue ;
 
 		if (S.st_ex_dev == devno) {
@@ -114,7 +114,7 @@
 	
 	/* find the block device file */
 
-	if ((ret=sys_stat(path, &S))!=0) {
+	if ((ret=sys_stat(path, &S, false))!=0) {
 		return ret;
 	}
 	

Modified: branches/samba/experimental/source3/lib/system.c
===================================================================
--- branches/samba/experimental/source3/lib/system.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/system.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -456,9 +456,10 @@
  use the best approximation.
 ****************************************************************************/
 
-static void make_create_timespec(const struct stat *pst, struct stat_ex *dst)
+static void make_create_timespec(const struct stat *pst, struct stat_ex *dst,
+				 bool fake_dir_create_times)
 {
-	if (S_ISDIR(pst->st_mode) && lp_fake_dir_create_times()) {
+	if (S_ISDIR(pst->st_mode) && fake_dir_create_times) {
 		dst->st_ex_btime.tv_sec = 315493200L;          /* 1/1/1980 */
 		dst->st_ex_btime.tv_nsec = 0;
 	}
@@ -511,8 +512,15 @@
 	dst->st_ex_calculated_birthtime = false;
 }
 
+#if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T) && defined(HAVE_STAT64)
 static void init_stat_ex_from_stat (struct stat_ex *dst,
-				    const struct stat *src)
+				    const struct stat64 *src,
+				    bool fake_dir_create_times)
+#else
+static void init_stat_ex_from_stat (struct stat_ex *dst,
+				    const struct stat *src,
+				    bool fake_dir_create_times)
+#endif
 {
 	dst->st_ex_dev = src->st_dev;
 	dst->st_ex_ino = src->st_ino;
@@ -525,7 +533,7 @@
 	dst->st_ex_atime = get_atimespec(src);
 	dst->st_ex_mtime = get_mtimespec(src);
 	dst->st_ex_ctime = get_ctimespec(src);
-	make_create_timespec(src, dst);
+	make_create_timespec(src, dst, fake_dir_create_times);
 	dst->st_ex_blksize = src->st_blksize;
 	dst->st_ex_blocks = src->st_blocks;
 
@@ -540,11 +548,13 @@
 A stat() wrapper that will deal with 64 bit filesizes.
 ********************************************************************/
 
-int sys_stat(const char *fname,SMB_STRUCT_STAT *sbuf)
+int sys_stat(const char *fname, SMB_STRUCT_STAT *sbuf,
+	     bool fake_dir_create_times)
 {
 	int ret;
 #if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T) && defined(HAVE_STAT64)
-	ret = stat64(fname, sbuf);
+	struct stat64 statbuf;
+	ret = stat64(fname, &statbuf);
 #else
 	struct stat statbuf;
 	ret = stat(fname, &statbuf);
@@ -554,7 +564,7 @@
 		if (S_ISDIR(statbuf.st_mode)) {
 			statbuf.st_size = 0;
 		}
-		init_stat_ex_from_stat(sbuf, &statbuf);
+		init_stat_ex_from_stat(sbuf, &statbuf, fake_dir_create_times);
 	}
 	return ret;
 }
@@ -563,11 +573,12 @@
  An fstat() wrapper that will deal with 64 bit filesizes.
 ********************************************************************/
 
-int sys_fstat(int fd,SMB_STRUCT_STAT *sbuf)
+int sys_fstat(int fd, SMB_STRUCT_STAT *sbuf, bool fake_dir_create_times)
 {
 	int ret;
 #if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T) && defined(HAVE_FSTAT64)
-	ret = fstat64(fd, sbuf);
+	struct stat64 statbuf;
+	ret = fstat64(fd, &statbuf);
 #else
 	struct stat statbuf;
 	ret = fstat(fd, &statbuf);
@@ -577,7 +588,7 @@
 		if (S_ISDIR(statbuf.st_mode)) {
 			statbuf.st_size = 0;
 		}
-		init_stat_ex_from_stat(sbuf, &statbuf);
+		init_stat_ex_from_stat(sbuf, &statbuf, fake_dir_create_times);
 	}
 	return ret;
 }
@@ -586,11 +597,13 @@
  An lstat() wrapper that will deal with 64 bit filesizes.
 ********************************************************************/
 
-int sys_lstat(const char *fname,SMB_STRUCT_STAT *sbuf)
+int sys_lstat(const char *fname,SMB_STRUCT_STAT *sbuf,
+	      bool fake_dir_create_times)
 {
 	int ret;
 #if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T) && defined(HAVE_LSTAT64)
-	ret = lstat64(fname, sbuf);
+	struct stat64 statbuf;
+	ret = lstat64(fname, &statbuf);
 #else
 	struct stat statbuf;
 	ret = lstat(fname, &statbuf);
@@ -600,12 +613,26 @@
 		if (S_ISDIR(statbuf.st_mode)) {
 			statbuf.st_size = 0;
 		}
-		init_stat_ex_from_stat(sbuf, &statbuf);
+		init_stat_ex_from_stat(sbuf, &statbuf, fake_dir_create_times);
 	}
 	return ret;
 }
 
 /*******************************************************************
+ An posix_fallocate() wrapper that will deal with 64 bit filesizes.
+********************************************************************/
+int sys_posix_fallocate(int fd, SMB_OFF_T offset, SMB_OFF_T len)
+{
+#if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T) && defined(HAVE_POSIX_FALLOCATE64) && !defined(HAVE_BROKEN_POSIX_FALLOCATE)
+	return posix_fallocate64(fd, offset, len);
+#elif defined(HAVE_POSIX_FALLOCATE) && !defined(HAVE_BROKEN_POSIX_FALLOCATE)
+	return posix_fallocate(fd, offset, len);
+#else
+	return ENOSYS;
+#endif
+}
+
+/*******************************************************************
  An ftruncate() wrapper that will deal with 64 bit filesizes.
 ********************************************************************/
 

Modified: branches/samba/experimental/source3/lib/tdb_validate.c
===================================================================
--- branches/samba/experimental/source3/lib/tdb_validate.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/tdb_validate.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -44,6 +44,17 @@
 		goto out;
 	}
 
+	/*
+	 * we can simplify this by passing a check function,
+	 * but I don't want to change all the callers...
+	 */
+	ret = tdb_check(tdb, NULL, NULL);
+	if (ret == -1) {
+		v_status.tdb_error = True;
+		v_status.success = False;
+		goto out;
+	}
+
 	/* Check if the tdb's freelist is good. */
 	if (tdb_validate_freelist(tdb, &num_entries) == -1) {
 		v_status.bad_freelist = True;

Modified: branches/samba/experimental/source3/lib/util.c
===================================================================
--- branches/samba/experimental/source3/lib/util.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/lib/util.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -527,13 +527,14 @@
  Check if a file exists - call vfs_file_exist for samba files.
 ********************************************************************/
 
-bool file_exist_stat(const char *fname,SMB_STRUCT_STAT *sbuf)
+bool file_exist_stat(const char *fname,SMB_STRUCT_STAT *sbuf,
+		     bool fake_dir_create_times)
 {
 	SMB_STRUCT_STAT st;
 	if (!sbuf)
 		sbuf = &st;
-  
-	if (sys_stat(fname,sbuf) != 0) 
+
+	if (sys_stat(fname, sbuf, fake_dir_create_times) != 0)
 		return(False);
 
 	return((S_ISREG(sbuf->st_ex_mode)) || (S_ISFIFO(sbuf->st_ex_mode)));
@@ -546,34 +547,13 @@
 bool socket_exist(const char *fname)
 {
 	SMB_STRUCT_STAT st;
-	if (sys_stat(fname,&st) != 0) 
+	if (sys_stat(fname, &st, false) != 0)
 		return(False);
 
 	return S_ISSOCK(st.st_ex_mode);
 }
 
 /*******************************************************************
- Check if a directory exists.
-********************************************************************/
-
-bool directory_exist_stat(char *dname,SMB_STRUCT_STAT *st)
-{
-	SMB_STRUCT_STAT st2;
-	bool ret;
-
-	if (!st)
-		st = &st2;
-
-	if (sys_stat(dname,st) != 0) 
-		return(False);
-
-	ret = S_ISDIR(st->st_ex_mode);
-	if(!ret)
-		errno = ENOTDIR;
-	return ret;
-}
-
-/*******************************************************************
  Returns the size in bytes of the named given the stat struct.
 ********************************************************************/
 
@@ -590,7 +570,7 @@
 {
 	SMB_STRUCT_STAT buf;
 	buf.st_ex_size = 0;
-	if(sys_stat(file_name,&buf) != 0)
+	if (sys_stat(file_name, &buf, false) != 0)
 		return (SMB_OFF_T)-1;
 	return get_file_size_stat(&buf);
 }

Modified: branches/samba/experimental/source3/libads/ads_status.c
===================================================================
--- branches/samba/experimental/source3/libads/ads_status.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libads/ads_status.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,6 +21,7 @@
 */
 
 #include "includes.h"
+#include "smb_krb5.h"
 
 /*
   build a ADS_STATUS structure

Modified: branches/samba/experimental/source3/libads/authdata.c
===================================================================
--- branches/samba/experimental/source3/libads/authdata.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libads/authdata.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -24,6 +24,8 @@
 
 #include "includes.h"
 #include "librpc/gen_ndr/ndr_krb5pac.h"
+#include "smb_krb5.h"
+#include "authdata.h"
 
 #ifdef HAVE_KRB5
 

Modified: branches/samba/experimental/source3/libads/kerberos.c
===================================================================
--- branches/samba/experimental/source3/libads/kerberos.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libads/kerberos.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -22,6 +22,7 @@
 */
 
 #include "includes.h"
+#include "smb_krb5.h"
 
 #ifdef HAVE_KRB5
 

Modified: branches/samba/experimental/source3/libads/kerberos_keytab.c
===================================================================
--- branches/samba/experimental/source3/libads/kerberos_keytab.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libads/kerberos_keytab.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -26,6 +26,7 @@
 */
 
 #include "includes.h"
+#include "smb_krb5.h"
 
 #ifdef HAVE_KRB5
 

Modified: branches/samba/experimental/source3/libads/kerberos_verify.c
===================================================================
--- branches/samba/experimental/source3/libads/kerberos_verify.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libads/kerberos_verify.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -24,6 +24,7 @@
 */
 
 #include "includes.h"
+#include "smb_krb5.h"
 
 #ifdef HAVE_KRB5
 

Modified: branches/samba/experimental/source3/libads/krb5_errs.c
===================================================================
--- branches/samba/experimental/source3/libads/krb5_errs.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libads/krb5_errs.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -18,6 +18,7 @@
  */
 
 #include "includes.h"
+#include "smb_krb5.h"
 
 #ifdef HAVE_KRB5
 

Modified: branches/samba/experimental/source3/libads/krb5_setpw.c
===================================================================
--- branches/samba/experimental/source3/libads/krb5_setpw.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libads/krb5_setpw.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -19,6 +19,7 @@
 */
 
 #include "includes.h"
+#include "smb_krb5.h"
 
 #ifdef HAVE_KRB5
 

Modified: branches/samba/experimental/source3/libads/ldap.c
===================================================================
--- branches/samba/experimental/source3/libads/ldap.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libads/ldap.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -2089,7 +2089,7 @@
 done:
 	ads_msgfree(ads, res);
 	SAFE_FREE(filter);
-	SAFE_FREE(computer_dn);
+	TALLOC_FREE(computer_dn);
 	SAFE_FREE(computer_rdn);
 
 	if (!ADS_ERR_OK(rc)) {

Modified: branches/samba/experimental/source3/libads/ldap_printer.c
===================================================================
--- branches/samba/experimental/source3/libads/ldap_printer.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libads/ldap_printer.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -18,6 +18,7 @@
 */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/cli_spoolss.h"
 
 #ifdef HAVE_ADS
 

Modified: branches/samba/experimental/source3/libnet/libnet.h
===================================================================
--- branches/samba/experimental/source3/libnet/libnet.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libnet/libnet.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 #ifndef __LIBNET_H__
 #define __LIBNET_H__
 
+#include "smb_krb5.h"
 #include "libnet/libnet_keytab.h"
 #include "libnet/libnet_samsync.h"
 #include "libnet/libnet_dssync.h"

Modified: branches/samba/experimental/source3/libnet/libnet_dssync.c
===================================================================
--- branches/samba/experimental/source3/libnet/libnet_dssync.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libnet/libnet_dssync.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 #include "includes.h"
 #include "libnet/libnet.h"
 #include "../libcli/drsuapi/drsuapi.h"
+#include "../librpc/gen_ndr/cli_drsuapi.h"
 
 /****************************************************************
 ****************************************************************/

Modified: branches/samba/experimental/source3/libnet/libnet_join.c
===================================================================
--- branches/samba/experimental/source3/libnet/libnet_join.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libnet/libnet_join.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,6 +21,8 @@
 #include "includes.h"
 #include "libnet/libnet.h"
 #include "libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_samr.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
 
 /****************************************************************
 ****************************************************************/

Modified: branches/samba/experimental/source3/libnet/libnet_samsync.c
===================================================================
--- branches/samba/experimental/source3/libnet/libnet_samsync.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libnet/libnet_samsync.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -26,6 +26,7 @@
 #include "../lib/crypto/crypto.h"
 #include "../libcli/samsync/samsync.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_netlogon.h"
 
 /**
  * Fix up the delta, dealing with encryption issues so that the final

Modified: branches/samba/experimental/source3/librpc/gen_ndr/ndr_wbint.c
===================================================================
--- branches/samba/experimental/source3/librpc/gen_ndr/ndr_wbint.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/librpc/gen_ndr/ndr_wbint.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -4,6 +4,7 @@
 #include "librpc/gen_ndr/ndr_wbint.h"
 
 #include "librpc/gen_ndr/ndr_lsa.h"
+#include "librpc/gen_ndr/ndr_netlogon.h"
 _PUBLIC_ enum ndr_err_code ndr_push_wbint_userinfo(struct ndr_push *ndr, int ndr_flags, const struct wbint_userinfo *r)
 {
 	if (ndr_flags & NDR_SCALARS) {

Modified: branches/samba/experimental/source3/librpc/gen_ndr/wbint.h
===================================================================
--- branches/samba/experimental/source3/librpc/gen_ndr/wbint.h	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/librpc/gen_ndr/wbint.h	2009-12-16 21:43:48 UTC (rev 3157)
@@ -5,6 +5,7 @@
 #include "libcli/util/ntstatus.h"
 
 #include "librpc/gen_ndr/lsa.h"
+#include "librpc/gen_ndr/netlogon.h"
 #ifndef _HEADER_wbint
 #define _HEADER_wbint
 

Modified: branches/samba/experimental/source3/librpc/idl/wbint.idl
===================================================================
--- branches/samba/experimental/source3/librpc/idl/wbint.idl	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/librpc/idl/wbint.idl	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1,5 +1,5 @@
 #include "idl_types.h"
-import "lsa.idl";
+import "lsa.idl", "netlogon.idl";
 
 [
     uuid("bf09192c-ed60-4928-9dff-d0d7bcb03ed8"),

Modified: branches/samba/experimental/source3/libsmb/cliconnect.c
===================================================================
--- branches/samba/experimental/source3/libsmb/cliconnect.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libsmb/cliconnect.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,6 +21,7 @@
 #include "includes.h"
 #include "../libcli/auth/libcli_auth.h"
 #include "../libcli/auth/spnego.h"
+#include "smb_krb5.h"
 
 static const struct {
 	int prot;

Modified: branches/samba/experimental/source3/libsmb/clikrb5.c
===================================================================
--- branches/samba/experimental/source3/libsmb/clikrb5.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libsmb/clikrb5.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,10 +20,9 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#define KRB5_PRIVATE    1       /* this file uses PRIVATE interfaces! */
-#define KRB5_DEPRECATED 1       /* this file uses DEPRECATED interfaces! */
-
 #include "includes.h"
+#include "smb_krb5.h"
+#include "authdata.h"
 
 #ifdef HAVE_KRB5
 

Modified: branches/samba/experimental/source3/libsmb/clispnego.c
===================================================================
--- branches/samba/experimental/source3/libsmb/clispnego.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libsmb/clispnego.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "../libcli/auth/spnego.h"
+#include "smb_krb5.h"
 
 /*
   generate a negTokenInit packet given a GUID, a list of supported

Modified: branches/samba/experimental/source3/libsmb/libsmb_dir.c
===================================================================
--- branches/samba/experimental/source3/libsmb/libsmb_dir.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libsmb/libsmb_dir.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -25,8 +25,8 @@
 #include "includes.h"
 #include "libsmbclient.h"
 #include "libsmb_internal.h"
+#include "../librpc/gen_ndr/cli_srvsvc.h"
 
-
 /*
  * Routine to open a directory
  * We accept the URL syntax explained in SMBC_parse_path(), above.

Modified: branches/samba/experimental/source3/libsmb/samlogon_cache.c
===================================================================
--- branches/samba/experimental/source3/libsmb/samlogon_cache.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libsmb/samlogon_cache.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -34,12 +34,50 @@
 
 bool netsamlogon_cache_init(void)
 {
-	if (!netsamlogon_tdb) {
-		netsamlogon_tdb = tdb_open_log(cache_path(NETSAMLOGON_TDB), 0,
-					       TDB_DEFAULT, O_RDWR | O_CREAT, 0600);
+	bool first_try = true;
+	const char *path = NULL;
+	int ret;
+	struct tdb_context *tdb;
+
+	if (netsamlogon_tdb) {
+		return true;
 	}
 
-	return (netsamlogon_tdb != NULL);
+	path = cache_path(NETSAMLOGON_TDB);
+again:
+	tdb = tdb_open_log(path, 0, TDB_DEFAULT,
+			   O_RDWR | O_CREAT, 0600);
+	if (tdb == NULL) {
+		DEBUG(0,("tdb_open_log('%s') - failed\n", path));
+		goto clear;
+	}
+
+	ret = tdb_check(tdb, NULL, NULL);
+	if (ret != 0) {
+		tdb_close(tdb);
+		DEBUG(0,("tdb_check('%s') - failed\n", path));
+		goto clear;
+	}
+
+	netsamlogon_tdb = tdb;
+	return true;
+
+clear:
+	if (!first_try) {
+		return false;
+	}
+	first_try = false;
+
+	DEBUG(0,("retry after CLEAR_IF_FIRST for '%s'\n", path));
+	tdb = tdb_open_log(path, 0, TDB_CLEAR_IF_FIRST,
+			   O_RDWR | O_CREAT, 0600);
+	if (tdb) {
+		tdb_close(tdb);
+		goto again;
+	}
+	DEBUG(0,("tdb_open_log(%s) with CLEAR_IF_FIRST - failed\n", path));
+
+	return false;
 }
 
 

Modified: branches/samba/experimental/source3/libsmb/trusts_util.c
===================================================================
--- branches/samba/experimental/source3/libsmb/trusts_util.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/libsmb/trusts_util.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
 
 /*********************************************************
  Change the domain password on the PDC.

Modified: branches/samba/experimental/source3/locking/brlock.c
===================================================================
--- branches/samba/experimental/source3/locking/brlock.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/locking/brlock.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -333,6 +333,11 @@
 	SMB_ASSERT(plock->lock_type != UNLOCK_LOCK);
 
 	for (i=0; i < br_lck->num_locks; i++) {
+		if (locks[i].start + locks[i].size < locks[i].start) {
+			/* 64-bit wrap. Error. */
+			return NT_STATUS_INVALID_LOCK_RANGE;
+		}
+
 		/* Do any Windows or POSIX locks conflict ? */
 		if (brl_conflict(&locks[i], plock)) {
 			/* Remember who blocked us. */

Modified: branches/samba/experimental/source3/locking/locking.c
===================================================================
--- branches/samba/experimental/source3/locking/locking.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/locking/locking.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1307,18 +1307,11 @@
 }
 
 /****************************************************************************
- Deal with the internal needs of setting the delete on close flag. Note that
- as the tdb locking is recursive, it is safe to call this from within 
- open_file_ntcreate. JRA.
+ Check if setting delete on close is allowed on this fsp.
 ****************************************************************************/
 
-NTSTATUS can_set_delete_on_close(files_struct *fsp, bool delete_on_close,
-				 uint32 dosmode)
+NTSTATUS can_set_delete_on_close(files_struct *fsp, uint32 dosmode)
 {
-	if (!delete_on_close) {
-		return NT_STATUS_OK;
-	}
-
 	/*
 	 * Only allow delete on close for writable files.
 	 */

Modified: branches/samba/experimental/source3/m4/aclocal.m4
===================================================================
--- branches/samba/experimental/source3/m4/aclocal.m4	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/m4/aclocal.m4	2009-12-16 21:43:48 UTC (rev 3157)
@@ -433,45 +433,47 @@
     jm_cv_giconv=no
     jm_save_LIBS="$LIBS"
 
-    dnl Check for include in funny place but no lib needed
-    if test "$jm_cv_func_iconv" != yes; then 
+  dnl Check for include in giconv.h but no lib needed
+  if test "$jm_cv_func_iconv" != yes; then
+    AC_TRY_LINK([#include <stdlib.h>
+#include <giconv.h>],
+      [iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);],
+       jm_cv_func_iconv=yes
+       jm_cv_include="giconv.h"
+       jm_cv_giconv="yes"
+       jm_cv_lib_iconv="")
+
+    dnl Standard iconv.h include, lib in glibc or libc ...
+    if test "$jm_cv_func_iconv" != yes; then
       AC_TRY_LINK([#include <stdlib.h>
-#include <giconv.h>],
+#include <iconv.h>],
         [iconv_t cd = iconv_open("","");
          iconv(cd,NULL,NULL,NULL,NULL);
          iconv_close(cd);],
+         jm_cv_include="iconv.h"
          jm_cv_func_iconv=yes
-         jm_cv_include="giconv.h"
-         jm_cv_giconv="yes"
          jm_cv_lib_iconv="")
 
-      dnl Standard iconv.h include, lib in glibc or libc ...
+      dnl Include in giconv.h, libgiconv needed to link
       if test "$jm_cv_func_iconv" != yes; then
+        jm_save_LIBS="$LIBS"
+        LIBS="$LIBS -lgiconv"
         AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
+#include <giconv.h>],
           [iconv_t cd = iconv_open("","");
            iconv(cd,NULL,NULL,NULL,NULL);
            iconv_close(cd);],
-           jm_cv_include="iconv.h"
-           jm_cv_func_iconv=yes
-           jm_cv_lib_iconv="")
+          jm_cv_lib_iconv=yes
+          jm_cv_func_iconv=yes
+          jm_cv_include="giconv.h"
+          jm_cv_giconv=yes
+          jm_cv_lib_iconv="giconv")
 
-          if test "$jm_cv_lib_iconv" != yes; then
-            jm_save_LIBS="$LIBS"
-            LIBS="$LIBS -lgiconv"
-            AC_TRY_LINK([#include <stdlib.h>
-#include <giconv.h>],
-              [iconv_t cd = iconv_open("","");
-               iconv(cd,NULL,NULL,NULL,NULL);
-               iconv_close(cd);],
-              jm_cv_lib_iconv=yes
-              jm_cv_func_iconv=yes
-              jm_cv_include="giconv.h"
-              jm_cv_giconv=yes
-              jm_cv_lib_iconv="giconv")
+        LIBS="$jm_save_LIBS"
 
-           LIBS="$jm_save_LIBS"
-
+        dnl Include in iconv.h, libiconv needed to link
         if test "$jm_cv_func_iconv" != yes; then
           jm_save_LIBS="$LIBS"
           LIBS="$LIBS -liconv"
@@ -485,7 +487,8 @@
             jm_cv_lib_iconv="iconv")
           LIBS="$jm_save_LIBS"
 
-          if test "$jm_cv_lib_iconv" != yes; then
+          dnl Include in biconv.h, libbiconv needed to link
+          if test "$jm_cv_func_iconv" != yes; then
             jm_save_LIBS="$LIBS"
             LIBS="$LIBS -lbiconv"
             AC_TRY_LINK([#include <stdlib.h>
@@ -500,7 +503,7 @@
               jm_cv_lib_iconv="biconv")
 
             LIBS="$jm_save_LIBS"
-	  fi
+          fi
         fi
       fi
     fi

Modified: branches/samba/experimental/source3/modules/onefs_open.c
===================================================================
--- branches/samba/experimental/source3/modules/onefs_open.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/onefs_open.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -322,13 +322,6 @@
 		fsp->aio_write_behind = True;
 	}
 
-	status = fsp_set_smb_fname(fsp, smb_fname);
-	if (!NT_STATUS_IS_OK(status)) {
-		fd_close(fsp);
-		errno = map_errno_from_nt_status(status);
-		return status;
-	}
-
 	fsp->wcp = NULL; /* Write cache pointer. */
 
 	DEBUG(2,("%s opened file %s read=%s write=%s (numopen=%d)\n",
@@ -1328,7 +1321,7 @@
 
 	/* Handle strange delete on close create semantics. */
 	if (create_options & FILE_DELETE_ON_CLOSE) {
-		status = can_set_delete_on_close(fsp, True, new_dos_attributes);
+		status = can_set_delete_on_close(fsp, new_dos_attributes);
 
 		if (!NT_STATUS_IS_OK(status)) {
 			/* Remember to delete the mode we just added. */
@@ -1686,7 +1679,7 @@
 	 * always to be honored on close... See test 19 in Samba4 BASE-DELETE.
 	 */
 	if (create_options & FILE_DELETE_ON_CLOSE) {
-		status = can_set_delete_on_close(fsp, True, 0);
+		status = can_set_delete_on_close(fsp, 0);
 		if (!NT_STATUS_IS_OK(status) &&
 		    !NT_STATUS_EQUAL(status, NT_STATUS_DIRECTORY_NOT_EMPTY)) {
 			TALLOC_FREE(lck);

Modified: branches/samba/experimental/source3/modules/vfs_acl_common.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_acl_common.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_acl_common.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -34,10 +34,6 @@
 			files_struct *fsp,
 			DATA_BLOB *pblob);
 
-static NTSTATUS store_acl_blob_pathname(vfs_handle_struct *handle,
-			const char *fname,
-			DATA_BLOB *pblob);
-
 #define HASH_SECURITY_INFO (OWNER_SECURITY_INFORMATION | \
 				GROUP_SECURITY_INFORMATION | \
 				DACL_SECURITY_INFORMATION | \
@@ -161,7 +157,9 @@
 }
 
 /*******************************************************************
- Store a DATA_BLOB into an xattr given a pathname.
+ Pull a DATA_BLOB from an xattr given a pathname.
+ If the hash doesn't match, or doesn't exist - return the underlying
+ filesystem sd.
 *******************************************************************/
 
 static NTSTATUS get_nt_acl_internal(vfs_handle_struct *handle,
@@ -175,6 +173,7 @@
 	uint16_t hash_type;
 	uint8_t hash[XATTR_SD_HASH_SIZE];
 	uint8_t hash_tmp[XATTR_SD_HASH_SIZE];
+	struct security_descriptor *psd = NULL;
 	struct security_descriptor *pdesc_next = NULL;
 
 	if (fsp && name == NULL) {
@@ -183,301 +182,214 @@
 
 	DEBUG(10, ("get_nt_acl_internal: name=%s\n", name));
 
-	status = get_acl_blob(talloc_tos(), handle, fsp, name, &blob);
+	/* Get the full underlying sd for the hash
+	   or to return as backup. */
+	if (fsp) {
+		status = SMB_VFS_NEXT_FGET_NT_ACL(handle,
+				fsp,
+				HASH_SECURITY_INFO,
+				&pdesc_next);
+	} else {
+		status = SMB_VFS_NEXT_GET_NT_ACL(handle,
+				name,
+				HASH_SECURITY_INFO,
+				&pdesc_next);
+	}
+
 	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(10, ("get_acl_blob returned %s\n", nt_errstr(status)));
+		DEBUG(10, ("get_nt_acl_internal: get_next_acl for file %s "
+			"returned %s\n",
+			name,
+			nt_errstr(status)));
 		return status;
 	}
 
-	status = parse_acl_blob(&blob, ppdesc,
+	status = get_acl_blob(talloc_tos(), handle, fsp, name, &blob);
+	if (!NT_STATUS_IS_OK(status)) {
+		DEBUG(10, ("get_nt_acl_internal: get_acl_blob returned %s\n",
+			nt_errstr(status)));
+		psd = pdesc_next;
+		goto out;
+	}
+
+	status = parse_acl_blob(&blob, &psd,
 				&hash_type, &hash[0]);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(10, ("parse_acl_blob returned %s\n",
 				nt_errstr(status)));
-		return status;
+		psd = pdesc_next;
+		goto out;
 	}
 
 	/* Ensure the hash type is one we know. */
 	switch (hash_type) {
 		case XATTR_SD_HASH_TYPE_NONE:
-			/* No hash, goto return blob sd. */
+			/* No hash, just return blob sd. */
 			goto out;
 		case XATTR_SD_HASH_TYPE_SHA256:
 			break;
 		default:
-			return NT_STATUS_REVISION_MISMATCH;
+			DEBUG(10, ("get_nt_acl_internal: ACL blob revision "
+				"mismatch (%u) for file %s\n",
+				(unsigned int)hash_type,
+				name));
+			TALLOC_FREE(psd);
+			psd = pdesc_next;
+			goto out;
 	}
 
-	/* Get the full underlying sd, then hash. */
-	if (fsp) {
-		status = SMB_VFS_NEXT_FGET_NT_ACL(handle,
-				fsp,
-				HASH_SECURITY_INFO,
-				&pdesc_next);
-	} else {
-		status = SMB_VFS_NEXT_GET_NT_ACL(handle,
-				name,
-				HASH_SECURITY_INFO,
-				&pdesc_next);
-	}
 
-	if (!NT_STATUS_IS_OK(status)) {
-		goto out;
-	}
-
 	status = hash_sd_sha256(pdesc_next, hash_tmp);
 	if (!NT_STATUS_IS_OK(status)) {
+		TALLOC_FREE(psd);
+		psd = pdesc_next;
 		goto out;
 	}
 
 	if (memcmp(&hash[0], &hash_tmp[0], XATTR_SD_HASH_SIZE) == 0) {
-		TALLOC_FREE(pdesc_next);
 		/* Hash matches, return blob sd. */
 		goto out;
 	}
 
 	/* Hash doesn't match, return underlying sd. */
+	TALLOC_FREE(psd);
+	psd = pdesc_next;
 
-	if (!(security_info & OWNER_SECURITY_INFORMATION)) {
-		pdesc_next->owner_sid = NULL;
+  out:
+
+	if (psd != pdesc_next) {
+		/* We're returning the blob, throw
+ 		 * away the filesystem SD. */
+		TALLOC_FREE(pdesc_next);
 	}
-	if (!(security_info & GROUP_SECURITY_INFORMATION)) {
-		pdesc_next->group_sid = NULL;
-	}
-	if (!(security_info & DACL_SECURITY_INFORMATION)) {
-		pdesc_next->dacl = NULL;
-	}
-	if (!(security_info & SACL_SECURITY_INFORMATION)) {
-		pdesc_next->sacl = NULL;
-	}
 
-	TALLOC_FREE(*ppdesc);
-	*ppdesc = pdesc_next;
-
-  out:
-
 	if (!(security_info & OWNER_SECURITY_INFORMATION)) {
-		(*ppdesc)->owner_sid = NULL;
+		psd->owner_sid = NULL;
 	}
 	if (!(security_info & GROUP_SECURITY_INFORMATION)) {
-		(*ppdesc)->group_sid = NULL;
+		psd->group_sid = NULL;
 	}
 	if (!(security_info & DACL_SECURITY_INFORMATION)) {
-		(*ppdesc)->dacl = NULL;
+		psd->dacl = NULL;
 	}
 	if (!(security_info & SACL_SECURITY_INFORMATION)) {
-		(*ppdesc)->sacl = NULL;
+		psd->sacl = NULL;
 	}
 
 	TALLOC_FREE(blob.data);
-	return status;
+	*ppdesc = psd;
+	return NT_STATUS_OK;
 }
 
 /*********************************************************************
- Create a default security descriptor for a file in case no inheritance
- exists. All permissions to the owner and SYSTEM.
+ Create a default ACL by inheriting from the parent. If no inheritance
+ from the parent available, don't set anything. This will leave the actual
+ permissions the new file or directory already got from the filesystem
+ as the NT ACL when read.
 *********************************************************************/
 
-static struct security_descriptor *default_file_sd(TALLOC_CTX *mem_ctx,
-						SMB_STRUCT_STAT *psbuf,
-						bool force_inherit)
+static NTSTATUS inherit_new_acl(vfs_handle_struct *handle,
+					files_struct *fsp,
+					struct security_descriptor *parent_desc,
+					bool is_directory)
 {
-	struct dom_sid owner_sid, group_sid;
-	size_t sd_size;
-	struct security_ace *pace = NULL;
-	struct security_acl *pacl = NULL;
+	TALLOC_CTX *ctx = talloc_tos();
+	NTSTATUS status = NT_STATUS_OK;
+	struct security_descriptor *psd = NULL;
+	size_t size;
 
-	uid_to_sid(&owner_sid, psbuf->st_ex_uid);
-	gid_to_sid(&group_sid, psbuf->st_ex_gid);
-
-	pace = TALLOC_ARRAY(mem_ctx, struct security_ace, 2);
-	if (!pace) {
-		return NULL;
+	if (!sd_has_inheritable_components(parent_desc, is_directory)) {
+		return NT_STATUS_OK;
 	}
 
-	/* If force_inherit is set, this means we are initializing the ACEs for
-	 * a container and we want the ACEs for owner_sid and "SYSTEM" to be
-	 * inheritable by their children (See Bug #6802).
-	 */
+	/* Create an inherited descriptor from the parent. */
 
-	init_sec_ace(&pace[0], &owner_sid, SEC_ACE_TYPE_ACCESS_ALLOWED,
-			SEC_RIGHTS_FILE_ALL, (force_inherit ?
-					(SEC_ACE_FLAG_OBJECT_INHERIT|
-					SEC_ACE_FLAG_CONTAINER_INHERIT) :
-					0));
+	if (DEBUGLEVEL >= 10) {
+		DEBUG(10,("inherit_new_acl: parent acl for %s is:\n",
+			fsp_str_dbg(fsp) ));
+		NDR_PRINT_DEBUG(security_descriptor, parent_desc);
+	}
 
-	init_sec_ace(&pace[1], &global_sid_System, SEC_ACE_TYPE_ACCESS_ALLOWED,
-			SEC_RIGHTS_FILE_ALL, (force_inherit ?
-					(SEC_ACE_FLAG_OBJECT_INHERIT|
-					SEC_ACE_FLAG_CONTAINER_INHERIT) :
-					0));
+	status = se_create_child_secdesc(ctx,
+			&psd,
+			&size,
+			parent_desc,
+			&handle->conn->server_info->ptok->user_sids[PRIMARY_USER_SID_INDEX],
+			&handle->conn->server_info->ptok->user_sids[PRIMARY_GROUP_SID_INDEX],
+			is_directory);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
 
-	pacl = make_sec_acl(mem_ctx,
-				NT4_ACL_REVISION,
-				2,
-				pace);
-	if (!pacl) {
-		return NULL;
+	if (DEBUGLEVEL >= 10) {
+		DEBUG(10,("inherit_new_acl: child acl for %s is:\n",
+			fsp_str_dbg(fsp) ));
+		NDR_PRINT_DEBUG(security_descriptor, parent_desc);
 	}
-	return make_sec_desc(mem_ctx,
-			SECURITY_DESCRIPTOR_REVISION_1,
-			SEC_DESC_SELF_RELATIVE|SEC_DESC_DACL_PRESENT,
-			&owner_sid,
-			&group_sid,
-			NULL,
-                        pacl,
-			&sd_size);
+
+	return SMB_VFS_FSET_NT_ACL(fsp,
+				(OWNER_SECURITY_INFORMATION |
+				 GROUP_SECURITY_INFORMATION |
+				 DACL_SECURITY_INFORMATION),
+				psd);
 }
 
-/*********************************************************************
-*********************************************************************/
-
-static NTSTATUS inherit_new_acl(vfs_handle_struct *handle,
-					struct smb_filename *smb_fname,
-					files_struct *fsp,
-					bool container)
+static NTSTATUS check_parent_acl_common(vfs_handle_struct *handle,
+				const char *path,
+				uint32_t access_mask,
+				struct security_descriptor **pp_parent_desc)
 {
-	TALLOC_CTX *ctx = talloc_tos();
+	char *parent_name = NULL;
+	struct security_descriptor *parent_desc = NULL;
+	uint32_t access_granted = 0;
 	NTSTATUS status;
-	struct security_descriptor *parent_desc = NULL;
-	struct security_descriptor *psd = NULL;
-	struct security_descriptor *pdesc_next = NULL;
-	DATA_BLOB blob;
-	size_t size;
-	char *parent_name;
-	bool force_inherit = false;
-	uint8_t hash[XATTR_SD_HASH_SIZE];
 
-	if (!parent_dirname(ctx, smb_fname->base_name, &parent_name, NULL)) {
+	if (!parent_dirname(talloc_tos(), path, &parent_name, NULL)) {
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	DEBUG(10,("inherit_new_acl: check directory %s\n",
-			parent_name));
-
 	status = get_nt_acl_internal(handle,
-				NULL,
-				parent_name,
-				(OWNER_SECURITY_INFORMATION |
-				 GROUP_SECURITY_INFORMATION |
-				 DACL_SECURITY_INFORMATION),
-				&parent_desc);
-        if (NT_STATUS_IS_OK(status)) {
-		/* Create an inherited descriptor from the parent. */
+					NULL,
+					parent_name,
+					(OWNER_SECURITY_INFORMATION |
+					 GROUP_SECURITY_INFORMATION |
+					 DACL_SECURITY_INFORMATION),
+					&parent_desc);
 
-		if (DEBUGLEVEL >= 10) {
-			DEBUG(10,("inherit_new_acl: parent acl is:\n"));
-			NDR_PRINT_DEBUG(security_descriptor, parent_desc);
-		}
-
-		status = se_create_child_secdesc(ctx,
-				&psd,
-				&size,
-				parent_desc,
-				&handle->conn->server_info->ptok->user_sids[PRIMARY_USER_SID_INDEX],
-				&handle->conn->server_info->ptok->user_sids[PRIMARY_GROUP_SID_INDEX],
-				container);
-		if (!NT_STATUS_IS_OK(status)) {
-			return status;
-		}
-
-		if (DEBUGLEVEL >= 10) {
-			DEBUG(10,("inherit_new_acl: child acl is:\n"));
-			NDR_PRINT_DEBUG(security_descriptor, psd);
-		}
-
-	} else {
-		DEBUG(10,("inherit_new_acl: directory %s failed "
-			"to get acl %s\n",
+	if (!NT_STATUS_IS_OK(status)) {
+		DEBUG(10,("check_parent_acl_common: get_nt_acl_internal "
+			"on directory %s for "
+			"path %s returned %s\n",
 			parent_name,
+			path,
 			nt_errstr(status) ));
-	}
-
-	if (!psd || psd->dacl == NULL) {
-
-		TALLOC_FREE(psd);
-		if (fsp) {
-			status = vfs_stat_fsp(fsp);
-			smb_fname->st = fsp->fsp_name->st;
-		} else {
-			int ret;
-			if (lp_posix_pathnames()) {
-				ret = SMB_VFS_LSTAT(handle->conn, smb_fname);
-			} else {
-				ret = SMB_VFS_STAT(handle->conn, smb_fname);
-			}
-			if (ret == -1) {
-				status = map_nt_error_from_unix(errno);
-			}
-		}
-		if (!NT_STATUS_IS_OK(status)) {
-			return status;
-		}
-
-		/* If we get here, we could have the following possibilities:
-		 *	1. No ACLs exist on the parent container.
-		 *	2. ACLs exist on the parent container but they were
-		 *	not inheritable.
-		 *
-		 *	Check to see if case #1 occurred.
-		 *
-		 */
-		if (container &&
-			(parent_desc == NULL || parent_desc->dacl == NULL)) {
-
-			/* If no parent descriptor exists, then there were
-			 * no ACLs on the parent and then we must create
-			 * the ACLs on this newly created folder so that they
-			 * will be inherited by their children (See Bug #6802).
-			 */
-
-			force_inherit = true;
-		}
-
-		psd = default_file_sd(ctx, &smb_fname->st, force_inherit);
-		if (!psd) {
-			return NT_STATUS_NO_MEMORY;
-		}
-
-		if (DEBUGLEVEL >= 10) {
-			DEBUG(10,("inherit_new_acl: default acl is:\n"));
-			NDR_PRINT_DEBUG(security_descriptor, psd);
-		}
-	}
-
-	/* Object exists. Read the current SD to get the hash. */
-	if (fsp) {
-		status = SMB_VFS_NEXT_FGET_NT_ACL(handle,
-				fsp,
-				HASH_SECURITY_INFO,
-				&pdesc_next);
-	} else {
-		status = SMB_VFS_NEXT_GET_NT_ACL(handle,
-				smb_fname->base_name,
-				HASH_SECURITY_INFO,
-				&pdesc_next);
-	}
-
-	if (!NT_STATUS_IS_OK(status)) {
 		return status;
 	}
-
-	status = hash_sd_sha256(pdesc_next, hash);
-	if (!NT_STATUS_IS_OK(status)) {
+	status = smb1_file_se_access_check(parent_desc,
+					handle->conn->server_info->ptok,
+					access_mask,
+					&access_granted);
+	if(!NT_STATUS_IS_OK(status)) {
+		DEBUG(10,("check_parent_acl_common: access check "
+			"on directory %s for "
+			"path %s for mask 0x%x returned %s\n",
+			parent_name,
+			path,
+			access_mask,
+			nt_errstr(status) ));
 		return status;
 	}
-	status = create_acl_blob(psd, &blob, XATTR_SD_HASH_TYPE_SHA256, hash);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+	if (pp_parent_desc) {
+		*pp_parent_desc = parent_desc;
 	}
-	if (fsp) {
-		return store_acl_blob_fsp(handle, fsp, &blob);
-	} else {
-		return store_acl_blob_pathname(handle, smb_fname->base_name,
-					       &blob);
-	}
+	return NT_STATUS_OK;
 }
 
+static void free_sd_common(void **ptr)
+{
+	TALLOC_FREE(*ptr);
+}
+
 /*********************************************************************
  Check ACL on open. For new files inherit from parent directory.
 *********************************************************************/
@@ -490,6 +402,7 @@
 {
 	uint32_t access_granted = 0;
 	struct security_descriptor *pdesc = NULL;
+	struct security_descriptor *parent_desc = NULL;
 	bool file_existed = true;
 	char *fname = NULL;
 	NTSTATUS status;
@@ -497,15 +410,14 @@
 	if (fsp->base_fsp) {
 		/* Stream open. Base filename open already did the ACL check. */
 		DEBUG(10,("open_acl_common: stream open on %s\n",
-			smb_fname_str_dbg(smb_fname) ));
+			fsp_str_dbg(fsp) ));
 		return SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
 	}
 
 	status = get_full_smb_filename(talloc_tos(), smb_fname,
 				       &fname);
 	if (!NT_STATUS_IS_OK(status)) {
-		errno = map_errno_from_nt_status(status);
-		return -1;
+		goto err;
 	}
 
 	status = get_nt_acl_internal(handle,
@@ -522,58 +434,95 @@
 					fsp->access_mask,
 					&access_granted);
 		if (!NT_STATUS_IS_OK(status)) {
-			DEBUG(10,("open_acl_xattr: file %s open "
+			DEBUG(10,("open_acl_xattr: %s open "
 				"refused with error %s\n",
-				smb_fname_str_dbg(smb_fname),
+				fsp_str_dbg(fsp),
 				nt_errstr(status) ));
-			errno = map_errno_from_nt_status(status);
-			return -1;
+			goto err;
 		}
         } else if (NT_STATUS_EQUAL(status,NT_STATUS_OBJECT_NAME_NOT_FOUND)) {
 		file_existed = false;
+		/*
+		 * If O_CREAT is true then we're trying to create a file.
+		 * Check the parent directory ACL will allow this.
+		 */
+		if (flags & O_CREAT) {
+			struct security_descriptor *psd = NULL;
+
+			status = check_parent_acl_common(handle, fname,
+					SEC_DIR_ADD_FILE, &parent_desc);
+			if (!NT_STATUS_IS_OK(status)) {
+				goto err;
+			}
+			/* Cache the parent security descriptor for
+			 * later use. We do have an fsp here, but to
+			 * keep the code consistent with the directory
+			 * case which doesn't, use the handle. */
+
+			/* Attach this to the conn, move from talloc_tos(). */
+			psd = (struct security_descriptor *)talloc_move(handle->conn,
+				&parent_desc);
+
+			if (!psd) {
+				status = NT_STATUS_NO_MEMORY;
+				goto err;
+			}
+			status = NT_STATUS_NO_MEMORY;
+			SMB_VFS_HANDLE_SET_DATA(handle, psd, free_sd_common,
+				struct security_descriptor *, goto err);
+			status = NT_STATUS_OK;
+		}
 	}
 
 	DEBUG(10,("open_acl_xattr: get_nt_acl_attr_internal for "
-		"file %s returned %s\n",
-		smb_fname_str_dbg(smb_fname),
+		"%s returned %s\n",
+		fsp_str_dbg(fsp),
 		nt_errstr(status) ));
 
 	fsp->fh->fd = SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
+	return fsp->fh->fd;
 
-	if (!file_existed && fsp->fh->fd != -1) {
-		/* File was created. Inherit from parent directory. */
-		status = fsp_set_smb_fname(fsp, smb_fname);
-		if (!NT_STATUS_IS_OK(status)) {
-			errno = map_errno_from_nt_status(status);
-			return -1;
-		}
-		inherit_new_acl(handle, smb_fname, fsp, false);
-	}
+  err:
 
-	return fsp->fh->fd;
+	errno = map_errno_from_nt_status(status);
+	return -1;
 }
 
 static int mkdir_acl_common(vfs_handle_struct *handle, const char *path, mode_t mode)
 {
-	struct smb_filename *smb_fname = NULL;
-	int ret = SMB_VFS_NEXT_MKDIR(handle, path, mode);
+	int ret;
 	NTSTATUS status;
+	SMB_STRUCT_STAT sbuf;
 
-	if (ret == -1) {
-		return ret;
-	}
+	ret = vfs_stat_smb_fname(handle->conn, path, &sbuf);
+	if (ret == -1 && errno == ENOENT) {
+		struct security_descriptor *parent_desc = NULL;
+		struct security_descriptor *psd = NULL;
 
-	status = create_synthetic_smb_fname(talloc_tos(), path, NULL, NULL,
-					    &smb_fname);
-	if (!NT_STATUS_IS_OK(status)) {
-		errno = map_errno_from_nt_status(status);
-		return -1;
+		/* We're creating a new directory. */
+		status = check_parent_acl_common(handle, path,
+				SEC_DIR_ADD_SUBDIR, &parent_desc);
+		if (!NT_STATUS_IS_OK(status)) {
+			errno = map_errno_from_nt_status(status);
+			return -1;
+		}
+
+		/* Cache the parent security descriptor for
+		 * later use. We don't have an fsp here so
+		 * use the handle. */
+
+		/* Attach this to the conn, move from talloc_tos(). */
+		psd = (struct security_descriptor *)talloc_move(handle->conn,
+				&parent_desc);
+
+		if (!psd) {
+			return -1;
+		}
+		SMB_VFS_HANDLE_SET_DATA(handle, psd, free_sd_common,
+			struct security_descriptor *, return -1);
 	}
 
-	/* New directory - inherit from parent. */
-	inherit_new_acl(handle, smb_fname, NULL, true);
-	TALLOC_FREE(smb_fname);
-	return ret;
+	return SMB_VFS_NEXT_MKDIR(handle, path, mode);
 }
 
 /*********************************************************************
@@ -691,3 +640,114 @@
 
 	return NT_STATUS_OK;
 }
+
+static SMB_STRUCT_DIR *opendir_acl_common(vfs_handle_struct *handle,
+			const char *fname, const char *mask, uint32 attr)
+{
+	NTSTATUS status = check_parent_acl_common(handle, fname,
+					SEC_DIR_LIST, NULL);
+
+	if (!NT_STATUS_IS_OK(status)) {
+		errno = map_errno_from_nt_status(status);
+		return NULL;
+	}
+	return SMB_VFS_NEXT_OPENDIR(handle, fname, mask, attr);
+}
+
+static NTSTATUS create_file_acl_common(struct vfs_handle_struct *handle,
+				struct smb_request *req,
+				uint16_t root_dir_fid,
+				struct smb_filename *smb_fname,
+				uint32_t access_mask,
+				uint32_t share_access,
+				uint32_t create_disposition,
+				uint32_t create_options,
+				uint32_t file_attributes,
+				uint32_t oplock_request,
+				uint64_t allocation_size,
+				struct security_descriptor *sd,
+				struct ea_list *ea_list,
+				files_struct **result,
+				int *pinfo)
+{
+	NTSTATUS status, status1;
+	files_struct *fsp = NULL;
+	int info;
+	struct security_descriptor *parent_sd = NULL;
+
+	status = SMB_VFS_NEXT_CREATE_FILE(handle,
+					req,
+					root_dir_fid,
+					smb_fname,
+					access_mask,
+					share_access,
+					create_disposition,
+					create_options,
+					file_attributes,
+					oplock_request,
+					allocation_size,
+					sd,
+					ea_list,
+					result,
+					&info);
+
+	if (info != FILE_WAS_CREATED) {
+		/* File/directory was opened, not created. */
+		goto out;
+	}
+
+	fsp = *result;
+
+	if (!NT_STATUS_IS_OK(status) || fsp == NULL) {
+		/* Only handle success. */
+		goto out;
+	}
+
+	if (sd) {
+		/* Security descriptor already set. */
+		goto out;
+	}
+
+	if (fsp->base_fsp) {
+		/* Stream open. */
+		goto out;
+	}
+
+
+	/* We must have a cached parent sd in this case.
+	 * attached to the handle. */
+
+	SMB_VFS_HANDLE_GET_DATA(handle, parent_sd,
+		struct security_descriptor,
+		goto err);
+
+	if (!parent_sd) {
+		goto err;
+	}
+
+	/* New directory - inherit from parent. */
+	status1 = inherit_new_acl(handle, fsp, parent_sd, fsp->is_directory);
+
+	if (!NT_STATUS_IS_OK(status1)) {
+		DEBUG(1,("create_file_acl_common: error setting "
+			"sd for %s (%s)\n",
+			fsp_str_dbg(fsp),
+			nt_errstr(status1) ));
+	}
+
+  out:
+
+	/* Ensure we never leave attached data around. */
+	SMB_VFS_HANDLE_FREE_DATA(handle);
+
+	if (NT_STATUS_IS_OK(status) && pinfo) {
+		*pinfo = info;
+	}
+	return status;
+
+  err:
+
+	smb_panic("create_file_acl_common: logic error.\n");
+	/* NOTREACHED */
+	return status;
+}

Modified: branches/samba/experimental/source3/modules/vfs_acl_tdb.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_acl_tdb.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_acl_tdb.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -188,7 +188,7 @@
 		(unsigned int)data.dsize, name ));
 
 	if (pblob->length == 0 || pblob->data == NULL) {
-		return NT_STATUS_OBJECT_NAME_NOT_FOUND;
+		return NT_STATUS_NOT_FOUND;
 	}
 	return NT_STATUS_OK;
 }
@@ -235,56 +235,6 @@
 	return rec->store(rec, data, 0);
 }
 
-/*******************************************************************
- Store a DATA_BLOB into a tdb record given a pathname.
-*******************************************************************/
-
-static NTSTATUS store_acl_blob_pathname(vfs_handle_struct *handle,
-					const char *fname,
-					DATA_BLOB *pblob)
-{
-	uint8 id_buf[16];
-	struct file_id id;
-	TDB_DATA data;
-	SMB_STRUCT_STAT sbuf;
-	struct db_context *db;
-	struct db_record *rec;
-	int ret = -1;
-
-	DEBUG(10,("store_acl_blob_pathname: storing blob "
-			"length %u on file %s\n",
-			(unsigned int)pblob->length, fname));
-
-	SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context,
-		return NT_STATUS_INTERNAL_DB_CORRUPTION);
-
-	if (lp_posix_pathnames()) {
-		ret = vfs_lstat_smb_fname(handle->conn, fname, &sbuf);
-	} else {
-		ret = vfs_stat_smb_fname(handle->conn, fname, &sbuf);
-	}
-
-	if (ret == -1) {
-		return map_nt_error_from_unix(errno);
-	}
-
-	id = vfs_file_id_from_sbuf(handle->conn, &sbuf);
-
-	/* For backwards compatibility only store the dev/inode. */
-	push_file_id_16((char *)id_buf, &id);
-
-	rec = db->fetch_locked(db, talloc_tos(),
-				make_tdb_data(id_buf,
-					sizeof(id_buf)));
-	if (rec == NULL) {
-		DEBUG(0, ("store_acl_blob_pathname_tdb: fetch_lock failed\n"));
-		return NT_STATUS_INTERNAL_DB_CORRUPTION;
-	}
-	data.dptr = pblob->data;
-	data.dsize = pblob->length;
-	return rec->store(rec, data, 0);
-}
-
 /*********************************************************************
  On unlink we need to delete the tdb record (if using tdb).
 *********************************************************************/
@@ -367,12 +317,11 @@
 				const char *user)
 {
 	struct db_context *db;
-	int res;
+	int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
 
-        res = SMB_VFS_NEXT_CONNECT(handle, service, user);
-        if (res < 0) {
-                return res;
-        }
+	if (ret < 0) {
+		return ret;
+	}
 
 	if (!acl_tdb_init(&db)) {
 		SMB_VFS_NEXT_DISCONNECT(handle);
@@ -462,8 +411,10 @@
 
 static struct vfs_fn_pointers vfs_acl_tdb_fns = {
 	.connect_fn = connect_acl_tdb,
+	.opendir = opendir_acl_common,
 	.mkdir = mkdir_acl_common,
 	.open = open_acl_common,
+	.create_file = create_file_acl_common,
 	.unlink = unlink_acl_tdb,
 	.rmdir = rmdir_acl_tdb,
 	.fget_nt_acl = fget_nt_acl_common,

Modified: branches/samba/experimental/source3/modules/vfs_acl_xattr.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_acl_xattr.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_acl_xattr.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -127,41 +127,6 @@
 	return NT_STATUS_OK;
 }
 
-/*******************************************************************
- Store a DATA_BLOB into an xattr given a pathname.
-*******************************************************************/
-
-static NTSTATUS store_acl_blob_pathname(vfs_handle_struct *handle,
-					const char *fname,
-					DATA_BLOB *pblob)
-{
-	connection_struct *conn = handle->conn;
-	int ret;
-	int saved_errno = 0;
-
-	DEBUG(10,("store_acl_blob_pathname: storing blob "
-			"length %u on file %s\n",
-			(unsigned int)pblob->length, fname));
-
-	become_root();
-	ret = SMB_VFS_SETXATTR(conn, fname,
-				XATTR_NTACL_NAME,
-				pblob->data, pblob->length, 0);
-	if (ret) {
-		saved_errno = errno;
-	}
-	unbecome_root();
-	if (ret) {
-		errno = saved_errno;
-		DEBUG(5, ("store_acl_blob_pathname: setting attr failed "
-			"for file %s with error %s\n",
-			fname,
-			strerror(errno) ));
-		return map_nt_error_from_unix(errno);
-	}
-	return NT_STATUS_OK;
-}
-
 /*********************************************************************
  Remove a Windows ACL - we're setting the underlying POSIX ACL.
 *********************************************************************/
@@ -212,6 +177,12 @@
 				const char *service,
 				const char *user)
 {
+	int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
+
+	if (ret < 0) {
+		return ret;
+	}
+
 	/* Ensure we have "inherit acls = yes" if we're
 	 * using this module. */
 	DEBUG(2,("connect_acl_xattr: setting 'inherit acls = true' "
@@ -226,8 +197,10 @@
 
 static struct vfs_fn_pointers vfs_acl_xattr_fns = {
 	.connect_fn = connect_acl_xattr,
+	.opendir = opendir_acl_common,
 	.mkdir = mkdir_acl_common,
 	.open = open_acl_common,
+	.create_file = create_file_acl_common,
 	.fget_nt_acl = fget_nt_acl_common,
 	.get_nt_acl = get_nt_acl_common,
 	.fset_nt_acl = fset_nt_acl_common,

Modified: branches/samba/experimental/source3/modules/vfs_afsacl.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_afsacl.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_afsacl.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1065,14 +1065,19 @@
 			  const char *service, 
 			  const char *user)
 {
-			const char *spc;
+	const char *spc;
+	int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
 
+	if (ret < 0) {
+		return ret;
+	}
+
 	spc = lp_parm_const_string(SNUM(handle->conn), "afsacl", "space", "%");
 
 	if (spc != NULL)
 		space_replacement = spc[0];
-	
-	return SMB_VFS_NEXT_CONNECT(handle, service, user);
+
+	return 0;
 }
 
 static struct vfs_fn_pointers vfs_afsacl_fns = {

Modified: branches/samba/experimental/source3/modules/vfs_audit.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_audit.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_audit.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -78,15 +78,18 @@
 static int audit_connect(vfs_handle_struct *handle, const char *svc, const char *user)
 {
 	int result;
-	
+
+	result = SMB_VFS_NEXT_CONNECT(handle, svc, user);
+	if (result < 0) {
+		return result;
+	}
+
 	openlog("smbd_audit", LOG_PID, audit_syslog_facility(handle));
 
 	syslog(audit_syslog_priority(handle), "connect to service %s by user %s\n", 
 	       svc, user);
 
-	result = SMB_VFS_NEXT_CONNECT(handle, svc, user);
-
-	return result;
+	return 0;
 }
 
 static void audit_disconnect(vfs_handle_struct *handle)

Modified: branches/samba/experimental/source3/modules/vfs_cacheprime.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_cacheprime.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_cacheprime.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -89,6 +89,8 @@
                 const char *                service,
                 const char *                user)
 {
+	int ret;
+
         module_debug = lp_parm_int(SNUM(handle->conn), MODULE, "debug", 100);
         if (g_readbuf) {
                 /* Only allocate g_readbuf once. If the config changes and
@@ -98,6 +100,11 @@
                 return SMB_VFS_NEXT_CONNECT(handle, service, user);
         }
 
+	ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
+	if (ret < 0) {
+		return ret;
+	}
+
         g_readsz = conv_str_size(lp_parm_const_string(SNUM(handle->conn),
                                         MODULE, "rsize", NULL));
 
@@ -118,7 +125,7 @@
                 g_readsz = 0;
         }
 
-        return SMB_VFS_NEXT_CONNECT(handle, service, user);
+        return 0;
 }
 
 static ssize_t cprime_sendfile(

Modified: branches/samba/experimental/source3/modules/vfs_commit.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_commit.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_commit.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -162,8 +162,14 @@
         const char *                service,
         const char *                user)
 {
+	int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
+
+	if (ret < 0) {
+		return ret;
+	}
+
         module_debug = lp_parm_int(SNUM(handle->conn), MODULE, "debug", 100);
-        return SMB_VFS_NEXT_CONNECT(handle, service, user);
+        return 0;
 }
 
 static int commit_open(

Modified: branches/samba/experimental/source3/modules/vfs_default.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_default.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_default.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -487,7 +487,7 @@
 	int ifd = -1;
 	int ofd = -1;
 
-	if (sys_lstat (source, &source_stats) == -1)
+	if (sys_lstat(source, &source_stats, false) == -1)
 		return -1;
 
 	if (!S_ISREG (source_stats.st_ex_mode))
@@ -540,13 +540,35 @@
 		return -1;
 
 	/* Try to copy the old file's modtime and access time.  */
+#if defined(HAVE_UTIMENSAT)
 	{
+		struct timespec ts[2];
+
+		ts[0] = source_stats.st_ex_atime;
+		ts[1] = source_stats.st_ex_mtime;
+		utimensat(AT_FDCWD, dest, ts, AT_SYMLINK_NOFOLLOW);
+	}
+#elif defined(HAVE_UTIMES)
+	{
+		struct timeval tv[2];
+
+		tv[0] = convert_timespec_to_timeval(source_stats.st_ex_atime);
+		tv[1] = convert_timespec_to_timeval(source_stats.st_ex_mtime);
+#ifdef HAVE_LUTIMES
+		lutimes(dest, tv);
+#else
+		utimes(dest, tv);
+#endif
+	}
+#elif defined(HAVE_UTIME)
+	{
 		struct utimbuf tv;
 
 		tv.actime = convert_timespec_to_time_t(source_stats.st_ex_atime);
 		tv.modtime = convert_timespec_to_time_t(source_stats.st_ex_mtime);
 		utime(dest, &tv);
 	}
+#endif
 
 	if (unlink (source) == -1)
 		return -1;
@@ -615,7 +637,8 @@
 		goto out;
 	}
 
-	result = sys_stat(smb_fname->base_name, &smb_fname->st);
+	result = sys_stat(smb_fname->base_name, &smb_fname->st,
+			  lp_fake_dir_create_times(SNUM(handle->conn)));
  out:
 	END_PROFILE(syscall_stat);
 	return result;
@@ -626,7 +649,8 @@
 	int result;
 
 	START_PROFILE(syscall_fstat);
-	result = sys_fstat(fsp->fh->fd, sbuf);
+	result = sys_fstat(fsp->fh->fd,
+			   sbuf, lp_fake_dir_create_times(SNUM(handle->conn)));
 	END_PROFILE(syscall_fstat);
 	return result;
 }
@@ -643,7 +667,8 @@
 		goto out;
 	}
 
-	result = sys_lstat(smb_fname->base_name, &smb_fname->st);
+	result = sys_lstat(smb_fname->base_name, &smb_fname->st,
+			   lp_fake_dir_create_times(SNUM(handle->conn)));
  out:
 	END_PROFILE(syscall_lstat);
 	return result;
@@ -912,6 +937,9 @@
 	SMB_OFF_T currpos = SMB_VFS_LSEEK(fsp, 0, SEEK_CUR);
 	unsigned char zero_space[4096];
 	SMB_OFF_T space_to_write;
+	uint64_t space_avail;
+	uint64_t bsize,dfree,dsize;
+	int ret;
 
 	if (currpos == -1)
 		return -1;
@@ -919,8 +947,6 @@
 	if (SMB_VFS_FSTAT(fsp, &st) == -1)
 		return -1;
 
-	space_to_write = len - st.st_ex_size;
-
 #ifdef S_ISFIFO
 	if (S_ISFIFO(st.st_ex_mode))
 		return 0;
@@ -933,28 +959,39 @@
 	if (st.st_ex_size > len)
 		return sys_ftruncate(fsp->fh->fd, len);
 
-	/* available disk space is enough or not? */
-	if (lp_strict_allocate(SNUM(fsp->conn))){
-		uint64_t space_avail;
-		uint64_t bsize,dfree,dsize;
+	space_to_write = len - st.st_ex_size;
 
-		space_avail = get_dfree_info(fsp->conn,
-					     fsp->fsp_name->base_name, false,
-					     &bsize, &dfree, &dsize);
-		/* space_avail is 1k blocks */
-		if (space_avail == (uint64_t)-1 ||
-				((uint64_t)space_to_write/1024 > space_avail) ) {
-			errno = ENOSPC;
-			return -1;
-		}
+	/* for allocation try posix_fallocate first. This can fail on some
+	   platforms e.g. when the filesystem doesn't support it and no
+	   emulation is being done by the libc (like on AIX with JFS1). In that
+	   case we do our own emulation. posix_fallocate implementations can
+	   return ENOTSUP or EINVAL in cases like that. */
+	ret = sys_posix_fallocate(fsp->fh->fd, st.st_ex_size, space_to_write);
+	if (ret == ENOSPC) {
+		errno = ENOSPC;
+		return -1;
 	}
+	if (ret == 0) {
+		return 0;
+	}
+	DEBUG(10,("strict_allocate_ftruncate: sys_posix_fallocate failed with "
+		"error %d. Falling back to slow manual allocation\n", ret));
 
+	/* available disk space is enough or not? */
+	space_avail = get_dfree_info(fsp->conn,
+				     fsp->fsp_name->base_name, false,
+				     &bsize,&dfree,&dsize);
+	/* space_avail is 1k blocks */
+	if (space_avail == (uint64_t)-1 ||
+			((uint64_t)space_to_write/1024 > space_avail) ) {
+		errno = ENOSPC;
+		return -1;
+	}
+
 	/* Write out the real space on disk. */
 	if (SMB_VFS_LSEEK(fsp, st.st_ex_size, SEEK_SET) != st.st_ex_size)
 		return -1;
 
-	space_to_write = len - st.st_ex_size;
-
 	memset(zero_space, '\0', sizeof(zero_space));
 	while ( space_to_write > 0) {
 		SMB_OFF_T retlen;

Modified: branches/samba/experimental/source3/modules/vfs_extd_audit.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_extd_audit.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_extd_audit.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -80,8 +80,12 @@
 
 static int audit_connect(vfs_handle_struct *handle, const char *svc, const char *user)
 {
-	int result;
+	int result = SMB_VFS_NEXT_CONNECT(handle, svc, user);
 
+	if (result < 0) {
+		return result;
+	}
+
 	openlog("smbd_audit", LOG_PID, audit_syslog_facility(handle));
 
 	if (lp_syslog() > 0) {
@@ -92,9 +96,7 @@
 	DEBUG(10, ("Connected to service %s as user %s\n",
 	       svc, user));
 
-	result = SMB_VFS_NEXT_CONNECT(handle, svc, user);
-
-	return result;
+	return 0;
 }
 
 static void audit_disconnect(vfs_handle_struct *handle)

Modified: branches/samba/experimental/source3/modules/vfs_fileid.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_fileid.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_fileid.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -181,9 +181,15 @@
 {
 	struct fileid_handle_data *data;
 	const char *algorithm;
+	int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
 
+	if (ret < 0) {
+		return ret;
+	}
+
 	data = talloc_zero(handle->conn, struct fileid_handle_data);
 	if (!data) {
+		SMB_VFS_NEXT_DISCONNECT(handle);
 		DEBUG(0, ("talloc_zero() failed\n"));
 		return -1;
 	}
@@ -203,6 +209,7 @@
 	} else if (strcmp("fsid", algorithm) == 0) {
 		data->device_mapping_fn	= fileid_device_mapping_fsid;
 	} else {
+		SMB_VFS_NEXT_DISCONNECT(handle);
 		DEBUG(0,("fileid_connect(): unknown algorithm[%s]\n", algorithm));
 		return -1;
 	}
@@ -214,7 +221,7 @@
 	DEBUG(10, ("fileid_connect(): connect to service[%s] with algorithm[%s]\n",
 		service, algorithm));
 
-	return SMB_VFS_NEXT_CONNECT(handle, service, user);
+	return 0;
 }
 
 static void fileid_disconnect(struct vfs_handle_struct *handle)

Modified: branches/samba/experimental/source3/modules/vfs_full_audit.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_full_audit.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_full_audit.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -606,12 +606,14 @@
 	const char *none[] = { NULL };
 	const char *all [] = { "all" };
 
-	if (!handle) {
-		return -1;
+	result = SMB_VFS_NEXT_CONNECT(handle, svc, user);
+	if (result < 0) {
+		return result;
 	}
 
 	pd = SMB_MALLOC_P(struct vfs_full_audit_private_data);
 	if (!pd) {
+		SMB_VFS_NEXT_DISCONNECT(handle);
 		return -1;
 	}
 	ZERO_STRUCTP(pd);
@@ -631,12 +633,10 @@
 	SMB_VFS_HANDLE_SET_DATA(handle, pd, free_private_data,
 				struct vfs_full_audit_private_data, return -1);
 
-	result = SMB_VFS_NEXT_CONNECT(handle, svc, user);
-
 	do_log(SMB_VFS_OP_CONNECT, True, handle,
 	       "%s", svc);
 
-	return result;
+	return 0;
 }
 
 static void smb_full_audit_disconnect(vfs_handle_struct *handle)

Modified: branches/samba/experimental/source3/modules/vfs_netatalk.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_netatalk.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_netatalk.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -29,8 +29,11 @@
 /* atalk functions */
 
 static int atalk_build_paths(TALLOC_CTX *ctx, const char *path,
-  const char *fname, char **adbl_path, char **orig_path, 
-  SMB_STRUCT_STAT *adbl_info, SMB_STRUCT_STAT *orig_info);
+			     const char *fname,
+			     char **adbl_path, char **orig_path,
+			     SMB_STRUCT_STAT *adbl_info,
+			     SMB_STRUCT_STAT *orig_info,
+			     bool fake_dir_create_times);
 
 static int atalk_unlink_file(const char *path);
 
@@ -52,9 +55,12 @@
 	return ptr;
 }
 
-static int atalk_build_paths(TALLOC_CTX *ctx, const char *path, const char *fname,
-                              char **adbl_path, char **orig_path,
-                              SMB_STRUCT_STAT *adbl_info, SMB_STRUCT_STAT *orig_info)
+static int atalk_build_paths(TALLOC_CTX *ctx, const char *path,
+			     const char *fname,
+			     char **adbl_path, char **orig_path,
+			     SMB_STRUCT_STAT *adbl_info,
+			     SMB_STRUCT_STAT *orig_info,
+			     bool fake_dir_create_times)
 {
 	int ptr0 = 0;
 	int ptr1 = 0;
@@ -80,7 +86,7 @@
 	/* get pointer to last '/' */
 	ptr1 = atalk_get_path_ptr(*orig_path);
 
-	sys_lstat(*orig_path, orig_info);
+	sys_lstat(*orig_path, orig_info, fake_dir_create_times);
 
 	if (S_ISDIR(orig_info->st_ex_mode)) {
 		*adbl_path = talloc_asprintf(ctx, "%s/%s/%s/", 
@@ -95,7 +101,7 @@
 #if 0
 	DEBUG(3, ("ATALK: DEBUG:\n%s\n%s\n", *orig_path, *adbl_path)); 
 #endif
-	sys_lstat(*adbl_path, adbl_info);
+	sys_lstat(*adbl_path, adbl_info, fake_dir_create_times);
 	return 0;
 }
 
@@ -243,7 +249,7 @@
 
 	if (atalk_build_paths(talloc_tos(), handle->conn->origpath, oldname,
 			      &adbl_path, &orig_path, &adbl_info,
-			      &orig_info) != 0)
+			      &orig_info, false) != 0)
 		goto exit_rename;
 
 	if (S_ISDIR(orig_info.st_ex_mode) || S_ISREG(orig_info.st_ex_mode)) {
@@ -304,7 +310,7 @@
 
 	if (atalk_build_paths(talloc_tos(), handle->conn->origpath, path,
 			      &adbl_path, &orig_path,
-	  &adbl_info, &orig_info) != 0)
+			      &adbl_info, &orig_info, false) != 0)
 		goto exit_unlink;
 
 	if (S_ISDIR(orig_info.st_ex_mode) || S_ISREG(orig_info.st_ex_mode)) {
@@ -337,8 +343,9 @@
 	if (!(ctx = talloc_init("chmod_file")))
 		return ret;
 
-	if (atalk_build_paths(ctx, handle->conn->origpath, path, &adbl_path, &orig_path,
-	  &adbl_info, &orig_info) != 0)
+	if (atalk_build_paths(ctx, handle->conn->origpath, path, &adbl_path,
+			      &orig_path, &adbl_info, &orig_info,
+			      false) != 0)
 		goto exit_chmod;
 
 	if (!S_ISDIR(orig_info.st_ex_mode) && !S_ISREG(orig_info.st_ex_mode)) {
@@ -369,8 +376,9 @@
 	if (!(ctx = talloc_init("chown_file")))
 		return ret;
 
-	if (atalk_build_paths(ctx, handle->conn->origpath, path, &adbl_path, &orig_path,
-	  &adbl_info, &orig_info) != 0)
+	if (atalk_build_paths(ctx, handle->conn->origpath, path,
+			      &adbl_path, &orig_path,
+			      &adbl_info, &orig_info, false) != 0)
 		goto exit_chown;
 
 	if (!S_ISDIR(orig_info.st_ex_mode) && !S_ISREG(orig_info.st_ex_mode)) {
@@ -403,8 +411,9 @@
 	if (!(ctx = talloc_init("lchown_file")))
 		return ret;
 
-	if (atalk_build_paths(ctx, handle->conn->origpath, path, &adbl_path, &orig_path,
-	  &adbl_info, &orig_info) != 0)
+	if (atalk_build_paths(ctx, handle->conn->origpath, path,
+			      &adbl_path, &orig_path,
+			      &adbl_info, &orig_info, false) != 0)
 		goto exit_lchown;
 
 	if (!S_ISDIR(orig_info.st_ex_mode) && !S_ISREG(orig_info.st_ex_mode)) {

Modified: branches/samba/experimental/source3/modules/vfs_onefs.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_onefs.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_onefs.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -28,15 +28,20 @@
 static int onefs_connect(struct vfs_handle_struct *handle, const char *service,
 			 const char *user)
 {
-	int ret;
+	int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
 
+	if (ret < 0) {
+		return ret;
+	}
+
 	ret = onefs_load_config(handle->conn);
 	if (ret) {
+		SMB_VFS_NEXT_DISCONNECT(handle);
 		DEBUG(3, ("Load config failed: %s\n", strerror(errno)));
 		return ret;
 	}
 
-	return SMB_VFS_NEXT_CONNECT(handle, service, user);
+	return 0;
 }
 
 static int onefs_mkdir(vfs_handle_struct *handle, const char *path,

Modified: branches/samba/experimental/source3/modules/vfs_prealloc.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_prealloc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_prealloc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -101,10 +101,16 @@
                 const char *                service,
                 const char *                user)
 {
-	    module_debug = lp_parm_int(SNUM(handle->conn),
+	int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
+
+	if (ret < 0) {
+		return ret;
+	}
+
+	module_debug = lp_parm_int(SNUM(handle->conn),
 					MODULE, "debug", 100);
 
-	    return SMB_VFS_NEXT_CONNECT(handle, service, user);
+	return 0;
 }
 
 static int prealloc_open(vfs_handle_struct* handle,

Modified: branches/samba/experimental/source3/modules/vfs_readahead.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_readahead.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_readahead.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -127,8 +127,15 @@
 				const char *service,
 				const char *user)
 {
-	struct readahead_data *rhd = SMB_MALLOC_P(struct readahead_data);
+	struct readahead_data *rhd;
+	int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
+
+	if (ret < 0) {
+		return ret;
+	}
+	rhd = SMB_MALLOC_P(struct readahead_data);
 	if (!rhd) {
+		SMB_VFS_NEXT_DISCONNECT(handle);
 		DEBUG(0,("readahead_connect: out of memory\n"));
 		return -1;
 	}
@@ -152,7 +159,7 @@
 
 	handle->data = (void *)rhd;
 	handle->free_data = free_readahead_data;
-	return SMB_VFS_NEXT_CONNECT(handle, service, user);
+	return 0;
 }
 
 static struct vfs_fn_pointers vfs_readahead_fns = {

Modified: branches/samba/experimental/source3/modules/vfs_readonly.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_readonly.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_readonly.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -62,7 +62,12 @@
   const char **period = lp_parm_string_list(SNUM(handle->conn),
 					     (handle->param ? handle->param : MODULE_NAME),
 					     "period", period_def); 
+  int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
 
+  if (ret < 0) {
+    return ret;
+  }
+
   if (period && period[0] && period[1]) {
     int i;
     time_t current_time = time(NULL);
@@ -85,11 +90,11 @@
       conn->vuid_cache.next_entry = 0;
     }
 
-    return SMB_VFS_NEXT_CONNECT(handle, service, user);
+    return 0;
 
   } else {
     
-    return 1;
+    return 0;
     
   }
 }

Modified: branches/samba/experimental/source3/modules/vfs_recycle.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_recycle.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_recycle.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -38,10 +38,16 @@
 
 static int recycle_connect(vfs_handle_struct *handle, const char *service, const char *user)
 {
+	int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
+
+	if (ret < 0) {
+		return ret;
+	}
+
 	DEBUG(10,("recycle_connect() connect to service[%s] as user[%s].\n",
 		service,user));
 
-	return SMB_VFS_NEXT_CONNECT(handle, service, user);
+	return 0;
 }
 
 static void recycle_disconnect(vfs_handle_struct *handle)

Modified: branches/samba/experimental/source3/modules/vfs_smb_traffic_analyzer.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_smb_traffic_analyzer.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_smb_traffic_analyzer.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -277,7 +277,12 @@
 	uint16_t port = (st == UNIX_DOMAIN_SOCKET) ? 0 :
 				atoi( lp_parm_const_string(SNUM(conn),
 				"smb_traffic_analyzer", "port", "9430"));
+	int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
 
+	if (ret < 0) {
+		return ret;
+	}
+
 	/* Are we already connected ? */
 	for (rf_sock = sock_list; rf_sock; rf_sock = rf_sock->next) {
 		if (port == rf_sock->port &&
@@ -294,11 +299,13 @@
 		/* New connection. */
 		rf_sock = TALLOC_ZERO_P(NULL, struct refcounted_sock);
 		if (rf_sock == NULL) {
+			SMB_VFS_NEXT_DISCONNECT(handle);
 			errno = ENOMEM;
 			return -1;
 		}
 		rf_sock->name = talloc_strdup(rf_sock, name);
 		if (rf_sock->name == NULL) {
+			SMB_VFS_NEXT_DISCONNECT(handle);
 			TALLOC_FREE(rf_sock);
 			errno = ENOMEM;
 			return -1;
@@ -316,6 +323,7 @@
 							port);
 		}
 		if (rf_sock->sock == -1) {
+			SMB_VFS_NEXT_DISCONNECT(handle);
 			TALLOC_FREE(rf_sock);
 			return -1;
 		}
@@ -325,7 +333,7 @@
 	/* Store the private data. */
 	SMB_VFS_HANDLE_SET_DATA(handle, rf_sock, smb_traffic_analyzer_free_data,
 				struct refcounted_sock, return -1);
-	return SMB_VFS_NEXT_CONNECT(handle, service, user);
+	return 0;
 }
 
 /* VFS Functions: write, read, pread, pwrite for now */

Modified: branches/samba/experimental/source3/modules/vfs_tsmsm.c
===================================================================
--- branches/samba/experimental/source3/modules/vfs_tsmsm.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/modules/vfs_tsmsm.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -87,16 +87,24 @@
 static int tsmsm_connect(struct vfs_handle_struct *handle,
 			 const char *service,
 			 const char *user) {
-	struct tsmsm_struct *tsmd = TALLOC_ZERO_P(handle, struct tsmsm_struct);
+	struct tsmsm_struct *tsmd;
 	const char *fres;
 	const char *tsmname;
-	
+        int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
+
+	if (ret < 0) {
+		return ret;
+	}
+
+	tsmd = TALLOC_ZERO_P(handle, struct tsmsm_struct);
 	if (!tsmd) {
+		SMB_VFS_NEXT_DISCONNECT(handle);
 		DEBUG(0,("tsmsm_connect: out of memory!\n"));
 		return -1;
 	}
 
 	if (!dmapi_have_session()) {
+		SMB_VFS_NEXT_DISCONNECT(handle);
 		DEBUG(0,("tsmsm_connect: no DMAPI session for Samba is available!\n"));
 		TALLOC_FREE(tsmd);
 		return -1;
@@ -134,7 +142,7 @@
         /* Store the private data. */
         SMB_VFS_HANDLE_SET_DATA(handle, tsmd, tsmsm_free_data,
                                 struct tsmsm_struct, return -1);
-        return SMB_VFS_NEXT_CONNECT(handle, service, user); 
+        return 0;
 }
 
 static bool tsmsm_is_offline(struct vfs_handle_struct *handle, 

Modified: branches/samba/experimental/source3/param/loadparm.c
===================================================================
--- branches/samba/experimental/source3/param/loadparm.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/param/loadparm.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -259,6 +259,7 @@
 	char *szLdapGroupSuffix;
 	int ldap_ssl;
 	bool ldap_ssl_ads;
+	int ldap_deref;
 	int ldap_follow_referral;
 	char *szLdapSuffix;
 	char *szLdapAdminDn;
@@ -357,7 +358,6 @@
 	int cups_connection_timeout;
 	char *szSMBPerfcountModule;
 	bool bMapUntrustedToDomain;
-	bool bFakeDirCreateTimes;
 };
 
 static struct global Globals;
@@ -475,6 +475,7 @@
 	bool bDosFilemode;
 	bool bDosFiletimes;
 	bool bDosFiletimeResolution;
+	bool bFakeDirCreateTimes;
 	bool bBlockingLocks;
 	bool bInheritPerms;
 	bool bInheritACLS;
@@ -618,6 +619,7 @@
 	False,			/* bDosFilemode */
 	True,			/* bDosFiletimes */
 	False,			/* bDosFiletimeResolution */
+	False,			/* bFakeDirCreateTimes */
 	True,			/* bBlockingLocks */
 	False,			/* bInheritPerms */
 	False,			/* bInheritACLS */
@@ -745,6 +747,20 @@
 	{-1, NULL}
 };
 
+/* LDAP Dereferencing Alias types */
+#define SAMBA_LDAP_DEREF_NEVER		0
+#define SAMBA_LDAP_DEREF_SEARCHING	1
+#define SAMBA_LDAP_DEREF_FINDING	2
+#define SAMBA_LDAP_DEREF_ALWAYS		3
+
+static const struct enum_list enum_ldap_deref[] = {
+	{SAMBA_LDAP_DEREF_NEVER, "never"},
+	{SAMBA_LDAP_DEREF_SEARCHING, "searching"},
+	{SAMBA_LDAP_DEREF_FINDING, "finding"},
+	{SAMBA_LDAP_DEREF_ALWAYS, "always"},
+	{-1, "auto"}
+};
+
 static const struct enum_list enum_ldap_passwd_sync[] = {
 	{LDAP_PASSWD_SYNC_OFF, "no"},
 	{LDAP_PASSWD_SYNC_OFF, "off"},
@@ -2502,7 +2518,7 @@
 		.ptr		= &sDefault.iWriteCacheSize,
 		.special	= NULL,
 		.enum_list	= NULL,
-		.flags		= FLAG_ADVANCED | FLAG_SHARE | FLAG_DEPRECATED,
+		.flags		= FLAG_ADVANCED | FLAG_SHARE,
 	},
 	{
 		.label		= "name cache timeout",
@@ -3670,6 +3686,15 @@
 		.flags		= FLAG_ADVANCED,
 	},
 	{
+		.label		= "ldap deref",
+		.type		= P_ENUM,
+		.p_class	= P_GLOBAL,
+		.ptr		= &Globals.ldap_deref,
+		.special	= NULL,
+		.enum_list	= enum_ldap_deref,
+		.flags		= FLAG_ADVANCED,
+	},
+	{
 		.label		= "ldap follow referral",
 		.type		= P_ENUM,
 		.p_class	= P_GLOBAL,
@@ -4301,8 +4326,8 @@
 	{
 		.label		= "fake directory create times",
 		.type		= P_BOOL,
-		.p_class	= P_GLOBAL,
-		.ptr		= &Globals.bFakeDirCreateTimes,
+		.p_class	= P_LOCAL,
+		.ptr		= &sDefault.bFakeDirCreateTimes,
 		.special	= NULL,
 		.enum_list	= NULL,
 		.flags		= FLAG_ADVANCED | FLAG_GLOBAL,
@@ -4738,6 +4763,22 @@
 #endif
 #endif
 
+	if (sysctl_max < MIN_OPEN_FILES_WINDOWS) {
+		DEBUG(2,("max_open_files: sysctl_max (%d) below "
+			"minimum Windows limit (%d)\n",
+			sysctl_max,
+			MIN_OPEN_FILES_WINDOWS));
+		sysctl_max = MIN_OPEN_FILES_WINDOWS;
+	}
+
+	if (rlimit_max < MIN_OPEN_FILES_WINDOWS) {
+		DEBUG(2,("rlimit_max: rlimit_max (%d) below "
+			"minimum Windows limit (%d)\n",
+			rlimit_max,
+			MIN_OPEN_FILES_WINDOWS));
+		rlimit_max = MIN_OPEN_FILES_WINDOWS;
+	}
+
 	return MIN(sysctl_max, rlimit_max);
 }
 
@@ -5047,6 +5088,7 @@
 	string_set(&Globals.szLdapAdminDn, "");
 	Globals.ldap_ssl = LDAP_SSL_START_TLS;
 	Globals.ldap_ssl_ads = False;
+	Globals.ldap_deref = -1;
 	Globals.ldap_passwd_sync = LDAP_PASSWD_SYNC_OFF;
 	Globals.ldap_delete_dn = False;
 	Globals.ldap_replication_sleep = 1000; /* wait 1 sec for replication */
@@ -5401,6 +5443,7 @@
 FN_GLOBAL_STRING(lp_ldap_admin_dn, &Globals.szLdapAdminDn)
 FN_GLOBAL_INTEGER(lp_ldap_ssl, &Globals.ldap_ssl)
 FN_GLOBAL_BOOL(lp_ldap_ssl_ads, &Globals.ldap_ssl_ads)
+FN_GLOBAL_INTEGER(lp_ldap_deref, &Globals.ldap_deref)
 FN_GLOBAL_INTEGER(lp_ldap_follow_referral, &Globals.ldap_follow_referral)
 FN_GLOBAL_INTEGER(lp_ldap_passwd_sync, &Globals.ldap_passwd_sync)
 FN_GLOBAL_BOOL(lp_ldap_delete_dn, &Globals.ldap_delete_dn)
@@ -5629,7 +5672,7 @@
 FN_LOCAL_BOOL(lp_dos_filemode, bDosFilemode)
 FN_LOCAL_BOOL(lp_dos_filetimes, bDosFiletimes)
 FN_LOCAL_BOOL(lp_dos_filetime_resolution, bDosFiletimeResolution)
-FN_GLOBAL_BOOL(lp_fake_dir_create_times, &Globals.bFakeDirCreateTimes)
+FN_LOCAL_BOOL(lp_fake_dir_create_times, bFakeDirCreateTimes)
 FN_LOCAL_BOOL(lp_blocking_locks, bBlockingLocks)
 FN_LOCAL_BOOL(lp_inherit_perms, bInheritPerms)
 FN_LOCAL_BOOL(lp_inherit_acls, bInheritACLS)
@@ -8550,7 +8593,7 @@
 	/* Ensure the owner of the usershare file has permission to share
 	   this directory. */
 
-	if (sys_stat(sharepath, &sbuf) == -1) {
+	if (sys_stat(sharepath, &sbuf, false) == -1) {
 		DEBUG(2,("parse_usershare_file: share %s : stat failed on path %s. %s\n",
 			servicename, sharepath, strerror(errno) ));
 		sys_closedir(dp);
@@ -8622,7 +8665,7 @@
 	/* Minimize the race condition by doing an lstat before we
 	   open and fstat. Ensure this isn't a symlink link. */
 
-	if (sys_lstat(fname, &lsbuf) != 0) {
+	if (sys_lstat(fname, &lsbuf, false) != 0) {
 		DEBUG(0,("process_usershare_file: stat of %s failed. %s\n",
 			fname, strerror(errno) ));
 		SAFE_FREE(fname);
@@ -8675,7 +8718,7 @@
 	}
 
 	/* Now fstat to be *SURE* it's a regular file. */
-	if (sys_fstat(fd, &sbuf) != 0) {
+	if (sys_fstat(fd, &sbuf, false) != 0) {
 		close(fd);
 		DEBUG(0,("process_usershare_file: fstat of %s failed. %s\n",
 			fname, strerror(errno) ));
@@ -8793,7 +8836,7 @@
 		return false;
 	}
 
-	if (sys_lstat(fname, &lsbuf) != 0) {
+	if (sys_lstat(fname, &lsbuf, false) != 0) {
 		SAFE_FREE(fname);
 		return false;
 	}
@@ -8823,7 +8866,7 @@
 		return -1;
 	}
 
-	if (sys_stat(usersharepath, &sbuf) != 0) {
+	if (sys_stat(usersharepath, &sbuf, false) != 0) {
 		DEBUG(0,("load_usershare_service: stat of %s failed. %s\n",
 			usersharepath, strerror(errno) ));
 		return -1;
@@ -8900,7 +8943,7 @@
 		return lp_numservices();
 	}
 
-	if (sys_stat(usersharepath, &sbuf) != 0) {
+	if (sys_stat(usersharepath, &sbuf, false) != 0) {
 		DEBUG(0,("load_usershare_shares: stat of %s failed. %s\n",
 			usersharepath, strerror(errno) ));
 		return ret;

Modified: branches/samba/experimental/source3/passdb/pdb_smbpasswd.c
===================================================================
--- branches/samba/experimental/source3/passdb/pdb_smbpasswd.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/passdb/pdb_smbpasswd.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -276,7 +276,7 @@
 			 * prevent infinate loops. JRA.
 			 */
 
-			if (sys_stat(pfile,&sbuf1) != 0) {
+			if (sys_stat(pfile, &sbuf1, false) != 0) {
 				DEBUG(0, ("startsmbfilepwent_internal: unable to stat file %s. \
 Error was %s\n", pfile, strerror(errno)));
 				pw_file_unlock(fileno(fp), lock_depth);
@@ -284,7 +284,7 @@
 				return NULL;
 			}
 
-			if (sys_fstat(fileno(fp),&sbuf2) != 0) {
+			if (sys_fstat(fileno(fp), &sbuf2, false) != 0) {
 				DEBUG(0, ("startsmbfilepwent_internal: unable to fstat file %s. \
 Error was %s\n", pfile, strerror(errno)));
 				pw_file_unlock(fileno(fp), lock_depth);

Modified: branches/samba/experimental/source3/printing/nt_printing.c
===================================================================
--- branches/samba/experimental/source3/printing/nt_printing.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/printing/nt_printing.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1718,8 +1718,34 @@
 }
 
 /****************************************************************************
+ This function sucks and should be replaced. JRA.
 ****************************************************************************/
 
+static void convert_level_8_to_level3(TALLOC_CTX *mem_ctx,
+				      struct spoolss_AddDriverInfo3 *dst,
+				      const struct spoolss_DriverInfo8 *src)
+{
+	dst->version		= src->version;
+	dst->driver_name	= src->driver_name;
+	dst->architecture 	= src->architecture;
+	dst->driver_path	= src->driver_path;
+	dst->data_file		= src->data_file;
+	dst->config_file	= src->config_file;
+	dst->help_file		= src->help_file;
+	dst->monitor_name	= src->monitor_name;
+	dst->default_datatype	= src->default_datatype;
+	if (src->dependent_files) {
+		dst->dependent_files = talloc_zero(mem_ctx, struct spoolss_StringArray);
+		if (!dst->dependent_files) return;
+		dst->dependent_files->string = src->dependent_files;
+	} else {
+		dst->dependent_files = NULL;
+	}
+}
+
+/****************************************************************************
+****************************************************************************/
+
 static WERROR move_driver_file_to_download_area(TALLOC_CTX *mem_ctx,
 						connection_struct *conn,
 						const char *driver_file,
@@ -2120,16 +2146,20 @@
 /****************************************************************************
 ****************************************************************************/
 
-static uint32 add_a_printer_driver_6(struct spoolss_AddDriverInfo6 *driver)
+static uint32_t add_a_printer_driver_8(struct spoolss_DriverInfo8 *driver)
 {
+	TALLOC_CTX *mem_ctx = talloc_new(talloc_tos());
 	struct spoolss_AddDriverInfo3 info3;
+	uint32_t ret;
 
-	convert_level_6_to_level3(&info3, driver);
+	convert_level_8_to_level3(mem_ctx, &info3, driver);
 
-	return add_a_printer_driver_3(&info3);
+	ret = add_a_printer_driver_3(&info3);
+	talloc_free(mem_ctx);
+
+	return ret;
 }
 
-
 /****************************************************************************
 ****************************************************************************/
 
@@ -3833,6 +3863,13 @@
 		goto fail;
 	}
 
+	info->data = TALLOC_ZERO_P(info, NT_PRINTER_DATA);
+	if (!info->data) {
+		goto fail;
+	}
+
+	add_new_printer_key(info->data, SPOOL_PRINTERDATA_KEY);
+
 	return WERR_OK;
 
 fail:
@@ -4595,101 +4632,166 @@
 
 /****************************************************************************
 ****************************************************************************/
+
 uint32_t add_a_printer_driver(TALLOC_CTX *mem_ctx,
 			      struct spoolss_AddDriverInfoCtr *r,
 			      char **driver_name,
 			      uint32_t *version)
 {
-	uint32 result;
+	struct spoolss_DriverInfo8 info8;
+
+	ZERO_STRUCT(info8);
+
 	DEBUG(10,("adding a printer at level [%d]\n", r->level));
 
 	switch (r->level) {
 	case 3:
-		result = add_a_printer_driver_3(r->info.info3);
-		if (result == 0) {
-			*driver_name = talloc_strdup(mem_ctx, r->info.info3->driver_name);
-			if (!*driver_name) {
-				return -1;
-			}
-			*version = r->info.info3->version;
+		info8.version		= r->info.info3->version;
+		info8.driver_name	= r->info.info3->driver_name;
+		info8.architecture	= r->info.info3->architecture;
+		info8.driver_path	= r->info.info3->driver_path;
+		info8.data_file		= r->info.info3->data_file;
+		info8.config_file	= r->info.info3->config_file;
+		info8.help_file		= r->info.info3->help_file;
+		info8.monitor_name	= r->info.info3->monitor_name;
+		info8.default_datatype	= r->info.info3->default_datatype;
+		if (r->info.info3->dependent_files && r->info.info3->dependent_files->string) {
+			info8.dependent_files	= r->info.info3->dependent_files->string;
 		}
 		break;
 	case 6:
-		result = add_a_printer_driver_6(r->info.info6);
-		if (result == 0) {
-			*driver_name = talloc_strdup(mem_ctx, r->info.info6->driver_name);
-			if (!*driver_name) {
-				return -1;
-			}
-			*version = r->info.info6->version;
+		info8.version		= r->info.info6->version;
+		info8.driver_name	= r->info.info6->driver_name;
+		info8.architecture	= r->info.info6->architecture;
+		info8.driver_path	= r->info.info6->driver_path;
+		info8.data_file		= r->info.info6->data_file;
+		info8.config_file	= r->info.info6->config_file;
+		info8.help_file		= r->info.info6->help_file;
+		info8.monitor_name	= r->info.info6->monitor_name;
+		info8.default_datatype	= r->info.info6->default_datatype;
+		if (r->info.info6->dependent_files && r->info.info6->dependent_files->string) {
+			info8.dependent_files	= r->info.info6->dependent_files->string;
 		}
+		info8.driver_date	= r->info.info6->driver_date;
+		info8.driver_version	= r->info.info6->driver_version;
+		info8.manufacturer_name = r->info.info6->manufacturer_name;
+		info8.manufacturer_url	= r->info.info6->manufacturer_url;
+		info8.hardware_id	= r->info.info6->hardware_id;
+		info8.provider		= r->info.info6->provider;
 		break;
+	case 8:
+		info8.version		= r->info.info8->version;
+		info8.driver_name	= r->info.info8->driver_name;
+		info8.architecture	= r->info.info8->architecture;
+		info8.driver_path	= r->info.info8->driver_path;
+		info8.data_file		= r->info.info8->data_file;
+		info8.config_file	= r->info.info8->config_file;
+		info8.help_file		= r->info.info8->help_file;
+		info8.monitor_name	= r->info.info8->monitor_name;
+		info8.default_datatype	= r->info.info8->default_datatype;
+		if (r->info.info8->dependent_files && r->info.info8->dependent_files->string) {
+			info8.dependent_files	= r->info.info8->dependent_files->string;
+		}
+		if (r->info.info8->previous_names && r->info.info8->previous_names->string) {
+			info8.previous_names	= r->info.info8->previous_names->string;
+		}
+		info8.driver_date	= r->info.info8->driver_date;
+		info8.driver_version	= r->info.info8->driver_version;
+		info8.manufacturer_name = r->info.info8->manufacturer_name;
+		info8.manufacturer_url	= r->info.info8->manufacturer_url;
+		info8.hardware_id	= r->info.info8->hardware_id;
+		info8.provider		= r->info.info8->provider;
+		info8.print_processor	= r->info.info8->print_processor;
+		info8.vendor_setup	= r->info.info8->vendor_setup;
+		if (r->info.info8->color_profiles && r->info.info8->color_profiles->string) {
+			info8.color_profiles = r->info.info8->color_profiles->string;
+		}
+		info8.inf_path		= r->info.info8->inf_path;
+		info8.printer_driver_attributes = r->info.info8->printer_driver_attributes;
+		if (r->info.info8->core_driver_dependencies && r->info.info8->core_driver_dependencies->string) {
+			info8.core_driver_dependencies = r->info.info8->core_driver_dependencies->string;
+		}
+		info8.min_inbox_driver_ver_date = r->info.info8->min_inbox_driver_ver_date;
+		info8.min_inbox_driver_ver_version = r->info.info8->min_inbox_driver_ver_version;
+		break;
 	default:
-		result = 1;
-		break;
+		return -1;
 	}
 
-	return result;
+	*driver_name = talloc_strdup(mem_ctx, info8.driver_name);
+	if (!*driver_name) {
+		return -1;
+	}
+	*version = info8.version;
+
+	return add_a_printer_driver_8(&info8);
 }
+
 /****************************************************************************
 ****************************************************************************/
 
 WERROR get_a_printer_driver(TALLOC_CTX *mem_ctx,
-			    union spoolss_DriverInfo **driver_p, uint32_t level,
+			    struct spoolss_DriverInfo8 **driver,
 			    const char *drivername, const char *architecture,
 			    uint32_t version)
 {
 	WERROR result;
-	union spoolss_DriverInfo *driver;
+	struct spoolss_DriverInfo3 info3;
+	struct spoolss_DriverInfo8 *info8;
 
-	driver = talloc_zero(mem_ctx, union spoolss_DriverInfo);
-	W_ERROR_HAVE_NO_MEMORY(driver);
+	ZERO_STRUCT(info3);
 
-	switch (level) {
-		case 3:
-			/* Sometime we just want any version of the driver */
+	/* Sometime we just want any version of the driver */
 
-			if ( version == DRIVER_ANY_VERSION ) {
-				/* look for Win2k first and then for NT4 */
-				result = get_a_printer_driver_3(driver,
-								&driver->info3,
-								drivername,
-								architecture, 3);
-
-				if ( !W_ERROR_IS_OK(result) ) {
-					result = get_a_printer_driver_3(driver,
-									&driver->info3,
-									drivername,
-									architecture, 2);
-				}
-			} else {
-				result = get_a_printer_driver_3(driver,
-								&driver->info3,
-								drivername,
-								architecture,
-								version);
-			}
-			break;
-
-		default:
-			result=W_ERROR(1);
-			break;
+	if (version == DRIVER_ANY_VERSION) {
+		/* look for Win2k first and then for NT4 */
+		result = get_a_printer_driver_3(mem_ctx,
+						&info3,
+						drivername,
+						architecture, 3);
+		if (!W_ERROR_IS_OK(result)) {
+			result = get_a_printer_driver_3(mem_ctx,
+							&info3,
+							drivername,
+							architecture, 2);
+		}
+	} else {
+		result = get_a_printer_driver_3(mem_ctx,
+						&info3,
+						drivername,
+						architecture,
+						version);
 	}
 
 	if (!W_ERROR_IS_OK(result)) {
-		TALLOC_FREE(driver);
 		return result;
 	}
 
-	*driver_p = driver;
+	info8 = talloc_zero(mem_ctx, struct spoolss_DriverInfo8);
+	if (!info8) {
+		return WERR_NOMEM;
+	}
 
+	info8->version		= info3.version;
+	info8->driver_name	= info3.driver_name;
+	info8->architecture	= info3.architecture;
+	info8->driver_path	= info3.driver_path;
+	info8->data_file	= info3.data_file;
+	info8->config_file	= info3.config_file;
+	info8->help_file	= info3.help_file;
+	info8->dependent_files	= info3.dependent_files;
+	info8->monitor_name	= info3.monitor_name;
+	info8->default_datatype = info3.default_datatype;
+
+	*driver = info8;
+
 	return WERR_OK;
 }
 
 /****************************************************************************
 ****************************************************************************/
 
-uint32_t free_a_printer_driver(union spoolss_DriverInfo *driver)
+uint32_t free_a_printer_driver(struct spoolss_DriverInfo8 *driver)
 {
 	talloc_free(driver);
 	return 0;
@@ -4701,15 +4803,16 @@
   to a printer
 ****************************************************************************/
 
-bool printer_driver_in_use(const struct spoolss_DriverInfo3 *info_3)
+bool printer_driver_in_use(const struct spoolss_DriverInfo8 *r)
 {
 	int snum;
 	int n_services = lp_numservices();
 	NT_PRINTER_INFO_LEVEL *printer = NULL;
 	bool in_use = False;
 
-	if ( !info_3 )
-		return False;
+	if (!r) {
+		return false;
+	}
 
 	DEBUG(10,("printer_driver_in_use: Beginning search through ntprinters.tdb...\n"));
 
@@ -4722,7 +4825,7 @@
 		if ( !W_ERROR_IS_OK(get_a_printer(NULL, &printer, 2, lp_servicename(snum))) )
 			continue;
 
-		if (strequal(info_3->driver_name, printer->info_2->drivername))
+		if (strequal(r->driver_name, printer->info_2->drivername))
 			in_use = True;
 
 		free_a_printer( &printer, 2 );
@@ -4731,28 +4834,28 @@
 	DEBUG(10,("printer_driver_in_use: Completed search through ntprinters.tdb...\n"));
 
 	if ( in_use ) {
-		union spoolss_DriverInfo *d;
+		struct spoolss_DriverInfo8 *d;
 		WERROR werr;
 
-		DEBUG(5,("printer_driver_in_use: driver \"%s\" is currently in use\n", info_3->driver_name));
+		DEBUG(5,("printer_driver_in_use: driver \"%s\" is currently in use\n", r->driver_name));
 
 		/* we can still remove the driver if there is one of
 		   "Windows NT x86" version 2 or 3 left */
 
-		if (!strequal("Windows NT x86", info_3->architecture)) {
-			werr = get_a_printer_driver(talloc_tos(), &d, 3, info_3->driver_name, "Windows NT x86", DRIVER_ANY_VERSION);
+		if (!strequal("Windows NT x86", r->architecture)) {
+			werr = get_a_printer_driver(talloc_tos(), &d, r->driver_name, "Windows NT x86", DRIVER_ANY_VERSION);
 		}
 		else {
-			switch (info_3->version) {
+			switch (r->version) {
 			case 2:
-				werr = get_a_printer_driver(talloc_tos(), &d, 3, info_3->driver_name, "Windows NT x86", 3);
+				werr = get_a_printer_driver(talloc_tos(), &d, r->driver_name, "Windows NT x86", 3);
 				break;
 			case 3:
-				werr = get_a_printer_driver(talloc_tos(), &d, 3, info_3->driver_name, "Windows NT x86", 2);
+				werr = get_a_printer_driver(talloc_tos(), &d, r->driver_name, "Windows NT x86", 2);
 				break;
 			default:
 				DEBUG(0,("printer_driver_in_use: ERROR! unknown driver version (%d)\n",
-					info_3->version));
+					r->version));
 				werr = WERR_UNKNOWN_PRINTER_DRIVER;
 				break;
 			}
@@ -4777,7 +4880,7 @@
  Check to see if a ogiven file is in use by *info
  *********************************************************************/
 
-static bool drv_file_in_use(const char *file, const struct spoolss_DriverInfo3 *info)
+static bool drv_file_in_use(const char *file, const struct spoolss_DriverInfo8 *info)
 {
 	int i = 0;
 
@@ -4841,8 +4944,8 @@
  *********************************************************************/
 
 static bool trim_overlap_drv_files(TALLOC_CTX *mem_ctx,
-				   struct spoolss_DriverInfo3 *src,
-				   const struct spoolss_DriverInfo3 *drv)
+				   struct spoolss_DriverInfo8 *src,
+				   const struct spoolss_DriverInfo8 *drv)
 {
 	bool 	in_use = False;
 	int 	i = 0;
@@ -4915,13 +5018,13 @@
 ****************************************************************************/
 
 bool printer_driver_files_in_use(TALLOC_CTX *mem_ctx,
-				 struct spoolss_DriverInfo3 *info)
+				 struct spoolss_DriverInfo8 *info)
 {
 	int 				i;
 	int 				ndrivers;
 	uint32 				version;
 	fstring 			*list = NULL;
-	union spoolss_DriverInfo 	*driver;
+	struct spoolss_DriverInfo8 	*driver;
 	bool in_use = false;
 
 	if ( !info )
@@ -4948,7 +5051,7 @@
 
 		driver = NULL;
 
-		if (!W_ERROR_IS_OK(get_a_printer_driver(talloc_tos(), &driver, 3, list[i], info->architecture, version))) {
+		if (!W_ERROR_IS_OK(get_a_printer_driver(talloc_tos(), &driver, list[i], info->architecture, version))) {
 			SAFE_FREE(list);
 			return True;
 		}
@@ -4956,8 +5059,8 @@
 		/* check if d2 uses any files from d1 */
 		/* only if this is a different driver than the one being deleted */
 
-		if (!strequal(info->driver_name, driver->info3.driver_name)) {
-			if (trim_overlap_drv_files(mem_ctx, info, &driver->info3)) {
+		if (!strequal(info->driver_name, driver->driver_name)) {
+			if (trim_overlap_drv_files(mem_ctx, info, driver)) {
 				/* mz: Do not instantly return -
 				 * we need to ensure this file isn't
 				 * also in use by other drivers. */
@@ -5000,7 +5103,7 @@
 ****************************************************************************/
 
 static bool delete_driver_files(struct pipes_struct *rpc_pipe,
-				const struct spoolss_DriverInfo3 *info_3)
+				const struct spoolss_DriverInfo8 *r)
 {
 	int i = 0;
 	char *s;
@@ -5012,11 +5115,12 @@
 	int printdollar_snum;
 	bool ret = false;
 
-	if ( !info_3 )
-		return False;
+	if (!r) {
+		return false;
+	}
 
 	DEBUG(6,("delete_driver_files: deleting driver [%s] - version [%d]\n",
-		info_3->driver_name, info_3->version));
+		r->driver_name, r->version));
 
 	fstrcpy(printdollar, "print$");
 
@@ -5042,32 +5146,32 @@
 	/* now delete the files; must strip the '\print$' string from
 	   fron of path                                                */
 
-	if (info_3->driver_path && info_3->driver_path[0]) {
-		if ((s = strchr(&info_3->driver_path[1], '\\')) != NULL) {
+	if (r->driver_path && r->driver_path[0]) {
+		if ((s = strchr(&r->driver_path[1], '\\')) != NULL) {
 			file = s;
 			DEBUG(10,("deleting driverfile [%s]\n", s));
 			driver_unlink_internals(conn, file);
 		}
 	}
 
-	if (info_3->config_file && info_3->config_file[0]) {
-		if ((s = strchr(&info_3->config_file[1], '\\')) != NULL) {
+	if (r->config_file && r->config_file[0]) {
+		if ((s = strchr(&r->config_file[1], '\\')) != NULL) {
 			file = s;
 			DEBUG(10,("deleting configfile [%s]\n", s));
 			driver_unlink_internals(conn, file);
 		}
 	}
 
-	if (info_3->data_file && info_3->data_file[0]) {
-		if ((s = strchr(&info_3->data_file[1], '\\')) != NULL) {
+	if (r->data_file && r->data_file[0]) {
+		if ((s = strchr(&r->data_file[1], '\\')) != NULL) {
 			file = s;
 			DEBUG(10,("deleting datafile [%s]\n", s));
 			driver_unlink_internals(conn, file);
 		}
 	}
 
-	if (info_3->help_file && info_3->help_file[0]) {
-		if ((s = strchr( &info_3->help_file[1], '\\')) != NULL) {
+	if (r->help_file && r->help_file[0]) {
+		if ((s = strchr(&r->help_file[1], '\\')) != NULL) {
 			file = s;
 			DEBUG(10,("deleting helpfile [%s]\n", s));
 			driver_unlink_internals(conn, file);
@@ -5076,13 +5180,13 @@
 
 	/* check if we are done removing files */
 
-	if (info_3->dependent_files) {
-		while (info_3->dependent_files[i] && info_3->dependent_files[i][0]) {
+	if (r->dependent_files) {
+		while (r->dependent_files[i] && r->dependent_files[i][0]) {
 			char *p;
 
 			/* bypass the "\print$" portion of the path */
 
-			if ((p = strchr(info_3->dependent_files[i]+1, '\\')) != NULL) {
+			if ((p = strchr(r->dependent_files[i]+1, '\\')) != NULL) {
 				file = p;
 				DEBUG(10,("deleting dependent file [%s]\n", file));
 				driver_unlink_internals(conn, file);
@@ -5109,7 +5213,7 @@
  ***************************************************************************/
 
 WERROR delete_printer_driver(struct pipes_struct *rpc_pipe,
-			     const struct spoolss_DriverInfo3 *info_3,
+			     const struct spoolss_DriverInfo8 *r,
 			     uint32 version, bool delete_files )
 {
 	char *key = NULL;
@@ -5118,12 +5222,12 @@
 
 	/* delete the tdb data first */
 
-	arch = get_short_archi(info_3->architecture);
+	arch = get_short_archi(r->architecture);
 	if (!arch) {
 		return WERR_UNKNOWN_PRINTER_DRIVER;
 	}
 	if (asprintf(&key, "%s%s/%d/%s", DRIVERS_PREFIX,
-			arch, version, info_3->driver_name) < 0) {
+			arch, version, r->driver_name) < 0) {
 		return WERR_NOMEM;
 	}
 
@@ -5156,7 +5260,7 @@
 	 */
 
 	if ( delete_files )
-		delete_driver_files(rpc_pipe, info_3);
+		delete_driver_files(rpc_pipe, r);
 
 	DEBUG(5,("delete_printer_driver: driver delete successful [%s]\n", key));
 	SAFE_FREE(key);

Modified: branches/samba/experimental/source3/printing/printing.c
===================================================================
--- branches/samba/experimental/source3/printing/printing.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/printing/printing.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -2582,7 +2582,7 @@
 		return False;
 
 	if ((close_type == NORMAL_CLOSE || close_type == SHUTDOWN_CLOSE) &&
-				(sys_fstat(pjob->fd, &sbuf) == 0)) {
+	    (sys_fstat(pjob->fd, &sbuf, false) == 0)) {
 		pjob->size = sbuf.st_ex_size;
 		close(pjob->fd);
 		pjob->fd = -1;

Modified: branches/samba/experimental/source3/registry/reg_backend_printing.c
===================================================================
--- branches/samba/experimental/source3/registry/reg_backend_printing.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/registry/reg_backend_printing.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -884,7 +884,7 @@
 /**********************************************************************
  *********************************************************************/
 
-static void fill_in_driver_values(const struct spoolss_DriverInfo3 *info3,
+static void fill_in_driver_values(const struct spoolss_DriverInfo8 *r,
 				  struct regval_ctr *values)
 {
 	char *buffer = NULL;
@@ -893,32 +893,32 @@
 	const char *filename;
 	DATA_BLOB data;
 
-	filename = dos_basename(info3->driver_path);
+	filename = dos_basename(r->driver_path);
 	regval_ctr_addvalue_sz(values, "Driver", filename);
 
-	filename = dos_basename(info3->config_file);
+	filename = dos_basename(r->config_file);
 	regval_ctr_addvalue_sz(values, "Configuration File", filename);
 
-	filename = dos_basename(info3->data_file);
+	filename = dos_basename(r->data_file);
 	regval_ctr_addvalue_sz(values, "Data File", filename);
 
-	filename = dos_basename(info3->help_file);
+	filename = dos_basename(r->help_file);
 	regval_ctr_addvalue_sz(values, "Help File", filename);
 
-	regval_ctr_addvalue_sz(values, "Data Type", info3->default_datatype);
+	regval_ctr_addvalue_sz(values, "Data Type", r->default_datatype);
 
-	regval_ctr_addvalue( values, "Version", REG_DWORD, (char*)&info3->version,
-		sizeof(info3->version) );
+	regval_ctr_addvalue( values, "Version", REG_DWORD, (char*)&r->version,
+		sizeof(r->version) );
 
-	if (info3->dependent_files) {
+	if (r->dependent_files) {
 		/* place the list of dependent files in a single
 		   character buffer, separating each file name by
 		   a NULL */
 
-		for (i=0; info3->dependent_files[i] && strcmp(info3->dependent_files[i], ""); i++) {
+		for (i=0; r->dependent_files[i] && strcmp(r->dependent_files[i], ""); i++) {
 			/* strip the path to only the file's base name */
 
-			filename = dos_basename(info3->dependent_files[i]);
+			filename = dos_basename(r->dependent_files[i]);
 
 			length = strlen(filename);
 
@@ -960,7 +960,7 @@
 	fstring		arch_environment;
 	fstring		driver;
 	int		version;
-	union spoolss_DriverInfo *driver_ctr;
+	struct spoolss_DriverInfo8 *driver_ctr;
 	WERROR		w_result;
 
 	if (!reg_split_path( key, &base, &subkeypath )) {
@@ -1021,12 +1021,12 @@
 
 	fstrcpy( driver, base );
 
-	w_result = get_a_printer_driver(talloc_tos(), &driver_ctr, 3, driver, arch_environment, version);
+	w_result = get_a_printer_driver(talloc_tos(), &driver_ctr, driver, arch_environment, version);
 
 	if ( !W_ERROR_IS_OK(w_result) )
 		return -1;
 
-	fill_in_driver_values(&driver_ctr->info3, values);
+	fill_in_driver_values(driver_ctr, values);
 
 	free_a_printer_driver(driver_ctr);
 

Modified: branches/samba/experimental/source3/registry/regfio.c
===================================================================
--- branches/samba/experimental/source3/registry/regfio.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/registry/regfio.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -45,7 +45,7 @@
 
 	/* check for end of file */
 
-	if ( sys_fstat( file->fd, &sbuf ) ) {
+	if (sys_fstat(file->fd, &sbuf, false)) {
 		DEBUG(0,("write_block: stat() failed! (%s)\n", strerror(errno)));
 		return -1;
 	}
@@ -79,7 +79,7 @@
 
 	/* check for end of file */
 
-	if ( sys_fstat( file->fd, &sbuf ) ) {
+	if (sys_fstat(file->fd, &sbuf, false)) {
 		DEBUG(0,("read_block: stat() failed! (%s)\n", strerror(errno)));
 		return -1;
 	}
@@ -1429,7 +1429,7 @@
 	memcpy( hbin->header, "hbin", sizeof(HBIN_HDR_SIZE) );
 
 
-	if ( sys_fstat( file->fd, &sbuf ) ) {
+	if (sys_fstat(file->fd, &sbuf, false)) {
 		DEBUG(0,("regf_hbin_allocate: stat() failed! (%s)\n", strerror(errno)));
 		return NULL;
 	}

Modified: branches/samba/experimental/source3/rpc_client/cli_lsarpc.c
===================================================================
--- branches/samba/experimental/source3/rpc_client/cli_lsarpc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_client/cli_lsarpc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
 
 /** @defgroup lsa LSA - Local Security Architecture
  *  @ingroup rpc_client

Modified: branches/samba/experimental/source3/rpc_client/cli_netlogon.c
===================================================================
--- branches/samba/experimental/source3/rpc_client/cli_netlogon.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_client/cli_netlogon.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -22,6 +22,7 @@
 
 #include "includes.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_netlogon.h"
 
 /****************************************************************************
  Wrapper function that uses the auth and auth2 calls to set up a NETLOGON

Modified: branches/samba/experimental/source3/rpc_client/cli_pipe.c
===================================================================
--- branches/samba/experimental/source3/rpc_client/cli_pipe.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_client/cli_pipe.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -18,12 +18,11 @@
  */
 
 #include "includes.h"
-#include "../libcli/auth/libcli_auth.h"
 #include "librpc/gen_ndr/cli_epmapper.h"
 #include "../librpc/gen_ndr/ndr_schannel.h"
 #include "../libcli/auth/schannel.h"
-#include "../libcli/auth/schannel_proto.h"
 #include "../libcli/auth/spnego.h"
+#include "smb_krb5.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_CLI

Modified: branches/samba/experimental/source3/rpc_client/cli_samr.c
===================================================================
--- branches/samba/experimental/source3/rpc_client/cli_samr.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_client/cli_samr.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 
 #include "includes.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_samr.h"
 
 /* User change password */
 

Modified: branches/samba/experimental/source3/rpc_client/cli_spoolss.c
===================================================================
--- branches/samba/experimental/source3/rpc_client/cli_spoolss.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_client/cli_spoolss.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,7 +23,7 @@
 */
 
 #include "includes.h"
-#include "rpc_client.h"
+#include "../librpc/gen_ndr/cli_spoolss.h"
 
 /**********************************************************************
  convencience wrapper around rpccli_spoolss_OpenPrinterEx
@@ -810,44 +810,31 @@
 	NTSTATUS status;
 	WERROR werror;
 	uint32_t needed;
-	uint16_t *buffer = NULL;
+	union spoolss_KeyNames _key_buffer;
+	uint32_t _ndr_size;
 
-	*key_buffer = NULL;
-
-	if (offered) {
-		buffer = talloc_array(mem_ctx, uint16_t, offered/2);
-		W_ERROR_HAVE_NO_MEMORY(buffer);
-	}
-
 	status = rpccli_spoolss_EnumPrinterKey(cli, mem_ctx,
 					       handle,
 					       key_name,
-					       buffer,
+					       &_ndr_size,
+					       &_key_buffer,
 					       offered,
 					       &needed,
 					       &werror);
 
 	if (W_ERROR_EQUAL(werror, WERR_MORE_DATA)) {
 		offered = needed;
-		buffer = talloc_realloc(mem_ctx, buffer, uint16_t, needed/2);
-		W_ERROR_HAVE_NO_MEMORY(buffer);
 		status = rpccli_spoolss_EnumPrinterKey(cli, mem_ctx,
 						       handle,
 						       key_name,
-						       buffer,
+						       &_ndr_size,
+						       &_key_buffer,
 						       offered,
 						       &needed,
 						       &werror);
 	}
 
-	if (W_ERROR_IS_OK(werror)) {
-		const char **array;
-		DATA_BLOB blob = data_blob_const((uint8_t *)buffer, offered);
-		if (!pull_reg_multi_sz(mem_ctx, &blob, &array)) {
-			return WERR_NOMEM;
-		}
-		*key_buffer = array;
-	}
+	*key_buffer = _key_buffer.string_array;
 
 	return werror;
 }

Modified: branches/samba/experimental/source3/rpc_server/srv_dfs_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_dfs_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_dfs_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -22,6 +22,7 @@
 /* This is the implementation of the dfs pipe. */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/srv_dfs.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_MSDFS

Modified: branches/samba/experimental/source3/rpc_server/srv_dssetup_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_dssetup_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_dssetup_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
  */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/srv_dssetup.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV

Modified: branches/samba/experimental/source3/rpc_server/srv_echo_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_echo_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_echo_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -22,6 +22,7 @@
 /* This is the interface to the rpcecho pipe. */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/srv_echo.h"
 
 #ifdef DEVELOPER
 

Modified: branches/samba/experimental/source3/rpc_server/srv_eventlog_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_eventlog_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_eventlog_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,6 +21,7 @@
  */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/srv_eventlog.h"
 
 #undef  DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV

Modified: branches/samba/experimental/source3/rpc_server/srv_initshutdown_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_initshutdown_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_initshutdown_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,7 +21,8 @@
 /* Implementation of registry functions. */
 
 #include "includes.h"
-#include "regfio.h"
+#include "../librpc/gen_ndr/srv_initshutdown.h"
+#include "../librpc/gen_ndr/srv_winreg.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV

Modified: branches/samba/experimental/source3/rpc_server/srv_lsa_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_lsa_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_lsa_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -29,6 +29,7 @@
 /* This is the implementation of the lsa server code. */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/srv_lsa.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV

Modified: branches/samba/experimental/source3/rpc_server/srv_netlog_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_netlog_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_netlog_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -25,9 +25,8 @@
 /* This is the implementation of the netlogon pipe. */
 
 #include "includes.h"
-#include "../libcli/auth/libcli_auth.h"
-#include "../libcli/auth/schannel_state.h"
 #include "../libcli/auth/schannel.h"
+#include "../librpc/gen_ndr/srv_netlogon.h"
 
 extern userdom_struct current_user_info;
 

Modified: branches/samba/experimental/source3/rpc_server/srv_ntsvcs_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_ntsvcs_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_ntsvcs_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
  */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/srv_ntsvcs.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV

Modified: branches/samba/experimental/source3/rpc_server/srv_pipe.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_pipe.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_pipe.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -28,10 +28,8 @@
  */
 
 #include "includes.h"
-#include "../libcli/auth/libcli_auth.h"
 #include "../librpc/gen_ndr/ndr_schannel.h"
 #include "../libcli/auth/schannel.h"
-#include "../libcli/auth/schannel_proto.h"
 #include "../libcli/auth/spnego.h"
 
 extern struct current_user current_user;

Modified: branches/samba/experimental/source3/rpc_server/srv_samr_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_samr_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_samr_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -34,6 +34,7 @@
 #include "includes.h"
 #include "smbd/globals.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/srv_samr.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV

Modified: branches/samba/experimental/source3/rpc_server/srv_spoolss_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_spoolss_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_spoolss_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -27,6 +27,8 @@
    up, all the errors returned are DOS errors, not NT status codes. */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/srv_spoolss.h"
+#include "../librpc/gen_ndr/cli_spoolss.h"
 
 /* macros stolen from s4 spoolss server */
 #define SPOOLSS_BUFFER_UNION(fn,ic,info,level) \
@@ -1482,9 +1484,12 @@
 			return false;
 	}
 
-	rpcstr_push(nt_devmode->devicename, devmode->devicename, 31, 0);
-	rpcstr_push(nt_devmode->formname, devmode->formname, 31, 0);
+	fstrcpy(nt_devmode->devicename, devmode->devicename);
+	fstrcpy(nt_devmode->formname, devmode->formname);
 
+	nt_devmode->devicename[31] = '\0';
+	nt_devmode->formname[31] = '\0';
+
 	nt_devmode->specversion		= devmode->specversion;
 	nt_devmode->driverversion	= devmode->driverversion;
 	nt_devmode->size		= devmode->size;
@@ -1671,6 +1676,10 @@
 			return WERR_BADFID;
 		}
 
+		if (r->in.access_mask == SEC_FLAG_MAXIMUM_ALLOWED) {
+			r->in.access_mask = PRINTER_ACCESS_ADMINISTER;
+		}
+
 		se_map_standard(&r->in.access_mask, &printer_std_mapping);
 
 		/* map an empty access mask to the minimum access mask */
@@ -1919,8 +1928,8 @@
 				    struct spoolss_DeletePrinterDriver *r)
 {
 
-	union spoolss_DriverInfo *info = NULL;
-	union spoolss_DriverInfo *info_win2k = NULL;
+	struct spoolss_DriverInfo8 *info = NULL;
+	struct spoolss_DriverInfo8 *info_win2k = NULL;
 	int				version;
 	WERROR				status;
 	WERROR				status_win2k = WERR_ACCESS_DENIED;
@@ -1944,7 +1953,7 @@
 	if ((version = get_version_id(r->in.architecture)) == -1)
 		return WERR_INVALID_ENVIRONMENT;
 
-	if (!W_ERROR_IS_OK(get_a_printer_driver(p->mem_ctx, &info, 3, r->in.driver,
+	if (!W_ERROR_IS_OK(get_a_printer_driver(p->mem_ctx, &info, r->in.driver,
 						r->in.architecture,
 						version)))
 	{
@@ -1953,7 +1962,7 @@
 		if ( version == 2 ) {
 			version = 3;
 			if (!W_ERROR_IS_OK(get_a_printer_driver(p->mem_ctx,
-								&info, 3,
+								&info,
 								r->in.driver,
 								r->in.architecture,
 								version))) {
@@ -1969,7 +1978,7 @@
 
 	}
 
-	if (printer_driver_in_use(&info->info3)) {
+	if (printer_driver_in_use(info)) {
 		status = WERR_PRINTER_DRIVER_IN_USE;
 		goto done;
 	}
@@ -1977,7 +1986,7 @@
 	if ( version == 2 )
 	{
 		if (W_ERROR_IS_OK(get_a_printer_driver(p->mem_ctx,
-						       &info_win2k, 3,
+						       &info_win2k,
 						       r->in.driver,
 						       r->in.architecture, 3)))
 		{
@@ -1985,7 +1994,7 @@
 			/* remove the Win2k driver first*/
 
 			status_win2k = delete_printer_driver(
-				p, &info_win2k->info3, 3, false);
+				p, info_win2k, 3, false);
 			free_a_printer_driver(info_win2k);
 
 			/* this should not have failed---if it did, report to client */
@@ -1997,7 +2006,7 @@
 		}
 	}
 
-	status = delete_printer_driver(p, &info->info3, version, false);
+	status = delete_printer_driver(p, info, version, false);
 
 	/* if at least one of the deletes succeeded return OK */
 
@@ -2017,8 +2026,8 @@
 WERROR _spoolss_DeletePrinterDriverEx(pipes_struct *p,
 				      struct spoolss_DeletePrinterDriverEx *r)
 {
-	union spoolss_DriverInfo	*info = NULL;
-	union spoolss_DriverInfo	*info_win2k = NULL;
+	struct spoolss_DriverInfo8	*info = NULL;
+	struct spoolss_DriverInfo8	*info_win2k = NULL;
 	int				version;
 	bool				delete_files;
 	WERROR				status;
@@ -2046,7 +2055,7 @@
 	if (r->in.delete_flags & DPD_DELETE_SPECIFIC_VERSION)
 		version = r->in.version;
 
-	status = get_a_printer_driver(p->mem_ctx, &info, 3, r->in.driver,
+	status = get_a_printer_driver(p->mem_ctx, &info, r->in.driver,
 				      r->in.architecture, version);
 
 	if ( !W_ERROR_IS_OK(status) )
@@ -2063,7 +2072,7 @@
 		/* try for Win2k driver if "Windows NT x86" */
 
 		version = 3;
-		if (!W_ERROR_IS_OK(get_a_printer_driver(p->mem_ctx, &info, 3, r->in.driver,
+		if (!W_ERROR_IS_OK(get_a_printer_driver(p->mem_ctx, &info, r->in.driver,
 							r->in.architecture,
 							version))) {
 			status = WERR_UNKNOWN_PRINTER_DRIVER;
@@ -2071,7 +2080,7 @@
 		}
 	}
 
-	if ( printer_driver_in_use(&info->info3) ) {
+	if (printer_driver_in_use(info)) {
 		status = WERR_PRINTER_DRIVER_IN_USE;
 		goto done;
 	}
@@ -2092,7 +2101,7 @@
 
 	/* fail if any files are in use and DPD_DELETE_ALL_FILES is set */
 
-	if ( delete_files && printer_driver_files_in_use(info, &info->info3) & (r->in.delete_flags & DPD_DELETE_ALL_FILES) ) {
+	if (delete_files && printer_driver_files_in_use(info, info) & (r->in.delete_flags & DPD_DELETE_ALL_FILES)) {
 		/* no idea of the correct error here */
 		status = WERR_ACCESS_DENIED;
 		goto done;
@@ -2102,12 +2111,12 @@
 	/* also check for W32X86/3 if necessary; maybe we already have? */
 
 	if ( (version == 2) && ((r->in.delete_flags & DPD_DELETE_SPECIFIC_VERSION) != DPD_DELETE_SPECIFIC_VERSION)  ) {
-		if (W_ERROR_IS_OK(get_a_printer_driver(p->mem_ctx, &info_win2k, 3,
+		if (W_ERROR_IS_OK(get_a_printer_driver(p->mem_ctx, &info_win2k,
 						       r->in.driver,
 						       r->in.architecture, 3)))
 		{
 
-			if ( delete_files && printer_driver_files_in_use(info, &info_win2k->info3) & (r->in.delete_flags & DPD_DELETE_ALL_FILES) ) {
+			if (delete_files && printer_driver_files_in_use(info, info_win2k) & (r->in.delete_flags & DPD_DELETE_ALL_FILES) ) {
 				/* no idea of the correct error here */
 				free_a_printer_driver(info_win2k);
 				status = WERR_ACCESS_DENIED;
@@ -2118,7 +2127,7 @@
 			/* remove the Win2k driver first*/
 
 			status_win2k = delete_printer_driver(
-				p, &info_win2k->info3, 3, delete_files);
+				p, info_win2k, 3, delete_files);
 			free_a_printer_driver(info_win2k);
 
 			/* this should not have failed---if it did, report to client */
@@ -2128,7 +2137,7 @@
 		}
 	}
 
-	status = delete_printer_driver(p, &info->info3, version, delete_files);
+	status = delete_printer_driver(p, info, version, delete_files);
 
 	if ( W_ERROR_IS_OK(status) || W_ERROR_IS_OK(status_win2k) )
 		status = WERR_OK;
@@ -2296,6 +2305,8 @@
 		return WERR_OK;
 	}
 
+	*type = REG_NONE;
+
 	return WERR_INVALID_PARAM;
 }
 
@@ -2306,92 +2317,17 @@
 WERROR _spoolss_GetPrinterData(pipes_struct *p,
 			       struct spoolss_GetPrinterData *r)
 {
-	WERROR result;
-	Printer_entry *Printer = find_printer_index_by_hnd(p, r->in.handle);
-	NT_PRINTER_INFO_LEVEL *printer = NULL;
-	int snum = 0;
+	struct spoolss_GetPrinterDataEx r2;
 
-	/*
-	 * Reminder: when it's a string, the length is in BYTES
-	 * even if UNICODE is negociated.
-	 *
-	 * JFM, 4/19/1999
-	 */
+	r2.in.handle		= r->in.handle;
+	r2.in.key_name		= "PrinterDriverData";
+	r2.in.value_name	= r->in.value_name;
+	r2.in.offered		= r->in.offered;
+	r2.out.type		= r->out.type;
+	r2.out.data		= r->out.data;
+	r2.out.needed		= r->out.needed;
 
-	/* in case of problem, return some default values */
-
-	*r->out.needed	= 0;
-	*r->out.type	= 0;
-
-	DEBUG(4,("_spoolss_GetPrinterData\n"));
-
-	if (!Printer) {
-		DEBUG(2,("_spoolss_GetPrinterData: Invalid handle (%s:%u:%u).\n",
-			OUR_HANDLE(r->in.handle)));
-		result = WERR_BADFID;
-		goto done;
-	}
-
-	if (Printer->printer_type == SPLHND_SERVER) {
-		result = getprinterdata_printer_server(p->mem_ctx,
-						       r->in.value_name,
-						       r->out.type,
-						       r->out.data);
-	} else {
-		if (!get_printer_snum(p, r->in.handle, &snum, NULL)) {
-			result = WERR_BADFID;
-			goto done;
-		}
-
-		result = get_a_printer(Printer, &printer, 2, lp_servicename(snum));
-		if (!W_ERROR_IS_OK(result)) {
-			goto done;
-		}
-
-		/* XP sends this and wants to change id value from the PRINTER_INFO_0 */
-
-		if (strequal(r->in.value_name, "ChangeId")) {
-			*r->out.type = REG_DWORD;
-			r->out.data->value = printer->info_2->changeid;
-			result = WERR_OK;
-		} else {
-			struct regval_blob *v;
-			DATA_BLOB blob;
-
-			v = get_printer_data(printer->info_2,
-					     SPOOL_PRINTERDATA_KEY,
-					     r->in.value_name);
-			if (!v) {
-				result = WERR_BADFILE;
-				goto done;
-			}
-
-			*r->out.type = v->type;
-
-			blob = data_blob_const(v->data_p, v->size);
-
-			result = pull_spoolss_PrinterData(p->mem_ctx, &blob,
-							  r->out.data,
-							  *r->out.type);
-		}
-	}
-
- done:
-	/* cleanup & exit */
-
-	if (printer) {
-		free_a_printer(&printer, 2);
-	}
-
-	if (!W_ERROR_IS_OK(result)) {
-		return result;
-	}
-
-	*r->out.needed	= ndr_size_spoolss_PrinterData(r->out.data, *r->out.type, NULL, 0);
-	*r->out.type	= SPOOLSS_BUFFER_OK(*r->out.type, REG_NONE);
-	r->out.data	= SPOOLSS_BUFFER_OK(r->out.data, r->out.data);
-
-	return SPOOLSS_BUFFER_OK(WERR_OK, WERR_MORE_DATA);
+	return _spoolss_GetPrinterDataEx(p, &r2);
 }
 
 /*********************************************************
@@ -3781,6 +3717,110 @@
 }
 
 /********************************************************************
+ * construct_printer_info1
+ * fill a spoolss_PrinterInfo1 struct
+********************************************************************/
+
+static WERROR construct_printer_info1(TALLOC_CTX *mem_ctx,
+				      const NT_PRINTER_INFO_LEVEL *ntprinter,
+				      uint32_t flags,
+				      struct spoolss_PrinterInfo1 *r,
+				      int snum)
+{
+	r->flags		= flags;
+
+	r->description		= talloc_asprintf(mem_ctx, "%s,%s,%s",
+						  ntprinter->info_2->printername,
+						  ntprinter->info_2->drivername,
+						  ntprinter->info_2->location);
+	W_ERROR_HAVE_NO_MEMORY(r->description);
+
+	if (*ntprinter->info_2->comment == '\0') {
+		r->comment	= talloc_strdup(mem_ctx, lp_comment(snum));
+	} else {
+		r->comment	= talloc_strdup(mem_ctx, ntprinter->info_2->comment); /* saved comment */
+	}
+	W_ERROR_HAVE_NO_MEMORY(r->comment);
+
+	r->name			= talloc_strdup(mem_ctx, ntprinter->info_2->printername);
+	W_ERROR_HAVE_NO_MEMORY(r->name);
+
+	return WERR_OK;
+}
+
+/********************************************************************
+ * construct_printer_info2
+ * fill a spoolss_PrinterInfo2 struct
+********************************************************************/
+
+static WERROR construct_printer_info2(TALLOC_CTX *mem_ctx,
+				      const NT_PRINTER_INFO_LEVEL *ntprinter,
+				      struct spoolss_PrinterInfo2 *r,
+				      int snum)
+{
+	int count;
+
+	print_status_struct status;
+
+	count = print_queue_length(snum, &status);
+
+	r->servername		= talloc_strdup(mem_ctx, ntprinter->info_2->servername);
+	W_ERROR_HAVE_NO_MEMORY(r->servername);
+	r->printername		= talloc_strdup(mem_ctx, ntprinter->info_2->printername);
+	W_ERROR_HAVE_NO_MEMORY(r->printername);
+	r->sharename		= talloc_strdup(mem_ctx, lp_servicename(snum));
+	W_ERROR_HAVE_NO_MEMORY(r->sharename);
+	r->portname		= talloc_strdup(mem_ctx, ntprinter->info_2->portname);
+	W_ERROR_HAVE_NO_MEMORY(r->portname);
+	r->drivername		= talloc_strdup(mem_ctx, ntprinter->info_2->drivername);
+	W_ERROR_HAVE_NO_MEMORY(r->drivername);
+
+	if (*ntprinter->info_2->comment == '\0') {
+		r->comment	= talloc_strdup(mem_ctx, lp_comment(snum));
+	} else {
+		r->comment	= talloc_strdup(mem_ctx, ntprinter->info_2->comment);
+	}
+	W_ERROR_HAVE_NO_MEMORY(r->comment);
+
+	r->location		= talloc_strdup(mem_ctx, ntprinter->info_2->location);
+	W_ERROR_HAVE_NO_MEMORY(r->location);
+	r->sepfile		= talloc_strdup(mem_ctx, ntprinter->info_2->sepfile);
+	W_ERROR_HAVE_NO_MEMORY(r->sepfile);
+	r->printprocessor	= talloc_strdup(mem_ctx, ntprinter->info_2->printprocessor);
+	W_ERROR_HAVE_NO_MEMORY(r->printprocessor);
+	r->datatype		= talloc_strdup(mem_ctx, ntprinter->info_2->datatype);
+	W_ERROR_HAVE_NO_MEMORY(r->datatype);
+	r->parameters		= talloc_strdup(mem_ctx, ntprinter->info_2->parameters);
+	W_ERROR_HAVE_NO_MEMORY(r->parameters);
+
+	r->attributes		= ntprinter->info_2->attributes;
+
+	r->priority		= ntprinter->info_2->priority;
+	r->defaultpriority	= ntprinter->info_2->default_priority;
+	r->starttime		= ntprinter->info_2->starttime;
+	r->untiltime		= ntprinter->info_2->untiltime;
+	r->status		= nt_printq_status(status.status);
+	r->cjobs		= count;
+	r->averageppm		= ntprinter->info_2->averageppm;
+
+	r->devmode = construct_dev_mode(mem_ctx, lp_const_servicename(snum));
+	if (!r->devmode) {
+		DEBUG(8,("Returning NULL Devicemode!\n"));
+	}
+
+	r->secdesc		= NULL;
+
+	if (ntprinter->info_2->secdesc_buf && ntprinter->info_2->secdesc_buf->sd_size != 0) {
+		/* don't use talloc_steal() here unless you do a deep steal of all
+		   the SEC_DESC members */
+
+		r->secdesc	= dup_sec_desc(mem_ctx, ntprinter->info_2->secdesc_buf->sd);
+	}
+
+	return WERR_OK;
+}
+
+/********************************************************************
  * construct_printer_info3
  * fill a spoolss_PrinterInfo3 struct
  ********************************************************************/
@@ -3927,112 +3967,8 @@
 
 
 /********************************************************************
- * construct_printer_info1
- * fill a spoolss_PrinterInfo1 struct
 ********************************************************************/
 
-static WERROR construct_printer_info1(TALLOC_CTX *mem_ctx,
-				      const NT_PRINTER_INFO_LEVEL *ntprinter,
-				      uint32_t flags,
-				      struct spoolss_PrinterInfo1 *r,
-				      int snum)
-{
-	r->flags		= flags;
-
-	r->description		= talloc_asprintf(mem_ctx, "%s,%s,%s",
-						  ntprinter->info_2->printername,
-						  ntprinter->info_2->drivername,
-						  ntprinter->info_2->location);
-	W_ERROR_HAVE_NO_MEMORY(r->description);
-
-	if (*ntprinter->info_2->comment == '\0') {
-		r->comment	= talloc_strdup(mem_ctx, lp_comment(snum));
-	} else {
-		r->comment	= talloc_strdup(mem_ctx, ntprinter->info_2->comment); /* saved comment */
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->comment);
-
-	r->name			= talloc_strdup(mem_ctx, ntprinter->info_2->printername);
-	W_ERROR_HAVE_NO_MEMORY(r->name);
-
-	return WERR_OK;
-}
-
-/********************************************************************
- * construct_printer_info2
- * fill a spoolss_PrinterInfo2 struct
-********************************************************************/
-
-static WERROR construct_printer_info2(TALLOC_CTX *mem_ctx,
-				      const NT_PRINTER_INFO_LEVEL *ntprinter,
-				      struct spoolss_PrinterInfo2 *r,
-				      int snum)
-{
-	int count;
-
-	print_status_struct status;
-
-	count = print_queue_length(snum, &status);
-
-	r->servername		= talloc_strdup(mem_ctx, ntprinter->info_2->servername);
-	W_ERROR_HAVE_NO_MEMORY(r->servername);
-	r->printername		= talloc_strdup(mem_ctx, ntprinter->info_2->printername);
-	W_ERROR_HAVE_NO_MEMORY(r->printername);
-	r->sharename		= talloc_strdup(mem_ctx, lp_servicename(snum));
-	W_ERROR_HAVE_NO_MEMORY(r->sharename);
-	r->portname		= talloc_strdup(mem_ctx, ntprinter->info_2->portname);
-	W_ERROR_HAVE_NO_MEMORY(r->portname);
-	r->drivername		= talloc_strdup(mem_ctx, ntprinter->info_2->drivername);
-	W_ERROR_HAVE_NO_MEMORY(r->drivername);
-
-	if (*ntprinter->info_2->comment == '\0') {
-		r->comment	= talloc_strdup(mem_ctx, lp_comment(snum));
-	} else {
-		r->comment	= talloc_strdup(mem_ctx, ntprinter->info_2->comment);
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->comment);
-
-	r->location		= talloc_strdup(mem_ctx, ntprinter->info_2->location);
-	W_ERROR_HAVE_NO_MEMORY(r->location);
-	r->sepfile		= talloc_strdup(mem_ctx, ntprinter->info_2->sepfile);
-	W_ERROR_HAVE_NO_MEMORY(r->sepfile);
-	r->printprocessor	= talloc_strdup(mem_ctx, ntprinter->info_2->printprocessor);
-	W_ERROR_HAVE_NO_MEMORY(r->printprocessor);
-	r->datatype		= talloc_strdup(mem_ctx, ntprinter->info_2->datatype);
-	W_ERROR_HAVE_NO_MEMORY(r->datatype);
-	r->parameters		= talloc_strdup(mem_ctx, ntprinter->info_2->parameters);
-	W_ERROR_HAVE_NO_MEMORY(r->parameters);
-
-	r->attributes		= ntprinter->info_2->attributes;
-
-	r->priority		= ntprinter->info_2->priority;
-	r->defaultpriority	= ntprinter->info_2->default_priority;
-	r->starttime		= ntprinter->info_2->starttime;
-	r->untiltime		= ntprinter->info_2->untiltime;
-	r->status		= nt_printq_status(status.status);
-	r->cjobs		= count;
-	r->averageppm		= ntprinter->info_2->averageppm;
-
-	r->devmode = construct_dev_mode(mem_ctx, lp_const_servicename(snum));
-	if (!r->devmode) {
-		DEBUG(8,("Returning NULL Devicemode!\n"));
-	}
-
-	r->secdesc		= NULL;
-
-	if (ntprinter->info_2->secdesc_buf && ntprinter->info_2->secdesc_buf->sd_size != 0) {
-		/* don't use talloc_steal() here unless you do a deep steal of all
-		   the SEC_DESC members */
-
-		r->secdesc	= dup_sec_desc(mem_ctx, ntprinter->info_2->secdesc_buf->sd);
-	}
-
-	return WERR_OK;
-}
-
-/********************************************************************
-********************************************************************/
-
 static bool snum_is_shared_printer(int snum)
 {
 	return (lp_browseable(snum) && lp_snum_ok(snum) && lp_print_ok(snum));
@@ -4535,15 +4471,34 @@
 	return array;
 }
 
+#define FILL_DRIVER_STRING(mem_ctx, in, out) \
+	do { \
+		if (in && strlen(in)) { \
+			out = talloc_strdup(mem_ctx, in); \
+			W_ERROR_HAVE_NO_MEMORY(out); \
+		} else { \
+			out = NULL; \
+		} \
+	} while (0);
+
+#define FILL_DRIVER_UNC_STRING(mem_ctx, server, in, out) \
+	do { \
+		if (in && strlen(in)) { \
+			out = talloc_asprintf(mem_ctx, "\\\\%s%s", server, in); \
+		} else { \
+			out = talloc_strdup(mem_ctx, ""); \
+		} \
+		W_ERROR_HAVE_NO_MEMORY(out); \
+	} while (0);
+
 /********************************************************************
  * fill a spoolss_DriverInfo1 struct
  ********************************************************************/
 
 static WERROR fill_printer_driver_info1(TALLOC_CTX *mem_ctx,
 					struct spoolss_DriverInfo1 *r,
-					const struct spoolss_DriverInfo3 *driver,
-					const char *servername,
-					const char *architecture)
+					const struct spoolss_DriverInfo8 *driver,
+					const char *servername)
 {
 	r->driver_name		= talloc_strdup(mem_ctx, driver->driver_name);
 	W_ERROR_HAVE_NO_MEMORY(r->driver_name);
@@ -4557,7 +4512,7 @@
 
 static WERROR fill_printer_driver_info2(TALLOC_CTX *mem_ctx,
 					struct spoolss_DriverInfo2 *r,
-					const struct spoolss_DriverInfo3 *driver,
+					const struct spoolss_DriverInfo8 *driver,
 					const char *servername)
 
 {
@@ -4570,29 +4525,17 @@
 	r->architecture		= talloc_strdup(mem_ctx, driver->architecture);
 	W_ERROR_HAVE_NO_MEMORY(r->architecture);
 
-	if (strlen(driver->driver_path)) {
-		r->driver_path	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->driver_path);
-	} else {
-		r->driver_path	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->driver_path);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->driver_path,
+			       r->driver_path);
 
-	if (strlen(driver->data_file)) {
-		r->data_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->data_file);
-	} else {
-		r->data_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->data_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->data_file,
+			       r->data_file);
 
-	if (strlen(driver->config_file)) {
-		r->config_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->config_file);
-	} else {
-		r->config_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->config_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->config_file,
+			       r->config_file);
 
 	return WERR_OK;
 }
@@ -4603,7 +4546,7 @@
 
 static WERROR fill_printer_driver_info3(TALLOC_CTX *mem_ctx,
 					struct spoolss_DriverInfo3 *r,
-					const struct spoolss_DriverInfo3 *driver,
+					const struct spoolss_DriverInfo8 *driver,
 					const char *servername)
 {
 	const char *cservername = canon_servername(servername);
@@ -4615,43 +4558,30 @@
 	r->architecture		= talloc_strdup(mem_ctx, driver->architecture);
 	W_ERROR_HAVE_NO_MEMORY(r->architecture);
 
-	if (strlen(driver->driver_path)) {
-		r->driver_path	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->driver_path);
-	} else {
-		r->driver_path	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->driver_path);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->driver_path,
+			       r->driver_path);
 
-	if (strlen(driver->data_file)) {
-		r->data_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->data_file);
-	} else {
-		r->data_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->data_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->data_file,
+			       r->data_file);
 
-	if (strlen(driver->config_file)) {
-		r->config_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->config_file);
-	} else {
-		r->config_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->config_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->config_file,
+			       r->config_file);
 
-	if (strlen(driver->help_file)) {
-		r->help_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->help_file);
-	} else {
-		r->help_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->help_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->help_file,
+			       r->help_file);
 
-	r->monitor_name		= talloc_strdup(mem_ctx, driver->monitor_name);
-	W_ERROR_HAVE_NO_MEMORY(r->monitor_name);
-	r->default_datatype	= talloc_strdup(mem_ctx, driver->default_datatype);
-	W_ERROR_HAVE_NO_MEMORY(r->default_datatype);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->monitor_name,
+			   r->monitor_name);
 
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->default_datatype,
+			   r->default_datatype);
+
 	r->dependent_files = string_array_from_driver_info(mem_ctx,
 							   driver->dependent_files,
 							   cservername);
@@ -4664,7 +4594,7 @@
 
 static WERROR fill_printer_driver_info4(TALLOC_CTX *mem_ctx,
 					struct spoolss_DriverInfo4 *r,
-					const struct spoolss_DriverInfo3 *driver,
+					const struct spoolss_DriverInfo8 *driver,
 					const char *servername)
 {
 	const char *cservername = canon_servername(servername);
@@ -4676,50 +4606,36 @@
 	r->architecture		= talloc_strdup(mem_ctx, driver->architecture);
 	W_ERROR_HAVE_NO_MEMORY(r->architecture);
 
-	if (strlen(driver->driver_path)) {
-		r->driver_path	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->driver_path);
-	} else {
-		r->driver_path	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->driver_path);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->driver_path,
+			       r->driver_path);
 
-	if (strlen(driver->data_file)) {
-		r->data_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->data_file);
-	} else {
-		r->data_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->data_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->data_file,
+			       r->data_file);
 
-	if (strlen(driver->config_file)) {
-		r->config_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->config_file);
-	} else {
-		r->config_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->config_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->config_file,
+			       r->config_file);
 
-	if (strlen(driver->help_file)) {
-		r->help_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->help_file);
-	} else {
-		r->help_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->help_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->help_file,
+			       r->help_file);
 
 	r->dependent_files = string_array_from_driver_info(mem_ctx,
 							   driver->dependent_files,
 							   cservername);
 
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->monitor_name,
+			   r->monitor_name);
 
-	r->monitor_name		= talloc_strdup(mem_ctx, driver->monitor_name);
-	W_ERROR_HAVE_NO_MEMORY(r->monitor_name);
-	r->default_datatype	= talloc_strdup(mem_ctx, driver->default_datatype);
-	W_ERROR_HAVE_NO_MEMORY(r->default_datatype);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->default_datatype,
+			   r->default_datatype);
 
 	r->previous_names = string_array_from_driver_info(mem_ctx,
-							  NULL,
+							  driver->previous_names,
 							  cservername);
 
 	return WERR_OK;
@@ -4731,7 +4647,7 @@
 
 static WERROR fill_printer_driver_info5(TALLOC_CTX *mem_ctx,
 					struct spoolss_DriverInfo5 *r,
-					const struct spoolss_DriverInfo3 *driver,
+					const struct spoolss_DriverInfo8 *driver,
 					const char *servername)
 {
 	const char *cservername = canon_servername(servername);
@@ -4743,29 +4659,17 @@
 	r->architecture		= talloc_strdup(mem_ctx, driver->architecture);
 	W_ERROR_HAVE_NO_MEMORY(r->architecture);
 
-	if (strlen(driver->driver_path)) {
-		r->driver_path	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->driver_path);
-	} else {
-		r->driver_path	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->driver_path);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->driver_path,
+			       r->driver_path);
 
-	if (strlen(driver->data_file)) {
-		r->data_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->data_file);
-	} else {
-		r->data_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->data_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->data_file,
+			       r->data_file);
 
-	if (strlen(driver->config_file)) {
-		r->config_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->config_file);
-	} else {
-		r->config_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->config_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->config_file,
+			       r->config_file);
 
 	r->driver_attributes	= 0;
 	r->config_version	= 0;
@@ -4779,7 +4683,7 @@
 
 static WERROR fill_printer_driver_info6(TALLOC_CTX *mem_ctx,
 					struct spoolss_DriverInfo6 *r,
-					const struct spoolss_DriverInfo3 *driver,
+					const struct spoolss_DriverInfo8 *driver,
 					const char *servername)
 {
 	const char *cservername = canon_servername(servername);
@@ -4791,68 +4695,150 @@
 	r->architecture		= talloc_strdup(mem_ctx, driver->architecture);
 	W_ERROR_HAVE_NO_MEMORY(r->architecture);
 
-	if (strlen(driver->driver_path)) {
-		r->driver_path	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->driver_path);
-	} else {
-		r->driver_path	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->driver_path);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->driver_path,
+			       r->driver_path);
 
-	if (strlen(driver->data_file)) {
-		r->data_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->data_file);
-	} else {
-		r->data_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->data_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->data_file,
+			       r->data_file);
 
-	if (strlen(driver->config_file)) {
-		r->config_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->config_file);
-	} else {
-		r->config_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->config_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->config_file,
+			       r->config_file);
 
-	if (strlen(driver->help_file)) {
-		r->help_file	= talloc_asprintf(mem_ctx, "\\\\%s%s",
-				cservername, driver->help_file);
-	} else {
-		r->help_file	= talloc_strdup(mem_ctx, "");
-	}
-	W_ERROR_HAVE_NO_MEMORY(r->help_file);
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->help_file,
+			       r->help_file);
 
-	r->monitor_name		= talloc_strdup(mem_ctx, driver->monitor_name);
-	W_ERROR_HAVE_NO_MEMORY(r->monitor_name);
-	r->default_datatype	= talloc_strdup(mem_ctx, driver->default_datatype);
-	W_ERROR_HAVE_NO_MEMORY(r->default_datatype);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->monitor_name,
+			   r->monitor_name);
 
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->default_datatype,
+			   r->default_datatype);
+
 	r->dependent_files = string_array_from_driver_info(mem_ctx,
 							   driver->dependent_files,
 							   cservername);
 	r->previous_names = string_array_from_driver_info(mem_ctx,
-							  NULL,
+							  driver->previous_names,
 							  cservername);
 
-	r->driver_date		= 0;
-	r->driver_version	= 0;
+	r->driver_date		= driver->driver_date;
+	r->driver_version	= driver->driver_version;
 
-	r->manufacturer_name	= talloc_strdup(mem_ctx, "");
-	W_ERROR_HAVE_NO_MEMORY(r->manufacturer_name);
-	r->manufacturer_url	= talloc_strdup(mem_ctx, "");
-	W_ERROR_HAVE_NO_MEMORY(r->manufacturer_url);
-	r->hardware_id		= talloc_strdup(mem_ctx, "");
-	W_ERROR_HAVE_NO_MEMORY(r->hardware_id);
-	r->provider		= talloc_strdup(mem_ctx, "");
-	W_ERROR_HAVE_NO_MEMORY(r->provider);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->manufacturer_name,
+			   r->manufacturer_name);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->manufacturer_url,
+			   r->manufacturer_url);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->hardware_id,
+			   r->hardware_id);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->provider,
+			   r->provider);
 
 	return WERR_OK;
 }
 
 /********************************************************************
+ * fill a spoolss_DriverInfo8 struct
  ********************************************************************/
 
+static WERROR fill_printer_driver_info8(TALLOC_CTX *mem_ctx,
+					struct spoolss_DriverInfo8 *r,
+					const struct spoolss_DriverInfo8 *driver,
+					const char *servername)
+{
+	const char *cservername = canon_servername(servername);
+
+	r->version		= driver->version;
+
+	r->driver_name		= talloc_strdup(mem_ctx, driver->driver_name);
+	W_ERROR_HAVE_NO_MEMORY(r->driver_name);
+	r->architecture		= talloc_strdup(mem_ctx, driver->architecture);
+	W_ERROR_HAVE_NO_MEMORY(r->architecture);
+
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->driver_path,
+			       r->driver_path);
+
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->data_file,
+			       r->data_file);
+
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->config_file,
+			       r->config_file);
+
+	FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+			       driver->help_file,
+			       r->help_file);
+
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->monitor_name,
+			   r->monitor_name);
+
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->default_datatype,
+			   r->default_datatype);
+
+	r->dependent_files = string_array_from_driver_info(mem_ctx,
+							   driver->dependent_files,
+							   cservername);
+	r->previous_names = string_array_from_driver_info(mem_ctx,
+							  driver->previous_names,
+							  cservername);
+
+	r->driver_date		= driver->driver_date;
+	r->driver_version	= driver->driver_version;
+
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->manufacturer_name,
+			   r->manufacturer_name);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->manufacturer_url,
+			   r->manufacturer_url);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->hardware_id,
+			   r->hardware_id);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->provider,
+			   r->provider);
+
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->print_processor,
+			   r->print_processor);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->vendor_setup,
+			   r->vendor_setup);
+
+	r->color_profiles = string_array_from_driver_info(mem_ctx,
+							  driver->color_profiles,
+							  cservername);
+
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->inf_path,
+			   r->inf_path);
+
+	r->printer_driver_attributes	= driver->printer_driver_attributes;
+
+	r->core_driver_dependencies = string_array_from_driver_info(mem_ctx,
+								    driver->core_driver_dependencies,
+								    cservername);
+
+	r->min_inbox_driver_ver_date	= driver->min_inbox_driver_ver_date;
+	r->min_inbox_driver_ver_version	= driver->min_inbox_driver_ver_version;
+
+	return WERR_OK;
+}
+/********************************************************************
+ ********************************************************************/
+
 static WERROR fill_spoolss_DriverFileInfo(TALLOC_CTX *mem_ctx,
 					  struct spoolss_DriverFileInfo *r,
 					  const char *cservername,
@@ -4873,7 +4859,7 @@
  ********************************************************************/
 
 static WERROR spoolss_DriverFileInfo_from_driver(TALLOC_CTX *mem_ctx,
-						 const struct spoolss_DriverInfo3 *driver,
+						 const struct spoolss_DriverInfo8 *driver,
 						 const char *cservername,
 						 struct spoolss_DriverFileInfo **info_p,
 						 uint32_t *count_p)
@@ -4973,7 +4959,7 @@
 
 static WERROR fill_printer_driver_info101(TALLOC_CTX *mem_ctx,
 					  struct spoolss_DriverInfo101 *r,
-					  const struct spoolss_DriverInfo3 *driver,
+					  const struct spoolss_DriverInfo8 *driver,
 					  const char *servername)
 {
 	const char *cservername = canon_servername(servername);
@@ -4994,245 +4980,64 @@
 		return result;
 	}
 
-	r->monitor_name		= talloc_strdup(mem_ctx, driver->monitor_name);
-	W_ERROR_HAVE_NO_MEMORY(r->monitor_name);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->monitor_name,
+			   r->monitor_name);
 
-	r->default_datatype	= talloc_strdup(mem_ctx, driver->default_datatype);
-	W_ERROR_HAVE_NO_MEMORY(r->default_datatype);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->default_datatype,
+			   r->default_datatype);
 
 	r->previous_names = string_array_from_driver_info(mem_ctx,
-							  NULL,
+							  driver->previous_names,
 							  cservername);
-	r->driver_date		= 0;
-	r->driver_version	= 0;
+	r->driver_date		= driver->driver_date;
+	r->driver_version	= driver->driver_version;
 
-	r->manufacturer_name	= talloc_strdup(mem_ctx, "");
-	W_ERROR_HAVE_NO_MEMORY(r->manufacturer_name);
-	r->manufacturer_url	= talloc_strdup(mem_ctx, "");
-	W_ERROR_HAVE_NO_MEMORY(r->manufacturer_url);
-	r->hardware_id		= talloc_strdup(mem_ctx, "");
-	W_ERROR_HAVE_NO_MEMORY(r->hardware_id);
-	r->provider		= talloc_strdup(mem_ctx, "");
-	W_ERROR_HAVE_NO_MEMORY(r->provider);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->manufacturer_name,
+			   r->manufacturer_name);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->manufacturer_url,
+			   r->manufacturer_url);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->hardware_id,
+			   r->hardware_id);
+	FILL_DRIVER_STRING(mem_ctx,
+			   driver->provider,
+			   r->provider);
 
 	return WERR_OK;
 }
 
 /********************************************************************
- * construct_printer_driver_info_1
  ********************************************************************/
 
-static WERROR construct_printer_driver_info_1(TALLOC_CTX *mem_ctx,
-					      struct spoolss_DriverInfo1 *r,
-					      int snum,
-					      const char *servername,
-					      const char *architecture,
-					      uint32_t version)
+static WERROR construct_printer_driver_info_level(TALLOC_CTX *mem_ctx,
+						  uint32_t level,
+						  union spoolss_DriverInfo *r,
+						  int snum,
+						  const char *servername,
+						  const char *architecture,
+						  uint32_t version)
 {
 	NT_PRINTER_INFO_LEVEL *printer = NULL;
-	union spoolss_DriverInfo *driver;
+	struct spoolss_DriverInfo8 *driver;
 	WERROR result;
 
-	if (!W_ERROR_IS_OK(get_a_printer(NULL, &printer, 2, lp_const_servicename(snum))))
-		return WERR_INVALID_PRINTER_NAME;
-
-	if (!W_ERROR_IS_OK(get_a_printer_driver(mem_ctx, &driver, 3, printer->info_2->drivername, architecture, version))) {
-		free_a_printer(&printer, 2);
-		return WERR_UNKNOWN_PRINTER_DRIVER;
-	}
-
-	result = fill_printer_driver_info1(mem_ctx, r, &driver->info3, servername, architecture);
-
-	free_a_printer_driver(driver);
-	free_a_printer(&printer,2);
-
-	return result;
-}
-
-/********************************************************************
- * construct_printer_driver_info_2
- * fill a printer_info_2 struct
- ********************************************************************/
-
-static WERROR construct_printer_driver_info_2(TALLOC_CTX *mem_ctx,
-					      struct spoolss_DriverInfo2 *r,
-					      int snum,
-					      const char *servername,
-					      const char *architecture,
-					      uint32_t version)
-{
-	NT_PRINTER_INFO_LEVEL *printer = NULL;
-	union spoolss_DriverInfo *driver;
-	WERROR result;
-
-	ZERO_STRUCT(printer);
-
-	if (!W_ERROR_IS_OK(get_a_printer(NULL, &printer, 2, lp_const_servicename(snum))))
-		return WERR_INVALID_PRINTER_NAME;
-
-	if (!W_ERROR_IS_OK(get_a_printer_driver(mem_ctx, &driver, 3, printer->info_2->drivername, architecture, version))) {
-		free_a_printer(&printer, 2);
-		return WERR_UNKNOWN_PRINTER_DRIVER;
-	}
-
-	result = fill_printer_driver_info2(mem_ctx, r, &driver->info3, servername);
-
-	free_a_printer_driver(driver);
-	free_a_printer(&printer,2);
-
-	return result;
-}
-
-/********************************************************************
- * construct_printer_info_3
- * fill a printer_info_3 struct
- ********************************************************************/
-
-static WERROR construct_printer_driver_info_3(TALLOC_CTX *mem_ctx,
-					      struct spoolss_DriverInfo3 *r,
-					      int snum,
-					      const char *servername,
-					      const char *architecture,
-					      uint32_t version)
-{
-	NT_PRINTER_INFO_LEVEL *printer = NULL;
-	union spoolss_DriverInfo *driver;
-	WERROR status;
-	ZERO_STRUCT(driver);
-
-	status=get_a_printer(NULL, &printer, 2, lp_const_servicename(snum) );
-	DEBUG(8,("construct_printer_driver_info_3: status: %s\n", win_errstr(status)));
-	if (!W_ERROR_IS_OK(status))
-		return WERR_INVALID_PRINTER_NAME;
-
-	status = get_a_printer_driver(mem_ctx, &driver, 3, printer->info_2->drivername, architecture, version);
-	DEBUG(8,("construct_printer_driver_info_3: status: %s\n", win_errstr(status)));
-
-#if 0	/* JERRY */
-
-	/*
-	 * I put this code in during testing.  Helpful when commenting out the
-	 * support for DRIVER_INFO_6 in regards to win2k.  Not needed in general
-	 * as win2k always queries the driver using an infor level of 6.
-	 * I've left it in (but ifdef'd out) because I'll probably
-	 * use it in experimentation again in the future.   --jerry 22/01/2002
-	 */
-
-	if (!W_ERROR_IS_OK(status)) {
-		/*
-		 * Is this a W2k client ?
-		 */
-		if (version == 3) {
-			/* Yes - try again with a WinNT driver. */
-			version = 2;
-			status=get_a_printer_driver(&driver, 3, printer->info_2->drivername, architecture, version);
-			DEBUG(8,("construct_printer_driver_info_3: status: %s\n", win_errstr(status)));
-		}
-#endif
-
-		if (!W_ERROR_IS_OK(status)) {
-			free_a_printer(&printer,2);
-			return WERR_UNKNOWN_PRINTER_DRIVER;
-		}
-
-#if 0	/* JERRY */
-	}
-#endif
-
-
-	status = fill_printer_driver_info3(mem_ctx, r, &driver->info3, servername);
-
-	free_a_printer_driver(driver);
-	free_a_printer(&printer,2);
-
-	return status;
-}
-
-/********************************************************************
- * construct_printer_info_6
- * fill a printer_info_6 struct
- ********************************************************************/
-
-static WERROR construct_printer_driver_info_6(TALLOC_CTX *mem_ctx,
-					      struct spoolss_DriverInfo6 *r,
-					      int snum,
-					      const char *servername,
-					      const char *architecture,
-					      uint32_t version)
-{
-	NT_PRINTER_INFO_LEVEL 		*printer = NULL;
-	union spoolss_DriverInfo *driver;
-	WERROR 				status;
-
-	status=get_a_printer(NULL, &printer, 2, lp_const_servicename(snum) );
-
-	DEBUG(8,("construct_printer_driver_info_6: status: %s\n", win_errstr(status)));
-
-	if (!W_ERROR_IS_OK(status))
-		return WERR_INVALID_PRINTER_NAME;
-
-	status = get_a_printer_driver(mem_ctx, &driver, 3, printer->info_2->drivername, architecture, version);
-
-	DEBUG(8,("construct_printer_driver_info_6: status: %s\n", win_errstr(status)));
-
-	if (!W_ERROR_IS_OK(status))
-	{
-		/*
-		 * Is this a W2k client ?
-		 */
-
-		if (version < 3) {
-			free_a_printer(&printer,2);
-			return WERR_UNKNOWN_PRINTER_DRIVER;
-		}
-
-		/* Yes - try again with a WinNT driver. */
-		version = 2;
-		status = get_a_printer_driver(mem_ctx, &driver, 3, printer->info_2->drivername, architecture, version);
-		DEBUG(8,("construct_printer_driver_info_6: status: %s\n", win_errstr(status)));
-		if (!W_ERROR_IS_OK(status)) {
-			free_a_printer(&printer,2);
-			return WERR_UNKNOWN_PRINTER_DRIVER;
-		}
-	}
-
-	status = fill_printer_driver_info6(mem_ctx, r, &driver->info3, servername);
-
-	free_a_printer(&printer,2);
-	free_a_printer_driver(driver);
-
-	return status;
-}
-
-/********************************************************************
- * construct_printer_info_101
- * fill a printer_info_101 struct
- ********************************************************************/
-
-static WERROR construct_printer_driver_info_101(TALLOC_CTX *mem_ctx,
-						struct spoolss_DriverInfo101 *r,
-						int snum,
-						const char *servername,
-						const char *architecture,
-						uint32_t version)
-{
-	NT_PRINTER_INFO_LEVEL 		*printer = NULL;
-	union spoolss_DriverInfo *driver;
-	WERROR 				result;
-
 	result = get_a_printer(NULL, &printer, 2, lp_const_servicename(snum));
 
-	DEBUG(8,("construct_printer_driver_info_101: status: %s\n",
+	DEBUG(8,("construct_printer_driver_info_level: status: %s\n",
 		win_errstr(result)));
 
 	if (!W_ERROR_IS_OK(result)) {
 		return WERR_INVALID_PRINTER_NAME;
 	}
 
-	result = get_a_printer_driver(mem_ctx, &driver, 3, printer->info_2->drivername,
+	result = get_a_printer_driver(mem_ctx, &driver, printer->info_2->drivername,
 				      architecture, version);
 
-	DEBUG(8,("construct_printer_driver_info_101: status: %s\n",
+	DEBUG(8,("construct_printer_driver_info_level: status: %s\n",
 		win_errstr(result)));
 
 	if (!W_ERROR_IS_OK(result)) {
@@ -5247,9 +5052,9 @@
 
 		/* Yes - try again with a WinNT driver. */
 		version = 2;
-		result = get_a_printer_driver(mem_ctx, &driver, 3, printer->info_2->drivername,
+		result = get_a_printer_driver(mem_ctx, &driver, printer->info_2->drivername,
 					      architecture, version);
-		DEBUG(8,("construct_printer_driver_info_6: status: %s\n",
+		DEBUG(8,("construct_printer_driver_level: status: %s\n",
 			win_errstr(result)));
 		if (!W_ERROR_IS_OK(result)) {
 			free_a_printer(&printer, 2);
@@ -5257,7 +5062,35 @@
 		}
 	}
 
-	result = fill_printer_driver_info101(mem_ctx, r, &driver->info3, servername);
+	switch (level) {
+	case 1:
+		result = fill_printer_driver_info1(mem_ctx, &r->info1, driver, servername);
+		break;
+	case 2:
+		result = fill_printer_driver_info2(mem_ctx, &r->info2, driver, servername);
+		break;
+	case 3:
+		result = fill_printer_driver_info3(mem_ctx, &r->info3, driver, servername);
+		break;
+	case 4:
+		result = fill_printer_driver_info4(mem_ctx, &r->info4, driver, servername);
+		break;
+	case 5:
+		result = fill_printer_driver_info5(mem_ctx, &r->info5, driver, servername);
+		break;
+	case 6:
+		result = fill_printer_driver_info6(mem_ctx, &r->info6, driver, servername);
+		break;
+	case 8:
+		result = fill_printer_driver_info8(mem_ctx, &r->info8, driver, servername);
+		break;
+	case 101:
+		result = fill_printer_driver_info101(mem_ctx, &r->info101, driver, servername);
+		break;
+	default:
+		result = WERR_UNKNOWN_LEVEL;
+		break;
+	}
 
 	free_a_printer(&printer, 2);
 	free_a_printer_driver(driver);
@@ -5301,52 +5134,11 @@
 		return WERR_BADFID;
 	}
 
-	switch (r->in.level) {
-	case 1:
-		result = construct_printer_driver_info_1(p->mem_ctx,
-							 &r->out.info->info1,
-							 snum,
-							 servername,
-							 r->in.architecture,
-							 r->in.client_major_version);
-		break;
-	case 2:
-		result = construct_printer_driver_info_2(p->mem_ctx,
-							 &r->out.info->info2,
-							 snum,
-							 servername,
-							 r->in.architecture,
-							 r->in.client_major_version);
-		break;
-	case 3:
-		result = construct_printer_driver_info_3(p->mem_ctx,
-							 &r->out.info->info3,
-							 snum,
-							 servername,
-							 r->in.architecture,
-							 r->in.client_major_version);
-		break;
-	case 6:
-		result = construct_printer_driver_info_6(p->mem_ctx,
-							 &r->out.info->info6,
-							 snum,
-							 servername,
-							 r->in.architecture,
-							 r->in.client_major_version);
-		break;
-	case 101:
-		result = construct_printer_driver_info_101(p->mem_ctx,
-							   &r->out.info->info101,
-							   snum,
-							   servername,
-							   r->in.architecture,
-							   r->in.client_major_version);
-		break;
-	default:
-		result = WERR_UNKNOWN_LEVEL;
-		break;
-	}
-
+	result = construct_printer_driver_info_level(p->mem_ctx, r->in.level,
+						     r->out.info, snum,
+						     servername,
+						     r->in.architecture,
+						     r->in.client_major_version);
 	if (!W_ERROR_IS_OK(result)) {
 		TALLOC_FREE(r->out.info);
 		return result;
@@ -6556,7 +6348,7 @@
 	int ndrivers;
 	uint32_t version;
 	fstring *list = NULL;
-	union spoolss_DriverInfo *driver;
+	struct spoolss_DriverInfo8 *driver;
 	union spoolss_DriverInfo *info = NULL;
 	uint32_t count = 0;
 	WERROR result = WERR_OK;
@@ -6580,7 +6372,7 @@
 						    union spoolss_DriverInfo,
 						    count + ndrivers);
 			if (!info) {
-				DEBUG(0,("enumprinterdrivers_level1: "
+				DEBUG(0,("enumprinterdrivers_level_by_architecture: "
 					"failed to enlarge driver info buffer!\n"));
 				result = WERR_NOMEM;
 				goto out;
@@ -6590,7 +6382,7 @@
 		for (i=0; i<ndrivers; i++) {
 			DEBUGADD(5,("\tdriver: [%s]\n", list[i]));
 			ZERO_STRUCT(driver);
-			result = get_a_printer_driver(mem_ctx, &driver, 3, list[i],
+			result = get_a_printer_driver(mem_ctx, &driver, list[i],
 						      architecture, version);
 			if (!W_ERROR_IS_OK(result)) {
 				goto out;
@@ -6599,29 +6391,32 @@
 			switch (level) {
 			case 1:
 				result = fill_printer_driver_info1(info, &info[count+i].info1,
-								   &driver->info3, servername,
-								   architecture);
+								   driver, servername);
 				break;
 			case 2:
 				result = fill_printer_driver_info2(info, &info[count+i].info2,
-								   &driver->info3, servername);
+								   driver, servername);
 				break;
 			case 3:
 				result = fill_printer_driver_info3(info, &info[count+i].info3,
-								   &driver->info3, servername);
+								   driver, servername);
 				break;
 			case 4:
 				result = fill_printer_driver_info4(info, &info[count+i].info4,
-								   &driver->info3, servername);
+								   driver, servername);
 				break;
 			case 5:
 				result = fill_printer_driver_info5(info, &info[count+i].info5,
-								   &driver->info3, servername);
+								   driver, servername);
 				break;
 			case 6:
 				result = fill_printer_driver_info6(info, &info[count+i].info6,
-								   &driver->info3, servername);
+								   driver, servername);
 				break;
+			case 8:
+				result = fill_printer_driver_info8(info, &info[count+i].info8,
+								   driver, servername);
+				break;
 			default:
 				result = WERR_UNKNOWN_LEVEL;
 				break;
@@ -6666,7 +6461,7 @@
 	uint32_t a,i;
 	WERROR result = WERR_OK;
 
-	if (strequal(architecture, "all")) {
+	if (strequal(architecture, SPOOLSS_ARCHITECTURE_ALL)) {
 
 		for (a=0; archi_table[a].long_archi != NULL; a++) {
 
@@ -6700,91 +6495,6 @@
 							count_p);
 }
 
-/****************************************************************************
- Enumerates all printer drivers at level 1.
-****************************************************************************/
-
-static WERROR enumprinterdrivers_level1(TALLOC_CTX *mem_ctx,
-					const char *servername,
-					const char *architecture,
-					union spoolss_DriverInfo **info_p,
-					uint32_t *count)
-{
-	return enumprinterdrivers_level(mem_ctx, servername, architecture, 1,
-					info_p, count);
-}
-
-/****************************************************************************
- Enumerates all printer drivers at level 2.
-****************************************************************************/
-
-static WERROR enumprinterdrivers_level2(TALLOC_CTX *mem_ctx,
-					const char *servername,
-					const char *architecture,
-					union spoolss_DriverInfo **info_p,
-					uint32_t *count)
-{
-	return enumprinterdrivers_level(mem_ctx, servername, architecture, 2,
-					info_p, count);
-}
-
-/****************************************************************************
- Enumerates all printer drivers at level 3.
-****************************************************************************/
-
-static WERROR enumprinterdrivers_level3(TALLOC_CTX *mem_ctx,
-					const char *servername,
-					const char *architecture,
-					union spoolss_DriverInfo **info_p,
-					uint32_t *count)
-{
-	return enumprinterdrivers_level(mem_ctx, servername, architecture, 3,
-					info_p, count);
-}
-
-/****************************************************************************
- Enumerates all printer drivers at level 4.
-****************************************************************************/
-
-static WERROR enumprinterdrivers_level4(TALLOC_CTX *mem_ctx,
-					const char *servername,
-					const char *architecture,
-					union spoolss_DriverInfo **info_p,
-					uint32_t *count)
-{
-	return enumprinterdrivers_level(mem_ctx, servername, architecture, 4,
-					info_p, count);
-}
-
-/****************************************************************************
- Enumerates all printer drivers at level 5.
-****************************************************************************/
-
-static WERROR enumprinterdrivers_level5(TALLOC_CTX *mem_ctx,
-					const char *servername,
-					const char *architecture,
-					union spoolss_DriverInfo **info_p,
-					uint32_t *count)
-{
-	return enumprinterdrivers_level(mem_ctx, servername, architecture, 5,
-					info_p, count);
-}
-
-/****************************************************************************
- Enumerates all printer drivers at level 6.
-****************************************************************************/
-
-static WERROR enumprinterdrivers_level6(TALLOC_CTX *mem_ctx,
-					const char *servername,
-					const char *architecture,
-					union spoolss_DriverInfo **info_p,
-					uint32_t *count)
-{
-	return enumprinterdrivers_level(mem_ctx, servername, architecture, 6,
-					info_p, count);
-}
-
-
 /****************************************************************
  _spoolss_EnumPrinterDrivers
 ****************************************************************/
@@ -6813,41 +6523,11 @@
 		return WERR_UNKNOWN_PRINTER_DRIVER;
 	}
 
-	switch (r->in.level) {
-	case 1:
-		result = enumprinterdrivers_level1(p->mem_ctx, cservername,
-						   r->in.environment,
-						   r->out.info, r->out.count);
-		break;
-	case 2:
-		result = enumprinterdrivers_level2(p->mem_ctx, cservername,
-						   r->in.environment,
-						   r->out.info, r->out.count);
-		break;
-	case 3:
-		result = enumprinterdrivers_level3(p->mem_ctx, cservername,
-						   r->in.environment,
-						   r->out.info, r->out.count);
-		break;
-	case 4:
-		result = enumprinterdrivers_level4(p->mem_ctx, cservername,
-						   r->in.environment,
-						   r->out.info, r->out.count);
-		break;
-	case 5:
-		result = enumprinterdrivers_level5(p->mem_ctx, cservername,
-						   r->in.environment,
-						   r->out.info, r->out.count);
-		break;
-	case 6:
-		result = enumprinterdrivers_level6(p->mem_ctx, cservername,
-						   r->in.environment,
-						   r->out.info, r->out.count);
-		break;
-	default:
-		return WERR_UNKNOWN_LEVEL;
-	}
-
+	result = enumprinterdrivers_level(p->mem_ctx, cservername,
+					  r->in.environment,
+					  r->in.level,
+					  r->out.info,
+					  r->out.count);
 	if (!W_ERROR_IS_OK(result)) {
 		return result;
 	}
@@ -7601,9 +7281,9 @@
 		*/
 		case 2:
 		{
-			union spoolss_DriverInfo *driver1;
+			struct spoolss_DriverInfo8 *driver1;
 
-			if (!W_ERROR_IS_OK(get_a_printer_driver(p->mem_ctx, &driver1, 3, driver_name, "Windows NT x86", 3))) {
+			if (!W_ERROR_IS_OK(get_a_printer_driver(p->mem_ctx, &driver1, driver_name, "Windows NT x86", 3))) {
 				/*
 				 * No 2k/Xp driver found, delete init data (if any) for the new Nt driver.
 				*/
@@ -7967,81 +7647,16 @@
 WERROR _spoolss_SetPrinterData(pipes_struct *p,
 			       struct spoolss_SetPrinterData *r)
 {
-	NT_PRINTER_INFO_LEVEL *printer = NULL;
-	int snum=0;
-	WERROR result = WERR_OK;
-	Printer_entry *Printer = find_printer_index_by_hnd(p, r->in.handle);
-	DATA_BLOB blob;
+	struct spoolss_SetPrinterDataEx r2;
 
-	DEBUG(5,("_spoolss_SetPrinterData\n"));
+	r2.in.handle		= r->in.handle;
+	r2.in.key_name		= "PrinterDriverData";
+	r2.in.value_name	= r->in.value_name;
+	r2.in.type		= r->in.type;
+	r2.in.data		= r->in.data;
+	r2.in._offered		= r->in._offered;
 
-	if (!Printer) {
-		DEBUG(2,("_spoolss_SetPrinterData: Invalid handle (%s:%u:%u).\n",
-			OUR_HANDLE(r->in.handle)));
-		return WERR_BADFID;
-	}
-
-	if (Printer->printer_type == SPLHND_SERVER) {
-		DEBUG(10,("_spoolss_SetPrinterData: "
-			"Not implemented for server handles yet\n"));
-		return WERR_INVALID_PARAM;
-	}
-
-	if (!get_printer_snum(p, r->in.handle, &snum, NULL)) {
-		return WERR_BADFID;
-	}
-
-	/*
-	 * Access check : NT returns "access denied" if you make a
-	 * SetPrinterData call without the necessary privildge.
-	 * we were originally returning OK if nothing changed
-	 * which made Win2k issue **a lot** of SetPrinterData
-	 * when connecting to a printer  --jerry
-	 */
-
-	if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
-		DEBUG(3,("_spoolss_SetPrinterData: "
-			"change denied by handle access permissions\n"));
-		result = WERR_ACCESS_DENIED;
-		goto done;
-	}
-
-	result = get_a_printer(Printer, &printer, 2, lp_const_servicename(snum));
-	if (!W_ERROR_IS_OK(result)) {
-		return result;
-	}
-
-	result = push_spoolss_PrinterData(p->mem_ctx, &blob,
-					  r->in.type, &r->in.data);
-	if (!W_ERROR_IS_OK(result)) {
-		goto done;
-	}
-
-	/*
-	 * When client side code sets a magic printer data key, detect it and save
-	 * the current printer data and the magic key's data (its the DEVMODE) for
-	 * future printer/driver initializations.
-	 */
-	if ((r->in.type == REG_BINARY) && strequal(r->in.value_name, PHANTOM_DEVMODE_KEY)) {
-		/* Set devmode and printer initialization info */
-		result = save_driver_init(printer, 2, blob.data, blob.length);
-
-		srv_spoolss_reset_printerdata(printer->info_2->drivername);
-
-		goto done;
-	}
-
-	result = set_printer_dataex(printer, SPOOL_PRINTERDATA_KEY,
-				    r->in.value_name, r->in.type,
-				    blob.data, blob.length);
-	if (W_ERROR_IS_OK(result)) {
-		result = mod_a_printer(printer, 2);
-	}
-
-done:
-	free_a_printer(&printer, 2);
-
-	return result;
+	return _spoolss_SetPrinterDataEx(p, &r2);
 }
 
 /****************************************************************
@@ -8083,46 +7698,13 @@
 WERROR _spoolss_DeletePrinterData(pipes_struct *p,
 				  struct spoolss_DeletePrinterData *r)
 {
-	NT_PRINTER_INFO_LEVEL 	*printer = NULL;
-	int 		snum=0;
-	WERROR 		status = WERR_OK;
-	Printer_entry 	*Printer = find_printer_index_by_hnd(p, r->in.handle);
+	struct spoolss_DeletePrinterDataEx r2;
 
-	DEBUG(5,("_spoolss_DeletePrinterData\n"));
+	r2.in.handle		= r->in.handle;
+	r2.in.key_name		= "PrinterDriverData";
+	r2.in.value_name	= r->in.value_name;
 
-	if (!Printer) {
-		DEBUG(2,("_spoolss_DeletePrinterData: Invalid handle (%s:%u:%u).\n",
-			OUR_HANDLE(r->in.handle)));
-		return WERR_BADFID;
-	}
-
-	if (!get_printer_snum(p, r->in.handle, &snum, NULL))
-		return WERR_BADFID;
-
-	if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
-		DEBUG(3, ("_spoolss_DeletePrinterData: "
-			"printer properties change denied by handle\n"));
-		return WERR_ACCESS_DENIED;
-	}
-
-	status = get_a_printer(Printer, &printer, 2, lp_const_servicename(snum));
-	if (!W_ERROR_IS_OK(status))
-		return status;
-
-	if (!r->in.value_name) {
-		free_a_printer(&printer, 2);
-		return WERR_NOMEM;
-	}
-
-	status = delete_printer_dataex( printer, SPOOL_PRINTERDATA_KEY,
-					r->in.value_name );
-
-	if ( W_ERROR_IS_OK(status) )
-		mod_a_printer( printer, 2 );
-
-	free_a_printer(&printer, 2);
-
-	return status;
+	return _spoolss_DeletePrinterDataEx(p, &r2);
 }
 
 /****************************************************************
@@ -8886,9 +8468,6 @@
 
 /****************************************************************
  _spoolss_GetPrinterDataEx
-
- From MSDN documentation of GetPrinterDataEx: pass request
- to GetPrinterData if key is "PrinterDriverData".
 ****************************************************************/
 
 WERROR _spoolss_GetPrinterDataEx(pipes_struct *p,
@@ -8900,6 +8479,7 @@
 	NT_PRINTER_INFO_LEVEL 	*printer = NULL;
 	int 			snum = 0;
 	WERROR result = WERR_OK;
+	DATA_BLOB blob;
 
 	DEBUG(4,("_spoolss_GetPrinterDataEx\n"));
 
@@ -8921,14 +8501,17 @@
 	/* Is the handle to a printer or to the server? */
 
 	if (Printer->printer_type == SPLHND_SERVER) {
-		DEBUG(10,("_spoolss_GetPrinterDataEx: "
-			"Not implemented for server handles yet\n"));
-		result = WERR_INVALID_PARAM;
+
+		result = getprinterdata_printer_server(p->mem_ctx,
+						       r->in.value_name,
+						       r->out.type,
+						       r->out.data);
 		goto done;
 	}
 
 	if (!get_printer_snum(p, r->in.handle, &snum, NULL)) {
-		return WERR_BADFID;
+		result = WERR_BADFID;
+		goto done;
 	}
 
 	result = get_a_printer(Printer, &printer, 2, lp_servicename(snum));
@@ -8942,6 +8525,17 @@
 		goto done;
 	}
 
+	/* XP sends this and wants to change id value from the PRINTER_INFO_0 */
+
+	if (strequal(r->in.key_name, SPOOL_PRINTERDATA_KEY) &&
+	    strequal(r->in.value_name, "ChangeId")) {
+		*r->out.type = REG_DWORD;
+		*r->out.needed = 4;
+		r->out.data->value = printer->info_2->changeid;
+		result = WERR_OK;
+		goto done;
+	}
+
 	if (lookup_printerkey(printer->info_2->data, r->in.key_name) == -1) {
 		DEBUG(4,("_spoolss_GetPrinterDataEx: "
 			"Invalid keyname [%s]\n", r->in.key_name ));
@@ -8949,8 +8543,6 @@
 		goto done;
 	}
 
-	/* When given a new keyname, we should just create it */
-
 	val = get_printer_data(printer->info_2,
 			       r->in.key_name, r->in.value_name);
 	if (!val) {
@@ -8959,22 +8551,28 @@
 	}
 
 	*r->out.needed = regval_size(val);
-
-	if (*r->out.needed > r->in.offered) {
-		result = WERR_MORE_DATA;
-		goto done;
-	}
-
 	*r->out.type = regval_type(val);
 
-	memcpy(r->out.buffer, regval_data_p(val), regval_size(val));
+	blob = data_blob_const(regval_data_p(val), regval_size(val));
 
+	result = pull_spoolss_PrinterData(p->mem_ctx, &blob,
+					  r->out.data,
+					  *r->out.type);
+
  done:
 	if (printer) {
 		free_a_printer(&printer, 2);
 	}
 
-	return result;
+	if (!W_ERROR_IS_OK(result)) {
+		return result;
+	}
+
+	*r->out.needed  = ndr_size_spoolss_PrinterData(r->out.data, *r->out.type, NULL, 0);
+	*r->out.type    = SPOOLSS_BUFFER_OK(*r->out.type, REG_NONE);
+	r->out.data     = SPOOLSS_BUFFER_OK(r->out.data, r->out.data);
+
+	return SPOOLSS_BUFFER_OK(WERR_OK, WERR_MORE_DATA);
 }
 
 /****************************************************************
@@ -8989,6 +8587,7 @@
 	WERROR 			result = WERR_OK;
 	Printer_entry 		*Printer = find_printer_index_by_hnd(p, r->in.handle);
 	char			*oid_string;
+	DATA_BLOB blob;
 
 	DEBUG(4,("_spoolss_SetPrinterDataEx\n"));
 
@@ -9038,10 +8637,30 @@
 		oid_string++;
 	}
 
+	result = push_spoolss_PrinterData(p->mem_ctx, &blob,
+					  r->in.type, &r->in.data);
+	if (!W_ERROR_IS_OK(result)) {
+		goto done;
+	}
+
+	/*
+	 * When client side code sets a magic printer data key, detect it and save
+	 * the current printer data and the magic key's data (its the DEVMODE) for
+	 * future printer/driver initializations.
+	 */
+	if ((r->in.type == REG_BINARY) && strequal(r->in.value_name, PHANTOM_DEVMODE_KEY)) {
+		/* Set devmode and printer initialization info */
+		result = save_driver_init(printer, 2, blob.data, blob.length);
+
+		srv_spoolss_reset_printerdata(printer->info_2->drivername);
+
+		goto done;
+	}
+
 	/* save the registry data */
 
 	result = set_printer_dataex(printer, r->in.key_name, r->in.value_name,
-				    r->in.type, r->in.buffer, r->in.offered);
+				    r->in.type, blob.data, blob.length);
 
 	if (W_ERROR_IS_OK(result)) {
 		/* save the OID if one was specified */
@@ -9167,16 +8786,20 @@
 		goto done;
 	}
 
-	/* two byte termination (a multisz) */
-
-	*r->out.needed = 2;
-
-	array = talloc_zero_array(r->out.key_buffer, const char *, num_keys + 1);
+	array = talloc_zero_array(r->out.key_buffer, const char *, num_keys + 2);
 	if (!array) {
 		result = WERR_NOMEM;
 		goto done;
 	}
 
+	if (!num_keys) {
+		array[0] = talloc_strdup(array, "");
+		if (!array[0]) {
+			result = WERR_NOMEM;
+			goto done;
+		}
+	}
+
 	for (i=0; i < num_keys; i++) {
 
 		DEBUG(10,("_spoolss_EnumPrinterKey: adding keyname: %s\n",
@@ -9187,24 +8810,21 @@
 			result = WERR_NOMEM;
 			goto done;
 		}
-
-		*r->out.needed += strlen_m_term(keynames[i]) * 2;
 	}
 
-	if (r->in.offered < *r->out.needed) {
-		result = WERR_MORE_DATA;
-		goto done;
-	}
-
-	result = WERR_OK;
-
 	if (!push_reg_multi_sz(p->mem_ctx, &blob, array)) {
 		result = WERR_NOMEM;
 		goto done;
 	}
 
-	if (r->in.offered >= blob.length) {
-		memcpy(r->out.key_buffer, blob.data, blob.length);
+	*r->out._ndr_size = r->in.offered / 2;
+	*r->out.needed = blob.length;
+
+	if (r->in.offered < *r->out.needed) {
+		result = WERR_MORE_DATA;
+	} else {
+		result = WERR_OK;
+		r->out.key_buffer->string_array = array;
 	}
 
  done:

Modified: branches/samba/experimental/source3/rpc_server/srv_srvsvc_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_srvsvc_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_srvsvc_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -24,6 +24,7 @@
 /* This is the implementation of the srvsvc pipe. */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/srv_srvsvc.h"
 
 extern const struct generic_mapping file_generic_mapping;
 

Modified: branches/samba/experimental/source3/rpc_server/srv_svcctl_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_svcctl_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_svcctl_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
  */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/srv_svcctl.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV

Modified: branches/samba/experimental/source3/rpc_server/srv_winreg_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_winreg_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_winreg_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1,19 +1,19 @@
-/* 
+/*
  *  Unix SMB/CIFS implementation.
  *  RPC Pipe client / server routines
- * 
+ *
  *  Copyright (C) Gerald Carter                 2002-2006.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
- *  
+ *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
@@ -21,6 +21,7 @@
 /* Implementation of registry functions. */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/srv_winreg.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV
@@ -43,13 +44,13 @@
 }
 
 /*******************************************************************
- Function for open a new registry handle and creating a handle 
+ Function for open a new registry handle and creating a handle
  Note that P should be valid & hnd should already have space
- 
- When we open a key, we store the full path to the key as 
+
+ When we open a key, we store the full path to the key as
  HK[LM|U]\<key>\<key>\...
  *******************************************************************/
- 
+
 static WERROR open_registry_key( pipes_struct *p, struct policy_handle *hnd,
 				 struct registry_key *parent,
 				 const char *subkeyname,
@@ -70,36 +71,36 @@
 	if ( !W_ERROR_IS_OK(result) ) {
 		return result;
 	}
-	
+
 	if ( !create_policy_hnd( p, hnd, key ) ) {
-		return WERR_BADFILE; 
+		return WERR_BADFILE;
 	}
-	
+
 	return WERR_OK;
 }
 
 /*******************************************************************
- Function for open a new registry handle and creating a handle 
+ Function for open a new registry handle and creating a handle
  Note that P should be valid & hnd should already have space
  *******************************************************************/
 
 static bool close_registry_key(pipes_struct *p, struct policy_handle *hnd)
 {
 	struct registry_key *regkey = find_regkey_by_hnd(p, hnd);
-	
+
 	if ( !regkey ) {
 		DEBUG(2,("close_registry_key: Invalid handle (%s:%u:%u)\n",
 			 OUR_HANDLE(hnd)));
 		return False;
 	}
-	
+
 	close_policy_hnd(p, hnd);
-	
+
 	return True;
 }
 
 /********************************************************************
- reg_close
+ _winreg_CloseKey
  ********************************************************************/
 
 WERROR _winreg_CloseKey(pipes_struct *p, struct winreg_CloseKey *r)
@@ -107,7 +108,7 @@
 	/* close the policy handle */
 
 	if (!close_registry_key(p, r->in.handle))
-		return WERR_BADFID; 
+		return WERR_BADFID;
 
 	ZERO_STRUCTP(r->out.handle);
 
@@ -115,6 +116,7 @@
 }
 
 /*******************************************************************
+ _winreg_OpenHKLM
  ********************************************************************/
 
 WERROR _winreg_OpenHKLM(pipes_struct *p, struct winreg_OpenHKLM *r)
@@ -123,6 +125,7 @@
 }
 
 /*******************************************************************
+ _winreg_OpenHKPD
  ********************************************************************/
 
 WERROR _winreg_OpenHKPD(pipes_struct *p, struct winreg_OpenHKPD *r)
@@ -131,6 +134,7 @@
 }
 
 /*******************************************************************
+ _winreg_OpenHKPT
  ********************************************************************/
 
 WERROR _winreg_OpenHKPT(pipes_struct *p, struct winreg_OpenHKPT *r)
@@ -139,6 +143,7 @@
 }
 
 /*******************************************************************
+ _winreg_OpenHKCR
  ********************************************************************/
 
 WERROR _winreg_OpenHKCR(pipes_struct *p, struct winreg_OpenHKCR *r)
@@ -147,6 +152,7 @@
 }
 
 /*******************************************************************
+ _winreg_OpenHKU
  ********************************************************************/
 
 WERROR _winreg_OpenHKU(pipes_struct *p, struct winreg_OpenHKU *r)
@@ -155,6 +161,7 @@
 }
 
 /*******************************************************************
+ _winreg_OpenHKCU
  ********************************************************************/
 
 WERROR _winreg_OpenHKCU(pipes_struct *p, struct winreg_OpenHKCU *r)
@@ -163,6 +170,7 @@
 }
 
 /*******************************************************************
+ _winreg_OpenHKCC
  ********************************************************************/
 
 WERROR _winreg_OpenHKCC(pipes_struct *p, struct winreg_OpenHKCC *r)
@@ -171,6 +179,7 @@
 }
 
 /*******************************************************************
+ _winreg_OpenHKDD
  ********************************************************************/
 
 WERROR _winreg_OpenHKDD(pipes_struct *p, struct winreg_OpenHKDD *r)
@@ -179,6 +188,7 @@
 }
 
 /*******************************************************************
+ _winreg_OpenHKPN
  ********************************************************************/
 
 WERROR _winreg_OpenHKPN(pipes_struct *p, struct winreg_OpenHKPN *r)
@@ -187,7 +197,7 @@
 }
 
 /*******************************************************************
- reg_reply_open_entry
+ _winreg_OpenKey
  ********************************************************************/
 
 WERROR _winreg_OpenKey(pipes_struct *p, struct winreg_OpenKey *r)
@@ -201,7 +211,7 @@
 }
 
 /*******************************************************************
- reg_reply_info
+ _winreg_QueryValue
  ********************************************************************/
 
 WERROR _winreg_QueryValue(pipes_struct *p, struct winreg_QueryValue *r)
@@ -225,12 +235,12 @@
 	}
 
 	*r->out.data_length = *r->out.type = REG_NONE;
-	
+
 	DEBUG(7,("_reg_info: policy key name = [%s]\n", regkey->key->name));
 	DEBUG(7,("_reg_info: policy key type = [%08x]\n", regkey->key->type));
-	
+
 	/* Handle QueryValue calls on HKEY_PERFORMANCE_DATA */
-	if(regkey->key->type == REG_KEY_HKPD) 
+	if(regkey->key->type == REG_KEY_HKPD)
 	{
 		if (strequal(r->in.value_name->name, "Global"))	{
 			if (!prs_init(&prs_hkpd, *r->in.data_size, p->mem_ctx, MARSHALL))
@@ -316,14 +326,14 @@
 }
 
 /*****************************************************************************
- Implementation of REG_QUERY_KEY
+ _winreg_QueryInfoKey
  ****************************************************************************/
 
 WERROR _winreg_QueryInfoKey(pipes_struct *p, struct winreg_QueryInfoKey *r)
 {
 	WERROR 	status = WERR_OK;
 	struct registry_key *regkey = find_regkey_by_hnd( p, r->in.handle );
-	
+
 	if ( !regkey )
 		return WERR_BADFID;
 
@@ -346,37 +356,37 @@
 
 	*r->out.max_valnamelen += 1;
 	*r->out.max_valnamelen *= 2;
-	
+
 	return WERR_OK;
 }
 
 
 /*****************************************************************************
- Implementation of REG_GETVERSION
+ _winreg_GetVersion
  ****************************************************************************/
- 
+
 WERROR _winreg_GetVersion(pipes_struct *p, struct winreg_GetVersion *r)
 {
 	struct registry_key *regkey = find_regkey_by_hnd( p, r->in.handle );
-	
+
 	if ( !regkey )
 		return WERR_BADFID;
-	
+
 	return reg_getversion(r->out.version);
 }
 
 
 /*****************************************************************************
- Implementation of REG_ENUM_KEY
+ _winreg_EnumKey
  ****************************************************************************/
- 
+
 WERROR _winreg_EnumKey(pipes_struct *p, struct winreg_EnumKey *r)
 {
 	WERROR err;
 	struct registry_key *key = find_regkey_by_hnd( p, r->in.handle );
-	
+
 	if ( !key )
-		return WERR_BADFID; 
+		return WERR_BADFID;
 
 	if ( !r->in.name || !r->in.keyclass )
 		return WERR_INVALID_PARAM;
@@ -393,7 +403,7 @@
 }
 
 /*****************************************************************************
- Implementation of REG_ENUM_VALUE
+ _winreg_EnumValue
  ****************************************************************************/
 
 WERROR _winreg_EnumValue(pipes_struct *p, struct winreg_EnumValue *r)
@@ -403,7 +413,7 @@
 	char *valname;
 	struct registry_value *val;
 	DATA_BLOB value_blob;
-	
+
 	if ( !key )
 		return WERR_BADFID;
 
@@ -454,7 +464,7 @@
 }
 
 /*******************************************************************
- reg_shutdwon
+ _winreg_InitiateSystemShutdown
  ********************************************************************/
 
 WERROR _winreg_InitiateSystemShutdown(pipes_struct *p, struct winreg_InitiateSystemShutdown *r)
@@ -468,14 +478,14 @@
 	s.in.do_reboot = r->in.do_reboot;
 	s.in.reason = 0;
 
-	/* thunk down to _winreg_InitiateSystemShutdownEx() 
+	/* thunk down to _winreg_InitiateSystemShutdownEx()
 	   (just returns a status) */
-	
+
 	return _winreg_InitiateSystemShutdownEx( p, &s );
 }
 
 /*******************************************************************
- reg_shutdown_ex
+ _winreg_InitiateSystemShutdownEx
  ********************************************************************/
 
 #define SHUTDOWN_R_STRING "-r"
@@ -571,7 +581,7 @@
 }
 
 /*******************************************************************
- reg_abort_shutdwon
+ _winreg_AbortSystemShutdown
  ********************************************************************/
 
 WERROR _winreg_AbortSystemShutdown(pipes_struct *p, struct winreg_AbortSystemShutdown *r)
@@ -647,6 +657,7 @@
 }
 
 /*******************************************************************
+ _winreg_RestoreKey
  ********************************************************************/
 
 WERROR _winreg_RestoreKey(pipes_struct *p, struct winreg_RestoreKey *r)
@@ -683,6 +694,10 @@
 	return reg_restorekey(regkey, fname);
 }
 
+/*******************************************************************
+ _winreg_SaveKey
+ ********************************************************************/
+
 WERROR _winreg_SaveKey(pipes_struct *p, struct winreg_SaveKey *r)
 {
 	struct registry_key *regkey = find_regkey_by_hnd( p, r->in.handle );
@@ -713,6 +728,7 @@
 }
 
 /*******************************************************************
+ _winreg_SaveKeyEx
  ********************************************************************/
 
 WERROR _winreg_SaveKeyEx(pipes_struct *p, struct winreg_SaveKeyEx *r)
@@ -725,6 +741,7 @@
 }
 
 /*******************************************************************
+ _winreg_CreateKey
  ********************************************************************/
 
 WERROR _winreg_CreateKey( pipes_struct *p, struct winreg_CreateKey *r)
@@ -754,6 +771,7 @@
 }
 
 /*******************************************************************
+ _winreg_SetValue
  ********************************************************************/
 
 WERROR _winreg_SetValue(pipes_struct *p, struct winreg_SetValue *r)
@@ -765,10 +783,10 @@
 	if ( !key )
 		return WERR_BADFID;
 
-	DEBUG(8,("_reg_set_value: Setting value for [%s:%s]\n", 
+	DEBUG(8,("_reg_set_value: Setting value for [%s:%s]\n",
 			 key->key->name, r->in.name.name));
 
-	status = registry_pull_value(p->mem_ctx, &val, r->in.type, r->in.data, 
+	status = registry_pull_value(p->mem_ctx, &val, r->in.type, r->in.data,
 								 r->in.size, r->in.size);
 	if (!W_ERROR_IS_OK(status)) {
 		return status;
@@ -778,6 +796,7 @@
 }
 
 /*******************************************************************
+ _winreg_DeleteKey
  ********************************************************************/
 
 WERROR _winreg_DeleteKey(pipes_struct *p, struct winreg_DeleteKey *r)
@@ -792,12 +811,13 @@
 
 
 /*******************************************************************
+ _winreg_DeleteValue
  ********************************************************************/
 
 WERROR _winreg_DeleteValue(pipes_struct *p, struct winreg_DeleteValue *r)
 {
 	struct registry_key *key = find_regkey_by_hnd(p, r->in.handle);
-	
+
 	if ( !key )
 		return WERR_BADFID;
 
@@ -805,6 +825,7 @@
 }
 
 /*******************************************************************
+ _winreg_GetKeySecurity
  ********************************************************************/
 
 WERROR _winreg_GetKeySecurity(pipes_struct *p, struct winreg_GetKeySecurity *r)
@@ -817,9 +838,9 @@
 
 	if ( !key )
 		return WERR_BADFID;
-		
+
 	/* access checks first */
-	
+
 	if ( !(key->key->access_granted & STD_RIGHT_READ_CONTROL_ACCESS) )
 		return WERR_ACCESS_DENIED;
 
@@ -842,11 +863,12 @@
 	r->out.sd->size = len;
 	r->out.sd->len = len;
 	r->out.sd->data = data;
-		
+
 	return WERR_OK;
 }
 
 /*******************************************************************
+ _winreg_SetKeySecurity
  ********************************************************************/
 
 WERROR _winreg_SetKeySecurity(pipes_struct *p, struct winreg_SetKeySecurity *r)
@@ -857,9 +879,9 @@
 
 	if ( !key )
 		return WERR_BADFID;
-		
+
 	/* access checks first */
-	
+
 	if ( !(key->key->access_granted & STD_RIGHT_WRITE_DAC_ACCESS) )
 		return WERR_ACCESS_DENIED;
 
@@ -873,17 +895,19 @@
 }
 
 /*******************************************************************
+ _winreg_FlushKey
  ********************************************************************/
 
 WERROR _winreg_FlushKey(pipes_struct *p, struct winreg_FlushKey *r)
 {
-	/* I'm just replying OK because there's not a lot 
+	/* I'm just replying OK because there's not a lot
 	   here I see to do i  --jerry */
-	
+
 	return WERR_OK;
 }
 
 /*******************************************************************
+ _winreg_UnLoadKey
  ********************************************************************/
 
 WERROR _winreg_UnLoadKey(pipes_struct *p, struct winreg_UnLoadKey *r)
@@ -896,6 +920,7 @@
 }
 
 /*******************************************************************
+ _winreg_ReplaceKey
  ********************************************************************/
 
 WERROR _winreg_ReplaceKey(pipes_struct *p, struct winreg_ReplaceKey *r)
@@ -908,6 +933,7 @@
 }
 
 /*******************************************************************
+ _winreg_LoadKey
  ********************************************************************/
 
 WERROR _winreg_LoadKey(pipes_struct *p, struct winreg_LoadKey *r)
@@ -920,6 +946,7 @@
 }
 
 /*******************************************************************
+ _winreg_NotifyChangeKeyValue
  ********************************************************************/
 
 WERROR _winreg_NotifyChangeKeyValue(pipes_struct *p, struct winreg_NotifyChangeKeyValue *r)
@@ -932,6 +959,7 @@
 }
 
 /*******************************************************************
+ _winreg_QueryMultipleValues
  ********************************************************************/
 
 WERROR _winreg_QueryMultipleValues(pipes_struct *p, struct winreg_QueryMultipleValues *r)
@@ -944,6 +972,7 @@
 }
 
 /*******************************************************************
+ _winreg_QueryMultipleValues2
  ********************************************************************/
 
 WERROR _winreg_QueryMultipleValues2(pipes_struct *p, struct winreg_QueryMultipleValues2 *r)

Modified: branches/samba/experimental/source3/rpc_server/srv_wkssvc_nt.c
===================================================================
--- branches/samba/experimental/source3/rpc_server/srv_wkssvc_nt.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpc_server/srv_wkssvc_nt.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -25,16 +25,240 @@
 #include "includes.h"
 #include "libnet/libnet.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/srv_wkssvc.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV
 
+struct dom_usr {
+	char *name;
+	char *domain;
+	time_t login_time;
+};
+
+#ifdef HAVE_GETUTXENT
+
+#include <utmpx.h>
+
+struct usrinfo {
+	char *name;
+	struct timeval login_time;
+};
+
+static int usr_info_cmp(const void *p1, const void *p2)
+{
+	const struct usrinfo *usr1 = (const struct usrinfo *)p1;
+	const struct usrinfo *usr2 = (const struct usrinfo *)p2;
+
+	/* Called from qsort to compare two users in a usrinfo_t array for
+	 * sorting by login time. Return >0 if usr1 login time was later than
+	 * usr2 login time, <0 if it was earlier */
+	return timeval_compare(&usr1->login_time, &usr2->login_time);
+}
+
 /*******************************************************************
- Fill in the values for the struct wkssvc_NetWkstaInfo100.
+ Get a list of the names of all users logged into this machine
  ********************************************************************/
 
-static void create_wks_info_100(struct wkssvc_NetWkstaInfo100 *info100)
+static char **get_logged_on_userlist(TALLOC_CTX *mem_ctx)
 {
+	char **users;
+	int i, num_users = 0;
+	struct usrinfo *usr_infos = NULL;
+	struct utmpx *u;
+
+	while ((u = getutxent()) != NULL) {
+		struct usrinfo *tmp;
+		if (u->ut_type != USER_PROCESS) {
+			continue;
+		}
+		for (i = 0; i < num_users; i++) {
+			/* getutxent can return multiple user entries for the
+			 * same user, so ignore any dups */
+			if (strcmp(u->ut_user, usr_infos[i].name) == 0) {
+				break;
+			}
+		}
+		if (i < num_users) {
+			continue;
+		}
+
+		tmp = talloc_realloc(mem_ctx, usr_infos, struct usrinfo,
+				     num_users+1);
+		if (tmp == NULL) {
+			TALLOC_FREE(tmp);
+			endutxent();
+			return NULL;
+		}
+		usr_infos = tmp;
+		usr_infos[num_users].name = talloc_strdup(usr_infos,
+							  u->ut_user);
+		if (usr_infos[num_users].name == NULL) {
+			TALLOC_FREE(usr_infos);
+			endutxent();
+			return NULL;
+		}
+		usr_infos[num_users].login_time.tv_sec = u->ut_tv.tv_sec;
+		usr_infos[num_users].login_time.tv_usec = u->ut_tv.tv_usec;
+		num_users += 1;
+	}
+
+	/* Sort the user list by time, oldest first */
+	qsort(usr_infos, num_users, sizeof(struct usrinfo), usr_info_cmp);
+
+	users = (char**)talloc_array(mem_ctx, char*, num_users);
+	if (users) {
+		for (i = 0; i < num_users; i++) {
+			users[i] = talloc_move(users, &usr_infos[i].name);
+		}
+	}
+	TALLOC_FREE(usr_infos);
+	endutxent();
+	errno = 0;
+	return users;
+}
+
+#else
+
+static char **get_logged_on_userlist(TALLOC_CTX *mem_ctx)
+{
+	return NULL;
+}
+
+#endif
+
+static int dom_user_cmp(const void *p1, const void *p2)
+{
+	/* Called from qsort to compare two domain users in a dom_usr_t array
+	 * for sorting by login time. Return >0 if usr1 login time was later
+	 * than usr2 login time, <0 if it was earlier */
+	const struct dom_usr *usr1 = (const struct dom_usr *)p1;
+	const struct dom_usr *usr2 = (const struct dom_usr *)p2;
+
+	return (usr1->login_time - usr2->login_time);
+}
+
+/*******************************************************************
+ Get a list of the names of all users of this machine who are
+ logged into the domain.
+
+ This should return a list of the users on this machine who are
+ logged into the domain (i.e. have been authenticated by the domain's
+ password server) but that doesn't fit well with the normal Samba
+ scenario where accesses out to the domain are made through smbclient
+ with each such session individually authenticated. So about the best
+ we can do currently is to list sessions of local users connected to
+ this server, which means that to get themself included in the list a
+ local user must create a session to the local samba server by running:
+     smbclient \\\\localhost\\share
+
+ FIXME: find a better way to get local users logged into the domain
+ in this list.
+ ********************************************************************/
+
+static struct dom_usr *get_domain_userlist(TALLOC_CTX *mem_ctx)
+{
+	struct sessionid *session_list = NULL;
+	char *machine_name, *p, *nm;
+	const char *sep;
+	struct dom_usr *users, *tmp;
+	int i, num_users, num_sessions;
+
+	sep = lp_winbind_separator();
+	if (!sep) {
+		sep = "\\";
+	}
+
+	num_sessions = list_sessions(mem_ctx, &session_list);
+	if (num_sessions == 0) {
+		errno = 0;
+		return NULL;
+	}
+
+	users = talloc_array(mem_ctx, struct dom_usr, num_sessions);
+	if (users == NULL) {
+		TALLOC_FREE(session_list);
+		return NULL;
+	}
+
+	for (i=num_users=0; i<num_sessions; i++) {
+		if (!session_list[i].username
+		    || !session_list[i].remote_machine) {
+			continue;
+		}
+		p = strpbrk(session_list[i].remote_machine, "./");
+		if (p) {
+			*p = '\0';
+		}
+		machine_name = talloc_asprintf_strupper_m(
+			users, "%s", session_list[i].remote_machine);
+		if (machine_name == NULL) {
+			DEBUG(10, ("talloc_asprintf failed\n"));
+			continue;
+		}
+		if (strcmp(machine_name, global_myname()) == 0) {
+			p = session_list[i].username;
+			nm = strstr(p, sep);
+			if (nm) {
+				/*
+				 * "domain+name" format so split domain and
+				 * name components
+				 */
+				*nm = '\0';
+				nm += strlen(sep);
+				users[num_users].domain =
+					talloc_asprintf_strupper_m(users,
+								   "%s", p);
+				users[num_users].name = talloc_strdup(users,
+								      nm);
+			} else {
+				/*
+				 * Simple user name so get domain from smb.conf
+				 */
+				users[num_users].domain =
+					talloc_strdup(users, lp_workgroup());
+				users[num_users].name = talloc_strdup(users,
+								      p);
+			}
+			users[num_users].login_time =
+				session_list[i].connect_start;
+			num_users++;
+		}
+		TALLOC_FREE(machine_name);
+	}
+	TALLOC_FREE(session_list);
+
+	tmp = talloc_realloc(mem_ctx, users, struct dom_usr, num_users);
+	if (tmp == NULL) {
+		return NULL;
+	}
+	users = tmp;
+
+	/* Sort the user list by time, oldest first */
+	qsort(users, num_users, sizeof(struct dom_usr), dom_user_cmp);
+
+	errno = 0;
+	return users;
+}
+
+/*******************************************************************
+ RPC Workstation Service request NetWkstaGetInfo with level 100.
+ Returns to the requester:
+  - The machine name.
+  - The smb version number
+  - The domain name.
+ Returns a filled in wkssvc_NetWkstaInfo100 struct.
+ ********************************************************************/
+
+static struct wkssvc_NetWkstaInfo100 *create_wks_info_100(TALLOC_CTX *mem_ctx)
+{
+	struct wkssvc_NetWkstaInfo100 *info100;
+
+	info100 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo100);
+	if (info100 == NULL) {
+		return NULL;
+	}
+
 	info100->platform_id	 = PLATFORM_ID_NT;	/* unknown */
 	info100->version_major	 = lp_major_announce_version();
 	info100->version_minor	 = lp_minor_announce_version();
@@ -44,31 +268,131 @@
 	info100->domain_name = talloc_asprintf_strupper_m(
 		info100, "%s", lp_workgroup());
 
-	return;
+	return info100;
 }
 
-/********************************************************************
- only supports info level 100 at the moment.
+/*******************************************************************
+ RPC Workstation Service request NetWkstaGetInfo with level 101.
+ Returns to the requester:
+  - As per NetWkstaGetInfo with level 100, plus:
+  - The LANMAN directory path (not currently supported).
+ Returns a filled in wkssvc_NetWkstaInfo101 struct.
  ********************************************************************/
 
-WERROR _wkssvc_NetWkstaGetInfo(pipes_struct *p, struct wkssvc_NetWkstaGetInfo *r)
+static struct wkssvc_NetWkstaInfo101 *create_wks_info_101(TALLOC_CTX *mem_ctx)
 {
-	struct wkssvc_NetWkstaInfo100 *wks100 = NULL;
+	struct wkssvc_NetWkstaInfo101 *info101;
 
-	/* We only support info level 100 currently */
-
-	if ( r->in.level != 100 ) {
-		return WERR_UNKNOWN_LEVEL;
+	info101 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo101);
+	if (info101 == NULL) {
+		return NULL;
 	}
 
-	if ( (wks100 = TALLOC_ZERO_P(p->mem_ctx, struct wkssvc_NetWkstaInfo100)) == NULL ) {
-		return WERR_NOMEM;
+	info101->platform_id	 = PLATFORM_ID_NT;	/* unknown */
+	info101->version_major	 = lp_major_announce_version();
+	info101->version_minor	 = lp_minor_announce_version();
+
+	info101->server_name = talloc_asprintf_strupper_m(
+		info101, "%s", global_myname());
+	info101->domain_name = talloc_asprintf_strupper_m(
+		info101, "%s", lp_workgroup());
+	info101->lan_root = "";
+
+	return info101;
+}
+
+/*******************************************************************
+ RPC Workstation Service request NetWkstaGetInfo with level 102.
+ Returns to the requester:
+  - As per NetWkstaGetInfo with level 101, plus:
+  - The number of logged in users.
+ Returns a filled in wkssvc_NetWkstaInfo102 struct.
+ ********************************************************************/
+
+static struct wkssvc_NetWkstaInfo102 *create_wks_info_102(TALLOC_CTX *mem_ctx)
+{
+	struct wkssvc_NetWkstaInfo102 *info102;
+	char **users;
+
+	info102 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo102);
+	if (info102 == NULL) {
+		return NULL;
 	}
 
-	create_wks_info_100( wks100 );
+	info102->platform_id	 = PLATFORM_ID_NT;	/* unknown */
+	info102->version_major	 = lp_major_announce_version();
+	info102->version_minor	 = lp_minor_announce_version();
 
-	r->out.info->info100 = wks100;
+	info102->server_name = talloc_asprintf_strupper_m(
+		info102, "%s", global_myname());
+	info102->domain_name = talloc_asprintf_strupper_m(
+		info102, "%s", lp_workgroup());
+	info102->lan_root = "";
 
+	users = get_logged_on_userlist(talloc_tos());
+	info102->logged_on_users = talloc_array_length(users);
+
+	TALLOC_FREE(users);
+
+	return info102;
+}
+
+/********************************************************************
+ Handling for RPC Workstation Service request NetWkstaGetInfo
+ ********************************************************************/
+
+WERROR _wkssvc_NetWkstaGetInfo(pipes_struct *p, struct wkssvc_NetWkstaGetInfo *r)
+{
+	switch (r->in.level) {
+	case 100:
+		/* Level 100 can be allowed from anyone including anonymous
+		 * so no access checks are needed for this case */
+		r->out.info->info100 = create_wks_info_100(p->mem_ctx);
+		if (r->out.info->info100 == NULL) {
+			return WERR_NOMEM;
+		}
+		break;
+	case 101:
+		/* Level 101 can be allowed from any logged in user */
+		if (!nt_token_check_sid(&global_sid_Authenticated_Users,
+					p->server_info->ptok)) {
+			DEBUG(1,("User not allowed for NetWkstaGetInfo level "
+				 "101\n"));
+			DEBUGADD(3,(" - does not have sid for Authenticated "
+				    "Users %s:\n",
+				    sid_string_dbg(
+					    &global_sid_Authenticated_Users)));
+			debug_nt_user_token(DBGC_CLASS, 3,
+					    p->server_info->ptok);
+			return WERR_ACCESS_DENIED;
+		}
+		r->out.info->info101 = create_wks_info_101(p->mem_ctx);
+		if (r->out.info->info101 == NULL) {
+			return WERR_NOMEM;
+		}
+		break;
+	case 102:
+		/* Level 102 Should only be allowed from a domain administrator */
+		if (!nt_token_check_sid(&global_sid_Builtin_Administrators,
+					p->server_info->ptok)) {
+			DEBUG(1,("User not allowed for NetWkstaGetInfo level "
+				 "102\n"));
+			DEBUGADD(3,(" - does not have sid for Administrators "
+				    "group %s, sids are:\n",
+				    sid_string_dbg(&global_sid_Builtin_Administrators)));
+			debug_nt_user_token(DBGC_CLASS, 3,
+					    p->server_info->ptok);
+			return WERR_ACCESS_DENIED;
+		}
+		r->out.info->info102 = create_wks_info_102(p->mem_ctx);
+		if (r->out.info->info102 == NULL) {
+			return WERR_NOMEM;
+		}
+		break;
+	default:
+		return WERR_UNKNOWN_LEVEL;
+	}
+
 	return WERR_OK;
 }
 
@@ -83,13 +407,190 @@
 }
 
 /********************************************************************
+ RPC Workstation Service request NetWkstaEnumUsers with level 0:
+ Returns to the requester:
+  - the user names of the logged in users.
+ Returns a filled in wkssvc_NetWkstaEnumUsersCtr0 struct.
  ********************************************************************/
 
+static struct wkssvc_NetWkstaEnumUsersCtr0 *create_enum_users0(
+	TALLOC_CTX *mem_ctx)
+{
+	struct wkssvc_NetWkstaEnumUsersCtr0 *ctr0;
+	char **users;
+	int i, num_users;
+
+	ctr0 = talloc(mem_ctx, struct wkssvc_NetWkstaEnumUsersCtr0);
+	if (ctr0 == NULL) {
+		return NULL;
+	}
+
+	users = get_logged_on_userlist(talloc_tos());
+	if (users == NULL && errno != 0) {
+		DEBUG(1,("get_logged_on_userlist error %d: %s\n",
+			errno, strerror(errno)));
+		TALLOC_FREE(ctr0);
+		return NULL;
+	}
+
+	num_users = talloc_array_length(users);
+	ctr0->entries_read = num_users;
+	ctr0->user0 = talloc_array(ctr0, struct wkssvc_NetrWkstaUserInfo0,
+				   num_users);
+	if (ctr0->user0 == NULL) {
+		TALLOC_FREE(ctr0);
+		TALLOC_FREE(users);
+		return NULL;
+	}
+
+	for (i=0; i<num_users; i++) {
+		ctr0->user0[i].user_name = talloc_move(ctr0->user0, &users[i]);
+	}
+	TALLOC_FREE(users);
+	return ctr0;
+}
+
+/********************************************************************
+ RPC Workstation Service request NetWkstaEnumUsers with level 1.
+ Returns to the requester:
+  - the user names of the logged in users,
+  - the domain or machine each is logged into,
+  - the password server that was used to authenticate each,
+  - other domains each user is logged into (not currently supported).
+ Returns a filled in wkssvc_NetWkstaEnumUsersCtr1 struct.
+ ********************************************************************/
+
+static struct wkssvc_NetWkstaEnumUsersCtr1 *create_enum_users1(
+	TALLOC_CTX *mem_ctx)
+{
+	struct wkssvc_NetWkstaEnumUsersCtr1 *ctr1;
+	char **users;
+	struct dom_usr *dom_users;
+	const char *pwd_server;
+	char *pwd_tmp;
+	int i, j, num_users, num_dom_users;
+
+	ctr1 = talloc(mem_ctx, struct wkssvc_NetWkstaEnumUsersCtr1);
+	if (ctr1 == NULL) {
+		return NULL;
+	}
+
+	users = get_logged_on_userlist(talloc_tos());
+	if (users == NULL && errno != 0) {
+		DEBUG(1,("get_logged_on_userlist error %d: %s\n",
+			errno, strerror(errno)));
+		TALLOC_FREE(ctr1);
+		return NULL;
+	}
+	num_users = talloc_array_length(users);
+
+	dom_users = get_domain_userlist(talloc_tos());
+	if (dom_users == NULL && errno != 0) {
+		TALLOC_FREE(ctr1);
+		TALLOC_FREE(users);
+		return NULL;
+	}
+	num_dom_users = talloc_array_length(dom_users);
+
+	ctr1->user1 = talloc_array(ctr1, struct wkssvc_NetrWkstaUserInfo1,
+				   num_users+num_dom_users);
+	if (ctr1->user1 == NULL) {
+		TALLOC_FREE(ctr1);
+		TALLOC_FREE(users);
+		TALLOC_FREE(dom_users);
+		return NULL;
+	}
+
+	pwd_server = "";
+
+	if ((pwd_tmp = talloc_strdup(ctr1->user1, lp_passwordserver()))) {
+		/* The configured password server is a full DNS name but
+		 * for the logon server we need to return just the first
+		 * component (machine name) of it in upper-case */
+		char *p = strchr(pwd_tmp, '.');
+		if (p) {
+			*p = '\0';
+		} else {
+			p = pwd_tmp + strlen(pwd_tmp);
+		}
+		while (--p >= pwd_tmp) {
+			*p = toupper(*p);
+		}
+		pwd_server = pwd_tmp;
+	}
+
+	/* Put in local users first */
+	for (i=0; i<num_users; i++) {
+		ctr1->user1[i].user_name = talloc_move(ctr1->user1, &users[i]);
+
+		/* For a local user the domain name and logon server are
+		 * both returned as the local machine's NetBIOS name */
+		ctr1->user1[i].logon_domain = ctr1->user1[i].logon_server =
+			talloc_asprintf_strupper_m(ctr1->user1, "%s", global_myname());
+
+		ctr1->user1[i].other_domains = NULL;	/* Maybe in future? */
+	}
+
+	/* Now domain users */
+	for (j=0; j<num_dom_users; j++) {
+		ctr1->user1[i].user_name =
+				talloc_strdup(ctr1->user1, dom_users[j].name);
+		ctr1->user1[i].logon_domain =
+				talloc_strdup(ctr1->user1, dom_users[j].domain);
+		ctr1->user1[i].logon_server = pwd_server;
+
+		ctr1->user1[i++].other_domains = NULL;	/* Maybe in future? */
+	}
+
+	ctr1->entries_read = i;
+
+	TALLOC_FREE(users);
+	TALLOC_FREE(dom_users);
+	return ctr1;
+}
+
+/********************************************************************
+ Handling for RPC Workstation Service request NetWkstaEnumUsers
+ (a.k.a Windows NetWkstaUserEnum)
+ ********************************************************************/
+
 WERROR _wkssvc_NetWkstaEnumUsers(pipes_struct *p, struct wkssvc_NetWkstaEnumUsers *r)
 {
-	/* FIXME: Add implementation code here */
-	p->rng_fault_state = True;
-	return WERR_NOT_SUPPORTED;
+	/* This with any level should only be allowed from a domain administrator */
+	if (!nt_token_check_sid(&global_sid_Builtin_Administrators,
+				p->server_info->ptok)) {
+		DEBUG(1,("User not allowed for NetWkstaEnumUsers\n"));
+		DEBUGADD(3,(" - does not have sid for Administrators group "
+			    "%s\n", sid_string_dbg(
+				    &global_sid_Builtin_Administrators)));
+		debug_nt_user_token(DBGC_CLASS, 3, p->server_info->ptok);
+		return WERR_ACCESS_DENIED;
+	}
+
+	switch (r->in.info->level) {
+	case 0:
+		r->out.info->ctr.user0 = create_enum_users0(p->mem_ctx);
+		if (r->out.info->ctr.user0 == NULL) {
+			return WERR_NOMEM;
+		}
+		r->out.info->level = r->in.info->level;
+		*r->out.entries_read = r->out.info->ctr.user0->entries_read;
+		*r->out.resume_handle = 0;
+		break;
+	case 1:
+		r->out.info->ctr.user1 = create_enum_users1(p->mem_ctx);
+		if (r->out.info->ctr.user1 == NULL) {
+			return WERR_NOMEM;
+		}
+		r->out.info->level = r->in.info->level;
+		*r->out.entries_read = r->out.info->ctr.user1->entries_read;
+		*r->out.resume_handle = 0;
+		break;
+	default:
+		return WERR_UNKNOWN_LEVEL;
+	}
+
+	return WERR_OK;
 }
 
 /********************************************************************

Modified: branches/samba/experimental/source3/rpcclient/cmd_dfs.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_dfs.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_dfs.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_dfs.h"
 
 /* Check DFS is supported by the remote server */
 

Modified: branches/samba/experimental/source3/rpcclient/cmd_drsuapi.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_drsuapi.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_drsuapi.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_drsuapi.h"
 
 static WERROR cracknames(struct rpc_pipe_client *cli,
 			 TALLOC_CTX *mem_ctx,

Modified: branches/samba/experimental/source3/rpcclient/cmd_dssetup.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_dssetup.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_dssetup.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_dssetup.h"
 
 /* Look up domain related information on a remote host */
 

Modified: branches/samba/experimental/source3/rpcclient/cmd_echo.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_echo.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_echo.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_echo.h"
 
 static NTSTATUS cmd_echo_add_one(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 				 int argc, const char **argv)

Modified: branches/samba/experimental/source3/rpcclient/cmd_epmapper.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_epmapper.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_epmapper.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_epmapper.h"
 
 static NTSTATUS cmd_epmapper_map(struct rpc_pipe_client *p,
 				 TALLOC_CTX *mem_ctx,

Modified: branches/samba/experimental/source3/rpcclient/cmd_eventlog.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_eventlog.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_eventlog.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_eventlog.h"
 
 static NTSTATUS get_eventlog_handle(struct rpc_pipe_client *cli,
 				    TALLOC_CTX *mem_ctx,

Modified: branches/samba/experimental/source3/rpcclient/cmd_lsarpc.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_lsarpc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_lsarpc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 #include "includes.h"
 #include "rpcclient.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
 
 /* useful function to allow entering a name instead of a SID and
  * looking it up automatically */

Modified: branches/samba/experimental/source3/rpcclient/cmd_netlogon.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_netlogon.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_netlogon.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -22,6 +22,7 @@
 #include "includes.h"
 #include "rpcclient.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_netlogon.h"
 
 static WERROR cmd_netlogon_logon_ctrl2(struct rpc_pipe_client *cli,
 				       TALLOC_CTX *mem_ctx, int argc,

Modified: branches/samba/experimental/source3/rpcclient/cmd_ntsvcs.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_ntsvcs.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_ntsvcs.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_ntsvcs.h"
 
 static WERROR cmd_ntsvcs_get_version(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,

Modified: branches/samba/experimental/source3/rpcclient/cmd_samr.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_samr.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_samr.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -25,6 +25,7 @@
 #include "includes.h"
 #include "rpcclient.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_samr.h"
 
 extern DOM_SID domain_sid;
 

Modified: branches/samba/experimental/source3/rpcclient/cmd_spoolss.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_spoolss.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_spoolss.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -24,6 +24,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_spoolss.h"
 
 #define RPCCLIENT_PRINTERNAME(_printername, _cli, _arg) \
 { \
@@ -863,10 +864,9 @@
 	NTSTATUS	status;
 	fstring 	printername;
 	const char *valuename, *keyname;
-	struct regval_blob value;
 
 	enum winreg_Type type;
-	uint8_t *buffer = NULL;
+	union spoolss_PrinterData data;
 	uint32_t offered = 0;
 	uint32_t needed;
 
@@ -902,21 +902,20 @@
 						 &pol,
 						 keyname,
 						 valuename,
-						 &type,
-						 buffer,
 						 offered,
+						 &type,
+						 &data,
 						 &needed,
 						 &result);
 	if (W_ERROR_EQUAL(result, WERR_MORE_DATA)) {
 		offered = needed;
-		buffer = talloc_array(mem_ctx, uint8_t, needed);
 		status = rpccli_spoolss_GetPrinterDataEx(cli, mem_ctx,
 							 &pol,
 							 keyname,
 							 valuename,
-							 &type,
-							 buffer,
 							 offered,
+							 &type,
+							 &data,
 							 &needed,
 							 &result);
 	}
@@ -925,22 +924,13 @@
 		goto done;
 	}
 
-	if (!W_ERROR_IS_OK(result)) {
-		goto done;
-	}
-
-
 	if (!W_ERROR_IS_OK(result))
 		goto done;
 
 	/* Display printer data */
 
-	fstrcpy(value.valuename, valuename);
-	value.type = type;
-	value.size = needed;
-	value.data_p = buffer;
+	display_printer_data(valuename, type, &data);
 
-	display_reg_value(value);
 
  done:
 	if (is_valid_policy_hnd(&pol))
@@ -2916,18 +2906,23 @@
 	struct policy_handle hnd;
 	const char **key_buffer = NULL;
 	int i;
+	uint32_t offered = 0;
 
-	if (argc < 2 || argc > 3) {
-		printf("Usage: %s printername [keyname]\n", argv[0]);
+	if (argc < 2 || argc > 4) {
+		printf("Usage: %s printername [keyname] [offered]\n", argv[0]);
 		return WERR_OK;
 	}
 
-	if (argc == 3) {
+	if (argc >= 3) {
 		keyname = argv[2];
 	} else {
 		keyname = "";
 	}
 
+	if (argc == 4) {
+		offered = atoi(argv[3]);
+	}
+
 	/* Open printer handle */
 
 	RPCCLIENT_PRINTERNAME(printername, cli, argv[1]);
@@ -2946,7 +2941,7 @@
 					       &hnd,
 					       keyname,
 					       &key_buffer,
-					       0);
+					       offered);
 
 	if (!W_ERROR_IS_OK(result)) {
 		goto done;

Modified: branches/samba/experimental/source3/rpcclient/cmd_srvsvc.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_srvsvc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_srvsvc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -22,6 +22,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_srvsvc.h"
 
 /* Display server query info */
 

Modified: branches/samba/experimental/source3/rpcclient/cmd_test.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_test.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_test.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
 
 static NTSTATUS cmd_testme(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 			   int argc, const char **argv)

Modified: branches/samba/experimental/source3/rpcclient/cmd_wkssvc.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/cmd_wkssvc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/cmd_wkssvc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_wkssvc.h"
 
 static WERROR cmd_wkssvc_wkstagetinfo(struct rpc_pipe_client *cli,
 				      TALLOC_CTX *mem_ctx,
@@ -159,6 +160,54 @@
 	return werr;
 }
 
+static WERROR cmd_wkssvc_enumerateusers(struct rpc_pipe_client *cli,
+					TALLOC_CTX *mem_ctx,
+					int argc,
+					const char **argv)
+{
+	const char *server_name;
+	NTSTATUS status;
+	struct wkssvc_NetWkstaEnumUsersInfo info;
+	WERROR werr;
+	uint32_t i, num_entries, resume_handle;
+
+	server_name = cli->desthost;
+
+	ZERO_STRUCT(info);
+
+	if (argc >= 2) {
+		info.level = atoi(argv[1]);
+	}
+
+	status = rpccli_wkssvc_NetWkstaEnumUsers(cli, mem_ctx, server_name,
+						 &info, 1000, &num_entries,
+						 &resume_handle, &werr);
+	if (!NT_STATUS_IS_OK(status)) {
+		return ntstatus_to_werror(status);
+	}
+	if (!W_ERROR_IS_OK(werr)) {
+		return werr;
+	}
+
+	for (i=0; i<num_entries; i++) {
+		const char *user;
+		switch (info.level) {
+		case 0:
+			user = info.ctr.user0->user0[i].user_name;
+			break;
+		case 1:
+			user = talloc_asprintf(
+				talloc_tos(), "%s\\%s",
+				info.ctr.user1->user1[i].logon_domain,
+				info.ctr.user1->user1[i].user_name);
+			break;
+		}
+		printf("%s\n", user);
+	}
+
+	return werr;
+}
+
 struct cmd_set wkssvc_commands[] = {
 
 	{ "WKSSVC" },
@@ -166,5 +215,8 @@
 	{ "wkssvc_getjoininformation", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_getjoininformation, &ndr_table_wkssvc.syntax_id, NULL, "Query WKSSVC Join Information", "" },
 	{ "wkssvc_messagebuffersend", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_messagebuffersend, &ndr_table_wkssvc.syntax_id, NULL, "Send WKSSVC message", "" },
 	{ "wkssvc_enumeratecomputernames", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_enumeratecomputernames, &ndr_table_wkssvc.syntax_id, NULL, "Enumerate WKSSVC computer names", "" },
+	{ "wkssvc_enumerateusers", RPC_RTYPE_WERROR, NULL,
+	  cmd_wkssvc_enumerateusers, &ndr_table_wkssvc.syntax_id, NULL,
+	  "Enumerate WKSSVC users", "" },
 	{ NULL }
 };

Modified: branches/samba/experimental/source3/rpcclient/rpcclient.c
===================================================================
--- branches/samba/experimental/source3/rpcclient/rpcclient.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/rpcclient/rpcclient.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -22,6 +22,7 @@
 #include "includes.h"
 #include "rpcclient.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
 
 DOM_SID domain_sid;
 

Modified: branches/samba/experimental/source3/script/installman.sh
===================================================================
--- branches/samba/experimental/source3/script/installman.sh	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/script/installman.sh	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,7 +20,7 @@
 
 # Get the configured feature set
 test -f "${SRCDIR}/config.log" && \
-	eval `grep "^[[:alnum:]]*=.*" "${SRCDIR}/config.log"`
+	eval `grep "^[[:alnum:]_]*=.*" "${SRCDIR}/config.log"`
 
 for lang in $langs; do
     if [ "X$lang" = XC ]; then
@@ -48,6 +48,7 @@
 
 	    # Check if this man page if required by the configured feature set
 	    case "${MP_BASENAME}" in
+		cifs.upcall.8) test -z "${CIFSUPCALL_PROGS}" && continue ;;
 	    	smbsh.1) test -z "${SMBWRAPPER}" && continue ;;
 		*) ;;
 	    esac

Modified: branches/samba/experimental/source3/script/tests/test_posix_s3.sh
===================================================================
--- branches/samba/experimental/source3/script/tests/test_posix_s3.sh	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/script/tests/test_posix_s3.sh	2009-12-16 21:43:48 UTC (rev 3157)
@@ -38,7 +38,7 @@
 raw="$raw RAW-SAMBA3ROOTDIRFID"
 
 rpc="RPC-AUTHCONTEXT RPC-BINDSAMBA3 RPC-SAMBA3-SRVSVC RPC-SAMBA3-SHARESEC"
-rpc="$rpc RPC-SAMBA3-SPOOLSS RPC-SAMBA3-WKSSVC"
+rpc="$rpc RPC-SAMBA3-SPOOLSS RPC-SAMBA3-WKSSVC RPC-SAMBA3-WINREG"
 rpc="$rpc RPC-NETLOGSAMBA3 RPC-SAMBA3SESSIONKEY RPC-SAMBA3-GETUSERNAME"
 rpc="$rpc RPC-SVCCTL RPC-SPOOLSS RPC-SPOOLSS-WIN RPC-NTSVCS"
 rpc="$rpc RPC-LSA-GETUSER RPC-LSA-LOOKUPSIDS RPC-LSA-LOOKUPNAMES"
@@ -48,7 +48,7 @@
 rpc="$rpc RPC-NETLOGON-S3 RPC-NETLOGON-ADMIN"
 rpc="$rpc RPC-SCHANNEL RPC-SCHANNEL2 RPC-BENCH-SCHANNEL1 RPC-JOIN"
 
-local="LOCAL-NSS-WRAPPER"
+local="LOCAL-NSS-WRAPPER LOCAL-NDR"
 
 winbind="WINBIND-WBCLIENT"
 

Modified: branches/samba/experimental/source3/smbd/close.c
===================================================================
--- branches/samba/experimental/source3/smbd/close.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/smbd/close.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -103,7 +103,7 @@
 		goto out;
 	}
 
-	if (sys_fstat(tmp_fd,&st) == -1) {
+	if (sys_fstat(tmp_fd, &st, false) == -1) {
 		int err = errno;
 		close(tmp_fd);
 		close(outfd);
@@ -656,8 +656,265 @@
 	file_free(req, fsp);
 	return status;
 }
+/****************************************************************************
+ Static function used by reply_rmdir to delete an entire directory
+ tree recursively. Return True on ok, False on fail.
+****************************************************************************/
 
+static bool recursive_rmdir(TALLOC_CTX *ctx,
+			connection_struct *conn,
+			struct smb_filename *smb_dname)
+{
+	const char *dname = NULL;
+	char *talloced = NULL;
+	bool ret = True;
+	long offset = 0;
+	SMB_STRUCT_STAT st;
+	struct smb_Dir *dir_hnd;
+
+	SMB_ASSERT(!is_ntfs_stream_smb_fname(smb_dname));
+
+	dir_hnd = OpenDir(talloc_tos(), conn, smb_dname->base_name, NULL, 0);
+	if(dir_hnd == NULL)
+		return False;
+
+	while((dname = ReadDirName(dir_hnd, &offset, &st, &talloced))) {
+		struct smb_filename *smb_dname_full = NULL;
+		char *fullname = NULL;
+		bool do_break = true;
+		NTSTATUS status;
+
+		if (ISDOT(dname) || ISDOTDOT(dname)) {
+			TALLOC_FREE(talloced);
+			continue;
+		}
+
+		if (!is_visible_file(conn, smb_dname->base_name, dname, &st,
+				     false)) {
+			TALLOC_FREE(talloced);
+			continue;
+		}
+
+		/* Construct the full name. */
+		fullname = talloc_asprintf(ctx,
+				"%s/%s",
+				smb_dname->base_name,
+				dname);
+		if (!fullname) {
+			errno = ENOMEM;
+			goto err_break;
+		}
+
+		status = create_synthetic_smb_fname(talloc_tos(), fullname,
+						    NULL, NULL,
+						    &smb_dname_full);
+		if (!NT_STATUS_IS_OK(status)) {
+			goto err_break;
+		}
+
+		if(SMB_VFS_LSTAT(conn, smb_dname_full) != 0) {
+			goto err_break;
+		}
+
+		if(smb_dname_full->st.st_ex_mode & S_IFDIR) {
+			if(!recursive_rmdir(ctx, conn, smb_dname_full)) {
+				goto err_break;
+			}
+			if(SMB_VFS_RMDIR(conn,
+					 smb_dname_full->base_name) != 0) {
+				goto err_break;
+			}
+		} else if(SMB_VFS_UNLINK(conn, smb_dname_full) != 0) {
+			goto err_break;
+		}
+
+		/* Successful iteration. */
+		do_break = false;
+
+	 err_break:
+		TALLOC_FREE(smb_dname_full);
+		TALLOC_FREE(fullname);
+		TALLOC_FREE(talloced);
+		if (do_break) {
+			ret = false;
+			break;
+		}
+	}
+	TALLOC_FREE(dir_hnd);
+	return ret;
+}
+
 /****************************************************************************
+ The internals of the rmdir code - called elsewhere.
+****************************************************************************/
+
+static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, files_struct *fsp)
+{
+	connection_struct *conn = fsp->conn;
+	struct smb_filename *smb_dname = fsp->fsp_name;
+	int ret;
+
+	SMB_ASSERT(!is_ntfs_stream_smb_fname(smb_dname));
+
+	/* Might be a symlink. */
+	if(SMB_VFS_LSTAT(conn, smb_dname) != 0) {
+		return map_nt_error_from_unix(errno);
+	}
+
+	if (S_ISLNK(smb_dname->st.st_ex_mode)) {
+		/* Is what it points to a directory ? */
+		if(SMB_VFS_STAT(conn, smb_dname) != 0) {
+			return map_nt_error_from_unix(errno);
+		}
+		if (!(S_ISDIR(smb_dname->st.st_ex_mode))) {
+			return NT_STATUS_NOT_A_DIRECTORY;
+		}
+		ret = SMB_VFS_UNLINK(conn, smb_dname);
+	} else {
+		ret = SMB_VFS_RMDIR(conn, smb_dname->base_name);
+	}
+	if (ret == 0) {
+		notify_fname(conn, NOTIFY_ACTION_REMOVED,
+			     FILE_NOTIFY_CHANGE_DIR_NAME,
+			     smb_dname->base_name);
+		return NT_STATUS_OK;
+	}
+
+	if(((errno == ENOTEMPTY)||(errno == EEXIST)) && lp_veto_files(SNUM(conn))) {
+		/*
+		 * Check to see if the only thing in this directory are
+		 * vetoed files/directories. If so then delete them and
+		 * retry. If we fail to delete any of them (and we *don't*
+		 * do a recursive delete) then fail the rmdir.
+		 */
+		SMB_STRUCT_STAT st;
+		const char *dname = NULL;
+		char *talloced = NULL;
+		long dirpos = 0;
+		struct smb_Dir *dir_hnd = OpenDir(talloc_tos(), conn,
+						  smb_dname->base_name, NULL,
+						  0);
+
+		if(dir_hnd == NULL) {
+			errno = ENOTEMPTY;
+			goto err;
+		}
+
+		while ((dname = ReadDirName(dir_hnd, &dirpos, &st,
+					    &talloced)) != NULL) {
+			if((strcmp(dname, ".") == 0) || (strcmp(dname, "..")==0)) {
+				TALLOC_FREE(talloced);
+				continue;
+			}
+			if (!is_visible_file(conn, smb_dname->base_name, dname,
+					     &st, false)) {
+				TALLOC_FREE(talloced);
+				continue;
+			}
+			if(!IS_VETO_PATH(conn, dname)) {
+				TALLOC_FREE(dir_hnd);
+				TALLOC_FREE(talloced);
+				errno = ENOTEMPTY;
+				goto err;
+			}
+			TALLOC_FREE(talloced);
+		}
+
+		/* We only have veto files/directories.
+		 * Are we allowed to delete them ? */
+
+		if(!lp_recursive_veto_delete(SNUM(conn))) {
+			TALLOC_FREE(dir_hnd);
+			errno = ENOTEMPTY;
+			goto err;
+		}
+
+		/* Do a recursive delete. */
+		RewindDir(dir_hnd,&dirpos);
+		while ((dname = ReadDirName(dir_hnd, &dirpos, &st,
+					    &talloced)) != NULL) {
+			struct smb_filename *smb_dname_full = NULL;
+			char *fullname = NULL;
+			bool do_break = true;
+			NTSTATUS status;
+
+			if (ISDOT(dname) || ISDOTDOT(dname)) {
+				TALLOC_FREE(talloced);
+				continue;
+			}
+			if (!is_visible_file(conn, smb_dname->base_name, dname,
+					     &st, false)) {
+				TALLOC_FREE(talloced);
+				continue;
+			}
+
+			fullname = talloc_asprintf(ctx,
+					"%s/%s",
+					smb_dname->base_name,
+					dname);
+
+			if(!fullname) {
+				errno = ENOMEM;
+				goto err_break;
+			}
+
+			status = create_synthetic_smb_fname(talloc_tos(),
+							    fullname, NULL,
+							    NULL,
+							    &smb_dname_full);
+			if (!NT_STATUS_IS_OK(status)) {
+				errno = map_errno_from_nt_status(status);
+				goto err_break;
+			}
+
+			if(SMB_VFS_LSTAT(conn, smb_dname_full) != 0) {
+				goto err_break;
+			}
+			if(smb_dname_full->st.st_ex_mode & S_IFDIR) {
+				if(!recursive_rmdir(ctx, conn,
+						    smb_dname_full)) {
+					goto err_break;
+				}
+				if(SMB_VFS_RMDIR(conn,
+					smb_dname_full->base_name) != 0) {
+					goto err_break;
+				}
+			} else if(SMB_VFS_UNLINK(conn, smb_dname_full) != 0) {
+				goto err_break;
+			}
+
+			/* Successful iteration. */
+			do_break = false;
+
+		 err_break:
+			TALLOC_FREE(fullname);
+			TALLOC_FREE(smb_dname_full);
+			TALLOC_FREE(talloced);
+			if (do_break)
+				break;
+		}
+		TALLOC_FREE(dir_hnd);
+		/* Retry the rmdir */
+		ret = SMB_VFS_RMDIR(conn, smb_dname->base_name);
+	}
+
+  err:
+
+	if (ret != 0) {
+		DEBUG(3,("rmdir_internals: couldn't remove directory %s : "
+			 "%s\n", smb_fname_str_dbg(smb_dname),
+			 strerror(errno)));
+		return map_nt_error_from_unix(errno);
+	}
+
+	notify_fname(conn, NOTIFY_ACTION_REMOVED,
+		     FILE_NOTIFY_CHANGE_DIR_NAME,
+		     smb_dname->base_name);
+
+	return NT_STATUS_OK;
+}
+
+/****************************************************************************
  Close a directory opened by an NT SMB call. 
 ****************************************************************************/
   
@@ -742,8 +999,7 @@
 
 		TALLOC_FREE(lck);
 
-		status = rmdir_internals(talloc_tos(), fsp->conn,
-					 fsp->fsp_name);
+		status = rmdir_internals(talloc_tos(), fsp);
 
 		DEBUG(5,("close_directory: %s. Delete on close was set - "
 			 "deleting directory returned %s.\n",

Modified: branches/samba/experimental/source3/smbd/files.c
===================================================================
--- branches/samba/experimental/source3/smbd/files.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/smbd/files.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -171,8 +171,6 @@
  Initialise file structures.
 ****************************************************************************/
 
-#define MAX_OPEN_FUDGEFACTOR 20
-
 void file_init(void)
 {
 	int request_max_open_files = lp_max_open_files();

Modified: branches/samba/experimental/source3/smbd/lanman.c
===================================================================
--- branches/samba/experimental/source3/smbd/lanman.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/smbd/lanman.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -27,6 +27,8 @@
 
 #include "includes.h"
 #include "smbd/globals.h"
+#include "../librpc/gen_ndr/cli_samr.h"
+#include "../librpc/gen_ndr/srv_samr.h"
 
 #ifdef CHECK_TYPES
 #undef CHECK_TYPES
@@ -646,7 +648,7 @@
 {
 	int 				i;
 	fstring 			location;
-	union spoolss_DriverInfo *driver = NULL;
+	struct spoolss_DriverInfo8 *driver = NULL;
 	NT_PRINTER_INFO_LEVEL 		*printer = NULL;
 
 	if ( !W_ERROR_IS_OK(get_a_printer( NULL, &printer, 2, lp_servicename(snum))) ) {
@@ -655,7 +657,7 @@
 		goto err;
 	}
 
-	if (!W_ERROR_IS_OK(get_a_printer_driver(talloc_tos(), &driver, 3, printer->info_2->drivername,
+	if (!W_ERROR_IS_OK(get_a_printer_driver(talloc_tos(), &driver, printer->info_2->drivername,
 		"Windows 4.0", 0)) )
 	{
 		DEBUG(3,("fill_printq_info_52: Failed to lookup driver [%s]\n", 
@@ -663,38 +665,38 @@
 		goto err;
 	}
 
-	trim_string((char *)driver->info3.driver_path, "\\print$\\WIN40\\0\\", 0);
-	trim_string((char *)driver->info3.data_file, "\\print$\\WIN40\\0\\", 0);
-	trim_string((char *)driver->info3.help_file, "\\print$\\WIN40\\0\\", 0);
+	trim_string((char *)driver->driver_path, "\\print$\\WIN40\\0\\", 0);
+	trim_string((char *)driver->data_file, "\\print$\\WIN40\\0\\", 0);
+	trim_string((char *)driver->help_file, "\\print$\\WIN40\\0\\", 0);
 
 	PACKI(desc, "W", 0x0400);                     /* don't know */
-	PACKS(desc, "z", driver->info3.driver_name);        /* long printer name */
-	PACKS(desc, "z", driver->info3.driver_path);  /* Driverfile Name */
-	PACKS(desc, "z", driver->info3.data_file);    /* Datafile name */
-	PACKS(desc, "z", driver->info3.monitor_name); /* language monitor */
+	PACKS(desc, "z", driver->driver_name);        /* long printer name */
+	PACKS(desc, "z", driver->driver_path);  /* Driverfile Name */
+	PACKS(desc, "z", driver->data_file);    /* Datafile name */
+	PACKS(desc, "z", driver->monitor_name); /* language monitor */
 
 	fstrcpy(location, "\\\\%L\\print$\\WIN40\\0");
 	standard_sub_basic( "", "", location, sizeof(location)-1 );
 	PACKS(desc,"z", location);                          /* share to retrieve files */
 
-	PACKS(desc,"z", driver->info3.default_datatype);    /* default data type */
-	PACKS(desc,"z", driver->info3.help_file);           /* helpfile name */
-	PACKS(desc,"z", driver->info3.driver_path);               /* driver name */
+	PACKS(desc,"z", driver->default_datatype);    /* default data type */
+	PACKS(desc,"z", driver->help_file);           /* helpfile name */
+	PACKS(desc,"z", driver->driver_path);               /* driver name */
 
-	DEBUG(3,("Printer Driver Name: %s:\n",driver->info3.driver_name));
-	DEBUG(3,("Driver: %s:\n",driver->info3.driver_path));
-	DEBUG(3,("Data File: %s:\n",driver->info3.data_file));
-	DEBUG(3,("Language Monitor: %s:\n",driver->info3.monitor_name));
+	DEBUG(3,("Printer Driver Name: %s:\n",driver->driver_name));
+	DEBUG(3,("Driver: %s:\n",driver->driver_path));
+	DEBUG(3,("Data File: %s:\n",driver->data_file));
+	DEBUG(3,("Language Monitor: %s:\n",driver->monitor_name));
 	DEBUG(3,("Driver Location: %s:\n",location));
-	DEBUG(3,("Data Type: %s:\n",driver->info3.default_datatype));
-	DEBUG(3,("Help File: %s:\n",driver->info3.help_file));
+	DEBUG(3,("Data Type: %s:\n",driver->default_datatype));
+	DEBUG(3,("Help File: %s:\n",driver->help_file));
 	PACKI(desc,"N",count);                     /* number of files to copy */
 
-	for ( i=0; i<count && driver->info3.dependent_files && *driver->info3.dependent_files[i]; i++)
+	for ( i=0; i<count && driver->dependent_files && *driver->dependent_files[i]; i++)
 	{
-		trim_string((char *)driver->info3.dependent_files[i], "\\print$\\WIN40\\0\\", 0);
-		PACKS(desc,"z",driver->info3.dependent_files[i]);         /* driver files to copy */
-		DEBUG(3,("Dependent File: %s:\n", driver->info3.dependent_files[i]));
+		trim_string((char *)driver->dependent_files[i], "\\print$\\WIN40\\0\\", 0);
+		PACKS(desc,"z",driver->dependent_files[i]);         /* driver files to copy */
+		DEBUG(3,("Dependent File: %s:\n", driver->dependent_files[i]));
 	}
 
 	/* sanity check */
@@ -804,7 +806,7 @@
 static int get_printerdrivernumber(int snum)
 {
 	int 				result = 0;
-	union spoolss_DriverInfo *driver;
+	struct spoolss_DriverInfo8 *driver;
 	NT_PRINTER_INFO_LEVEL 		*printer = NULL;
 
 	ZERO_STRUCT(driver);
@@ -815,7 +817,7 @@
 		goto done;
 	}
 
-	if (!W_ERROR_IS_OK(get_a_printer_driver(talloc_tos(), &driver, 3, printer->info_2->drivername,
+	if (!W_ERROR_IS_OK(get_a_printer_driver(talloc_tos(), &driver, printer->info_2->drivername,
 		"Windows 4.0", 0)) )
 	{
 		DEBUG(3,("get_printerdrivernumber: Failed to lookup driver [%s]\n", 
@@ -824,7 +826,7 @@
 	}
 
 	/* count the number of files */
-	while (driver->info3.dependent_files && *driver->info3.dependent_files[result])
+	while (driver->dependent_files && *driver->dependent_files[result])
 		result++;
  done:
 	if ( printer )

Modified: branches/samba/experimental/source3/smbd/open.c
===================================================================
--- branches/samba/experimental/source3/smbd/open.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/smbd/open.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -119,11 +119,11 @@
 ****************************************************************************/
 
 static NTSTATUS fd_open(struct connection_struct *conn,
-		    struct smb_filename *smb_fname,
 		    files_struct *fsp,
 		    int flags,
 		    mode_t mode)
 {
+	struct smb_filename *smb_fname = fsp->fsp_name;
 	NTSTATUS status = NT_STATUS_OK;
 
 #ifdef O_NOFOLLOW
@@ -343,16 +343,16 @@
 			  connection_struct *conn,
 			  struct smb_request *req,
 			  const char *parent_dir,
-			  struct smb_filename *smb_fname,
 			  int flags,
 			  mode_t unx_mode,
 			  uint32 access_mask, /* client requested access mask. */
 			  uint32 open_access_mask) /* what we're actually using in the open. */
 {
+	struct smb_filename *smb_fname = fsp->fsp_name;
 	NTSTATUS status = NT_STATUS_OK;
 	int accmode = (flags & O_ACCMODE);
 	int local_flags = flags;
-	bool file_existed = VALID_STAT(smb_fname->st);
+	bool file_existed = VALID_STAT(fsp->fsp_name->st);
 
 	fsp->fh->fd = -1;
 	errno = EPERM;
@@ -443,7 +443,7 @@
 		}
 
 		/* Actually do the open */
-		status = fd_open(conn, smb_fname, fsp, local_flags, unx_mode);
+		status = fd_open(conn, fsp, local_flags, unx_mode);
 		if (!NT_STATUS_IS_OK(status)) {
 			DEBUG(3,("Error opening file %s (%s) (local_flags=%d) "
 				 "(flags=%d)\n", smb_fname_str_dbg(smb_fname),
@@ -613,12 +613,6 @@
 		       conn->case_sensitive)) {
 		fsp->aio_write_behind = True;
 	}
-	status = fsp_set_smb_fname(fsp, smb_fname);
-	if (!NT_STATUS_IS_OK(status)) {
-		fd_close(fsp);
-		errno = map_errno_from_nt_status(status);
-		return status;
-	}
 
 	fsp->wcp = NULL; /* Write cache pointer. */
 
@@ -1440,7 +1434,6 @@
 
 static NTSTATUS open_file_ntcreate(connection_struct *conn,
 			    struct smb_request *req,
-			    struct smb_filename *smb_fname,
 			    uint32 access_mask,		/* access bits (FILE_READ_DATA etc.) */
 			    uint32 share_access,	/* share constants (FILE_SHARE_READ etc) */
 			    uint32 create_disposition,	/* FILE_OPEN_IF etc. */
@@ -1451,6 +1444,7 @@
 			    int *pinfo,
 			    files_struct *fsp)
 {
+	struct smb_filename *smb_fname = fsp->fsp_name;
 	int flags=0;
 	int flags2=0;
 	bool file_existed = VALID_STAT(smb_fname->st);
@@ -1968,7 +1962,7 @@
 	 * open_file strips any O_TRUNC flags itself.
 	 */
 
-	fsp_open = open_file(fsp, conn, req, parent_dir, smb_fname,
+	fsp_open = open_file(fsp, conn, req, parent_dir,
 			     flags|flags2, unx_mode, access_mask,
 			     open_access_mask);
 
@@ -2171,7 +2165,7 @@
 	/* Handle strange delete on close create semantics. */
 	if (create_options & FILE_DELETE_ON_CLOSE) {
 
-		status = can_set_delete_on_close(fsp, True, new_dos_attributes);
+		status = can_set_delete_on_close(fsp, new_dos_attributes);
 
 		if (!NT_STATUS_IS_OK(status)) {
 			/* Remember to delete the mode we just added. */
@@ -2634,7 +2628,7 @@
 	/* For directories the delete on close bit at open time seems
 	   always to be honored on close... See test 19 in Samba4 BASE-DELETE. */
 	if (create_options & FILE_DELETE_ON_CLOSE) {
-		status = can_set_delete_on_close(fsp, True, 0);
+		status = can_set_delete_on_close(fsp, 0);
 		if (!NT_STATUS_IS_OK(status) && !NT_STATUS_EQUAL(status, NT_STATUS_DIRECTORY_NOT_EMPTY)) {
 			TALLOC_FREE(lck);
 			file_free(req, fsp);
@@ -3090,6 +3084,11 @@
 			goto fail;
 		}
 
+		status = fsp_set_smb_fname(fsp, smb_fname);
+		if (!NT_STATUS_IS_OK(status)) {
+			goto fail;
+		}
+
 		/*
 		 * We're opening the stream element of a base_fsp
 		 * we already opened. Set up the base_fsp pointer.
@@ -3100,7 +3099,6 @@
 
 		status = open_file_ntcreate(conn,
 					    req,
-					    smb_fname,
 					    access_mask,
 					    share_access,
 					    create_disposition,
@@ -3190,7 +3188,7 @@
 
 	if ((ea_list != NULL) &&
 	    ((info == FILE_WAS_CREATED) || (info == FILE_WAS_OVERWRITTEN))) {
-		status = set_ea(conn, fsp, smb_fname, ea_list);
+		status = set_ea(conn, fsp, fsp->fsp_name, ea_list);
 		if (!NT_STATUS_IS_OK(status)) {
 			goto fail;
 		}

Modified: branches/samba/experimental/source3/smbd/process.c
===================================================================
--- branches/samba/experimental/source3/smbd/process.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/smbd/process.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,20 @@
 
 #include "includes.h"
 #include "smbd/globals.h"
+#include "../librpc/gen_ndr/srv_dfs.h"
+#include "../librpc/gen_ndr/srv_dssetup.h"
+#include "../librpc/gen_ndr/srv_echo.h"
+#include "../librpc/gen_ndr/srv_eventlog.h"
+#include "../librpc/gen_ndr/srv_initshutdown.h"
+#include "../librpc/gen_ndr/srv_lsa.h"
+#include "../librpc/gen_ndr/srv_netlogon.h"
+#include "../librpc/gen_ndr/srv_ntsvcs.h"
+#include "../librpc/gen_ndr/srv_samr.h"
+#include "../librpc/gen_ndr/srv_spoolss.h"
+#include "../librpc/gen_ndr/srv_srvsvc.h"
+#include "../librpc/gen_ndr/srv_svcctl.h"
+#include "../librpc/gen_ndr/srv_winreg.h"
+#include "../librpc/gen_ndr/srv_wkssvc.h"
 
 extern bool global_machine_password_needs_changing;
 

Modified: branches/samba/experimental/source3/smbd/quotas.c
===================================================================
--- branches/samba/experimental/source3/smbd/quotas.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/smbd/quotas.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -224,7 +224,7 @@
 
 	/* find the block device file */
 
-	if ( sys_stat(path, &S) == -1 )
+	if (sys_stat(path, &S, false) == -1 )
 		return(False) ;
 
 	devno = S.st_ex_dev ;
@@ -235,7 +235,7 @@
 	found = False ;
 
 	while ((mnt = getmntent(fp))) {
-		if ( sys_stat(mnt->mnt_dir,&S) == -1 )
+		if (sys_stat(mnt->mnt_dir, &S, false) == -1)
 			continue ;
 
 		if (S.st_ex_dev == devno) {
@@ -317,7 +317,7 @@
 	int quota_default = 0 ;
 	bool found = false;
 
-	if (sys_stat(path,&sbuf) == -1) {
+	if (sys_stat(path, &sbuf, false) == -1) {
 		return false;
 	}
 
@@ -328,7 +328,7 @@
 	}
 
 	while ((mnt = getmntent(fd)) != NULL) {
-		if (sys_stat(mnt->mnt_dir,&sbuf) == -1) {
+		if (sys_stat(mnt->mnt_dir, &sbuf, false) == -1) {
 			continue;
 		}
 		if (sbuf.st_ex_dev == devno) {
@@ -599,7 +599,7 @@
 
 	euser_id = geteuid();
 
-	if (sys_stat(path,&sbuf) == -1) {
+	if (sys_stat(path, &sbuf, false) == -1) {
 		return false;
 	}
 
@@ -612,7 +612,7 @@
 	}
 
 	while (getmntent(fd, &mnt) == 0) {
-		if (sys_stat(mnt.mnt_mountp, &sbuf) == -1) {
+		if (sys_stat(mnt.mnt_mountp, &sbuf, false) == -1) {
 			continue;
 		}
 
@@ -639,7 +639,7 @@
 	}
 
 	while ((mnt = getmntent(fd)) != NULL) {
-		if (sys_stat(mnt->mnt_dir,&sbuf) == -1) {
+		if (sys_stat(mnt->mnt_dir, &sbuf, false) == -1) {
 			continue;
 		}
 		DEBUG(5,("disk_quotas: testing \"%s\" devno=%x\n",
@@ -832,7 +832,7 @@
   
   /* find the block device file */
   
-  if ( sys_stat(path, &S) == -1 ) {
+  if ( sys_stat(path, &S, false) == -1 ) {
     return(False) ;
   }
 
@@ -842,7 +842,7 @@
   found = False ;
   
   while ((mnt = getmntent(fp))) {
-    if ( sys_stat(mnt->mnt_dir,&S) == -1 )
+    if ( sys_stat(mnt->mnt_dir, &S, false) == -1 )
       continue ;
     if (S.st_ex_dev == devno) {
       found = True ;
@@ -1154,9 +1154,11 @@
    * to have a significant performance boost when
    * lstat calls on /dev access this function.
    */
-  if ((sys_stat(path, &S)<0) || (devnm(S_IFBLK, S.st_ex_dev, dev_disk, 256, 1)<0))
+  if ((sys_stat(path, &S, false)<0)
+      || (devnm(S_IFBLK, S.st_ex_dev, dev_disk, 256, 1)<0))
 #else
-  if ((sys_stat(path, &S)<0) || (devnm(S_IFBLK, S.st_ex_dev, dev_disk, 256, 0)<0))
+  if ((sys_stat(path, &S, false)<0)
+      || (devnm(S_IFBLK, S.st_ex_dev, dev_disk, 256, 0)<0))
 	return (False);
 #endif /* ifdef HPUX */
 
@@ -1183,7 +1185,7 @@
     SMB_STRUCT_STAT st;
     int mntsize, i;
     
-    if (sys_stat(path,&st) < 0)
+    if (sys_stat(path, &st, false) < 0)
         return False;
     devno = st.st_ex_dev;
 
@@ -1192,7 +1194,7 @@
         return False;
 
     for (i = 0; i < mntsize; i++) {
-        if (sys_stat(mnts[i].f_mntonname,&st) < 0)
+	if (sys_stat(mnts[i].f_mntonname, &st, false) < 0)
             return False;
         if (st.st_ex_dev == devno)
             break;

Modified: branches/samba/experimental/source3/smbd/reply.c
===================================================================
--- branches/samba/experimental/source3/smbd/reply.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/smbd/reply.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -2454,24 +2454,6 @@
 		return NT_STATUS_OBJECT_NAME_INVALID;
 #endif /* JRATEST */
 
-	/* Fix for bug #3035 from SATOH Fumiyasu <fumiyas at miraclelinux.com>
-
-	  On a Windows share, a file with read-only dosmode can be opened with
-	  DELETE_ACCESS. But on a Samba share (delete readonly = no), it
-	  fails with NT_STATUS_CANNOT_DELETE error.
-
-	  This semantic causes a problem that a user can not
-	  rename a file with read-only dosmode on a Samba share
-	  from a Windows command prompt (i.e. cmd.exe, but can rename
-	  from Windows Explorer).
-	*/
-
-	if (!lp_delete_readonly(SNUM(conn))) {
-		if (fattr & aRONLY) {
-			return NT_STATUS_CANNOT_DELETE;
-		}
-	}
-
 	/* On open checks the open itself will check the share mode, so
 	   don't do it here as we'll get it wrong. */
 
@@ -2500,6 +2482,16 @@
 		return status;
 	}
 
+	status = can_set_delete_on_close(fsp, fattr);
+	if (!NT_STATUS_IS_OK(status)) {
+		DEBUG(10, ("do_unlink can_set_delete_on_close for file %s - "
+			"(%s)\n",
+			smb_fname_str_dbg(smb_fname),
+			nt_errstr(status)));
+		close_file(req, fsp, NORMAL_CLOSE);
+		return status;
+	}
+
 	/* The set is across all open files on this dev/inode pair. */
 	if (!set_delete_on_close(fsp, True, &conn->server_info->utok)) {
 		close_file(req, fsp, NORMAL_CLOSE);
@@ -5291,264 +5283,6 @@
 }
 
 /****************************************************************************
- Static function used by reply_rmdir to delete an entire directory
- tree recursively. Return True on ok, False on fail.
-****************************************************************************/
-
-static bool recursive_rmdir(TALLOC_CTX *ctx,
-			connection_struct *conn,
-			struct smb_filename *smb_dname)
-{
-	const char *dname = NULL;
-	char *talloced = NULL;
-	bool ret = True;
-	long offset = 0;
-	SMB_STRUCT_STAT st;
-	struct smb_Dir *dir_hnd;
-
-	SMB_ASSERT(!is_ntfs_stream_smb_fname(smb_dname));
-
-	dir_hnd = OpenDir(talloc_tos(), conn, smb_dname->base_name, NULL, 0);
-	if(dir_hnd == NULL)
-		return False;
-
-	while((dname = ReadDirName(dir_hnd, &offset, &st, &talloced))) {
-		struct smb_filename *smb_dname_full = NULL;
-		char *fullname = NULL;
-		bool do_break = true;
-		NTSTATUS status;
-
-		if (ISDOT(dname) || ISDOTDOT(dname)) {
-			TALLOC_FREE(talloced);
-			continue;
-		}
-
-		if (!is_visible_file(conn, smb_dname->base_name, dname, &st,
-				     false)) {
-			TALLOC_FREE(talloced);
-			continue;
-		}
-
-		/* Construct the full name. */
-		fullname = talloc_asprintf(ctx,
-				"%s/%s",
-				smb_dname->base_name,
-				dname);
-		if (!fullname) {
-			errno = ENOMEM;
-			goto err_break;
-		}
-
-		status = create_synthetic_smb_fname(talloc_tos(), fullname,
-						    NULL, NULL,
-						    &smb_dname_full);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto err_break;
-		}
-
-		if(SMB_VFS_LSTAT(conn, smb_dname_full) != 0) {
-			goto err_break;
-		}
-
-		if(smb_dname_full->st.st_ex_mode & S_IFDIR) {
-			if(!recursive_rmdir(ctx, conn, smb_dname_full)) {
-				goto err_break;
-			}
-			if(SMB_VFS_RMDIR(conn,
-					 smb_dname_full->base_name) != 0) {
-				goto err_break;
-			}
-		} else if(SMB_VFS_UNLINK(conn, smb_dname_full) != 0) {
-			goto err_break;
-		}
-
-		/* Successful iteration. */
-		do_break = false;
-
-	 err_break:
-		TALLOC_FREE(smb_dname_full);
-		TALLOC_FREE(fullname);
-		TALLOC_FREE(talloced);
-		if (do_break) {
-			ret = false;
-			break;
-		}
-	}
-	TALLOC_FREE(dir_hnd);
-	return ret;
-}
-
-/****************************************************************************
- The internals of the rmdir code - called elsewhere.
-****************************************************************************/
-
-NTSTATUS rmdir_internals(TALLOC_CTX *ctx,
-			 connection_struct *conn,
-			 struct smb_filename *smb_dname)
-{
-	int ret;
-
-	SMB_ASSERT(!is_ntfs_stream_smb_fname(smb_dname));
-
-	/* Might be a symlink. */
-	if(SMB_VFS_LSTAT(conn, smb_dname) != 0) {
-		return map_nt_error_from_unix(errno);
-	}
-
-	if (S_ISLNK(smb_dname->st.st_ex_mode)) {
-		/* Is what it points to a directory ? */
-		if(SMB_VFS_STAT(conn, smb_dname) != 0) {
-			return map_nt_error_from_unix(errno);
-		}
-		if (!(S_ISDIR(smb_dname->st.st_ex_mode))) {
-			return NT_STATUS_NOT_A_DIRECTORY;
-		}
-		ret = SMB_VFS_UNLINK(conn, smb_dname);
-	} else {
-		ret = SMB_VFS_RMDIR(conn, smb_dname->base_name);
-	}
-	if (ret == 0) {
-		notify_fname(conn, NOTIFY_ACTION_REMOVED,
-			     FILE_NOTIFY_CHANGE_DIR_NAME,
-			     smb_dname->base_name);
-		return NT_STATUS_OK;
-	}
-
-	if(((errno == ENOTEMPTY)||(errno == EEXIST)) && lp_veto_files(SNUM(conn))) {
-		/*
-		 * Check to see if the only thing in this directory are
-		 * vetoed files/directories. If so then delete them and
-		 * retry. If we fail to delete any of them (and we *don't*
-		 * do a recursive delete) then fail the rmdir.
-		 */
-		SMB_STRUCT_STAT st;
-		const char *dname = NULL;
-		char *talloced = NULL;
-		long dirpos = 0;
-		struct smb_Dir *dir_hnd = OpenDir(talloc_tos(), conn,
-						  smb_dname->base_name, NULL,
-						  0);
-
-		if(dir_hnd == NULL) {
-			errno = ENOTEMPTY;
-			goto err;
-		}
-
-		while ((dname = ReadDirName(dir_hnd, &dirpos, &st,
-					    &talloced)) != NULL) {
-			if((strcmp(dname, ".") == 0) || (strcmp(dname, "..")==0)) {
-				TALLOC_FREE(talloced);
-				continue;
-			}
-			if (!is_visible_file(conn, smb_dname->base_name, dname,
-					     &st, false)) {
-				TALLOC_FREE(talloced);
-				continue;
-			}
-			if(!IS_VETO_PATH(conn, dname)) {
-				TALLOC_FREE(dir_hnd);
-				TALLOC_FREE(talloced);
-				errno = ENOTEMPTY;
-				goto err;
-			}
-			TALLOC_FREE(talloced);
-		}
-
-		/* We only have veto files/directories.
-		 * Are we allowed to delete them ? */
-
-		if(!lp_recursive_veto_delete(SNUM(conn))) {
-			TALLOC_FREE(dir_hnd);
-			errno = ENOTEMPTY;
-			goto err;
-		}
-
-		/* Do a recursive delete. */
-		RewindDir(dir_hnd,&dirpos);
-		while ((dname = ReadDirName(dir_hnd, &dirpos, &st,
-					    &talloced)) != NULL) {
-			struct smb_filename *smb_dname_full = NULL;
-			char *fullname = NULL;
-			bool do_break = true;
-			NTSTATUS status;
-
-			if (ISDOT(dname) || ISDOTDOT(dname)) {
-				TALLOC_FREE(talloced);
-				continue;
-			}
-			if (!is_visible_file(conn, smb_dname->base_name, dname,
-					     &st, false)) {
-				TALLOC_FREE(talloced);
-				continue;
-			}
-
-			fullname = talloc_asprintf(ctx,
-					"%s/%s",
-					smb_dname->base_name,
-					dname);
-
-			if(!fullname) {
-				errno = ENOMEM;
-				goto err_break;
-			}
-
-			status = create_synthetic_smb_fname(talloc_tos(),
-							    fullname, NULL,
-							    NULL,
-							    &smb_dname_full);
-			if (!NT_STATUS_IS_OK(status)) {
-				errno = map_errno_from_nt_status(status);
-				goto err_break;
-			}
-
-			if(SMB_VFS_LSTAT(conn, smb_dname_full) != 0) {
-				goto err_break;
-			}
-			if(smb_dname_full->st.st_ex_mode & S_IFDIR) {
-				if(!recursive_rmdir(ctx, conn,
-						    smb_dname_full)) {
-					goto err_break;
-				}
-				if(SMB_VFS_RMDIR(conn,
-					smb_dname_full->base_name) != 0) {
-					goto err_break;
-				}
-			} else if(SMB_VFS_UNLINK(conn, smb_dname_full) != 0) {
-				goto err_break;
-			}
-
-			/* Successful iteration. */
-			do_break = false;
-
-		 err_break:
-			TALLOC_FREE(fullname);
-			TALLOC_FREE(smb_dname_full);
-			TALLOC_FREE(talloced);
-			if (do_break)
-				break;
-		}
-		TALLOC_FREE(dir_hnd);
-		/* Retry the rmdir */
-		ret = SMB_VFS_RMDIR(conn, smb_dname->base_name);
-	}
-
-  err:
-
-	if (ret != 0) {
-		DEBUG(3,("rmdir_internals: couldn't remove directory %s : "
-			 "%s\n", smb_fname_str_dbg(smb_dname),
-			 strerror(errno)));
-		return map_nt_error_from_unix(errno);
-	}
-
-	notify_fname(conn, NOTIFY_ACTION_REMOVED,
-		     FILE_NOTIFY_CHANGE_DIR_NAME,
-		     smb_dname->base_name);
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************************
  Reply to a rmdir.
 ****************************************************************************/
 
@@ -5559,6 +5293,8 @@
 	char *directory = NULL;
 	NTSTATUS status;
 	TALLOC_CTX *ctx = talloc_tos();
+	files_struct *fsp = NULL;
+	int info = 0;
 	struct smbd_server_connection *sconn = smbd_server_conn;
 
 	START_PROFILE(SMBrmdir);
@@ -5591,15 +5327,51 @@
 		goto out;
 	}
 
-	dptr_closepath(sconn, smb_dname->base_name, req->smbpid);
-	status = rmdir_internals(ctx, conn, smb_dname);
+	status = SMB_VFS_CREATE_FILE(
+		conn,                                   /* conn */
+		req,                                    /* req */
+		0,                                      /* root_dir_fid */
+		smb_dname,                              /* fname */
+		DELETE_ACCESS,                          /* access_mask */
+		(FILE_SHARE_READ | FILE_SHARE_WRITE |   /* share_access */
+			FILE_SHARE_DELETE),
+		FILE_OPEN,                              /* create_disposition*/
+		FILE_DIRECTORY_FILE,                    /* create_options */
+		FILE_ATTRIBUTE_DIRECTORY,               /* file_attributes */
+		0,                                      /* oplock_request */
+		0,                                      /* allocation_size */
+		NULL,                                   /* sd */
+		NULL,                                   /* ea_list */
+		&fsp,                                   /* result */
+		&info);                                 /* pinfo */
+
 	if (!NT_STATUS_IS_OK(status)) {
+		if (open_was_deferred(req->mid)) {
+			/* We have re-scheduled this call. */
+			goto out;
+		}
 		reply_nterror(req, status);
 		goto out;
 	}
 
+	status = can_set_delete_on_close(fsp, FILE_ATTRIBUTE_DIRECTORY);
+	if (!NT_STATUS_IS_OK(status)) {
+		close_file(req, fsp, ERROR_CLOSE);
+		reply_nterror(req, status);
+		goto out;
+	}
+
+	if (!set_delete_on_close(fsp, true, &conn->server_info->utok)) {
+		close_file(req, fsp, ERROR_CLOSE);
+		reply_nterror(req, NT_STATUS_ACCESS_DENIED);
+		goto out;
+	}
+
+	close_file(req, fsp, NORMAL_CLOSE);
 	reply_outbuf(req, 0, 0);
 
+	dptr_closepath(sconn, smb_dname->base_name, req->smbpid);
+
 	DEBUG(3, ("rmdir %s\n", smb_fname_str_dbg(smb_dname)));
  out:
 	TALLOC_FREE(smb_dname);
@@ -6084,7 +5856,7 @@
 		 */
 
 		if (create_options & FILE_DELETE_ON_CLOSE) {
-			status = can_set_delete_on_close(fsp, True, 0);
+			status = can_set_delete_on_close(fsp, 0);
 
 			if (NT_STATUS_IS_OK(status)) {
 				/* Note that here we set the *inital* delete on close flag,
@@ -7266,6 +7038,30 @@
 		if (type & LOCKING_ANDX_CANCEL_LOCK) {
 			struct blocking_lock_record *blr = NULL;
 
+			if (num_locks > 1) {
+				/*
+				 * MS-CIFS (2.2.4.32.1) states that a cancel is honored if and only
+				 * if the lock vector contains one entry. When given mutliple cancel
+				 * requests in a single PDU we expect the server to return an
+				 * error. Windows servers seem to accept the request but only
+				 * cancel the first lock.
+				 * JRA - Do what Windows does (tm) :-).
+				 */
+
+#if 0
+				/* MS-CIFS (2.2.4.32.1) behavior. */
+				return NT_STATUS_DOS(ERRDOS,
+						ERRcancelviolation);
+#else
+				/* Windows behavior. */
+				if (i != 0) {
+					DEBUG(10,("smbd_do_locking: ignoring subsequent "
+						"cancel request\n"));
+					continue;
+				}
+#endif
+			}
+
 			if (lp_blocking_locks(SNUM(conn))) {
 
 				/* Schedule a message to ourselves to

Modified: branches/samba/experimental/source3/smbd/service.c
===================================================================
--- branches/samba/experimental/source3/smbd/service.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/smbd/service.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -1193,7 +1193,7 @@
 			return NULL;
 		}
 
-		DEBUG(0,("%s (%s) couldn't find service %s\n",
+		DEBUG(3,("%s (%s) couldn't find service %s\n",
 			get_remote_machine_name(),
 			client_addr(get_client_fd(),addr,sizeof(addr)),
 			service));

Modified: branches/samba/experimental/source3/smbd/smb2_tcon.c
===================================================================
--- branches/samba/experimental/source3/smbd/smb2_tcon.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/smbd/smb2_tcon.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -169,7 +169,7 @@
 
 	snum = find_service(service);
 	if (snum < 0) {
-		DEBUG(1,("smbd_smb2_tree_connect: couldn't find service %s\n",
+		DEBUG(3,("smbd_smb2_tree_connect: couldn't find service %s\n",
 			 service));
 		return NT_STATUS_BAD_NETWORK_NAME;
 	}

Modified: branches/samba/experimental/source3/smbd/trans2.c
===================================================================
--- branches/samba/experimental/source3/smbd/trans2.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/smbd/trans2.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -70,8 +70,8 @@
 	static const char * const prohibited_ea_names[] = {
 		SAMBA_POSIX_INHERITANCE_EA_NAME,
 		SAMBA_XATTR_DOS_ATTRIB,
-		SAMBA_XATTR_DOSTIMESTAMPS,
 		SAMBA_XATTR_MARKER,
+		XATTR_NTACL_NAME,
 		NULL
 	};
 
@@ -5538,7 +5538,8 @@
 				  files_struct *fsp,
 				  const struct smb_filename *smb_fname,
 				  const SMB_STRUCT_STAT *psbuf,
-				  SMB_OFF_T size)
+				  SMB_OFF_T size,
+				  bool fail_after_createfile)
 {
 	NTSTATUS status = NT_STATUS_OK;
 	struct smb_filename *smb_fname_tmp = NULL;
@@ -5598,6 +5599,12 @@
 		return status;
 	}
 
+	/* See RAW-SFILEINFO-END-OF-FILE */
+	if (fail_after_createfile) {
+		close_file(req, new_fsp,NORMAL_CLOSE);
+		return NT_STATUS_INVALID_LEVEL;
+	}
+
 	if (vfs_set_filelen(new_fsp, size) == -1) {
 		status = map_nt_error_from_unix(errno);
 		close_file(req, new_fsp,NORMAL_CLOSE);
@@ -5730,10 +5737,11 @@
 		(unsigned int)dosmode,
 		(unsigned int)delete_on_close ));
 
-	status = can_set_delete_on_close(fsp, delete_on_close, dosmode);
- 
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+	if (delete_on_close) {
+		status = can_set_delete_on_close(fsp, dosmode);
+		if (!NT_STATUS_IS_OK(status)) {
+			return status;
+		}
 	}
 
 	/* The set is across all open files on this dev/inode pair. */
@@ -6474,7 +6482,8 @@
 					const char *pdata,
 					int total_data,
 					files_struct *fsp,
-					const struct smb_filename *smb_fname)
+					const struct smb_filename *smb_fname,
+					bool fail_after_createfile)
 {
 	SMB_OFF_T size;
 
@@ -6499,7 +6508,8 @@
 				fsp,
 				smb_fname,
 				&smb_fname->st,
-				size);
+				size,
+				fail_after_createfile);
 }
 
 /****************************************************************************
@@ -6785,7 +6795,8 @@
 				   fsp,
 				   smb_fname,
 				   &sbuf,
-				   size);
+				   size,
+				   false);
 	if (!NT_STATUS_IS_OK(status)) {
 		return status;
 	}
@@ -7381,11 +7392,22 @@
 		case SMB_FILE_END_OF_FILE_INFORMATION:
 		case SMB_SET_FILE_END_OF_FILE_INFO:
 		{
+			/*
+			 * XP/Win7 both fail after the createfile with
+			 * SMB_SET_FILE_END_OF_FILE_INFO but not
+			 * SMB_FILE_END_OF_FILE_INFORMATION (pass-through).
+			 * The level is known here, so pass it down
+			 * appropriately.
+			 */
+			bool should_fail =
+			    (info_level == SMB_SET_FILE_END_OF_FILE_INFO);
+
 			status = smb_set_file_end_of_file_info(conn, req,
 								pdata,
 								total_data,
 								fsp,
-								smb_fname);
+								smb_fname,
+								should_fail);
 			break;
 		}
 

Modified: branches/samba/experimental/source3/torture/nsstest.c
===================================================================
--- branches/samba/experimental/source3/torture/nsstest.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/torture/nsstest.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,13 @@
 
 #include "includes.h"
 
+#ifdef malloc
+#undef malloc
+#endif
+#ifdef realloc
+#undef realloc
+#endif
+
 static const char *so_path = "/lib/libnss_winbind.so";
 static const char *nss_name = "winbind";
 static int nss_errno;
@@ -180,13 +187,13 @@
 		return NULL;
 
 	if (!buf) 
-		buf = SMB_MALLOC_ARRAY(char, buflen);
+		buf = (char *)malloc(buflen);
 
 again:	
 	status = _nss_getgrent_r(&grp, buf, buflen, &nss_errno);
 	if (status == NSS_STATUS_TRYAGAIN) {
 		buflen *= 2;
-		buf = SMB_REALLOC_ARRAY(buf, char, buflen);
+		buf = (char *)realloc(buf, buflen);
 		if (!buf) {
 			return NULL;
 		}
@@ -219,12 +226,12 @@
 		return NULL;
 
 	if (!buf) 
-		buf = SMB_MALLOC_ARRAY(char, buflen);
+		buf = (char *)malloc(buflen);
 again:	
 	status = _nss_getgrnam_r(name, &grp, buf, buflen, &nss_errno);
 	if (status == NSS_STATUS_TRYAGAIN) {
 		buflen *= 2;
-		buf = SMB_REALLOC_ARRAY(buf, char, buflen);
+		buf = (char *)realloc(buf, buflen);
 		if (!buf) {
 			return NULL;
 		}
@@ -257,13 +264,13 @@
 		return NULL;
 
 	if (!buf) 
-		buf = SMB_MALLOC_ARRAY(char, buflen);
+		buf = (char *)malloc(buflen);
 
 again:	
 	status = _nss_getgrgid_r(gid, &grp, buf, buflen, &nss_errno);
 	if (status == NSS_STATUS_TRYAGAIN) {
 		buflen *= 2;
-		buf = SMB_REALLOC_ARRAY(buf, char, buflen);
+		buf = (char *)realloc(buf, buflen);
 		if (!buf) {
 			return NULL;
 		}
@@ -369,7 +376,7 @@
 	int i;
 	NSS_STATUS status;
 
-	groups = SMB_MALLOC_ARRAY(gid_t, size);
+	groups = (gid_t *)malloc(size);
 	groups[0] = gid;
 
 	status = nss_initgroups(name, gid, &groups, &start, &size);

Modified: branches/samba/experimental/source3/utils/eventlogadm.c
===================================================================
--- branches/samba/experimental/source3/utils/eventlogadm.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/eventlogadm.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -118,7 +118,10 @@
 		if (fgets( linein, sizeof( linein ) - 1, f1 ) == NULL) {
 			break;
 		}
-		linein[strlen( linein ) - 1] = 0;	/* whack the line delimiter */
+		if ((strlen(linein) > 0)
+		    && (linein[strlen(linein)-1] == '\n')) {
+			linein[strlen(linein)-1] = 0;
+		}
 
 		if ( debugflag )
 			printf( "Read line [%s]\n", linein );

Modified: branches/samba/experimental/source3/utils/net_ads.c
===================================================================
--- branches/samba/experimental/source3/utils/net_ads.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_ads.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 #include "includes.h"
 #include "utils/net.h"
 #include "librpc/gen_ndr/ndr_krb5pac.h"
+#include "../librpc/gen_ndr/cli_spoolss.h"
 #include "nsswitch/libwbclient/wbclient.h"
 
 #ifdef HAVE_ADS

Modified: branches/samba/experimental/source3/utils/net_conf.c
===================================================================
--- branches/samba/experimental/source3/utils/net_conf.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_conf.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -654,7 +654,7 @@
 		goto done;
 	}
 
-	if (sys_stat(path, &sbuf) != 0) {
+	if (sys_stat(path, &sbuf, false) != 0) {
 		d_fprintf(stderr,
 			  _("ERROR: cannot stat path '%s' to ensure "
 			    "this is a directory.\n"

Modified: branches/samba/experimental/source3/utils/net_dom.c
===================================================================
--- branches/samba/experimental/source3/utils/net_dom.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_dom.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -19,6 +19,7 @@
 
 #include "includes.h"
 #include "utils/net.h"
+#include "../librpc/gen_ndr/cli_initshutdown.h"
 
 int net_dom_usage(struct net_context *c, int argc, const char **argv)
 {

Modified: branches/samba/experimental/source3/utils/net_rpc.c
===================================================================
--- branches/samba/experimental/source3/utils/net_rpc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_rpc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,13 @@
 #include "includes.h"
 #include "utils/net.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_samr.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
+#include "../librpc/gen_ndr/cli_netlogon.h"
+#include "../librpc/gen_ndr/cli_srvsvc.h"
+#include "../librpc/gen_ndr/cli_spoolss.h"
+#include "../librpc/gen_ndr/cli_initshutdown.h"
+#include "../librpc/gen_ndr/cli_winreg.h"
 
 static int net_mode_share;
 static bool sync_files(struct copy_clistate *cp_clistate, const char *mask);
@@ -4255,8 +4262,9 @@
 			return true;
 		}
 
-		if (line[strlen(line)-1] == '\n')
+		if ((strlen(line) > 0) && (line[strlen(line)-1] == '\n')) {
 			line[strlen(line)-1] = '\0';
+		}
 
 		if (line[0] == ' ') {
 			/* We have a SID */

Modified: branches/samba/experimental/source3/utils/net_rpc_audit.c
===================================================================
--- branches/samba/experimental/source3/utils/net_rpc_audit.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_rpc_audit.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -18,6 +18,7 @@
 
 #include "includes.h"
 #include "utils/net.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
 
 /********************************************************************
 ********************************************************************/

Modified: branches/samba/experimental/source3/utils/net_rpc_join.c
===================================================================
--- branches/samba/experimental/source3/utils/net_rpc_join.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_rpc_join.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,6 +21,8 @@
 #include "includes.h"
 #include "utils/net.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
+#include "../librpc/gen_ndr/cli_samr.h"
 
 /* Macro for checking RPC error codes to make things more readable */
 

Modified: branches/samba/experimental/source3/utils/net_rpc_printer.c
===================================================================
--- branches/samba/experimental/source3/utils/net_rpc_printer.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_rpc_printer.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -18,6 +18,7 @@
 */
 #include "includes.h"
 #include "utils/net.h"
+#include "../librpc/gen_ndr/cli_spoolss.h"
 
 /* support itanium as well */
 static const struct print_architecture_table_node archi_table[]= {
@@ -909,15 +910,24 @@
 {
 	WERROR result;
 	NTSTATUS status;
+	union spoolss_PrinterData data;
+	DATA_BLOB blob;
 
+	blob = data_blob_const(value->data_p, value->size);
+
+	result = pull_spoolss_PrinterData(mem_ctx, &blob, &data, value->type);
+	if (!W_ERROR_IS_OK(result)) {
+		return false;
+	}
+
 	/* setprinterdataex call */
 	status = rpccli_spoolss_SetPrinterDataEx(pipe_hnd, mem_ctx,
 						 hnd,
 						 keyname,
 						 value->valuename,
 						 value->type,
-						 value->data_p,
-						 value->size,
+						 data,
+						 0,
 						 &result);
 
 	if (!W_ERROR_IS_OK(result)) {

Modified: branches/samba/experimental/source3/utils/net_rpc_registry.c
===================================================================
--- branches/samba/experimental/source3/utils/net_rpc_registry.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_rpc_registry.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -22,6 +22,7 @@
 #include "utils/net_registry_util.h"
 #include "regfio.h"
 #include "reg_objects.h"
+#include "../librpc/gen_ndr/cli_winreg.h"
 
 /*******************************************************************
  connect to a registry hive root (open a registry policy)

Modified: branches/samba/experimental/source3/utils/net_rpc_rights.c
===================================================================
--- branches/samba/experimental/source3/utils/net_rpc_rights.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_rpc_rights.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -19,6 +19,7 @@
 */
 #include "includes.h"
 #include "utils/net.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
 
 /********************************************************************
 ********************************************************************/

Modified: branches/samba/experimental/source3/utils/net_rpc_service.c
===================================================================
--- branches/samba/experimental/source3/utils/net_rpc_service.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_rpc_service.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -18,8 +18,8 @@
 
 #include "includes.h"
 #include "utils/net.h"
+#include "../librpc/gen_ndr/cli_svcctl.h"
 
-
 struct svc_state_msg {
 	uint32 flag;
 	const char *message;

Modified: branches/samba/experimental/source3/utils/net_rpc_sh_acct.c
===================================================================
--- branches/samba/experimental/source3/utils/net_rpc_sh_acct.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_rpc_sh_acct.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -18,6 +18,7 @@
 */
 #include "includes.h"
 #include "utils/net.h"
+#include "../librpc/gen_ndr/cli_samr.h"
 
 /*
  * Do something with the account policies. Read them all, run a function on

Modified: branches/samba/experimental/source3/utils/net_usershare.c
===================================================================
--- branches/samba/experimental/source3/utils/net_usershare.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_usershare.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -248,7 +248,7 @@
 			return -1;
 		}
 
-		if (sys_lstat(path, &sbuf) != 0) {
+		if (sys_lstat(path, &sbuf, false) != 0) {
 			d_fprintf(stderr,
 				_("get_share_list: can't lstat file %s. Error "
 				  "was %s\n"),
@@ -365,7 +365,7 @@
         }
 
 	/* Paranoia... */
-	if (sys_fstat(fd, &sbuf) != 0) {
+	if (sys_fstat(fd, &sbuf, false) != 0) {
 		d_fprintf(stderr,
 			_("info_fn: can't fstat file %s. Error was %s\n"),
 			basepath, strerror(errno) );
@@ -585,7 +585,7 @@
 			return -1;
 		}
 
-		if (sys_lstat(path, &sbuf) != 0) {
+		if (sys_lstat(path, &sbuf, false) != 0) {
 			d_fprintf(stderr,
 				_("count_num_usershares: can't lstat file %s. "
 				  "Error was %s\n"),
@@ -749,7 +749,7 @@
 	}
 
 	/* Check the directory to be shared exists. */
-	if (sys_stat(us_path, &sbuf) != 0) {
+	if (sys_stat(us_path, &sbuf, false) != 0) {
 		d_fprintf(stderr,
 			_("net usershare add: cannot stat path %s to ensure "
 			  "this is a directory. Error was %s\n"),
@@ -892,7 +892,7 @@
 	}
 
 	/* Ensure we opened the file we thought we did. */
-	if (sys_lstat(full_path_tmp, &lsbuf) != 0) {
+	if (sys_lstat(full_path_tmp, &lsbuf, false) != 0) {
 		d_fprintf(stderr,
 			  _("net usershare add: cannot lstat tmp file %s\n"),
 			  full_path_tmp );
@@ -901,7 +901,7 @@
 	}
 
 	/* Check this is the same as the file we opened. */
-	if (sys_fstat(tmpfd, &sbuf) != 0) {
+	if (sys_fstat(tmpfd, &sbuf, false) != 0) {
 		d_fprintf(stderr,
 			  _("net usershare add: cannot fstat tmp file %s\n"),
 			  full_path_tmp );

Modified: branches/samba/experimental/source3/utils/net_util.c
===================================================================
--- branches/samba/experimental/source3/utils/net_util.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/net_util.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -21,6 +21,8 @@
 
 #include "includes.h"
 #include "utils/net.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
+#include "../librpc/gen_ndr/cli_dssetup.h"
 
 NTSTATUS net_rpc_lookup_name(struct net_context *c,
 			     TALLOC_CTX *mem_ctx, struct cli_state *cli,

Modified: branches/samba/experimental/source3/utils/ntlm_auth.c
===================================================================
--- branches/samba/experimental/source3/utils/ntlm_auth.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/ntlm_auth.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -27,6 +27,7 @@
 #include "utils/ntlm_auth.h"
 #include "../libcli/auth/libcli_auth.h"
 #include "../libcli/auth/spnego.h"
+#include "smb_krb5.h"
 #include <iniparser.h>
 
 #ifndef PAM_WINBIND_CONFIG_FILE

Modified: branches/samba/experimental/source3/utils/smbget.c
===================================================================
--- branches/samba/experimental/source3/utils/smbget.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/smbget.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -94,7 +94,9 @@
 		if (fgets(tmp, sizeof(tmp), stdin) == NULL) {
 			return;
 		}
-		if(tmp[strlen(tmp)-1] == '\n')tmp[strlen(tmp)-1] = '\0';
+		if ((strlen(tmp) > 0) && (tmp[strlen(tmp)-1] == '\n')) {
+			tmp[strlen(tmp)-1] = '\0';
+		}
 		strncpy(un, tmp, unlen-1);
 	} else if(username) strncpy(un, username, unlen-1);
 

Modified: branches/samba/experimental/source3/utils/smbtree.c
===================================================================
--- branches/samba/experimental/source3/utils/smbtree.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/smbtree.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -20,6 +20,7 @@
 */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/cli_srvsvc.h"
 
 static int use_bcast;
 

Modified: branches/samba/experimental/source3/utils/testparm.c
===================================================================
--- branches/samba/experimental/source3/utils/testparm.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/utils/testparm.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -35,6 +35,27 @@
 
 extern bool AllowDebugChange;
 
+/*******************************************************************
+ Check if a directory exists.
+********************************************************************/
+
+static bool directory_exist_stat(char *dname,SMB_STRUCT_STAT *st)
+{
+	SMB_STRUCT_STAT st2;
+	bool ret;
+
+	if (!st)
+		st = &st2;
+
+	if (sys_stat(dname, st, false) != 0)
+		return(False);
+
+	ret = S_ISDIR(st->st_ex_mode);
+	if(!ret)
+		errno = ENOTDIR;
+	return ret;
+}
+
 /***********************************************
  Here we do a set of 'hard coded' checks for bad
  configuration settings.

Modified: branches/samba/experimental/source3/web/cgi.c
===================================================================
--- branches/samba/experimental/source3/web/cgi.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/web/cgi.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -442,8 +442,7 @@
 		}
 	}
 
-	if (sys_stat(file, &st) != 0) 
-	{
+	if (sys_stat(file, &st, false) != 0)	{
 		cgi_setup_error("404 File Not Found","",
 				"The requested file was not found");
 	}
@@ -451,7 +450,8 @@
 	if (S_ISDIR(st.st_ex_mode))
 	{
 		snprintf(buf, sizeof(buf), "%s/index.html", file);
-		if (!file_exist_stat(buf, &st) || !S_ISREG(st.st_ex_mode))
+		if (!file_exist_stat(buf, &st, false)
+		    || !S_ISREG(st.st_ex_mode))
 		{
 			cgi_setup_error("404 File Not Found","",
 					"The requested file was not found");
@@ -657,7 +657,8 @@
 {
 	if (inetd_server) {
 		char addr[INET6_ADDRSTRLEN];
-		return get_peer_addr(1,addr,sizeof(addr));
+		get_peer_addr(1,addr,sizeof(addr));
+		return talloc_strdup(talloc_tos(), addr);
 	}
 	return getenv("REMOTE_ADDR");
 }

Modified: branches/samba/experimental/source3/web/swat.c
===================================================================
--- branches/samba/experimental/source3/web/swat.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/web/swat.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -645,7 +645,7 @@
 
 	if (cgi_variable("Commit")) {
 		commit_parameters(GLOBAL_SECTION_SNUM);
-		save_reload(0);
+		save_reload(-1);
 	}
 
 	printf("<form name=\"swatform\" method=post action=wizard_params>\n");
@@ -669,7 +669,7 @@
 static void rewritecfg_file(void)
 {
 	commit_parameters(GLOBAL_SECTION_SNUM);
-	save_reload(0);
+	save_reload(-1);
 	printf("<H2>%s</H2>\n", _("Note: smb.conf file has been read and rewritten"));
 }
 
@@ -757,7 +757,7 @@
 		}
 
 		commit_parameters(GLOBAL_SECTION_SNUM);
-		save_reload(0);
+		save_reload(-1);
 	}
 	else
 	{
@@ -851,7 +851,7 @@
 
 	if (cgi_variable("Commit")) {
 		commit_parameters(GLOBAL_SECTION_SNUM);
-		save_reload(0);
+		save_reload(-1);
 	}
 
 	if ( cgi_variable("ViewMode") )
@@ -909,13 +909,13 @@
 
 	if (cgi_variable("Commit") && snum >= 0) {
 		commit_parameters(snum);
-		save_reload(0);
+		save_reload(-1);
 		snum = lp_servicenumber(share);
 	}
 
 	if (cgi_variable("Delete") && snum >= 0) {
 		lp_remove_service(snum);
-		save_reload(0);
+		save_reload(-1);
 		share = NULL;
 		snum = -1;
 	}
@@ -1265,13 +1265,13 @@
 		if (snum >= iNumNonAutoPrintServices)
 		    save_reload(snum);
 		else
-		    save_reload(0);
+		    save_reload(-1);
 		snum = lp_servicenumber(share);
 	}
 
 	if (cgi_variable("Delete") && snum >= 0) {
 		lp_remove_service(snum);
-		save_reload(0);
+		save_reload(-1);
 		share = NULL;
 		snum = -1;
 	}

Modified: branches/samba/experimental/source3/winbindd/winbindd_ads.c
===================================================================
--- branches/samba/experimental/source3/winbindd/winbindd_ads.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/winbindd/winbindd_ads.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -23,6 +23,7 @@
 
 #include "includes.h"
 #include "winbindd.h"
+#include "../librpc/gen_ndr/cli_netlogon.h"
 
 #ifdef HAVE_ADS
 

Modified: branches/samba/experimental/source3/winbindd/winbindd_cm.c
===================================================================
--- branches/samba/experimental/source3/winbindd/winbindd_cm.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/winbindd/winbindd_cm.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -61,6 +61,10 @@
 #include "includes.h"
 #include "winbindd.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_netlogon.h"
+#include "../librpc/gen_ndr/cli_samr.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
+#include "../librpc/gen_ndr/cli_dssetup.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND

Modified: branches/samba/experimental/source3/winbindd/winbindd_cred_cache.c
===================================================================
--- branches/samba/experimental/source3/winbindd/winbindd_cred_cache.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/winbindd/winbindd_cred_cache.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -24,6 +24,8 @@
 #include "includes.h"
 #include "winbindd.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "smb_krb5.h"
+
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
 

Modified: branches/samba/experimental/source3/winbindd/winbindd_dual_srv.c
===================================================================
--- branches/samba/experimental/source3/winbindd/winbindd_dual_srv.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/winbindd/winbindd_dual_srv.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -24,6 +24,7 @@
 #include "winbindd/winbindd.h"
 #include "winbindd/winbindd_proto.h"
 #include "librpc/gen_ndr/srv_wbint.h"
+#include "../librpc/gen_ndr/cli_netlogon.h"
 
 void _wbint_Ping(pipes_struct *p, struct wbint_Ping *r)
 {

Modified: branches/samba/experimental/source3/winbindd/winbindd_misc.c
===================================================================
--- branches/samba/experimental/source3/winbindd/winbindd_misc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/winbindd/winbindd_misc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -22,6 +22,7 @@
 
 #include "includes.h"
 #include "winbindd.h"
+#include "../librpc/gen_ndr/cli_netlogon.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND

Modified: branches/samba/experimental/source3/winbindd/winbindd_pam.c
===================================================================
--- branches/samba/experimental/source3/winbindd/winbindd_pam.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/winbindd/winbindd_pam.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -25,6 +25,9 @@
 #include "includes.h"
 #include "winbindd.h"
 #include "../libcli/auth/libcli_auth.h"
+#include "../librpc/gen_ndr/cli_samr.h"
+#include "smb_krb5.h"
+
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
 

Modified: branches/samba/experimental/source3/winbindd/winbindd_rpc.c
===================================================================
--- branches/samba/experimental/source3/winbindd/winbindd_rpc.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source3/winbindd/winbindd_rpc.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -24,6 +24,8 @@
 
 #include "includes.h"
 #include "winbindd.h"
+#include "../librpc/gen_ndr/cli_samr.h"
+#include "../librpc/gen_ndr/cli_lsa.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
@@ -1274,8 +1276,12 @@
 	 * This call can take a long time
 	 * allow the server to time out.
 	 * 35 seconds should do it.
+	 * NB
+	 * only do this when the undelying transport is named pipe.
 	 */
-	orig_timeout = rpccli_set_timeout(cli, 35000);
+	if (cli->transport->transport == NCACN_NP) {
+		orig_timeout = rpccli_set_timeout(cli, 35000);
+	}
 
 	status = lookup_names_fn(cli,
 				 mem_ctx,
@@ -1288,7 +1294,9 @@
 				 types);
 
 	/* And restore our original timeout. */
-	rpccli_set_timeout(cli, orig_timeout);
+	if (cli->transport->transport == NCACN_NP) {
+		rpccli_set_timeout(cli, orig_timeout);
+	}
 
 	if (!NT_STATUS_IS_OK(status)) {
 		return status;

Copied: branches/samba/experimental/source4/heimdal/lib/wind/rfc3454.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/heimdal/lib/wind/rfc3454.txt)
===================================================================
--- branches/samba/experimental/source4/heimdal/lib/wind/rfc3454.txt	                        (rev 0)
+++ branches/samba/experimental/source4/heimdal/lib/wind/rfc3454.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,5099 @@
+
+
+
+
+
+
+Network Working Group                                         P. Hoffman
+Request for Comments: 3454                                    IMC & VPNC
+Category: Standards Track                                    M. Blanchet
+                                                                Viagenie
+                                                           December 2002
+
+
+        Preparation of Internationalized Strings ("stringprep")
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2002).  All Rights Reserved.
+
+Abstract
+
+   This document describes a framework for preparing Unicode text
+   strings in order to increase the likelihood that string input and
+   string comparison work in ways that make sense for typical users
+   throughout the world.  The stringprep protocol is useful for protocol
+   identifier values, company and personal names, internationalized
+   domain names, and other text strings.
+
+   This document does not specify how protocols should prepare text
+   strings.  Protocols must create profiles of stringprep in order to
+   fully specify the processing options.
+
+Table of Contents
+
+   1. Introduction....................................................3
+     1.1 Terminology..................................................4
+     1.2 Using stringprep in protocols................................4
+   2. Preparation Overview............................................6
+   3. Mapping.........................................................7
+     3.1 Commonly mapped to nothing...................................7
+     3.2 Case folding.................................................8
+   4. Normalization...................................................9
+   5. Prohibited Output..............................................10
+     5.1 Space characters............................................11
+     5.2 Control characters..........................................11
+     5.3 Private use.................................................12
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 1]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+     5.4 Non-character code points...................................12
+     5.5 Surrogate codes.............................................13
+     5.6 Inappropriate for plain text................................13
+     5.7 Inappropriate for canonical representation..................13
+     5.8 Change display properties or deprecated.....................13
+     5.9 Tagging characters..........................................14
+   6. Bidirectional Characters.......................................14
+   7. Unassigned Code Points in Stringprep Profiles..................15
+     7.1 Categories of code points...................................16
+     7.2 Reasons for difference between stored strings and queries...17
+     7.3 Versions of applications and stored strings.................18
+   8. References.....................................................19
+     8.1 Normative references........................................19
+     8.2 Informative references......................................19
+   9. Security Considerations........................................19
+     9.1 Stringprep-specific security considerations.................19
+     9.2 Generic Unicode security considerations.....................20
+   10. IANA Considerations...........................................21
+   11. Acknowledgements..............................................22
+   A. Unicode repertoires............................................23
+     A.1 Unassigned code points in Unicode 3.2.......................23
+   B. Mapping Tables.................................................31
+     B.1 Commonly mapped to nothing..................................31
+     B.2 Mapping for case-folding used with NFKC.....................32
+     B.3 Mapping for case-folding used with no normalization.........61
+   C. Prohibition tables.............................................78
+     C.1 Space characters............................................78
+       C.1.1 ASCII space characters..................................78
+       C.1.2 Non-ASCII space characters..............................79
+     C.2 Control characters..........................................79
+       C.2.1 ASCII control characters................................79
+       C.2.2 Non-ASCII control characters............................79
+     C.3 Private use.................................................80
+     C.4 Non-character code points...................................80
+     C.5 Surrogate codes.............................................80
+     C.6 Inappropriate for plain text................................80
+     C.7 Inappropriate for canonical representation..................81
+     C.8 Change display properties or are deprecated.................81
+     C.9 Tagging characters..........................................81
+   D. Bidirectional tables...........................................81
+     D.1 Characters with bidirectional property "R" or "AL"..........81
+     D.2 Characters with bidirectional property "L"..................82
+   Authors' Addresses................................................90
+   Full Copyright Statement..........................................91
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 2]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+1. Introduction
+
+   Application programs can display text in many different ways.
+   Similarly, a user can enter text into an application program in a
+   myriad of fashions.  Internationalized text (that is, text that is
+   not restricted to the narrow set of US-ASCII characters) has many
+   input and display behaviors that make it difficult to compare text in
+   a consistent fashion.
+
+   This document specifies a framework of processing rules for Unicode
+   text.  Other protocols can create profiles of these rules; these
+   profiles will allow users to enter internationalized text strings in
+   applications and have the highest chance of getting the content of
+   the strings correct.  In this case, "correct" means that if two
+   different people enter what they think is the same string into two
+   different input mechanisms, the strings should match on a character-
+   by-character basis.
+
+   This framework does not describe how data is transcoded from other
+   character sets into Unicode.  In systems that uses non-Unicode
+   character sets, the transcoding algorithm is a critical part of
+   enabling secure and "correct" operation of internationalized text
+   strings.
+
+   In addition to helping string matching, profiles of stringprep can
+   also exclude characters that should not normally appear in text that
+   is used in the protocol.  The profile can prevent such characters by
+   changing the characters to be excluded to other characters, by
+   removing those characters, or by causing an error if the characters
+   would appear in the output.  For example, because the backspace
+   character can cause unpredictable display results, a profile can
+   specify that a string containing a backspace character would cause an
+   error.
+
+   A profile of stringprep converts a single string of input characters
+   to a string of output characters, or returns an error if the output
+   string would contain a prohibited character.  Stringprep profiles
+   cannot both emit a string and return an error.
+
+   Stringprep profiles cannot account for all of the variations that
+   might occur or that a user might expect.  In particular, a profile
+   will not be able to account for choice of spellings in all languages
+   for all scripts because the number of alternative spellings of words
+   and phrases is immense.  Users would probably expect all spelling
+   equivalents to be made equivalent, or none of them to be.  Examples
+   of spelling equivalents include "theater" vs. "theatre", and
+   "hemoglobin" vs. "h<U+00E6>moglobin" in American vs. British English.
+   Other examples are simplified Chinese spellings of names (for
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 3]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   example,"<U+7EDF><U+4E00><U+7801>") vs. the equivalent traditional
+   Chinese spelling (for example, "<U+7D71><U+4E00><U+78BC>").
+   Language-specific equivalences such as "Aepfel" vs. "<U+00C4>pfel",
+   which are sometimes considered equivalent in German, may not be
+   considered equivalent in other languages.
+
+1.1 Terminology
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14, RFC 2119
+   [RFC2119].
+
+   Note: A glossary of terms used in Unicode and ISO/IEC 10646 can be
+   found in [Glossary].  Information on the 10646/Unicode character
+   encoding model can be found in [CharModel].
+
+   Character names in this document use the notation for code points and
+   names from the Unicode Standard [Unicode3.2] and ISO/IEC 10646
+   [ISO10646].  For example, the letter "a" may be represented as either
+   "U+0061" or "LATIN SMALL LETTER A".  In the lists of mappings and the
+   prohibited characters, the "U+" is left off to make the lists easier
+   to read.  The comments for character ranges are shown in square
+   brackets (such as "[CONTROL CHARACTERS]") and do not come from the
+   standards.
+
+1.2 Using stringprep in protocols
+
+   The stringprep protocol does not stand on its own; it has to be used
+   by other protocols at precisely-defined places in those other
+   protocols.  For example, a protocol that has strings that come from
+   the entire ISO/IEC 10646 [ISO10646] character repertoire might
+   specify that only strings that have been processed with a particular
+   profile of stringprep are legal.  Another example would be a protocol
+   that does string comparison as a step in the protocol; that protocol
+   might specify that such comparison is done only after processing the
+   strings with a specific profile of stringprep.
+
+   When two protocols that use different profiles of stringprep
+   interoperate, there may be conflict about what characters are and are
+   not allowed in the final string.  Thus, protocol developers should
+   strongly consider re-using existing profiles of stringprep.
+
+   When developers wish to allow users as wide of a range of characters
+   as possible in input text strings, they should, where possible, cause
+   stringprep to convert characters from the input string to a canonical
+   form instead of prohibiting them.
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 4]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   Although it would be easy to use the stringprep process to "correct"
+   perceived mis-features or bugs in the current character standards,
+   stringprep profiles SHOULD NOT do so.
+
+   A profile of stringprep can create tables different from those in the
+   appendixes of this document, but it will be an exception when they
+   do.  The intention of stringprep is to define the tables and have the
+   profiles of stringprep select among those defined tables.
+
+   A profile of stringprep MUST include all of the following:
+
+   - The intended applicability of the profile
+
+   - The character repertoire that is the input and output to stringprep
+     (which is Unicode 3.2 for this version of stringprep)
+
+   - The mapping tables from this document used (as described in section
+     3)
+
+   - Any additional mapping tables specific to the profile
+
+   - The Unicode normalization used, if any (as described in section 4)
+
+   - The tables from this document of characters that are prohibited as
+     output (as described in section 5)
+
+   - The bidirectional string testing used, if any (as described in
+     section 6)
+
+   - Any additional characters that are prohibited as output specific to
+     the profile
+
+   Each profile MUST state the character repertoire on which the profile
+   will operate.  Appendix A lists the Unicode repertoires that can be
+   selected.  No repertoire is ever complete, and it is expected that
+   characters will be added to the Unicode repertoire for the
+   foreseeable future.  Section 7 of this document describes how to
+   handle characters that are assigned in later versions of the Unicode
+   repertories.  Subsections of appendix A also list unassigned code
+   points for each repertoire.
+
+   This document is for Unicode version 3.2, and should not be
+   considered to automatically apply to later Unicode versions.  The
+   IETF, through an explicit standards action, may update this document
+   as appropriate to handle later Unicode versions.
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 5]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   This document lists the unassigned code points in the range 0 to
+   10FFFF for Unicode 3.2 in appendix A.  The list in appendix A MUST be
+   used by implementations of this specification.  If there are any
+   discrepancies between the list in appendix A and the Unicode 3.2
+   specification, the list in appendix A always takes precedence.
+
+   Each profile of stringprep MUST be registered with IANA.  The
+   registration procedure is described in the IANA Considerations
+   appendix; basically, the IESG must review each profile of stringprep.
+   Protocol developers are strongly encouraged to look through the IANA
+   profile registry when creating new profiles for stringprep, and to
+   re-use logic from earlier profiles where possible in new profiles.
+   In some cases, an existing profile can be reused by a different
+   protocol.
+
+2. Preparation Overview
+
+   The steps for preparing strings are:
+
+   1) Map -- For each character in the input, check if it has a mapping
+      and, if so, replace it with its mapping.  This is described in
+      section 3.
+
+   2) Normalize -- Possibly normalize the result of step 1 using Unicode
+      normalization.  This is described in section 4.
+
+   3) Prohibit -- Check for any characters that are not allowed in the
+      output.  If any are found, return an error.  This is described in
+      section 5.
+
+   4) Check bidi -- Possibly check for right-to-left characters, and if
+      any are found, make sure that the whole string satisfies the
+      requirements for bidirectional strings.  If the string does not
+      satisfy the requirements for bidirectional strings, return an
+      error.  This is described in section 6.
+
+   The above steps MUST be performed in the order given to comply with
+   this specification.
+
+   The mappings described in section 3, and the optional Unicode
+   normalization described in section 4, can be one-to-none, one-to-one,
+   one-to-many, many-to-one, or many-to-many.  That is, some characters
+   might be eliminated or replaced by more than one character, and the
+   output of this step might be shorter or longer than the input.
+   Because of this, the system using stringprep MUST be prepared to
+   receive a longer or shorter string than the one input in the
+   stringprep algorithm.
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 6]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+3. Mapping
+
+   Each character in the input stream MUST be checked against a mapping
+   table.  The mapping table SHOULD come from this document, although
+   the mapping table MAY be added to or altered by the profile.  The
+   mapping tables are subsections of appendix B.
+
+   The lists in appendix B MUST be used by implementations of this
+   specification.  If there are any discrepancies between the lists in
+   appendix B and subsections below, the lists in appendix B always
+   takes precedence.
+
+   For any individual character, the mapping table MAY specify that a
+   character be mapped to nothing, or mapped to one other character, or
+   mapped to a string of other characters.
+
+   Mapped characters are not re-scanned during the mapping step.  That
+   is, if character A at position X is mapped to character B, character
+   B which is now at position X is not checked against the mapping
+   table.
+
+3.1 Commonly mapped to nothing
+
+   The following characters are simply deleted from the input (that is,
+   they are mapped to nothing) because their presence or absence in
+   protocol identifiers should not make two strings different.  They are
+   listed in Table B.1.
+
+   Some characters are only useful in line-based text, and are otherwise
+   invisible and ignored.
+
+   00AD; SOFT HYPHEN
+   1806; MONGOLIAN TODO SOFT HYPHEN
+   200B; ZERO WIDTH SPACE
+   2060; WORD JOINER
+   FEFF; ZERO WIDTH NO-BREAK SPACE
+
+   Some characters affect glyph choice and glyph placement, but do not
+   bear semantics.
+
+   034F; COMBINING GRAPHEME JOINER
+   180B; MONGOLIAN FREE VARIATION SELECTOR ONE
+   180C; MONGOLIAN FREE VARIATION SELECTOR TWO
+   180D; MONGOLIAN FREE VARIATION SELECTOR THREE
+   200C; ZERO WIDTH NON-JOINER
+   200D; ZERO WIDTH JOINER
+   FE00; VARIATION SELECTOR-1
+   FE01; VARIATION SELECTOR-2
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 7]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   FE02; VARIATION SELECTOR-3
+   FE03; VARIATION SELECTOR-4
+   FE04; VARIATION SELECTOR-5
+   FE05; VARIATION SELECTOR-6
+   FE06; VARIATION SELECTOR-7
+   FE07; VARIATION SELECTOR-8
+   FE08; VARIATION SELECTOR-9
+   FE09; VARIATION SELECTOR-10
+   FE0A; VARIATION SELECTOR-11
+   FE0B; VARIATION SELECTOR-12
+   FE0C; VARIATION SELECTOR-13
+   FE0D; VARIATION SELECTOR-14
+   FE0E; VARIATION SELECTOR-15
+   FE0F; VARIATION SELECTOR-16
+
+3.2 Case folding
+
+   If a profile is going to map characters for case-insensitive
+   comparison, that profile SHOULD map using either appendix B.2 or
+   appendix B.3.  appendix B.2 is for profiles that also use Unicode
+   normalization form KC, while appendix  B.3 is for profiles that do
+   not use Unicode normalization.  These tables map from uppercase to
+   lowercase characters.  Note that this could have been "change all
+   lowercase characters into uppercase characters".  However, the
+   upper-to-lower folding was chosen because there is a tradition of
+   using lowercase in current Internet applications and protocols.
+
+   If a profile creates its own mapping tables for case folding, they
+   SHOULD be based on [UTR21], and SHOULD map from uppercase characters
+   to lowercase.  The "CaseFolding.txt" file from the Unicode database
+   SHOULD be used to prepare the mapping table. The profile SHOULD do
+   full case mapping (that is, using statuses C, F, and I).
+
+   If the profile is using Unicode normalization form KC (as described
+   in section 4 of this document), it is important to note that there
+   are some characters that do not have mappings in [UTR21] but still
+   need processing.  These characters include a few Greek characters and
+   many symbols that contain Latin characters.  The list of characters
+   to add to the mapping table can determined by the following
+   algorithm:
+
+   b = NormalizeWithKC(Fold(a));
+   c = NormalizeWithKC(Fold(b));
+   if c is not the same as b, add a mapping for "a to c".
+
+   Because NormalizeWithKC(Fold(c)) always equals c, the table is stable
+   from that point on.
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 8]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   Appendix B.3 is derived from the CaseFolding-3.txt file associated
+   with Unicode 3.2; appendix B.2 is based on appendix B.3 with the
+   additional characters added from the algorithm above.
+
+   Authors of profiles of this document need to consider the effects of
+   changing the mapping of any currently-assigned character when
+   updating their profiles.  Adding a new mapping for a currently-
+   assigned character, or changing an existing mapping, could cause a
+   variance between the behavior of systems that have been updated and
+   systems that have not been updated.
+
+4. Normalization
+
+   The output of the mapping step is optionally normalized using one of
+   the Unicode normalization forms, as described in [UAX15].  A profile
+   can specify one of two options for Unicode normalization:
+
+   - no normalization
+
+   - Unicode normalization with form KC
+
+   A profile MAY choose to do no normalization.  However, such a profile
+   can easily yield results that will be surprising to typical users,
+   depending on the input mechanism they use.  For example, some input
+   mechanisms enter compatibility characters that look exactly like the
+   underlying characters, but have different code points.  Another
+   example of where Unicode normalization helps create predictable
+   results is with characters that have multiple combining diacritics:
+   normalization orders those diacritics in a predictable fashion.
+
+   On the other hand, Unicode normalization requires fairly large tables
+   and somewhat complicated character reordering logic.  The size and
+   complexity should not be considered daunting except in the most
+   restricted of environments, and needs to be weighed against the
+   problems of user surprise from comparing unnormalized strings.  Note
+   that the tables used for normalization are not given in this
+   document, but instead must be derived from the Unicode database, as
+   described in [UAX15].
+
+   There is a third form of normalization, Unicode normalization with
+   form C.  If a profile is going to use a Unicode normalization, it
+   MUST use Unicode normalization form KC.  Form KC maps many
+   "compatibility characters" to their equivalents.  Some user interface
+   systems make it possible to enter compatibility characters instead of
+   the base equivalents.  Thus, using form KC instead of form C will
+   cause more strings that users would expect to match to actually
+   match.
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 9]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   A profile that specifies Unicode normalization MUST use the
+   normalization in [UAX15] that is associated with the version of the
+   Unicode character set specified for the profile.
+
+   The composition process described in [UAX15] requires a fixed
+   composition version of Unicode to ensure that strings normalized
+   under one version of Unicode remain normalized under all future
+   versions of Unicode.
+
+   The IETF is relying on Unicode not to change the normalization of
+   currently-assigned characters in future versions of normalization.
+   If a future version of the normalization tables changes the
+   normalized value of an existing character, authors of profiles of
+   this document have to look at the changes very carefully before they
+   update their normalization tables.  Such a change could cause a
+   variance between the behavior of systems that have been updated and
+   systems that have not been updated.
+
+5. Prohibited Output
+
+   Before the text can be emitted, it MUST be checked for prohibited
+   code points.  There are a variety of prohibited code points, as
+   described in this section.  A profile of this document MAY use all or
+   some of the tables in appendix C.
+
+   The stringprep process never emits both an error and a string.  If an
+   error is detected during the checking for prohibited code points,
+   only an error is returned.
+
+   Note that the subsections below describe how the tables in appendix C
+   were formed.  They are here for people who want to understand more,
+   but they should be ignored by implementors.  Implementations that use
+   tables MUST map based on the tables themselves, not based on the
+   descriptions in this section of how the tables were created.
+
+   The lists in appendix C MUST be used by implementations of this
+   specification.  If there are any discrepancies between the lists in
+   appendix C and subsections below, the lists in appendix C always take
+   precedence.
+
+   Some code points listed in one section may also appear in other
+   sections.
+
+   It is important to note that a profile of this document MAY prohibit
+   additional characters.
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 10]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   Each subsection of this section has a matching subsection in appendix
+   C.  For example, the characters listed in section 5.1 are listed in
+   appendix C.1.
+
+5.1 Space characters
+
+   Space characters can make accurate visual transcription of strings
+   nearly impossible and could lead to user entry errors in many ways.
+   Note that the list below is split into two tables in appendix C:
+   Table C.1.1 contains the ASCII code points, while Table C.1.2
+   contains the non-ASCII code points.  Most profiles of this document
+   that want to prohibit space characters will want to include both
+   tables.
+
+   0020; SPACE
+   00A0; NO-BREAK SPACE
+   1680; OGHAM SPACE MARK
+   2000; EN QUAD
+   2001; EM QUAD
+   2002; EN SPACE
+   2003; EM SPACE
+   2004; THREE-PER-EM SPACE
+   2005; FOUR-PER-EM SPACE
+   2006; SIX-PER-EM SPACE
+   2007; FIGURE SPACE
+   2008; PUNCTUATION SPACE
+   2009; THIN SPACE
+   200A; HAIR SPACE
+   200B; ZERO WIDTH SPACE
+   202F; NARROW NO-BREAK SPACE
+   205F; MEDIUM MATHEMATICAL SPACE
+   3000; IDEOGRAPHIC SPACE
+
+5.2 Control characters
+
+   Control characters (or characters with control function) cannot be
+   seen and can cause unpredictable results when displayed.  Note that
+   the list below is split into two tables in appendix C: Table C.2.1
+   contains the ASCII code points, while Table C.2.2 contains the non-
+   ASCII code points.  Most profiles of this document that want to
+   prohibit control characters will want to include both tables.
+
+   0000-001F; [CONTROL CHARACTERS]
+   007F; DELETE
+   0080-009F; [CONTROL CHARACTERS]
+   06DD; ARABIC END OF AYAH
+   070F; SYRIAC ABBREVIATION MARK
+   180E; MONGOLIAN VOWEL SEPARATOR
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 11]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   200C; ZERO WIDTH NON-JOINER
+   200D; ZERO WIDTH JOINER
+   2028; LINE SEPARATOR
+   2029; PARAGRAPH SEPARATOR
+   2060; WORD JOINER
+   2061; FUNCTION APPLICATION
+   2062; INVISIBLE TIMES
+   2063; INVISIBLE SEPARATOR
+   206A-206F; [CONTROL CHARACTERS]
+   FEFF; ZERO WIDTH NO-BREAK SPACE
+   FFF9-FFFC; [CONTROL CHARACTERS]
+   1D173-1D17A; [MUSICAL CONTROL CHARACTERS]
+
+5.3 Private use
+
+   Because private-use characters do not have defined meanings, they are
+   likely to be prohibited.  The private-use characters are:
+
+   E000-F8FF; [PRIVATE USE, PLANE 0]
+   F0000-FFFFD; [PRIVATE USE, PLANE 15]
+   100000-10FFFD; [PRIVATE USE, PLANE 16]
+
+5.4 Non-character code points
+
+   Non-character code points are code points that have been allocated in
+   ISO/IEC 10646 but are not characters.  Because they are already
+   assigned, they are guaranteed not to later change into characters.
+
+   FDD0-FDEF; [NONCHARACTER CODE POINTS]
+   FFFE-FFFF; [NONCHARACTER CODE POINTS]
+   1FFFE-1FFFF; [NONCHARACTER CODE POINTS]
+   2FFFE-2FFFF; [NONCHARACTER CODE POINTS]
+   3FFFE-3FFFF; [NONCHARACTER CODE POINTS]
+   4FFFE-4FFFF; [NONCHARACTER CODE POINTS]
+   5FFFE-5FFFF; [NONCHARACTER CODE POINTS]
+   6FFFE-6FFFF; [NONCHARACTER CODE POINTS]
+   7FFFE-7FFFF; [NONCHARACTER CODE POINTS]
+   8FFFE-8FFFF; [NONCHARACTER CODE POINTS]
+   9FFFE-9FFFF; [NONCHARACTER CODE POINTS]
+   AFFFE-AFFFF; [NONCHARACTER CODE POINTS]
+   BFFFE-BFFFF; [NONCHARACTER CODE POINTS]
+   CFFFE-CFFFF; [NONCHARACTER CODE POINTS]
+   DFFFE-DFFFF; [NONCHARACTER CODE POINTS]
+   EFFFE-EFFFF; [NONCHARACTER CODE POINTS]
+   FFFFE-FFFFF; [NONCHARACTER CODE POINTS]
+   10FFFE-10FFFF; [NONCHARACTER CODE POINTS]
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 12]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   The non-character code points are listed in the PropList.txt file
+   from the Unicode database.
+
+5.5 Surrogate codes
+
+   The following code points are permanently reserved for use as
+   surrogate code values in the UTF-16 encoding, will never be assigned
+   to characters in the Unicode repertoire, and are therefore
+   prohibited:
+
+   D800-DFFF; [SURROGATE CODES]
+
+5.6 Inappropriate for plain text
+
+   The following characters do not appear in regular text.
+
+   FFF9; INTERLINEAR ANNOTATION ANCHOR
+   FFFA; INTERLINEAR ANNOTATION SEPARATOR
+   FFFB; INTERLINEAR ANNOTATION TERMINATOR
+   FFFC; OBJECT REPLACEMENT CHARACTER
+
+   Although the replacement character (U+FFFD) might be used when a
+   string is displayed,  it doesn't make sense for it to be part of the
+   string itself.  It is often displayed by renderers to indicate "there
+   would be some character here, but it cannot be rendered".  For
+   example, on a computer with no Asian fonts, a string with three
+   ideographs might be rendered with three replacement characters.
+
+   FFFD; REPLACEMENT CHARACTER
+
+5.7 Inappropriate for canonical representation
+
+   The ideographic description characters allow different sequences of
+   characters to be rendered the same way, which makes them
+   inappropriate for strings that have to have a single canonical
+   representation.
+
+   2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS]
+
+5.8 Change display properties or are deprecated
+
+   The following characters can cause changes in display or the order in
+   which characters appear when rendered, or are deprecated in Unicode.
+
+   0340; COMBINING GRAVE TONE MARK
+   0341; COMBINING ACUTE TONE MARK
+   200E; LEFT-TO-RIGHT MARK
+   200F; RIGHT-TO-LEFT MARK
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 13]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   202A; LEFT-TO-RIGHT EMBEDDING
+   202B; RIGHT-TO-LEFT EMBEDDING
+   202C; POP DIRECTIONAL FORMATTING
+   202D; LEFT-TO-RIGHT OVERRIDE
+   202E; RIGHT-TO-LEFT OVERRIDE
+   206A; INHIBIT SYMMETRIC SWAPPING
+   206B; ACTIVATE SYMMETRIC SWAPPING
+   206C; INHIBIT ARABIC FORM SHAPING
+   206D; ACTIVATE ARABIC FORM SHAPING
+   206E; NATIONAL DIGIT SHAPES
+   206F; NOMINAL DIGIT SHAPES
+
+5.9 Tagging characters
+
+   The following characters are used for tagging text and are invisible.
+
+   E0001; LANGUAGE TAG
+   E0020-E007F; [TAGGING CHARACTERS]
+
+6. Bidirectional Characters
+
+   Most characters are displayed from left to right, but some are
+   displayed from right to left.  This feature of Unicode is called
+   "bidirectional text", or "bidi" for short.  The Unicode standard has
+   an extensive discussion of how to reorder glyphs for display when
+   dealing with bidirectional text such as Arabic or Hebrew.  See [UAX9]
+   for more information.  In particular, all Unicode text is stored in
+   logical order.
+
+   A profile MAY choose to ignore bidirectional text.  However, ignoring
+   bidirectional text can cause display ambiguities.  For example, it is
+   quite easy to create two different strings with the same characters
+   (but in different order) that are correctly displayed identically.
+   Therefore, in order to avoid most problems with ambiguous
+   bidirectional text display, profile creators should strongly consider
+   including the bidirectional character handling described in this
+   section in their profile.
+
+   The stringprep process never emits both an error and a string.  If an
+   error is detected during the checking of bidirectional strings, only
+   an error is returned.
+
+   [Unicode3.2] defines several bidirectional categories; each character
+   has one bidirectional category assigned to it.  For the purposes of
+   the requirements below, an "RandALCat character" is a character that
+   has Unicode bidirectional categories "R" or "AL"; an "LCat character"
+   is a character that has Unicode bidirectional category "L".  Note
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 14]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   that there are many characters which fall in neither of the above
+   definitions; Latin digits (<U+0030> through <U+0039>) are examples of
+   this because they have bidirectional category "EN".
+
+   In any profile that specifies bidirectional character handling, all
+   three of the following requirements MUST be met:
+
+   1) The characters in section 5.8 MUST be prohibited.
+
+   2) If a string contains any RandALCat character, the string MUST NOT
+      contain any LCat character.
+
+   3) If a string contains any RandALCat character, a RandALCat
+      character MUST be the first character of the string, and a
+      RandALCat character MUST be the last character of the string.
+
+   Note that requirement 3 prohibits strings such as <U+0627><U+0031>
+   ("aleph 1") but allows strings such as <U+0627><U+0031><U+0628>
+   ("aleph 1 beh").  [UAX9] goes into great detail about the display
+   order of strings that contain particular categories of characters in
+   particular sequences.
+
+   Table D.1 lists the characters that belong to Unicode bidirectional
+   categories "R" and "AL".  Table D.2 lists all the characters that
+   belong to Unicode bidirectonal category "L".  These tables are
+   derived from [Unicode3.2].
+
+7. Unassigned Code Points in Stringprep Profiles
+
+   This section describes two different types of strings in typical
+   protocols where internationalized strings are used: "stored strings"
+   and "queries".  Of course, different Internet protocols use strings
+   very differently, so these terms cannot be used exactly in every
+   protocol that needs to use stringprep.  In general, "stored strings"
+   are strings that are used in protocol identifiers and named entities,
+   such as names in digital certificates and DNS domain name parts.
+   "Queries" are strings that are used to match against strings that are
+   stored identifiers, such as user-entered names for digital
+   certificate authorities and DNS lookups.
+
+   All code points not assigned in the character repertoire named in a
+   stringprep profile are called "unassigned code points".  Stored
+   strings using the profile MUST NOT contain any unassigned code
+   points.  Queries for matching strings MAY contain unassigned code
+   points.  Note that this is the only part of this document where the
+   requirements for queries differs from the requirements for stored
+   strings.
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 15]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   Using two different policies for where unassigned code points can
+   appear removes the need for versioning in protocols that use
+   stringprep profiles.  This is very useful since it makes the overall
+   processing simpler and does not impose a "protocol" to handle
+   versioning.  It is expected that the ISO/IEC 10646 and Unicode
+   repertoires will be updated fairly frequently; at the time that this
+   document is being written, it has happened approximately once a year.
+   Each time a new version of a repertoire appears, a new version of a
+   profile MAY be created.  Some end users will want to use the new code
+   points as soon as they are defined.
+
+   The list of unassigned code points MUST be given in a profile, and
+   that list MUST be used by implementations of the profile.
+
+   The goal of the requirements in this section is to prevent
+   comparisons between two strings that were both permitted to contain
+   unassigned code points.  When two strings X and Y are compared and
+   string Y was prepared in a way that permits unassigned code points, a
+   negative result to the comparison is not definitive; it's possible
+   that the strings don't match even though they would match if a more
+   recent version of the profile were used for Y.  However, if both X
+   and Y were prepared in a way that permits unassigned code points,
+   something worse can happen: even a positive result for the comparison
+   is not definitive.  It is possible that the strings do match even
+   though they would not match if a more recent version of the profile
+   were used (one that prohibits a code point appearing in both X and
+   Y).
+
+   Due to the way that versioning is handled in this section, stored
+   strings that are embedded in structures that cannot be changed (such
+   as the signed parts of digital certificates) MUST NOT contain any
+   unassigned code points.
+
+7.1 Categories of code points
+
+   Each code point in a repertoire named by a profile of stringprep can
+   be categorized by how it acts in the process described in earlier
+   sections of this document:
+
+      AO      Code points that can be in the output
+
+      MN      Code points that cannot be in the output because they
+              never appear as output from mapping or normalization
+
+      D       Code points that cannot be in the output because they are
+              disallowed in the prohibition step
+
+      U       Unassigned code points
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 16]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   A subsequent version of a profile that references a newer version of
+   a repertoire with new code points will inherently have some code
+   points move from category U to either D, MN, or AO.  For backwards
+   compatibility, a subsequent version of a profile MUST NOT move code
+   points from any other category.  That is, current AO, MN, or D code
+   points MUST NOT ever change to a different category.
+
+   Stored strings MUST NOT contain any code points outside of AO for the
+   latest version of a profile.  That is, they are forbidden to contain
+   code points from the MN, D, or U categories.
+
+   Applications creating queries MUST treat U code points as if they
+   were AO when preparing the query to be entered in the process
+   described by a profile of stringprep.  Those applications MAY
+   optionally have a preprocessor that provide stricter checks: treating
+   unassigned code points in the input as errors, or warning the user
+   about the fact that the code point is unassigned in the version of a
+   profile that the software is based on; such a choice is a local
+   matter for the software.
+
+7.2 Reasons for the difference between stored strings and queries
+
+   Different software using different versions of a stringprep profile
+   need to interoperate with maximal compatibility.  The scheme
+   described in this section (stored strings MUST NOT contain unassigned
+   code points, queries MAY include unassigned code points) allows that
+   compatibility without introducing any known security or
+   interoperability issues.
+
+   The list below shows what happens if a query contains a code point
+   from category U that is allowed in a newer version of a profile.  The
+   query either matches the string that was intended, or matches no
+   string at all.  In this list, the query comes from an application
+   using version "oldVersion" of a profile, the stored string was
+   created using version "newVersion" of the same profile, and the code
+   point X was in category U in oldVersion, and has changed category to
+   AO, MN, or D.  There are 3 possible scenarios:
+
+   1. X is assigned to AO -- In newVersion, X is in category AO.
+      Because the application passed X through, it gets back a positive
+      match with the stored string.  There is one exceptional case,
+      where X is a combining mark.
+
+      The order of combining marks is normalized, so if another
+      combining mark Y has a lower combining class than X then XY will
+      be put in the canonical order YX.  (Unassigned code points are
+      never reordered, so this doesn't happen in oldVersion).  If the
+      query contains YX, the query will get positive match with the
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 17]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+      stored string.  However, no string can be stored with XY, so a
+      query with XY will get a negative answer to the test for matching.
+
+   2. X is assigned to MN -- In newVersion, X is normalized to code
+      point "nX" and therefore X is now put in category MN.  This cannot
+      exist in any stored string, so any query containing X will get a
+      negative answer to the test for matching.  Note, however, if the
+      query had contained the letter nX, it would have positively
+      matched.
+
+   3. X is assigned to D -- In newVersion, X is in category D.  This
+      cannot exist in any stored string, so any query containing X will
+      get a negative answer to the test for matching.
+
+   In none of the cases does the query get data for a stored string
+   other than the one it actually tried to match against.
+
+   Profiles are stable between versions in the following sense: If a
+   string S has been prepared using newVersion, then it will not change
+   if it is subsequently prepared using oldVersion.
+
+7.3 Versions of applications and stored strings
+
+   Another way to see that this versioning system works is to compare
+   what happens when an application uses a newer or older version of a
+   profile.
+
+   Newer query application -- Suppose that a querying application is
+   using version newVersion and the stored string was created using
+   version oldVersion.  This case is simple: there will be no characters
+   in the stored string that cannot be queried by the application
+   because the new profile uses a superset of the code points used for
+   making the stored string.
+
+   Newer stored string -- Suppose that a querying application is using
+   oldVersion and the stored string was created using a profile that
+   uses newVersion.  Because the querying application let unassigned
+   code points pass through, the user can query on stored strings that
+   use code points in newVersion.  No stored strings can have code
+   points that are unassigned in newVersion, since that is illegal.  In
+   order to get a match, the querying application has to enter the
+   unassigned code points in the proper order, and has to use unassigned
+   code points that would make it through both the mapping and the
+   normalization steps.
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 18]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+8. References
+
+8.1 Normative references
+
+   [UAX15]      Mark Davis and Martin Duerst. Unicode Standard Annex
+                #15:  Unicode Normalization Forms, Version 3.2.0.
+                <http://www.unicode.org/unicode/reports/tr15/tr15-
+                22.html>.
+
+   [Unicode3.2] The Unicode Consortium. The Unicode Standard, Version
+                3.2.0 is defined by The Unicode Standard, Version 3.0
+                (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
+                as amended by the Unicode Standard Annex #27: Unicode
+                3.1 (http://www.unicode.org/reports/tr27/) and by the
+                Unicode Standard Annex #28: Unicode 3.2
+                (http://www.unicode.org/reports/tr28/).
+
+   [RFC2119]    Bradner, S., "Key words for use in RFCs to Indicate
+                Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+8.2 Informative references
+
+   [CharModel]  Unicode Technical Report;17, Character Encoding Model.
+                <http://www.unicode.org/unicode/reports/tr17/>.
+
+   [Glossary]   Unicode Glossary, <http://www.unicode.org/glossary/>.
+
+   [ISO10646]   ISO/IEC, "Information Technology - Universal Multiple-
+                Octet Coded Character Set (UCS) - Part 1: Architecture
+                and Basic Multilingual Plane", ISO/IEC 10646-1:2000,
+                October 2000.
+
+   [RFC2434]    Narten, T. and H. Alvestrand, "Guidelines for IANA
+                Considerations", BCP 26, RFC 2434, October 1998.
+
+   [UAX9]       The Unicode Consortium. Unicode Standard Annex #9, The
+                Bidirectional Algorithm,
+                <http://www.unicode.org/unicode/reports/tr9/>.
+
+   [UTR21]      Mark Davis. Case Mappings. Unicode Technical Report 21.
+                <http://www.unicode.org/unicode/reports/tr21/>.
+
+9. Security Considerations
+
+   Stringprep is used with Unicode characters.  There are security
+   considerations that are specific to stringprep, and others that are
+   generic to using Unicode.
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 19]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+9.1 Stringprep-specific security considerations
+
+   The Unicode and ISO/IEC 10646 repertoires have many characters that
+   look similar.  In many cases, users of security protocols might do
+   visual matching, such as when comparing the names of trusted third
+   parties.  Because it is impossible to map similar-looking characters
+   without a great deal of context such as knowing the fonts used,
+   stringprep does nothing to map similar-looking characters together
+   nor to prohibit some characters because they look like others.  User
+   applications can help disambiguate some similar-looking characters by
+   showing the user when a string changes between scripts.
+
+   Most profiles of stringprep can cause changes in strings that are
+   input to stringprep.  Because of this, protocols that have sets of
+   non-allowed characters or sequences MUST check for the non-allowed
+   characters or sequences after the stringprep processing.
+
+   This document does not mandate the checking of bidirectional
+   characters in section 6.  If the requirements in section 6 are not
+   used in a profile of stringprep, it is easy to create many strings
+   whose characters are in different order but are displayed
+   identically.  This can cause security-related user confusion similar
+   to look-alike characters, as described above.
+
+   Stringprep does not do anything to assure that any algorithms
+   translating characters from non-Unicode into Unicode produce the same
+   output in all implementations.
+
+   Some Unicode codepoints are invisible.  Protocols that allow these
+   characters (that is, do not map them out or prohibit them in
+   stringprep) can cause users confusion when two identical-looking
+   strings do not match.
+
+9.2 Generic Unicode security considerations
+
+   Using Unicode characters explicitly forces applications to use
+   multi-octet characters.  Converting an application from one that uses
+   single-octet characters to one that uses multi-octet characters must
+   be done very carefully, particularly in an application that checks
+   for values of characters or sorts characters.
+
+   Protocols that use stringprep usually also use encodings of Unicode,
+   such as UTF-8 or UTF-16.  Some applications using those encodings
+   have been known to not check for illegal or ill-formed sequences in
+   the encodings, and thereby have not detected sequences of octets that
+   would have been detected if they used just ASCII.  For example, in
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 20]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   UTF-8 the octet sequence "0xC0 0xAB" is an illegal formation of
+   U+002B (plus sign).  All programs should reject any string that is an
+   illegal or ill-formed octet sequence for the encoding being used.
+
+   Both Unicode normalization and conversion between Unicode encodings
+   can cause strings to grow or shrink.  Programs that used fixed-size
+   buffers, or that make assumptions that buffers will always be greater
+   than or less than particular sizes, are likely to fail in insecure
+   fashions when using Unicode normalization or encoding conversions.
+
+   Covering an extensive list of security threats and considerations on
+   the use of current and future versions of Unicode is outside of the
+   scope of this document.
+
+10. IANA Considerations
+
+   Stringprep profiles MUST have IETF consensus as described in
+   [RFC2434].  Each profile MUST be reviewed by the IESG before it is
+   registered.  The IESG MAY change a profile before registration.
+
+   IANA has set up a registry of stringprep profiles.  This registry is
+   a single text file that lists the known profiles.  Each entry in the
+   registry has three fields:
+
+   - Profile name
+
+   - RFC in which the profile is defined
+
+   - Indicator whether or not this is the newest version of the profile
+
+   Each version of a profile will remain listed in the registry forever.
+   That is, if a new version of a profile supersedes an earlier version,
+   both versions will continue to be listed in the registry, but the
+   current version indicator will be turned off for the earlier version
+   and turned on for the newer version.
+
+   It is probably harmful if a large number of profiles of stringprep
+   proliferate.  Therefore, the IESG may reject proposals for new
+   profiles and instead suggest that protocols reuse existing profiles.
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 21]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+11. Acknowledgements
+
+   Many people from the IETF IDN Working Group and the Unicode Technical
+   Committee contributed ideas that went into the first document of this
+   document.  Mark Davis and Patrik Faltstrom were particularly helpful
+   in some of the ideas, such as the versioning description.
+
+   The IDN nameprep design team made many useful changes to the first
+   document.  That team and its advisors include:
+
+   Asmus Freytag
+   Cathy Wissink
+   Francois Yergeau
+   James Seng
+   Marc Blanchet
+   Mark Davis
+   Martin Duerst
+   Patrik Faltstrom
+   Paul Hoffman
+
+   Additional significant improvements were proposed by:
+
+   Jonathan Rosenne
+   Kent Karlsson
+   Scott Hollenbeck
+   Dave Crocker
+   Erik Nordmark
+   Matitiahu Allouche
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 22]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+A. Unicode repertoires
+
+   The following is the only repertoire covered in this document:
+
+   Unicode 3.2, as defined in [Unicode3.2].
+
+A.1 Unassigned code points in Unicode 3.2
+
+   ----- Start Table A.1 -----
+   0221
+   0234-024F
+   02AE-02AF
+   02EF-02FF
+   0350-035F
+   0370-0373
+   0376-0379
+   037B-037D
+   037F-0383
+   038B
+   038D
+   03A2
+   03CF
+   03F7-03FF
+   0487
+   04CF
+   04F6-04F7
+   04FA-04FF
+   0510-0530
+   0557-0558
+   0560
+   0588
+   058B-0590
+   05A2
+   05BA
+   05C5-05CF
+   05EB-05EF
+   05F5-060B
+   060D-061A
+   061C-061E
+   0620
+   063B-063F
+   0656-065F
+   06EE-06EF
+   06FF
+   070E
+   072D-072F
+   074B-077F
+   07B2-0900
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 23]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0904
+   093A-093B
+   094E-094F
+   0955-0957
+   0971-0980
+   0984
+   098D-098E
+   0991-0992
+   09A9
+   09B1
+   09B3-09B5
+   09BA-09BB
+   09BD
+   09C5-09C6
+   09C9-09CA
+   09CE-09D6
+   09D8-09DB
+   09DE
+   09E4-09E5
+   09FB-0A01
+   0A03-0A04
+   0A0B-0A0E
+   0A11-0A12
+   0A29
+   0A31
+   0A34
+   0A37
+   0A3A-0A3B
+   0A3D
+   0A43-0A46
+   0A49-0A4A
+   0A4E-0A58
+   0A5D
+   0A5F-0A65
+   0A75-0A80
+   0A84
+   0A8C
+   0A8E
+   0A92
+   0AA9
+   0AB1
+   0AB4
+   0ABA-0ABB
+   0AC6
+   0ACA
+   0ACE-0ACF
+   0AD1-0ADF
+   0AE1-0AE5
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 24]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0AF0-0B00
+   0B04
+   0B0D-0B0E
+   0B11-0B12
+   0B29
+   0B31
+   0B34-0B35
+   0B3A-0B3B
+   0B44-0B46
+   0B49-0B4A
+   0B4E-0B55
+   0B58-0B5B
+   0B5E
+   0B62-0B65
+   0B71-0B81
+   0B84
+   0B8B-0B8D
+   0B91
+   0B96-0B98
+   0B9B
+   0B9D
+   0BA0-0BA2
+   0BA5-0BA7
+   0BAB-0BAD
+   0BB6
+   0BBA-0BBD
+   0BC3-0BC5
+   0BC9
+   0BCE-0BD6
+   0BD8-0BE6
+   0BF3-0C00
+   0C04
+   0C0D
+   0C11
+   0C29
+   0C34
+   0C3A-0C3D
+   0C45
+   0C49
+   0C4E-0C54
+   0C57-0C5F
+   0C62-0C65
+   0C70-0C81
+   0C84
+   0C8D
+   0C91
+   0CA9
+   0CB4
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 25]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0CBA-0CBD
+   0CC5
+   0CC9
+   0CCE-0CD4
+   0CD7-0CDD
+   0CDF
+   0CE2-0CE5
+   0CF0-0D01
+   0D04
+   0D0D
+   0D11
+   0D29
+   0D3A-0D3D
+   0D44-0D45
+   0D49
+   0D4E-0D56
+   0D58-0D5F
+   0D62-0D65
+   0D70-0D81
+   0D84
+   0D97-0D99
+   0DB2
+   0DBC
+   0DBE-0DBF
+   0DC7-0DC9
+   0DCB-0DCE
+   0DD5
+   0DD7
+   0DE0-0DF1
+   0DF5-0E00
+   0E3B-0E3E
+   0E5C-0E80
+   0E83
+   0E85-0E86
+   0E89
+   0E8B-0E8C
+   0E8E-0E93
+   0E98
+   0EA0
+   0EA4
+   0EA6
+   0EA8-0EA9
+   0EAC
+   0EBA
+   0EBE-0EBF
+   0EC5
+   0EC7
+   0ECE-0ECF
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 26]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0EDA-0EDB
+   0EDE-0EFF
+   0F48
+   0F6B-0F70
+   0F8C-0F8F
+   0F98
+   0FBD
+   0FCD-0FCE
+   0FD0-0FFF
+   1022
+   1028
+   102B
+   1033-1035
+   103A-103F
+   105A-109F
+   10C6-10CF
+   10F9-10FA
+   10FC-10FF
+   115A-115E
+   11A3-11A7
+   11FA-11FF
+   1207
+   1247
+   1249
+   124E-124F
+   1257
+   1259
+   125E-125F
+   1287
+   1289
+   128E-128F
+   12AF
+   12B1
+   12B6-12B7
+   12BF
+   12C1
+   12C6-12C7
+   12CF
+   12D7
+   12EF
+   130F
+   1311
+   1316-1317
+   131F
+   1347
+   135B-1360
+   137D-139F
+   13F5-1400
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 27]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1677-167F
+   169D-169F
+   16F1-16FF
+   170D
+   1715-171F
+   1737-173F
+   1754-175F
+   176D
+   1771
+   1774-177F
+   17DD-17DF
+   17EA-17FF
+   180F
+   181A-181F
+   1878-187F
+   18AA-1DFF
+   1E9C-1E9F
+   1EFA-1EFF
+   1F16-1F17
+   1F1E-1F1F
+   1F46-1F47
+   1F4E-1F4F
+   1F58
+   1F5A
+   1F5C
+   1F5E
+   1F7E-1F7F
+   1FB5
+   1FC5
+   1FD4-1FD5
+   1FDC
+   1FF0-1FF1
+   1FF5
+   1FFF
+   2053-2056
+   2058-205E
+   2064-2069
+   2072-2073
+   208F-209F
+   20B2-20CF
+   20EB-20FF
+   213B-213C
+   214C-2152
+   2184-218F
+   23CF-23FF
+   2427-243F
+   244B-245F
+   24FF
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 28]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   2614-2615
+   2618
+   267E-267F
+   268A-2700
+   2705
+   270A-270B
+   2728
+   274C
+   274E
+   2753-2755
+   2757
+   275F-2760
+   2795-2797
+   27B0
+   27BF-27CF
+   27EC-27EF
+   2B00-2E7F
+   2E9A
+   2EF4-2EFF
+   2FD6-2FEF
+   2FFC-2FFF
+   3040
+   3097-3098
+   3100-3104
+   312D-3130
+   318F
+   31B8-31EF
+   321D-321F
+   3244-3250
+   327C-327E
+   32CC-32CF
+   32FF
+   3377-337A
+   33DE-33DF
+   33FF
+   4DB6-4DFF
+   9FA6-9FFF
+   A48D-A48F
+   A4C7-ABFF
+   D7A4-D7FF
+   FA2E-FA2F
+   FA6B-FAFF
+   FB07-FB12
+   FB18-FB1C
+   FB37
+   FB3D
+   FB3F
+   FB42
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 29]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   FB45
+   FBB2-FBD2
+   FD40-FD4F
+   FD90-FD91
+   FDC8-FDCF
+   FDFD-FDFF
+   FE10-FE1F
+   FE24-FE2F
+   FE47-FE48
+   FE53
+   FE67
+   FE6C-FE6F
+   FE75
+   FEFD-FEFE
+   FF00
+   FFBF-FFC1
+   FFC8-FFC9
+   FFD0-FFD1
+   FFD8-FFD9
+   FFDD-FFDF
+   FFE7
+   FFEF-FFF8
+   10000-102FF
+   1031F
+   10324-1032F
+   1034B-103FF
+   10426-10427
+   1044E-1CFFF
+   1D0F6-1D0FF
+   1D127-1D129
+   1D1DE-1D3FF
+   1D455
+   1D49D
+   1D4A0-1D4A1
+   1D4A3-1D4A4
+   1D4A7-1D4A8
+   1D4AD
+   1D4BA
+   1D4BC
+   1D4C1
+   1D4C4
+   1D506
+   1D50B-1D50C
+   1D515
+   1D51D
+   1D53A
+   1D53F
+   1D545
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 30]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D547-1D549
+   1D551
+   1D6A4-1D6A7
+   1D7CA-1D7CD
+   1D800-1FFFD
+   2A6D7-2F7FF
+   2FA1E-2FFFD
+   30000-3FFFD
+   40000-4FFFD
+   50000-5FFFD
+   60000-6FFFD
+   70000-7FFFD
+   80000-8FFFD
+   90000-9FFFD
+   A0000-AFFFD
+   B0000-BFFFD
+   C0000-CFFFD
+   D0000-DFFFD
+   E0000
+   E0002-E001F
+   E0080-EFFFD
+   ----- End Table A.1 -----
+
+B. Mapping Tables
+
+   The following is the mapping table from section 3.  The table has
+   three columns:
+
+   - the code point that is mapped from
+   - the zero or more code points that it is mapped to
+   - the reason for the mapping
+
+   The columns are separated by semicolons.  Note that the second column
+   may be empty, or it may have one code point, or it may have more than
+   one code point, with each code point separated by a space.
+
+B.1 Commonly mapped to nothing
+
+   ----- Start Table B.1 -----
+   00AD; ; Map to nothing
+   034F; ; Map to nothing
+   1806; ; Map to nothing
+   180B; ; Map to nothing
+   180C; ; Map to nothing
+   180D; ; Map to nothing
+   200B; ; Map to nothing
+   200C; ; Map to nothing
+   200D; ; Map to nothing
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 31]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   2060; ; Map to nothing
+   FE00; ; Map to nothing
+   FE01; ; Map to nothing
+   FE02; ; Map to nothing
+   FE03; ; Map to nothing
+   FE04; ; Map to nothing
+   FE05; ; Map to nothing
+   FE06; ; Map to nothing
+   FE07; ; Map to nothing
+   FE08; ; Map to nothing
+   FE09; ; Map to nothing
+   FE0A; ; Map to nothing
+   FE0B; ; Map to nothing
+   FE0C; ; Map to nothing
+   FE0D; ; Map to nothing
+   FE0E; ; Map to nothing
+   FE0F; ; Map to nothing
+   FEFF; ; Map to nothing
+   ----- End Table B.1 -----
+
+B.2 Mapping for case-folding used with NFKC
+
+   ----- Start Table B.2 -----
+   0041; 0061; Case map
+   0042; 0062; Case map
+   0043; 0063; Case map
+   0044; 0064; Case map
+   0045; 0065; Case map
+   0046; 0066; Case map
+   0047; 0067; Case map
+   0048; 0068; Case map
+   0049; 0069; Case map
+   004A; 006A; Case map
+   004B; 006B; Case map
+   004C; 006C; Case map
+   004D; 006D; Case map
+   004E; 006E; Case map
+   004F; 006F; Case map
+   0050; 0070; Case map
+   0051; 0071; Case map
+   0052; 0072; Case map
+   0053; 0073; Case map
+   0054; 0074; Case map
+   0055; 0075; Case map
+   0056; 0076; Case map
+   0057; 0077; Case map
+   0058; 0078; Case map
+   0059; 0079; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 32]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   005A; 007A; Case map
+   00B5; 03BC; Case map
+   00C0; 00E0; Case map
+   00C1; 00E1; Case map
+   00C2; 00E2; Case map
+   00C3; 00E3; Case map
+   00C4; 00E4; Case map
+   00C5; 00E5; Case map
+   00C6; 00E6; Case map
+   00C7; 00E7; Case map
+   00C8; 00E8; Case map
+   00C9; 00E9; Case map
+   00CA; 00EA; Case map
+   00CB; 00EB; Case map
+   00CC; 00EC; Case map
+   00CD; 00ED; Case map
+   00CE; 00EE; Case map
+   00CF; 00EF; Case map
+   00D0; 00F0; Case map
+   00D1; 00F1; Case map
+   00D2; 00F2; Case map
+   00D3; 00F3; Case map
+   00D4; 00F4; Case map
+   00D5; 00F5; Case map
+   00D6; 00F6; Case map
+   00D8; 00F8; Case map
+   00D9; 00F9; Case map
+   00DA; 00FA; Case map
+   00DB; 00FB; Case map
+   00DC; 00FC; Case map
+   00DD; 00FD; Case map
+   00DE; 00FE; Case map
+   00DF; 0073 0073; Case map
+   0100; 0101; Case map
+   0102; 0103; Case map
+   0104; 0105; Case map
+   0106; 0107; Case map
+   0108; 0109; Case map
+   010A; 010B; Case map
+   010C; 010D; Case map
+   010E; 010F; Case map
+   0110; 0111; Case map
+   0112; 0113; Case map
+   0114; 0115; Case map
+   0116; 0117; Case map
+   0118; 0119; Case map
+   011A; 011B; Case map
+   011C; 011D; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 33]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   011E; 011F; Case map
+   0120; 0121; Case map
+   0122; 0123; Case map
+   0124; 0125; Case map
+   0126; 0127; Case map
+   0128; 0129; Case map
+   012A; 012B; Case map
+   012C; 012D; Case map
+   012E; 012F; Case map
+   0130; 0069 0307; Case map
+   0132; 0133; Case map
+   0134; 0135; Case map
+   0136; 0137; Case map
+   0139; 013A; Case map
+   013B; 013C; Case map
+   013D; 013E; Case map
+   013F; 0140; Case map
+   0141; 0142; Case map
+   0143; 0144; Case map
+   0145; 0146; Case map
+   0147; 0148; Case map
+   0149; 02BC 006E; Case map
+   014A; 014B; Case map
+   014C; 014D; Case map
+   014E; 014F; Case map
+   0150; 0151; Case map
+   0152; 0153; Case map
+   0154; 0155; Case map
+   0156; 0157; Case map
+   0158; 0159; Case map
+   015A; 015B; Case map
+   015C; 015D; Case map
+   015E; 015F; Case map
+   0160; 0161; Case map
+   0162; 0163; Case map
+   0164; 0165; Case map
+   0166; 0167; Case map
+   0168; 0169; Case map
+   016A; 016B; Case map
+   016C; 016D; Case map
+   016E; 016F; Case map
+   0170; 0171; Case map
+   0172; 0173; Case map
+   0174; 0175; Case map
+   0176; 0177; Case map
+   0178; 00FF; Case map
+   0179; 017A; Case map
+   017B; 017C; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 34]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   017D; 017E; Case map
+   017F; 0073; Case map
+   0181; 0253; Case map
+   0182; 0183; Case map
+   0184; 0185; Case map
+   0186; 0254; Case map
+   0187; 0188; Case map
+   0189; 0256; Case map
+   018A; 0257; Case map
+   018B; 018C; Case map
+   018E; 01DD; Case map
+   018F; 0259; Case map
+   0190; 025B; Case map
+   0191; 0192; Case map
+   0193; 0260; Case map
+   0194; 0263; Case map
+   0196; 0269; Case map
+   0197; 0268; Case map
+   0198; 0199; Case map
+   019C; 026F; Case map
+   019D; 0272; Case map
+   019F; 0275; Case map
+   01A0; 01A1; Case map
+   01A2; 01A3; Case map
+   01A4; 01A5; Case map
+   01A6; 0280; Case map
+   01A7; 01A8; Case map
+   01A9; 0283; Case map
+   01AC; 01AD; Case map
+   01AE; 0288; Case map
+   01AF; 01B0; Case map
+   01B1; 028A; Case map
+   01B2; 028B; Case map
+   01B3; 01B4; Case map
+   01B5; 01B6; Case map
+   01B7; 0292; Case map
+   01B8; 01B9; Case map
+   01BC; 01BD; Case map
+   01C4; 01C6; Case map
+   01C5; 01C6; Case map
+   01C7; 01C9; Case map
+   01C8; 01C9; Case map
+   01CA; 01CC; Case map
+   01CB; 01CC; Case map
+   01CD; 01CE; Case map
+   01CF; 01D0; Case map
+   01D1; 01D2; Case map
+   01D3; 01D4; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 35]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   01D5; 01D6; Case map
+   01D7; 01D8; Case map
+   01D9; 01DA; Case map
+   01DB; 01DC; Case map
+   01DE; 01DF; Case map
+   01E0; 01E1; Case map
+   01E2; 01E3; Case map
+   01E4; 01E5; Case map
+   01E6; 01E7; Case map
+   01E8; 01E9; Case map
+   01EA; 01EB; Case map
+   01EC; 01ED; Case map
+   01EE; 01EF; Case map
+   01F0; 006A 030C; Case map
+   01F1; 01F3; Case map
+   01F2; 01F3; Case map
+   01F4; 01F5; Case map
+   01F6; 0195; Case map
+   01F7; 01BF; Case map
+   01F8; 01F9; Case map
+   01FA; 01FB; Case map
+   01FC; 01FD; Case map
+   01FE; 01FF; Case map
+   0200; 0201; Case map
+   0202; 0203; Case map
+   0204; 0205; Case map
+   0206; 0207; Case map
+   0208; 0209; Case map
+   020A; 020B; Case map
+   020C; 020D; Case map
+   020E; 020F; Case map
+   0210; 0211; Case map
+   0212; 0213; Case map
+   0214; 0215; Case map
+   0216; 0217; Case map
+   0218; 0219; Case map
+   021A; 021B; Case map
+   021C; 021D; Case map
+   021E; 021F; Case map
+   0220; 019E; Case map
+   0222; 0223; Case map
+   0224; 0225; Case map
+   0226; 0227; Case map
+   0228; 0229; Case map
+   022A; 022B; Case map
+   022C; 022D; Case map
+   022E; 022F; Case map
+   0230; 0231; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 36]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0232; 0233; Case map
+   0345; 03B9; Case map
+   037A; 0020 03B9; Additional folding
+   0386; 03AC; Case map
+   0388; 03AD; Case map
+   0389; 03AE; Case map
+   038A; 03AF; Case map
+   038C; 03CC; Case map
+   038E; 03CD; Case map
+   038F; 03CE; Case map
+   0390; 03B9 0308 0301; Case map
+   0391; 03B1; Case map
+   0392; 03B2; Case map
+   0393; 03B3; Case map
+   0394; 03B4; Case map
+   0395; 03B5; Case map
+   0396; 03B6; Case map
+   0397; 03B7; Case map
+   0398; 03B8; Case map
+   0399; 03B9; Case map
+   039A; 03BA; Case map
+   039B; 03BB; Case map
+   039C; 03BC; Case map
+   039D; 03BD; Case map
+   039E; 03BE; Case map
+   039F; 03BF; Case map
+   03A0; 03C0; Case map
+   03A1; 03C1; Case map
+   03A3; 03C3; Case map
+   03A4; 03C4; Case map
+   03A5; 03C5; Case map
+   03A6; 03C6; Case map
+   03A7; 03C7; Case map
+   03A8; 03C8; Case map
+   03A9; 03C9; Case map
+   03AA; 03CA; Case map
+   03AB; 03CB; Case map
+   03B0; 03C5 0308 0301; Case map
+   03C2; 03C3; Case map
+   03D0; 03B2; Case map
+   03D1; 03B8; Case map
+   03D2; 03C5; Additional folding
+   03D3; 03CD; Additional folding
+   03D4; 03CB; Additional folding
+   03D5; 03C6; Case map
+   03D6; 03C0; Case map
+   03D8; 03D9; Case map
+   03DA; 03DB; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 37]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   03DC; 03DD; Case map
+   03DE; 03DF; Case map
+   03E0; 03E1; Case map
+   03E2; 03E3; Case map
+   03E4; 03E5; Case map
+   03E6; 03E7; Case map
+   03E8; 03E9; Case map
+   03EA; 03EB; Case map
+   03EC; 03ED; Case map
+   03EE; 03EF; Case map
+   03F0; 03BA; Case map
+   03F1; 03C1; Case map
+   03F2; 03C3; Case map
+   03F4; 03B8; Case map
+   03F5; 03B5; Case map
+   0400; 0450; Case map
+   0401; 0451; Case map
+   0402; 0452; Case map
+   0403; 0453; Case map
+   0404; 0454; Case map
+   0405; 0455; Case map
+   0406; 0456; Case map
+   0407; 0457; Case map
+   0408; 0458; Case map
+   0409; 0459; Case map
+   040A; 045A; Case map
+   040B; 045B; Case map
+   040C; 045C; Case map
+   040D; 045D; Case map
+   040E; 045E; Case map
+   040F; 045F; Case map
+   0410; 0430; Case map
+   0411; 0431; Case map
+   0412; 0432; Case map
+   0413; 0433; Case map
+   0414; 0434; Case map
+   0415; 0435; Case map
+   0416; 0436; Case map
+   0417; 0437; Case map
+   0418; 0438; Case map
+   0419; 0439; Case map
+   041A; 043A; Case map
+   041B; 043B; Case map
+   041C; 043C; Case map
+   041D; 043D; Case map
+   041E; 043E; Case map
+   041F; 043F; Case map
+   0420; 0440; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 38]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0421; 0441; Case map
+   0422; 0442; Case map
+   0423; 0443; Case map
+   0424; 0444; Case map
+   0425; 0445; Case map
+   0426; 0446; Case map
+   0427; 0447; Case map
+   0428; 0448; Case map
+   0429; 0449; Case map
+   042A; 044A; Case map
+   042B; 044B; Case map
+   042C; 044C; Case map
+   042D; 044D; Case map
+   042E; 044E; Case map
+   042F; 044F; Case map
+   0460; 0461; Case map
+   0462; 0463; Case map
+   0464; 0465; Case map
+   0466; 0467; Case map
+   0468; 0469; Case map
+   046A; 046B; Case map
+   046C; 046D; Case map
+   046E; 046F; Case map
+   0470; 0471; Case map
+   0472; 0473; Case map
+   0474; 0475; Case map
+   0476; 0477; Case map
+   0478; 0479; Case map
+   047A; 047B; Case map
+   047C; 047D; Case map
+   047E; 047F; Case map
+   0480; 0481; Case map
+   048A; 048B; Case map
+   048C; 048D; Case map
+   048E; 048F; Case map
+   0490; 0491; Case map
+   0492; 0493; Case map
+   0494; 0495; Case map
+   0496; 0497; Case map
+   0498; 0499; Case map
+   049A; 049B; Case map
+   049C; 049D; Case map
+   049E; 049F; Case map
+   04A0; 04A1; Case map
+   04A2; 04A3; Case map
+   04A4; 04A5; Case map
+   04A6; 04A7; Case map
+   04A8; 04A9; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 39]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   04AA; 04AB; Case map
+   04AC; 04AD; Case map
+   04AE; 04AF; Case map
+   04B0; 04B1; Case map
+   04B2; 04B3; Case map
+   04B4; 04B5; Case map
+   04B6; 04B7; Case map
+   04B8; 04B9; Case map
+   04BA; 04BB; Case map
+   04BC; 04BD; Case map
+   04BE; 04BF; Case map
+   04C1; 04C2; Case map
+   04C3; 04C4; Case map
+   04C5; 04C6; Case map
+   04C7; 04C8; Case map
+   04C9; 04CA; Case map
+   04CB; 04CC; Case map
+   04CD; 04CE; Case map
+   04D0; 04D1; Case map
+   04D2; 04D3; Case map
+   04D4; 04D5; Case map
+   04D6; 04D7; Case map
+   04D8; 04D9; Case map
+   04DA; 04DB; Case map
+   04DC; 04DD; Case map
+   04DE; 04DF; Case map
+   04E0; 04E1; Case map
+   04E2; 04E3; Case map
+   04E4; 04E5; Case map
+   04E6; 04E7; Case map
+   04E8; 04E9; Case map
+   04EA; 04EB; Case map
+   04EC; 04ED; Case map
+   04EE; 04EF; Case map
+   04F0; 04F1; Case map
+   04F2; 04F3; Case map
+   04F4; 04F5; Case map
+   04F8; 04F9; Case map
+   0500; 0501; Case map
+   0502; 0503; Case map
+   0504; 0505; Case map
+   0506; 0507; Case map
+   0508; 0509; Case map
+   050A; 050B; Case map
+   050C; 050D; Case map
+   050E; 050F; Case map
+   0531; 0561; Case map
+   0532; 0562; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 40]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0533; 0563; Case map
+   0534; 0564; Case map
+   0535; 0565; Case map
+   0536; 0566; Case map
+   0537; 0567; Case map
+   0538; 0568; Case map
+   0539; 0569; Case map
+   053A; 056A; Case map
+   053B; 056B; Case map
+   053C; 056C; Case map
+   053D; 056D; Case map
+   053E; 056E; Case map
+   053F; 056F; Case map
+   0540; 0570; Case map
+   0541; 0571; Case map
+   0542; 0572; Case map
+   0543; 0573; Case map
+   0544; 0574; Case map
+   0545; 0575; Case map
+   0546; 0576; Case map
+   0547; 0577; Case map
+   0548; 0578; Case map
+   0549; 0579; Case map
+   054A; 057A; Case map
+   054B; 057B; Case map
+   054C; 057C; Case map
+   054D; 057D; Case map
+   054E; 057E; Case map
+   054F; 057F; Case map
+   0550; 0580; Case map
+   0551; 0581; Case map
+   0552; 0582; Case map
+   0553; 0583; Case map
+   0554; 0584; Case map
+   0555; 0585; Case map
+   0556; 0586; Case map
+   0587; 0565 0582; Case map
+   1E00; 1E01; Case map
+   1E02; 1E03; Case map
+   1E04; 1E05; Case map
+   1E06; 1E07; Case map
+   1E08; 1E09; Case map
+   1E0A; 1E0B; Case map
+   1E0C; 1E0D; Case map
+   1E0E; 1E0F; Case map
+   1E10; 1E11; Case map
+   1E12; 1E13; Case map
+   1E14; 1E15; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 41]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1E16; 1E17; Case map
+   1E18; 1E19; Case map
+   1E1A; 1E1B; Case map
+   1E1C; 1E1D; Case map
+   1E1E; 1E1F; Case map
+   1E20; 1E21; Case map
+   1E22; 1E23; Case map
+   1E24; 1E25; Case map
+   1E26; 1E27; Case map
+   1E28; 1E29; Case map
+   1E2A; 1E2B; Case map
+   1E2C; 1E2D; Case map
+   1E2E; 1E2F; Case map
+   1E30; 1E31; Case map
+   1E32; 1E33; Case map
+   1E34; 1E35; Case map
+   1E36; 1E37; Case map
+   1E38; 1E39; Case map
+   1E3A; 1E3B; Case map
+   1E3C; 1E3D; Case map
+   1E3E; 1E3F; Case map
+   1E40; 1E41; Case map
+   1E42; 1E43; Case map
+   1E44; 1E45; Case map
+   1E46; 1E47; Case map
+   1E48; 1E49; Case map
+   1E4A; 1E4B; Case map
+   1E4C; 1E4D; Case map
+   1E4E; 1E4F; Case map
+   1E50; 1E51; Case map
+   1E52; 1E53; Case map
+   1E54; 1E55; Case map
+   1E56; 1E57; Case map
+   1E58; 1E59; Case map
+   1E5A; 1E5B; Case map
+   1E5C; 1E5D; Case map
+   1E5E; 1E5F; Case map
+   1E60; 1E61; Case map
+   1E62; 1E63; Case map
+   1E64; 1E65; Case map
+   1E66; 1E67; Case map
+   1E68; 1E69; Case map
+   1E6A; 1E6B; Case map
+   1E6C; 1E6D; Case map
+   1E6E; 1E6F; Case map
+   1E70; 1E71; Case map
+   1E72; 1E73; Case map
+   1E74; 1E75; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 42]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1E76; 1E77; Case map
+   1E78; 1E79; Case map
+   1E7A; 1E7B; Case map
+   1E7C; 1E7D; Case map
+   1E7E; 1E7F; Case map
+   1E80; 1E81; Case map
+   1E82; 1E83; Case map
+   1E84; 1E85; Case map
+   1E86; 1E87; Case map
+   1E88; 1E89; Case map
+   1E8A; 1E8B; Case map
+   1E8C; 1E8D; Case map
+   1E8E; 1E8F; Case map
+   1E90; 1E91; Case map
+   1E92; 1E93; Case map
+   1E94; 1E95; Case map
+   1E96; 0068 0331; Case map
+   1E97; 0074 0308; Case map
+   1E98; 0077 030A; Case map
+   1E99; 0079 030A; Case map
+   1E9A; 0061 02BE; Case map
+   1E9B; 1E61; Case map
+   1EA0; 1EA1; Case map
+   1EA2; 1EA3; Case map
+   1EA4; 1EA5; Case map
+   1EA6; 1EA7; Case map
+   1EA8; 1EA9; Case map
+   1EAA; 1EAB; Case map
+   1EAC; 1EAD; Case map
+   1EAE; 1EAF; Case map
+   1EB0; 1EB1; Case map
+   1EB2; 1EB3; Case map
+   1EB4; 1EB5; Case map
+   1EB6; 1EB7; Case map
+   1EB8; 1EB9; Case map
+   1EBA; 1EBB; Case map
+   1EBC; 1EBD; Case map
+   1EBE; 1EBF; Case map
+   1EC0; 1EC1; Case map
+   1EC2; 1EC3; Case map
+   1EC4; 1EC5; Case map
+   1EC6; 1EC7; Case map
+   1EC8; 1EC9; Case map
+   1ECA; 1ECB; Case map
+   1ECC; 1ECD; Case map
+   1ECE; 1ECF; Case map
+   1ED0; 1ED1; Case map
+   1ED2; 1ED3; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 43]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1ED4; 1ED5; Case map
+   1ED6; 1ED7; Case map
+   1ED8; 1ED9; Case map
+   1EDA; 1EDB; Case map
+   1EDC; 1EDD; Case map
+   1EDE; 1EDF; Case map
+   1EE0; 1EE1; Case map
+   1EE2; 1EE3; Case map
+   1EE4; 1EE5; Case map
+   1EE6; 1EE7; Case map
+   1EE8; 1EE9; Case map
+   1EEA; 1EEB; Case map
+   1EEC; 1EED; Case map
+   1EEE; 1EEF; Case map
+   1EF0; 1EF1; Case map
+   1EF2; 1EF3; Case map
+   1EF4; 1EF5; Case map
+   1EF6; 1EF7; Case map
+   1EF8; 1EF9; Case map
+   1F08; 1F00; Case map
+   1F09; 1F01; Case map
+   1F0A; 1F02; Case map
+   1F0B; 1F03; Case map
+   1F0C; 1F04; Case map
+   1F0D; 1F05; Case map
+   1F0E; 1F06; Case map
+   1F0F; 1F07; Case map
+   1F18; 1F10; Case map
+   1F19; 1F11; Case map
+   1F1A; 1F12; Case map
+   1F1B; 1F13; Case map
+   1F1C; 1F14; Case map
+   1F1D; 1F15; Case map
+   1F28; 1F20; Case map
+   1F29; 1F21; Case map
+   1F2A; 1F22; Case map
+   1F2B; 1F23; Case map
+   1F2C; 1F24; Case map
+   1F2D; 1F25; Case map
+   1F2E; 1F26; Case map
+   1F2F; 1F27; Case map
+   1F38; 1F30; Case map
+   1F39; 1F31; Case map
+   1F3A; 1F32; Case map
+   1F3B; 1F33; Case map
+   1F3C; 1F34; Case map
+   1F3D; 1F35; Case map
+   1F3E; 1F36; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 44]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1F3F; 1F37; Case map
+   1F48; 1F40; Case map
+   1F49; 1F41; Case map
+   1F4A; 1F42; Case map
+   1F4B; 1F43; Case map
+   1F4C; 1F44; Case map
+   1F4D; 1F45; Case map
+   1F50; 03C5 0313; Case map
+   1F52; 03C5 0313 0300; Case map
+   1F54; 03C5 0313 0301; Case map
+   1F56; 03C5 0313 0342; Case map
+   1F59; 1F51; Case map
+   1F5B; 1F53; Case map
+   1F5D; 1F55; Case map
+   1F5F; 1F57; Case map
+   1F68; 1F60; Case map
+   1F69; 1F61; Case map
+   1F6A; 1F62; Case map
+   1F6B; 1F63; Case map
+   1F6C; 1F64; Case map
+   1F6D; 1F65; Case map
+   1F6E; 1F66; Case map
+   1F6F; 1F67; Case map
+   1F80; 1F00 03B9; Case map
+   1F81; 1F01 03B9; Case map
+   1F82; 1F02 03B9; Case map
+   1F83; 1F03 03B9; Case map
+   1F84; 1F04 03B9; Case map
+   1F85; 1F05 03B9; Case map
+   1F86; 1F06 03B9; Case map
+   1F87; 1F07 03B9; Case map
+   1F88; 1F00 03B9; Case map
+   1F89; 1F01 03B9; Case map
+   1F8A; 1F02 03B9; Case map
+   1F8B; 1F03 03B9; Case map
+   1F8C; 1F04 03B9; Case map
+   1F8D; 1F05 03B9; Case map
+   1F8E; 1F06 03B9; Case map
+   1F8F; 1F07 03B9; Case map
+   1F90; 1F20 03B9; Case map
+   1F91; 1F21 03B9; Case map
+   1F92; 1F22 03B9; Case map
+   1F93; 1F23 03B9; Case map
+   1F94; 1F24 03B9; Case map
+   1F95; 1F25 03B9; Case map
+   1F96; 1F26 03B9; Case map
+   1F97; 1F27 03B9; Case map
+   1F98; 1F20 03B9; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 45]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1F99; 1F21 03B9; Case map
+   1F9A; 1F22 03B9; Case map
+   1F9B; 1F23 03B9; Case map
+   1F9C; 1F24 03B9; Case map
+   1F9D; 1F25 03B9; Case map
+   1F9E; 1F26 03B9; Case map
+   1F9F; 1F27 03B9; Case map
+   1FA0; 1F60 03B9; Case map
+   1FA1; 1F61 03B9; Case map
+   1FA2; 1F62 03B9; Case map
+   1FA3; 1F63 03B9; Case map
+   1FA4; 1F64 03B9; Case map
+   1FA5; 1F65 03B9; Case map
+   1FA6; 1F66 03B9; Case map
+   1FA7; 1F67 03B9; Case map
+   1FA8; 1F60 03B9; Case map
+   1FA9; 1F61 03B9; Case map
+   1FAA; 1F62 03B9; Case map
+   1FAB; 1F63 03B9; Case map
+   1FAC; 1F64 03B9; Case map
+   1FAD; 1F65 03B9; Case map
+   1FAE; 1F66 03B9; Case map
+   1FAF; 1F67 03B9; Case map
+   1FB2; 1F70 03B9; Case map
+   1FB3; 03B1 03B9; Case map
+   1FB4; 03AC 03B9; Case map
+   1FB6; 03B1 0342; Case map
+   1FB7; 03B1 0342 03B9; Case map
+   1FB8; 1FB0; Case map
+   1FB9; 1FB1; Case map
+   1FBA; 1F70; Case map
+   1FBB; 1F71; Case map
+   1FBC; 03B1 03B9; Case map
+   1FBE; 03B9; Case map
+   1FC2; 1F74 03B9; Case map
+   1FC3; 03B7 03B9; Case map
+   1FC4; 03AE 03B9; Case map
+   1FC6; 03B7 0342; Case map
+   1FC7; 03B7 0342 03B9; Case map
+   1FC8; 1F72; Case map
+   1FC9; 1F73; Case map
+   1FCA; 1F74; Case map
+   1FCB; 1F75; Case map
+   1FCC; 03B7 03B9; Case map
+   1FD2; 03B9 0308 0300; Case map
+   1FD3; 03B9 0308 0301; Case map
+   1FD6; 03B9 0342; Case map
+   1FD7; 03B9 0308 0342; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 46]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1FD8; 1FD0; Case map
+   1FD9; 1FD1; Case map
+   1FDA; 1F76; Case map
+   1FDB; 1F77; Case map
+   1FE2; 03C5 0308 0300; Case map
+   1FE3; 03C5 0308 0301; Case map
+   1FE4; 03C1 0313; Case map
+   1FE6; 03C5 0342; Case map
+   1FE7; 03C5 0308 0342; Case map
+   1FE8; 1FE0; Case map
+   1FE9; 1FE1; Case map
+   1FEA; 1F7A; Case map
+   1FEB; 1F7B; Case map
+   1FEC; 1FE5; Case map
+   1FF2; 1F7C 03B9; Case map
+   1FF3; 03C9 03B9; Case map
+   1FF4; 03CE 03B9; Case map
+   1FF6; 03C9 0342; Case map
+   1FF7; 03C9 0342 03B9; Case map
+   1FF8; 1F78; Case map
+   1FF9; 1F79; Case map
+   1FFA; 1F7C; Case map
+   1FFB; 1F7D; Case map
+   1FFC; 03C9 03B9; Case map
+   20A8; 0072 0073; Additional folding
+   2102; 0063; Additional folding
+   2103; 00B0 0063; Additional folding
+   2107; 025B; Additional folding
+   2109; 00B0 0066; Additional folding
+   210B; 0068; Additional folding
+   210C; 0068; Additional folding
+   210D; 0068; Additional folding
+   2110; 0069; Additional folding
+   2111; 0069; Additional folding
+   2112; 006C; Additional folding
+   2115; 006E; Additional folding
+   2116; 006E 006F; Additional folding
+   2119; 0070; Additional folding
+   211A; 0071; Additional folding
+   211B; 0072; Additional folding
+   211C; 0072; Additional folding
+   211D; 0072; Additional folding
+   2120; 0073 006D; Additional folding
+   2121; 0074 0065 006C; Additional folding
+   2122; 0074 006D; Additional folding
+   2124; 007A; Additional folding
+   2126; 03C9; Case map
+   2128; 007A; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 47]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   212A; 006B; Case map
+   212B; 00E5; Case map
+   212C; 0062; Additional folding
+   212D; 0063; Additional folding
+   2130; 0065; Additional folding
+   2131; 0066; Additional folding
+   2133; 006D; Additional folding
+   213E; 03B3; Additional folding
+   213F; 03C0; Additional folding
+   2145; 0064; Additional folding
+   2160; 2170; Case map
+   2161; 2171; Case map
+   2162; 2172; Case map
+   2163; 2173; Case map
+   2164; 2174; Case map
+   2165; 2175; Case map
+   2166; 2176; Case map
+   2167; 2177; Case map
+   2168; 2178; Case map
+   2169; 2179; Case map
+   216A; 217A; Case map
+   216B; 217B; Case map
+   216C; 217C; Case map
+   216D; 217D; Case map
+   216E; 217E; Case map
+   216F; 217F; Case map
+   24B6; 24D0; Case map
+   24B7; 24D1; Case map
+   24B8; 24D2; Case map
+   24B9; 24D3; Case map
+   24BA; 24D4; Case map
+   24BB; 24D5; Case map
+   24BC; 24D6; Case map
+   24BD; 24D7; Case map
+   24BE; 24D8; Case map
+   24BF; 24D9; Case map
+   24C0; 24DA; Case map
+   24C1; 24DB; Case map
+   24C2; 24DC; Case map
+   24C3; 24DD; Case map
+   24C4; 24DE; Case map
+   24C5; 24DF; Case map
+   24C6; 24E0; Case map
+   24C7; 24E1; Case map
+   24C8; 24E2; Case map
+   24C9; 24E3; Case map
+   24CA; 24E4; Case map
+   24CB; 24E5; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 48]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   24CC; 24E6; Case map
+   24CD; 24E7; Case map
+   24CE; 24E8; Case map
+   24CF; 24E9; Case map
+   3371; 0068 0070 0061; Additional folding
+   3373; 0061 0075; Additional folding
+   3375; 006F 0076; Additional folding
+   3380; 0070 0061; Additional folding
+   3381; 006E 0061; Additional folding
+   3382; 03BC 0061; Additional folding
+   3383; 006D 0061; Additional folding
+   3384; 006B 0061; Additional folding
+   3385; 006B 0062; Additional folding
+   3386; 006D 0062; Additional folding
+   3387; 0067 0062; Additional folding
+   338A; 0070 0066; Additional folding
+   338B; 006E 0066; Additional folding
+   338C; 03BC 0066; Additional folding
+   3390; 0068 007A; Additional folding
+   3391; 006B 0068 007A; Additional folding
+   3392; 006D 0068 007A; Additional folding
+   3393; 0067 0068 007A; Additional folding
+   3394; 0074 0068 007A; Additional folding
+   33A9; 0070 0061; Additional folding
+   33AA; 006B 0070 0061; Additional folding
+   33AB; 006D 0070 0061; Additional folding
+   33AC; 0067 0070 0061; Additional folding
+   33B4; 0070 0076; Additional folding
+   33B5; 006E 0076; Additional folding
+   33B6; 03BC 0076; Additional folding
+   33B7; 006D 0076; Additional folding
+   33B8; 006B 0076; Additional folding
+   33B9; 006D 0076; Additional folding
+   33BA; 0070 0077; Additional folding
+   33BB; 006E 0077; Additional folding
+   33BC; 03BC 0077; Additional folding
+   33BD; 006D 0077; Additional folding
+   33BE; 006B 0077; Additional folding
+   33BF; 006D 0077; Additional folding
+   33C0; 006B 03C9; Additional folding
+   33C1; 006D 03C9; Additional folding
+   33C3; 0062 0071; Additional folding
+   33C6; 0063 2215 006B 0067; Additional folding
+   33C7; 0063 006F 002E; Additional folding
+   33C8; 0064 0062; Additional folding
+   33C9; 0067 0079; Additional folding
+   33CB; 0068 0070; Additional folding
+   33CD; 006B 006B; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 49]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   33CE; 006B 006D; Additional folding
+   33D7; 0070 0068; Additional folding
+   33D9; 0070 0070 006D; Additional folding
+   33DA; 0070 0072; Additional folding
+   33DC; 0073 0076; Additional folding
+   33DD; 0077 0062; Additional folding
+   FB00; 0066 0066; Case map
+   FB01; 0066 0069; Case map
+   FB02; 0066 006C; Case map
+   FB03; 0066 0066 0069; Case map
+   FB04; 0066 0066 006C; Case map
+   FB05; 0073 0074; Case map
+   FB06; 0073 0074; Case map
+   FB13; 0574 0576; Case map
+   FB14; 0574 0565; Case map
+   FB15; 0574 056B; Case map
+   FB16; 057E 0576; Case map
+   FB17; 0574 056D; Case map
+   FF21; FF41; Case map
+   FF22; FF42; Case map
+   FF23; FF43; Case map
+   FF24; FF44; Case map
+   FF25; FF45; Case map
+   FF26; FF46; Case map
+   FF27; FF47; Case map
+   FF28; FF48; Case map
+   FF29; FF49; Case map
+   FF2A; FF4A; Case map
+   FF2B; FF4B; Case map
+   FF2C; FF4C; Case map
+   FF2D; FF4D; Case map
+   FF2E; FF4E; Case map
+   FF2F; FF4F; Case map
+   FF30; FF50; Case map
+   FF31; FF51; Case map
+   FF32; FF52; Case map
+   FF33; FF53; Case map
+   FF34; FF54; Case map
+   FF35; FF55; Case map
+   FF36; FF56; Case map
+   FF37; FF57; Case map
+   FF38; FF58; Case map
+   FF39; FF59; Case map
+   FF3A; FF5A; Case map
+   10400; 10428; Case map
+   10401; 10429; Case map
+   10402; 1042A; Case map
+   10403; 1042B; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 50]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   10404; 1042C; Case map
+   10405; 1042D; Case map
+   10406; 1042E; Case map
+   10407; 1042F; Case map
+   10408; 10430; Case map
+   10409; 10431; Case map
+   1040A; 10432; Case map
+   1040B; 10433; Case map
+   1040C; 10434; Case map
+   1040D; 10435; Case map
+   1040E; 10436; Case map
+   1040F; 10437; Case map
+   10410; 10438; Case map
+   10411; 10439; Case map
+   10412; 1043A; Case map
+   10413; 1043B; Case map
+   10414; 1043C; Case map
+   10415; 1043D; Case map
+   10416; 1043E; Case map
+   10417; 1043F; Case map
+   10418; 10440; Case map
+   10419; 10441; Case map
+   1041A; 10442; Case map
+   1041B; 10443; Case map
+   1041C; 10444; Case map
+   1041D; 10445; Case map
+   1041E; 10446; Case map
+   1041F; 10447; Case map
+   10420; 10448; Case map
+   10421; 10449; Case map
+   10422; 1044A; Case map
+   10423; 1044B; Case map
+   10424; 1044C; Case map
+   10425; 1044D; Case map
+   1D400; 0061; Additional folding
+   1D401; 0062; Additional folding
+   1D402; 0063; Additional folding
+   1D403; 0064; Additional folding
+   1D404; 0065; Additional folding
+   1D405; 0066; Additional folding
+   1D406; 0067; Additional folding
+   1D407; 0068; Additional folding
+   1D408; 0069; Additional folding
+   1D409; 006A; Additional folding
+   1D40A; 006B; Additional folding
+   1D40B; 006C; Additional folding
+   1D40C; 006D; Additional folding
+   1D40D; 006E; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 51]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D40E; 006F; Additional folding
+   1D40F; 0070; Additional folding
+   1D410; 0071; Additional folding
+   1D411; 0072; Additional folding
+   1D412; 0073; Additional folding
+   1D413; 0074; Additional folding
+   1D414; 0075; Additional folding
+   1D415; 0076; Additional folding
+   1D416; 0077; Additional folding
+   1D417; 0078; Additional folding
+   1D418; 0079; Additional folding
+   1D419; 007A; Additional folding
+   1D434; 0061; Additional folding
+   1D435; 0062; Additional folding
+   1D436; 0063; Additional folding
+   1D437; 0064; Additional folding
+   1D438; 0065; Additional folding
+   1D439; 0066; Additional folding
+   1D43A; 0067; Additional folding
+   1D43B; 0068; Additional folding
+   1D43C; 0069; Additional folding
+   1D43D; 006A; Additional folding
+   1D43E; 006B; Additional folding
+   1D43F; 006C; Additional folding
+   1D440; 006D; Additional folding
+   1D441; 006E; Additional folding
+   1D442; 006F; Additional folding
+   1D443; 0070; Additional folding
+   1D444; 0071; Additional folding
+   1D445; 0072; Additional folding
+   1D446; 0073; Additional folding
+   1D447; 0074; Additional folding
+   1D448; 0075; Additional folding
+   1D449; 0076; Additional folding
+   1D44A; 0077; Additional folding
+   1D44B; 0078; Additional folding
+   1D44C; 0079; Additional folding
+   1D44D; 007A; Additional folding
+   1D468; 0061; Additional folding
+   1D469; 0062; Additional folding
+   1D46A; 0063; Additional folding
+   1D46B; 0064; Additional folding
+   1D46C; 0065; Additional folding
+   1D46D; 0066; Additional folding
+   1D46E; 0067; Additional folding
+   1D46F; 0068; Additional folding
+   1D470; 0069; Additional folding
+   1D471; 006A; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 52]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D472; 006B; Additional folding
+   1D473; 006C; Additional folding
+   1D474; 006D; Additional folding
+   1D475; 006E; Additional folding
+   1D476; 006F; Additional folding
+   1D477; 0070; Additional folding
+   1D478; 0071; Additional folding
+   1D479; 0072; Additional folding
+   1D47A; 0073; Additional folding
+   1D47B; 0074; Additional folding
+   1D47C; 0075; Additional folding
+   1D47D; 0076; Additional folding
+   1D47E; 0077; Additional folding
+   1D47F; 0078; Additional folding
+   1D480; 0079; Additional folding
+   1D481; 007A; Additional folding
+   1D49C; 0061; Additional folding
+   1D49E; 0063; Additional folding
+   1D49F; 0064; Additional folding
+   1D4A2; 0067; Additional folding
+   1D4A5; 006A; Additional folding
+   1D4A6; 006B; Additional folding
+   1D4A9; 006E; Additional folding
+   1D4AA; 006F; Additional folding
+   1D4AB; 0070; Additional folding
+   1D4AC; 0071; Additional folding
+   1D4AE; 0073; Additional folding
+   1D4AF; 0074; Additional folding
+   1D4B0; 0075; Additional folding
+   1D4B1; 0076; Additional folding
+   1D4B2; 0077; Additional folding
+   1D4B3; 0078; Additional folding
+   1D4B4; 0079; Additional folding
+   1D4B5; 007A; Additional folding
+   1D4D0; 0061; Additional folding
+   1D4D1; 0062; Additional folding
+   1D4D2; 0063; Additional folding
+   1D4D3; 0064; Additional folding
+   1D4D4; 0065; Additional folding
+   1D4D5; 0066; Additional folding
+   1D4D6; 0067; Additional folding
+   1D4D7; 0068; Additional folding
+   1D4D8; 0069; Additional folding
+   1D4D9; 006A; Additional folding
+   1D4DA; 006B; Additional folding
+   1D4DB; 006C; Additional folding
+   1D4DC; 006D; Additional folding
+   1D4DD; 006E; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 53]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D4DE; 006F; Additional folding
+   1D4DF; 0070; Additional folding
+   1D4E0; 0071; Additional folding
+   1D4E1; 0072; Additional folding
+   1D4E2; 0073; Additional folding
+   1D4E3; 0074; Additional folding
+   1D4E4; 0075; Additional folding
+   1D4E5; 0076; Additional folding
+   1D4E6; 0077; Additional folding
+   1D4E7; 0078; Additional folding
+   1D4E8; 0079; Additional folding
+   1D4E9; 007A; Additional folding
+   1D504; 0061; Additional folding
+   1D505; 0062; Additional folding
+   1D507; 0064; Additional folding
+   1D508; 0065; Additional folding
+   1D509; 0066; Additional folding
+   1D50A; 0067; Additional folding
+   1D50D; 006A; Additional folding
+   1D50E; 006B; Additional folding
+   1D50F; 006C; Additional folding
+   1D510; 006D; Additional folding
+   1D511; 006E; Additional folding
+   1D512; 006F; Additional folding
+   1D513; 0070; Additional folding
+   1D514; 0071; Additional folding
+   1D516; 0073; Additional folding
+   1D517; 0074; Additional folding
+   1D518; 0075; Additional folding
+   1D519; 0076; Additional folding
+   1D51A; 0077; Additional folding
+   1D51B; 0078; Additional folding
+   1D51C; 0079; Additional folding
+   1D538; 0061; Additional folding
+   1D539; 0062; Additional folding
+   1D53B; 0064; Additional folding
+   1D53C; 0065; Additional folding
+   1D53D; 0066; Additional folding
+   1D53E; 0067; Additional folding
+   1D540; 0069; Additional folding
+   1D541; 006A; Additional folding
+   1D542; 006B; Additional folding
+   1D543; 006C; Additional folding
+   1D544; 006D; Additional folding
+   1D546; 006F; Additional folding
+   1D54A; 0073; Additional folding
+   1D54B; 0074; Additional folding
+   1D54C; 0075; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 54]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D54D; 0076; Additional folding
+   1D54E; 0077; Additional folding
+   1D54F; 0078; Additional folding
+   1D550; 0079; Additional folding
+   1D56C; 0061; Additional folding
+   1D56D; 0062; Additional folding
+   1D56E; 0063; Additional folding
+   1D56F; 0064; Additional folding
+   1D570; 0065; Additional folding
+   1D571; 0066; Additional folding
+   1D572; 0067; Additional folding
+   1D573; 0068; Additional folding
+   1D574; 0069; Additional folding
+   1D575; 006A; Additional folding
+   1D576; 006B; Additional folding
+   1D577; 006C; Additional folding
+   1D578; 006D; Additional folding
+   1D579; 006E; Additional folding
+   1D57A; 006F; Additional folding
+   1D57B; 0070; Additional folding
+   1D57C; 0071; Additional folding
+   1D57D; 0072; Additional folding
+   1D57E; 0073; Additional folding
+   1D57F; 0074; Additional folding
+   1D580; 0075; Additional folding
+   1D581; 0076; Additional folding
+   1D582; 0077; Additional folding
+   1D583; 0078; Additional folding
+   1D584; 0079; Additional folding
+   1D585; 007A; Additional folding
+   1D5A0; 0061; Additional folding
+   1D5A1; 0062; Additional folding
+   1D5A2; 0063; Additional folding
+   1D5A3; 0064; Additional folding
+   1D5A4; 0065; Additional folding
+   1D5A5; 0066; Additional folding
+   1D5A6; 0067; Additional folding
+   1D5A7; 0068; Additional folding
+   1D5A8; 0069; Additional folding
+   1D5A9; 006A; Additional folding
+   1D5AA; 006B; Additional folding
+   1D5AB; 006C; Additional folding
+   1D5AC; 006D; Additional folding
+   1D5AD; 006E; Additional folding
+   1D5AE; 006F; Additional folding
+   1D5AF; 0070; Additional folding
+   1D5B0; 0071; Additional folding
+   1D5B1; 0072; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 55]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D5B2; 0073; Additional folding
+   1D5B3; 0074; Additional folding
+   1D5B4; 0075; Additional folding
+   1D5B5; 0076; Additional folding
+   1D5B6; 0077; Additional folding
+   1D5B7; 0078; Additional folding
+   1D5B8; 0079; Additional folding
+   1D5B9; 007A; Additional folding
+   1D5D4; 0061; Additional folding
+   1D5D5; 0062; Additional folding
+   1D5D6; 0063; Additional folding
+   1D5D7; 0064; Additional folding
+   1D5D8; 0065; Additional folding
+   1D5D9; 0066; Additional folding
+   1D5DA; 0067; Additional folding
+   1D5DB; 0068; Additional folding
+   1D5DC; 0069; Additional folding
+   1D5DD; 006A; Additional folding
+   1D5DE; 006B; Additional folding
+   1D5DF; 006C; Additional folding
+   1D5E0; 006D; Additional folding
+   1D5E1; 006E; Additional folding
+   1D5E2; 006F; Additional folding
+   1D5E3; 0070; Additional folding
+   1D5E4; 0071; Additional folding
+   1D5E5; 0072; Additional folding
+   1D5E6; 0073; Additional folding
+   1D5E7; 0074; Additional folding
+   1D5E8; 0075; Additional folding
+   1D5E9; 0076; Additional folding
+   1D5EA; 0077; Additional folding
+   1D5EB; 0078; Additional folding
+   1D5EC; 0079; Additional folding
+   1D5ED; 007A; Additional folding
+   1D608; 0061; Additional folding
+   1D609; 0062; Additional folding
+   1D60A; 0063; Additional folding
+   1D60B; 0064; Additional folding
+   1D60C; 0065; Additional folding
+   1D60D; 0066; Additional folding
+   1D60E; 0067; Additional folding
+   1D60F; 0068; Additional folding
+   1D610; 0069; Additional folding
+   1D611; 006A; Additional folding
+   1D612; 006B; Additional folding
+   1D613; 006C; Additional folding
+   1D614; 006D; Additional folding
+   1D615; 006E; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 56]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D616; 006F; Additional folding
+   1D617; 0070; Additional folding
+   1D618; 0071; Additional folding
+   1D619; 0072; Additional folding
+   1D61A; 0073; Additional folding
+   1D61B; 0074; Additional folding
+   1D61C; 0075; Additional folding
+   1D61D; 0076; Additional folding
+   1D61E; 0077; Additional folding
+   1D61F; 0078; Additional folding
+   1D620; 0079; Additional folding
+   1D621; 007A; Additional folding
+   1D63C; 0061; Additional folding
+   1D63D; 0062; Additional folding
+   1D63E; 0063; Additional folding
+   1D63F; 0064; Additional folding
+   1D640; 0065; Additional folding
+   1D641; 0066; Additional folding
+   1D642; 0067; Additional folding
+   1D643; 0068; Additional folding
+   1D644; 0069; Additional folding
+   1D645; 006A; Additional folding
+   1D646; 006B; Additional folding
+   1D647; 006C; Additional folding
+   1D648; 006D; Additional folding
+   1D649; 006E; Additional folding
+   1D64A; 006F; Additional folding
+   1D64B; 0070; Additional folding
+   1D64C; 0071; Additional folding
+   1D64D; 0072; Additional folding
+   1D64E; 0073; Additional folding
+   1D64F; 0074; Additional folding
+   1D650; 0075; Additional folding
+   1D651; 0076; Additional folding
+   1D652; 0077; Additional folding
+   1D653; 0078; Additional folding
+   1D654; 0079; Additional folding
+   1D655; 007A; Additional folding
+   1D670; 0061; Additional folding
+   1D671; 0062; Additional folding
+   1D672; 0063; Additional folding
+   1D673; 0064; Additional folding
+   1D674; 0065; Additional folding
+   1D675; 0066; Additional folding
+   1D676; 0067; Additional folding
+   1D677; 0068; Additional folding
+   1D678; 0069; Additional folding
+   1D679; 006A; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 57]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D67A; 006B; Additional folding
+   1D67B; 006C; Additional folding
+   1D67C; 006D; Additional folding
+   1D67D; 006E; Additional folding
+   1D67E; 006F; Additional folding
+   1D67F; 0070; Additional folding
+   1D680; 0071; Additional folding
+   1D681; 0072; Additional folding
+   1D682; 0073; Additional folding
+   1D683; 0074; Additional folding
+   1D684; 0075; Additional folding
+   1D685; 0076; Additional folding
+   1D686; 0077; Additional folding
+   1D687; 0078; Additional folding
+   1D688; 0079; Additional folding
+   1D689; 007A; Additional folding
+   1D6A8; 03B1; Additional folding
+   1D6A9; 03B2; Additional folding
+   1D6AA; 03B3; Additional folding
+   1D6AB; 03B4; Additional folding
+   1D6AC; 03B5; Additional folding
+   1D6AD; 03B6; Additional folding
+   1D6AE; 03B7; Additional folding
+   1D6AF; 03B8; Additional folding
+   1D6B0; 03B9; Additional folding
+   1D6B1; 03BA; Additional folding
+   1D6B2; 03BB; Additional folding
+   1D6B3; 03BC; Additional folding
+   1D6B4; 03BD; Additional folding
+   1D6B5; 03BE; Additional folding
+   1D6B6; 03BF; Additional folding
+   1D6B7; 03C0; Additional folding
+   1D6B8; 03C1; Additional folding
+   1D6B9; 03B8; Additional folding
+   1D6BA; 03C3; Additional folding
+   1D6BB; 03C4; Additional folding
+   1D6BC; 03C5; Additional folding
+   1D6BD; 03C6; Additional folding
+   1D6BE; 03C7; Additional folding
+   1D6BF; 03C8; Additional folding
+   1D6C0; 03C9; Additional folding
+   1D6D3; 03C3; Additional folding
+   1D6E2; 03B1; Additional folding
+   1D6E3; 03B2; Additional folding
+   1D6E4; 03B3; Additional folding
+   1D6E5; 03B4; Additional folding
+   1D6E6; 03B5; Additional folding
+   1D6E7; 03B6; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 58]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D6E8; 03B7; Additional folding
+   1D6E9; 03B8; Additional folding
+   1D6EA; 03B9; Additional folding
+   1D6EB; 03BA; Additional folding
+   1D6EC; 03BB; Additional folding
+   1D6ED; 03BC; Additional folding
+   1D6EE; 03BD; Additional folding
+   1D6EF; 03BE; Additional folding
+   1D6F0; 03BF; Additional folding
+   1D6F1; 03C0; Additional folding
+   1D6F2; 03C1; Additional folding
+   1D6F3; 03B8; Additional folding
+   1D6F4; 03C3; Additional folding
+   1D6F5; 03C4; Additional folding
+   1D6F6; 03C5; Additional folding
+   1D6F7; 03C6; Additional folding
+   1D6F8; 03C7; Additional folding
+   1D6F9; 03C8; Additional folding
+   1D6FA; 03C9; Additional folding
+   1D70D; 03C3; Additional folding
+   1D71C; 03B1; Additional folding
+   1D71D; 03B2; Additional folding
+   1D71E; 03B3; Additional folding
+   1D71F; 03B4; Additional folding
+   1D720; 03B5; Additional folding
+   1D721; 03B6; Additional folding
+   1D722; 03B7; Additional folding
+   1D723; 03B8; Additional folding
+   1D724; 03B9; Additional folding
+   1D725; 03BA; Additional folding
+   1D726; 03BB; Additional folding
+   1D727; 03BC; Additional folding
+   1D728; 03BD; Additional folding
+   1D729; 03BE; Additional folding
+   1D72A; 03BF; Additional folding
+   1D72B; 03C0; Additional folding
+   1D72C; 03C1; Additional folding
+   1D72D; 03B8; Additional folding
+   1D72E; 03C3; Additional folding
+   1D72F; 03C4; Additional folding
+   1D730; 03C5; Additional folding
+   1D731; 03C6; Additional folding
+   1D732; 03C7; Additional folding
+   1D733; 03C8; Additional folding
+   1D734; 03C9; Additional folding
+   1D747; 03C3; Additional folding
+   1D756; 03B1; Additional folding
+   1D757; 03B2; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 59]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D758; 03B3; Additional folding
+   1D759; 03B4; Additional folding
+   1D75A; 03B5; Additional folding
+   1D75B; 03B6; Additional folding
+   1D75C; 03B7; Additional folding
+   1D75D; 03B8; Additional folding
+   1D75E; 03B9; Additional folding
+   1D75F; 03BA; Additional folding
+   1D760; 03BB; Additional folding
+   1D761; 03BC; Additional folding
+   1D762; 03BD; Additional folding
+   1D763; 03BE; Additional folding
+   1D764; 03BF; Additional folding
+   1D765; 03C0; Additional folding
+   1D766; 03C1; Additional folding
+   1D767; 03B8; Additional folding
+   1D768; 03C3; Additional folding
+   1D769; 03C4; Additional folding
+   1D76A; 03C5; Additional folding
+   1D76B; 03C6; Additional folding
+   1D76C; 03C7; Additional folding
+   1D76D; 03C8; Additional folding
+   1D76E; 03C9; Additional folding
+   1D781; 03C3; Additional folding
+   1D790; 03B1; Additional folding
+   1D791; 03B2; Additional folding
+   1D792; 03B3; Additional folding
+   1D793; 03B4; Additional folding
+   1D794; 03B5; Additional folding
+   1D795; 03B6; Additional folding
+   1D796; 03B7; Additional folding
+   1D797; 03B8; Additional folding
+   1D798; 03B9; Additional folding
+   1D799; 03BA; Additional folding
+   1D79A; 03BB; Additional folding
+   1D79B; 03BC; Additional folding
+   1D79C; 03BD; Additional folding
+   1D79D; 03BE; Additional folding
+   1D79E; 03BF; Additional folding
+   1D79F; 03C0; Additional folding
+   1D7A0; 03C1; Additional folding
+   1D7A1; 03B8; Additional folding
+   1D7A2; 03C3; Additional folding
+   1D7A3; 03C4; Additional folding
+   1D7A4; 03C5; Additional folding
+   1D7A5; 03C6; Additional folding
+   1D7A6; 03C7; Additional folding
+   1D7A7; 03C8; Additional folding
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 60]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D7A8; 03C9; Additional folding
+   1D7BB; 03C3; Additional folding
+   ----- End Table B.2 -----
+
+B.3 Mapping for case-folding used with no normalization
+
+   ----- Start Table B.3 -----
+   0041; 0061; Case map
+   0042; 0062; Case map
+   0043; 0063; Case map
+   0044; 0064; Case map
+   0045; 0065; Case map
+   0046; 0066; Case map
+   0047; 0067; Case map
+   0048; 0068; Case map
+   0049; 0069; Case map
+   004A; 006A; Case map
+   004B; 006B; Case map
+   004C; 006C; Case map
+   004D; 006D; Case map
+   004E; 006E; Case map
+   004F; 006F; Case map
+   0050; 0070; Case map
+   0051; 0071; Case map
+   0052; 0072; Case map
+   0053; 0073; Case map
+   0054; 0074; Case map
+   0055; 0075; Case map
+   0056; 0076; Case map
+   0057; 0077; Case map
+   0058; 0078; Case map
+   0059; 0079; Case map
+   005A; 007A; Case map
+   00B5; 03BC; Case map
+   00C0; 00E0; Case map
+   00C1; 00E1; Case map
+   00C2; 00E2; Case map
+   00C3; 00E3; Case map
+   00C4; 00E4; Case map
+   00C5; 00E5; Case map
+   00C6; 00E6; Case map
+   00C7; 00E7; Case map
+   00C8; 00E8; Case map
+   00C9; 00E9; Case map
+   00CA; 00EA; Case map
+   00CB; 00EB; Case map
+   00CC; 00EC; Case map
+   00CD; 00ED; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 61]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   00CE; 00EE; Case map
+   00CF; 00EF; Case map
+   00D0; 00F0; Case map
+   00D1; 00F1; Case map
+   00D2; 00F2; Case map
+   00D3; 00F3; Case map
+   00D4; 00F4; Case map
+   00D5; 00F5; Case map
+   00D6; 00F6; Case map
+   00D8; 00F8; Case map
+   00D9; 00F9; Case map
+   00DA; 00FA; Case map
+   00DB; 00FB; Case map
+   00DC; 00FC; Case map
+   00DD; 00FD; Case map
+   00DE; 00FE; Case map
+   00DF; 0073 0073; Case map
+   0100; 0101; Case map
+   0102; 0103; Case map
+   0104; 0105; Case map
+   0106; 0107; Case map
+   0108; 0109; Case map
+   010A; 010B; Case map
+   010C; 010D; Case map
+   010E; 010F; Case map
+   0110; 0111; Case map
+   0112; 0113; Case map
+   0114; 0115; Case map
+   0116; 0117; Case map
+   0118; 0119; Case map
+   011A; 011B; Case map
+   011C; 011D; Case map
+   011E; 011F; Case map
+   0120; 0121; Case map
+   0122; 0123; Case map
+   0124; 0125; Case map
+   0126; 0127; Case map
+   0128; 0129; Case map
+   012A; 012B; Case map
+   012C; 012D; Case map
+   012E; 012F; Case map
+   0130; 0069 0307; Case map
+   0132; 0133; Case map
+   0134; 0135; Case map
+   0136; 0137; Case map
+   0139; 013A; Case map
+   013B; 013C; Case map
+   013D; 013E; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 62]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   013F; 0140; Case map
+   0141; 0142; Case map
+   0143; 0144; Case map
+   0145; 0146; Case map
+   0147; 0148; Case map
+   0149; 02BC 006E; Case map
+   014A; 014B; Case map
+   014C; 014D; Case map
+   014E; 014F; Case map
+   0150; 0151; Case map
+   0152; 0153; Case map
+   0154; 0155; Case map
+   0156; 0157; Case map
+   0158; 0159; Case map
+   015A; 015B; Case map
+   015C; 015D; Case map
+   015E; 015F; Case map
+   0160; 0161; Case map
+   0162; 0163; Case map
+   0164; 0165; Case map
+   0166; 0167; Case map
+   0168; 0169; Case map
+   016A; 016B; Case map
+   016C; 016D; Case map
+   016E; 016F; Case map
+   0170; 0171; Case map
+   0172; 0173; Case map
+   0174; 0175; Case map
+   0176; 0177; Case map
+   0178; 00FF; Case map
+   0179; 017A; Case map
+   017B; 017C; Case map
+   017D; 017E; Case map
+   017F; 0073; Case map
+   0181; 0253; Case map
+   0182; 0183; Case map
+   0184; 0185; Case map
+   0186; 0254; Case map
+   0187; 0188; Case map
+   0189; 0256; Case map
+   018A; 0257; Case map
+   018B; 018C; Case map
+   018E; 01DD; Case map
+   018F; 0259; Case map
+   0190; 025B; Case map
+   0191; 0192; Case map
+   0193; 0260; Case map
+   0194; 0263; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 63]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0196; 0269; Case map
+   0197; 0268; Case map
+   0198; 0199; Case map
+   019C; 026F; Case map
+   019D; 0272; Case map
+   019F; 0275; Case map
+   01A0; 01A1; Case map
+   01A2; 01A3; Case map
+   01A4; 01A5; Case map
+   01A6; 0280; Case map
+   01A7; 01A8; Case map
+   01A9; 0283; Case map
+   01AC; 01AD; Case map
+   01AE; 0288; Case map
+   01AF; 01B0; Case map
+   01B1; 028A; Case map
+   01B2; 028B; Case map
+   01B3; 01B4; Case map
+   01B5; 01B6; Case map
+   01B7; 0292; Case map
+   01B8; 01B9; Case map
+   01BC; 01BD; Case map
+   01C4; 01C6; Case map
+   01C5; 01C6; Case map
+   01C7; 01C9; Case map
+   01C8; 01C9; Case map
+   01CA; 01CC; Case map
+   01CB; 01CC; Case map
+   01CD; 01CE; Case map
+   01CF; 01D0; Case map
+   01D1; 01D2; Case map
+   01D3; 01D4; Case map
+   01D5; 01D6; Case map
+   01D7; 01D8; Case map
+   01D9; 01DA; Case map
+   01DB; 01DC; Case map
+   01DE; 01DF; Case map
+   01E0; 01E1; Case map
+   01E2; 01E3; Case map
+   01E4; 01E5; Case map
+   01E6; 01E7; Case map
+   01E8; 01E9; Case map
+   01EA; 01EB; Case map
+   01EC; 01ED; Case map
+   01EE; 01EF; Case map
+   01F0; 006A 030C; Case map
+   01F1; 01F3; Case map
+   01F2; 01F3; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 64]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   01F4; 01F5; Case map
+   01F6; 0195; Case map
+   01F7; 01BF; Case map
+   01F8; 01F9; Case map
+   01FA; 01FB; Case map
+   01FC; 01FD; Case map
+   01FE; 01FF; Case map
+   0200; 0201; Case map
+   0202; 0203; Case map
+   0204; 0205; Case map
+   0206; 0207; Case map
+   0208; 0209; Case map
+   020A; 020B; Case map
+   020C; 020D; Case map
+   020E; 020F; Case map
+   0210; 0211; Case map
+   0212; 0213; Case map
+   0214; 0215; Case map
+   0216; 0217; Case map
+   0218; 0219; Case map
+   021A; 021B; Case map
+   021C; 021D; Case map
+   021E; 021F; Case map
+   0220; 019E; Case map
+   0222; 0223; Case map
+   0224; 0225; Case map
+   0226; 0227; Case map
+   0228; 0229; Case map
+   022A; 022B; Case map
+   022C; 022D; Case map
+   022E; 022F; Case map
+   0230; 0231; Case map
+   0232; 0233; Case map
+   0345; 03B9; Case map
+   0386; 03AC; Case map
+   0388; 03AD; Case map
+   0389; 03AE; Case map
+   038A; 03AF; Case map
+   038C; 03CC; Case map
+   038E; 03CD; Case map
+   038F; 03CE; Case map
+   0390; 03B9 0308 0301; Case map
+   0391; 03B1; Case map
+   0392; 03B2; Case map
+   0393; 03B3; Case map
+   0394; 03B4; Case map
+   0395; 03B5; Case map
+   0396; 03B6; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 65]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0397; 03B7; Case map
+   0398; 03B8; Case map
+   0399; 03B9; Case map
+   039A; 03BA; Case map
+   039B; 03BB; Case map
+   039C; 03BC; Case map
+   039D; 03BD; Case map
+   039E; 03BE; Case map
+   039F; 03BF; Case map
+   03A0; 03C0; Case map
+   03A1; 03C1; Case map
+   03A3; 03C3; Case map
+   03A4; 03C4; Case map
+   03A5; 03C5; Case map
+   03A6; 03C6; Case map
+   03A7; 03C7; Case map
+   03A8; 03C8; Case map
+   03A9; 03C9; Case map
+   03AA; 03CA; Case map
+   03AB; 03CB; Case map
+   03B0; 03C5 0308 0301; Case map
+   03C2; 03C3; Case map
+   03D0; 03B2; Case map
+   03D1; 03B8; Case map
+   03D5; 03C6; Case map
+   03D6; 03C0; Case map
+   03D8; 03D9; Case map
+   03DA; 03DB; Case map
+   03DC; 03DD; Case map
+   03DE; 03DF; Case map
+   03E0; 03E1; Case map
+   03E2; 03E3; Case map
+   03E4; 03E5; Case map
+   03E6; 03E7; Case map
+   03E8; 03E9; Case map
+   03EA; 03EB; Case map
+   03EC; 03ED; Case map
+   03EE; 03EF; Case map
+   03F0; 03BA; Case map
+   03F1; 03C1; Case map
+   03F2; 03C3; Case map
+   03F4; 03B8; Case map
+   03F5; 03B5; Case map
+   0400; 0450; Case map
+   0401; 0451; Case map
+   0402; 0452; Case map
+   0403; 0453; Case map
+   0404; 0454; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 66]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0405; 0455; Case map
+   0406; 0456; Case map
+   0407; 0457; Case map
+   0408; 0458; Case map
+   0409; 0459; Case map
+   040A; 045A; Case map
+   040B; 045B; Case map
+   040C; 045C; Case map
+   040D; 045D; Case map
+   040E; 045E; Case map
+   040F; 045F; Case map
+   0410; 0430; Case map
+   0411; 0431; Case map
+   0412; 0432; Case map
+   0413; 0433; Case map
+   0414; 0434; Case map
+   0415; 0435; Case map
+   0416; 0436; Case map
+   0417; 0437; Case map
+   0418; 0438; Case map
+   0419; 0439; Case map
+   041A; 043A; Case map
+   041B; 043B; Case map
+   041C; 043C; Case map
+   041D; 043D; Case map
+   041E; 043E; Case map
+   041F; 043F; Case map
+   0420; 0440; Case map
+   0421; 0441; Case map
+   0422; 0442; Case map
+   0423; 0443; Case map
+   0424; 0444; Case map
+   0425; 0445; Case map
+   0426; 0446; Case map
+   0427; 0447; Case map
+   0428; 0448; Case map
+   0429; 0449; Case map
+   042A; 044A; Case map
+   042B; 044B; Case map
+   042C; 044C; Case map
+   042D; 044D; Case map
+   042E; 044E; Case map
+   042F; 044F; Case map
+   0460; 0461; Case map
+   0462; 0463; Case map
+   0464; 0465; Case map
+   0466; 0467; Case map
+   0468; 0469; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 67]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   046A; 046B; Case map
+   046C; 046D; Case map
+   046E; 046F; Case map
+   0470; 0471; Case map
+   0472; 0473; Case map
+   0474; 0475; Case map
+   0476; 0477; Case map
+   0478; 0479; Case map
+   047A; 047B; Case map
+   047C; 047D; Case map
+   047E; 047F; Case map
+   0480; 0481; Case map
+   048A; 048B; Case map
+   048C; 048D; Case map
+   048E; 048F; Case map
+   0490; 0491; Case map
+   0492; 0493; Case map
+   0494; 0495; Case map
+   0496; 0497; Case map
+   0498; 0499; Case map
+   049A; 049B; Case map
+   049C; 049D; Case map
+   049E; 049F; Case map
+   04A0; 04A1; Case map
+   04A2; 04A3; Case map
+   04A4; 04A5; Case map
+   04A6; 04A7; Case map
+   04A8; 04A9; Case map
+   04AA; 04AB; Case map
+   04AC; 04AD; Case map
+   04AE; 04AF; Case map
+   04B0; 04B1; Case map
+   04B2; 04B3; Case map
+   04B4; 04B5; Case map
+   04B6; 04B7; Case map
+   04B8; 04B9; Case map
+   04BA; 04BB; Case map
+   04BC; 04BD; Case map
+   04BE; 04BF; Case map
+   04C1; 04C2; Case map
+   04C3; 04C4; Case map
+   04C5; 04C6; Case map
+   04C7; 04C8; Case map
+   04C9; 04CA; Case map
+   04CB; 04CC; Case map
+   04CD; 04CE; Case map
+   04D0; 04D1; Case map
+   04D2; 04D3; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 68]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   04D4; 04D5; Case map
+   04D6; 04D7; Case map
+   04D8; 04D9; Case map
+   04DA; 04DB; Case map
+   04DC; 04DD; Case map
+   04DE; 04DF; Case map
+   04E0; 04E1; Case map
+   04E2; 04E3; Case map
+   04E4; 04E5; Case map
+   04E6; 04E7; Case map
+   04E8; 04E9; Case map
+   04EA; 04EB; Case map
+   04EC; 04ED; Case map
+   04EE; 04EF; Case map
+   04F0; 04F1; Case map
+   04F2; 04F3; Case map
+   04F4; 04F5; Case map
+   04F8; 04F9; Case map
+   0500; 0501; Case map
+   0502; 0503; Case map
+   0504; 0505; Case map
+   0506; 0507; Case map
+   0508; 0509; Case map
+   050A; 050B; Case map
+   050C; 050D; Case map
+   050E; 050F; Case map
+   0531; 0561; Case map
+   0532; 0562; Case map
+   0533; 0563; Case map
+   0534; 0564; Case map
+   0535; 0565; Case map
+   0536; 0566; Case map
+   0537; 0567; Case map
+   0538; 0568; Case map
+   0539; 0569; Case map
+   053A; 056A; Case map
+   053B; 056B; Case map
+   053C; 056C; Case map
+   053D; 056D; Case map
+   053E; 056E; Case map
+   053F; 056F; Case map
+   0540; 0570; Case map
+   0541; 0571; Case map
+   0542; 0572; Case map
+   0543; 0573; Case map
+   0544; 0574; Case map
+   0545; 0575; Case map
+   0546; 0576; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 69]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0547; 0577; Case map
+   0548; 0578; Case map
+   0549; 0579; Case map
+   054A; 057A; Case map
+   054B; 057B; Case map
+   054C; 057C; Case map
+   054D; 057D; Case map
+   054E; 057E; Case map
+   054F; 057F; Case map
+   0550; 0580; Case map
+   0551; 0581; Case map
+   0552; 0582; Case map
+   0553; 0583; Case map
+   0554; 0584; Case map
+   0555; 0585; Case map
+   0556; 0586; Case map
+   0587; 0565 0582; Case map
+   1E00; 1E01; Case map
+   1E02; 1E03; Case map
+   1E04; 1E05; Case map
+   1E06; 1E07; Case map
+   1E08; 1E09; Case map
+   1E0A; 1E0B; Case map
+   1E0C; 1E0D; Case map
+   1E0E; 1E0F; Case map
+   1E10; 1E11; Case map
+   1E12; 1E13; Case map
+   1E14; 1E15; Case map
+   1E16; 1E17; Case map
+   1E18; 1E19; Case map
+   1E1A; 1E1B; Case map
+   1E1C; 1E1D; Case map
+   1E1E; 1E1F; Case map
+   1E20; 1E21; Case map
+   1E22; 1E23; Case map
+   1E24; 1E25; Case map
+   1E26; 1E27; Case map
+   1E28; 1E29; Case map
+   1E2A; 1E2B; Case map
+   1E2C; 1E2D; Case map
+   1E2E; 1E2F; Case map
+   1E30; 1E31; Case map
+   1E32; 1E33; Case map
+   1E34; 1E35; Case map
+   1E36; 1E37; Case map
+   1E38; 1E39; Case map
+   1E3A; 1E3B; Case map
+   1E3C; 1E3D; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 70]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1E3E; 1E3F; Case map
+   1E40; 1E41; Case map
+   1E42; 1E43; Case map
+   1E44; 1E45; Case map
+   1E46; 1E47; Case map
+   1E48; 1E49; Case map
+   1E4A; 1E4B; Case map
+   1E4C; 1E4D; Case map
+   1E4E; 1E4F; Case map
+   1E50; 1E51; Case map
+   1E52; 1E53; Case map
+   1E54; 1E55; Case map
+   1E56; 1E57; Case map
+   1E58; 1E59; Case map
+   1E5A; 1E5B; Case map
+   1E5C; 1E5D; Case map
+   1E5E; 1E5F; Case map
+   1E60; 1E61; Case map
+   1E62; 1E63; Case map
+   1E64; 1E65; Case map
+   1E66; 1E67; Case map
+   1E68; 1E69; Case map
+   1E6A; 1E6B; Case map
+   1E6C; 1E6D; Case map
+   1E6E; 1E6F; Case map
+   1E70; 1E71; Case map
+   1E72; 1E73; Case map
+   1E74; 1E75; Case map
+   1E76; 1E77; Case map
+   1E78; 1E79; Case map
+   1E7A; 1E7B; Case map
+   1E7C; 1E7D; Case map
+   1E7E; 1E7F; Case map
+   1E80; 1E81; Case map
+   1E82; 1E83; Case map
+   1E84; 1E85; Case map
+   1E86; 1E87; Case map
+   1E88; 1E89; Case map
+   1E8A; 1E8B; Case map
+   1E8C; 1E8D; Case map
+   1E8E; 1E8F; Case map
+   1E90; 1E91; Case map
+   1E92; 1E93; Case map
+   1E94; 1E95; Case map
+   1E96; 0068 0331; Case map
+   1E97; 0074 0308; Case map
+   1E98; 0077 030A; Case map
+   1E99; 0079 030A; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 71]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1E9A; 0061 02BE; Case map
+   1E9B; 1E61; Case map
+   1EA0; 1EA1; Case map
+   1EA2; 1EA3; Case map
+   1EA4; 1EA5; Case map
+   1EA6; 1EA7; Case map
+   1EA8; 1EA9; Case map
+   1EAA; 1EAB; Case map
+   1EAC; 1EAD; Case map
+   1EAE; 1EAF; Case map
+   1EB0; 1EB1; Case map
+   1EB2; 1EB3; Case map
+   1EB4; 1EB5; Case map
+   1EB6; 1EB7; Case map
+   1EB8; 1EB9; Case map
+   1EBA; 1EBB; Case map
+   1EBC; 1EBD; Case map
+   1EBE; 1EBF; Case map
+   1EC0; 1EC1; Case map
+   1EC2; 1EC3; Case map
+   1EC4; 1EC5; Case map
+   1EC6; 1EC7; Case map
+   1EC8; 1EC9; Case map
+   1ECA; 1ECB; Case map
+   1ECC; 1ECD; Case map
+   1ECE; 1ECF; Case map
+   1ED0; 1ED1; Case map
+   1ED2; 1ED3; Case map
+   1ED4; 1ED5; Case map
+   1ED6; 1ED7; Case map
+   1ED8; 1ED9; Case map
+   1EDA; 1EDB; Case map
+   1EDC; 1EDD; Case map
+   1EDE; 1EDF; Case map
+   1EE0; 1EE1; Case map
+   1EE2; 1EE3; Case map
+   1EE4; 1EE5; Case map
+   1EE6; 1EE7; Case map
+   1EE8; 1EE9; Case map
+   1EEA; 1EEB; Case map
+   1EEC; 1EED; Case map
+   1EEE; 1EEF; Case map
+   1EF0; 1EF1; Case map
+   1EF2; 1EF3; Case map
+   1EF4; 1EF5; Case map
+   1EF6; 1EF7; Case map
+   1EF8; 1EF9; Case map
+   1F08; 1F00; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 72]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1F09; 1F01; Case map
+   1F0A; 1F02; Case map
+   1F0B; 1F03; Case map
+   1F0C; 1F04; Case map
+   1F0D; 1F05; Case map
+   1F0E; 1F06; Case map
+   1F0F; 1F07; Case map
+   1F18; 1F10; Case map
+   1F19; 1F11; Case map
+   1F1A; 1F12; Case map
+   1F1B; 1F13; Case map
+   1F1C; 1F14; Case map
+   1F1D; 1F15; Case map
+   1F28; 1F20; Case map
+   1F29; 1F21; Case map
+   1F2A; 1F22; Case map
+   1F2B; 1F23; Case map
+   1F2C; 1F24; Case map
+   1F2D; 1F25; Case map
+   1F2E; 1F26; Case map
+   1F2F; 1F27; Case map
+   1F38; 1F30; Case map
+   1F39; 1F31; Case map
+   1F3A; 1F32; Case map
+   1F3B; 1F33; Case map
+   1F3C; 1F34; Case map
+   1F3D; 1F35; Case map
+   1F3E; 1F36; Case map
+   1F3F; 1F37; Case map
+   1F48; 1F40; Case map
+   1F49; 1F41; Case map
+   1F4A; 1F42; Case map
+   1F4B; 1F43; Case map
+   1F4C; 1F44; Case map
+   1F4D; 1F45; Case map
+   1F50; 03C5 0313; Case map
+   1F52; 03C5 0313 0300; Case map
+   1F54; 03C5 0313 0301; Case map
+   1F56; 03C5 0313 0342; Case map
+   1F59; 1F51; Case map
+   1F5B; 1F53; Case map
+   1F5D; 1F55; Case map
+   1F5F; 1F57; Case map
+   1F68; 1F60; Case map
+   1F69; 1F61; Case map
+   1F6A; 1F62; Case map
+   1F6B; 1F63; Case map
+   1F6C; 1F64; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 73]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1F6D; 1F65; Case map
+   1F6E; 1F66; Case map
+   1F6F; 1F67; Case map
+   1F80; 1F00 03B9; Case map
+   1F81; 1F01 03B9; Case map
+   1F82; 1F02 03B9; Case map
+   1F83; 1F03 03B9; Case map
+   1F84; 1F04 03B9; Case map
+   1F85; 1F05 03B9; Case map
+   1F86; 1F06 03B9; Case map
+   1F87; 1F07 03B9; Case map
+   1F88; 1F00 03B9; Case map
+   1F89; 1F01 03B9; Case map
+   1F8A; 1F02 03B9; Case map
+   1F8B; 1F03 03B9; Case map
+   1F8C; 1F04 03B9; Case map
+   1F8D; 1F05 03B9; Case map
+   1F8E; 1F06 03B9; Case map
+   1F8F; 1F07 03B9; Case map
+   1F90; 1F20 03B9; Case map
+   1F91; 1F21 03B9; Case map
+   1F92; 1F22 03B9; Case map
+   1F93; 1F23 03B9; Case map
+   1F94; 1F24 03B9; Case map
+   1F95; 1F25 03B9; Case map
+   1F96; 1F26 03B9; Case map
+   1F97; 1F27 03B9; Case map
+   1F98; 1F20 03B9; Case map
+   1F99; 1F21 03B9; Case map
+   1F9A; 1F22 03B9; Case map
+   1F9B; 1F23 03B9; Case map
+   1F9C; 1F24 03B9; Case map
+   1F9D; 1F25 03B9; Case map
+   1F9E; 1F26 03B9; Case map
+   1F9F; 1F27 03B9; Case map
+   1FA0; 1F60 03B9; Case map
+   1FA1; 1F61 03B9; Case map
+   1FA2; 1F62 03B9; Case map
+   1FA3; 1F63 03B9; Case map
+   1FA4; 1F64 03B9; Case map
+   1FA5; 1F65 03B9; Case map
+   1FA6; 1F66 03B9; Case map
+   1FA7; 1F67 03B9; Case map
+   1FA8; 1F60 03B9; Case map
+   1FA9; 1F61 03B9; Case map
+   1FAA; 1F62 03B9; Case map
+   1FAB; 1F63 03B9; Case map
+   1FAC; 1F64 03B9; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 74]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1FAD; 1F65 03B9; Case map
+   1FAE; 1F66 03B9; Case map
+   1FAF; 1F67 03B9; Case map
+   1FB2; 1F70 03B9; Case map
+   1FB3; 03B1 03B9; Case map
+   1FB4; 03AC 03B9; Case map
+   1FB6; 03B1 0342; Case map
+   1FB7; 03B1 0342 03B9; Case map
+   1FB8; 1FB0; Case map
+   1FB9; 1FB1; Case map
+   1FBA; 1F70; Case map
+   1FBB; 1F71; Case map
+   1FBC; 03B1 03B9; Case map
+   1FBE; 03B9; Case map
+   1FC2; 1F74 03B9; Case map
+   1FC3; 03B7 03B9; Case map
+   1FC4; 03AE 03B9; Case map
+   1FC6; 03B7 0342; Case map
+   1FC7; 03B7 0342 03B9; Case map
+   1FC8; 1F72; Case map
+   1FC9; 1F73; Case map
+   1FCA; 1F74; Case map
+   1FCB; 1F75; Case map
+   1FCC; 03B7 03B9; Case map
+   1FD2; 03B9 0308 0300; Case map
+   1FD3; 03B9 0308 0301; Case map
+   1FD6; 03B9 0342; Case map
+   1FD7; 03B9 0308 0342; Case map
+   1FD8; 1FD0; Case map
+   1FD9; 1FD1; Case map
+   1FDA; 1F76; Case map
+   1FDB; 1F77; Case map
+   1FE2; 03C5 0308 0300; Case map
+   1FE3; 03C5 0308 0301; Case map
+   1FE4; 03C1 0313; Case map
+   1FE6; 03C5 0342; Case map
+   1FE7; 03C5 0308 0342; Case map
+   1FE8; 1FE0; Case map
+   1FE9; 1FE1; Case map
+   1FEA; 1F7A; Case map
+   1FEB; 1F7B; Case map
+   1FEC; 1FE5; Case map
+   1FF2; 1F7C 03B9; Case map
+   1FF3; 03C9 03B9; Case map
+   1FF4; 03CE 03B9; Case map
+   1FF6; 03C9 0342; Case map
+   1FF7; 03C9 0342 03B9; Case map
+   1FF8; 1F78; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 75]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1FF9; 1F79; Case map
+   1FFA; 1F7C; Case map
+   1FFB; 1F7D; Case map
+   1FFC; 03C9 03B9; Case map
+   2126; 03C9; Case map
+   212A; 006B; Case map
+   212B; 00E5; Case map
+   2160; 2170; Case map
+   2161; 2171; Case map
+   2162; 2172; Case map
+   2163; 2173; Case map
+   2164; 2174; Case map
+   2165; 2175; Case map
+   2166; 2176; Case map
+   2167; 2177; Case map
+   2168; 2178; Case map
+   2169; 2179; Case map
+   216A; 217A; Case map
+   216B; 217B; Case map
+   216C; 217C; Case map
+   216D; 217D; Case map
+   216E; 217E; Case map
+   216F; 217F; Case map
+   24B6; 24D0; Case map
+   24B7; 24D1; Case map
+   24B8; 24D2; Case map
+   24B9; 24D3; Case map
+   24BA; 24D4; Case map
+   24BB; 24D5; Case map
+   24BC; 24D6; Case map
+   24BD; 24D7; Case map
+   24BE; 24D8; Case map
+   24BF; 24D9; Case map
+   24C0; 24DA; Case map
+   24C1; 24DB; Case map
+   24C2; 24DC; Case map
+   24C3; 24DD; Case map
+   24C4; 24DE; Case map
+   24C5; 24DF; Case map
+   24C6; 24E0; Case map
+   24C7; 24E1; Case map
+   24C8; 24E2; Case map
+   24C9; 24E3; Case map
+   24CA; 24E4; Case map
+   24CB; 24E5; Case map
+   24CC; 24E6; Case map
+   24CD; 24E7; Case map
+   24CE; 24E8; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 76]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   24CF; 24E9; Case map
+   FB00; 0066 0066; Case map
+   FB01; 0066 0069; Case map
+   FB02; 0066 006C; Case map
+   FB03; 0066 0066 0069; Case map
+   FB04; 0066 0066 006C; Case map
+   FB05; 0073 0074; Case map
+   FB06; 0073 0074; Case map
+   FB13; 0574 0576; Case map
+   FB14; 0574 0565; Case map
+   FB15; 0574 056B; Case map
+   FB16; 057E 0576; Case map
+   FB17; 0574 056D; Case map
+   FF21; FF41; Case map
+   FF22; FF42; Case map
+   FF23; FF43; Case map
+   FF24; FF44; Case map
+   FF25; FF45; Case map
+   FF26; FF46; Case map
+   FF27; FF47; Case map
+   FF28; FF48; Case map
+   FF29; FF49; Case map
+   FF2A; FF4A; Case map
+   FF2B; FF4B; Case map
+   FF2C; FF4C; Case map
+   FF2D; FF4D; Case map
+   FF2E; FF4E; Case map
+   FF2F; FF4F; Case map
+   FF30; FF50; Case map
+   FF31; FF51; Case map
+   FF32; FF52; Case map
+   FF33; FF53; Case map
+   FF34; FF54; Case map
+   FF35; FF55; Case map
+   FF36; FF56; Case map
+   FF37; FF57; Case map
+   FF38; FF58; Case map
+   FF39; FF59; Case map
+   FF3A; FF5A; Case map
+   10400; 10428; Case map
+   10401; 10429; Case map
+   10402; 1042A; Case map
+   10403; 1042B; Case map
+   10404; 1042C; Case map
+   10405; 1042D; Case map
+   10406; 1042E; Case map
+   10407; 1042F; Case map
+   10408; 10430; Case map
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 77]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   10409; 10431; Case map
+   1040A; 10432; Case map
+   1040B; 10433; Case map
+   1040C; 10434; Case map
+   1040D; 10435; Case map
+   1040E; 10436; Case map
+   1040F; 10437; Case map
+   10410; 10438; Case map
+   10411; 10439; Case map
+   10412; 1043A; Case map
+   10413; 1043B; Case map
+   10414; 1043C; Case map
+   10415; 1043D; Case map
+   10416; 1043E; Case map
+   10417; 1043F; Case map
+   10418; 10440; Case map
+   10419; 10441; Case map
+   1041A; 10442; Case map
+   1041B; 10443; Case map
+   1041C; 10444; Case map
+   1041D; 10445; Case map
+   1041E; 10446; Case map
+   1041F; 10447; Case map
+   10420; 10448; Case map
+   10421; 10449; Case map
+   10422; 1044A; Case map
+   10423; 1044B; Case map
+   10424; 1044C; Case map
+   10425; 1044D; Case map
+   ----- End Table B.3 -----
+
+C. Prohibition tables
+
+   The tables in this appendix consist of lines with one prohibited code
+   point per line.  The format of the lines are the value of the code
+   point, a semicolon, and a comment which is the name of the code
+   point.
+
+C.1 Space characters
+
+C.1.1 ASCII space characters
+
+   ----- Start Table C.1.1 -----
+   0020; SPACE
+   ----- End Table C.1.1 -----
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 78]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+C.1.2 Non-ASCII space characters
+   ----- Start Table C.1.2 -----
+   00A0; NO-BREAK SPACE
+   1680; OGHAM SPACE MARK
+   2000; EN QUAD
+   2001; EM QUAD
+   2002; EN SPACE
+   2003; EM SPACE
+   2004; THREE-PER-EM SPACE
+   2005; FOUR-PER-EM SPACE
+   2006; SIX-PER-EM SPACE
+   2007; FIGURE SPACE
+   2008; PUNCTUATION SPACE
+   2009; THIN SPACE
+   200A; HAIR SPACE
+   200B; ZERO WIDTH SPACE
+   202F; NARROW NO-BREAK SPACE
+   205F; MEDIUM MATHEMATICAL SPACE
+   3000; IDEOGRAPHIC SPACE
+   ----- End Table C.1.2 -----
+
+C.2 Control characters
+
+C.2.1 ASCII control characters
+
+   ----- Start Table C.2.1 -----
+   0000-001F; [CONTROL CHARACTERS]
+   007F; DELETE
+   ----- End Table C.2.1 -----
+
+C.2.2 Non-ASCII control characters
+
+   ----- Start Table C.2.2 -----
+   0080-009F; [CONTROL CHARACTERS]
+   06DD; ARABIC END OF AYAH
+   070F; SYRIAC ABBREVIATION MARK
+   180E; MONGOLIAN VOWEL SEPARATOR
+   200C; ZERO WIDTH NON-JOINER
+   200D; ZERO WIDTH JOINER
+   2028; LINE SEPARATOR
+   2029; PARAGRAPH SEPARATOR
+   2060; WORD JOINER
+   2061; FUNCTION APPLICATION
+   2062; INVISIBLE TIMES
+   2063; INVISIBLE SEPARATOR
+   206A-206F; [CONTROL CHARACTERS]
+   FEFF; ZERO WIDTH NO-BREAK SPACE
+   FFF9-FFFC; [CONTROL CHARACTERS]
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 79]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D173-1D17A; [MUSICAL CONTROL CHARACTERS]
+   ----- End Table C.2.2 -----
+
+C.3 Private use
+
+   ----- Start Table C.3 -----
+   E000-F8FF; [PRIVATE USE, PLANE 0]
+   F0000-FFFFD; [PRIVATE USE, PLANE 15]
+   100000-10FFFD; [PRIVATE USE, PLANE 16]
+   ----- End Table C.3 -----
+
+C.4 Non-character code points
+
+   ----- Start Table C.4 -----
+   FDD0-FDEF; [NONCHARACTER CODE POINTS]
+   FFFE-FFFF; [NONCHARACTER CODE POINTS]
+   1FFFE-1FFFF; [NONCHARACTER CODE POINTS]
+   2FFFE-2FFFF; [NONCHARACTER CODE POINTS]
+   3FFFE-3FFFF; [NONCHARACTER CODE POINTS]
+   4FFFE-4FFFF; [NONCHARACTER CODE POINTS]
+   5FFFE-5FFFF; [NONCHARACTER CODE POINTS]
+   6FFFE-6FFFF; [NONCHARACTER CODE POINTS]
+   7FFFE-7FFFF; [NONCHARACTER CODE POINTS]
+   8FFFE-8FFFF; [NONCHARACTER CODE POINTS]
+   9FFFE-9FFFF; [NONCHARACTER CODE POINTS]
+   AFFFE-AFFFF; [NONCHARACTER CODE POINTS]
+   BFFFE-BFFFF; [NONCHARACTER CODE POINTS]
+   CFFFE-CFFFF; [NONCHARACTER CODE POINTS]
+   DFFFE-DFFFF; [NONCHARACTER CODE POINTS]
+   EFFFE-EFFFF; [NONCHARACTER CODE POINTS]
+   FFFFE-FFFFF; [NONCHARACTER CODE POINTS]
+   10FFFE-10FFFF; [NONCHARACTER CODE POINTS]
+   ----- End Table C.4 -----
+
+C.5 Surrogate codes
+
+   ----- Start Table C.5 -----
+   D800-DFFF; [SURROGATE CODES]
+   ----- End Table C.5 -----
+
+C.6 Inappropriate for plain text
+
+   ----- Start Table C.6 -----
+   FFF9; INTERLINEAR ANNOTATION ANCHOR
+   FFFA; INTERLINEAR ANNOTATION SEPARATOR
+   FFFB; INTERLINEAR ANNOTATION TERMINATOR
+   FFFC; OBJECT REPLACEMENT CHARACTER
+   FFFD; REPLACEMENT CHARACTER
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 80]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   ----- End Table C.6 -----
+
+C.7 Inappropriate for canonical representation
+
+   ----- Start Table C.7 -----
+   2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS]
+   ----- End Table C.7 -----
+
+C.8 Change display properties or are deprecated
+
+   ----- Start Table C.8 -----
+   0340; COMBINING GRAVE TONE MARK
+   0341; COMBINING ACUTE TONE MARK
+   200E; LEFT-TO-RIGHT MARK
+   200F; RIGHT-TO-LEFT MARK
+   202A; LEFT-TO-RIGHT EMBEDDING
+   202B; RIGHT-TO-LEFT EMBEDDING
+   202C; POP DIRECTIONAL FORMATTING
+   202D; LEFT-TO-RIGHT OVERRIDE
+   202E; RIGHT-TO-LEFT OVERRIDE
+   206A; INHIBIT SYMMETRIC SWAPPING
+   206B; ACTIVATE SYMMETRIC SWAPPING
+   206C; INHIBIT ARABIC FORM SHAPING
+   206D; ACTIVATE ARABIC FORM SHAPING
+   206E; NATIONAL DIGIT SHAPES
+   206F; NOMINAL DIGIT SHAPES
+   ----- End Table C.8 -----
+
+C.9 Tagging characters
+
+   ----- Start Table C.9 -----
+   E0001; LANGUAGE TAG
+   E0020-E007F; [TAGGING CHARACTERS]
+   ----- End Table C.9 -----
+
+D. Bidirectional tables
+
+D.1 Characters with bidirectional property "R" or "AL"
+
+   ----- Start Table D.1 -----
+   05BE
+   05C0
+   05C3
+   05D0-05EA
+   05F0-05F4
+   061B
+   061F
+   0621-063A
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 81]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0640-064A
+   066D-066F
+   0671-06D5
+   06DD
+   06E5-06E6
+   06FA-06FE
+   0700-070D
+   0710
+   0712-072C
+   0780-07A5
+   07B1
+   200F
+   FB1D
+   FB1F-FB28
+   FB2A-FB36
+   FB38-FB3C
+   FB3E
+   FB40-FB41
+   FB43-FB44
+   FB46-FBB1
+   FBD3-FD3D
+   FD50-FD8F
+   FD92-FDC7
+   FDF0-FDFC
+   FE70-FE74
+   FE76-FEFC
+   ----- End Table D.1 -----
+
+D.2 Characters with bidirectional property "L"
+
+   ----- Start Table D.2 -----
+   0041-005A
+   0061-007A
+   00AA
+   00B5
+   00BA
+   00C0-00D6
+   00D8-00F6
+   00F8-0220
+   0222-0233
+   0250-02AD
+   02B0-02B8
+   02BB-02C1
+   02D0-02D1
+   02E0-02E4
+   02EE
+   037A
+   0386
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 82]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0388-038A
+   038C
+   038E-03A1
+   03A3-03CE
+   03D0-03F5
+   0400-0482
+   048A-04CE
+   04D0-04F5
+   04F8-04F9
+   0500-050F
+   0531-0556
+   0559-055F
+   0561-0587
+   0589
+   0903
+   0905-0939
+   093D-0940
+   0949-094C
+   0950
+   0958-0961
+   0964-0970
+   0982-0983
+   0985-098C
+   098F-0990
+   0993-09A8
+   09AA-09B0
+   09B2
+   09B6-09B9
+   09BE-09C0
+   09C7-09C8
+   09CB-09CC
+   09D7
+   09DC-09DD
+   09DF-09E1
+   09E6-09F1
+   09F4-09FA
+   0A05-0A0A
+   0A0F-0A10
+   0A13-0A28
+   0A2A-0A30
+   0A32-0A33
+   0A35-0A36
+   0A38-0A39
+   0A3E-0A40
+   0A59-0A5C
+   0A5E
+   0A66-0A6F
+   0A72-0A74
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 83]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0A83
+   0A85-0A8B
+   0A8D
+   0A8F-0A91
+   0A93-0AA8
+   0AAA-0AB0
+   0AB2-0AB3
+   0AB5-0AB9
+   0ABD-0AC0
+   0AC9
+   0ACB-0ACC
+   0AD0
+   0AE0
+   0AE6-0AEF
+   0B02-0B03
+   0B05-0B0C
+   0B0F-0B10
+   0B13-0B28
+   0B2A-0B30
+   0B32-0B33
+   0B36-0B39
+   0B3D-0B3E
+   0B40
+   0B47-0B48
+   0B4B-0B4C
+   0B57
+   0B5C-0B5D
+   0B5F-0B61
+   0B66-0B70
+   0B83
+   0B85-0B8A
+   0B8E-0B90
+   0B92-0B95
+   0B99-0B9A
+   0B9C
+   0B9E-0B9F
+   0BA3-0BA4
+   0BA8-0BAA
+   0BAE-0BB5
+   0BB7-0BB9
+   0BBE-0BBF
+   0BC1-0BC2
+   0BC6-0BC8
+   0BCA-0BCC
+   0BD7
+   0BE7-0BF2
+   0C01-0C03
+   0C05-0C0C
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 84]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0C0E-0C10
+   0C12-0C28
+   0C2A-0C33
+   0C35-0C39
+   0C41-0C44
+   0C60-0C61
+   0C66-0C6F
+   0C82-0C83
+   0C85-0C8C
+   0C8E-0C90
+   0C92-0CA8
+   0CAA-0CB3
+   0CB5-0CB9
+   0CBE
+   0CC0-0CC4
+   0CC7-0CC8
+   0CCA-0CCB
+   0CD5-0CD6
+   0CDE
+   0CE0-0CE1
+   0CE6-0CEF
+   0D02-0D03
+   0D05-0D0C
+   0D0E-0D10
+   0D12-0D28
+   0D2A-0D39
+   0D3E-0D40
+   0D46-0D48
+   0D4A-0D4C
+   0D57
+   0D60-0D61
+   0D66-0D6F
+   0D82-0D83
+   0D85-0D96
+   0D9A-0DB1
+   0DB3-0DBB
+   0DBD
+   0DC0-0DC6
+   0DCF-0DD1
+   0DD8-0DDF
+   0DF2-0DF4
+   0E01-0E30
+   0E32-0E33
+   0E40-0E46
+   0E4F-0E5B
+   0E81-0E82
+   0E84
+   0E87-0E88
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 85]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   0E8A
+   0E8D
+   0E94-0E97
+   0E99-0E9F
+   0EA1-0EA3
+   0EA5
+   0EA7
+   0EAA-0EAB
+   0EAD-0EB0
+   0EB2-0EB3
+   0EBD
+   0EC0-0EC4
+   0EC6
+   0ED0-0ED9
+   0EDC-0EDD
+   0F00-0F17
+   0F1A-0F34
+   0F36
+   0F38
+   0F3E-0F47
+   0F49-0F6A
+   0F7F
+   0F85
+   0F88-0F8B
+   0FBE-0FC5
+   0FC7-0FCC
+   0FCF
+   1000-1021
+   1023-1027
+   1029-102A
+   102C
+   1031
+   1038
+   1040-1057
+   10A0-10C5
+   10D0-10F8
+   10FB
+   1100-1159
+   115F-11A2
+   11A8-11F9
+   1200-1206
+   1208-1246
+   1248
+   124A-124D
+   1250-1256
+   1258
+   125A-125D
+   1260-1286
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 86]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1288
+   128A-128D
+   1290-12AE
+   12B0
+   12B2-12B5
+   12B8-12BE
+   12C0
+   12C2-12C5
+   12C8-12CE
+   12D0-12D6
+   12D8-12EE
+   12F0-130E
+   1310
+   1312-1315
+   1318-131E
+   1320-1346
+   1348-135A
+   1361-137C
+   13A0-13F4
+   1401-1676
+   1681-169A
+   16A0-16F0
+   1700-170C
+   170E-1711
+   1720-1731
+   1735-1736
+   1740-1751
+   1760-176C
+   176E-1770
+   1780-17B6
+   17BE-17C5
+   17C7-17C8
+   17D4-17DA
+   17DC
+   17E0-17E9
+   1810-1819
+   1820-1877
+   1880-18A8
+   1E00-1E9B
+   1EA0-1EF9
+   1F00-1F15
+   1F18-1F1D
+   1F20-1F45
+   1F48-1F4D
+   1F50-1F57
+   1F59
+   1F5B
+   1F5D
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 87]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1F5F-1F7D
+   1F80-1FB4
+   1FB6-1FBC
+   1FBE
+   1FC2-1FC4
+   1FC6-1FCC
+   1FD0-1FD3
+   1FD6-1FDB
+   1FE0-1FEC
+   1FF2-1FF4
+   1FF6-1FFC
+   200E
+   2071
+   207F
+   2102
+   2107
+   210A-2113
+   2115
+   2119-211D
+   2124
+   2126
+   2128
+   212A-212D
+   212F-2131
+   2133-2139
+   213D-213F
+   2145-2149
+   2160-2183
+   2336-237A
+   2395
+   249C-24E9
+   3005-3007
+   3021-3029
+   3031-3035
+   3038-303C
+   3041-3096
+   309D-309F
+   30A1-30FA
+   30FC-30FF
+   3105-312C
+   3131-318E
+   3190-31B7
+   31F0-321C
+   3220-3243
+   3260-327B
+   327F-32B0
+   32C0-32CB
+   32D0-32FE
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 88]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   3300-3376
+   337B-33DD
+   33E0-33FE
+   3400-4DB5
+   4E00-9FA5
+   A000-A48C
+   AC00-D7A3
+   D800-FA2D
+   FA30-FA6A
+   FB00-FB06
+   FB13-FB17
+   FF21-FF3A
+   FF41-FF5A
+   FF66-FFBE
+   FFC2-FFC7
+   FFCA-FFCF
+   FFD2-FFD7
+   FFDA-FFDC
+   10300-1031E
+   10320-10323
+   10330-1034A
+   10400-10425
+   10428-1044D
+   1D000-1D0F5
+   1D100-1D126
+   1D12A-1D166
+   1D16A-1D172
+   1D183-1D184
+   1D18C-1D1A9
+   1D1AE-1D1DD
+   1D400-1D454
+   1D456-1D49C
+   1D49E-1D49F
+   1D4A2
+   1D4A5-1D4A6
+   1D4A9-1D4AC
+   1D4AE-1D4B9
+   1D4BB
+   1D4BD-1D4C0
+   1D4C2-1D4C3
+   1D4C5-1D505
+   1D507-1D50A
+   1D50D-1D514
+   1D516-1D51C
+   1D51E-1D539
+   1D53B-1D53E
+   1D540-1D544
+   1D546
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 89]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+   1D54A-1D550
+   1D552-1D6A3
+   1D6A8-1D7C9
+   20000-2A6D6
+   2F800-2FA1D
+   F0000-FFFFD
+   100000-10FFFD
+   ----- End Table D.2 -----
+
+Authors' Addresses
+
+   Paul Hoffman
+   Internet Mail Consortium and VPN Consortium
+   127 Segre Place
+   Santa Cruz, CA  95060 USA
+
+   EMail: paul.hoffman at imc.org and paul.hoffman at vpnc.org
+
+
+   Marc Blanchet
+   Viagenie inc.
+   2875 boul. Laurier, bur. 300
+   Ste-Foy, Quebec, Canada, G1V 2M2
+
+   EMail: Marc.Blanchet at viagenie.qc.ca
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 90]
+
+RFC 3454        Preparation of Internationalized Strings   December 2002
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2002).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                    [Page 91]
+

Copied: branches/samba/experimental/source4/heimdal/lib/wind/rfc3490.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/heimdal/lib/wind/rfc3490.txt)
===================================================================
--- branches/samba/experimental/source4/heimdal/lib/wind/rfc3490.txt	                        (rev 0)
+++ branches/samba/experimental/source4/heimdal/lib/wind/rfc3490.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,1235 @@
+
+
+
+
+
+
+Network Working Group                                       P. Faltstrom
+Request for Comments: 3490                                         Cisco
+Category: Standards Track                                     P. Hoffman
+                                                              IMC & VPNC
+                                                             A. Costello
+                                                             UC Berkeley
+                                                              March 2003
+
+
+         Internationalizing Domain Names in Applications (IDNA)
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+Abstract
+
+   Until now, there has been no standard method for domain names to use
+   characters outside the ASCII repertoire.  This document defines
+   internationalized domain names (IDNs) and a mechanism called
+   Internationalizing Domain Names in Applications (IDNA) for handling
+   them in a standard fashion.  IDNs use characters drawn from a large
+   repertoire (Unicode), but IDNA allows the non-ASCII characters to be
+   represented using only the ASCII characters already allowed in so-
+   called host names today.  This backward-compatible representation is
+   required in existing protocols like DNS, so that IDNs can be
+   introduced with no changes to the existing infrastructure.  IDNA is
+   only meant for processing domain names, not free text.
+
+Table of Contents
+
+   1. Introduction..................................................  2
+      1.1 Problem Statement.........................................  3
+      1.2 Limitations of IDNA.......................................  3
+      1.3 Brief overview for application developers.................  4
+   2. Terminology...................................................  5
+   3. Requirements and applicability................................  7
+      3.1 Requirements..............................................  7
+      3.2 Applicability.............................................  8
+         3.2.1. DNS resource records................................  8
+
+
+
+Faltstrom, et al.           Standards Track                     [Page 1]
+
+RFC 3490                          IDNA                        March 2003
+
+
+         3.2.2. Non-domain-name data types stored in domain names...  9
+   4. Conversion operations.........................................  9
+      4.1 ToASCII................................................... 10
+      4.2 ToUnicode................................................. 11
+   5. ACE prefix.................................................... 12
+   6. Implications for typical applications using DNS............... 13
+      6.1 Entry and display in applications......................... 14
+      6.2 Applications and resolver libraries....................... 15
+      6.3 DNS servers............................................... 15
+      6.4 Avoiding exposing users to the raw ACE encoding........... 16
+      6.5  DNSSEC authentication of IDN domain names................ 16
+   7. Name server considerations.................................... 17
+   8. Root server considerations.................................... 17
+   9. References.................................................... 18
+      9.1 Normative References...................................... 18
+      9.2 Informative References.................................... 18
+   10. Security Considerations...................................... 19
+   11. IANA Considerations.......................................... 20
+   12. Authors' Addresses........................................... 21
+   13. Full Copyright Statement..................................... 22
+
+1. Introduction
+
+   IDNA works by allowing applications to use certain ASCII name labels
+   (beginning with a special prefix) to represent non-ASCII name labels.
+   Lower-layer protocols need not be aware of this; therefore IDNA does
+   not depend on changes to any infrastructure.  In particular, IDNA
+   does not depend on any changes to DNS servers, resolvers, or protocol
+   elements, because the ASCII name service provided by the existing DNS
+   is entirely sufficient for IDNA.
+
+   This document does not require any applications to conform to IDNA,
+   but applications can elect to use IDNA in order to support IDN while
+   maintaining interoperability with existing infrastructure.  If an
+   application wants to use non-ASCII characters in domain names, IDNA
+   is the only currently-defined option.  Adding IDNA support to an
+   existing application entails changes to the application only, and
+   leaves room for flexibility in the user interface.
+
+   A great deal of the discussion of IDN solutions has focused on
+   transition issues and how IDN will work in a world where not all of
+   the components have been updated.  Proposals that were not chosen by
+   the IDN Working Group would depend on user applications, resolvers,
+   and DNS servers being updated in order for a user to use an
+   internationalized domain name.  Rather than rely on widespread
+   updating of all components, IDNA depends on updates to user
+   applications only; no changes are needed to the DNS protocol or any
+   DNS servers or the resolvers on user's computers.
+
+
+
+Faltstrom, et al.           Standards Track                     [Page 2]
+
+RFC 3490                          IDNA                        March 2003
+
+
+1.1 Problem Statement
+
+   The IDNA specification solves the problem of extending the repertoire
+   of characters that can be used in domain names to include the Unicode
+   repertoire (with some restrictions).
+
+   IDNA does not extend the service offered by DNS to the applications.
+   Instead, the applications (and, by implication, the users) continue
+   to see an exact-match lookup service.  Either there is a single
+   exactly-matching name or there is no match.  This model has served
+   the existing applications well, but it requires, with or without
+   internationalized domain names, that users know the exact spelling of
+   the domain names that the users type into applications such as web
+   browsers and mail user agents.  The introduction of the larger
+   repertoire of characters potentially makes the set of misspellings
+   larger, especially given that in some cases the same appearance, for
+   example on a business card, might visually match several Unicode code
+   points or several sequences of code points.
+
+   IDNA allows the graceful introduction of IDNs not only by avoiding
+   upgrades to existing infrastructure (such as DNS servers and mail
+   transport agents), but also by allowing some rudimentary use of IDNs
+   in applications by using the ASCII representation of the non-ASCII
+   name labels.  While such names are very user-unfriendly to read and
+   type, and hence are not suitable for user input, they allow (for
+   instance) replying to email and clicking on URLs even though the
+   domain name displayed is incomprehensible to the user.  In order to
+   allow user-friendly input and output of the IDNs, the applications
+   need to be modified to conform to this specification.
+
+   IDNA uses the Unicode character repertoire, which avoids the
+   significant delays that would be inherent in waiting for a different
+   and specific character set be defined for IDN purposes by some other
+   standards developing organization.
+
+1.2 Limitations of IDNA
+
+   The IDNA protocol does not solve all linguistic issues with users
+   inputting names in different scripts.  Many important language-based
+   and script-based mappings are not covered in IDNA and need to be
+   handled outside the protocol.  For example, names that are entered in
+   a mix of traditional and simplified Chinese characters will not be
+   mapped to a single canonical name.  Another example is Scandinavian
+   names that are entered with U+00F6 (LATIN SMALL LETTER O WITH
+   DIAERESIS) will not be mapped to U+00F8 (LATIN SMALL LETTER O WITH
+   STROKE).
+
+
+
+
+
+Faltstrom, et al.           Standards Track                     [Page 3]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   An example of an important issue that is not considered in detail in
+   IDNA is how to provide a high probability that a user who is entering
+   a domain name based on visual information (such as from a business
+   card or billboard) or aural information (such as from a telephone or
+   radio) would correctly enter the IDN.  Similar issues exist for ASCII
+   domain names, for example the possible visual confusion between the
+   letter 'O' and the digit zero, but the introduction of the larger
+   repertoire of characters creates more opportunities of similar
+   looking and similar sounding names.  Note that this is a complex
+   issue relating to languages, input methods on computers, and so on.
+   Furthermore, the kind of matching and searching necessary for a high
+   probability of success would not fit the role of the DNS and its
+   exact matching function.
+
+1.3 Brief overview for application developers
+
+   Applications can use IDNA to support internationalized domain names
+   anywhere that ASCII domain names are already supported, including DNS
+   master files and resolver interfaces.  (Applications can also define
+   protocols and interfaces that support IDNs directly using non-ASCII
+   representations.  IDNA does not prescribe any particular
+   representation for new protocols, but it still defines which names
+   are valid and how they are compared.)
+
+   The IDNA protocol is contained completely within applications.  It is
+   not a client-server or peer-to-peer protocol: everything is done
+   inside the application itself.  When used with a DNS resolver
+   library, IDNA is inserted as a "shim" between the application and the
+   resolver library.  When used for writing names into a DNS zone, IDNA
+   is used just before the name is committed to the zone.
+
+   There are two operations described in section 4 of this document:
+
+   -  The ToASCII operation is used before sending an IDN to something
+      that expects ASCII names (such as a resolver) or writing an IDN
+      into a place that expects ASCII names (such as a DNS master file).
+
+   -  The ToUnicode operation is used when displaying names to users,
+      for example names obtained from a DNS zone.
+
+   It is important to note that the ToASCII operation can fail.  If it
+   fails when processing a domain name, that domain name cannot be used
+   as an internationalized domain name and the application has to have
+   some method of dealing with this failure.
+
+   IDNA requires that implementations process input strings with
+   Nameprep [NAMEPREP], which is a profile of Stringprep [STRINGPREP],
+   and then with Punycode [PUNYCODE].  Implementations of IDNA MUST
+
+
+
+Faltstrom, et al.           Standards Track                     [Page 4]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   fully implement Nameprep and Punycode; neither Nameprep nor Punycode
+   are optional.
+
+2. Terminology
+
+   The key words "MUST", "SHALL", "REQUIRED", "SHOULD", "RECOMMENDED",
+   and "MAY" in this document are to be interpreted as described in BCP
+   14, RFC 2119 [RFC2119].
+
+   A code point is an integer value associated with a character in a
+   coded character set.
+
+   Unicode [UNICODE] is a coded character set containing tens of
+   thousands of characters.  A single Unicode code point is denoted by
+   "U+" followed by four to six hexadecimal digits, while a range of
+   Unicode code points is denoted by two hexadecimal numbers separated
+   by "..", with no prefixes.
+
+   ASCII means US-ASCII [USASCII], a coded character set containing 128
+   characters associated with code points in the range 0..7F.  Unicode
+   is an extension of ASCII: it includes all the ASCII characters and
+   associates them with the same code points.
+
+   The term "LDH code points" is defined in this document to mean the
+   code points associated with ASCII letters, digits, and the hyphen-
+   minus; that is, U+002D, 30..39, 41..5A, and 61..7A. "LDH" is an
+   abbreviation for "letters, digits, hyphen".
+
+   [STD13] talks about "domain names" and "host names", but many people
+   use the terms interchangeably.  Further, because [STD13] was not
+   terribly clear, many people who are sure they know the exact
+   definitions of each of these terms disagree on the definitions.  In
+   this document the term "domain name" is used in general.  This
+   document explicitly cites [STD3] whenever referring to the host name
+   syntax restrictions defined therein.
+
+   A label is an individual part of a domain name.  Labels are usually
+   shown separated by dots; for example, the domain name
+   "www.example.com" is composed of three labels: "www", "example", and
+   "com".  (The zero-length root label described in [STD13], which can
+   be explicit as in "www.example.com." or implicit as in
+   "www.example.com", is not considered a label in this specification.)
+   IDNA extends the set of usable characters in labels that are text.
+   For the rest of this document, the term "label" is shorthand for
+   "text label", and "every label" means "every text label".
+
+
+
+
+
+
+Faltstrom, et al.           Standards Track                     [Page 5]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   An "internationalized label" is a label to which the ToASCII
+   operation (see section 4) can be applied without failing (with the
+   UseSTD3ASCIIRules flag unset).  This implies that every ASCII label
+   that satisfies the [STD13] length restriction is an internationalized
+   label.  Therefore the term "internationalized label" is a
+   generalization, embracing both old ASCII labels and new non-ASCII
+   labels.  Although most Unicode characters can appear in
+   internationalized labels, ToASCII will fail for some input strings,
+   and such strings are not valid internationalized labels.
+
+   An "internationalized domain name" (IDN) is a domain name in which
+   every label is an internationalized label.  This implies that every
+   ASCII domain name is an IDN (which implies that it is possible for a
+   name to be an IDN without it containing any non-ASCII characters).
+   This document does not attempt to define an "internationalized host
+   name".  Just as has been the case with ASCII names, some DNS zone
+   administrators may impose restrictions, beyond those imposed by DNS
+   or IDNA, on the characters or strings that may be registered as
+   labels in their zones.  Such restrictions have no impact on the
+   syntax or semantics of DNS protocol messages; a query for a name that
+   matches no records will yield the same response regardless of the
+   reason why it is not in the zone.  Clients issuing queries or
+   interpreting responses cannot be assumed to have any knowledge of
+   zone-specific restrictions or conventions.
+
+   In IDNA, equivalence of labels is defined in terms of the ToASCII
+   operation, which constructs an ASCII form for a given label, whether
+   or not the label was already an ASCII label.  Labels are defined to
+   be equivalent if and only if their ASCII forms produced by ToASCII
+   match using a case-insensitive ASCII comparison.  ASCII labels
+   already have a notion of equivalence: upper case and lower case are
+   considered equivalent.  The IDNA notion of equivalence is an
+   extension of that older notion.  Equivalent labels in IDNA are
+   treated as alternate forms of the same label, just as "foo" and "Foo"
+   are treated as alternate forms of the same label.
+
+   To allow internationalized labels to be handled by existing
+   applications, IDNA uses an "ACE label" (ACE stands for ASCII
+   Compatible Encoding).  An ACE label is an internationalized label
+   that can be rendered in ASCII and is equivalent to an
+   internationalized label that cannot be rendered in ASCII.  Given any
+   internationalized label that cannot be rendered in ASCII, the ToASCII
+   operation will convert it to an equivalent ACE label (whereas an
+   ASCII label will be left unaltered by ToASCII).  ACE labels are
+   unsuitable for display to users.  The ToUnicode operation will
+   convert any label to an equivalent non-ACE label.  In fact, an ACE
+   label is formally defined to be any label that the ToUnicode
+   operation would alter (whereas non-ACE labels are left unaltered by
+
+
+
+Faltstrom, et al.           Standards Track                     [Page 6]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   ToUnicode).  Every ACE label begins with the ACE prefix specified in
+   section 5.  The ToASCII and ToUnicode operations are specified in
+   section 4.
+
+   The "ACE prefix" is defined in this document to be a string of ASCII
+   characters that appears at the beginning of every ACE label.  It is
+   specified in section 5.
+
+   A "domain name slot" is defined in this document to be a protocol
+   element or a function argument or a return value (and so on)
+   explicitly designated for carrying a domain name.  Examples of domain
+   name slots include: the QNAME field of a DNS query; the name argument
+   of the gethostbyname() library function; the part of an email address
+   following the at-sign (@) in the From: field of an email message
+   header; and the host portion of the URI in the src attribute of an
+   HTML <IMG> tag.  General text that just happens to contain a domain
+   name is not a domain name slot; for example, a domain name appearing
+   in the plain text body of an email message is not occupying a domain
+   name slot.
+
+   An "IDN-aware domain name slot" is defined in this document to be a
+   domain name slot explicitly designated for carrying an
+   internationalized domain name as defined in this document.  The
+   designation may be static (for example, in the specification of the
+   protocol or interface) or dynamic (for example, as a result of
+   negotiation in an interactive session).
+
+   An "IDN-unaware domain name slot" is defined in this document to be
+   any domain name slot that is not an IDN-aware domain name slot.
+   Obviously, this includes any domain name slot whose specification
+   predates IDNA.
+
+3. Requirements and applicability
+
+3.1 Requirements
+
+   IDNA conformance means adherence to the following four requirements:
+
+   1) Whenever dots are used as label separators, the following
+      characters MUST be recognized as dots: U+002E (full stop), U+3002
+      (ideographic full stop), U+FF0E (fullwidth full stop), U+FF61
+      (halfwidth ideographic full stop).
+
+   2) Whenever a domain name is put into an IDN-unaware domain name slot
+      (see section 2), it MUST contain only ASCII characters.  Given an
+      internationalized domain name (IDN), an equivalent domain name
+      satisfying this requirement can be obtained by applying the
+
+
+
+
+Faltstrom, et al.           Standards Track                     [Page 7]
+
+RFC 3490                          IDNA                        March 2003
+
+
+      ToASCII operation (see section 4) to each label and, if dots are
+      used as label separators, changing all the label separators to
+      U+002E.
+
+   3) ACE labels obtained from domain name slots SHOULD be hidden from
+      users when it is known that the environment can handle the non-ACE
+      form, except when the ACE form is explicitly requested.  When it
+      is not known whether or not the environment can handle the non-ACE
+      form, the application MAY use the non-ACE form (which might fail,
+      such as by not being displayed properly), or it MAY use the ACE
+      form (which will look unintelligle to the user).  Given an
+      internationalized domain name, an equivalent domain name
+      containing no ACE labels can be obtained by applying the ToUnicode
+      operation (see section 4) to each label.  When requirements 2 and
+      3 both apply, requirement 2 takes precedence.
+
+   4) Whenever two labels are compared, they MUST be considered to match
+      if and only if they are equivalent, that is, their ASCII forms
+      (obtained by applying ToASCII) match using a case-insensitive
+      ASCII comparison.  Whenever two names are compared, they MUST be
+      considered to match if and only if their corresponding labels
+      match, regardless of whether the names use the same forms of label
+      separators.
+
+3.2 Applicability
+
+   IDNA is applicable to all domain names in all domain name slots
+   except where it is explicitly excluded.
+
+   This implies that IDNA is applicable to many protocols that predate
+   IDNA.  Note that IDNs occupying domain name slots in those protocols
+   MUST be in ASCII form (see section 3.1, requirement 2).
+
+3.2.1. DNS resource records
+
+   IDNA does not apply to domain names in the NAME and RDATA fields of
+   DNS resource records whose CLASS is not IN.  This exclusion applies
+   to every non-IN class, present and future, except where future
+   standards override this exclusion by explicitly inviting the use of
+   IDNA.
+
+   There are currently no other exclusions on the applicability of IDNA
+   to DNS resource records; it depends entirely on the CLASS, and not on
+   the TYPE.  This will remain true, even as new types are defined,
+   unless there is a compelling reason for a new type to complicate
+   matters by imposing type-specific rules.
+
+
+
+
+
+Faltstrom, et al.           Standards Track                     [Page 8]
+
+RFC 3490                          IDNA                        March 2003
+
+
+3.2.2. Non-domain-name data types stored in domain names
+
+   Although IDNA enables the representation of non-ASCII characters in
+   domain names, that does not imply that IDNA enables the
+   representation of non-ASCII characters in other data types that are
+   stored in domain names.  For example, an email address local part is
+   sometimes stored in a domain label (hostmaster at example.com would be
+   represented as hostmaster.example.com in the RDATA field of an SOA
+   record).  IDNA does not update the existing email standards, which
+   allow only ASCII characters in local parts.  Therefore, unless the
+   email standards are revised to invite the use of IDNA for local
+   parts, a domain label that holds the local part of an email address
+   SHOULD NOT begin with the ACE prefix, and even if it does, it is to
+   be interpreted literally as a local part that happens to begin with
+   the ACE prefix.
+
+4. Conversion operations
+
+   An application converts a domain name put into an IDN-unaware slot or
+   displayed to a user.  This section specifies the steps to perform in
+   the conversion, and the ToASCII and ToUnicode operations.
+
+   The input to ToASCII or ToUnicode is a single label that is a
+   sequence of Unicode code points (remember that all ASCII code points
+   are also Unicode code points).  If a domain name is represented using
+   a character set other than Unicode or US-ASCII, it will first need to
+   be transcoded to Unicode.
+
+   Starting from a whole domain name, the steps that an application
+   takes to do the conversions are:
+
+   1) Decide whether the domain name is a "stored string" or a "query
+      string" as described in [STRINGPREP].  If this conversion follows
+      the "queries" rule from [STRINGPREP], set the flag called
+      "AllowUnassigned".
+
+   2) Split the domain name into individual labels as described in
+      section 3.1.  The labels do not include the separator.
+
+   3) For each label, decide whether or not to enforce the restrictions
+      on ASCII characters in host names [STD3].  (Applications already
+      faced this choice before the introduction of IDNA, and can
+      continue to make the decision the same way they always have; IDNA
+      makes no new recommendations regarding this choice.)  If the
+      restrictions are to be enforced, set the flag called
+      "UseSTD3ASCIIRules" for that label.
+
+
+
+
+
+Faltstrom, et al.           Standards Track                     [Page 9]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   4) Process each label with either the ToASCII or the ToUnicode
+      operation as appropriate.  Typically, you use the ToASCII
+      operation if you are about to put the name into an IDN-unaware
+      slot, and you use the ToUnicode operation if you are displaying
+      the name to a user; section 3.1 gives greater detail on the
+      applicable requirements.
+
+   5) If ToASCII was applied in step 4 and dots are used as label
+      separators, change all the label separators to U+002E (full stop).
+
+   The following two subsections define the ToASCII and ToUnicode
+   operations that are used in step 4.
+
+   This description of the protocol uses specific procedure names, names
+   of flags, and so on, in order to facilitate the specification of the
+   protocol.  These names, as well as the actual steps of the
+   procedures, are not required of an implementation.  In fact, any
+   implementation which has the same external behavior as specified in
+   this document conforms to this specification.
+
+4.1 ToASCII
+
+   The ToASCII operation takes a sequence of Unicode code points that
+   make up one label and transforms it into a sequence of code points in
+   the ASCII range (0..7F).  If ToASCII succeeds, the original sequence
+   and the resulting sequence are equivalent labels.
+
+   It is important to note that the ToASCII operation can fail.  ToASCII
+   fails if any step of it fails.  If any step of the ToASCII operation
+   fails on any label in a domain name, that domain name MUST NOT be
+   used as an internationalized domain name.  The method for dealing
+   with this failure is application-specific.
+
+   The inputs to ToASCII are a sequence of code points, the
+   AllowUnassigned flag, and the UseSTD3ASCIIRules flag.  The output of
+   ToASCII is either a sequence of ASCII code points or a failure
+   condition.
+
+   ToASCII never alters a sequence of code points that are all in the
+   ASCII range to begin with (although it could fail).  Applying the
+   ToASCII operation multiple times has exactly the same effect as
+   applying it just once.
+
+   ToASCII consists of the following steps:
+
+   1. If the sequence contains any code points outside the ASCII range
+      (0..7F) then proceed to step 2, otherwise skip to step 3.
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 10]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   2. Perform the steps specified in [NAMEPREP] and fail if there is an
+      error.  The AllowUnassigned flag is used in [NAMEPREP].
+
+   3. If the UseSTD3ASCIIRules flag is set, then perform these checks:
+
+     (a) Verify the absence of non-LDH ASCII code points; that is, the
+         absence of 0..2C, 2E..2F, 3A..40, 5B..60, and 7B..7F.
+
+     (b) Verify the absence of leading and trailing hyphen-minus; that
+         is, the absence of U+002D at the beginning and end of the
+         sequence.
+
+   4. If the sequence contains any code points outside the ASCII range
+      (0..7F) then proceed to step 5, otherwise skip to step 8.
+
+   5. Verify that the sequence does NOT begin with the ACE prefix.
+
+   6. Encode the sequence using the encoding algorithm in [PUNYCODE] and
+      fail if there is an error.
+
+   7. Prepend the ACE prefix.
+
+   8. Verify that the number of code points is in the range 1 to 63
+      inclusive.
+
+4.2 ToUnicode
+
+   The ToUnicode operation takes a sequence of Unicode code points that
+   make up one label and returns a sequence of Unicode code points.  If
+   the input sequence is a label in ACE form, then the result is an
+   equivalent internationalized label that is not in ACE form, otherwise
+   the original sequence is returned unaltered.
+
+   ToUnicode never fails.  If any step fails, then the original input
+   sequence is returned immediately in that step.
+
+   The ToUnicode output never contains more code points than its input.
+   Note that the number of octets needed to represent a sequence of code
+   points depends on the particular character encoding used.
+
+   The inputs to ToUnicode are a sequence of code points, the
+   AllowUnassigned flag, and the UseSTD3ASCIIRules flag.  The output of
+   ToUnicode is always a sequence of Unicode code points.
+
+   1. If all code points in the sequence are in the ASCII range (0..7F)
+      then skip to step 3.
+
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 11]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   2. Perform the steps specified in [NAMEPREP] and fail if there is an
+      error.  (If step 3 of ToASCII is also performed here, it will not
+      affect the overall behavior of ToUnicode, but it is not
+      necessary.)  The AllowUnassigned flag is used in [NAMEPREP].
+
+   3. Verify that the sequence begins with the ACE prefix, and save a
+      copy of the sequence.
+
+   4. Remove the ACE prefix.
+
+   5. Decode the sequence using the decoding algorithm in [PUNYCODE] and
+      fail if there is an error.  Save a copy of the result of this
+      step.
+
+   6. Apply ToASCII.
+
+   7. Verify that the result of step 6 matches the saved copy from step
+      3, using a case-insensitive ASCII comparison.
+
+   8. Return the saved copy from step 5.
+
+5. ACE prefix
+
+   The ACE prefix, used in the conversion operations (section 4), is two
+   alphanumeric ASCII characters followed by two hyphen-minuses.  It
+   cannot be any of the prefixes already used in earlier documents,
+   which includes the following: "bl--", "bq--", "dq--", "lq--", "mq--",
+   "ra--", "wq--" and "zq--".  The ToASCII and ToUnicode operations MUST
+   recognize the ACE prefix in a case-insensitive manner.
+
+   The ACE prefix for IDNA is "xn--" or any capitalization thereof.
+
+   This means that an ACE label might be "xn--de-jg4avhby1noc0d", where
+   "de-jg4avhby1noc0d" is the part of the ACE label that is generated by
+   the encoding steps in [PUNYCODE].
+
+   While all ACE labels begin with the ACE prefix, not all labels
+   beginning with the ACE prefix are necessarily ACE labels.  Non-ACE
+   labels that begin with the ACE prefix will confuse users and SHOULD
+   NOT be allowed in DNS zones.
+
+
+
+
+
+
+
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 12]
+
+RFC 3490                          IDNA                        March 2003
+
+
+6. Implications for typical applications using DNS
+
+   In IDNA, applications perform the processing needed to input
+   internationalized domain names from users, display internationalized
+   domain names to users, and process the inputs and outputs from DNS
+   and other protocols that carry domain names.
+
+   The components and interfaces between them can be represented
+   pictorially as:
+
+                    +------+
+                    | User |
+                    +------+
+                       ^
+                       | Input and display: local interface methods
+                       | (pen, keyboard, glowing phosphorus, ...)
+   +-------------------|-------------------------------+
+   |                   v                               |
+   |          +-----------------------------+          |
+   |          |        Application          |          |
+   |          |   (ToASCII and ToUnicode    |          |
+   |          |      operations may be      |          |
+   |          |        called here)         |          |
+   |          +-----------------------------+          |
+   |                   ^        ^                      | End system
+   |                   |        |                      |
+   | Call to resolver: |        | Application-specific |
+   |              ACE  |        | protocol:            |
+   |                   v        | ACE unless the       |
+   |           +----------+     | protocol is updated  |
+   |           | Resolver |     | to handle other      |
+   |           +----------+     | encodings            |
+   |                 ^          |                      |
+   +-----------------|----------|----------------------+
+       DNS protocol: |          |
+                 ACE |          |
+                     v          v
+          +-------------+    +---------------------+
+          | DNS servers |    | Application servers |
+          +-------------+    +---------------------+
+
+   The box labeled "Application" is where the application splits a
+   domain name into labels, sets the appropriate flags, and performs the
+   ToASCII and ToUnicode operations.  This is described in section 4.
+
+
+
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 13]
+
+RFC 3490                          IDNA                        March 2003
+
+
+6.1 Entry and display in applications
+
+   Applications can accept domain names using any character set or sets
+   desired by the application developer, and can display domain names in
+   any charset.  That is, the IDNA protocol does not affect the
+   interface between users and applications.
+
+   An IDNA-aware application can accept and display internationalized
+   domain names in two formats: the internationalized character set(s)
+   supported by the application, and as an ACE label.  ACE labels that
+   are displayed or input MUST always include the ACE prefix.
+   Applications MAY allow input and display of ACE labels, but are not
+   encouraged to do so except as an interface for special purposes,
+   possibly for debugging, or to cope with display limitations as
+   described in section 6.4..  ACE encoding is opaque and ugly, and
+   should thus only be exposed to users who absolutely need it.  Because
+   name labels encoded as ACE name labels can be rendered either as the
+   encoded ASCII characters or the proper decoded characters, the
+   application MAY have an option for the user to select the preferred
+   method of display; if it does, rendering the ACE SHOULD NOT be the
+   default.
+
+   Domain names are often stored and transported in many places.  For
+   example, they are part of documents such as mail messages and web
+   pages.  They are transported in many parts of many protocols, such as
+   both the control commands and the RFC 2822 body parts of SMTP, and
+   the headers and the body content in HTTP.  It is important to
+   remember that domain names appear both in domain name slots and in
+   the content that is passed over protocols.
+
+   In protocols and document formats that define how to handle
+   specification or negotiation of charsets, labels can be encoded in
+   any charset allowed by the protocol or document format.  If a
+   protocol or document format only allows one charset, the labels MUST
+   be given in that charset.
+
+   In any place where a protocol or document format allows transmission
+   of the characters in internationalized labels, internationalized
+   labels SHOULD be transmitted using whatever character encoding and
+   escape mechanism that the protocol or document format uses at that
+   place.
+
+   All protocols that use domain name slots already have the capacity
+   for handling domain names in the ASCII charset.  Thus, ACE labels
+   (internationalized labels that have been processed with the ToASCII
+   operation) can inherently be handled by those protocols.
+
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 14]
+
+RFC 3490                          IDNA                        March 2003
+
+
+6.2 Applications and resolver libraries
+
+   Applications normally use functions in the operating system when they
+   resolve DNS queries.  Those functions in the operating system are
+   often called "the resolver library", and the applications communicate
+   with the resolver libraries through a programming interface (API).
+
+   Because these resolver libraries today expect only domain names in
+   ASCII, applications MUST prepare labels that are passed to the
+   resolver library using the ToASCII operation.  Labels received from
+   the resolver library contain only ASCII characters; internationalized
+   labels that cannot be represented directly in ASCII use the ACE form.
+   ACE labels always include the ACE prefix.
+
+   An operating system might have a set of libraries for performing the
+   ToASCII operation.  The input to such a library might be in one or
+   more charsets that are used in applications (UTF-8 and UTF-16 are
+   likely candidates for almost any operating system, and script-
+   specific charsets are likely for localized operating systems).
+
+   IDNA-aware applications MUST be able to work with both non-
+   internationalized labels (those that conform to [STD13] and [STD3])
+   and internationalized labels.
+
+   It is expected that new versions of the resolver libraries in the
+   future will be able to accept domain names in other charsets than
+   ASCII, and application developers might one day pass not only domain
+   names in Unicode, but also in local script to a new API for the
+   resolver libraries in the operating system.  Thus the ToASCII and
+   ToUnicode operations might be performed inside these new versions of
+   the resolver libraries.
+
+   Domain names passed to resolvers or put into the question section of
+   DNS requests follow the rules for "queries" from [STRINGPREP].
+
+6.3 DNS servers
+
+   Domain names stored in zones follow the rules for "stored strings"
+   from [STRINGPREP].
+
+   For internationalized labels that cannot be represented directly in
+   ASCII, DNS servers MUST use the ACE form produced by the ToASCII
+   operation.  All IDNs served by DNS servers MUST contain only ASCII
+   characters.
+
+   If a signaling system which makes negotiation possible between old
+   and new DNS clients and servers is standardized in the future, the
+   encoding of the query in the DNS protocol itself can be changed from
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 15]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   ACE to something else, such as UTF-8.  The question whether or not
+   this should be used is, however, a separate problem and is not
+   discussed in this memo.
+
+6.4 Avoiding exposing users to the raw ACE encoding
+
+   Any application that might show the user a domain name obtained from
+   a domain name slot, such as from gethostbyaddr or part of a mail
+   header, will need to be updated if it is to prevent users from seeing
+   the ACE.
+
+   If an application decodes an ACE name using ToUnicode but cannot show
+   all of the characters in the decoded name, such as if the name
+   contains characters that the output system cannot display, the
+   application SHOULD show the name in ACE format (which always includes
+   the ACE prefix) instead of displaying the name with the replacement
+   character (U+FFFD).  This is to make it easier for the user to
+   transfer the name correctly to other programs.  Programs that by
+   default show the ACE form when they cannot show all the characters in
+   a name label SHOULD also have a mechanism to show the name that is
+   produced by the ToUnicode operation with as many characters as
+   possible and replacement characters in the positions where characters
+   cannot be displayed.
+
+   The ToUnicode operation does not alter labels that are not valid ACE
+   labels, even if they begin with the ACE prefix.  After ToUnicode has
+   been applied, if a label still begins with the ACE prefix, then it is
+   not a valid ACE label, and is not equivalent to any of the
+   intermediate Unicode strings constructed by ToUnicode.
+
+6.5  DNSSEC authentication of IDN domain names
+
+   DNS Security [RFC2535] is a method for supplying cryptographic
+   verification information along with DNS messages.  Public Key
+   Cryptography is used in conjunction with digital signatures to
+   provide a means for a requester of domain information to authenticate
+   the source of the data.  This ensures that it can be traced back to a
+   trusted source, either directly, or via a chain of trust linking the
+   source of the information to the top of the DNS hierarchy.
+
+   IDNA specifies that all internationalized domain names served by DNS
+   servers that cannot be represented directly in ASCII must use the ACE
+   form produced by the ToASCII operation.  This operation must be
+   performed prior to a zone being signed by the private key for that
+   zone.  Because of this ordering, it is important to recognize that
+   DNSSEC authenticates the ASCII domain name, not the Unicode form or
+
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 16]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   the mapping between the Unicode form and the ASCII form.  In the
+   presence of DNSSEC, this is the name that MUST be signed in the zone
+   and MUST be validated against.
+
+   One consequence of this for sites deploying IDNA in the presence of
+   DNSSEC is that any special purpose proxies or forwarders used to
+   transform user input into IDNs must be earlier in the resolution flow
+   than DNSSEC authenticating nameservers for DNSSEC to work.
+
+7. Name server considerations
+
+   Existing DNS servers do not know the IDNA rules for handling non-
+   ASCII forms of IDNs, and therefore need to be shielded from them.
+   All existing channels through which names can enter a DNS server
+   database (for example, master files [STD13] and DNS update messages
+   [RFC2136]) are IDN-unaware because they predate IDNA, and therefore
+   requirement 2 of section 3.1 of this document provides the needed
+   shielding, by ensuring that internationalized domain names entering
+   DNS server databases through such channels have already been
+   converted to their equivalent ASCII forms.
+
+   It is imperative that there be only one ASCII encoding for a
+   particular domain name.  Because of the design of the ToASCII and
+   ToUnicode operations, there are no ACE labels that decode to ASCII
+   labels, and therefore name servers cannot contain multiple ASCII
+   encodings of the same domain name.
+
+   [RFC2181] explicitly allows domain labels to contain octets beyond
+   the ASCII range (0..7F), and this document does not change that.
+   Note, however, that there is no defined interpretation of octets
+   80..FF as characters.  If labels containing these octets are returned
+   to applications, unpredictable behavior could result.  The ASCII form
+   defined by ToASCII is the only standard representation for
+   internationalized labels in the current DNS protocol.
+
+8. Root server considerations
+
+   IDNs are likely to be somewhat longer than current domain names, so
+   the bandwidth needed by the root servers is likely to go up by a
+   small amount.  Also, queries and responses for IDNs will probably be
+   somewhat longer than typical queries today, so more queries and
+   responses may be forced to go to TCP instead of UDP.
+
+
+
+
+
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 17]
+
+RFC 3490                          IDNA                        March 2003
+
+
+9. References
+
+9.1 Normative References
+
+   [RFC2119]    Bradner, S., "Key words for use in RFCs to Indicate
+                Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [STRINGPREP] Hoffman, P. and M. Blanchet, "Preparation of
+                Internationalized Strings ("stringprep")", RFC 3454,
+                December 2002.
+
+   [NAMEPREP]   Hoffman, P. and M. Blanchet, "Nameprep: A Stringprep
+                Profile for Internationalized Domain Names (IDN)", RFC
+                3491, March 2003.
+
+   [PUNYCODE]   Costello, A., "Punycode: A Bootstring encoding of
+                Unicode for use with Internationalized Domain Names in
+                Applications (IDNA)", RFC 3492, March 2003.
+
+   [STD3]       Braden, R., "Requirements for Internet Hosts --
+                Communication Layers", STD 3, RFC 1122, and
+                "Requirements for Internet Hosts -- Application and
+                Support", STD 3, RFC 1123, October 1989.
+
+   [STD13]      Mockapetris, P., "Domain names - concepts and
+                facilities", STD 13, RFC 1034 and "Domain names -
+                implementation and specification", STD 13, RFC 1035,
+                November 1987.
+
+9.2 Informative References
+
+   [RFC2535]    Eastlake, D., "Domain Name System Security Extensions",
+                RFC 2535, March 1999.
+
+   [RFC2181]    Elz, R. and R. Bush, "Clarifications to the DNS
+                Specification", RFC 2181, July 1997.
+
+   [UAX9]       Unicode Standard Annex #9, The Bidirectional Algorithm,
+                <http://www.unicode.org/unicode/reports/tr9/>.
+
+   [UNICODE]    The Unicode Consortium. The Unicode Standard, Version
+                3.2.0 is defined by The Unicode Standard, Version 3.0
+                (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
+                as amended by the Unicode Standard Annex #27: Unicode
+                3.1 (http://www.unicode.org/reports/tr27/) and by the
+                Unicode Standard Annex #28: Unicode 3.2
+                (http://www.unicode.org/reports/tr28/).
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 18]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   [USASCII]    Cerf, V., "ASCII format for Network Interchange", RFC
+                20, October 1969.
+
+10. Security Considerations
+
+   Security on the Internet partly relies on the DNS.  Thus, any change
+   to the characteristics of the DNS can change the security of much of
+   the Internet.
+
+   This memo describes an algorithm which encodes characters that are
+   not valid according to STD3 and STD13 into octet values that are
+   valid.  No security issues such as string length increases or new
+   allowed values are introduced by the encoding process or the use of
+   these encoded values, apart from those introduced by the ACE encoding
+   itself.
+
+   Domain names are used by users to identify and connect to Internet
+   servers.  The security of the Internet is compromised if a user
+   entering a single internationalized name is connected to different
+   servers based on different interpretations of the internationalized
+   domain name.
+
+   When systems use local character sets other than ASCII and Unicode,
+   this specification leaves the the problem of transcoding between the
+   local character set and Unicode up to the application.  If different
+   applications (or different versions of one application) implement
+   different transcoding rules, they could interpret the same name
+   differently and contact different servers.  This problem is not
+   solved by security protocols like TLS that do not take local
+   character sets into account.
+
+   Because this document normatively refers to [NAMEPREP], [PUNYCODE],
+   and [STRINGPREP], it includes the security considerations from those
+   documents as well.
+
+   If or when this specification is updated to use a more recent Unicode
+   normalization table, the new normalization table will need to be
+   compared with the old to spot backwards incompatible changes.  If
+   there are such changes, they will need to be handled somehow, or
+   there will be security as well as operational implications.  Methods
+   to handle the conflicts could include keeping the old normalization,
+   or taking care of the conflicting characters by operational means, or
+   some other method.
+
+   Implementations MUST NOT use more recent normalization tables than
+   the one referenced from this document, even though more recent tables
+   may be provided by operating systems.  If an application is unsure of
+   which version of the normalization tables are in the operating
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 19]
+
+RFC 3490                          IDNA                        March 2003
+
+
+   system, the application needs to include the normalization tables
+   itself.  Using normalization tables other than the one referenced
+   from this specification could have security and operational
+   implications.
+
+   To help prevent confusion between characters that are visually
+   similar, it is suggested that implementations provide visual
+   indications where a domain name contains multiple scripts.  Such
+   mechanisms can also be used to show when a name contains a mixture of
+   simplified and traditional Chinese characters, or to distinguish zero
+   and one from O and l.  DNS zone adminstrators may impose restrictions
+   (subject to the limitations in section 2) that try to minimize
+   homographs.
+
+   Domain names (or portions of them) are sometimes compared against a
+   set of privileged or anti-privileged domains.  In such situations it
+   is especially important that the comparisons be done properly, as
+   specified in section 3.1 requirement 4.  For labels already in ASCII
+   form, the proper comparison reduces to the same case-insensitive
+   ASCII comparison that has always been used for ASCII labels.
+
+   The introduction of IDNA means that any existing labels that start
+   with the ACE prefix and would be altered by ToUnicode will
+   automatically be ACE labels, and will be considered equivalent to
+   non-ASCII labels, whether or not that was the intent of the zone
+   adminstrator or registrant.
+
+11. IANA Considerations
+
+   IANA has assigned the ACE prefix in consultation with the IESG.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 20]
+
+RFC 3490                          IDNA                        March 2003
+
+
+12. Authors' Addresses
+
+   Patrik Faltstrom
+   Cisco Systems
+   Arstaangsvagen 31 J
+   S-117 43 Stockholm  Sweden
+
+   EMail: paf at cisco.com
+
+
+   Paul Hoffman
+   Internet Mail Consortium and VPN Consortium
+   127 Segre Place
+   Santa Cruz, CA  95060  USA
+
+   EMail: phoffman at imc.org
+
+
+   Adam M. Costello
+   University of California, Berkeley
+
+   URL: http://www.nicemice.net/amc/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 21]
+
+RFC 3490                          IDNA                        March 2003
+
+
+13. Full Copyright Statement
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Faltstrom, et al.           Standards Track                    [Page 22]
+

Copied: branches/samba/experimental/source4/heimdal/lib/wind/rfc3491.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/heimdal/lib/wind/rfc3491.txt)
===================================================================
--- branches/samba/experimental/source4/heimdal/lib/wind/rfc3491.txt	                        (rev 0)
+++ branches/samba/experimental/source4/heimdal/lib/wind/rfc3491.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,395 @@
+
+
+
+
+
+
+Network Working Group                                         P. Hoffman
+Request for Comments: 3491                                    IMC & VPNC
+Category: Standards Track                                    M. Blanchet
+                                                                Viagenie
+                                                              March 2003
+
+
+                   Nameprep: A Stringprep Profile for
+                  Internationalized Domain Names (IDN)
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+Abstract
+
+   This document describes how to prepare internationalized domain name
+   (IDN) labels in order to increase the likelihood that name input and
+   name comparison work in ways that make sense for typical users
+   throughout the world.  This profile of the stringprep protocol is
+   used as part of a suite of on-the-wire protocols for
+   internationalizing the Domain Name System (DNS).
+
+1. Introduction
+
+   This document specifies processing rules that will allow users to
+   enter internationalized domain names (IDNs) into applications and
+   have the highest chance of getting the content of the strings
+   correct.  It is a profile of stringprep [STRINGPREP].  These
+   processing rules are only intended for internationalized domain
+   names, not for arbitrary text.
+
+   This profile defines the following, as required by [STRINGPREP].
+
+   -  The intended applicability of the profile: internationalized
+      domain names processed by IDNA.
+
+   -  The character repertoire that is the input and output to
+      stringprep:  Unicode 3.2, specified in section 2.
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 1]
+
+RFC 3491                      IDN Nameprep                    March 2003
+
+
+   -  The mappings used: specified in section 3.
+
+   -  The Unicode normalization used: specified in section 4.
+
+   -  The characters that are prohibited as output: specified in section
+      5.
+
+   -  Bidirectional character handling: specified in section 6.
+
+1.1 Interaction of protocol parts
+
+   Nameprep is used by the IDNA [IDNA] protocol for preparing domain
+   names; it is not designed for any other purpose.  It is explicitly
+   not designed for processing arbitrary free text and SHOULD NOT be
+   used for that purpose.  Nameprep is a profile of Stringprep
+   [STRINGPREP].  Implementations of Nameprep MUST fully implement
+   Stringprep.
+
+   Nameprep is used to process domain name labels, not domain names.
+   IDNA calls nameprep for each label in a domain name, not for the
+   whole domain name.
+
+1.2 Terminology
+
+   The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
+   in this document are to be interpreted as described in BCP 14, RFC
+   2119 [RFC2119].
+
+2. Character Repertoire
+
+   This profile uses Unicode 3.2, as defined in [STRINGPREP] Appendix A.
+
+3. Mapping
+
+   This profile specifies mapping using the following tables from
+   [STRINGPREP]:
+
+   Table B.1
+   Table B.2
+
+4. Normalization
+
+   This profile specifies using Unicode normalization form KC, as
+   described in [STRINGPREP].
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 2]
+
+RFC 3491                      IDN Nameprep                    March 2003
+
+
+5. Prohibited Output
+
+   This profile specifies prohibiting using the following tables from
+   [STRINGPREP]:
+
+   Table C.1.2
+   Table C.2.2
+   Table C.3
+   Table C.4
+   Table C.5
+   Table C.6
+   Table C.7
+   Table C.8
+   Table C.9
+
+   IMPORTANT NOTE: This profile MUST be used with the IDNA protocol.
+   The IDNA protocol has additional prohibitions that are checked
+   outside of this profile.
+
+6. Bidirectional characters
+
+   This profile specifies checking bidirectional strings as described in
+   [STRINGPREP] section 6.
+
+7. Unassigned Code Points in Internationalized Domain Names
+
+   If the processing in [IDNA] specifies that a list of unassigned code
+   points be used, the system uses table A.1 from [STRINGPREP] as its
+   list of unassigned code points.
+
+8. References
+
+8.1 Normative References
+
+   [RFC2119]    Bradner, S., "Key words for use in RFCs to Indicate
+                Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [STRINGPREP] Hoffman, P. and M. Blanchet, "Preparation of
+                Internationalized Strings ("stringprep")", RFC 3454,
+                December 2002.
+
+   [IDNA]       Faltstrom, P., Hoffman, P. and A. Costello,
+                "Internationalizing Domain Names in Applications
+                (IDNA)", RFC 3490, March 2003.
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 3]
+
+RFC 3491                      IDN Nameprep                    March 2003
+
+
+8.2 Informative references
+
+   [STD13]      Mockapetris, P., "Domain names - concepts and
+                facilities", STD 13, RFC 1034, and "Domain names -
+                implementation and specification", STD 13, RFC 1035,
+                November 1987.
+
+9. Security Considerations
+
+   The Unicode and ISO/IEC 10646 repertoires have many characters that
+   look similar.  In many cases, users of security protocols might do
+   visual matching, such as when comparing the names of trusted third
+   parties.  Because it is impossible to map similar-looking characters
+   without a great deal of context such as knowing the fonts used,
+   stringprep does nothing to map similar-looking characters together
+   nor to prohibit some characters because they look like others.
+
+   Security on the Internet partly relies on the DNS.  Thus, any change
+   to the characteristics of the DNS can change the security of much of
+   the Internet.
+
+   Domain names are used by users to connect to Internet servers.  The
+   security of the Internet would be compromised if a user entering a
+   single internationalized name could be connected to different servers
+   based on different interpretations of the internationalized domain
+   name.
+
+   Current applications might assume that the characters allowed in
+   domain names will always be the same as they are in [STD13].  This
+   document vastly increases the number of characters available in
+   domain names.  Every program that uses "special" characters in
+   conjunction with domain names may be vulnerable to attack based on
+   the new characters allowed by this specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 4]
+
+RFC 3491                      IDN Nameprep                    March 2003
+
+
+10. IANA Considerations
+
+   This is a profile of stringprep.  It has been registered by the IANA
+   in the stringprep profile registry
+   (www.iana.org/assignments/stringprep-profiles).
+
+      Name of this profile:
+         Nameprep
+
+      RFC in which the profile is defined:
+         This document.
+
+      Indicator whether or not this is the newest version of the
+      profile:
+         This is the first version of Nameprep.
+
+11. Acknowledgements
+
+   Many people from the IETF IDN Working Group and the Unicode Technical
+   Committee contributed ideas that went into this document.
+
+   The IDN Nameprep design team made many useful changes to the
+   document.  That team and its advisors include:
+
+      Asmus Freytag
+      Cathy Wissink
+      Francois Yergeau
+      James Seng
+      Marc Blanchet
+      Mark Davis
+      Martin Duerst
+      Patrik Faltstrom
+      Paul Hoffman
+
+   Additional significant improvements were proposed by:
+
+      Jonathan Rosenne
+      Kent Karlsson
+      Scott Hollenbeck
+      Dave Crocker
+      Erik Nordmark
+      Matitiahu Allouche
+
+
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 5]
+
+RFC 3491                      IDN Nameprep                    March 2003
+
+
+12. Authors' Addresses
+
+   Paul Hoffman
+   Internet Mail Consortium and VPN Consortium
+   127 Segre Place
+   Santa Cruz, CA  95060 USA
+
+   EMail: paul.hoffman at imc.org and paul.hoffman at vpnc.org
+
+
+   Marc Blanchet
+   Viagenie inc.
+   2875 boul. Laurier, bur. 300
+   Ste-Foy, Quebec, Canada, G1V 2M2
+
+   EMail: Marc.Blanchet at viagenie.qc.ca
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 6]
+
+RFC 3491                      IDN Nameprep                    March 2003
+
+
+13.  Full Copyright Statement
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman & Blanchet          Standards Track                     [Page 7]
+

Copied: branches/samba/experimental/source4/heimdal/lib/wind/rfc3492.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/heimdal/lib/wind/rfc3492.txt)
===================================================================
--- branches/samba/experimental/source4/heimdal/lib/wind/rfc3492.txt	                        (rev 0)
+++ branches/samba/experimental/source4/heimdal/lib/wind/rfc3492.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,1963 @@
+
+
+
+
+
+
+Network Working Group                                        A. Costello
+Request for Comments: 3492                 Univ. of California, Berkeley
+Category: Standards Track                                     March 2003
+
+
+              Punycode: A Bootstring encoding of Unicode
+       for Internationalized Domain Names in Applications (IDNA)
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+Abstract
+
+   Punycode is a simple and efficient transfer encoding syntax designed
+   for use with Internationalized Domain Names in Applications (IDNA).
+   It uniquely and reversibly transforms a Unicode string into an ASCII
+   string.  ASCII characters in the Unicode string are represented
+   literally, and non-ASCII characters are represented by ASCII
+   characters that are allowed in host name labels (letters, digits, and
+   hyphens).  This document defines a general algorithm called
+   Bootstring that allows a string of basic code points to uniquely
+   represent any string of code points drawn from a larger set.
+   Punycode is an instance of Bootstring that uses particular parameter
+   values specified by this document, appropriate for IDNA.
+
+Table of Contents
+
+   1. Introduction...............................................2
+       1.1 Features..............................................2
+       1.2 Interaction of protocol parts.........................3
+   2. Terminology................................................3
+   3. Bootstring description.....................................4
+       3.1 Basic code point segregation..........................4
+       3.2 Insertion unsort coding...............................4
+       3.3 Generalized variable-length integers..................5
+       3.4 Bias adaptation.......................................7
+   4. Bootstring parameters......................................8
+   5. Parameter values for Punycode..............................8
+   6. Bootstring algorithms......................................9
+
+
+
+Costello                    Standards Track                     [Page 1]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+       6.1 Bias adaptation function.............................10
+       6.2 Decoding procedure...................................11
+       6.3 Encoding procedure...................................12
+       6.4 Overflow handling....................................13
+   7. Punycode examples.........................................14
+       7.1 Sample strings.......................................14
+       7.2 Decoding traces......................................17
+       7.3 Encoding traces......................................19
+   8. Security Considerations...................................20
+   9. References................................................21
+       9.1 Normative References.................................21
+       9.2 Informative References...............................21
+   A. Mixed-case annotation.....................................22
+   B. Disclaimer and license....................................22
+   C. Punycode sample implementation............................23
+   Author's Address.............................................34
+   Full Copyright Statement.....................................35
+
+1. Introduction
+
+   [IDNA] describes an architecture for supporting internationalized
+   domain names.  Labels containing non-ASCII characters can be
+   represented by ACE labels, which begin with a special ACE prefix and
+   contain only ASCII characters.  The remainder of the label after the
+   prefix is a Punycode encoding of a Unicode string satisfying certain
+   constraints.  For the details of the prefix and constraints, see
+   [IDNA] and [NAMEPREP].
+
+   Punycode is an instance of a more general algorithm called
+   Bootstring, which allows strings composed from a small set of "basic"
+   code points to uniquely represent any string of code points drawn
+   from a larger set.  Punycode is Bootstring with particular parameter
+   values appropriate for IDNA.
+
+1.1 Features
+
+   Bootstring has been designed to have the following features:
+
+   *  Completeness:  Every extended string (sequence of arbitrary code
+      points) can be represented by a basic string (sequence of basic
+      code points).  Restrictions on what strings are allowed, and on
+      length, can be imposed by higher layers.
+
+   *  Uniqueness:  There is at most one basic string that represents a
+      given extended string.
+
+   *  Reversibility:  Any extended string mapped to a basic string can
+      be recovered from that basic string.
+
+
+
+Costello                    Standards Track                     [Page 2]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   *  Efficient encoding:  The ratio of basic string length to extended
+      string length is small.  This is important in the context of
+      domain names because RFC 1034 [RFC1034] restricts the length of a
+      domain label to 63 characters.
+
+   *  Simplicity:  The encoding and decoding algorithms are reasonably
+      simple to implement.  The goals of efficiency and simplicity are
+      at odds; Bootstring aims at a good balance between them.
+
+   *  Readability:  Basic code points appearing in the extended string
+      are represented as themselves in the basic string (although the
+      main purpose is to improve efficiency, not readability).
+
+   Punycode can also support an additional feature that is not used by
+   the ToASCII and ToUnicode operations of [IDNA].  When extended
+   strings are case-folded prior to encoding, the basic string can use
+   mixed case to tell how to convert the folded string into a mixed-case
+   string.  See appendix A "Mixed-case annotation".
+
+1.2 Interaction of protocol parts
+
+   Punycode is used by the IDNA protocol [IDNA] for converting domain
+   labels into ASCII; it is not designed for any other purpose.  It is
+   explicitly not designed for processing arbitrary free text.
+
+2. Terminology
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14, RFC 2119
+   [RFC2119].
+
+   A code point is an integral value associated with a character in a
+   coded character set.
+
+   As in the Unicode Standard [UNICODE], Unicode code points are denoted
+   by "U+" followed by four to six hexadecimal digits, while a range of
+   code points is denoted by two hexadecimal numbers separated by "..",
+   with no prefixes.
+
+   The operators div and mod perform integer division; (x div y) is the
+   quotient of x divided by y, discarding the remainder, and (x mod y)
+   is the remainder, so (x div y) * y + (x mod y) == x.  Bootstring uses
+   these operators only with nonnegative operands, so the quotient and
+   remainder are always nonnegative.
+
+   The break statement jumps out of the innermost loop (as in C).
+
+
+
+
+Costello                    Standards Track                     [Page 3]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   An overflow is an attempt to compute a value that exceeds the maximum
+   value of an integer variable.
+
+3. Bootstring description
+
+   Bootstring represents an arbitrary sequence of code points (the
+   "extended string") as a sequence of basic code points (the "basic
+   string").  This section describes the representation.  Section 6
+   "Bootstring algorithms" presents the algorithms as pseudocode.
+   Sections 7.1 "Decoding traces" and 7.2 "Encoding traces" trace the
+   algorithms for sample inputs.
+
+   The following sections describe the four techniques used in
+   Bootstring.  "Basic code point segregation" is a very simple and
+   efficient encoding for basic code points occurring in the extended
+   string: they are simply copied all at once.  "Insertion unsort
+   coding" encodes the non-basic code points as deltas, and processes
+   the code points in numerical order rather than in order of
+   appearance, which typically results in smaller deltas.  The deltas
+   are represented as "generalized variable-length integers", which use
+   basic code points to represent nonnegative integers.  The parameters
+   of this integer representation are dynamically adjusted using "bias
+   adaptation", to improve efficiency when consecutive deltas have
+   similar magnitudes.
+
+3.1 Basic code point segregation
+
+   All basic code points appearing in the extended string are
+   represented literally at the beginning of the basic string, in their
+   original order, followed by a delimiter if (and only if) the number
+   of basic code points is nonzero.  The delimiter is a particular basic
+   code point, which never appears in the remainder of the basic string.
+   The decoder can therefore find the end of the literal portion (if
+   there is one) by scanning for the last delimiter.
+
+3.2 Insertion unsort coding
+
+   The remainder of the basic string (after the last delimiter if there
+   is one) represents a sequence of nonnegative integral deltas as
+   generalized variable-length integers, described in section 3.3.  The
+   meaning of the deltas is best understood in terms of the decoder.
+
+   The decoder builds the extended string incrementally.  Initially, the
+   extended string is a copy of the literal portion of the basic string
+   (excluding the last delimiter).  The decoder inserts non-basic code
+   points, one for each delta, into the extended string, ultimately
+   arriving at the final decoded string.
+
+
+
+
+Costello                    Standards Track                     [Page 4]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   At the heart of this process is a state machine with two state
+   variables: an index i and a counter n.  The index i refers to a
+   position in the extended string; it ranges from 0 (the first
+   position) to the current length of the extended string (which refers
+   to a potential position beyond the current end).  If the current
+   state is <n,i>, the next state is <n,i+1> if i is less than the
+   length of the extended string, or <n+1,0> if i equals the length of
+   the extended string.  In other words, each state change causes i to
+   increment, wrapping around to zero if necessary, and n counts the
+   number of wrap-arounds.
+
+   Notice that the state always advances monotonically (there is no way
+   for the decoder to return to an earlier state).  At each state, an
+   insertion is either performed or not performed.  At most one
+   insertion is performed in a given state.  An insertion inserts the
+   value of n at position i in the extended string.  The deltas are a
+   run-length encoding of this sequence of events: they are the lengths
+   of the runs of non-insertion states preceeding the insertion states.
+   Hence, for each delta, the decoder performs delta state changes, then
+   an insertion, and then one more state change.  (An implementation
+   need not perform each state change individually, but can instead use
+   division and remainder calculations to compute the next insertion
+   state directly.)  It is an error if the inserted code point is a
+   basic code point (because basic code points were supposed to be
+   segregated as described in section 3.1).
+
+   The encoder's main task is to derive the sequence of deltas that will
+   cause the decoder to construct the desired string.  It can do this by
+   repeatedly scanning the extended string for the next code point that
+   the decoder would need to insert, and counting the number of state
+   changes the decoder would need to perform, mindful of the fact that
+   the decoder's extended string will include only those code points
+   that have already been inserted.  Section 6.3 "Encoding procedure"
+   gives a precise algorithm.
+
+3.3 Generalized variable-length integers
+
+   In a conventional integer representation the base is the number of
+   distinct symbols for digits, whose values are 0 through base-1.  Let
+   digit_0 denote the least significant digit, digit_1 the next least
+   significant, and so on.  The value represented is the sum over j of
+   digit_j * w(j), where w(j) = base^j is the weight (scale factor) for
+   position j.  For example, in the base 8 integer 437, the digits are
+   7, 3, and 4, and the weights are 1, 8, and 64, so the value is 7 +
+   3*8 + 4*64 = 287.  This representation has two disadvantages:  First,
+   there are multiple encodings of each value (because there can be
+   extra zeros in the most significant positions), which is inconvenient
+
+
+
+
+Costello                    Standards Track                     [Page 5]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   when unique encodings are needed.  Second, the integer is not self-
+   delimiting, so if multiple integers are concatenated the boundaries
+   between them are lost.
+
+   The generalized variable-length representation solves these two
+   problems.  The digit values are still 0 through base-1, but now the
+   integer is self-delimiting by means of thresholds t(j), each of which
+   is in the range 0 through base-1.  Exactly one digit, the most
+   significant, satisfies digit_j < t(j).  Therefore, if several
+   integers are concatenated, it is easy to separate them, starting with
+   the first if they are little-endian (least significant digit first),
+   or starting with the last if they are big-endian (most significant
+   digit first).  As before, the value is the sum over j of digit_j *
+   w(j), but the weights are different:
+
+      w(0) = 1
+      w(j) = w(j-1) * (base - t(j-1)) for j > 0
+
+   For example, consider the little-endian sequence of base 8 digits
+   734251...  Suppose the thresholds are 2, 3, 5, 5, 5, 5...  This
+   implies that the weights are 1, 1*(8-2) = 6, 6*(8-3) = 30, 30*(8-5) =
+   90, 90*(8-5) = 270, and so on.  7 is not less than 2, and 3 is not
+   less than 3, but 4 is less than 5, so 4 is the last digit.  The value
+   of 734 is 7*1 + 3*6 + 4*30 = 145.  The next integer is 251, with
+   value 2*1 + 5*6 + 1*30 = 62.  Decoding this representation is very
+   similar to decoding a conventional integer:  Start with a current
+   value of N = 0 and a weight w = 1.  Fetch the next digit d and
+   increase N by d * w.  If d is less than the current threshold (t)
+   then stop, otherwise increase w by a factor of (base - t), update t
+   for the next position, and repeat.
+
+   Encoding this representation is similar to encoding a conventional
+   integer:  If N < t then output one digit for N and stop, otherwise
+   output the digit for t + ((N - t) mod (base - t)), then replace N
+   with (N - t) div (base - t), update t for the next position, and
+   repeat.
+
+   For any particular set of values of t(j), there is exactly one
+   generalized variable-length representation of each nonnegative
+   integral value.
+
+   Bootstring uses little-endian ordering so that the deltas can be
+   separated starting with the first.  The t(j) values are defined in
+   terms of the constants base, tmin, and tmax, and a state variable
+   called bias:
+
+      t(j) = base * (j + 1) - bias,
+      clamped to the range tmin through tmax
+
+
+
+Costello                    Standards Track                     [Page 6]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   The clamping means that if the formula yields a value less than tmin
+   or greater than tmax, then t(j) = tmin or tmax, respectively.  (In
+   the pseudocode in section 6 "Bootstring algorithms", the expression
+   base * (j + 1) is denoted by k for performance reasons.)  These t(j)
+   values cause the representation to favor integers within a particular
+   range determined by the bias.
+
+3.4 Bias adaptation
+
+   After each delta is encoded or decoded, bias is set for the next
+   delta as follows:
+
+   1. Delta is scaled in order to avoid overflow in the next step:
+
+         let delta = delta div 2
+
+      But when this is the very first delta, the divisor is not 2, but
+      instead a constant called damp.  This compensates for the fact
+      that the second delta is usually much smaller than the first.
+
+   2. Delta is increased to compensate for the fact that the next delta
+      will be inserting into a longer string:
+
+         let delta = delta + (delta div numpoints)
+
+      numpoints is the total number of code points encoded/decoded so
+      far (including the one corresponding to this delta itself, and
+      including the basic code points).
+
+   3. Delta is repeatedly divided until it falls within a threshold, to
+      predict the minimum number of digits needed to represent the next
+      delta:
+
+         while delta > ((base - tmin) * tmax) div 2
+         do let delta = delta div (base - tmin)
+
+   4. The bias is set:
+
+         let bias =
+           (base * the number of divisions performed in step 3) +
+           (((base - tmin + 1) * delta) div (delta + skew))
+
+      The motivation for this procedure is that the current delta
+      provides a hint about the likely size of the next delta, and so
+      t(j) is set to tmax for the more significant digits starting with
+      the one expected to be last, tmin for the less significant digits
+      up through the one expected to be third-last, and somewhere
+      between tmin and tmax for the digit expected to be second-last
+
+
+
+Costello                    Standards Track                     [Page 7]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+      (balancing the hope of the expected-last digit being unnecessary
+      against the danger of it being insufficient).
+
+4. Bootstring parameters
+
+   Given a set of basic code points, one needs to be designated as the
+   delimiter.  The base cannot be greater than the number of
+   distinguishable basic code points remaining.  The digit-values in the
+   range 0 through base-1 need to be associated with distinct non-
+   delimiter basic code points.  In some cases multiple code points need
+   to have the same digit-value; for example, uppercase and lowercase
+   versions of the same letter need to be equivalent if basic strings
+   are case-insensitive.
+
+   The initial value of n cannot be greater than the minimum non-basic
+   code point that could appear in extended strings.
+
+   The remaining five parameters (tmin, tmax, skew, damp, and the
+   initial value of bias) need to satisfy the following constraints:
+
+      0 <= tmin <= tmax <= base-1
+      skew >= 1
+      damp >= 2
+      initial_bias mod base <= base - tmin
+
+   Provided the constraints are satisfied, these five parameters affect
+   efficiency but not correctness.  They are best chosen empirically.
+
+   If support for mixed-case annotation is desired (see appendix A),
+   make sure that the code points corresponding to 0 through tmax-1 all
+   have both uppercase and lowercase forms.
+
+5. Parameter values for Punycode
+
+   Punycode uses the following Bootstring parameter values:
+
+      base         = 36
+      tmin         = 1
+      tmax         = 26
+      skew         = 38
+      damp         = 700
+      initial_bias = 72
+      initial_n    = 128 = 0x80
+
+   Although the only restriction Punycode imposes on the input integers
+   is that they be nonnegative, these parameters are especially designed
+   to work well with Unicode [UNICODE] code points, which are integers
+   in the range 0..10FFFF (but not D800..DFFF, which are reserved for
+
+
+
+Costello                    Standards Track                     [Page 8]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   use by the UTF-16 encoding of Unicode).  The basic code points are
+   the ASCII [ASCII] code points (0..7F), of which U+002D (-) is the
+   delimiter, and some of the others have digit-values as follows:
+
+      code points    digit-values
+      ------------   ----------------------
+      41..5A (A-Z) =  0 to 25, respectively
+      61..7A (a-z) =  0 to 25, respectively
+      30..39 (0-9) = 26 to 35, respectively
+
+   Using hyphen-minus as the delimiter implies that the encoded string
+   can end with a hyphen-minus only if the Unicode string consists
+   entirely of basic code points, but IDNA forbids such strings from
+   being encoded.  The encoded string can begin with a hyphen-minus, but
+   IDNA prepends a prefix.  Therefore IDNA using Punycode conforms to
+   the RFC 952 rule that host name labels neither begin nor end with a
+   hyphen-minus [RFC952].
+
+   A decoder MUST recognize the letters in both uppercase and lowercase
+   forms (including mixtures of both forms).  An encoder SHOULD output
+   only uppercase forms or only lowercase forms, unless it uses mixed-
+   case annotation (see appendix A).
+
+   Presumably most users will not manually write or type encoded strings
+   (as opposed to cutting and pasting them), but those who do will need
+   to be alert to the potential visual ambiguity between the following
+   sets of characters:
+
+      G 6
+      I l 1
+      O 0
+      S 5
+      U V
+      Z 2
+
+   Such ambiguities are usually resolved by context, but in a Punycode
+   encoded string there is no context apparent to humans.
+
+6. Bootstring algorithms
+
+   Some parts of the pseudocode can be omitted if the parameters satisfy
+   certain conditions (for which Punycode qualifies).  These parts are
+   enclosed in {braces}, and notes immediately following the pseudocode
+   explain the conditions under which they can be omitted.
+
+
+
+
+
+
+
+Costello                    Standards Track                     [Page 9]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   Formally, code points are integers, and hence the pseudocode assumes
+   that arithmetic operations can be performed directly on code points.
+   In some programming languages, explicit conversion between code
+   points and integers might be necessary.
+
+6.1 Bias adaptation function
+
+   function adapt(delta,numpoints,firsttime):
+     if firsttime then let delta = delta div damp
+     else let delta = delta div 2
+     let delta = delta + (delta div numpoints)
+     let k = 0
+     while delta > ((base - tmin) * tmax) div 2 do begin
+       let delta = delta div (base - tmin)
+       let k = k + base
+     end
+     return k + (((base - tmin + 1) * delta) div (delta + skew))
+
+   It does not matter whether the modifications to delta and k inside
+   adapt() affect variables of the same name inside the
+   encoding/decoding procedures, because after calling adapt() the
+   caller does not read those variables before overwriting them.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 10]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+6.2 Decoding procedure
+
+   let n = initial_n
+   let i = 0
+   let bias = initial_bias
+   let output = an empty string indexed from 0
+   consume all code points before the last delimiter (if there is one)
+     and copy them to output, fail on any non-basic code point
+   if more than zero code points were consumed then consume one more
+     (which will be the last delimiter)
+   while the input is not exhausted do begin
+     let oldi = i
+     let w = 1
+     for k = base to infinity in steps of base do begin
+       consume a code point, or fail if there was none to consume
+       let digit = the code point's digit-value, fail if it has none
+       let i = i + digit * w, fail on overflow
+       let t = tmin if k <= bias {+ tmin}, or
+               tmax if k >= bias + tmax, or k - bias otherwise
+       if digit < t then break
+       let w = w * (base - t), fail on overflow
+     end
+     let bias = adapt(i - oldi, length(output) + 1, test oldi is 0?)
+     let n = n + i div (length(output) + 1), fail on overflow
+     let i = i mod (length(output) + 1)
+     {if n is a basic code point then fail}
+     insert n into output at position i
+     increment i
+   end
+
+   The full statement enclosed in braces (checking whether n is a basic
+   code point) can be omitted if initial_n exceeds all basic code points
+   (which is true for Punycode), because n is never less than initial_n.
+
+   In the assignment of t, where t is clamped to the range tmin through
+   tmax, "+ tmin" can always be omitted.  This makes the clamping
+   calculation incorrect when bias < k < bias + tmin, but that cannot
+   happen because of the way bias is computed and because of the
+   constraints on the parameters.
+
+   Because the decoder state can only advance monotonically, and there
+   is only one representation of any delta, there is therefore only one
+   encoded string that can represent a given sequence of integers.  The
+   only error conditions are invalid code points, unexpected end-of-
+   input, overflow, and basic code points encoded using deltas instead
+   of appearing literally.  If the decoder fails on these errors as
+   shown above, then it cannot produce the same output for two distinct
+   inputs.  Without this property it would have been necessary to re-
+
+
+
+Costello                    Standards Track                    [Page 11]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   encode the output and verify that it matches the input in order to
+   guarantee the uniqueness of the encoding.
+
+6.3 Encoding procedure
+
+   let n = initial_n
+   let delta = 0
+   let bias = initial_bias
+   let h = b = the number of basic code points in the input
+   copy them to the output in order, followed by a delimiter if b > 0
+   {if the input contains a non-basic code point < n then fail}
+   while h < length(input) do begin
+     let m = the minimum {non-basic} code point >= n in the input
+     let delta = delta + (m - n) * (h + 1), fail on overflow
+     let n = m
+     for each code point c in the input (in order) do begin
+       if c < n {or c is basic} then increment delta, fail on overflow
+       if c == n then begin
+         let q = delta
+         for k = base to infinity in steps of base do begin
+           let t = tmin if k <= bias {+ tmin}, or
+                   tmax if k >= bias + tmax, or k - bias otherwise
+           if q < t then break
+           output the code point for digit t + ((q - t) mod (base - t))
+           let q = (q - t) div (base - t)
+         end
+         output the code point for digit q
+         let bias = adapt(delta, h + 1, test h equals b?)
+         let delta = 0
+         increment h
+       end
+     end
+     increment delta and n
+   end
+
+   The full statement enclosed in braces (checking whether the input
+   contains a non-basic code point less than n) can be omitted if all
+   code points less than initial_n are basic code points (which is true
+   for Punycode if code points are unsigned).
+
+   The brace-enclosed conditions "non-basic" and "or c is basic" can be
+   omitted if initial_n exceeds all basic code points (which is true for
+   Punycode), because the code point being tested is never less than
+   initial_n.
+
+   In the assignment of t, where t is clamped to the range tmin through
+   tmax, "+ tmin" can always be omitted.  This makes the clamping
+   calculation incorrect when bias < k < bias + tmin, but that cannot
+
+
+
+Costello                    Standards Track                    [Page 12]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   happen because of the way bias is computed and because of the
+   constraints on the parameters.
+
+   The checks for overflow are necessary to avoid producing invalid
+   output when the input contains very large values or is very long.
+
+   The increment of delta at the bottom of the outer loop cannot
+   overflow because delta < length(input) before the increment, and
+   length(input) is already assumed to be representable.  The increment
+   of n could overflow, but only if h == length(input), in which case
+   the procedure is finished anyway.
+
+6.4 Overflow handling
+
+   For IDNA, 26-bit unsigned integers are sufficient to handle all valid
+   IDNA labels without overflow, because any string that needed a 27-bit
+   delta would have to exceed either the code point limit (0..10FFFF) or
+   the label length limit (63 characters).  However, overflow handling
+   is necessary because the inputs are not necessarily valid IDNA
+   labels.
+
+   If the programming language does not provide overflow detection, the
+   following technique can be used.  Suppose A, B, and C are
+   representable nonnegative integers and C is nonzero.  Then A + B
+   overflows if and only if B > maxint - A, and A + (B * C) overflows if
+   and only if B > (maxint - A) div C, where maxint is the greatest
+   integer for which maxint + 1 cannot be represented.  Refer to
+   appendix C "Punycode sample implementation" for demonstrations of
+   this technique in the C language.
+
+   The decoding and encoding algorithms shown in sections 6.2 and 6.3
+   handle overflow by detecting it whenever it happens.  Another
+   approach is to enforce limits on the inputs that prevent overflow
+   from happening.  For example, if the encoder were to verify that no
+   input code points exceed M and that the input length does not exceed
+   L, then no delta could ever exceed (M - initial_n) * (L + 1), and
+   hence no overflow could occur if integer variables were capable of
+   representing values that large.  This prevention approach would
+   impose more restrictions on the input than the detection approach
+   does, but might be considered simpler in some programming languages.
+
+   In theory, the decoder could use an analogous approach, limiting the
+   number of digits in a variable-length integer (that is, limiting the
+   number of iterations in the innermost loop).  However, the number of
+   digits that suffice to represent a given delta can sometimes
+   represent much larger deltas (because of the adaptation), and hence
+   this approach would probably need integers wider than 32 bits.
+
+
+
+
+Costello                    Standards Track                    [Page 13]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   Yet another approach for the decoder is to allow overflow to occur,
+   but to check the final output string by re-encoding it and comparing
+   to the decoder input.  If and only if they do not match (using a
+   case-insensitive ASCII comparison) overflow has occurred.  This
+   delayed-detection approach would not impose any more restrictions on
+   the input than the immediate-detection approach does, and might be
+   considered simpler in some programming languages.
+
+   In fact, if the decoder is used only inside the IDNA ToUnicode
+   operation [IDNA], then it need not check for overflow at all, because
+   ToUnicode performs a higher level re-encoding and comparison, and a
+   mismatch has the same consequence as if the Punycode decoder had
+   failed.
+
+7. Punycode examples
+
+7.1 Sample strings
+
+   In the Punycode encodings below, the ACE prefix is not shown.
+   Backslashes show where line breaks have been inserted in strings too
+   long for one line.
+
+   The first several examples are all translations of the sentence "Why
+   can't they just speak in <language>?" (courtesy of Michael Kaplan's
+   "provincial" page [PROVINCIAL]).  Word breaks and punctuation have
+   been removed, as is often done in domain names.
+
+   (A) Arabic (Egyptian):
+       u+0644 u+064A u+0647 u+0645 u+0627 u+0628 u+062A u+0643 u+0644
+       u+0645 u+0648 u+0634 u+0639 u+0631 u+0628 u+064A u+061F
+       Punycode: egbpdaj6bu4bxfgehfvwxn
+
+   (B) Chinese (simplified):
+       u+4ED6 u+4EEC u+4E3A u+4EC0 u+4E48 u+4E0D u+8BF4 u+4E2D u+6587
+       Punycode: ihqwcrb4cv8a8dqg056pqjye
+
+   (C) Chinese (traditional):
+       u+4ED6 u+5011 u+7232 u+4EC0 u+9EBD u+4E0D u+8AAA u+4E2D u+6587
+       Punycode: ihqwctvzc91f659drss3x8bo0yb
+
+   (D) Czech: Pro<ccaron>prost<ecaron>nemluv<iacute><ccaron>esky
+       U+0050 u+0072 u+006F u+010D u+0070 u+0072 u+006F u+0073 u+0074
+       u+011B u+006E u+0065 u+006D u+006C u+0075 u+0076 u+00ED u+010D
+       u+0065 u+0073 u+006B u+0079
+       Punycode: Proprostnemluvesky-uyb24dma41a
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 14]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   (E) Hebrew:
+       u+05DC u+05DE u+05D4 u+05D4 u+05DD u+05E4 u+05E9 u+05D5 u+05D8
+       u+05DC u+05D0 u+05DE u+05D3 u+05D1 u+05E8 u+05D9 u+05DD u+05E2
+       u+05D1 u+05E8 u+05D9 u+05EA
+       Punycode: 4dbcagdahymbxekheh6e0a7fei0b
+
+   (F) Hindi (Devanagari):
+       u+092F u+0939 u+0932 u+094B u+0917 u+0939 u+093F u+0928 u+094D
+       u+0926 u+0940 u+0915 u+094D u+092F u+094B u+0902 u+0928 u+0939
+       u+0940 u+0902 u+092C u+094B u+0932 u+0938 u+0915 u+0924 u+0947
+       u+0939 u+0948 u+0902
+       Punycode: i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd
+
+   (G) Japanese (kanji and hiragana):
+       u+306A u+305C u+307F u+3093 u+306A u+65E5 u+672C u+8A9E u+3092
+       u+8A71 u+3057 u+3066 u+304F u+308C u+306A u+3044 u+306E u+304B
+       Punycode: n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa
+
+   (H) Korean (Hangul syllables):
+       u+C138 u+ACC4 u+C758 u+BAA8 u+B4E0 u+C0AC u+B78C u+B4E4 u+C774
+       u+D55C u+AD6D u+C5B4 u+B97C u+C774 u+D574 u+D55C u+B2E4 u+BA74
+       u+C5BC u+B9C8 u+B098 u+C88B u+C744 u+AE4C
+       Punycode: 989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5j\
+                 psd879ccm6fea98c
+
+   (I) Russian (Cyrillic):
+       U+043F u+043E u+0447 u+0435 u+043C u+0443 u+0436 u+0435 u+043E
+       u+043D u+0438 u+043D u+0435 u+0433 u+043E u+0432 u+043E u+0440
+       u+044F u+0442 u+043F u+043E u+0440 u+0443 u+0441 u+0441 u+043A
+       u+0438
+       Punycode: b1abfaaepdrnnbgefbaDotcwatmq2g4l
+
+   (J) Spanish: Porqu<eacute>nopuedensimplementehablarenEspa<ntilde>ol
+       U+0050 u+006F u+0072 u+0071 u+0075 u+00E9 u+006E u+006F u+0070
+       u+0075 u+0065 u+0064 u+0065 u+006E u+0073 u+0069 u+006D u+0070
+       u+006C u+0065 u+006D u+0065 u+006E u+0074 u+0065 u+0068 u+0061
+       u+0062 u+006C u+0061 u+0072 u+0065 u+006E U+0045 u+0073 u+0070
+       u+0061 u+00F1 u+006F u+006C
+       Punycode: PorqunopuedensimplementehablarenEspaol-fmd56a
+
+   (K) Vietnamese:
+       T<adotbelow>isaoh<odotbelow>kh<ocirc>ngth<ecirchookabove>ch\
+       <ihookabove>n<oacute>iti<ecircacute>ngVi<ecircdotbelow>t
+       U+0054 u+1EA1 u+0069 u+0073 u+0061 u+006F u+0068 u+1ECD u+006B
+       u+0068 u+00F4 u+006E u+0067 u+0074 u+0068 u+1EC3 u+0063 u+0068
+       u+1EC9 u+006E u+00F3 u+0069 u+0074 u+0069 u+1EBF u+006E u+0067
+       U+0056 u+0069 u+1EC7 u+0074
+       Punycode: TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g
+
+
+
+Costello                    Standards Track                    [Page 15]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   The next several examples are all names of Japanese music artists,
+   song titles, and TV programs, just because the author happens to have
+   them handy (but Japanese is useful for providing examples of single-
+   row text, two-row text, ideographic text, and various mixtures
+   thereof).
+
+   (L) 3<nen>B<gumi><kinpachi><sensei>
+       u+0033 u+5E74 U+0042 u+7D44 u+91D1 u+516B u+5148 u+751F
+       Punycode: 3B-ww4c5e180e575a65lsy2b
+
+   (M) <amuro><namie>-with-SUPER-MONKEYS
+       u+5B89 u+5BA4 u+5948 u+7F8E u+6075 u+002D u+0077 u+0069 u+0074
+       u+0068 u+002D U+0053 U+0055 U+0050 U+0045 U+0052 u+002D U+004D
+       U+004F U+004E U+004B U+0045 U+0059 U+0053
+       Punycode: -with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n
+
+   (N) Hello-Another-Way-<sorezore><no><basho>
+       U+0048 u+0065 u+006C u+006C u+006F u+002D U+0041 u+006E u+006F
+       u+0074 u+0068 u+0065 u+0072 u+002D U+0057 u+0061 u+0079 u+002D
+       u+305D u+308C u+305E u+308C u+306E u+5834 u+6240
+       Punycode: Hello-Another-Way--fc4qua05auwb3674vfr0b
+
+   (O) <hitotsu><yane><no><shita>2
+       u+3072 u+3068 u+3064 u+5C4B u+6839 u+306E u+4E0B u+0032
+       Punycode: 2-u9tlzr9756bt3uc0v
+
+   (P) Maji<de>Koi<suru>5<byou><mae>
+       U+004D u+0061 u+006A u+0069 u+3067 U+004B u+006F u+0069 u+3059
+       u+308B u+0035 u+79D2 u+524D
+       Punycode: MajiKoi5-783gue6qz075azm5e
+
+   (Q) <pafii>de<runba>
+       u+30D1 u+30D5 u+30A3 u+30FC u+0064 u+0065 u+30EB u+30F3 u+30D0
+       Punycode: de-jg4avhby1noc0d
+
+   (R) <sono><supiido><de>
+       u+305D u+306E u+30B9 u+30D4 u+30FC u+30C9 u+3067
+       Punycode: d9juau41awczczp
+
+   The last example is an ASCII string that breaks the existing rules
+   for host name labels.  (It is not a realistic example for IDNA,
+   because IDNA never encodes pure ASCII labels.)
+
+   (S) -> $1.00 <-
+       u+002D u+003E u+0020 u+0024 u+0031 u+002E u+0030 u+0030 u+0020
+       u+003C u+002D
+       Punycode: -> $1.00 <--
+
+
+
+
+Costello                    Standards Track                    [Page 16]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+7.2 Decoding traces
+
+   In the following traces, the evolving state of the decoder is shown
+   as a sequence of hexadecimal values, representing the code points in
+   the extended string.  An asterisk appears just after the most
+   recently inserted code point, indicating both n (the value preceeding
+   the asterisk) and i (the position of the value just after the
+   asterisk).  Other numerical values are decimal.
+
+   Decoding trace of example B from section 7.1:
+
+   n is 128, i is 0, bias is 72
+   input is "ihqwcrb4cv8a8dqg056pqjye"
+   there is no delimiter, so extended string starts empty
+   delta "ihq" decodes to 19853
+   bias becomes 21
+   4E0D *
+   delta "wc" decodes to 64
+   bias becomes 20
+   4E0D 4E2D *
+   delta "rb" decodes to 37
+   bias becomes 13
+   4E3A * 4E0D 4E2D
+   delta "4c" decodes to 56
+   bias becomes 17
+   4E3A 4E48 * 4E0D 4E2D
+   delta "v8a" decodes to 599
+   bias becomes 32
+   4E3A 4EC0 * 4E48 4E0D 4E2D
+   delta "8d" decodes to 130
+   bias becomes 23
+   4ED6 * 4E3A 4EC0 4E48 4E0D 4E2D
+   delta "qg" decodes to 154
+   bias becomes 25
+   4ED6 4EEC * 4E3A 4EC0 4E48 4E0D 4E2D
+   delta "056p" decodes to 46301
+   bias becomes 84
+   4ED6 4EEC 4E3A 4EC0 4E48 4E0D 4E2D 6587 *
+   delta "qjye" decodes to 88531
+   bias becomes 90
+   4ED6 4EEC 4E3A 4EC0 4E48 4E0D 8BF4 * 4E2D 6587
+
+
+
+
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 17]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   Decoding trace of example L from section 7.1:
+
+   n is 128, i is 0, bias is 72
+   input is "3B-ww4c5e180e575a65lsy2b"
+   literal portion is "3B-", so extended string starts as:
+   0033 0042
+   delta "ww4c" decodes to 62042
+   bias becomes 27
+   0033 0042 5148 *
+   delta "5e" decodes to 139
+   bias becomes 24
+   0033 0042 516B * 5148
+   delta "180e" decodes to 16683
+   bias becomes 67
+   0033 5E74 * 0042 516B 5148
+   delta "575a" decodes to 34821
+   bias becomes 82
+   0033 5E74 0042 516B 5148 751F *
+   delta "65l" decodes to 14592
+   bias becomes 67
+   0033 5E74 0042 7D44 * 516B 5148 751F
+   delta "sy2b" decodes to 42088
+   bias becomes 84
+   0033 5E74 0042 7D44 91D1 * 516B 5148 751F
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 18]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+7.3 Encoding traces
+
+   In the following traces, code point values are hexadecimal, while
+   other numerical values are decimal.
+
+   Encoding trace of example B from section 7.1:
+
+   bias is 72
+   input is:
+   4ED6 4EEC 4E3A 4EC0 4E48 4E0D 8BF4 4E2D 6587
+   there are no basic code points, so no literal portion
+   next code point to insert is 4E0D
+   needed delta is 19853, encodes as "ihq"
+   bias becomes 21
+   next code point to insert is 4E2D
+   needed delta is 64, encodes as "wc"
+   bias becomes 20
+   next code point to insert is 4E3A
+   needed delta is 37, encodes as "rb"
+   bias becomes 13
+   next code point to insert is 4E48
+   needed delta is 56, encodes as "4c"
+   bias becomes 17
+   next code point to insert is 4EC0
+   needed delta is 599, encodes as "v8a"
+   bias becomes 32
+   next code point to insert is 4ED6
+   needed delta is 130, encodes as "8d"
+   bias becomes 23
+   next code point to insert is 4EEC
+   needed delta is 154, encodes as "qg"
+   bias becomes 25
+   next code point to insert is 6587
+   needed delta is 46301, encodes as "056p"
+   bias becomes 84
+   next code point to insert is 8BF4
+   needed delta is 88531, encodes as "qjye"
+   bias becomes 90
+   output is "ihqwcrb4cv8a8dqg056pqjye"
+
+
+
+
+
+
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 19]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+   Encoding trace of example L from section 7.1:
+
+   bias is 72
+   input is:
+   0033 5E74 0042 7D44 91D1 516B 5148 751F
+   basic code points (0033, 0042) are copied to literal portion: "3B-"
+   next code point to insert is 5148
+   needed delta is 62042, encodes as "ww4c"
+   bias becomes 27
+   next code point to insert is 516B
+   needed delta is 139, encodes as "5e"
+   bias becomes 24
+   next code point to insert is 5E74
+   needed delta is 16683, encodes as "180e"
+   bias becomes 67
+   next code point to insert is 751F
+   needed delta is 34821, encodes as "575a"
+   bias becomes 82
+   next code point to insert is 7D44
+   needed delta is 14592, encodes as "65l"
+   bias becomes 67
+   next code point to insert is 91D1
+   needed delta is 42088, encodes as "sy2b"
+   bias becomes 84
+   output is "3B-ww4c5e180e575a65lsy2b"
+
+8. Security Considerations
+
+   Users expect each domain name in DNS to be controlled by a single
+   authority.  If a Unicode string intended for use as a domain label
+   could map to multiple ACE labels, then an internationalized domain
+   name could map to multiple ASCII domain names, each controlled by a
+   different authority, some of which could be spoofs that hijack
+   service requests intended for another.  Therefore Punycode is
+   designed so that each Unicode string has a unique encoding.
+
+   However, there can still be multiple Unicode representations of the
+   "same" text, for various definitions of "same".  This problem is
+   addressed to some extent by the Unicode standard under the topic of
+   canonicalization, and this work is leveraged for domain names by
+   Nameprep [NAMEPREP].
+
+
+
+
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 20]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+9. References
+
+9.1 Normative References
+
+   [RFC2119]    Bradner, S., "Key words for use in RFCs to Indicate
+                Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+9.2 Informative References
+
+   [RFC952]     Harrenstien, K., Stahl, M. and E. Feinler, "DOD Internet
+                Host Table Specification", RFC 952, October 1985.
+
+   [RFC1034]    Mockapetris, P., "Domain Names - Concepts and
+                Facilities", STD 13, RFC 1034, November 1987.
+
+   [IDNA]       Faltstrom, P., Hoffman, P. and A. Costello,
+                "Internationalizing Domain Names in Applications
+                (IDNA)", RFC 3490, March 2003.
+
+   [NAMEPREP]   Hoffman, P. and  M. Blanchet, "Nameprep: A Stringprep
+                Profile for Internationalized Domain Names (IDN)", RFC
+                3491, March 2003.
+
+   [ASCII]      Cerf, V., "ASCII format for Network Interchange", RFC
+                20, October 1969.
+
+   [PROVINCIAL] Kaplan, M., "The 'anyone can be provincial!' page",
+                http://www.trigeminal.com/samples/provincial.html.
+
+   [UNICODE]    The Unicode Consortium, "The Unicode Standard",
+                http://www.unicode.org/unicode/standard/standard.html.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 21]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+A. Mixed-case annotation
+
+   In order to use Punycode to represent case-insensitive strings,
+   higher layers need to case-fold the strings prior to Punycode
+   encoding.  The encoded string can use mixed case as an annotation
+   telling how to convert the folded string into a mixed-case string for
+   display purposes.  Note, however, that mixed-case annotation is not
+   used by the ToASCII and ToUnicode operations specified in [IDNA], and
+   therefore implementors of IDNA can disregard this appendix.
+
+   Basic code points can use mixed case directly, because the decoder
+   copies them verbatim, leaving lowercase code points lowercase, and
+   leaving uppercase code points uppercase.  Each non-basic code point
+   is represented by a delta, which is represented by a sequence of
+   basic code points, the last of which provides the annotation.  If it
+   is uppercase, it is a suggestion to map the non-basic code point to
+   uppercase (if possible); if it is lowercase, it is a suggestion to
+   map the non-basic code point to lowercase (if possible).
+
+   These annotations do not alter the code points returned by decoders;
+   the annotations are returned separately, for the caller to use or
+   ignore.  Encoders can accept annotations in addition to code points,
+   but the annotations do not alter the output, except to influence the
+   uppercase/lowercase form of ASCII letters.
+
+   Punycode encoders and decoders need not support these annotations,
+   and higher layers need not use them.
+
+B. Disclaimer and license
+
+   Regarding this entire document or any portion of it (including the
+   pseudocode and C code), the author makes no guarantees and is not
+   responsible for any damage resulting from its use.  The author grants
+   irrevocable permission to anyone to use, modify, and distribute it in
+   any way that does not diminish the rights of anyone else to use,
+   modify, and distribute it, provided that redistributed derivative
+   works do not contain misleading author or version information.
+   Derivative works need not be licensed under similar terms.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 22]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+C. Punycode sample implementation
+
+/*
+punycode.c from RFC 3492
+http://www.nicemice.net/idn/
+Adam M. Costello
+http://www.nicemice.net/amc/
+
+This is ANSI C code (C89) implementing Punycode (RFC 3492).
+
+*/
+
+
+/************************************************************/
+/* Public interface (would normally go in its own .h file): */
+
+#include <limits.h>
+
+enum punycode_status {
+  punycode_success,
+  punycode_bad_input,   /* Input is invalid.                       */
+  punycode_big_output,  /* Output would exceed the space provided. */
+  punycode_overflow     /* Input needs wider integers to process.  */
+};
+
+#if UINT_MAX >= (1 << 26) - 1
+typedef unsigned int punycode_uint;
+#else
+typedef unsigned long punycode_uint;
+#endif
+
+enum punycode_status punycode_encode(
+  punycode_uint input_length,
+  const punycode_uint input[],
+  const unsigned char case_flags[],
+  punycode_uint *output_length,
+  char output[] );
+
+    /* punycode_encode() converts Unicode to Punycode.  The input     */
+    /* is represented as an array of Unicode code points (not code    */
+    /* units; surrogate pairs are not allowed), and the output        */
+    /* will be represented as an array of ASCII code points.  The     */
+    /* output string is *not* null-terminated; it will contain        */
+    /* zeros if and only if the input contains zeros.  (Of course     */
+    /* the caller can leave room for a terminator and add one if      */
+    /* needed.)  The input_length is the number of code points in     */
+    /* the input.  The output_length is an in/out argument: the       */
+    /* caller passes in the maximum number of code points that it     */
+
+
+
+Costello                    Standards Track                    [Page 23]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+    /* can receive, and on successful return it will contain the      */
+    /* number of code points actually output.  The case_flags array   */
+    /* holds input_length boolean values, where nonzero suggests that */
+    /* the corresponding Unicode character be forced to uppercase     */
+    /* after being decoded (if possible), and zero suggests that      */
+    /* it be forced to lowercase (if possible).  ASCII code points    */
+    /* are encoded literally, except that ASCII letters are forced    */
+    /* to uppercase or lowercase according to the corresponding       */
+    /* uppercase flags.  If case_flags is a null pointer then ASCII   */
+    /* letters are left as they are, and other code points are        */
+    /* treated as if their uppercase flags were zero.  The return     */
+    /* value can be any of the punycode_status values defined above   */
+    /* except punycode_bad_input; if not punycode_success, then       */
+    /* output_size and output might contain garbage.                  */
+
+enum punycode_status punycode_decode(
+  punycode_uint input_length,
+  const char input[],
+  punycode_uint *output_length,
+  punycode_uint output[],
+  unsigned char case_flags[] );
+
+    /* punycode_decode() converts Punycode to Unicode.  The input is  */
+    /* represented as an array of ASCII code points, and the output   */
+    /* will be represented as an array of Unicode code points.  The   */
+    /* input_length is the number of code points in the input.  The   */
+    /* output_length is an in/out argument: the caller passes in      */
+    /* the maximum number of code points that it can receive, and     */
+    /* on successful return it will contain the actual number of      */
+    /* code points output.  The case_flags array needs room for at    */
+    /* least output_length values, or it can be a null pointer if the */
+    /* case information is not needed.  A nonzero flag suggests that  */
+    /* the corresponding Unicode character be forced to uppercase     */
+    /* by the caller (if possible), while zero suggests that it be    */
+    /* forced to lowercase (if possible).  ASCII code points are      */
+    /* output already in the proper case, but their flags will be set */
+    /* appropriately so that applying the flags would be harmless.    */
+    /* The return value can be any of the punycode_status values      */
+    /* defined above; if not punycode_success, then output_length,    */
+    /* output, and case_flags might contain garbage.  On success, the */
+    /* decoder will never need to write an output_length greater than */
+    /* input_length, because of how the encoding is defined.          */
+
+/**********************************************************/
+/* Implementation (would normally go in its own .c file): */
+
+#include <string.h>
+
+
+
+
+Costello                    Standards Track                    [Page 24]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+/*** Bootstring parameters for Punycode ***/
+
+enum { base = 36, tmin = 1, tmax = 26, skew = 38, damp = 700,
+       initial_bias = 72, initial_n = 0x80, delimiter = 0x2D };
+
+/* basic(cp) tests whether cp is a basic code point: */
+#define basic(cp) ((punycode_uint)(cp) < 0x80)
+
+/* delim(cp) tests whether cp is a delimiter: */
+#define delim(cp) ((cp) == delimiter)
+
+/* decode_digit(cp) returns the numeric value of a basic code */
+/* point (for use in representing integers) in the range 0 to */
+/* base-1, or base if cp is does not represent a value.       */
+
+static punycode_uint decode_digit(punycode_uint cp)
+{
+  return  cp - 48 < 10 ? cp - 22 :  cp - 65 < 26 ? cp - 65 :
+          cp - 97 < 26 ? cp - 97 :  base;
+}
+
+/* encode_digit(d,flag) returns the basic code point whose value      */
+/* (when used for representing integers) is d, which needs to be in   */
+/* the range 0 to base-1.  The lowercase form is used unless flag is  */
+/* nonzero, in which case the uppercase form is used.  The behavior   */
+/* is undefined if flag is nonzero and digit d has no uppercase form. */
+
+static char encode_digit(punycode_uint d, int flag)
+{
+  return d + 22 + 75 * (d < 26) - ((flag != 0) << 5);
+  /*  0..25 map to ASCII a..z or A..Z */
+  /* 26..35 map to ASCII 0..9         */
+}
+
+/* flagged(bcp) tests whether a basic code point is flagged */
+/* (uppercase).  The behavior is undefined if bcp is not a  */
+/* basic code point.                                        */
+
+#define flagged(bcp) ((punycode_uint)(bcp) - 65 < 26)
+
+/* encode_basic(bcp,flag) forces a basic code point to lowercase */
+/* if flag is zero, uppercase if flag is nonzero, and returns    */
+/* the resulting code point.  The code point is unchanged if it  */
+/* is caseless.  The behavior is undefined if bcp is not a basic */
+/* code point.                                                   */
+
+static char encode_basic(punycode_uint bcp, int flag)
+{
+
+
+
+Costello                    Standards Track                    [Page 25]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+  bcp -= (bcp - 97 < 26) << 5;
+  return bcp + ((!flag && (bcp - 65 < 26)) << 5);
+}
+
+/*** Platform-specific constants ***/
+
+/* maxint is the maximum value of a punycode_uint variable: */
+static const punycode_uint maxint = -1;
+/* Because maxint is unsigned, -1 becomes the maximum value. */
+
+/*** Bias adaptation function ***/
+
+static punycode_uint adapt(
+  punycode_uint delta, punycode_uint numpoints, int firsttime )
+{
+  punycode_uint k;
+
+  delta = firsttime ? delta / damp : delta >> 1;
+  /* delta >> 1 is a faster way of doing delta / 2 */
+  delta += delta / numpoints;
+
+  for (k = 0;  delta > ((base - tmin) * tmax) / 2;  k += base) {
+    delta /= base - tmin;
+  }
+
+  return k + (base - tmin + 1) * delta / (delta + skew);
+}
+
+/*** Main encode function ***/
+
+enum punycode_status punycode_encode(
+  punycode_uint input_length,
+  const punycode_uint input[],
+  const unsigned char case_flags[],
+  punycode_uint *output_length,
+  char output[] )
+{
+  punycode_uint n, delta, h, b, out, max_out, bias, j, m, q, k, t;
+
+  /* Initialize the state: */
+
+  n = initial_n;
+  delta = out = 0;
+  max_out = *output_length;
+  bias = initial_bias;
+
+  /* Handle the basic code points: */
+
+
+
+
+Costello                    Standards Track                    [Page 26]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+  for (j = 0;  j < input_length;  ++j) {
+    if (basic(input[j])) {
+      if (max_out - out < 2) return punycode_big_output;
+      output[out++] =
+        case_flags ?  encode_basic(input[j], case_flags[j]) : input[j];
+    }
+    /* else if (input[j] < n) return punycode_bad_input; */
+    /* (not needed for Punycode with unsigned code points) */
+  }
+
+  h = b = out;
+
+  /* h is the number of code points that have been handled, b is the  */
+  /* number of basic code points, and out is the number of characters */
+  /* that have been output.                                           */
+
+  if (b > 0) output[out++] = delimiter;
+
+  /* Main encoding loop: */
+
+  while (h < input_length) {
+    /* All non-basic code points < n have been     */
+    /* handled already.  Find the next larger one: */
+
+    for (m = maxint, j = 0;  j < input_length;  ++j) {
+      /* if (basic(input[j])) continue; */
+      /* (not needed for Punycode) */
+      if (input[j] >= n && input[j] < m) m = input[j];
+    }
+
+    /* Increase delta enough to advance the decoder's    */
+    /* <n,i> state to <m,0>, but guard against overflow: */
+
+    if (m - n > (maxint - delta) / (h + 1)) return punycode_overflow;
+    delta += (m - n) * (h + 1);
+    n = m;
+
+    for (j = 0;  j < input_length;  ++j) {
+      /* Punycode does not need to check whether input[j] is basic: */
+      if (input[j] < n /* || basic(input[j]) */ ) {
+        if (++delta == 0) return punycode_overflow;
+      }
+
+      if (input[j] == n) {
+        /* Represent delta as a generalized variable-length integer: */
+
+        for (q = delta, k = base;  ;  k += base) {
+          if (out >= max_out) return punycode_big_output;
+
+
+
+Costello                    Standards Track                    [Page 27]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+          t = k <= bias /* + tmin */ ? tmin :     /* +tmin not needed */
+              k >= bias + tmax ? tmax : k - bias;
+          if (q < t) break;
+          output[out++] = encode_digit(t + (q - t) % (base - t), 0);
+          q = (q - t) / (base - t);
+        }
+
+        output[out++] = encode_digit(q, case_flags && case_flags[j]);
+        bias = adapt(delta, h + 1, h == b);
+        delta = 0;
+        ++h;
+      }
+    }
+
+    ++delta, ++n;
+  }
+
+  *output_length = out;
+  return punycode_success;
+}
+
+/*** Main decode function ***/
+
+enum punycode_status punycode_decode(
+  punycode_uint input_length,
+  const char input[],
+  punycode_uint *output_length,
+  punycode_uint output[],
+  unsigned char case_flags[] )
+{
+  punycode_uint n, out, i, max_out, bias,
+                 b, j, in, oldi, w, k, digit, t;
+
+  /* Initialize the state: */
+
+  n = initial_n;
+  out = i = 0;
+  max_out = *output_length;
+  bias = initial_bias;
+
+  /* Handle the basic code points:  Let b be the number of input code */
+  /* points before the last delimiter, or 0 if there is none, then    */
+  /* copy the first b code points to the output.                      */
+
+  for (b = j = 0;  j < input_length;  ++j) if (delim(input[j])) b = j;
+  if (b > max_out) return punycode_big_output;
+
+  for (j = 0;  j < b;  ++j) {
+
+
+
+Costello                    Standards Track                    [Page 28]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+    if (case_flags) case_flags[out] = flagged(input[j]);
+    if (!basic(input[j])) return punycode_bad_input;
+    output[out++] = input[j];
+  }
+
+  /* Main decoding loop:  Start just after the last delimiter if any  */
+  /* basic code points were copied; start at the beginning otherwise. */
+
+  for (in = b > 0 ? b + 1 : 0;  in < input_length;  ++out) {
+
+    /* in is the index of the next character to be consumed, and */
+    /* out is the number of code points in the output array.     */
+
+    /* Decode a generalized variable-length integer into delta,  */
+    /* which gets added to i.  The overflow checking is easier   */
+    /* if we increase i as we go, then subtract off its starting */
+    /* value at the end to obtain delta.                         */
+
+    for (oldi = i, w = 1, k = base;  ;  k += base) {
+      if (in >= input_length) return punycode_bad_input;
+      digit = decode_digit(input[in++]);
+      if (digit >= base) return punycode_bad_input;
+      if (digit > (maxint - i) / w) return punycode_overflow;
+      i += digit * w;
+      t = k <= bias /* + tmin */ ? tmin :     /* +tmin not needed */
+          k >= bias + tmax ? tmax : k - bias;
+      if (digit < t) break;
+      if (w > maxint / (base - t)) return punycode_overflow;
+      w *= (base - t);
+    }
+
+    bias = adapt(i - oldi, out + 1, oldi == 0);
+
+    /* i was supposed to wrap around from out+1 to 0,   */
+    /* incrementing n each time, so we'll fix that now: */
+
+    if (i / (out + 1) > maxint - n) return punycode_overflow;
+    n += i / (out + 1);
+    i %= (out + 1);
+
+    /* Insert n at position i of the output: */
+
+    /* not needed for Punycode: */
+    /* if (decode_digit(n) <= base) return punycode_invalid_input; */
+    if (out >= max_out) return punycode_big_output;
+
+    if (case_flags) {
+      memmove(case_flags + i + 1, case_flags + i, out - i);
+
+
+
+Costello                    Standards Track                    [Page 29]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+      /* Case of last character determines uppercase flag: */
+      case_flags[i] = flagged(input[in - 1]);
+    }
+
+    memmove(output + i + 1, output + i, (out - i) * sizeof *output);
+    output[i++] = n;
+  }
+
+  *output_length = out;
+  return punycode_success;
+}
+
+/******************************************************************/
+/* Wrapper for testing (would normally go in a separate .c file): */
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* For testing, we'll just set some compile-time limits rather than */
+/* use malloc(), and set a compile-time option rather than using a  */
+/* command-line option.                                             */
+
+enum {
+  unicode_max_length = 256,
+  ace_max_length = 256
+};
+
+static void usage(char **argv)
+{
+  fprintf(stderr,
+    "\n"
+    "%s -e reads code points and writes a Punycode string.\n"
+    "%s -d reads a Punycode string and writes code points.\n"
+    "\n"
+    "Input and output are plain text in the native character set.\n"
+    "Code points are in the form u+hex separated by whitespace.\n"
+    "Although the specification allows Punycode strings to contain\n"
+    "any characters from the ASCII repertoire, this test code\n"
+    "supports only the printable characters, and needs the Punycode\n"
+    "string to be followed by a newline.\n"
+    "The case of the u in u+hex is the force-to-uppercase flag.\n"
+    , argv[0], argv[0]);
+  exit(EXIT_FAILURE);
+}
+
+static void fail(const char *msg)
+
+
+
+Costello                    Standards Track                    [Page 30]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+{
+  fputs(msg,stderr);
+  exit(EXIT_FAILURE);
+}
+
+static const char too_big[] =
+  "input or output is too large, recompile with larger limits\n";
+static const char invalid_input[] = "invalid input\n";
+static const char overflow[] = "arithmetic overflow\n";
+static const char io_error[] = "I/O error\n";
+
+/* The following string is used to convert printable */
+/* characters between ASCII and the native charset:  */
+
+static const char print_ascii[] =
+  "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+  "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+  " !\"#$%&'()*+,-./"
+  "0123456789:;<=>?"
+  "@ABCDEFGHIJKLMNO"
+  "PQRSTUVWXYZ[\\]^_"
+  "`abcdefghijklmno"
+  "pqrstuvwxyz{|}~\n";
+
+int main(int argc, char **argv)
+{
+  enum punycode_status status;
+  int r;
+  unsigned int input_length, output_length, j;
+  unsigned char case_flags[unicode_max_length];
+
+  if (argc != 2) usage(argv);
+  if (argv[1][0] != '-') usage(argv);
+  if (argv[1][2] != 0) usage(argv);
+
+  if (argv[1][1] == 'e') {
+    punycode_uint input[unicode_max_length];
+    unsigned long codept;
+    char output[ace_max_length+1], uplus[3];
+    int c;
+
+    /* Read the input code points: */
+
+    input_length = 0;
+
+    for (;;) {
+      r = scanf("%2s%lx", uplus, &codept);
+      if (ferror(stdin)) fail(io_error);
+
+
+
+Costello                    Standards Track                    [Page 31]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+      if (r == EOF || r == 0) break;
+
+      if (r != 2 || uplus[1] != '+' || codept > (punycode_uint)-1) {
+        fail(invalid_input);
+      }
+
+      if (input_length == unicode_max_length) fail(too_big);
+
+      if (uplus[0] == 'u') case_flags[input_length] = 0;
+      else if (uplus[0] == 'U') case_flags[input_length] = 1;
+      else fail(invalid_input);
+
+      input[input_length++] = codept;
+    }
+
+    /* Encode: */
+
+    output_length = ace_max_length;
+    status = punycode_encode(input_length, input, case_flags,
+                             &output_length, output);
+    if (status == punycode_bad_input) fail(invalid_input);
+    if (status == punycode_big_output) fail(too_big);
+    if (status == punycode_overflow) fail(overflow);
+    assert(status == punycode_success);
+
+    /* Convert to native charset and output: */
+
+    for (j = 0;  j < output_length;  ++j) {
+      c = output[j];
+      assert(c >= 0 && c <= 127);
+      if (print_ascii[c] == 0) fail(invalid_input);
+      output[j] = print_ascii[c];
+    }
+
+    output[j] = 0;
+    r = puts(output);
+    if (r == EOF) fail(io_error);
+    return EXIT_SUCCESS;
+  }
+
+  if (argv[1][1] == 'd') {
+    char input[ace_max_length+2], *p, *pp;
+    punycode_uint output[unicode_max_length];
+
+    /* Read the Punycode input string and convert to ASCII: */
+
+    fgets(input, ace_max_length+2, stdin);
+    if (ferror(stdin)) fail(io_error);
+
+
+
+Costello                    Standards Track                    [Page 32]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+    if (feof(stdin)) fail(invalid_input);
+    input_length = strlen(input) - 1;
+    if (input[input_length] != '\n') fail(too_big);
+    input[input_length] = 0;
+
+    for (p = input;  *p != 0;  ++p) {
+      pp = strchr(print_ascii, *p);
+      if (pp == 0) fail(invalid_input);
+      *p = pp - print_ascii;
+    }
+
+    /* Decode: */
+
+    output_length = unicode_max_length;
+    status = punycode_decode(input_length, input, &output_length,
+                             output, case_flags);
+    if (status == punycode_bad_input) fail(invalid_input);
+    if (status == punycode_big_output) fail(too_big);
+    if (status == punycode_overflow) fail(overflow);
+    assert(status == punycode_success);
+
+    /* Output the result: */
+
+    for (j = 0;  j < output_length;  ++j) {
+      r = printf("%s+%04lX\n",
+                 case_flags[j] ? "U" : "u",
+                 (unsigned long) output[j] );
+      if (r < 0) fail(io_error);
+    }
+
+    return EXIT_SUCCESS;
+  }
+
+  usage(argv);
+  return EXIT_SUCCESS;  /* not reached, but quiets compiler warning */
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 33]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+Author's Address
+
+   Adam M. Costello
+   University of California, Berkeley
+   http://www.nicemice.net/amc/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 34]
+
+RFC 3492                     IDNA Punycode                    March 2003
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Costello                    Standards Track                    [Page 35]
+

Copied: branches/samba/experimental/source4/heimdal/lib/wind/rfc4013.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/heimdal/lib/wind/rfc4013.txt)
===================================================================
--- branches/samba/experimental/source4/heimdal/lib/wind/rfc4013.txt	                        (rev 0)
+++ branches/samba/experimental/source4/heimdal/lib/wind/rfc4013.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4013                           OpenLDAP Foundation
+Category: Standards Track                                  February 2005
+
+
+       SASLprep: Stringprep Profile for User Names and Passwords
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2005).
+
+Abstract
+
+   This document describes how to prepare Unicode strings representing
+   user names and passwords for comparison.  The document defines the
+   "SASLprep" profile of the "stringprep" algorithm to be used for both
+   user names and passwords.  This profile is intended to be used by
+   Simple Authentication and Security Layer (SASL) mechanisms (such as
+   PLAIN, CRAM-MD5, and DIGEST-MD5), as well as other protocols
+   exchanging simple user names and/or passwords.
+
+1.  Introduction
+
+   The use of simple user names and passwords in authentication and
+   authorization is pervasive on the Internet.  To increase the
+   likelihood that user name and password input and comparison work in
+   ways that make sense for typical users throughout the world, this
+   document defines rules for preparing internationalized user names and
+   passwords for comparison.  For simplicity and implementation ease, a
+   single algorithm is defined for both user names and passwords.
+
+   The algorithm assumes all strings are comprised of characters from
+   the Unicode [Unicode] character set.
+
+   This document defines the "SASLprep" profile of the "stringprep"
+   algorithm [StringPrep].
+
+   The profile is designed for use in Simple Authentication and Security
+   Layer ([SASL]) mechanisms, such as [PLAIN], [CRAM-MD5], and
+   [DIGEST-MD5].  It may be applicable where simple user names and
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4013                        SASLprep                   February 2005
+
+
+   passwords are used.  This profile is not intended for use in
+   preparing identity strings that are not simple user names (e.g.,
+   email addresses, domain names, distinguished names), or where
+   identity or password strings that are not character data, or require
+   different handling (e.g., case folding).
+
+   This document does not alter the technical specification of any
+   existing protocols.  Any specification that wishes to use the
+   algorithm described in this document needs to explicitly incorporate
+   this document and provide precise details as to where and how this
+   algorithm is used by implementations of that specification.
+
+2.  The SASLprep Profile
+
+   This section defines the "SASLprep" profile of the "stringprep"
+   algorithm [StringPrep].  This profile is intended for use in
+   preparing strings representing simple user names and passwords.
+
+   This profile uses Unicode 3.2 [Unicode].
+
+   Character names in this document use the notation for code points and
+   names from the Unicode Standard [Unicode].  For example, the letter
+   "a" may be represented as either <U+0061> or <LATIN SMALL LETTER A>.
+   In the lists of mappings and the prohibited characters, the "U+" is
+   left off to make the lists easier to read.  The comments for
+   character ranges are shown in square brackets (such as "[CONTROL
+   CHARACTERS]") and do not come from the standard.
+
+   Note: A glossary of terms used in Unicode can be found in [Glossary].
+   Information on the Unicode character encoding model can be found in
+   [CharModel].
+
+2.1.  Mapping
+
+   This profile specifies:
+
+      -  non-ASCII space characters [StringPrep, C.1.2] that can be
+         mapped to SPACE (U+0020), and
+
+      -  the "commonly mapped to nothing" characters [StringPrep, B.1]
+         that can be mapped to nothing.
+
+2.2.  Normalization
+
+   This profile specifies using Unicode normalization form KC, as
+   described in Section 4 of [StringPrep].
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4013                        SASLprep                   February 2005
+
+
+2.3.  Prohibited Output
+
+   This profile specifies the following characters as prohibited input:
+
+      - Non-ASCII space characters [StringPrep, C.1.2]
+      - ASCII control characters [StringPrep, C.2.1]
+      - Non-ASCII control characters [StringPrep, C.2.2]
+      - Private Use characters [StringPrep, C.3]
+      - Non-character code points [StringPrep, C.4]
+      - Surrogate code points [StringPrep, C.5]
+      - Inappropriate for plain text characters [StringPrep, C.6]
+      - Inappropriate for canonical representation characters
+        [StringPrep, C.7]
+      - Change display properties or deprecated characters
+        [StringPrep, C.8]
+      - Tagging characters [StringPrep, C.9]
+
+2.4.  Bidirectional Characters
+
+   This profile specifies checking bidirectional strings as described in
+   [StringPrep, Section 6].
+
+2.5.  Unassigned Code Points
+
+   This profile specifies the [StringPrep, A.1] table as its list of
+   unassigned code points.
+
+3.  Examples
+
+   The following table provides examples of how various character data
+   is transformed by the SASLprep string preparation algorithm
+
+   #  Input            Output     Comments
+   -  -----            ------     --------
+   1  I<U+00AD>X       IX         SOFT HYPHEN mapped to nothing
+   2  user             user       no transformation
+   3  USER             USER       case preserved, will not match #2
+   4  <U+00AA>         a          output is NFKC, input in ISO 8859-1
+   5  <U+2168>         IX         output is NFKC, will match #1
+   6  <U+0007>                    Error - prohibited character
+   7  <U+0627><U+0031>            Error - bidirectional check
+
+4.  Security Considerations
+
+   This profile is intended to prepare simple user name and password
+   strings for comparison or use in cryptographic functions (e.g.,
+   message digests).  The preparation algorithm was specifically
+   designed such that its output is canonical, and it is well-formed.
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4013                        SASLprep                   February 2005
+
+
+   However, due to an anomaly [PR29] in the specification of Unicode
+   normalization, canonical equivalence is not guaranteed for a select
+   few character sequences.  These sequences, however, do not appear in
+   well-formed text.  This specification was published despite this
+   known technical problem.  It is expected that this specification will
+   be revised before further progression on the Standards Track (after
+   [Unicode] and/or [StringPrep] specifications have been updated to
+   address this problem).
+
+   It is not intended for preparing identity strings that are not simple
+   user names (e.g., distinguished names, domain names), nor is the
+   profile intended for use of simple user names that require different
+   handling (such as case folding).  Protocols (or applications of those
+   protocols) that have application-specific identity forms and/or
+   comparison algorithms should use mechanisms specifically designed for
+   these forms and algorithms.
+
+   Application of string preparation may have an impact upon the
+   feasibility of brute force and dictionary attacks.  While the number
+   of possible prepared strings is less than the number of possible
+   Unicode strings, the number of usable names and passwords is greater
+   than as if only ASCII was used.  Though SASLprep eliminates some
+   Unicode code point sequences as possible prepared strings, that
+   elimination generally makes the (canonical) output forms practicable
+   and prohibits nonsensical inputs.
+
+   User names and passwords should be protected from eavesdropping.
+
+   General "stringprep" and Unicode security considerations apply.  Both
+   are discussed in [StringPrep].
+
+5.  IANA Considerations
+
+   This document details the "SASLprep" profile of the [StringPrep]
+   protocol.  This profile has been registered in the stringprep profile
+   registry.
+
+      Name of this profile: SASLprep
+      RFC in which the profile is defined: RFC 4013
+      Indicator whether or not this is the newest version of the
+      profile: This is the first version of the SASPprep profile.
+
+6.  Acknowledgement
+
+   This document borrows text from "Preparation of Internationalized
+   Strings ('stringprep')" and "Nameprep: A Stringprep Profile for
+   Internationalized Domain Names", both by Paul Hoffman and Marc
+   Blanchet.  This document is a product of the IETF SASL WG.
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4013                        SASLprep                   February 2005
+
+
+7.  Normative References
+
+   [StringPrep]  Hoffman, P. and M. Blanchet, "Preparation of
+                 Internationalized Strings ("stringprep")", RFC 3454,
+                 December 2002.
+
+   [Unicode]     The Unicode Consortium, "The Unicode Standard, Version
+                 3.2.0" is defined by "The Unicode Standard, Version
+                 3.0" (Reading, MA, Addison-Wesley, 2000.  ISBN 0-201-
+                 61633-5), as amended by the "Unicode Standard Annex
+                 #27: Unicode 3.1"
+                 (http://www.unicode.org/reports/tr27/) and by the
+                 "Unicode Standard Annex #28: Unicode 3.2"
+                 (http://www.unicode.org/reports/tr28/).
+
+8.  Informative References
+
+   [Glossary]    The Unicode Consortium, "Unicode Glossary",
+                 <http://www.unicode.org/glossary/>.
+
+   [CharModel]   Whistler, K. and M. Davis, "Unicode Technical Report
+                 #17, Character Encoding Model", UTR17,
+                 <http://www.unicode.org/unicode/reports/tr17/>, August
+                 2000.
+
+   [SASL]        Melnikov, A., Ed., "Simple Authentication and Security
+                 Layer (SASL)", Work in Progress.
+
+   [CRAM-MD5]    Nerenberg, L., "The CRAM-MD5 SASL Mechanism", Work in
+                 Progress.
+
+   [DIGEST-MD5]  Leach, P., Newman, C., and A. Melnikov, "Using Digest
+                 Authentication as a SASL Mechanism", Work in Progress.
+
+   [PLAIN]       Zeilenga, K., Ed., "The Plain SASL Mechanism", Work in
+                 Progress.
+
+   [PR29]        "Public Review Issue #29: Normalization Issue",
+                 <http://www.unicode.org/review/pr-29.html>, February
+                 2004.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4013                        SASLprep                   February 2005
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2005).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the IETF's procedures with respect to rights in IETF Documents can
+   be found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at ietf-
+   ipr at ietf.org.
+
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+

Copied: branches/samba/experimental/source4/heimdal/lib/wind/rfc4518.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/heimdal/lib/wind/rfc4518.txt)
===================================================================
--- branches/samba/experimental/source4/heimdal/lib/wind/rfc4518.txt	                        (rev 0)
+++ branches/samba/experimental/source4/heimdal/lib/wind/rfc4518.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,787 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4518                           OpenLDAP Foundation
+Category: Standards Track                                      June 2006
+
+
+             Lightweight Directory Access Protocol (LDAP):
+                  Internationalized String Preparation
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   The previous Lightweight Directory Access Protocol (LDAP) technical
+   specifications did not precisely define how character string matching
+   is to be performed.  This led to a number of usability and
+   interoperability problems.  This document defines string preparation
+   algorithms for character-based matching rules defined for use in
+   LDAP.
+
+1.  Introduction
+
+1.1.  Background
+
+   A Lightweight Directory Access Protocol (LDAP) [RFC4510] matching
+   rule [RFC4517] defines an algorithm for determining whether a
+   presented value matches an attribute value in accordance with the
+   criteria defined for the rule.  The proposition may be evaluated to
+   True, False, or Undefined.
+
+      True      - the attribute contains a matching value,
+
+      False     - the attribute contains no matching value,
+
+      Undefined - it cannot be determined whether the attribute contains
+                  a matching value.
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   For instance, the caseIgnoreMatch matching rule may be used to
+   compare whether the commonName attribute contains a particular value
+   without regard for case and insignificant spaces.
+
+1.2.  X.500 String Matching Rules
+
+   "X.520: Selected attribute types" [X.520] provides (among other
+   things) value syntaxes and matching rules for comparing values
+   commonly used in the directory [X.500].  These specifications are
+   inadequate for strings composed of Unicode [Unicode] characters.
+
+   The caseIgnoreMatch matching rule [X.520], for example, is simply
+   defined as being a case-insensitive comparison where insignificant
+   spaces are ignored.  For printableString, there is only one space
+   character and case mapping is bijective, hence this definition is
+   sufficient.  However, for Unicode string types such as
+   universalString, this is not sufficient.  For example, a case-
+   insensitive matching implementation that folded lowercase characters
+   to uppercase would yield different results than an implementation
+   that used uppercase to lowercase folding.  Or one implementation may
+   view space as referring to only SPACE (U+0020), a second
+   implementation may view any character with the space separator (Zs)
+   property as a space, and another implementation may view any
+   character with the whitespace (WS) category as a space.
+
+   The lack of precise specification for character string matching has
+   led to significant interoperability problems.  When used in
+   certificate chain validation, security vulnerabilities can arise.  To
+   address these problems, this document defines precise algorithms for
+   preparing character strings for matching.
+
+1.3.  Relationship to "stringprep"
+
+   The character string preparation algorithms described in this
+   document are based upon the "stringprep" approach [RFC3454].  In
+   "stringprep", presented and stored values are first prepared for
+   comparison so that a character-by-character comparison yields the
+   "correct" result.
+
+   The approach used here is a refinement of the "stringprep" [RFC3454]
+   approach.  Each algorithm involves two additional preparation steps.
+
+   a) Prior to applying the Unicode string preparation steps outlined in
+      "stringprep", the string is transcoded to Unicode.
+
+   b) After applying the Unicode string preparation steps outlined in
+      "stringprep", the string is modified to appropriately handle
+      characters insignificant to the matching rule.
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   Hence, preparation of character strings for X.500 [X.500] matching
+   [X.501] involves the following steps:
+
+      1) Transcode
+      2) Map
+      3) Normalize
+      4) Prohibit
+      5) Check Bidi (Bidirectional)
+      6) Insignificant Character Handling
+
+   These steps are described in Section 2.
+
+   It is noted that while various tables of Unicode characters included
+   or referenced by this specification are derived from Unicode
+   [Unicode] data, these tables are to be considered definitive for the
+   purpose of implementing this specification.
+
+1.4.  Relationship to the LDAP Technical Specification
+
+   This document is an integral part of the LDAP technical specification
+   [RFC4510], which obsoletes the previously defined LDAP technical
+   specification [RFC3377] in its entirety.
+
+   This document details new LDAP internationalized character string
+   preparation algorithms used by [RFC4517] and possible other technical
+   specifications defining LDAP syntaxes and/or matching rules.
+
+1.5.  Relationship to X.500
+
+   LDAP is defined [RFC4510] in X.500 terms as an X.500 access
+   mechanism.  As such, there is a strong desire for alignment between
+   LDAP and X.500 syntax and semantics.  The character string
+   preparation algorithms described in this document are based upon
+   "Internationalized String Matching Rules for X.500" [XMATCH] proposal
+   to ITU/ISO Joint Study Group 2.
+
+1.6.  Conventions and Terms
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+   Character names in this document use the notation for code points and
+   names from the Unicode Standard [Unicode].  For example, the letter
+   "a" may be represented as either <U+0061> or <LATIN SMALL LETTER A>.
+   In the lists of mappings and the prohibited characters, the "U+" is
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   left off to make the lists easier to read.  The comments for
+   character ranges are shown in square brackets (such as "[CONTROL
+   CHARACTERS]") and do not come from the standard.
+
+   Note: a glossary of terms used in Unicode can be found in [Glossary].
+   Information on the Unicode character encoding model can be found in
+   [CharModel].
+
+   The term "combining mark", as used in this specification, refers to
+   any Unicode [Unicode] code point that has a mark property (Mn, Mc,
+   Me).  Appendix A provides a definitive list of combining marks.
+
+2.  String Preparation
+
+   The following six-step process SHALL be applied to each presented and
+   attribute value in preparation for character string matching rule
+   evaluation.
+
+      1) Transcode
+      2) Map
+      3) Normalize
+      4) Prohibit
+      5) Check bidi
+      6) Insignificant Character Handling
+
+   Failure in any step causes the assertion to evaluate to Undefined.
+
+   The character repertoire of this process is Unicode 3.2 [Unicode].
+
+   Note that this six-step process specification is intended to describe
+   expected matching behavior.  Implementations are free to use
+   alternative processes so long as the matching rule evaluation
+   behavior provided is consistent with the behavior described by this
+   specification.
+
+2.1.  Transcode
+
+   Each non-Unicode string value is transcoded to Unicode.
+
+   PrintableString [X.680] values are transcoded directly to Unicode.
+
+   UniversalString, UTF8String, and bmpString [X.680] values need not be
+   transcoded as they are Unicode-based strings (in the case of
+   bmpString, a subset of Unicode).
+
+   TeletexString [X.680] values are transcoded to Unicode.  As there is
+   no standard for mapping TeletexString values to Unicode, the mapping
+   is left a local matter.
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   For these and other reasons, use of TeletexString is NOT RECOMMENDED.
+
+   The output is the transcoded string.
+
+2.2.  Map
+
+   SOFT HYPHEN (U+00AD) and MONGOLIAN TODO SOFT HYPHEN (U+1806) code
+   points are mapped to nothing.  COMBINING GRAPHEME JOINER (U+034F) and
+   VARIATION SELECTORs (U+180B-180D, FF00-FE0F) code points are also
+   mapped to nothing.  The OBJECT REPLACEMENT CHARACTER (U+FFFC) is
+   mapped to nothing.
+
+   CHARACTER TABULATION (U+0009), LINE FEED (LF) (U+000A), LINE
+   TABULATION (U+000B), FORM FEED (FF) (U+000C), CARRIAGE RETURN (CR)
+   (U+000D), and NEXT LINE (NEL) (U+0085) are mapped to SPACE (U+0020).
+
+   All other control code (e.g., Cc) points or code points with a
+   control function (e.g., Cf) are mapped to nothing.  The following is
+   a complete list of these code points: U+0000-0008, 000E-001F, 007F-
+   0084, 0086-009F, 06DD, 070F, 180E, 200C-200F, 202A-202E, 2060-2063,
+   206A-206F, FEFF, FFF9-FFFB, 1D173-1D17A, E0001, E0020-E007F.
+
+   ZERO WIDTH SPACE (U+200B) is mapped to nothing.  All other code
+   points with Separator (space, line, or paragraph) property (e.g., Zs,
+   Zl, or Zp) are mapped to SPACE (U+0020).  The following is a complete
+   list of these code points: U+0020, 00A0, 1680, 2000-200A, 2028-2029,
+   202F, 205F, 3000.
+
+   For case ignore, numeric, and stored prefix string matching rules,
+   characters are case folded per B.2 of [RFC3454].
+
+   The output is the mapped string.
+
+2.3.  Normalize
+
+   The input string is to be normalized to Unicode Form KC
+   (compatibility composed) as described in [UAX15].  The output is the
+   normalized string.
+
+2.4.  Prohibit
+
+   All Unassigned code points are prohibited.  Unassigned code points
+   are listed in Table A.1 of [RFC3454].
+
+   Characters that, per Section 5.8 of [RFC3454], change display
+   properties or are deprecated are prohibited.  These characters are
+   listed in Table C.8 of [RFC3454].
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   Private Use code points are prohibited.  These characters are listed
+   in Table C.3 of [RFC3454].
+
+   All non-character code points are prohibited.  These code points are
+   listed in Table C.4 of [RFC3454].
+
+   Surrogate codes are prohibited.  These characters are listed in Table
+   C.5 of [RFC3454].
+
+   The REPLACEMENT CHARACTER (U+FFFD) code point is prohibited.
+
+   The step fails if the input string contains any prohibited code
+   point.  Otherwise, the output is the input string.
+
+2.5.  Check bidi
+
+   Bidirectional characters are ignored.
+
+2.6.  Insignificant Character Handling
+
+   In this step, the string is modified to ensure proper handling of
+   characters insignificant to the matching rule.  This modification
+   differs from matching rule to matching rule.
+
+   Section 2.6.1 applies to case ignore and exact string matching.
+   Section 2.6.2 applies to numericString matching.
+   Section 2.6.3 applies to telephoneNumber matching.
+
+2.6.1.  Insignificant Space Handling
+
+   For the purposes of this section, a space is defined to be the SPACE
+   (U+0020) code point followed by no combining marks.
+
+       NOTE - The previous steps ensure that the string cannot contain
+              any code points in the separator class, other than SPACE
+              (U+0020).
+
+   For input strings that are attribute values or non-substring
+   assertion values:  If the input string contains no non-space
+   character, then the output is exactly two SPACEs.  Otherwise (the
+   input string contains at least one non-space character), the string
+   is modified such that the string starts with exactly one space
+   character, ends with exactly one SPACE character, and any inner
+   (non-empty) sequence of space characters is replaced with exactly two
+   SPACE characters.  For instance, the input strings
+   "foo<SPACE>bar<SPACE><SPACE>", result in the output
+   "<SPACE>foo<SPACE><SPACE>bar<SPACE>".
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   For input strings that are substring assertion values: If the string
+   being prepared contains no non-space characters, then the output
+   string is exactly one SPACE.  Otherwise, the following steps are
+   taken:
+
+   -  If the input string is an initial substring, it is modified to
+      start with exactly one SPACE character;
+
+   -  If the input string is an initial or an any substring that ends in
+      one or more space characters, it is modified to end with exactly
+      one SPACE character;
+
+   -  If the input string is an any or a final substring that starts in
+      one or more space characters, it is modified to start with exactly
+      one SPACE character; and
+
+   -  If the input string is a final substring, it is modified to end
+      with exactly one SPACE character.
+
+   For instance, for the input string "foo<SPACE>bar<SPACE><SPACE>" as
+   an initial substring, the output would be
+   "<SPACE>foo<SPACE><SPACE>bar<SPACE>".  As an any or final substring,
+   the same input would result in "foo<SPACE>bar<SPACE>".
+
+   Appendix B discusses the rationale for the behavior.
+
+2.6.2.  numericString Insignificant Character Handling
+
+   For the purposes of this section, a space is defined to be the SPACE
+   (U+0020) code point followed by no combining marks.
+
+   All spaces are regarded as insignificant and are to be removed.
+
+   For example, removal of spaces from the Form KC string:
+       "<SPACE><SPACE>123<SPACE><SPACE>456<SPACE><SPACE>"
+   would result in the output string:
+       "123456"
+   and the Form KC string:
+       "<SPACE><SPACE><SPACE>"
+   would result in the output string:
+       "" (an empty string).
+
+2.6.3.  telephoneNumber Insignificant Character Handling
+
+   For the purposes of this section, a hyphen is defined to be a
+   HYPHEN-MINUS (U+002D), ARMENIAN HYPHEN (U+058A), HYPHEN (U+2010),
+   NON-BREAKING HYPHEN (U+2011), MINUS SIGN (U+2212), SMALL HYPHEN-MINUS
+   (U+FE63), or FULLWIDTH HYPHEN-MINUS (U+FF0D) code point followed by
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   no combining marks and a space is defined to be the SPACE (U+0020)
+   code point followed by no combining marks.
+
+   All hyphens and spaces are considered insignificant and are to be
+   removed.
+
+   For example, removal of hyphens and spaces from the Form KC string:
+       "<SPACE><HYPHEN>123<SPACE><SPACE>456<SPACE><HYPHEN>"
+   would result in the output string:
+       "123456"
+   and the Form KC string:
+       "<HYPHEN><HYPHEN><HYPHEN>"
+   would result in the (empty) output string:
+       "".
+
+3.  Security Considerations
+
+   "Preparation of Internationalized Strings ("stringprep")" [RFC3454]
+   security considerations generally apply to the algorithms described
+   here.
+
+4.  Acknowledgements
+
+   The approach used in this document is based upon design principles
+   and algorithms described in "Preparation of Internationalized Strings
+   ('stringprep')" [RFC3454] by Paul Hoffman and Marc Blanchet.  Some
+   additional guidance was drawn from Unicode Technical Standards,
+   Technical Reports, and Notes.
+
+   This document is a product of the IETF LDAP Revision (LDAPBIS)
+   Working Group.
+
+5.  References
+
+5.1.  Normative References
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3454]     Hoffman, P. and M. Blanchet, "Preparation of
+                 Internationalized Strings ("stringprep")", RFC 3454,
+                 December 2002.
+
+   [RFC4510]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Technical Specification Road Map", RFC 4510,
+                 June 2006.
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 8]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   [RFC4517]     Legg, S., Ed., "Lightweight Directory Access Protocol
+                 (LDAP): Syntaxes and Matching Rules", RFC 4517, June
+                 2006.
+
+   [Unicode]     The Unicode Consortium, "The Unicode Standard, Version
+                 3.2.0" is defined by "The Unicode Standard, Version
+                 3.0" (Reading, MA, Addison-Wesley, 2000.  ISBN 0-201-
+                 61633-5), as amended by the "Unicode Standard Annex
+                 #27: Unicode 3.1"
+                 (http://www.unicode.org/reports/tr27/) and by the
+                 "Unicode Standard Annex #28: Unicode 3.2"
+                 (http://www.unicode.org/reports/tr28/).
+
+   [UAX15]       Davis, M. and M. Duerst, "Unicode Standard Annex #15:
+                 Unicode Normalization Forms, Version 3.2.0".
+                 <http://www.unicode.org/unicode/reports/tr15/tr15-
+                 22.html>, March 2002.
+
+   [X.680]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "Abstract
+                 Syntax Notation One (ASN.1) - Specification of Basic
+                 Notation", X.680(2002) (also ISO/IEC 8824-1:2002).
+
+5.2.  Informative References
+
+   [X.500]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Overview of concepts, models and
+                 services," X.500(1993) (also ISO/IEC 9594-1:1994).
+
+   [X.501]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Models," X.501(1993) (also ISO/IEC 9594-
+                 2:1994).
+
+   [X.520]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory: Selected Attribute Types", X.520(1993) (also
+                 ISO/IEC 9594-6:1994).
+
+   [Glossary]    The Unicode Consortium, "Unicode Glossary",
+                 <http://www.unicode.org/glossary/>.
+
+   [CharModel]   Whistler, K. and M. Davis, "Unicode Technical Report
+                 #17, Character Encoding Model", UTR17,
+                 <http://www.unicode.org/unicode/reports/tr17/>, August
+                 2000.
+
+
+
+
+Zeilenga                    Standards Track                     [Page 9]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   [RFC3377]     Hodges, J. and R. Morgan, "Lightweight Directory Access
+                 Protocol (v3): Technical Specification", RFC 3377,
+                 September 2002.
+
+   [RFC4515]     Smith, M., Ed. and T. Howes, "Lightweight Directory
+                 Access Protocol (LDAP): String Representation of Search
+                 Filters", RFC 4515, June 2006.
+
+   [XMATCH]      Zeilenga, K., "Internationalized String Matching Rules
+                 for X.500", Work in Progress.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 10]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+Appendix A.  Combining Marks
+
+   This appendix is normative.
+
+   This table was derived from Unicode [Unicode] data files; it lists
+   all code points with the Mn, Mc, or Me properties.  This table is to
+   be considered definitive for the purposes of implementation of this
+   specification.
+
+         0300-034F 0360-036F 0483-0486 0488-0489 0591-05A1
+         05A3-05B9 05BB-05BC 05BF 05C1-05C2 05C4 064B-0655 0670
+         06D6-06DC 06DE-06E4 06E7-06E8 06EA-06ED 0711 0730-074A
+         07A6-07B0 0901-0903 093C 093E-094F 0951-0954 0962-0963
+         0981-0983 09BC 09BE-09C4 09C7-09C8 09CB-09CD 09D7
+         09E2-09E3 0A02 0A3C 0A3E-0A42 0A47-0A48 0A4B-0A4D
+         0A70-0A71 0A81-0A83 0ABC 0ABE-0AC5 0AC7-0AC9 0ACB-0ACD
+         0B01-0B03 0B3C 0B3E-0B43 0B47-0B48 0B4B-0B4D 0B56-0B57
+         0B82 0BBE-0BC2 0BC6-0BC8 0BCA-0BCD 0BD7 0C01-0C03
+         0C3E-0C44 0C46-0C48 0C4A-0C4D 0C55-0C56 0C82-0C83
+         0CBE-0CC4 0CC6-0CC8 0CCA-0CCD 0CD5-0CD6 0D02-0D03
+         0D3E-0D43 0D46-0D48 0D4A-0D4D 0D57 0D82-0D83 0DCA
+         0DCF-0DD4 0DD6 0DD8-0DDF 0DF2-0DF3 0E31 0E34-0E3A
+         0E47-0E4E 0EB1 0EB4-0EB9 0EBB-0EBC 0EC8-0ECD 0F18-0F19
+         0F35 0F37 0F39 0F3E-0F3F 0F71-0F84 0F86-0F87 0F90-0F97
+         0F99-0FBC 0FC6 102C-1032 1036-1039 1056-1059 1712-1714
+         1732-1734 1752-1753 1772-1773 17B4-17D3 180B-180D 18A9
+         20D0-20EA 302A-302F 3099-309A FB1E FE00-FE0F FE20-FE23
+         1D165-1D169 1D16D-1D172 1D17B-1D182 1D185-1D18B
+         1D1AA-1D1AD
+
+Appendix B.  Substrings Matching
+
+   This appendix is non-normative.
+
+   In the absence of substrings matching, the insignificant space
+   handling for case ignore/exact matching could be simplified.
+   Specifically, the handling could be to require that all sequences of
+   one or more spaces be replaced with one space and, if the string
+   contains non-space characters, removal of all leading spaces and
+   trailing spaces.
+
+   In the presence of substrings matching, this simplified space
+   handling would lead to unexpected and undesirable matching behavior.
+   For instance:
+
+   1) (CN=foo\20*\20bar) would match the CN value "foobar";
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 11]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   2) (CN=*\20foobar\20*) would match "foobar", but
+      (CN=*\20*foobar*\20*) would not.
+
+   Note to readers not familiar with LDAP substrings matching: the LDAP
+   filter [RFC4515] assertion (CN=A*B*C) says to "match any value (of
+   the attribute CN) that begins with A, contains B after A, ends with C
+   where C is also after B."
+
+   The first case illustrates that this simplified space handling would
+   cause leading and trailing spaces in substrings of the string to be
+   regarded as insignificant.  However, only leading and trailing (as
+   well as multiple consecutive spaces) of the string (as a whole) are
+   insignificant.
+
+   The second case illustrates that this simplified space handling would
+   cause sub-partitioning failures.  That is, if a prepared any
+   substring matches a partition of the attribute value, then an
+   assertion constructed by subdividing that substring into multiple
+   substrings should also match.
+
+   In designing an appropriate approach for space handling for
+   substrings matching, one must study key aspects of X.500 case
+   exact/ignore matching.  X.520 [X.520] says:
+
+      The [substrings] rule returns TRUE if there is a partitioning of
+      the attribute value (into portions) such that:
+
+         -  the specified substrings (initial, any, final) match
+            different portions of the value in the order of the strings
+            sequence;
+
+         -  initial, if present, matches the first portion of the value;
+
+         -  final, if present, matches the last portion of the value;
+
+         -  any, if present, matches some arbitrary portion of the
+            value.
+
+   That is, the substrings assertion (CN=foo\20*\20bar) matches the
+   attribute value "foo<SPACE><SPACE>bar" as the value can be
+   partitioned into the portions "foo<SPACE>" and "<SPACE>bar" meeting
+   the above requirements.
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 12]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   X.520 also says:
+
+      [T]he following spaces are regarded as not significant:
+
+         -  leading spaces (i.e., those preceding the first character
+            that is not a space);
+
+         -  trailing spaces (i.e., those following the last character
+            that is not a space);
+
+         -  multiple consecutive spaces (these are taken as equivalent
+            to a single space character).
+
+   This statement applies to the assertion values and attribute values
+   as whole strings, and not individually to substrings of an assertion
+   value.  In particular, the statements should be taken to mean that if
+   an assertion value and attribute value match without any
+   consideration to insignificant characters, then that assertion value
+   should also match any attribute value that differs only by inclusion
+   nor removal of insignificant characters.
+
+   Hence the assertion (CN=foo\20*\20bar) matches
+   "foo<SPACE><SPACE><SPACE>bar" and "foo<SPACE>bar" as these values
+   only differ from "foo<SPACE><SPACE>bar" by the inclusion or removal
+   of insignificant spaces.
+
+   Astute readers of this text will also note that there are special
+   cases where the specified space handling does not ignore spaces that
+   could be considered insignificant.  For instance, the assertion
+   (CN=\20*\20*\20) does not match "<SPACE><SPACE><SPACE>"
+   (insignificant spaces present in value) or " " (insignificant spaces
+   not present in value).  However, as these cases have no practical
+   application that cannot be met by simple assertions, e.g., (cn=\20),
+   and this minor anomaly can only be fully addressed by a preparation
+   algorithm to be used in conjunction with character-by-character
+   partitioning and matching, the anomaly is considered acceptable.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 13]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 14]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc2307.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc2307.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc2307.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc2307.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,1179 @@
+
+
+
+
+
+
+Network Working Group                                          L. Howard
+Request for Comments: 2307                        Independent Consultant
+Category: Experimental                                        March 1998
+
+
+      An Approach for Using LDAP as a Network Information Service
+
+Status of this Memo
+
+   This memo defines an Experimental Protocol for the Internet
+   community.  It does not specify an Internet standard of any kind.
+   Discussion and suggestions for improvement are requested.
+   Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (1998).  All Rights Reserved.
+
+Abstract
+
+   This document describes an experimental mechanism for mapping
+   entities related to TCP/IP and the UNIX system into X.500 [X500]
+   entries so that they may be resolved with the Lightweight Directory
+   Access Protocol [RFC2251]. A set of attribute types and object
+   classes are proposed, along with specific guidelines for interpreting
+   them.
+
+   The intention is to assist the deployment of LDAP as an
+   organizational nameservice. No proposed solutions are intended as
+   standards for the Internet. Rather, it is hoped that a general
+   consensus will emerge as to the appropriate solution to such
+   problems, leading eventually to the adoption of standards. The
+   proposed mechanism has already been implemented with some success.
+
+1. Background and Motivation
+
+   The UNIX (R) operating system, and its derivatives (specifically,
+   those which support TCP/IP and conform to the X/Open Single UNIX
+   specification [XOPEN]) require a means of looking up entities, by
+   matching them against search criteria or by enumeration. (Other
+   operating systems that support TCP/IP may provide some means of
+   resolving some of these entities. This schema is applicable to those
+   environments also.)
+
+   These entities include users, groups, IP services (which map names to
+   IP ports and protocols, and vice versa), IP protocols (which map
+   names to IP protocol numbers and vice versa), RPCs (which map names
+   to ONC Remote Procedure Call [RFC1057] numbers and vice versa), NIS
+
+
+
+Howard                        Experimental                      [Page 1]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+   netgroups, booting information (boot parameters and MAC address
+   mappings), filesystem mounts, IP hosts and networks, and RFC822 mail
+   aliases.
+
+   Resolution requests are made through a set of C functions, provided
+   in the UNIX system's C library. For example, the UNIX system utility
+   "ls", which enumerates the contents of a filesystem directory, uses
+   the C library function getpwuid() in order to map user IDs to login
+   names. Once the request is made, it is resolved using a "nameservice"
+   which is supported by the client library. The nameservice may be, at
+   its simplest, a collection of files in the local filesystem which are
+   opened and searched by the C library. Other common nameservices
+   include the Network Information Service (NIS) and the Domain Name
+   System (DNS). (The latter is typically used for resolving hosts,
+   services and networks.) Both these nameservices have the advantage of
+   being distributed and thus permitting a common set of entities to be
+   shared amongst many clients.
+
+   LDAP is a distributed, hierarchical directory service access protocol
+   which is used to access repositories of users and other network-
+   related entities. Because LDAP is often not tightly integrated with
+   the host operating system, information such as users may need to be
+   kept both in LDAP and in an operating system supported nameservice
+   such as NIS. By using LDAP as the the primary means of resolving
+   these entities, these redundancy issues are minimized and the
+   scalability of LDAP can be exploited. (By comparison, NIS services
+   based on flat files do not have the scalability or extensibility of
+   LDAP or X.500.)
+
+   The object classes and attributes defined below are suitable for
+   representing the aforementioned entities in a form compatible with
+   LDAP and X.500 directory services.
+
+2. General Issues
+
+2.1. Terminology
+
+   The key words "MUST", "SHOULD", and "MAY" used in this document are
+   to be interpreted as described in [RFC2119].
+
+   For the purposes of this document, the term "nameservice" refers to a
+   service, such as NIS or flat files, that is used by the operating
+   system to resolve entities within a single, local naming context.
+   Contrast this with a "directory service" such as LDAP, which supports
+   extensible schema and multiple naming contexts.
+
+
+
+
+
+
+Howard                        Experimental                      [Page 2]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+   The term "NIS-related entities" broadly refers to entities which are
+   typically resolved using the Network Information Service. (NIS was
+   previously known as YP.) Deploying LDAP for resolving these entities
+   does not imply that NIS be used, as a gateway or otherwise. In
+   particular, the host and network classes are generically applicable,
+   and may be implemented on any system that wishes to use LDAP or X.500
+   for host and network resolution.
+
+   The "DUA" (directory user agent) refers to the LDAP client querying
+   these entities, such as an LDAP to NIS gateway or the C library.  The
+   "client" refers to the application which ultimately makes use of the
+   information returned by the resolution. It is irrelevant whether the
+   DUA and the client reside within the same address space. The act of
+   the DUA making this information to the client is termed
+   "republishing".
+
+   To avoid confusion, the term "login name" refers to the user's login
+   name (being the value of the uid attribute) and the term "user ID"
+   refers to he user's integer identification number (being the value of
+   the uidNumber attribute).
+
+   The phrases "resolving an entity" and "resolution of entities" refer
+   respectively to enumerating NIS-related entities of a given type, and
+   matching them against a given search criterion. One or more entities
+   are returned as a result of successful "resolutions" (a "match"
+   operation will only return one entity).
+
+   The use of the term UNIX does not confer upon this schema the
+   endorsement of owners of the UNIX trademark. Where necessary, the
+   term "TCP/IP entity" is used to refer to protocols, services, hosts,
+   and networks, and the term "UNIX entity" to its complement. (The
+   former category does not mandate the host operating system supporting
+   the interfaces required for resolving UNIX entities.)
+
+   The OIDs defined below are derived from iso(1) org(3) dod(6)
+   internet(1) directory(1) nisSchema(1).
+
+2.2. Attributes
+
+   The attributes and classes defined in this document are summarized
+   below.
+
+   The following attributes are defined in this document:
+
+           uidNumber
+           gidNumber
+           gecos
+           homeDirectory
+
+
+
+Howard                        Experimental                      [Page 3]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+           loginShell
+           shadowLastChange
+           shadowMin
+           shadowMax
+           shadowWarning
+           shadowInactive
+           shadowExpire
+           shadowFlag
+           memberUid
+           memberNisNetgroup
+           nisNetgroupTriple
+           ipServicePort
+           ipServiceProtocol
+           ipProtocolNumber
+           oncRpcNumber
+           ipHostNumber
+           ipNetworkNumber
+           ipNetmaskNumber
+           macAddress
+           bootParameter
+           bootFile
+           nisMapName
+           nisMapEntry
+
+   Additionally, some of the attributes defined in [RFC2256] are
+   required.
+
+2.3. Object classes
+
+   The following object classes are defined in this document:
+
+           posixAccount
+           shadowAccount
+           posixGroup
+           ipService
+           ipProtocol
+           oncRpc
+           ipHost
+           ipNetwork
+           nisNetgroup
+           nisMap
+           nisObject
+           ieee802Device
+           bootableDevice
+
+   Additionally, some of the classes defined in [RFC2256] are required.
+
+
+
+
+
+Howard                        Experimental                      [Page 4]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+2.4. Syntax definitions
+
+   The following syntax definitions [RFC2252] are used by this schema.
+   The nisNetgroupTripleSyntax represents NIS netgroup triples:
+
+           ( nisSchema.0.0 NAME 'nisNetgroupTripleSyntax'
+             DESC 'NIS netgroup triple' )
+
+   Values in this syntax are represented by the following:
+
+        nisnetgrouptriple = "(" hostname "," username "," domainname ")"
+        hostname          = "" / "-" / keystring
+        username          = "" / "-" / keystring
+        domainname        = "" / "-" / keystring
+
+   X.500 servers may use the following representation of the above
+   syntax:
+
+        nisNetgroupTripleSyntax ::= SEQUENCE {
+         hostname  [0] IA5String OPTIONAL,
+         username  [1] IA5String OPTIONAL,
+         domainname  [2] IA5String OPTIONAL
+        }
+
+   The bootParameterSyntax syntax represents boot parameters:
+
+           ( nisSchema.0.1 NAME 'bootParameterSyntax'
+             DESC 'Boot parameter' )
+
+   where:
+
+        bootparameter     = key "=" server ":" path
+        key               = keystring
+        server            = keystring
+        path              = keystring
+
+   X.500 servers may use the following representation of the above
+   syntax:
+
+        bootParameterSyntax ::= SEQUENCE {
+         key     IA5String,
+         server  IA5String,
+         path    IA5String
+        }
+
+   Values adhering to these syntaxes are encoded as strings by LDAP
+   servers.
+
+
+
+
+Howard                        Experimental                      [Page 5]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+3. Attribute definitions
+
+   This section contains attribute definitions to be implemented by DUAs
+   supporting this schema.
+
+        ( nisSchema.1.0 NAME 'uidNumber'
+          DESC 'An integer uniquely identifying a user in an
+                administrative domain'
+          EQUALITY integerMatch SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.1 NAME 'gidNumber'
+          DESC 'An integer uniquely identifying a group in an
+                administrative domain'
+          EQUALITY integerMatch SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.2 NAME 'gecos'
+          DESC 'The GECOS field; the common name'
+          EQUALITY caseIgnoreIA5Match
+          SUBSTRINGS caseIgnoreIA5SubstringsMatch
+          SYNTAX 'IA5String' SINGLE-VALUE )
+
+        ( nisSchema.1.3 NAME 'homeDirectory'
+          DESC 'The absolute path to the home directory'
+          EQUALITY caseExactIA5Match
+          SYNTAX 'IA5String' SINGLE-VALUE )
+
+        ( nisSchema.1.4 NAME 'loginShell'
+          DESC 'The path to the login shell'
+          EQUALITY caseExactIA5Match
+          SYNTAX 'IA5String' SINGLE-VALUE )
+
+        ( nisSchema.1.5 NAME 'shadowLastChange'
+          EQUALITY integerMatch
+          SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.6 NAME 'shadowMin'
+          EQUALITY integerMatch
+          SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.7 NAME 'shadowMax'
+          EQUALITY integerMatch
+          SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.8 NAME 'shadowWarning'
+          EQUALITY integerMatch
+          SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.9 NAME 'shadowInactive'
+
+
+
+Howard                        Experimental                      [Page 6]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+          EQUALITY integerMatch
+          SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.10 NAME 'shadowExpire'
+          EQUALITY integerMatch
+          SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.11 NAME 'shadowFlag'
+          EQUALITY integerMatch
+          SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.12 NAME 'memberUid'
+          EQUALITY caseExactIA5Match
+          SUBSTRINGS caseExactIA5SubstringsMatch
+          SYNTAX 'IA5String' )
+
+        ( nisSchema.1.13 NAME 'memberNisNetgroup'
+          EQUALITY caseExactIA5Match
+          SUBSTRINGS caseExactIA5SubstringsMatch
+          SYNTAX 'IA5String' )
+
+        ( nisSchema.1.14 NAME 'nisNetgroupTriple'
+          DESC 'Netgroup triple'
+          SYNTAX 'nisNetgroupTripleSyntax' )
+
+        ( nisSchema.1.15 NAME 'ipServicePort'
+          EQUALITY integerMatch
+          SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.16 NAME 'ipServiceProtocol'
+          SUP name )
+
+        ( nisSchema.1.17 NAME 'ipProtocolNumber'
+          EQUALITY integerMatch
+          SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.18 NAME 'oncRpcNumber'
+          EQUALITY integerMatch
+          SYNTAX 'INTEGER' SINGLE-VALUE )
+
+        ( nisSchema.1.19 NAME 'ipHostNumber'
+          DESC 'IP address as a dotted decimal, eg. 192.168.1.1,
+                omitting leading zeros'
+          EQUALITY caseIgnoreIA5Match
+          SYNTAX 'IA5String{128}' )
+
+        ( nisSchema.1.20 NAME 'ipNetworkNumber'
+          DESC 'IP network as a dotted decimal, eg. 192.168,
+
+
+
+Howard                        Experimental                      [Page 7]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+                omitting leading zeros'
+          EQUALITY caseIgnoreIA5Match
+          SYNTAX 'IA5String{128}' SINGLE-VALUE )
+
+        ( nisSchema.1.21 NAME 'ipNetmaskNumber'
+          DESC 'IP netmask as a dotted decimal, eg. 255.255.255.0,
+                omitting leading zeros'
+          EQUALITY caseIgnoreIA5Match
+          SYNTAX 'IA5String{128}' SINGLE-VALUE )
+
+        ( nisSchema.1.22 NAME 'macAddress'
+          DESC 'MAC address in maximal, colon separated hex
+                notation, eg. 00:00:92:90:ee:e2'
+          EQUALITY caseIgnoreIA5Match
+          SYNTAX 'IA5String{128}' )
+
+        ( nisSchema.1.23 NAME 'bootParameter'
+          DESC 'rpc.bootparamd parameter'
+          SYNTAX 'bootParameterSyntax' )
+
+        ( nisSchema.1.24 NAME 'bootFile'
+          DESC 'Boot image name'
+          EQUALITY caseExactIA5Match
+          SYNTAX 'IA5String' )
+
+        ( nisSchema.1.26 NAME 'nisMapName'
+          SUP name )
+
+        ( nisSchema.1.27 NAME 'nisMapEntry'
+          EQUALITY caseExactIA5Match
+          SUBSTRINGS caseExactIA5SubstringsMatch
+          SYNTAX 'IA5String{1024}' SINGLE-VALUE )
+
+4. Class definitions
+
+   This section contains class definitions to be implemented by DUAs
+   supporting the schema.
+
+   The rfc822MailGroup object class MAY be used to represent a mail
+   group for the purpose of alias expansion. Several alternative schemes
+   for mail routing and delivery using LDAP directories, which are
+   outside the scope of this document.
+
+        ( nisSchema.2.0 NAME 'posixAccount' SUP top AUXILIARY
+          DESC 'Abstraction of an account with POSIX attributes'
+          MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
+          MAY ( userPassword $ loginShell $ gecos $ description ) )
+
+
+
+
+Howard                        Experimental                      [Page 8]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+        ( nisSchema.2.1 NAME 'shadowAccount' SUP top AUXILIARY
+          DESC 'Additional attributes for shadow passwords'
+          MUST uid
+          MAY ( userPassword $ shadowLastChange $ shadowMin
+                shadowMax $ shadowWarning $ shadowInactive $
+                shadowExpire $ shadowFlag $ description ) )
+
+        ( nisSchema.2.2 NAME 'posixGroup' SUP top STRUCTURAL
+          DESC 'Abstraction of a group of accounts'
+          MUST ( cn $ gidNumber )
+          MAY ( userPassword $ memberUid $ description ) )
+
+        ( nisSchema.2.3 NAME 'ipService' SUP top STRUCTURAL
+          DESC 'Abstraction an Internet Protocol service.
+                Maps an IP port and protocol (such as tcp or udp)
+                to one or more names; the distinguished value of
+                the cn attribute denotes the service's canonical
+                name'
+          MUST ( cn $ ipServicePort $ ipServiceProtocol )
+          MAY ( description ) )
+
+        ( nisSchema.2.4 NAME 'ipProtocol' SUP top STRUCTURAL
+          DESC 'Abstraction of an IP protocol. Maps a protocol number
+                to one or more names. The distinguished value of the cn
+                attribute denotes the protocol's canonical name'
+          MUST ( cn $ ipProtocolNumber $ description )
+          MAY description )
+
+        ( nisSchema.2.5 NAME 'oncRpc' SUP top STRUCTURAL
+          DESC 'Abstraction of an Open Network Computing (ONC)
+               [RFC1057] Remote Procedure Call (RPC) binding.
+               This class maps an ONC RPC number to a name.
+               The distinguished value of the cn attribute denotes
+               the RPC service's canonical name'
+          MUST ( cn $ oncRpcNumber $ description )
+          MAY description )
+
+        ( nisSchema.2.6 NAME 'ipHost' SUP top AUXILIARY
+
+          DESC 'Abstraction of a host, an IP device. The distinguished
+                value of the cn attribute denotes the host's canonical
+                name. Device SHOULD be used as a structural class'
+          MUST ( cn $ ipHostNumber )
+          MAY ( l $ description $ manager ) )
+
+        ( nisSchema.2.7 NAME 'ipNetwork' SUP top STRUCTURAL
+          DESC 'Abstraction of a network. The distinguished value of
+                the cn attribute denotes the network's canonical name'
+
+
+
+Howard                        Experimental                      [Page 9]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+          MUST ( cn $ ipNetworkNumber )
+          MAY ( ipNetmaskNumber $ l $ description $ manager ) )
+
+        ( nisSchema.2.8 NAME 'nisNetgroup' SUP top STRUCTURAL
+          DESC 'Abstraction of a netgroup. May refer to other netgroups'
+          MUST cn
+          MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) )
+
+        ( nisSchema.2.09 NAME 'nisMap' SUP top STRUCTURAL
+          DESC 'A generic abstraction of a NIS map'
+          MUST nisMapName
+          MAY description )
+
+        ( nisSchema.2.10 NAME 'nisObject' SUP top STRUCTURAL
+          DESC 'An entry in a NIS map'
+          MUST ( cn $ nisMapEntry $ nisMapName )
+          MAY description )
+
+        ( nisSchema.2.11 NAME 'ieee802Device' SUP top AUXILIARY
+          DESC 'A device with a MAC address; device SHOULD be
+                used as a structural class'
+          MAY macAddress )
+
+        ( nisSchema.2.12 NAME 'bootableDevice' SUP top AUXILIARY
+          DESC 'A device with boot parameters; device SHOULD be
+                used as a structural class'
+          MAY ( bootFile $ bootParameter ) )
+
+5. Implementation details
+
+5.1. Suggested resolution methods
+
+   The preferred means of directing a client application (one using the
+   shared services of the C library) to use LDAP as its information
+   source for the functions listed in 5.2 is to modify the source code
+   to directly query LDAP. As the source to commercial C libraries and
+   applications is rarely available to the end-user, one could emulate a
+   supported nameservice (such as NIS). (This is also an appropriate
+   opportunity to perform caching of entries across process address
+   spaces.) In the case of NIS, reference implementations are widely
+   available and the RPC interface is well known.
+
+   The means by which the operating system is directed to use LDAP is
+   implementation dependent. For example, some operating systems and C
+   libraries support end-user extensible resolvers using dynamically
+   loadable libraries and a nameservice "switch". The means in which the
+   DUA locates LDAP servers is also implementation dependent.
+
+
+
+
+Howard                        Experimental                     [Page 10]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+5.2. Affected library functions
+
+   The following functions are typically found in the C libraries of
+   most UNIX and POSIX compliant systems. An LDAP search filter
+   [RFC2254] which may be used to satisfy the function call is included
+   alongside each function name. Parameters are denoted by %s and %d for
+   string and integer arguments, respectively. Long lines are broken.
+
+        getpwnam()              (&(objectClass=posixAccount)(uid=%s))
+        getpwuid()              (&(objectClass=posixAccount)
+                                (uidNumber=%d))
+        getpwent()              (objectClass=posixAccount)
+
+        getspnam()              (&(objectClass=shadowAccount)(uid=%s))
+        getspent()              (objectClass=shadowAccount)
+
+        getgrnam()              (&(objectClass=posixGroup)(cn=%s))
+        getgrgid()              (&(objectClass=posixGroup)
+                                (gidNumber=%d))
+        getgrent()              (objectClass=posixGroup)
+
+        getservbyname()         (&(objectClass=ipService)
+                                (cn=%s)(ipServiceProtocol=%s))
+        getservbyport()         (&(objectClass=ipService)
+                                (ipServicePort=%d)
+                                (ipServiceProtocol=%s))
+        getservent()            (objectClass=ipService)
+
+        getrpcbyname()          (&(objectClass=oncRpc)(cn=%s))
+        getrpcbynumber()        (&(objectClass=oncRpc)(oncRpcNumber=%d))
+        getrpcent()             (objectClass=oncRpc)
+
+        getprotobyname()        (&(objectClass=ipProtocol)(cn=%s))
+        getprotobynumber()      (&(objectClass=ipProtocol)
+                                (ipProtocolNumber=%d))
+        getprotoent()           (objectClass=ipProtocol)
+
+        gethostbyname()         (&(objectClass=ipHost)(cn=%s))
+        gethostbyaddr()         (&(objectClass=ipHost)(ipHostNumber=%s))
+        gethostent()            (objectClass=ipHost)
+
+        getnetbyname()          (&(objectClass=ipNetwork)(cn=%s))
+        getnetbyaddr()          (&(objectClass=ipNetwork)
+                                (ipNetworkNumber=%s))
+        getnetent()             (objectClass=ipNetwork)
+
+        setnetgrent()           (&(objectClass=nisNetgroup)(cn=%s))
+
+
+
+
+Howard                        Experimental                     [Page 11]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+5.3. Interpreting user and group entries
+
+   User and group resolution is initiated by the functions prefixed by
+   getpw and getgr respectively. The uid attribute contains the user's
+   login name. The cn attribute, in posixGroup entries, contains the
+   group's name.
+
+   The account object class provides a convenient structural class for
+   posixAccount, and SHOULD be used where additional attributes are not
+   required.
+
+   It is suggested that uid and cn are used as the RDN attribute type
+   for posixAccount and posixGroup entries, respectively.
+
+   An account's GECOS field is preferably determined by a value of the
+   gecos attribute. If no gecos attribute exists, the value of the cn
+   attribute MUST be used. (The existence of the gecos attribute allows
+   information embedded in the GECOS field, such as a user's telephone
+   number, to be returned to the client without overloading the cn
+   attribute. It also accommodates directories where the common name
+   does not contain the user's full name.)
+
+   An entry of class posixAccount, posixGroup, or shadowAccount without
+   a userPassword attribute MUST NOT be used for authentication. The
+   client should be returned a non-matchable password such as "x".
+
+   userPassword values MUST be represented by following syntax:
+
+        passwordvalue          = schemeprefix encryptedpassword
+        schemeprefix           = "{" scheme "}"
+        scheme                 = "crypt" / "md5" / "sha" / altscheme
+        altscheme              = "x-" keystring
+        encryptedpassword      = encrypted password
+
+   The encrypted password contains of a plaintext key hashed using the
+   algorithm scheme.
+
+   userPassword values which do not adhere to this syntax MUST NOT be
+   used for authentication. The DUA MUST iterate through the values of
+   the attribute until a value matching the above syntax is found. Only
+   if encryptedpassword is an empty string does the user have no
+   password. DUAs are not required to consider encryption schemes which
+   the client will not recognize; in most cases, it may be sufficient to
+   consider only "crypt".
+
+   Below is an example of a userPassword attribute:
+
+                    userPassword: {crypt}X5/DBrWPOQQaI
+
+
+
+Howard                        Experimental                     [Page 12]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+   A future standard may specify LDAP v3 attribute descriptions to
+   represent hashed userPasswords, as noted below. This schema MUST NOT
+   be used with LDAP v2 DUAs and DSAs.
+
+        attributetype           = attributename sep attributeoption
+        attributename           = "userPassword"
+        sep                     = ";"
+        attributeoption         = schemeclass "-" scheme
+        schemeclass             = "hash" / altschemeclass
+        scheme                  = "crypt" / "md5" / "sha" / altscheme
+        altschemeclass          = "x-" keystring
+        altscheme               = keystring
+
+
+   Below is an example of a userPassword attribute, represented with an
+   LDAP v3 attribute description:
+
+           userPassword;hash-crypt: X5/DBrWPOQQaI
+
+
+   A DUA MAY utilise the attributes in the shadowAccount class to
+   provide shadow password service (getspnam() and getspent()). In such
+   cases, the DUA MUST NOT make use of the userPassword attribute for
+   getpwnam() et al, and MUST return a non-matchable password (such as
+   "x") to the client instead.
+
+5.4. Interpreting hosts and networks
+
+   The ipHostNumber and ipNetworkNumber attributes are defined in
+   preference to dNSRecord (defined in [RFC1279]), in order to simplify
+   the DUA's role in interpreting entries in the directory. A dNSRecord
+   expresses a complete resource record, including time to live and
+   class data, which is extraneous to this schema.
+
+   Additionally, the ipHost and ipNetwork classes permit a host or
+   network (respectively) and all its aliases to be represented by a
+   single entry in the directory. This is not necessarily possible if a
+   DNS resource record is mapped directly to an LDAP entry.
+   Implementations that wish to use LDAP to master DNS zone information
+   are not precluded from doing so, and may simply avoid the ipHost and
+   ipNetwork classes.
+
+   This document redefines, although not exclusively, the ipNetwork
+   class defined in [RFC1279], in order to achieve consistent naming
+   with ipHost. The ipNetworkNumber attribute is also used in the
+   siteContact object class [ROSE].
+
+
+
+
+
+Howard                        Experimental                     [Page 13]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+   The trailing zeros in a network address MUST be omitted. CIDR-style
+   network addresses (eg. 192.168.1/24) MAY be used.
+
+   Hosts with IPv6 addresses MUST be written in their "preferred" form
+   as defined in section 2.2.1 of [RFC1884], such that all components of
+   the address are indicated and leading zeros are omitted. This
+   provides a consistent means of resolving ipHosts by address.
+
+5.5. Interpreting other entities
+
+   In general, a one-to-one mapping between entities and LDAP entries is
+   proposed, in that each entity has exactly one representation in the
+   DIT. In some cases this is not feasible; for example, a service which
+   is represented in more than one protocol domain. Consider the
+   following entry:
+
+           dn: cn=domain, dc=aja, dc=com
+           cn: domain
+           cn: nameserver
+           objectClass: top
+           objectClass: ipService
+           ipServicePort: 53
+           ipServiceProtocol: tcp
+           ipServiceProtocol: udp
+
+   This entry MUST map to the following two (2) services entities:
+
+           domain  53/tcp  nameserver
+           domain  53/udp  nameserver
+
+   While the above two entities may be represented as separate LDAP
+   entities, with different distinguished names (such as
+   cn=domain+ipServiceProtocol=tcp, ... and
+   cn=domain+ipServiceProtocol=udp, ...) it is convenient to represent
+   them as a single entry. (If a service is represented in multiple
+   protocol domains with different ports, then multiple entries are
+   required; multivalued RDNs may be used to distinguish them.)
+
+   With the exception of userPassword values, which are parsed according
+   to the syntax considered in section 5.2, any empty values (consisting
+   of a zero length string) are returned by the DUA to the client. The
+   DUA MUST reject any entries which do not conform to the schema
+   (missing mandatory attributes). Non-conforming entries SHOULD be
+   ignored while enumerating entries.
+
+   The nisObject object class MAY be used as a generic means of
+   representing NIS entities. Its use is not encouraged; where support
+   for entities not described in this schema is desired, an appropriate
+
+
+
+Howard                        Experimental                     [Page 14]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+   schema should be devised. Implementors are strongly advised to
+   support end-user extensible mappings between NIS entities and object
+   classes. (Where the nisObject class is used, the nisMapName attribute
+   may be used as a RDN.)
+
+5.6. Canonicalizing entries with multi-valued naming attributes
+
+   For entities such as hosts, services, networks, protocols, and RPCs,
+   where there may be one or more aliases, the respective entry's
+   relative distinguished name SHOULD be used to determine the canonical
+   name.  Any other values for the same attribute are used as aliases.
+   For example, the service described in section 5.5 has the canonical
+   name "domain" and exactly one alias, "nameserver".
+
+   The schema in this document generally only defines one attribute per
+   class which is suitable for distinguishing an entity (excluding any
+   attributes with integer syntax; it is assumed that entries will be
+   distinguished on name). Usually, this is the common name (cn)
+   attribute.  This aids the DUA in determining the canonical name of an
+   entity, as it can examine the value of the relative distinguished
+   name. Aliases are thus any values of the distinguishing attribute
+   (such as cn) which do not match the canonical name of the entity.
+
+   In the event that a different attribute is used to distinguish the
+   entry, as may be the case where these object classes are used as
+   auxiliary classes, the entry's canonical name may not be present in
+   the RDN. In this case, the DUA MUST choose one of the non-
+   distinguished values to represent the entity's canonical name. As the
+   directory server guarantees no ordering of attribute values, it may
+   not be possible to distinguish an entry deterministically. This
+   ambiguity SHOULD NOT be resolved by mapping one directory entry into
+   multiple entities.
+
+6. Implementation focus
+
+   A NIS server which uses LDAP instead of local files has been
+   developed which supports the schema defined in this document.
+
+   A reference implementation of the C library resolution code has been
+   written for the Free Software Foundation. It may support other C
+   libraries which support the Name Service Switch (NSS) or the
+   Information Retrieval Service (IRS).
+
+   The author has made available a freely distributable set of scripts
+   which parses local databases such as /etc/passwd and /etc/hosts into
+   a form suitable for loading into an LDAP server.
+
+
+
+
+
+Howard                        Experimental                     [Page 15]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+7. Security Considerations
+
+   The entirety of related security considerations are outside the scope
+   of this document. It is noted that making passwords encrypted with a
+   widely understood hash function (such as crypt()) available to non-
+   privileged users is dangerous because it exposes them to dictionary
+   and brute-force attacks.  This is proposed only for compatibility
+   with existing UNIX system implementations. Sites where security is
+   critical SHOULD consider using a strong authentication service for
+   user authentication.
+
+   Alternatively, the encrypted password could be made available only to
+   a subset of privileged DUAs, which would provide "shadow" password
+   service to client applications. This may be difficult to enforce.
+
+   Because the schema represents operating system-level entities, access
+   to these entities SHOULD be granted on a discretionary basis. (There
+   is little point in restricting access to data which will be
+   republished without restriction, however.) It is particularly
+   important that only administrators can modify entries defined in this
+   schema, with the exception of allowing a principal to change their
+   password (which may be done on behalf of the user by a client bound
+   as a superior principal, such that password restrictions may be
+   enforced). For example, if a user were allowed to change the value of
+   their uidNumber attribute, they could subvert security by
+   equivalencing their account with the superuser account.
+
+   A subtree of the DIT which is to be republished by a DUA (such as a
+   NIS gateway) SHOULD be within the same administrative domain that the
+   republishing DUA represents. (For example, principals outside an
+   organization, while conceivably part of the DIT, should not be
+   considered with the same degree of authority as those within the
+   organization.)
+
+   Finally, care should be exercised with integer attributes of a
+   sensitive nature (particularly the uidNumber and gidNumber
+   attributes) which contain zero-length values. DUAs MAY treat such
+   values as corresponding to the "nobody" or "nogroup" user and group,
+   respectively.
+
+8. Acknowledgements
+
+   Thanks to Leif Hedstrom of Netscape Communications Corporation,
+   Michael Grant and Rosanna Lee of Sun Microsystems Inc., Ed Reed of
+   Novell Inc., and Mark Wahl of Critical Angle Inc. for their valuable
+   contributions to the development of this schema. Thanks to Andrew
+   Josey of The Open Group for clarifying the use of the UNIX trademark,
+   and to Tim Howes and Peter J. Cherny for their support.
+
+
+
+Howard                        Experimental                     [Page 16]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+   UNIX is a registered trademark of The Open Group.
+
+9. References
+
+   [RFC1057]
+        Sun Microsystems, Inc., "RPC: Remote Procedure Call: Protocol
+        Specification Version 2", RFC 1057, June 1988.
+
+   [RFC1279]
+        Kille, S., "X.500 and Domains", RFC 1279, November 1991.
+
+   [RFC1884]
+        Hinden, R., and S. Deering, "IP Version 6 Addressing
+        Architecture", RFC 1884, December 1995.
+
+   [RFC2119]
+        Bradner, S., "Key Words for use in RFCs to Indicate Requirement
+        Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC2251]
+        Wahl, M., Howes, T., and S. Kille, "Lightweight Directory Access
+        Protocol (v3)", RFC 2251, December 1997.
+
+   [RFC2252]
+        Wahl, M., Coulbeck, A., Howes, T., and S. Kille, "Lightweight
+        Directory Access Protocol (v3): Attribute Syntax Definitions",
+        RFC 2252, December 1997.
+
+   [RFC2254]
+        Howes, T., "The String Representation of LDAP Search Filters",
+        RFC 2254, December 1997.
+
+   [RFC2256]
+        Wahl, M., "A Summary of the X.500(96) User Schema for use with
+        LDAPv3", RFC 2256, December 1997.
+
+   [ROSE]
+        M. T. Rose, "The Little Black Book: Mail Bonding with OSI
+        Directory Services", ISBN 0-13-683210-5, Prentice-Hall, Inc.,
+        1992.
+
+   [X500]
+        "Information Processing Systems - Open Systems Interconnection -
+        The Directory: Overview of Concepts, Models and Service",
+        ISO/IEC JTC 1/SC21, International Standard 9594-1, 1988.
+
+
+
+
+
+
+Howard                        Experimental                     [Page 17]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+   [XOPEN]
+        ISO/IEC 9945-1:1990, Information Technology - Portable Operating
+        Systems Interface (POSIX) - Part 1: Systems Application
+        Programming Interface (API) [C Language]
+
+10. Author's Address
+
+   Luke Howard
+   PO Box 59
+   Central Park Vic 3145
+   Australia
+
+   EMail: lukeh at xedoc.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howard                        Experimental                     [Page 18]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+A. Example entries
+
+   The examples described in this section are provided to illustrate the
+   schema described in this memo. They are not meant to be exhaustive.
+
+   The following entry is an example of the posixAccount class:
+
+           dn: uid=lester, dc=aja, dc=com
+           objectClass: top
+           objectClass: account
+           objectClass: posixAccount
+           uid: lester
+           cn: Lester the Nightfly
+           userPassword: {crypt}X5/DBrWPOQQaI
+           gecos: Lester
+           loginShell: /bin/csh
+           uidNumber: 10
+           gidNumber: 10
+           homeDirectory: /home/lester
+
+
+   This corresponds the UNIX system password file entry:
+
+        lester:X5/DBrWPOQQaI:10:10:Lester:/home/lester:/bin/sh
+
+   The following entry is an example of the ipHost class:
+
+           dn: cn=peg.aja.com, dc=aja, dc=com
+           objectClass: top
+           objectClass: device
+           objectClass: ipHost
+           objectClass: bootableDevice
+           objectClass: ieee802Device
+           cn: peg.aja.com
+           cn: www.aja.com
+           ipHostNumber: 10.0.0.1
+           macAddress: 00:00:92:90:ee:e2
+           bootFile: mach
+           bootParameter: root=fs:/nfsroot/peg
+           bootParameter: swap=fs:/nfsswap/peg
+           bootParameter: dump=fs:/nfsdump/peg
+
+   This entry represents the host canonically peg.aja.com, also known as
+   www.aja.com. The Ethernet address and four boot parameters are also
+   specified.
+
+
+
+
+
+
+Howard                        Experimental                     [Page 19]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+   An example of the nisNetgroup class:
+
+           dn: cn=nightfly, dc=aja, dc=com
+           objectClass: top
+           objectClass: nisNetgroup
+           cn: nightfly
+           nisNetgroupTriple: (charlemagne,peg,dunes.aja.com)
+           nisNetgroupTriple: (lester,-,)
+           memberNisNetgroup: kamakiriad
+
+   This entry represents the netgroup nightfly, which contains two
+   triples (the user charlemagne, the host peg, and the domain
+   dunes.aja.com; and, the user lester, no host, and any domain) and one
+   netgroup (kamakiriad).
+
+   Finally, an example of the nisObject class:
+
+           dn: nisMapName=tracks, dc=dunes, dc=aja, dc=com
+           objectClass: top
+           objectClass: nisMap
+           nisMapName: tracks
+
+           dn: cn=Maxine, nisMapName=tracks, dc=dunes, dc=aja, dc=com
+           objectClass: top
+           objectClass: nisObject
+           cn: Maxine
+           nisMapName: tracks
+           nisMapEntry: Nightfly$4
+
+   This entry represents the NIS map tracks, and a single map entry.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howard                        Experimental                     [Page 20]
+
+RFC 2307      Using LDAP as a Network Information Service     March 1998
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (1998).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howard                        Experimental                     [Page 21]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc2696.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc2696.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc2696.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc2696.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,395 @@
+
+
+
+
+
+
+Network Working Group                                        C. Weider
+Request for Comments: 2696                                   A. Herron
+Category: Informational                                     A. Anantha
+                                                             Microsoft
+                                                              T. Howes
+                                                              Netscape
+                                                        September 1999
+
+
+      LDAP Control Extension for Simple Paged Results Manipulation
+
+Status of this Memo
+
+   This memo provides information for the Internet community.  It does
+   not specify an Internet standard of any kind.  Distribution of this
+   memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (1999).  All Rights Reserved.
+
+1. Abstract
+
+   This document describes an LDAPv3 control extension for simple paging
+   of search results. This control extension allows a client to control
+   the rate at which an LDAP server returns the results of an LDAP
+   search operation. This control may be useful when the LDAP client has
+   limited resources and may not be able to process the entire result
+   set from a given LDAP query, or when the LDAP client is connected
+   over a low-bandwidth connection. Other operations on the result set
+   are not defined in this extension. This extension is not designed to
+   provide more sophisticated result set management.
+
+   The key words "MUST", "SHOULD", and "MAY" used in this document are
+   to be interpreted as described in [bradner97].
+
+2. The Control
+
+   This control is included in the searchRequest and searchResultDone
+   messages as part of the controls field of the LDAPMessage, as defined
+   in Section 4.1.12 of [LDAPv3]. The structure of this control is as
+   follows:
+
+
+
+
+
+
+
+
+
+Weider, et al.               Informational                      [Page 1]
+
+RFC 2696       LDAP Control Ext. for Simple Paged Results September 1999
+
+
+pagedResultsControl ::= SEQUENCE {
+        controlType     1.2.840.113556.1.4.319,
+        criticality     BOOLEAN DEFAULT FALSE,
+        controlValue    searchControlValue
+}
+
+The searchControlValue is an OCTET STRING wrapping the BER-encoded
+version of the following SEQUENCE:
+
+realSearchControlValue ::= SEQUENCE {
+        size            INTEGER (0..maxInt),
+                                -- requested page size from client
+                                -- result set size estimate from server
+        cookie          OCTET STRING
+}
+
+3. Client-Server Interaction
+
+   An LDAP client application that needs to control the rate at which
+   results are returned MAY specify on the searchRequest a
+   pagedResultsControl with size set to the desired page size and cookie
+   set to the zero-length string. The page size specified MAY be greater
+   than zero and less than the sizeLimit value specified in the
+   searchRequest.
+
+   If the page size is greater than or equal to the sizeLimit value, the
+   server should ignore the control as the request can be satisfied in a
+   single page. If the server does not support this control, the server
+   MUST return an error of unsupportedCriticalExtension if the client
+   requested it as critical, otherwise the server SHOULD ignore the
+   control. The remainder of this section assumes the server does not
+   ignore the client's pagedResultsControl.
+
+   Each time the server returns a set of results to the client when
+   processing a search request containing the pagedResultsControl, the
+   server includes the pagedResultsControl control in the
+   searchResultDone message. In the control returned to the client, the
+   size MAY be set to the server's estimate of the total number of
+   entries in the entire result set. Servers that cannot provide such an
+   estimate MAY set this size to zero (0).  The cookie MUST be set to an
+   empty value if there are no more entries to return (i.e., the page of
+   search results returned was the last), or, if there are more entries
+   to return, to an octet string of the server's choosing,used to resume
+   the search.
+
+   The client MUST consider the cookie to be an opaque structure and
+   make no assumptions about its internal organization or value. When
+   the client wants to retrieve more entries for the result set, it MUST
+
+
+
+Weider, et al.               Informational                      [Page 2]
+
+RFC 2696       LDAP Control Ext. for Simple Paged Results September 1999
+
+
+   send to the server a searchRequest with all values identical to the
+   initial request with the exception of the messageID, the cookie, and
+   optionally a modified pageSize. The cookie MUST be the octet string
+   on the last searchResultDone response returned by the server.
+   Returning cookies from previous searchResultDone responses besides
+   the last one is undefined, as the server implementation may restrict
+   cookies from being reused.
+
+   The server will then return the next set of results from the whole
+   result set. This interaction will continue until the client has
+   retrieved all the results, in which case the cookie in the
+   searchResultDone field will be empty, or until the client abandons
+   the search sequence as described below. Once the paged search
+   sequence has been completed, the cookie is no longer valid and MUST
+   NOT be used.
+
+   A sequence of paged search requests is abandoned by the client
+   sending a search request containing a pagedResultsControl with the
+   size set to zero (0) and the cookie set to the last cookie returned
+   by the server.  A client MAY use the LDAP Abandon operation to
+   abandon one paged search request in progress, but this is discouraged
+   as it MAY invalidate the client's cookie.
+
+   If, for any reason, the server cannot resume a paged search operation
+   for a client, then it SHOULD return the appropriate error in a
+   searchResultDone entry. If this occurs, both client and server should
+   assume the paged result set is closed and no longer resumable.
+
+   A client may have any number of outstanding search requests pending,
+   any of which may have used the pagedResultsControl.  A server
+   implementation which requires a limit on the number of outstanding
+   paged search requests from a given client MAY either return
+   unwillingToPerform when the client attempts to create a new paged
+   search request, or age out an older result set.  If the server
+   implementation ages out an older paged search request, it SHOULD
+   return "unwilling to perform" if the client attempts to resume the
+   paged search that was aged out.
+
+   A client may safely assume that all entries that satisfy a given
+   search query are returned once and only once during the set of paged
+   search requests/responses necessary to enumerate the entire result
+   set, unless the result set for that query has changed since the
+   searchRequest starting the request/response sequence was processed.
+   In that case, the client may receive a given entry multiple times
+   and/or may not receive all entries matching the given search
+   criteria.
+
+
+
+
+
+Weider, et al.               Informational                      [Page 3]
+
+RFC 2696       LDAP Control Ext. for Simple Paged Results September 1999
+
+
+4. Example
+
+   The following example illustrates the client-server interaction
+   between a client doing a search requesting a page size limit of 3.
+   The entire result set returned by the server contains 5 entries.
+
+   Lines beginning with "C:" indicate requests sent from client to
+   server. Lines beginning with "S:" indicate responses sent from server
+   to client. Lines beginning with "--" are comments to help explain the
+   example.
+
+   -- Client sends a search request asking for paged results
+   -- with a page size of 3.
+   C: SearchRequest + pagedResultsControl(3,"")
+   -- Server responds with three entries plus an indication
+   -- of 5 total entries in the search result and an opaque
+   -- cooking to be used by the client when retrieving subsequent
+   -- pages.
+   S: SearchResultEntry
+   S: SearchResultEntry
+   S: SearchResultEntry
+   S: SearchResultDone + pagedResultsControl(5, "opaque")
+   -- Client sends an identical search request (except for
+   -- message id), returning the opaque cooking, asking for
+   -- the next page.
+   C: SearchRequest + PagedResultsControl(3, "opaque")
+   -- Server responds with two entries plus an indication
+   -- that there are no more entries (null cookie).
+   S: SearchResultEntry
+   S: SearchResultEntry
+   S: SearchResultDone + pagedResultsControl(5,"")
+
+5. Relationship to X.500
+
+   For LDAP servers providing a front end to X.500 (93) directories, the
+   paged results control defined in this document may be mapped directly
+   onto the X.500 (93) PagedResultsRequest defined in X.511 [x500]. The
+   size parameter may be mapped onto pageSize.  The cookie parameter may
+   be mapped onto queryReference.  The sortKeys and reverse fields in
+   the X.500 PagedResultsRequest are excluded.
+
+
+
+
+
+
+
+
+
+
+
+Weider, et al.               Informational                      [Page 4]
+
+RFC 2696       LDAP Control Ext. for Simple Paged Results September 1999
+
+
+6. Security Considerations
+
+   Server implementors should consider the resources used when clients
+   send searches with the simple paged control, to ensure that a
+   client's misuse of this control does not lock out other legitimate
+   operations.
+
+   Servers implementations may enforce an overriding sizelimit, to
+   prevent the retrieval of large portions of a publically-accessible
+   directory.
+
+   Clients can, using this control, determine how many entries match a
+   particular filter, before the entries are returned to the client.
+   This may require special processing in servers which perform access
+   control checks on entries to determine whether the existence of the
+   entry can be disclosed to the client.
+
+7. References
+
+   [LDAPv3]    Wahl, M., Howes, T. and S. Kille, "Lightweight Directory
+               Access Protocol (v3)", RFC 2251, December 1997.
+
+   [Bradner97] Bradner, S., "Key Words for use in RFCs to Indicate
+               Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Weider, et al.               Informational                      [Page 5]
+
+RFC 2696       LDAP Control Ext. for Simple Paged Results September 1999
+
+
+8. Authors' Addresses
+
+   Chris Weider
+   Microsoft Corp.
+   1 Microsoft Way
+   Redmond, WA 98052
+   USA
+
+   Phone: +1 425 882-8080
+   EMail: cweider at microsoft.com
+
+
+   Andy Herron
+   Microsoft Corp.
+   1 Microsoft Way
+   Redmond, WA 98052
+   USA
+
+   Phone: +1 425 882-8080
+   EMail: andyhe at microsoft.com
+
+
+   Anoop Anantha
+   Microsoft Corp.
+   1 Microsoft Way
+   Redmond, WA 98052
+   USA
+
+   Phone: +1 425 882-8080
+   EMail: anoopa at microsoft.com
+
+
+   Tim Howes
+   Netscape Communications Corp.
+   501 E. Middlefield Road
+   Mountain View, CA 94043
+   USA
+
+   Phone: +1 415 937-2600
+   EMail: howes at netscape.com
+
+
+
+
+
+
+
+
+
+
+
+Weider, et al.               Informational                      [Page 6]
+
+RFC 2696       LDAP Control Ext. for Simple Paged Results September 1999
+
+
+9.  Full Copyright Statement
+
+   Copyright (C) The Internet Society (1999).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Weider, et al.               Informational                      [Page 7]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc2849.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc2849.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc2849.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc2849.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,787 @@
+
+
+
+
+
+
+Network Working Group                                             G. Good
+Request for Comments: 2849                   iPlanet e-commerce Solutions
+Category: Standards Track                                       June 2000
+
+
+   The LDAP Data Interchange Format (LDIF) - Technical Specification
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2000).  All Rights Reserved.
+
+Abstract
+
+   This document describes a file format suitable for describing
+   directory information or modifications made to directory information.
+   The file format, known as LDIF, for LDAP Data Interchange Format, is
+   typically used to import and export directory information between
+   LDAP-based directory servers, or to describe a set of changes which
+   are to be applied to a directory.
+
+Background and Intended Usage
+
+   There are a number of situations where a common interchange format is
+   desirable.  For example, one might wish to export a copy of the
+   contents of a directory server to a file, move that file to a
+   different machine, and import the contents into a second directory
+   server.
+
+   Additionally, by using a well-defined interchange format, development
+   of data import tools from legacy systems is facilitated.  A fairly
+   simple set of tools written in awk or perl can, for example, convert
+   a database of personnel information into an LDIF file. This file can
+   then be imported into a directory server, regardless of the internal
+   database representation the target directory server uses.
+
+   The LDIF format was originally developed and used in the University
+   of Michigan LDAP implementation.  The first use of LDIF was in
+   describing directory entries.  Later, the format was expanded to
+   allow representation of changes to directory entries.
+
+
+
+
+Good                        Standards Track                     [Page 1]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+   Relationship to the application/directory MIME content-type:
+
+   The application/directory MIME content-type [1] is a general
+   framework and format for conveying directory information, and is
+   independent of any particular directory service.  The LDIF format is
+   a simpler format which is perhaps easier to create, and may also be
+   used, as noted, to describe a set of changes to be applied to a
+   directory.
+
+   The key words "MUST", "MUST NOT", "MAY", "SHOULD", and "SHOULD NOT"
+   used in this document are to be interpreted as described in [7].
+
+Definition of the LDAP Data Interchange Format
+
+   The LDIF format is used to convey directory information, or a
+   description of a set of changes made to directory entries.  An LDIF
+   file consists of a series of records separated by line separators.  A
+   record consists of a sequence of lines describing a directory entry,
+   or a sequence of lines describing a set of changes to a directory
+   entry.  An LDIF file specifies a set of directory entries, or a set
+   of changes to be applied to directory entries, but not both.
+
+   There is a one-to-one correlation between LDAP operations that modify
+   the directory (add, delete, modify, and modrdn), and the types of
+   changerecords described below ("add", "delete", "modify", and
+   "modrdn" or "moddn").  This correspondence is intentional, and
+   permits a straightforward translation from LDIF changerecords to
+   protocol operations.
+
+Formal Syntax Definition of LDIF
+
+   The following definition uses the augmented Backus-Naur Form
+   specified in RFC 2234 [2].
+
+ldif-file                = ldif-content / ldif-changes
+
+ldif-content             = version-spec 1*(1*SEP ldif-attrval-record)
+
+ldif-changes             = version-spec 1*(1*SEP ldif-change-record)
+
+ldif-attrval-record      = dn-spec SEP 1*attrval-spec
+
+ldif-change-record       = dn-spec SEP *control changerecord
+
+version-spec             = "version:" FILL version-number
+
+
+
+
+
+
+Good                        Standards Track                     [Page 2]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+version-number           = 1*DIGIT
+                           ; version-number MUST be "1" for the
+                           ; LDIF format described in this document.
+
+dn-spec                  = "dn:" (FILL distinguishedName /
+                                  ":" FILL base64-distinguishedName)
+
+distinguishedName        = SAFE-STRING
+                           ; a distinguished name, as defined in [3]
+
+base64-distinguishedName = BASE64-UTF8-STRING
+                           ; a distinguishedName which has been base64
+                           ; encoded (see note 10, below)
+
+rdn                      = SAFE-STRING
+                           ; a relative distinguished name, defined as
+                           ; <name-component> in [3]
+
+base64-rdn               = BASE64-UTF8-STRING
+                           ; an rdn which has been base64 encoded (see
+                           ; note 10, below)
+
+control                  = "control:" FILL ldap-oid        ; controlType
+                           0*1(1*SPACE ("true" / "false")) ; criticality
+                           0*1(value-spec)                ; controlValue
+                           SEP
+                           ; (See note 9, below)
+
+ldap-oid                 = 1*DIGIT 0*1("." 1*DIGIT)
+                           ; An LDAPOID, as defined in [4]
+
+attrval-spec             = AttributeDescription value-spec SEP
+
+value-spec               = ":" (    FILL 0*1(SAFE-STRING) /
+                                ":" FILL (BASE64-STRING) /
+                                "<" FILL url)
+                           ; See notes 7 and 8, below
+
+url                      = <a Uniform Resource Locator,
+                            as defined in [6]>
+                                   ; (See Note 6, below)
+
+AttributeDescription     = AttributeType [";" options]
+                           ; Definition taken from [4]
+
+AttributeType            = ldap-oid / (ALPHA *(attr-type-chars))
+
+options                  = option / (option ";" options)
+
+
+
+Good                        Standards Track                     [Page 3]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+option                   = 1*opt-char
+
+attr-type-chars          = ALPHA / DIGIT / "-"
+
+opt-char                 = attr-type-chars
+
+changerecord             = "changetype:" FILL
+                           (change-add / change-delete /
+                            change-modify / change-moddn)
+
+change-add               = "add"                SEP 1*attrval-spec
+
+change-delete            = "delete"             SEP
+
+change-moddn             = ("modrdn" / "moddn") SEP
+                            "newrdn:" (    FILL rdn /
+                                       ":" FILL base64-rdn) SEP
+                            "deleteoldrdn:" FILL ("0" / "1")  SEP
+                            0*1("newsuperior:"
+                            (    FILL distinguishedName /
+                             ":" FILL base64-distinguishedName) SEP)
+
+change-modify            = "modify"             SEP *mod-spec
+
+mod-spec                 = ("add:" / "delete:" / "replace:")
+                           FILL AttributeDescription SEP
+                           *attrval-spec
+                           "-" SEP
+
+SPACE                    = %x20
+                           ; ASCII SP, space
+
+FILL                     = *SPACE
+
+SEP                      = (CR LF / LF)
+
+CR                       = %x0D
+                           ; ASCII CR, carriage return
+
+LF                       = %x0A
+                           ; ASCII LF, line feed
+
+ALPHA                    = %x41-5A / %x61-7A
+                           ; A-Z / a-z
+
+DIGIT                    = %x30-39
+                           ; 0-9
+
+
+
+
+Good                        Standards Track                     [Page 4]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+UTF8-1                   = %x80-BF
+
+UTF8-2                   = %xC0-DF UTF8-1
+
+UTF8-3                   = %xE0-EF 2UTF8-1
+
+UTF8-4                   = %xF0-F7 3UTF8-1
+
+UTF8-5                   = %xF8-FB 4UTF8-1
+
+UTF8-6                   = %xFC-FD 5UTF8-1
+
+SAFE-CHAR                = %x01-09 / %x0B-0C / %x0E-7F
+                           ; any value <= 127 decimal except NUL, LF,
+                           ; and CR
+
+SAFE-INIT-CHAR           = %x01-09 / %x0B-0C / %x0E-1F /
+                           %x21-39 / %x3B / %x3D-7F
+                           ; any value <= 127 except NUL, LF, CR,
+                           ; SPACE, colon (":", ASCII 58 decimal)
+                           ; and less-than ("<" , ASCII 60 decimal)
+
+SAFE-STRING              = [SAFE-INIT-CHAR *SAFE-CHAR]
+
+UTF8-CHAR                = SAFE-CHAR / UTF8-2 / UTF8-3 /
+                           UTF8-4 / UTF8-5 / UTF8-6
+
+UTF8-STRING              = *UTF8-CHAR
+
+BASE64-UTF8-STRING       = BASE64-STRING
+                           ; MUST be the base64 encoding of a
+                           ; UTF8-STRING
+
+BASE64-CHAR              = %x2B / %x2F / %x30-39 / %x3D / %x41-5A /
+                           %x61-7A
+                           ; +, /, 0-9, =, A-Z, and a-z
+                           ; as specified in [5]
+
+BASE64-STRING            = [*(BASE64-CHAR)]
+
+
+   Notes on LDIF Syntax
+
+      1)  For the LDIF format described in this document, the version
+          number MUST be "1". If the version number is absent,
+          implementations MAY choose to interpret the contents as an
+          older LDIF file format, supported by the University of
+          Michigan ldap-3.3 implementation [8].
+
+
+
+Good                        Standards Track                     [Page 5]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+      2)  Any non-empty line, including comment lines, in an LDIF file
+          MAY be folded by inserting a line separator (SEP) and a SPACE.
+          Folding MUST NOT occur before the first character of the line.
+          In other words, folding a line into two lines, the first of
+          which is empty, is not permitted. Any line that begins with a
+          single space MUST be treated as a continuation of the previous
+          (non-empty) line. When joining folded lines, exactly one space
+          character at the beginning of each continued line must be
+          discarded. Implementations SHOULD NOT fold lines in the middle
+          of a multi-byte UTF-8 character.
+
+      3)  Any line that begins with a pound-sign ("#", ASCII 35) is a
+          comment line, and MUST be ignored when parsing an LDIF file.
+
+      4)  Any dn or rdn that contains characters other than those
+          defined as "SAFE-UTF8-CHAR", or begins with a character other
+          than those defined as "SAFE-INIT-UTF8-CHAR", above, MUST be
+          base-64 encoded.  Other values MAY be base-64 encoded.  Any
+          value that contains characters other than those defined as
+          "SAFE-CHAR", or begins with a character other than those
+          defined as "SAFE-INIT-CHAR", above, MUST be base-64 encoded.
+          Other values MAY be base-64 encoded.
+
+      5)  When a zero-length attribute value is to be included directly
+          in an LDIF file, it MUST be represented as
+          AttributeDescription ":" FILL SEP.  For example, "seeAlso:"
+          followed by a newline represents a zero-length "seeAlso"
+          attribute value.  It is also permissible for the value
+          referred to by a URL to be of zero length.
+
+      6) When a URL is specified in an attrval-spec, the following
+          conventions apply:
+
+         a) Implementations SHOULD support the file:// URL format.  The
+            contents of the referenced file are to be included verbatim
+            in the interpreted output of the LDIF file.
+         b) Implementations MAY support other URL formats.  The
+            semantics associated with each supported URL will be
+            documented in an associated Applicability Statement.
+
+      7)  Distinguished names, relative distinguished names, and
+          attribute values of DirectoryString syntax MUST be valid UTF-8
+          strings.  Implementations that read LDIF MAY interpret files
+          in which these entities are stored in some other character set
+          encoding, but implementations MUST NOT generate LDIF content
+          which does not contain valid UTF-8 data.
+
+
+
+
+
+Good                        Standards Track                     [Page 6]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+      8)  Values or distinguished names that end with SPACE SHOULD be
+          base-64 encoded.
+
+      9)  When controls are included in an LDIF file, implementations
+          MAY choose to ignore some or all of them. This may be
+          necessary if the changes described in the LDIF file are being
+          sent on an LDAPv2 connection (LDAPv2 does not support
+          controls), or the particular controls are not supported by the
+          remote server. If the criticality of a control is "true", then
+          the implementation MUST either include the control, or MUST
+          NOT send the operation to a remote server.
+
+      10) When an attrval-spec, distinguishedName, or rdn is base64-
+          encoded, the encoding rules specified in [5] are used with the
+          following exceptions:  a) The requirement that base64 output
+          streams must be represented as lines of no more than 76
+          characters is removed. Lines in LDIF files may only be folded
+          according to the folding rules described in note 2, above.  b)
+          Base64 strings in [5] may contain characters other than those
+          defined in BASE64-CHAR, and are ignored. LDIF does not permit
+          any extraneous characters, other than those used for line
+          folding.
+
+Examples of LDAP Data Interchange Format
+
+Example 1: An simple LDAP file with two entries
+
+version: 1
+dn: cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+cn: Barbara Jensen
+cn: Barbara J Jensen
+cn: Babs Jensen
+sn: Jensen
+uid: bjensen
+telephonenumber: +1 408 555 1212
+description: A big sailing fan.
+
+dn: cn=Bjorn Jensen, ou=Accounting, dc=airius, dc=com
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+cn: Bjorn Jensen
+sn: Jensen
+telephonenumber: +1 408 555 1212
+
+
+
+
+Good                        Standards Track                     [Page 7]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+Example 2: A file containing an entry with a folded attribute value
+
+version: 1
+dn:cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com
+objectclass:top
+objectclass:person
+objectclass:organizationalPerson
+cn:Barbara Jensen
+cn:Barbara J Jensen
+cn:Babs Jensen
+sn:Jensen
+uid:bjensen
+telephonenumber:+1 408 555 1212
+description:Babs is a big sailing fan, and travels extensively in sea
+ rch of perfect sailing conditions.
+title:Product Manager, Rod and Reel Division
+
+Example 3: A file containing a base-64-encoded value
+
+version: 1
+dn: cn=Gern Jensen, ou=Product Testing, dc=airius, dc=com
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+cn: Gern Jensen
+cn: Gern O Jensen
+sn: Jensen
+uid: gernj
+telephonenumber: +1 408 555 1212
+description:: V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVl
+IGlzIGJhc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdG
+VyIGluIGl0IChhIENSKS4NICBCeSB0aGUgd2F5LCB5b3Ugc2hvdWxkIHJlYWxseSBnZXQg
+b3V0IG1vcmUu
+
+Example 4: A file containing an entries with UTF-8-encoded attribute
+values, including language tags.  Comments indicate the contents
+of UTF-8-encoded attributes and distinguished names.
+
+version: 1
+dn:: b3U95Za25qWt6YOoLG89QWlyaXVz
+# dn:: ou=<JapaneseOU>,o=Airius
+objectclass: top
+objectclass: organizationalUnit
+ou:: 5Za25qWt6YOo
+# ou:: <JapaneseOU>
+ou;lang-ja:: 5Za25qWt6YOo
+# ou;lang-ja:: <JapaneseOU>
+ou;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2
+
+
+
+Good                        Standards Track                     [Page 8]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+# ou;lang-ja:: <JapaneseOU_in_phonetic_representation>
+ou;lang-en: Sales
+description: Japanese office
+
+dn:: dWlkPXJvZ2FzYXdhcmEsb3U95Za25qWt6YOoLG89QWlyaXVz
+# dn:: uid=<uid>,ou=<JapaneseOU>,o=Airius
+userpassword: {SHA}O3HSv1MusyL4kTjP+HKI5uxuNoM=
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+uid: rogasawara
+mail: rogasawara at airius.co.jp
+givenname;lang-ja:: 44Ot44OJ44OL44O8
+# givenname;lang-ja:: <JapaneseGivenname>
+sn;lang-ja:: 5bCP56yg5Y6f
+# sn;lang-ja:: <JapaneseSn>
+cn;lang-ja:: 5bCP56yg5Y6fIOODreODieODi+ODvA==
+# cn;lang-ja:: <JapaneseCn>
+title;lang-ja:: 5Za25qWt6YOoIOmDqOmVtw==
+# title;lang-ja:: <JapaneseTitle>
+preferredlanguage: ja
+givenname:: 44Ot44OJ44OL44O8
+# givenname:: <JapaneseGivenname>
+sn:: 5bCP56yg5Y6f
+# sn:: <JapaneseSn>
+cn:: 5bCP56yg5Y6fIOODreODieODi+ODvA==
+# cn:: <JapaneseCn>
+title:: 5Za25qWt6YOoIOmDqOmVtw==
+# title:: <JapaneseTitle>
+givenname;lang-ja;phonetic:: 44KN44Gp44Gr44O8
+# givenname;lang-ja;phonetic::
+<JapaneseGivenname_in_phonetic_representation_kana>
+sn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJ
+# sn;lang-ja;phonetic:: <JapaneseSn_in_phonetic_representation_kana>
+cn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJIOOCjeOBqeOBq+ODvA==
+# cn;lang-ja;phonetic:: <JapaneseCn_in_phonetic_representation_kana>
+title;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2IOOBtuOBoeOCh+OBhg==
+# title;lang-ja;phonetic::
+# <JapaneseTitle_in_phonetic_representation_kana>
+givenname;lang-en: Rodney
+sn;lang-en: Ogasawara
+cn;lang-en: Rodney Ogasawara
+title;lang-en: Sales, Director
+
+
+
+
+
+
+
+Good                        Standards Track                     [Page 9]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+Example 5: A file containing a reference to an external file
+
+version: 1
+dn: cn=Horatio Jensen, ou=Product Testing, dc=airius, dc=com
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+cn: Horatio Jensen
+
+cn: Horatio N Jensen
+sn: Jensen
+uid: hjensen
+telephonenumber: +1 408 555 1212
+jpegphoto:< file:///usr/local/directory/photos/hjensen.jpg
+
+Example 6: A file containing a series of change records and comments
+
+version: 1
+# Add a new entry
+dn: cn=Fiona Jensen, ou=Marketing, dc=airius, dc=com
+changetype: add
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+cn: Fiona Jensen
+sn: Jensen
+uid: fiona
+telephonenumber: +1 408 555 1212
+jpegphoto:< file:///usr/local/directory/photos/fiona.jpg
+
+# Delete an existing entry
+dn: cn=Robert Jensen, ou=Marketing, dc=airius, dc=com
+changetype: delete
+
+# Modify an entry's relative distinguished name
+dn: cn=Paul Jensen, ou=Product Development, dc=airius, dc=com
+changetype: modrdn
+newrdn: cn=Paula Jensen
+deleteoldrdn: 1
+
+# Rename an entry and move all of its children to a new location in
+# the directory tree (only implemented by LDAPv3 servers).
+dn: ou=PD Accountants, ou=Product Development, dc=airius, dc=com
+changetype: modrdn
+newrdn: ou=Product Development Accountants
+deleteoldrdn: 0
+newsuperior: ou=Accounting, dc=airius, dc=com
+
+
+
+
+Good                        Standards Track                    [Page 10]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+# Modify an entry: add an additional value to the postaladdress
+# attribute, completely delete the description attribute, replace
+# the telephonenumber attribute with two values, and delete a specific
+# value from the facsimiletelephonenumber attribute
+dn: cn=Paula Jensen, ou=Product Development, dc=airius, dc=com
+changetype: modify
+add: postaladdress
+postaladdress: 123 Anystreet $ Sunnyvale, CA $ 94086
+-
+
+delete: description
+-
+replace: telephonenumber
+telephonenumber: +1 408 555 1234
+telephonenumber: +1 408 555 5678
+-
+delete: facsimiletelephonenumber
+facsimiletelephonenumber: +1 408 555 9876
+-
+
+# Modify an entry: replace the postaladdress attribute with an empty
+# set of values (which will cause the attribute to be removed), and
+# delete the entire description attribute. Note that the first will
+# always succeed, while the second will only succeed if at least
+# one value for the description attribute is present.
+dn: cn=Ingrid Jensen, ou=Product Support, dc=airius, dc=com
+changetype: modify
+replace: postaladdress
+-
+delete: description
+-
+
+Example 7: An LDIF file containing a change record with a control
+version: 1
+# Delete an entry. The operation will attach the LDAPv3
+# Tree Delete Control defined in [9]. The criticality
+# field is "true" and the controlValue field is
+# absent, as required by [9].
+dn: ou=Product Development, dc=airius, dc=com
+control: 1.2.840.113556.1.4.805 true
+changetype: delete
+
+
+
+
+
+
+
+
+
+
+Good                        Standards Track                    [Page 11]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+Security Considerations
+
+   Given typical directory applications, an LDIF file is likely to
+   contain sensitive personal data.  Appropriate measures should be
+   taken to protect the privacy of those persons whose data is contained
+   in an LDIF file.
+
+   Since ":<" directives can cause external content to be included when
+   processing an LDIF file, one should be cautious of accepting LDIF
+   files from external sources.  A "trojan" LDIF file could name a file
+   with sensitive contents and cause it to be included in a directory
+   entry, which a hostile entity could read via LDAP.
+
+   LDIF does not provide any method for carrying authentication
+   information with an LDIF file.  Users of LDIF files must take care to
+   verify the integrity of an LDIF file received from an external
+   source.
+
+Acknowledgments
+
+   The LDAP Interchange Format was developed as part of the University
+   of Michigan LDAP reference implementation, and was developed by Tim
+   Howes, Mark Smith, and Gordon Good.  It is based in part upon work
+   supported by the National Science Foundation under Grant No.  NCR-
+   9416667.
+
+   Members of the IETF LDAP Extensions Working group provided many
+   helpful suggestions. In particular, Hallvard B. Furuseth of the
+   University of Oslo made many significant contributions to this
+   document, including a thorough review and rewrite of the BNF.
+
+References
+
+   [1]  Howes, T. and M. Smith, "A MIME Content-Type for Directory
+        Information", RFC 2425, September 1998.
+
+   [2]  Crocker, D., and P. Overell, "Augmented BNF for Syntax
+        Specifications: ABNF", RFC 2234, November 1997.
+
+   [3]  Wahl, M., Kille, S. and T. Howes, "A String Representation of
+        Distinguished Names", RFC 2253, December 1997.
+
+   [4]  Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access
+        Protocol (v3)", RFC 2251, July 1997.
+
+   [5]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
+        Extensions (MIME) Part One: Format of Internet Message Bodies",
+        RFC 2045, November 1996.
+
+
+
+Good                        Standards Track                    [Page 12]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+   [6]  Berners-Lee,  T., Masinter, L. and M. McCahill, "Uniform
+        Resource Locators (URL)", RFC 1738, December 1994.
+
+   [7]  Bradner, S., "Key Words for use in RFCs to Indicate Requirement
+        Levels", BCP 14, RFC 2119, March 1997.
+
+   [8]  The SLAPD and SLURPD Administrators Guide.  University of
+        Michigan, April 1996.  <URL:
+        http://www.umich.edu/~dirsvcs/ldap/doc/guides/slapd/toc.html>
+
+   [9]  M. P. Armijo, "Tree Delete Control", Work in Progress.
+
+Author's Address
+
+   Gordon Good
+   iPlanet e-commerce Solutions
+   150 Network Circle
+   Mailstop USCA17-201
+   Santa Clara, CA 95054, USA
+
+   Phone: +1 408 276 4351
+   EMail:  ggood at netscape.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Good                        Standards Track                    [Page 13]
+
+RFC 2849              LDAP Data Interchange Format             June 2000
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2000).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Good                        Standards Track                    [Page 14]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc2891.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc2891.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc2891.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc2891.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,451 @@
+
+
+
+
+
+
+Network Working Group                                           T. Howes
+Request for Comments: 2891                                     Loudcloud
+Category: Standards Track                                        M. Wahl
+                                                        Sun Microsystems
+                                                              A. Anantha
+                                                               Microsoft
+                                                             August 2000
+
+
+    LDAP Control Extension for Server Side Sorting of Search Results
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2000).  All Rights Reserved.
+
+Abstract
+
+   This document describes two LDAPv3 control extensions for server side
+   sorting of search results. These controls allows a client to specify
+   the attribute types and matching rules a server should use when
+   returning the results to an LDAP search request. The controls may be
+   useful when the LDAP client has limited functionality or for some
+   other reason cannot sort the results but still needs them sorted.
+   Other permissible controls on search operations are not defined in
+   this extension.
+
+   The sort controls allow a server to return a result code for the
+   sorting of the results that is independent of the result code
+   returned for the search operation.
+
+   The key words "MUST", "SHOULD", and "MAY" used in this document are
+   to be interpreted as described in [bradner97].
+
+
+
+
+
+
+
+
+
+
+
+Howes, et al.               Standards Track                     [Page 1]
+
+RFC 2891     LDAP Control Extension for Server Side Sorting  August 2000
+
+
+1.  The Controls
+
+1.1 Request Control
+
+   This control is included in the searchRequest message as part of the
+   controls field of the LDAPMessage, as defined in Section 4.1.12 of
+   [LDAPv3].
+
+   The controlType is set to "1.2.840.113556.1.4.473". The criticality
+   MAY be either TRUE or FALSE (where absent is also equivalent to
+   FALSE) at the client's option. The controlValue is an OCTET STRING,
+   whose value is the BER encoding of a value of the following SEQUENCE:
+
+      SortKeyList ::= SEQUENCE OF SEQUENCE {
+                 attributeType   AttributeDescription,
+                 orderingRule    [0] MatchingRuleId OPTIONAL,
+                 reverseOrder    [1] BOOLEAN DEFAULT FALSE }
+
+   The SortKeyList sequence is in order of highest to lowest sort key
+   precedence.
+
+   The MatchingRuleId, as defined in section 4.1.9 of [LDAPv3], SHOULD
+   be one that is valid for the attribute type it applies to.  If it is
+   not, the server will return inappropriateMatching.
+
+   Each attributeType should only occur in the SortKeyList once. If an
+   attributeType is included in the sort key list multiple times, the
+   server should return an error in the sortResult of
+   unwillingToPerform.
+
+   If the orderingRule is omitted, the ordering MatchingRule defined for
+   use with this attribute MUST be used.
+
+   Any conformant implementation of this control MUST allow a sort key
+   list with at least one key.
+
+1.2 Response Control
+
+   This control is included in the searchResultDone message as part of
+   the controls field of the LDAPMessage, as defined in Section  4.1.12
+   of [LDAPv3].
+
+   The controlType is set to "1.2.840.113556.1.4.474". The criticality
+   is FALSE (MAY be absent). The controlValue is an OCTET STRING, whose
+   value is the BER encoding of a value of the following SEQUENCE:
+
+
+
+
+
+
+Howes, et al.               Standards Track                     [Page 2]
+
+RFC 2891     LDAP Control Extension for Server Side Sorting  August 2000
+
+
+      SortResult ::= SEQUENCE {
+         sortResult  ENUMERATED {
+             success                   (0), -- results are sorted
+             operationsError           (1), -- server internal failure
+             timeLimitExceeded         (3), -- timelimit reached before
+                                            -- sorting was completed
+             strongAuthRequired        (8), -- refused to return sorted
+                                            -- results via insecure
+                                            -- protocol
+             adminLimitExceeded       (11), -- too many matching entries
+                                            -- for the server to sort
+             noSuchAttribute          (16), -- unrecognized attribute
+                                            -- type in sort key
+             inappropriateMatching    (18), -- unrecognized or
+                                            -- inappropriate matching
+                                            -- rule in sort key
+             insufficientAccessRights (50), -- refused to return sorted
+                                            -- results to this client
+             busy                     (51), -- too busy to process
+             unwillingToPerform       (53), -- unable to sort
+             other                    (80)
+             },
+       attributeType [0] AttributeDescription OPTIONAL }
+
+2.  Client-Server Interaction
+
+   The sortKeyRequestControl specifies one or more attribute types and
+   matching rules for the results returned by a search request. The
+   server SHOULD return all results for the search request in the order
+   specified by the sort keys. If the reverseOrder field is set to TRUE,
+   then the entries will be presented in reverse sorted order for the
+   specified key.
+
+   There are six possible scenarios that may occur as a result of the
+   sort control being included on the search request:
+
+   1 - If the server does not support this sorting control and the
+       client specified TRUE for the control's criticality field, then
+       the server MUST return unavailableCriticalExtension as a return
+       code in the searchResultDone message and not send back any other
+       results. This behavior is specified in section 4.1.12 of
+       [LDAPv3].
+
+   2 - If the server does not support this sorting control and the
+       client specified FALSE for the control's criticality field, then
+       the server MUST ignore the sort control and process the search
+       request as if it were not present. This behavior is specified in
+       section 4.1.12 of [LDAPv3].
+
+
+
+Howes, et al.               Standards Track                     [Page 3]
+
+RFC 2891     LDAP Control Extension for Server Side Sorting  August 2000
+
+
+   3 - If the server supports this sorting control but for some reason
+       cannot sort the search results using the specified sort keys and
+       the client specified TRUE for the control's criticality field,
+       then the server SHOULD do the following: return
+       unavailableCriticalExtension as a return code in the
+       searchResultDone message; include the sortKeyResponseControl in
+       the searchResultDone message, and not send back any search result
+       entries.
+
+   4 - If the server supports this sorting control but for some reason
+       cannot sort the search results using the specified sort keys and
+       the client specified FALSE for the control's criticality field,
+       then the server should return all search results unsorted and
+       include the sortKeyResponseControl in the searchResultDone
+       message.
+
+   5 - If the server supports this sorting control and can sort the
+       search results using the specified sort keys, then it should
+       include the sortKeyResponseControl in the searchResultDone
+       message with a sortResult of success.
+
+   6 - If the search request failed for any reason and/or there are no
+       searchResultEntry messages returned for the search response, then
+       the server SHOULD omit the sortKeyResponseControl from the
+       searchResultDone message.
+
+   The client application is assured that the results are sorted in the
+   specified key order if and only if the result code in the
+   sortKeyResponseControl is success. If the server omits the
+   sortKeyResponseControl from the searchResultDone message, the client
+   SHOULD assume that the sort control was ignored by the server.
+
+   The sortKeyResponseControl, if included by the server in the
+   searchResultDone message, should have the sortResult set to either
+   success if the results were sorted in accordance with the keys
+   specified in the sortKeyRequestControl or set to the appropriate
+   error code as to why it could not sort the data (such as
+   noSuchAttribute or inappropriateMatching). Optionally, the server MAY
+   set the attributeType to the first attribute type specified in the
+   SortKeyList that was in error. The client SHOULD ignore the
+   attributeType field if the sortResult is success.
+
+   The server may not be able to sort the results using the specified
+   sort keys because it may not recognize one of the attribute types,
+   the matching rule associated with an attribute type is not
+   applicable, or none of the attributes in the search response are of
+   these types.  Servers may also restrict the number of keys allowed in
+   the control, such as only supporting a single key.
+
+
+
+Howes, et al.               Standards Track                     [Page 4]
+
+RFC 2891     LDAP Control Extension for Server Side Sorting  August 2000
+
+
+   Servers that chain requests to other LDAP servers should ensure that
+   the server satisfying the client's request sort the entire result set
+   prior to sending back the results.
+
+2.1 Behavior in a chained environment
+
+   If a server receives a sort request, the client expects to receive a
+   set of sorted results. If a client submits a sort request to a server
+   which chains the request and gets entries from multiple servers, and
+   the client has set the criticality of the sort extension to TRUE, the
+   server MUST merge sort the results before returning them to the
+   client or MUST return unwillingToPerform.
+
+2.2 Other sort issues
+
+   An entry that meets the search criteria may be missing one or more of
+   the sort keys. In that case, the entry is considered to have a value
+   of NULL for that key. This standard considers NULL to be a larger
+   value than all other valid values for that key. For example, if only
+   one key is specified, entries which meet the search criteria but do
+   not have that key collate after all the entries which do have that
+   key. If the reverseOrder flag is set, and only one key is specified,
+   entries which meet the search criteria but do not have that key
+   collate BEFORE all the entries which do have that key.
+
+   If a sort key is a multi-valued attribute, and an entry happens to
+   have multiple values for that attribute and no other controls are
+   present that affect the sorting order, then the server SHOULD use the
+   least value (according to the ORDERING rule for that attribute).
+
+3.  Interaction with other search controls
+
+   When the sortKeyRequestControl control is included with the
+   pagedResultsControl control as specified in [LdapPaged], then the
+   server should send the searchResultEntry messages sorted according to
+   the sort keys applied to the entire result set. The server should not
+   simply sort each page, as this will give erroneous results to the
+   client.
+
+   The sortKeyList must be present on each searchRequest message for the
+   paged result. It also must not change between searchRequests for the
+   same result set. If the server has sorted the data, then it SHOULD
+   send back a sortKeyResponseControl control on every searchResultDone
+   message for each page. This will allow clients to quickly determine
+   if the result set is sorted, rather than waiting to receive the
+   entire result set.
+
+
+
+
+
+Howes, et al.               Standards Track                     [Page 5]
+
+RFC 2891     LDAP Control Extension for Server Side Sorting  August 2000
+
+
+4.  Security Considerations
+
+   Implementors and administrators should be aware that allowing sorting
+   of results could enable the retrieval of a large number of records
+   from a given directory service, regardless of administrative limits
+   set on the maximum number of records to return.
+
+   A client that desired to pull all records out of a directory service
+   could use a combination of sorting and updating of search filters to
+   retrieve all records in a database in small result sets, thus
+   circumventing administrative limits.
+
+   This behavior can be overcome by the judicious use of permissions on
+   the directory entries by the administrator and by intelligent
+   implementations of administrative limits on the number of records
+   retrieved by a client.
+
+5.  References
+
+   [LDAPv3]    Wahl, M, Kille, S. and T. Howes, "Lightweight Directory
+               Access Protocol (v3)", RFC 2251, December 1997.
+
+   [Bradner97] Bradner, S., "Key Words for use in RFCs to Indicate
+               Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [LdapPaged] Weider, C., Herron, A., Anantha, A. and T. Howes, "LDAP
+               Control Extension for Simple Paged Results Manipulation",
+               RFC 2696, September 1999.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howes, et al.               Standards Track                     [Page 6]
+
+RFC 2891     LDAP Control Extension for Server Side Sorting  August 2000
+
+
+6.  Authors' Addresses
+
+   Anoop Anantha
+   Microsoft Corp.
+   1 Microsoft Way
+   Redmond, WA 98052
+   USA
+
+   Phone: +1 425 882-8080
+   EMail: anoopa at microsoft.com
+
+
+   Tim Howes
+   Loudcloud, Inc.
+   615 Tasman Dr.
+   Sunnyvale, CA 94089
+   USA
+
+   EMail: howes at loudcloud.com
+
+
+   Mark Wahl
+   Sun Microsystems, Inc.
+   8911 Capital of Texas Hwy Suite 4140
+   Austin, TX 78759
+   USA
+
+   EMail: Mark.Wahl at sun.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howes, et al.               Standards Track                     [Page 7]
+
+RFC 2891     LDAP Control Extension for Server Side Sorting  August 2000
+
+
+7.  Full Copyright Statement
+
+   Copyright (C) The Internet Society (2000).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howes, et al.               Standards Track                     [Page 8]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc3296.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc3296.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc3296.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc3296.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,787 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 3296                           OpenLDAP Foundation
+Category: Standards Track                                      July 2002
+
+
+                    Named Subordinate References in
+        Lightweight Directory Access Protocol (LDAP) Directories
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2002).  All Rights Reserved.
+
+Abstract
+
+   This document details schema and protocol elements for representing
+   and managing named subordinate references in Lightweight Directory
+   Access Protocol (LDAP) Directories.
+
+Conventions
+
+   Schema definitions are provided using LDAPv3 description formats
+   [RFC2252].  Definitions provided here are formatted (line wrapped)
+   for readability.
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" used in
+   this document are to be interpreted as described in BCP 14 [RFC2119].
+
+1.  Background and Intended Usage
+
+   The broadening of interest in LDAP (Lightweight Directory Access
+   Protocol) [RFC2251] directories beyond their use as front ends to
+   X.500 [X.500] directories has created a need to represent knowledge
+   information in a more general way.  Knowledge information is
+   information about one or more servers maintained in another server,
+   used to link servers and services together.
+
+   This document details schema and protocol elements for representing
+   and manipulating named subordinate references in LDAP directories.  A
+   referral object is used to hold subordinate reference information in
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+   the directory.  These referral objects hold one or more URIs
+   [RFC2396] contained in values of the ref attribute type and are used
+   to generate protocol referrals and continuations.
+
+   A control, ManageDsaIT, is defined to allow manipulation of referral
+   and other special objects as normal objects.  As the name of control
+   implies, it is intended to be analogous to the ManageDsaIT service
+   option described in X.511(97) [X.511].
+
+   Other forms of knowledge information are not detailed by this
+   document.  These forms may be described in subsequent documents.
+
+   This document details subordinate referral processing requirements
+   for servers.  This document does not describe protocol syntax and
+   semantics.  This is detailed in RFC 2251 [RFC2251].
+
+   This document does not detail use of subordinate knowledge references
+   to support replicated environments nor distributed operations (e.g.,
+   chaining of operations from one server to other servers).
+
+2.  Schema
+
+2.1.  The referral Object Class
+
+   A referral object is a directory entry whose structural object class
+   is (or is derived from) the referral object class.
+
+      ( 2.16.840.1.113730.3.2.6
+          NAME 'referral'
+          DESC 'named subordinate reference object'
+          STRUCTURAL
+          MUST ref )
+
+   The referral object class is a structural object class used to
+   represent a subordinate reference in the directory.  The referral
+   object class SHOULD be used in conjunction with the extensibleObject
+   object class to support the naming attributes used in the entry's
+   Distinguished Name (DN) [RFC2253].
+
+   Referral objects are normally instantiated at DSEs immediately
+   subordinate to object entries within a naming context held by the
+   DSA.  Referral objects are analogous to X.500 subordinate knowledge
+   (subr) DSEs [X.501].
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+   In the presence of a ManageDsaIT control, referral objects are
+   treated as normal entries as described in section 3.  Note that the
+   ref attribute is operational and will only be returned in a search
+   entry response when requested.
+
+   In the absence of a ManageDsaIT control, the content of referral
+   objects are used to construct referrals and search references as
+   described in Section 4 and, as such, the referral entries are not
+   themselves visible to clients.
+
+2.2  The ref Attribute Type
+
+      ( 2.16.840.1.113730.3.1.34
+          NAME 'ref'
+          DESC 'named reference - a labeledURI'
+          EQUALITY caseExactMatch
+          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+          USAGE distributedOperation )
+
+   The ref attribute type has directoryString syntax and is case
+   sensitive.  The ref attribute is multi-valued.  Values placed in the
+   attribute MUST conform to the specification given for the labeledURI
+   attribute [RFC2079].  The labeledURI specification defines a format
+   that is a URI, optionally followed by whitespace and a label.  This
+   document does not make use of the label portion of the syntax.
+   Future documents MAY enable new functionality by imposing additional
+   structure on the label portion of the syntax as it appears in the ref
+   attribute.
+
+   If the URI contained in a ref attribute value refers to a LDAP
+   [RFC2251] server, it MUST be in the form of a LDAP URL [RFC2255].
+   The LDAP URL SHOULD NOT contain an explicit scope specifier, filter,
+   attribute description list, or any extensions.  The LDAP URL SHOULD
+   contain a non-empty DN.  The handling of LDAP URLs with absent or
+   empty DN parts or with explicit scope specifier is not defined by
+   this specification.
+
+   Other URI schemes MAY be used so long as all operations returning
+   referrals based upon the value could be performed.  This document
+   does not detail use of non-LDAP URIs.  This is left to future
+   specifications.
+
+   The referential integrity of the URI SHOULD NOT be validated by the
+   server holding or returning the URI (whether as a value of the
+   attribute or as part of a referral result or search reference
+   response).
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+   When returning a referral result or search continuation, the server
+   MUST NOT return the separator or label portions of the attribute
+   values as part of the reference.  When the attribute contains
+   multiple values, the URI part of each value is used to construct the
+   referral result or search continuation.
+
+   The ref attribute values SHOULD NOT be used as a relative name-
+   component of an entry's DN [RFC2253].
+
+   This document uses the ref attribute in conjunction with the referral
+   object class to represent subordinate references.  The ref attribute
+   may be used for other purposes as defined by other documents.
+
+3.  The ManageDsaIT Control
+
+   The client may provide the ManageDsaIT control with an operation to
+   indicate that the operation is intended to manage objects within the
+   DSA (server) Information Tree.  The control causes Directory-specific
+   entries (DSEs), regardless of type, to be treated as normal entries
+   allowing clients to interrogate and update these entries using LDAP
+   operations.
+
+   A client MAY specify the following control when issuing an add,
+   compare, delete, modify, modifyDN, search request or an extended
+   operation for which the control is defined.
+
+   The control type is 2.16.840.1.113730.3.4.2.  The control criticality
+   may be TRUE or, if FALSE, absent.  The control value is absent.
+
+   When the control is present in the request, the server SHALL NOT
+   generate a referral or continuation reference based upon information
+   held in referral objects and instead SHALL treat the referral object
+   as a normal entry.  The server, however, is still free to return
+   referrals for other reasons.  When not present, referral objects
+   SHALL be handled as described above.
+
+   The control MAY cause other objects to be treated as normal entries
+   as defined by subsequent documents.
+
+4.  Named Subordinate References
+
+   A named subordinate reference is constructed by instantiating a
+   referral object in the referencing server with ref attribute values
+   which point to the corresponding subtree maintained in the referenced
+   server.  In general, the name of the referral object is the same as
+   the referenced object and this referenced object is a context prefix
+   [X.501].
+
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+   That is, if server A holds "DC=example,DC=net" and server B holds
+   "DC=sub,DC=example,DC=net", server A may contain a referral object
+   named "DC=sub,DC=example,DC=net" which contains a ref attribute with
+   value of "ldap://B/DC=sub,DC=example,DC=net".
+
+      dn: DC=sub,DC=example,DC=net
+      dc: sub
+      ref: ldap://B/DC=sub,DC=example,DC=net
+      objectClass: referral
+      objectClass: extensibleObject
+
+   Typically the DN of the referral object and the DN of the object in
+   the referenced server are the same.
+
+   If the ref attribute has multiple values, all the DNs contained
+   within the LDAP URLs SHOULD be equivalent.  Administrators SHOULD
+   avoid configuring naming loops using referrals.
+
+   Named references MUST be treated as normal entries if the request
+   includes the ManageDsaIT control as described in section 3.
+
+5.  Scenarios
+
+   The following sections contain specifications of how referral objects
+   should be used in different scenarios followed by examples that
+   illustrate that usage.  The scenarios described here consist of
+   referral object handling when finding target of a non-search
+   operation, when finding the base of a search operation, and when
+   generating search references.  Lastly, other operation processing
+   considerations are presented.
+
+   It is to be noted that, in this document, a search operation is
+   conceptually divided into two distinct, sequential phases: (1)
+   finding the base object where the search is to begin, and (2)
+   performing the search itself.  The first phase is similar to, but not
+   the same as, finding the target of a non-search operation.
+
+   It should also be noted that the ref attribute may have multiple
+   values and, where these sections refer to a single ref attribute
+   value, multiple ref attribute values may be substituted and SHOULD be
+   processed and returned (in any order) as a group in a referral or
+   search reference in the same way as described for a single ref
+   attribute value.
+
+   Search references returned for a given request may be returned in any
+   order.
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+5.1.  Example Configuration
+
+   For example, suppose the contacted server (hosta) holds the entry
+   "O=MNN,C=WW" and the entry "CN=Manager,O=MNN,C=WW" and the following
+   referral objects:
+
+      dn: OU=People,O=MNN,C=WW
+      ou: People
+      ref: ldap://hostb/OU=People,O=MNN,C=US
+      ref: ldap://hostc/OU=People,O=MNN,C=US
+      objectClass: referral
+      objectClass: extensibleObject
+
+      dn: OU=Roles,O=MNN,C=WW
+      ou: Roles
+      ref: ldap://hostd/OU=Roles,O=MNN,C=WW
+      objectClass: referral
+      objectClass: extensibleObject
+
+   The first referral object provides the server with the knowledge that
+   subtree "OU=People,O=MNN,C=WW" is held by hostb and hostc (e.g., one
+   is the master and the other a shadow).  The second referral object
+   provides the server with the knowledge that the subtree
+   "OU=Roles,O=MNN,C=WW" is held by hostd.
+
+   Also, in the context of this document, the "nearest naming context"
+   means the deepest context which the object is within.  That is, if
+   the object is within multiple naming contexts, the nearest naming
+   context is the one which is subordinate to all other naming contexts
+   the object is within.
+
+5.2.  Target Object Considerations
+
+   This section details referral handling for add, compare, delete,
+   modify, and modify DN operations.  If the client requests any of
+   these operations, there are four cases that the server must handle
+   with respect to the target object.
+
+   The DN part MUST be modified such that it refers to the appropriate
+   target in the referenced server (as detailed below).  Even where the
+   DN to be returned is the same as the target DN, the DN part SHOULD
+   NOT be trimmed.
+
+   In cases where the URI to be returned is a LDAP URL, the server
+   SHOULD trim any present scope, filter, or attribute list from the URI
+   before returning it.  Critical extensions MUST NOT be trimmed or
+   modified.
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+   Case 1: The target object is not held by the server and is not within
+      or subordinate to any naming context nor subordinate to any
+      referral object held by the server.
+
+      The server SHOULD process the request normally as appropriate for
+      a non-existent base which is not within any naming context of the
+      server (generally return noSuchObject or a referral based upon
+      superior knowledge reference information).  This document does not
+      detail management or processing of superior knowledge reference
+      information.
+
+   Case 2: The target object is held by the server and is a referral
+      object.
+
+      The server SHOULD return the URI value contained in the ref
+      attribute of the referral object appropriately modified as
+      described above.
+
+   Example: If the client issues a modify request for the target object
+      of "OU=People,O=MNN,c=WW", the server will return:
+
+         ModifyResponse (referral) {
+             ldap://hostb/OU=People,O=MNN,C=WW
+             ldap://hostc/OU=People,O=MNN,C=WW
+         }
+
+   Case 3: The target object is not held by the server, but the nearest
+      naming context contains no referral object which the target object
+      is subordinate to.
+
+      If the nearest naming context contains no referral object which
+      the target is subordinate to, the server SHOULD process the
+      request as appropriate for a nonexistent target (generally return
+      noSuchObject).
+
+   Case 4: The target object is not held by the server, but the nearest
+      naming context contains a referral object which the target object
+      is subordinate to.
+
+      If a client requests an operation for which the target object is
+      not held by the server and the nearest naming context contains a
+      referral object which the target object is subordinate to, the
+      server SHOULD return a referral response constructed from the URI
+      portion of the ref value of the referral object.
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+   Example: If the client issues an add request where the target object
+      has a DN of "CN=Manager,OU=Roles,O=MNN,C=WW", the server will
+      return:
+
+         AddResponse (referral) {
+             ldap://hostd/CN=Manager,OU=Roles,O=MNN,C=WW"
+         }
+
+      Note that the DN part of the LDAP URL is modified such that it
+      refers to the appropriate entry in the referenced server.
+
+5.3.  Base Object Considerations
+
+   This section details referral handling for base object processing
+   within search operations.  Like target object considerations for
+   non-search operations, there are the four cases.
+
+   In cases where the URI to be returned is a LDAP URL, the server MUST
+   provide an explicit scope specifier from the LDAP URL prior to
+   returning it.  In addition, the DN part MUST be modified such that it
+   refers to the appropriate target in the referenced server (as
+   detailed below).
+
+   If aliasing dereferencing was necessary in finding the referral
+   object, the DN part of the URI MUST be replaced with the base DN as
+   modified by the alias dereferencing such that the return URL refers
+   to the new target object per [RFC2251, 4.1.11].
+
+   Critical extensions MUST NOT be trimmed nor modified.
+
+   Case 1: The base object is not held by the server and is not within
+      nor subordinate to any naming context held by the server.
+
+      The server SHOULD process the request normally as appropriate for
+      a non-existent base which not within any naming context of the
+      server (generally return a superior referral or noSuchObject).
+      This document does not detail management or processing of superior
+      knowledge references.
+
+   Case 2: The base object is held by the server and is a referral
+      object.
+
+      The server SHOULD return the URI value contained in the ref
+      attribute of the referral object appropriately modified as
+      described above.
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 8]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+   Example: If the client issues a subtree search in which the base
+      object is "OU=Roles,O=MNN,C=WW", the server will return
+
+         SearchResultDone (referral) {
+             ldap://hostd/OU=Roles,O=MNN,C=WW??sub
+         }
+
+      If the client were to issue a base or oneLevel search instead of
+      subtree, the returned LDAP URL would explicitly specify "base" or
+      "one", respectively, instead of "sub".
+
+   Case 3: The base object is not held by the server, but the nearest
+      naming context contains no referral object which the base object
+      is subordinate to.
+
+      If the nearest naming context contains no referral object which
+      the base is subordinate to, the request SHOULD be processed
+      normally as appropriate for a nonexistent base (generally return
+      noSuchObject).
+
+   Case 4: The base object is not held by the server, but the nearest
+      naming context contains a referral object which the base object is
+      subordinate to.
+
+      If a client requests an operation for which the target object is
+      not held by the server and the nearest naming context contains a
+      referral object which the target object is subordinate to, the
+      server SHOULD return a referral response which is constructed from
+      the URI portion of the ref value of the referral object.
+
+   Example: If the client issues a base search request for
+      "CN=Manager,OU=Roles,O=MNN,C=WW", the server will return
+
+         SearchResultDone (referral) {
+             ldap://hostd/CN=Manager,OU=Roles,O=MNN,C=WW??base"
+         }
+
+      If the client were to issue a subtree or oneLevel search instead
+      of subtree, the returned LDAP URL would explicitly specify "sub"
+      or "one", respectively, instead of "base".
+
+      Note that the DN part of the LDAP URL is modified such that it
+      refers to the appropriate entry in the referenced server.
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 9]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+5.4.  Search Continuation Considerations
+
+   For search operations, once the base object has been found and
+   determined not to be a referral object, the search may progress.  Any
+   entry matching the filter and scope of the search which is not a
+   referral object is returned to the client normally as described in
+   [RFC2251].
+
+   For each referral object within the requested scope, regardless of
+   the search filter, the server SHOULD return a SearchResultReference
+   which is constructed from the URI component of values of the ref
+   attribute.  If the URI component is not a LDAP URL, it should be
+   returned as is.  If the LDAP URL's DN part is absent or empty, the DN
+   part must be modified to contain the DN of the referral object.  If
+   the URI component is a LDAP URL, the URI SHOULD be modified to add an
+   explicit scope specifier.
+
+   Subtree Example:
+
+      If a client requests a subtree search of "O=MNN,C=WW", then in
+      addition to any entries within scope which match the filter, hosta
+      will also return two search references as the two referral objects
+      are within scope.  One possible response might be:
+
+          SearchEntry for O=MNN,C=WW
+          SearchResultReference {
+              ldap://hostb/OU=People,O=MNN,C=WW??sub
+              ldap://hostc/OU=People,O=MNN,C=WW??sub
+          }
+          SearchEntry for CN=Manager,O=MNN,C=WW
+          SearchResultReference {
+              ldap://hostd/OU=Roles,O=MNN,C=WW??sub
+          }
+          SearchResultDone (success)
+
+   One Level Example:
+
+      If a client requests a one level search of "O=MNN,C=WW" then, in
+      addition to any entries one level below the "O=MNN,C=WW" entry
+      matching the filter, the server will also return two search
+      references as the two referral objects are within scope.  One
+      possible sequence is shown:
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 10]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+          SearchResultReference {
+              ldap://hostb/OU=People,O=MNN,C=WW??base
+              ldap://hostc/OU=People,O=MNN,C=WW??base
+          }
+          SearchEntry for CN=Manager,O=MNN,C=WW
+          SearchResultReference {
+              ldap://hostd/OU=Roles,O=MNN,C=WW??base
+          }
+          SearchResultDone (success)
+
+   Note: Unlike the examples in Section 4.5.3.1 of RFC 2251, the LDAP
+      URLs returned with the SearchResultReference messages contain, as
+      required by this specification, an explicit scope specifier.
+
+5.6.  Other Considerations
+
+   This section details processing considerations for other operations.
+
+5.6.1 Bind
+
+   Servers SHOULD NOT return referral result code if the bind name (or
+   authentication identity or authorization identity) is (or is
+   subordinate to) a referral object but MAY use the knowledge
+   information to process the bind request (such as in support a future
+   distributed operation specification).  Where the server makes no use
+   of the knowledge information, the server processes the request
+   normally as appropriate for a non-existent authentication or
+   authorization identity (e.g., return invalidCredentials).
+
+5.6.2 Modify DN
+
+   If the newSuperior is a referral object or is subordinate to a
+   referral object, the server SHOULD return affectsMultipleDSAs.  If
+   the newRDN already exists but is a referral object, the server SHOULD
+   return affectsMultipleDSAs instead of entryAlreadyExists.
+
+6.  Security Considerations
+
+   This document defines mechanisms that can be used to tie LDAP (and
+   other) servers together.  The information used to tie services
+   together should be protected from unauthorized modification.  If the
+   server topology information is not public information, it should be
+   protected from unauthorized disclosure as well.
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 11]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+7.  Acknowledgments
+
+   This document borrows heavily from previous work by IETF LDAPext
+   Working Group.  In particular, this document is based upon "Named
+   Referral in LDAP Directories" (an expired Internet Draft) by
+   Christopher Lukas, Tim Howes, Michael Roszkowski, Mark C. Smith, and
+   Mark Wahl.
+
+8. Normative References
+
+   [RFC2079] Smith, M., "Definition of an X.500 Attribute Type and an
+             Object Class to Hold Uniform Resource Identifiers (URIs)",
+             RFC 2079, January 1997.
+
+   [RFC2119] Bradner, S., "Key Words for use in RFCs to Indicate
+             Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC2251] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory
+             Access Protocol (v3)", RFC 2251, December 1997.
+
+   [RFC2252] Wahl, M., Coulbeck, A., Howes, T. and S. Kille,
+             "Lightweight Directory Access Protocol (v3): Attribute
+             Syntax Definitions", RFC 2252, December 1997.
+
+   [RFC2253] Wahl, M., Kille, S. and T. Howes, "Lightweight Directory
+             Access Protocol (v3): UTF-8 String Representation of
+             Distinguished Names", RFC 2253, December 1997.
+
+   [RFC2255] Howes, T. and M. Smith, "The LDAP URL Format", RFC 2255,
+             December, 1997.
+
+   [RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform
+             Resource Identifiers (URI): Generic Syntax", RFC 2396,
+             August 1998.
+
+   [X.501]   ITU-T, "The Directory: Models", X.501, 1993.
+
+9. Informative References
+
+   [X.500]   ITU-T, "The Directory: Overview of Concepts, Models, and
+             Services", X.500, 1993.
+
+   [X.511]   ITU-T, "The Directory: Abstract Service Definition", X.500,
+             1997.
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 12]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+10.  Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 13]
+
+RFC 3296    Named Subordinate References in LDAP Directories   July 2002
+
+
+11.  Full Copyright Statement
+
+   Copyright (C) The Internet Society (2002).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 14]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4510.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4510.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4510.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4510.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,395 @@
+
+
+
+
+
+
+Network Working Group                                   K. Zeilenga, Ed.
+Request for Comments: 4510                           OpenLDAP Foundation
+Obsoletes: 2251, 2252, 2253, 2254, 2255,                       June 2006
+           2256, 2829, 2830, 3377, 3771
+Category: Standards Track
+
+
+             Lightweight Directory Access Protocol (LDAP):
+                    Technical Specification Road Map
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   The Lightweight Directory Access Protocol (LDAP) is an Internet
+   protocol for accessing distributed directory services that act in
+   accordance with X.500 data and service models.  This document
+   provides a road map of the LDAP Technical Specification.
+
+1.  The LDAP Technical Specification
+
+   The technical specification detailing version 3 of the Lightweight
+   Directory Access Protocol (LDAP), an Internet Protocol, consists of
+   this document and the following documents:
+
+      LDAP: The Protocol [RFC4511]
+      LDAP: Directory Information Models [RFC4512]
+      LDAP: Authentication Methods and Security Mechanisms [RFC4513]
+      LDAP: String Representation of Distinguished Names [RFC4514]
+      LDAP: String Representation of Search Filters [RFC4515]
+      LDAP: Uniform Resource Locator [RFC4516]
+      LDAP: Syntaxes and Matching Rules [RFC4517]
+      LDAP: Internationalized String Preparation [RFC4518]
+      LDAP: Schema for User Applications [RFC4519]
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4510                   LDAP: TS Road Map                   June 2006
+
+
+   The terms "LDAP" and "LDAPv3" are commonly used to refer informally
+   to the protocol specified by this technical specification.  The LDAP
+   suite, as defined here, should be formally identified in other
+   documents by a normative reference to this document.
+
+   LDAP is an extensible protocol.  Extensions to LDAP may be specified
+   in other documents.  Nomenclature denoting such combinations of
+   LDAP-plus-extensions is not defined by this document but may be
+   defined in some future document(s).  Extensions are expected to be
+   truly optional.  Considerations for the LDAP extensions described in
+   BCP 118, RFC 4521 [RFC4521] fully apply to this revision of the LDAP
+   Technical Specification.
+
+   IANA (Internet Assigned Numbers Authority) considerations for LDAP
+   described in BCP 64, RFC 4520 [RFC4520] apply fully to this revision
+   of the LDAP technical specification.
+
+1.1.  Conventions
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+2.  Relationship to X.500
+
+   This technical specification defines LDAP in terms of [X.500] as an
+   X.500 access mechanism.  An LDAP server MUST act in accordance with
+   the X.500 (1993) series of International Telecommunication Union -
+   Telecommunication Standardization (ITU-T) Recommendations when
+   providing the service.  However, it is not required that an LDAP
+   server make use of any X.500 protocols in providing this service.
+   For example, LDAP can be mapped onto any other directory system so
+   long as the X.500 data and service models [X.501][X.511], as used in
+   LDAP, are not violated in the LDAP interface.
+
+   This technical specification explicitly incorporates portions of
+   X.500(93).  Later revisions of X.500 do not automatically apply to
+   this technical specification.
+
+3.  Relationship to Obsolete Specifications
+
+   This technical specification, as defined in Section 1, obsoletes
+   entirely the previously defined LDAP technical specification defined
+   in RFC 3377 (and consisting of RFCs 2251-2256, 2829, 2830, 3771, and
+   3377 itself).  The technical specification was significantly
+   reorganized.
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4510                   LDAP: TS Road Map                   June 2006
+
+
+   This document replaces RFC 3377 as well as Section 3.3 of RFC 2251.
+   [RFC4512] replaces portions of RFC 2251, RFC 2252, and RFC 2256.
+   [RFC4511] replaces the majority RFC 2251, portions of RFC 2252, and
+   all of RFC 3771.  [RFC4513] replaces RFC 2829, RFC 2830, and portions
+   of RFC 2251.  [RFC4517] replaces the majority of RFC 2252 and
+   portions of RFC 2256.  [RFC4519] replaces the majority of RFC 2256.
+   [RFC4514] replaces RFC 2253.  [RFC4515] replaces RFC 2254.  [RFC4516]
+   replaces RFC 2255.
+
+   [RFC4518] is new to this revision of the LDAP technical
+   specification.
+
+   Each document of this specification contains appendices summarizing
+   changes to all sections of the specifications they replace.  Appendix
+   A.1 of this document details changes made to RFC 3377.  Appendix A.2
+   of this document details changes made to Section 3.3 of RFC 2251.
+
+   Additionally, portions of this technical specification update and/or
+   replace a number of other documents not listed above.  These
+   relationships are discussed in the documents detailing these portions
+   of this technical specification.
+
+4.  Security Considerations
+
+   LDAP security considerations are discussed in each document
+   comprising the technical specification.
+
+5.  Acknowledgements
+
+   This document is based largely on RFC 3377 by J. Hodges and R.
+   Morgan, a product of the LDAPBIS and LDAPEXT Working Groups.  The
+   document also borrows from RFC 2251 by M. Wahl, T. Howes, and S.
+   Kille, a product of the ASID Working Group.
+
+   This document is a product of the IETF LDAPBIS Working Group.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4510                   LDAP: TS Road Map                   June 2006
+
+
+6.  Normative References
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Directory Information Models", RFC 4512, June
+                 2006.
+
+   [RFC4513]     Harrison, R., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Authentication Methods and Security
+                 Mechanisms", RFC 4513, June 2006.
+
+   [RFC4514]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): String Representation of Distinguished
+                 Names", RFC 4514, June 2006.
+
+   [RFC4515]     Smith, M., Ed. and T. Howes, "Lightweight Directory
+                 Access Protocol (LDAP): String Representation of Search
+                 Filters", RFC 4515, June 2006.
+
+   [RFC4516]     Smith, M., Ed. and T. Howes, "Lightweight Directory
+                 Access Protocol (LDAP): Uniform Resource Locator", RFC
+                 4516, June 2006.
+
+   [RFC4517]     Legg, S., Ed., "Lightweight Directory Access Protocol
+                 (LDAP): Syntaxes and Matching Rules", RFC 4517, June
+                 2006.
+
+   [RFC4518]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Internationalized String Preparation", RFC
+                 4518, June 2006.
+
+   [RFC4519]     Sciberras, A., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Schema for User Applications", RFC
+                 4519, June 2006.
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [RFC4521]     Zeilenga, K., "Considerations for LDAP Extensions", BCP
+                 118, RFC 4521, June 2006.
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4510                   LDAP: TS Road Map                   June 2006
+
+
+   [X.500]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Overview of concepts, models and
+                 services", X.500(1993) (also ISO/IEC 9594-1:1994).
+
+   [X.501]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Models", X.501(1993) (also ISO/IEC 9594-
+                 2:1994).
+
+   [X.511]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory: Abstract Service Definition", X.511(1993)
+                 (also ISO/IEC 9594-3:1993).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4510                   LDAP: TS Road Map                   June 2006
+
+
+Appendix A.  Changes to Previous Documents
+
+   This appendix outlines changes this document makes relative to the
+   documents it replaces (in whole or in part).
+
+A.1. Changes to RFC 3377
+
+   This document is nearly a complete rewrite of RFC 3377 as much of the
+   material of RFC 3377 is no longer applicable.  The changes include
+   redefining the terms "LDAP" and "LDAPv3" to refer to this revision of
+   the technical specification.
+
+A.2. Changes to Section 3.3 of RFC 2251
+
+   The section was modified slightly (the word "document" was replaced
+   with "technical specification") to clarify that it applies to the
+   entire LDAP technical specification.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 4510                   LDAP: TS Road Map                   June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4511.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4511.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4511.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4511.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,3811 @@
+
+
+
+
+
+
+Network Working Group                                J. Sermersheim, Ed.
+Request for Comments: 4511                                  Novell, Inc.
+Obsoletes: 2251, 2830, 3771                                    June 2006
+Category: Standards Track
+
+
+      Lightweight Directory Access Protocol (LDAP): The Protocol
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document describes the protocol elements, along with their
+   semantics and encodings, of the Lightweight Directory Access Protocol
+   (LDAP).  LDAP provides access to distributed directory services that
+   act in accordance with X.500 data and service models.  These protocol
+   elements are based on those described in the X.500 Directory Access
+   Protocol (DAP).
+
+Table of Contents
+
+   1. Introduction ....................................................3
+      1.1. Relationship to Other LDAP Specifications ..................3
+   2. Conventions .....................................................3
+   3. Protocol Model ..................................................4
+      3.1. Operation and LDAP Message Layer Relationship ..............5
+   4. Elements of Protocol ............................................5
+      4.1. Common Elements ............................................5
+           4.1.1. Message Envelope ....................................6
+           4.1.2. String Types ........................................7
+           4.1.3. Distinguished Name and Relative Distinguished Name ..8
+           4.1.4. Attribute Descriptions ..............................8
+           4.1.5. Attribute Value .....................................8
+           4.1.6. Attribute Value Assertion ...........................9
+           4.1.7. Attribute and PartialAttribute ......................9
+           4.1.8. Matching Rule Identifier ...........................10
+           4.1.9. Result Message .....................................10
+           4.1.10. Referral ..........................................12
+
+
+
+Sermersheim                 Standards Track                     [Page 1]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+           4.1.11. Controls ..........................................14
+      4.2. Bind Operation ............................................16
+           4.2.1. Processing of the Bind Request .....................17
+           4.2.2. Bind Response ......................................18
+      4.3. Unbind Operation ..........................................18
+      4.4. Unsolicited Notification ..................................19
+           4.4.1. Notice of Disconnection ............................19
+      4.5. Search Operation ..........................................20
+           4.5.1. Search Request .....................................20
+           4.5.2. Search Result ......................................27
+           4.5.3. Continuation References in the Search Result .......28
+      4.6. Modify Operation ..........................................31
+      4.7. Add Operation .............................................33
+      4.8. Delete Operation ..........................................34
+      4.9. Modify DN Operation .......................................34
+      4.10. Compare Operation ........................................36
+      4.11. Abandon Operation ........................................36
+      4.12. Extended Operation .......................................37
+      4.13. IntermediateResponse Message .............................39
+           4.13.1. Usage with LDAP ExtendedRequest and
+                   ExtendedResponse ..................................40
+           4.13.2. Usage with LDAP Request Controls ..................40
+      4.14. StartTLS Operation .......................................40
+           4.14.1. StartTLS Request ..................................40
+           4.14.2. StartTLS Response .................................41
+           4.14.3. Removal of the TLS Layer ..........................41
+   5. Protocol Encoding, Connection, and Transfer ....................42
+      5.1. Protocol Encoding .........................................42
+      5.2. Transmission Control Protocol (TCP) .......................43
+      5.3. Termination of the LDAP session ...........................43
+   6. Security Considerations ........................................43
+   7. Acknowledgements ...............................................45
+   8. Normative References ...........................................46
+   9. Informative References .........................................48
+   10. IANA Considerations ...........................................48
+   Appendix A. LDAP Result Codes .....................................49
+      A.1. Non-Error Result Codes ....................................49
+      A.2. Result Codes ..............................................49
+   Appendix B. Complete ASN.1 Definition .............................54
+   Appendix C. Changes ...............................................60
+      C.1. Changes Made to RFC 2251 ..................................60
+      C.2. Changes Made to RFC 2830 ..................................66
+      C.3. Changes Made to RFC 3771 ..................................66
+
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                     [Page 2]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+1.  Introduction
+
+   The Directory is "a collection of open systems cooperating to provide
+   directory services" [X.500].  A directory user, which may be a human
+   or other entity, accesses the Directory through a client (or
+   Directory User Agent (DUA)).  The client, on behalf of the directory
+   user, interacts with one or more servers (or Directory System Agents
+   (DSA)).  Clients interact with servers using a directory access
+   protocol.
+
+   This document details the protocol elements of the Lightweight
+   Directory Access Protocol (LDAP), along with their semantics.
+   Following the description of protocol elements, it describes the way
+   in which the protocol elements are encoded and transferred.
+
+1.1.  Relationship to Other LDAP Specifications
+
+   This document is an integral part of the LDAP Technical Specification
+   [RFC4510], which obsoletes the previously defined LDAP technical
+   specification, RFC 3377, in its entirety.
+
+   This document, together with [RFC4510], [RFC4513], and [RFC4512],
+   obsoletes RFC 2251 in its entirety.  Section 3.3 is obsoleted by
+   [RFC4510].  Sections 4.2.1 (portions) and 4.2.2 are obsoleted by
+   [RFC4513].  Sections 3.2, 3.4, 4.1.3 (last paragraph), 4.1.4, 4.1.5,
+   4.1.5.1, 4.1.9 (last paragraph), 5.1, 6.1, and 6.2 (last paragraph)
+   are obsoleted by [RFC4512].  The remainder of RFC 2251 is obsoleted
+   by this document.  Appendix C.1 summarizes substantive changes in the
+   remainder.
+
+   This document obsoletes RFC 2830, Sections 2 and 4.  The remainder of
+   RFC 2830 is obsoleted by [RFC4513].  Appendix C.2 summarizes
+   substantive changes to the remaining sections.
+
+   This document also obsoletes RFC 3771 in entirety.
+
+2.  Conventions
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are
+   to be interpreted as described in [RFC2119].
+
+   Character names in this document use the notation for code points and
+   names from the Unicode Standard [Unicode].  For example, the letter
+   "a" may be represented as either <U+0061> or <LATIN SMALL LETTER A>.
+
+
+
+
+
+
+Sermersheim                 Standards Track                     [Page 3]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   Note: a glossary of terms used in Unicode can be found in [Glossary].
+   Information on the Unicode character encoding model can be found in
+   [CharModel].
+
+   The term "transport connection" refers to the underlying transport
+   services used to carry the protocol exchange, as well as associations
+   established by these services.
+
+   The term "TLS layer" refers to Transport Layer Security (TLS)
+   services used in providing security services, as well as associations
+   established by these services.
+
+   The term "SASL layer" refers to Simply Authentication and Security
+   Layer (SASL) services used in providing security services, as well as
+   associations established by these services.
+
+   The term "LDAP message layer" refers to the LDAP Message Protocol
+   Data Unit (PDU) services used in providing directory services, as
+   well as associations established by these services.
+
+   The term "LDAP session" refers to combined services (transport
+   connection, TLS layer, SASL layer, LDAP message layer) and their
+   associations.
+
+   See the table in Section 5 for an illustration of these four terms.
+
+3.  Protocol Model
+
+   The general model adopted by this protocol is one of clients
+   performing protocol operations against servers.  In this model, a
+   client transmits a protocol request describing the operation to be
+   performed to a server.  The server is then responsible for performing
+   the necessary operation(s) in the Directory.  Upon completion of an
+   operation, the server typically returns a response containing
+   appropriate data to the requesting client.
+
+   Protocol operations are generally independent of one another.  Each
+   operation is processed as an atomic action, leaving the directory in
+   a consistent state.
+
+   Although servers are required to return responses whenever such
+   responses are defined in the protocol, there is no requirement for
+   synchronous behavior on the part of either clients or servers.
+   Requests and responses for multiple operations generally may be
+   exchanged between a client and server in any order.  If required,
+   synchronous behavior may be controlled by client applications.
+
+
+
+
+
+Sermersheim                 Standards Track                     [Page 4]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   The core protocol operations defined in this document can be mapped
+   to a subset of the X.500 (1993) Directory Abstract Service [X.511].
+   However, there is not a one-to-one mapping between LDAP operations
+   and X.500 Directory Access Protocol (DAP) operations.  Server
+   implementations acting as a gateway to X.500 directories may need to
+   make multiple DAP requests to service a single LDAP request.
+
+3.1.  Operation and LDAP Message Layer Relationship
+
+   Protocol operations are exchanged at the LDAP message layer.  When
+   the transport connection is closed, any uncompleted operations at the
+   LDAP message layer are abandoned (when possible) or are completed
+   without transmission of the response (when abandoning them is not
+   possible).  Also, when the transport connection is closed, the client
+   MUST NOT assume that any uncompleted update operations have succeeded
+   or failed.
+
+4.  Elements of Protocol
+
+   The protocol is described using Abstract Syntax Notation One
+   ([ASN.1]) and is transferred using a subset of ASN.1 Basic Encoding
+   Rules ([BER]).  Section 5 specifies how the protocol elements are
+   encoded and transferred.
+
+   In order to support future extensions to this protocol, extensibility
+   is implied where it is allowed per ASN.1 (i.e., sequence, set,
+   choice, and enumerated types are extensible).  In addition, ellipses
+   (...) have been supplied in ASN.1 types that are explicitly
+   extensible as discussed in [RFC4520].  Because of the implied
+   extensibility, clients and servers MUST (unless otherwise specified)
+   ignore trailing SEQUENCE components whose tags they do not recognize.
+
+   Changes to the protocol other than through the extension mechanisms
+   described here require a different version number.  A client
+   indicates the version it is using as part of the BindRequest,
+   described in Section 4.2.  If a client has not sent a Bind, the
+   server MUST assume the client is using version 3 or later.
+
+   Clients may attempt to determine the protocol versions a server
+   supports by reading the 'supportedLDAPVersion' attribute from the
+   root DSE (DSA-Specific Entry) [RFC4512].
+
+4.1.  Common Elements
+
+   This section describes the LDAPMessage envelope Protocol Data Unit
+   (PDU) format, as well as data type definitions, which are used in the
+   protocol operations.
+
+
+
+
+Sermersheim                 Standards Track                     [Page 5]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+4.1.1.  Message Envelope
+
+   For the purposes of protocol exchanges, all protocol operations are
+   encapsulated in a common envelope, the LDAPMessage, which is defined
+   as follows:
+
+        LDAPMessage ::= SEQUENCE {
+             messageID       MessageID,
+             protocolOp      CHOICE {
+                  bindRequest           BindRequest,
+                  bindResponse          BindResponse,
+                  unbindRequest         UnbindRequest,
+                  searchRequest         SearchRequest,
+                  searchResEntry        SearchResultEntry,
+                  searchResDone         SearchResultDone,
+                  searchResRef          SearchResultReference,
+                  modifyRequest         ModifyRequest,
+                  modifyResponse        ModifyResponse,
+                  addRequest            AddRequest,
+                  addResponse           AddResponse,
+                  delRequest            DelRequest,
+                  delResponse           DelResponse,
+                  modDNRequest          ModifyDNRequest,
+                  modDNResponse         ModifyDNResponse,
+                  compareRequest        CompareRequest,
+                  compareResponse       CompareResponse,
+                  abandonRequest        AbandonRequest,
+                  extendedReq           ExtendedRequest,
+                  extendedResp          ExtendedResponse,
+                  ...,
+                  intermediateResponse  IntermediateResponse },
+             controls       [0] Controls OPTIONAL }
+
+        MessageID ::= INTEGER (0 ..  maxInt)
+
+        maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) --
+
+   The ASN.1 type Controls is defined in Section 4.1.11.
+
+   The function of the LDAPMessage is to provide an envelope containing
+   common fields required in all protocol exchanges.  At this time, the
+   only common fields are the messageID and the controls.
+
+   If the server receives an LDAPMessage from the client in which the
+   LDAPMessage SEQUENCE tag cannot be recognized, the messageID cannot
+   be parsed, the tag of the protocolOp is not recognized as a request,
+   or the encoding structures or lengths of data fields are found to be
+   incorrect, then the server SHOULD return the Notice of Disconnection
+
+
+
+Sermersheim                 Standards Track                     [Page 6]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   described in Section 4.4.1, with the resultCode set to protocolError,
+   and MUST immediately terminate the LDAP session as described in
+   Section 5.3.
+
+   In other cases where the client or server cannot parse an LDAP PDU,
+   it SHOULD abruptly terminate the LDAP session (Section 5.3) where
+   further communication (including providing notice) would be
+   pernicious.  Otherwise, server implementations MUST return an
+   appropriate response to the request, with the resultCode set to
+   protocolError.
+
+4.1.1.1.  MessageID
+
+   All LDAPMessage envelopes encapsulating responses contain the
+   messageID value of the corresponding request LDAPMessage.
+
+   The messageID of a request MUST have a non-zero value different from
+   the messageID of any other request in progress in the same LDAP
+   session.  The zero value is reserved for the unsolicited notification
+   message.
+
+   Typical clients increment a counter for each request.
+
+   A client MUST NOT send a request with the same messageID as an
+   earlier request in the same LDAP session unless it can be determined
+   that the server is no longer servicing the earlier request (e.g.,
+   after the final response is received, or a subsequent Bind
+   completes).  Otherwise, the behavior is undefined.  For this purpose,
+   note that Abandon and successfully abandoned operations do not send
+   responses.
+
+4.1.2.  String Types
+
+   The LDAPString is a notational convenience to indicate that, although
+   strings of LDAPString type encode as ASN.1 OCTET STRING types, the
+   [ISO10646] character set (a superset of [Unicode]) is used, encoded
+   following the UTF-8 [RFC3629] algorithm.  Note that Unicode
+   characters U+0000 through U+007F are the same as ASCII 0 through 127,
+   respectively, and have the same single octet UTF-8 encoding.  Other
+   Unicode characters have a multiple octet UTF-8 encoding.
+
+        LDAPString ::= OCTET STRING -- UTF-8 encoded,
+                                    -- [ISO10646] characters
+
+   The LDAPOID is a notational convenience to indicate that the
+   permitted value of this string is a (UTF-8 encoded) dotted-decimal
+   representation of an OBJECT IDENTIFIER.  Although an LDAPOID is
+
+
+
+
+Sermersheim                 Standards Track                     [Page 7]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   encoded as an OCTET STRING, values are limited to the definition of
+   <numericoid> given in Section 1.4 of [RFC4512].
+
+        LDAPOID ::= OCTET STRING -- Constrained to <numericoid>
+                                 -- [RFC4512]
+
+   For example,
+
+        1.3.6.1.4.1.1466.1.2.3
+
+4.1.3.  Distinguished Name and Relative Distinguished Name
+
+   An LDAPDN is defined to be the representation of a Distinguished Name
+   (DN) after encoding according to the specification in [RFC4514].
+
+        LDAPDN ::= LDAPString
+                   -- Constrained to <distinguishedName> [RFC4514]
+
+   A RelativeLDAPDN is defined to be the representation of a Relative
+   Distinguished Name (RDN) after encoding according to the
+   specification in [RFC4514].
+
+        RelativeLDAPDN ::= LDAPString
+                           -- Constrained to <name-component> [RFC4514]
+
+4.1.4.  Attribute Descriptions
+
+   The definition and encoding rules for attribute descriptions are
+   defined in Section 2.5 of [RFC4512].  Briefly, an attribute
+   description is an attribute type and zero or more options.
+
+        AttributeDescription ::= LDAPString
+                                -- Constrained to <attributedescription>
+                                -- [RFC4512]
+
+4.1.5.  Attribute Value
+
+   A field of type AttributeValue is an OCTET STRING containing an
+   encoded attribute value.  The attribute value is encoded according to
+   the LDAP-specific encoding definition of its corresponding syntax.
+   The LDAP-specific encoding definitions for different syntaxes and
+   attribute types may be found in other documents and in particular
+   [RFC4517].
+
+        AttributeValue ::= OCTET STRING
+
+
+
+
+
+
+Sermersheim                 Standards Track                     [Page 8]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   Note that there is no defined limit on the size of this encoding;
+   thus, protocol values may include multi-megabyte attribute values
+   (e.g., photographs).
+
+   Attribute values may be defined that have arbitrary and non-printable
+   syntax.  Implementations MUST NOT display or attempt to decode an
+   attribute value if its syntax is not known.  The implementation may
+   attempt to discover the subschema of the source entry and to retrieve
+   the descriptions of 'attributeTypes' from it [RFC4512].
+
+   Clients MUST only send attribute values in a request that are valid
+   according to the syntax defined for the attributes.
+
+4.1.6.  Attribute Value Assertion
+
+   The AttributeValueAssertion (AVA) type definition is similar to the
+   one in the X.500 Directory standards.  It contains an attribute
+   description and a matching rule ([RFC4512], Section 4.1.3) assertion
+   value suitable for that type.  Elements of this type are typically
+   used to assert that the value in assertionValue matches a value of an
+   attribute.
+
+        AttributeValueAssertion ::= SEQUENCE {
+             attributeDesc   AttributeDescription,
+             assertionValue  AssertionValue }
+
+        AssertionValue ::= OCTET STRING
+
+   The syntax of the AssertionValue depends on the context of the LDAP
+   operation being performed.  For example, the syntax of the EQUALITY
+   matching rule for an attribute is used when performing a Compare
+   operation.  Often this is the same syntax used for values of the
+   attribute type, but in some cases the assertion syntax differs from
+   the value syntax.  See objectIdentiferFirstComponentMatch in
+   [RFC4517] for an example.
+
+4.1.7.  Attribute and PartialAttribute
+
+   Attributes and partial attributes consist of an attribute description
+   and attribute values.  A PartialAttribute allows zero values, while
+   Attribute requires at least one value.
+
+        PartialAttribute ::= SEQUENCE {
+             type       AttributeDescription,
+             vals       SET OF value AttributeValue }
+
+
+
+
+
+
+Sermersheim                 Standards Track                     [Page 9]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+        Attribute ::= PartialAttribute(WITH COMPONENTS {
+             ...,
+             vals (SIZE(1..MAX))})
+
+   No two of the attribute values may be equivalent as described by
+   Section 2.2 of [RFC4512].  The set of attribute values is unordered.
+   Implementations MUST NOT rely upon the ordering being repeatable.
+
+4.1.8.  Matching Rule Identifier
+
+   Matching rules are defined in Section 4.1.3 of [RFC4512].  A matching
+   rule is identified in the protocol by the printable representation of
+   either its <numericoid> or one of its short name descriptors
+   [RFC4512], e.g., 'caseIgnoreMatch' or '2.5.13.2'.
+
+        MatchingRuleId ::= LDAPString
+
+4.1.9.  Result Message
+
+   The LDAPResult is the construct used in this protocol to return
+   success or failure indications from servers to clients.  To various
+   requests, servers will return responses containing the elements found
+   in LDAPResult to indicate the final status of the protocol operation
+   request.
+
+        LDAPResult ::= SEQUENCE {
+             resultCode         ENUMERATED {
+                  success                      (0),
+                  operationsError              (1),
+                  protocolError                (2),
+                  timeLimitExceeded            (3),
+                  sizeLimitExceeded            (4),
+                  compareFalse                 (5),
+                  compareTrue                  (6),
+                  authMethodNotSupported       (7),
+                  strongerAuthRequired         (8),
+                       -- 9 reserved --
+                  referral                     (10),
+                  adminLimitExceeded           (11),
+                  unavailableCriticalExtension (12),
+                  confidentialityRequired      (13),
+                  saslBindInProgress           (14),
+                  noSuchAttribute              (16),
+                  undefinedAttributeType       (17),
+                  inappropriateMatching        (18),
+                  constraintViolation          (19),
+                  attributeOrValueExists       (20),
+                  invalidAttributeSyntax       (21),
+
+
+
+Sermersheim                 Standards Track                    [Page 10]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+                       -- 22-31 unused --
+                  noSuchObject                 (32),
+                  aliasProblem                 (33),
+                  invalidDNSyntax              (34),
+                       -- 35 reserved for undefined isLeaf --
+                  aliasDereferencingProblem    (36),
+                       -- 37-47 unused --
+                  inappropriateAuthentication  (48),
+                  invalidCredentials           (49),
+                  insufficientAccessRights     (50),
+                  busy                         (51),
+                  unavailable                  (52),
+                  unwillingToPerform           (53),
+                  loopDetect                   (54),
+                       -- 55-63 unused --
+                  namingViolation              (64),
+                  objectClassViolation         (65),
+                  notAllowedOnNonLeaf          (66),
+                  notAllowedOnRDN              (67),
+                  entryAlreadyExists           (68),
+                  objectClassModsProhibited    (69),
+                       -- 70 reserved for CLDAP --
+                  affectsMultipleDSAs          (71),
+                       -- 72-79 unused --
+                  other                        (80),
+                  ...  },
+             matchedDN          LDAPDN,
+             diagnosticMessage  LDAPString,
+             referral           [3] Referral OPTIONAL }
+
+   The resultCode enumeration is extensible as defined in Section 3.8 of
+   [RFC4520].  The meanings of the listed result codes are given in
+   Appendix A.  If a server detects multiple errors for an operation,
+   only one result code is returned.  The server should return the
+   result code that best indicates the nature of the error encountered.
+   Servers may return substituted result codes to prevent unauthorized
+   disclosures.
+
+   The diagnosticMessage field of this construct may, at the server's
+   option, be used to return a string containing a textual, human-
+   readable diagnostic message (terminal control and page formatting
+   characters should be avoided).  As this diagnostic message is not
+   standardized, implementations MUST NOT rely on the values returned.
+   Diagnostic messages typically supplement the resultCode with
+   additional information.  If the server chooses not to return a
+   textual diagnostic, the diagnosticMessage field MUST be empty.
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 11]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   For certain result codes (typically, but not restricted to
+   noSuchObject, aliasProblem, invalidDNSyntax, and
+   aliasDereferencingProblem), the matchedDN field is set (subject to
+   access controls) to the name of the last entry (object or alias) used
+   in finding the target (or base) object.  This will be a truncated
+   form of the provided name or, if an alias was dereferenced while
+   attempting to locate the entry, of the resulting name.  Otherwise,
+   the matchedDN field is empty.
+
+4.1.10.  Referral
+
+   The referral result code indicates that the contacted server cannot
+   or will not perform the operation and that one or more other servers
+   may be able to.  Reasons for this include:
+
+   - The target entry of the request is not held locally, but the server
+     has knowledge of its possible existence elsewhere.
+
+   - The operation is restricted on this server -- perhaps due to a
+     read-only copy of an entry to be modified.
+
+   The referral field is present in an LDAPResult if the resultCode is
+   set to referral, and it is absent with all other result codes.  It
+   contains one or more references to one or more servers or services
+   that may be accessed via LDAP or other protocols.  Referrals can be
+   returned in response to any operation request (except Unbind and
+   Abandon, which do not have responses).  At least one URI MUST be
+   present in the Referral.
+
+   During a Search operation, after the baseObject is located, and
+   entries are being evaluated, the referral is not returned.  Instead,
+   continuation references, described in Section 4.5.3, are returned
+   when other servers would need to be contacted to complete the
+   operation.
+
+        Referral ::= SEQUENCE SIZE (1..MAX) OF uri URI
+
+        URI ::= LDAPString     -- limited to characters permitted in
+                               -- URIs
+
+   If the client wishes to progress the operation, it contacts one of
+   the supported services found in the referral.  If multiple URIs are
+   present, the client assumes that any supported URI may be used to
+   progress the operation.
+
+   Clients that follow referrals MUST ensure that they do not loop
+   between servers.  They MUST NOT repeatedly contact the same server
+   for the same request with the same parameters.  Some clients use a
+
+
+
+Sermersheim                 Standards Track                    [Page 12]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   counter that is incremented each time referral handling occurs for an
+   operation, and these kinds of clients MUST be able to handle at least
+   ten nested referrals while progressing the operation.
+
+   A URI for a server implementing LDAP and accessible via TCP/IP (v4 or
+   v6) [RFC793][RFC791] is written as an LDAP URL according to
+   [RFC4516].
+
+   Referral values that are LDAP URLs follow these rules:
+
+   - If an alias was dereferenced, the <dn> part of the LDAP URL MUST be
+     present, with the new target object name.
+
+   - It is RECOMMENDED that the <dn> part be present to avoid ambiguity.
+
+   - If the <dn> part is present, the client uses this name in its next
+     request to progress the operation, and if it is not present the
+     client uses the same name as in the original request.
+
+   - Some servers (e.g., participating in distributed indexing) may
+     provide a different filter in a URL of a referral for a Search
+     operation.
+
+   - If the <filter> part of the LDAP URL is present, the client uses
+     this filter in its next request to progress this Search, and if it
+     is not present the client uses the same filter as it used for that
+     Search.
+
+   - For Search, it is RECOMMENDED that the <scope> part be present to
+     avoid ambiguity.
+
+   - If the <scope> part is missing, the scope of the original Search is
+     used by the client to progress the operation.
+
+   - Other aspects of the new request may be the same as or different
+     from the request that generated the referral.
+
+   Other kinds of URIs may be returned.  The syntax and semantics of
+   such URIs is left to future specifications.  Clients may ignore URIs
+   that they do not support.
+
+   UTF-8 encoded characters appearing in the string representation of a
+   DN, search filter, or other fields of the referral value may not be
+   legal for URIs (e.g., spaces) and MUST be escaped using the % method
+   in [RFC3986].
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 13]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+4.1.11.  Controls
+
+   Controls provide a mechanism whereby the semantics and arguments of
+   existing LDAP operations may be extended.  One or more controls may
+   be attached to a single LDAP message.  A control only affects the
+   semantics of the message it is attached to.
+
+   Controls sent by clients are termed 'request controls', and those
+   sent by servers are termed 'response controls'.
+
+        Controls ::= SEQUENCE OF control Control
+
+        Control ::= SEQUENCE {
+             controlType             LDAPOID,
+             criticality             BOOLEAN DEFAULT FALSE,
+             controlValue            OCTET STRING OPTIONAL }
+
+   The controlType field is the dotted-decimal representation of an
+   OBJECT IDENTIFIER that uniquely identifies the control.  This
+   provides unambiguous naming of controls.  Often, response control(s)
+   solicited by a request control share controlType values with the
+   request control.
+
+   The criticality field only has meaning in controls attached to
+   request messages (except UnbindRequest).  For controls attached to
+   response messages and the UnbindRequest, the criticality field SHOULD
+   be FALSE, and MUST be ignored by the receiving protocol peer.  A
+   value of TRUE indicates that it is unacceptable to perform the
+   operation without applying the semantics of the control.
+   Specifically, the criticality field is applied as follows:
+
+   - If the server does not recognize the control type, determines that
+     it is not appropriate for the operation, or is otherwise unwilling
+     to perform the operation with the control, and if the criticality
+     field is TRUE, the server MUST NOT perform the operation, and for
+     operations that have a response message, it MUST return with the
+     resultCode set to unavailableCriticalExtension.
+
+   - If the server does not recognize the control type, determines that
+     it is not appropriate for the operation, or is otherwise unwilling
+     to perform the operation with the control, and if the criticality
+     field is FALSE, the server MUST ignore the control.
+
+   - Regardless of criticality, if a control is applied to an
+     operation, it is applied consistently and impartially to the
+     entire operation.
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 14]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   The controlValue may contain information associated with the
+   controlType.  Its format is defined by the specification of the
+   control.  Implementations MUST be prepared to handle arbitrary
+   contents of the controlValue octet string, including zero bytes.  It
+   is absent only if there is no value information that is associated
+   with a control of its type.  When a controlValue is defined in terms
+   of ASN.1, and BER-encoded according to Section 5.1, it also follows
+   the extensibility rules in Section 4.
+
+   Servers list the controlType of request controls they recognize in
+   the 'supportedControl' attribute in the root DSE (Section 5.1 of
+   [RFC4512]).
+
+   Controls SHOULD NOT be combined unless the semantics of the
+   combination has been specified.  The semantics of control
+   combinations, if specified, are generally found in the control
+   specification most recently published.  When a combination of
+   controls is encountered whose semantics are invalid, not specified
+   (or not known), the message is considered not well-formed; thus, the
+   operation fails with protocolError.  Controls with a criticality of
+   FALSE may be ignored in order to arrive at a valid combination.
+   Additionally, unless order-dependent semantics are given in a
+   specification, the order of a combination of controls in the SEQUENCE
+   is ignored.  Where the order is to be ignored but cannot be ignored
+   by the server, the message is considered not well-formed, and the
+   operation fails with protocolError.  Again, controls with a
+   criticality of FALSE may be ignored in order to arrive at a valid
+   combination.
+
+   This document does not specify any controls.  Controls may be
+   specified in other documents.  Documents detailing control extensions
+   are to provide for each control:
+
+   - the OBJECT IDENTIFIER assigned to the control,
+
+   - direction as to what value the sender should provide for the
+     criticality field (note: the semantics of the criticality field are
+     defined above should not be altered by the control's
+     specification),
+
+   - whether the controlValue field is present, and if so, the format of
+     its contents,
+
+   - the semantics of the control, and
+
+   - optionally, semantics regarding the combination of the control with
+     other controls.
+
+
+
+
+Sermersheim                 Standards Track                    [Page 15]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+4.2.  Bind Operation
+
+   The function of the Bind operation is to allow authentication
+   information to be exchanged between the client and server.  The Bind
+   operation should be thought of as the "authenticate" operation.
+   Operational, authentication, and security-related semantics of this
+   operation are given in [RFC4513].
+
+   The Bind request is defined as follows:
+
+        BindRequest ::= [APPLICATION 0] SEQUENCE {
+             version                 INTEGER (1 ..  127),
+             name                    LDAPDN,
+             authentication          AuthenticationChoice }
+
+        AuthenticationChoice ::= CHOICE {
+             simple                  [0] OCTET STRING,
+                                     -- 1 and 2 reserved
+             sasl                    [3] SaslCredentials,
+             ...  }
+
+        SaslCredentials ::= SEQUENCE {
+             mechanism               LDAPString,
+             credentials             OCTET STRING OPTIONAL }
+
+   Fields of the BindRequest are:
+
+   - version: A version number indicating the version of the protocol to
+     be used at the LDAP message layer.  This document describes version
+     3 of the protocol.  There is no version negotiation.  The client
+     sets this field to the version it desires.  If the server does not
+     support the specified version, it MUST respond with a BindResponse
+     where the resultCode is set to protocolError.
+
+   - name: If not empty, the name of the Directory object that the
+     client wishes to bind as.  This field may take on a null value (a
+     zero-length string) for the purposes of anonymous binds ([RFC4513],
+     Section 5.1) or when using SASL [RFC4422] authentication
+     ([RFC4513], Section 5.2).  Where the server attempts to locate the
+     named object, it SHALL NOT perform alias dereferencing.
+
+   - authentication: Information used in authentication.  This type is
+     extensible as defined in Section 3.7 of [RFC4520].  Servers that do
+     not support a choice supplied by a client return a BindResponse
+     with the resultCode set to authMethodNotSupported.
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 16]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+     Textual passwords (consisting of a character sequence with a known
+     character set and encoding) transferred to the server using the
+     simple AuthenticationChoice SHALL be transferred as UTF-8 [RFC3629]
+     encoded [Unicode].  Prior to transfer, clients SHOULD prepare text
+     passwords as "query" strings by applying the SASLprep [RFC4013]
+     profile of the stringprep [RFC3454] algorithm.  Passwords
+     consisting of other data (such as random octets) MUST NOT be
+     altered.  The determination of whether a password is textual is a
+     local client matter.
+
+4.2.1.  Processing of the Bind Request
+
+   Before processing a BindRequest, all uncompleted operations MUST
+   either complete or be abandoned.  The server may either wait for the
+   uncompleted operations to complete, or abandon them.  The server then
+   proceeds to authenticate the client in either a single-step or
+   multi-step Bind process.  Each step requires the server to return a
+   BindResponse to indicate the status of authentication.
+
+   After sending a BindRequest, clients MUST NOT send further LDAP PDUs
+   until receiving the BindResponse.  Similarly, servers SHOULD NOT
+   process or respond to requests received while processing a
+   BindRequest.
+
+   If the client did not bind before sending a request and receives an
+   operationsError to that request, it may then send a BindRequest.  If
+   this also fails or the client chooses not to bind on the existing
+   LDAP session, it may terminate the LDAP session, re-establish it, and
+   begin again by first sending a BindRequest.  This will aid in
+   interoperating with servers implementing other versions of LDAP.
+
+   Clients may send multiple Bind requests to change the authentication
+   and/or security associations or to complete a multi-stage Bind
+   process.  Authentication from earlier binds is subsequently ignored.
+
+   For some SASL authentication mechanisms, it may be necessary for the
+   client to invoke the BindRequest multiple times ([RFC4513], Section
+   5.2).  Clients MUST NOT invoke operations between two Bind requests
+   made as part of a multi-stage Bind.
+
+   A client may abort a SASL bind negotiation by sending a BindRequest
+   with a different value in the mechanism field of SaslCredentials, or
+   an AuthenticationChoice other than sasl.
+
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 17]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   If the client sends a BindRequest with the sasl mechanism field as an
+   empty string, the server MUST return a BindResponse with the
+   resultCode set to authMethodNotSupported.  This will allow the client
+   to abort a negotiation if it wishes to try again with the same SASL
+   mechanism.
+
+4.2.2.  Bind Response
+
+   The Bind response is defined as follows.
+
+        BindResponse ::= [APPLICATION 1] SEQUENCE {
+             COMPONENTS OF LDAPResult,
+             serverSaslCreds    [7] OCTET STRING OPTIONAL }
+
+   BindResponse consists simply of an indication from the server of the
+   status of the client's request for authentication.
+
+   A successful Bind operation is indicated by a BindResponse with a
+   resultCode set to success.  Otherwise, an appropriate result code is
+   set in the BindResponse.  For BindResponse, the protocolError result
+   code may be used to indicate that the version number supplied by the
+   client is unsupported.
+
+   If the client receives a BindResponse where the resultCode is set to
+   protocolError, it is to assume that the server does not support this
+   version of LDAP.  While the client may be able proceed with another
+   version of this protocol (which may or may not require closing and
+   re-establishing the transport connection), how to proceed with
+   another version of this protocol is beyond the scope of this
+   document.  Clients that are unable or unwilling to proceed SHOULD
+   terminate the LDAP session.
+
+   The serverSaslCreds field is used as part of a SASL-defined bind
+   mechanism to allow the client to authenticate the server to which it
+   is communicating, or to perform "challenge-response" authentication.
+   If the client bound with the simple choice, or the SASL mechanism
+   does not require the server to return information to the client, then
+   this field SHALL NOT be included in the BindResponse.
+
+4.3.  Unbind Operation
+
+   The function of the Unbind operation is to terminate an LDAP session.
+   The Unbind operation is not the antithesis of the Bind operation as
+   the name implies.  The naming of these operations are historical.
+   The Unbind operation should be thought of as the "quit" operation.
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 18]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   The Unbind operation is defined as follows:
+
+        UnbindRequest ::= [APPLICATION 2] NULL
+
+   The client, upon transmission of the UnbindRequest, and the server,
+   upon receipt of the UnbindRequest, are to gracefully terminate the
+   LDAP session as described in Section 5.3.  Uncompleted operations are
+   handled as specified in Section 3.1.
+
+4.4.  Unsolicited Notification
+
+   An unsolicited notification is an LDAPMessage sent from the server to
+   the client that is not in response to any LDAPMessage received by the
+   server.  It is used to signal an extraordinary condition in the
+   server or in the LDAP session between the client and the server.  The
+   notification is of an advisory nature, and the server will not expect
+   any response to be returned from the client.
+
+   The unsolicited notification is structured as an LDAPMessage in which
+   the messageID is zero and protocolOp is set to the extendedResp
+   choice using the ExtendedResponse type (See Section 4.12).  The
+   responseName field of the ExtendedResponse always contains an LDAPOID
+   that is unique for this notification.
+
+   One unsolicited notification (Notice of Disconnection) is defined in
+   this document.  The specification of an unsolicited notification
+   consists of:
+
+   - the OBJECT IDENTIFIER assigned to the notification (to be specified
+     in the responseName,
+
+   - the format of the contents of the responseValue (if any),
+
+   - the circumstances which will cause the notification to be sent, and
+
+   - the semantics of the message.
+
+4.4.1.  Notice of Disconnection
+
+   This notification may be used by the server to advise the client that
+   the server is about to terminate the LDAP session on its own
+   initiative.  This notification is intended to assist clients in
+   distinguishing between an exceptional server condition and a
+   transient network failure.  Note that this notification is not a
+   response to an Unbind requested by the client.  Uncompleted
+   operations are handled as specified in Section 3.1.
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 19]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   The responseName is 1.3.6.1.4.1.1466.20036, the responseValue field
+   is absent, and the resultCode is used to indicate the reason for the
+   disconnection.  When the strongerAuthRequired resultCode is returned
+   with this message, it indicates that the server has detected that an
+   established security association between the client and server has
+   unexpectedly failed or been compromised.
+
+   Upon transmission of the Notice of Disconnection, the server
+   gracefully terminates the LDAP session as described in Section 5.3.
+
+4.5.  Search Operation
+
+   The Search operation is used to request a server to return, subject
+   to access controls and other restrictions, a set of entries matching
+   a complex search criterion.  This can be used to read attributes from
+   a single entry, from entries immediately subordinate to a particular
+   entry, or from a whole subtree of entries.
+
+4.5.1.  Search Request
+
+   The Search request is defined as follows:
+
+        SearchRequest ::= [APPLICATION 3] SEQUENCE {
+             baseObject      LDAPDN,
+             scope           ENUMERATED {
+                  baseObject              (0),
+                  singleLevel             (1),
+                  wholeSubtree            (2),
+                  ...  },
+             derefAliases    ENUMERATED {
+                  neverDerefAliases       (0),
+                  derefInSearching        (1),
+                  derefFindingBaseObj     (2),
+                  derefAlways             (3) },
+             sizeLimit       INTEGER (0 ..  maxInt),
+             timeLimit       INTEGER (0 ..  maxInt),
+             typesOnly       BOOLEAN,
+             filter          Filter,
+             attributes      AttributeSelection }
+
+        AttributeSelection ::= SEQUENCE OF selector LDAPString
+                        -- The LDAPString is constrained to
+                        -- <attributeSelector> in Section 4.5.1.8
+
+        Filter ::= CHOICE {
+             and             [0] SET SIZE (1..MAX) OF filter Filter,
+             or              [1] SET SIZE (1..MAX) OF filter Filter,
+             not             [2] Filter,
+
+
+
+Sermersheim                 Standards Track                    [Page 20]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+             equalityMatch   [3] AttributeValueAssertion,
+             substrings      [4] SubstringFilter,
+             greaterOrEqual  [5] AttributeValueAssertion,
+             lessOrEqual     [6] AttributeValueAssertion,
+             present         [7] AttributeDescription,
+             approxMatch     [8] AttributeValueAssertion,
+             extensibleMatch [9] MatchingRuleAssertion,
+             ...  }
+
+        SubstringFilter ::= SEQUENCE {
+             type           AttributeDescription,
+             substrings     SEQUENCE SIZE (1..MAX) OF substring CHOICE {
+                  initial [0] AssertionValue,  -- can occur at most once
+                  any     [1] AssertionValue,
+                  final   [2] AssertionValue } -- can occur at most once
+             }
+
+        MatchingRuleAssertion ::= SEQUENCE {
+             matchingRule    [1] MatchingRuleId OPTIONAL,
+             type            [2] AttributeDescription OPTIONAL,
+             matchValue      [3] AssertionValue,
+             dnAttributes    [4] BOOLEAN DEFAULT FALSE }
+
+   Note that an X.500 "list"-like operation can be emulated by the
+   client requesting a singleLevel Search operation with a filter
+   checking for the presence of the 'objectClass' attribute, and that an
+   X.500 "read"-like operation can be emulated by a baseObject Search
+   operation with the same filter.  A server that provides a gateway to
+   X.500 is not required to use the Read or List operations, although it
+   may choose to do so, and if it does, it must provide the same
+   semantics as the X.500 Search operation.
+
+4.5.1.1.  SearchRequest.baseObject
+
+   The name of the base object entry (or possibly the root) relative to
+   which the Search is to be performed.
+
+4.5.1.2.  SearchRequest.scope
+
+   Specifies the scope of the Search to be performed.  The semantics (as
+   described in [X.511]) of the defined values of this field are:
+
+      baseObject: The scope is constrained to the entry named by
+      baseObject.
+
+      singleLevel: The scope is constrained to the immediate
+      subordinates of the entry named by baseObject.
+
+
+
+
+Sermersheim                 Standards Track                    [Page 21]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+      wholeSubtree: The scope is constrained to the entry named by
+      baseObject and to all its subordinates.
+
+4.5.1.3.  SearchRequest.derefAliases
+
+   An indicator as to whether or not alias entries (as defined in
+   [RFC4512]) are to be dereferenced during stages of the Search
+   operation.
+
+   The act of dereferencing an alias includes recursively dereferencing
+   aliases that refer to aliases.
+
+   Servers MUST detect looping while dereferencing aliases in order to
+   prevent denial-of-service attacks of this nature.
+
+   The semantics of the defined values of this field are:
+
+      neverDerefAliases: Do not dereference aliases in searching or in
+      locating the base object of the Search.
+
+      derefInSearching: While searching subordinates of the base object,
+      dereference any alias within the search scope.  Dereferenced
+      objects become the vertices of further search scopes where the
+      Search operation is also applied.  If the search scope is
+      wholeSubtree, the Search continues in the subtree(s) of any
+      dereferenced object.  If the search scope is singleLevel, the
+      search is applied to any dereferenced objects and is not applied
+      to their subordinates.  Servers SHOULD eliminate duplicate entries
+      that arise due to alias dereferencing while searching.
+
+      derefFindingBaseObj: Dereference aliases in locating the base
+      object of the Search, but not when searching subordinates of the
+      base object.
+
+      derefAlways: Dereference aliases both in searching and in locating
+      the base object of the Search.
+
+4.5.1.4.  SearchRequest.sizeLimit
+
+   A size limit that restricts the maximum number of entries to be
+   returned as a result of the Search.  A value of zero in this field
+   indicates that no client-requested size limit restrictions are in
+   effect for the Search.  Servers may also enforce a maximum number of
+   entries to return.
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 22]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+4.5.1.5.  SearchRequest.timeLimit
+
+   A time limit that restricts the maximum time (in seconds) allowed for
+   a Search.  A value of zero in this field indicates that no client-
+   requested time limit restrictions are in effect for the Search.
+   Servers may also enforce a maximum time limit for the Search.
+
+4.5.1.6.  SearchRequest.typesOnly
+
+   An indicator as to whether Search results are to contain both
+   attribute descriptions and values, or just attribute descriptions.
+   Setting this field to TRUE causes only attribute descriptions (and
+   not values) to be returned.  Setting this field to FALSE causes both
+   attribute descriptions and values to be returned.
+
+4.5.1.7.  SearchRequest.filter
+
+   A filter that defines the conditions that must be fulfilled in order
+   for the Search to match a given entry.
+
+   The 'and', 'or', and 'not' choices can be used to form combinations
+   of filters.  At least one filter element MUST be present in an 'and'
+   or 'or' choice.  The others match against individual attribute values
+   of entries in the scope of the Search.  (Implementor's note: the
+   'not' filter is an example of a tagged choice in an implicitly-tagged
+   module.  In BER this is treated as if the tag were explicit.)
+
+   A server MUST evaluate filters according to the three-valued logic of
+   [X.511] (1993), Clause 7.8.1.  In summary, a filter is evaluated to
+   "TRUE", "FALSE", or "Undefined".  If the filter evaluates to TRUE for
+   a particular entry, then the attributes of that entry are returned as
+   part of the Search result (subject to any applicable access control
+   restrictions).  If the filter evaluates to FALSE or Undefined, then
+   the entry is ignored for the Search.
+
+   A filter of the "and" choice is TRUE if all the filters in the SET OF
+   evaluate to TRUE, FALSE if at least one filter is FALSE, and
+   Undefined otherwise.  A filter of the "or" choice is FALSE if all the
+   filters in the SET OF evaluate to FALSE, TRUE if at least one filter
+   is TRUE, and Undefined otherwise.  A filter of the 'not' choice is
+   TRUE if the filter being negated is FALSE, FALSE if it is TRUE, and
+   Undefined if it is Undefined.
+
+   A filter item evaluates to Undefined when the server would not be
+   able to determine whether the assertion value matches an entry.
+   Examples include:
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 23]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   - An attribute description in an equalityMatch, substrings,
+     greaterOrEqual, lessOrEqual, approxMatch, or extensibleMatch filter
+     is not recognized by the server.
+
+   - The attribute type does not define the appropriate matching rule.
+
+   - A MatchingRuleId in the extensibleMatch is not recognized by the
+     server or is not valid for the attribute type.
+
+   - The type of filtering requested is not implemented.
+
+   - The assertion value is invalid.
+
+   For example, if a server did not recognize the attribute type
+   shoeSize, the filters (shoeSize=*), (shoeSize=12), (shoeSize>=12),
+   and (shoeSize<=12) would each evaluate to Undefined.
+
+   Servers MUST NOT return errors if attribute descriptions or matching
+   rule ids are not recognized, assertion values are invalid, or the
+   assertion syntax is not supported.  More details of filter processing
+   are given in Clause 7.8 of [X.511].
+
+4.5.1.7.1.  SearchRequest.filter.equalityMatch
+
+   The matching rule for an equalityMatch filter is defined by the
+   EQUALITY matching rule for the attribute type or subtype.  The filter
+   is TRUE when the EQUALITY rule returns TRUE as applied to the
+   attribute or subtype and the asserted value.
+
+4.5.1.7.2.  SearchRequest.filter.substrings
+
+   There SHALL be at most one 'initial' and at most one 'final' in the
+   'substrings' of a SubstringFilter.  If 'initial' is present, it SHALL
+   be the first element of 'substrings'.  If 'final' is present, it
+   SHALL be the last element of 'substrings'.
+
+   The matching rule for an AssertionValue in a substrings filter item
+   is defined by the SUBSTR matching rule for the attribute type or
+   subtype.  The filter is TRUE when the SUBSTR rule returns TRUE as
+   applied to the attribute or subtype and the asserted value.
+
+   Note that the AssertionValue in a substrings filter item conforms to
+   the assertion syntax of the EQUALITY matching rule for the attribute
+   type rather than to the assertion syntax of the SUBSTR matching rule
+   for the attribute type.  Conceptually, the entire SubstringFilter is
+   converted into an assertion value of the substrings matching rule
+   prior to applying the rule.
+
+
+
+
+Sermersheim                 Standards Track                    [Page 24]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+4.5.1.7.3.  SearchRequest.filter.greaterOrEqual
+
+   The matching rule for a greaterOrEqual filter is defined by the
+   ORDERING matching rule for the attribute type or subtype.  The filter
+   is TRUE when the ORDERING rule returns FALSE as applied to the
+   attribute or subtype and the asserted value.
+
+4.5.1.7.4.  SearchRequest.filter.lessOrEqual
+
+   The matching rules for a lessOrEqual filter are defined by the
+   ORDERING and EQUALITY matching rules for the attribute type or
+   subtype.  The filter is TRUE when either the ORDERING or EQUALITY
+   rule returns TRUE as applied to the attribute or subtype and the
+   asserted value.
+
+4.5.1.7.5.  SearchRequest.filter.present
+
+   A present filter is TRUE when there is an attribute or subtype of the
+   specified attribute description present in an entry, FALSE when no
+   attribute or subtype of the specified attribute description is
+   present in an entry, and Undefined otherwise.
+
+4.5.1.7.6.  SearchRequest.filter.approxMatch
+
+   An approxMatch filter is TRUE when there is a value of the attribute
+   type or subtype for which some locally-defined approximate matching
+   algorithm (e.g., spelling variations, phonetic match, etc.) returns
+   TRUE.  If a value matches for equality, it also satisfies an
+   approximate match.  If approximate matching is not supported for the
+   attribute, this filter item should be treated as an equalityMatch.
+
+4.5.1.7.7.  SearchRequest.filter.extensibleMatch
+
+   The fields of the extensibleMatch filter item are evaluated as
+   follows:
+
+   - If the matchingRule field is absent, the type field MUST be
+     present, and an equality match is performed for that type.
+
+   - If the type field is absent and the matchingRule is present, the
+     matchValue is compared against all attributes in an entry that
+     support that matchingRule.
+
+   - If the type field is present and the matchingRule is present, the
+     matchValue is compared against the specified attribute type and its
+     subtypes.
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 25]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   - If the dnAttributes field is set to TRUE, the match is additionally
+     applied against all the AttributeValueAssertions in an entry's
+     distinguished name, and it evaluates to TRUE if there is at least
+     one attribute or subtype in the distinguished name for which the
+     filter item evaluates to TRUE.  The dnAttributes field is present
+     to alleviate the need for multiple versions of generic matching
+     rules (such as word matching), where one applies to entries and
+     another applies to entries and DN attributes as well.
+
+   The matchingRule used for evaluation determines the syntax for the
+   assertion value.  Once the matchingRule and attribute(s) have been
+   determined, the filter item evaluates to TRUE if it matches at least
+   one attribute type or subtype in the entry, FALSE if it does not
+   match any attribute type or subtype in the entry, and Undefined if
+   the matchingRule is not recognized, the matchingRule is unsuitable
+   for use with the specified type, or the assertionValue is invalid.
+
+4.5.1.8.  SearchRequest.attributes
+
+   A selection list of the attributes to be returned from each entry
+   that matches the search filter.  Attributes that are subtypes of
+   listed attributes are implicitly included.  LDAPString values of this
+   field are constrained to the following Augmented Backus-Naur Form
+   (ABNF) [RFC4234]:
+
+      attributeSelector = attributedescription / selectorspecial
+
+      selectorspecial = noattrs / alluserattrs
+
+      noattrs = %x31.2E.31 ; "1.1"
+
+      alluserattrs = %x2A ; asterisk ("*")
+
+      The <attributedescription> production is defined in Section 2.5 of
+      [RFC4512].
+
+      There are three special cases that may appear in the attributes
+      selection list:
+
+      1. An empty list with no attributes requests the return of all
+         user attributes.
+
+      2. A list containing "*" (with zero or more attribute
+         descriptions) requests the return of all user attributes in
+         addition to other listed (operational) attributes.
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 26]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+      3. A list containing only the OID "1.1" indicates that no
+         attributes are to be returned.  If "1.1" is provided with other
+         attributeSelector values, the "1.1" attributeSelector is
+         ignored.  This OID was chosen because it does not (and can not)
+         correspond to any attribute in use.
+
+   Client implementors should note that even if all user attributes are
+   requested, some attributes and/or attribute values of the entry may
+   not be included in Search results due to access controls or other
+   restrictions.  Furthermore, servers will not return operational
+   attributes, such as objectClasses or attributeTypes, unless they are
+   listed by name.  Operational attributes are described in [RFC4512].
+
+   Attributes are returned at most once in an entry.  If an attribute
+   description is named more than once in the list, the subsequent names
+   are ignored.  If an attribute description in the list is not
+   recognized, it is ignored by the server.
+
+4.5.2.  Search Result
+
+   The results of the Search operation are returned as zero or more
+   SearchResultEntry and/or SearchResultReference messages, followed by
+   a single SearchResultDone message.
+
+        SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
+             objectName      LDAPDN,
+             attributes      PartialAttributeList }
+
+        PartialAttributeList ::= SEQUENCE OF
+                             partialAttribute PartialAttribute
+
+        SearchResultReference ::= [APPLICATION 19] SEQUENCE
+                                  SIZE (1..MAX) OF uri URI
+
+        SearchResultDone ::= [APPLICATION 5] LDAPResult
+
+   Each SearchResultEntry represents an entry found during the Search.
+   Each SearchResultReference represents an area not yet explored during
+   the Search.  The SearchResultEntry and SearchResultReference messages
+   may come in any order.  Following all the SearchResultReference and
+   SearchResultEntry responses, the server returns a SearchResultDone
+   response, which contains an indication of success or details any
+   errors that have occurred.
+
+   Each entry returned in a SearchResultEntry will contain all
+   appropriate attributes as specified in the attributes field of the
+   Search Request, subject to access control and other administrative
+   policy.  Note that the PartialAttributeList may hold zero elements.
+
+
+
+Sermersheim                 Standards Track                    [Page 27]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   This may happen when none of the attributes of an entry were
+   requested or could be returned.  Note also that the partialAttribute
+   vals set may hold zero elements.  This may happen when typesOnly is
+   requested, access controls prevent the return of values, or other
+   reasons.
+
+   Some attributes may be constructed by the server and appear in a
+   SearchResultEntry attribute list, although they are not stored
+   attributes of an entry.  Clients SHOULD NOT assume that all
+   attributes can be modified, even if this is permitted by access
+   control.
+
+   If the server's schema defines short names [RFC4512] for an attribute
+   type, then the server SHOULD use one of those names in attribute
+   descriptions for that attribute type (in preference to using the
+   <numericoid> [RFC4512] format of the attribute type's object
+   identifier).  The server SHOULD NOT use the short name if that name
+   is known by the server to be ambiguous, or if it is otherwise likely
+   to cause interoperability problems.
+
+4.5.3.  Continuation References in the Search Result
+
+   If the server was able to locate the entry referred to by the
+   baseObject but was unable or unwilling to search one or more non-
+   local entries, the server may return one or more
+   SearchResultReference messages, each containing a reference to
+   another set of servers for continuing the operation.  A server MUST
+   NOT return any SearchResultReference messages if it has not located
+   the baseObject and thus has not searched any entries.  In this case,
+   it would return a SearchResultDone containing either a referral or
+   noSuchObject result code (depending on the server's knowledge of the
+   entry named in the baseObject).
+
+   If a server holds a copy or partial copy of the subordinate naming
+   context (Section 5 of [RFC4512]), it may use the search filter to
+   determine whether or not to return a SearchResultReference response.
+   Otherwise, SearchResultReference responses are always returned when
+   in scope.
+
+   The SearchResultReference is of the same data type as the Referral.
+
+   If the client wishes to progress the Search, it issues a new Search
+   operation for each SearchResultReference that is returned.  If
+   multiple URIs are present, the client assumes that any supported URI
+   may be used to progress the operation.
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 28]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   Clients that follow search continuation references MUST ensure that
+   they do not loop between servers.  They MUST NOT repeatedly contact
+   the same server for the same request with the same parameters.  Some
+   clients use a counter that is incremented each time search result
+   reference handling occurs for an operation, and these kinds of
+   clients MUST be able to handle at least ten nested referrals while
+   progressing the operation.
+
+   Note that the Abandon operation described in Section 4.11 applies
+   only to a particular operation sent at the LDAP message layer between
+   a client and server.  The client must individually abandon subsequent
+   Search operations it wishes to.
+
+   A URI for a server implementing LDAP and accessible via TCP/IP (v4 or
+   v6) [RFC793][RFC791] is written as an LDAP URL according to
+   [RFC4516].
+
+   SearchResultReference values that are LDAP URLs follow these rules:
+
+   - The <dn> part of the LDAP URL MUST be present, with the new target
+     object name.  The client uses this name when following the
+     reference.
+
+   - Some servers (e.g., participating in distributed indexing) may
+     provide a different filter in the LDAP URL.
+
+   - If the <filter> part of the LDAP URL is present, the client uses
+     this filter in its next request to progress this Search, and if it
+     is not present the client uses the same filter as it used for that
+     Search.
+
+   - If the originating search scope was singleLevel, the <scope> part
+     of the LDAP URL will be "base".
+
+   - It is RECOMMENDED that the <scope> part be present to avoid
+     ambiguity.  In the absence of a <scope> part, the scope of the
+     original Search request is assumed.
+
+   - Other aspects of the new Search request may be the same as or
+     different from the Search request that generated the
+     SearchResultReference.
+
+   - The name of an unexplored subtree in a SearchResultReference need
+     not be subordinate to the base object.
+
+   Other kinds of URIs may be returned.  The syntax and semantics of
+   such URIs is left to future specifications.  Clients may ignore URIs
+   that they do not support.
+
+
+
+Sermersheim                 Standards Track                    [Page 29]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   UTF-8-encoded characters appearing in the string representation of a
+   DN, search filter, or other fields of the referral value may not be
+   legal for URIs (e.g., spaces) and MUST be escaped using the % method
+   in [RFC3986].
+
+4.5.3.1.  Examples
+
+   For example, suppose the contacted server (hosta) holds the entry
+   <DC=Example,DC=NET> and the entry <CN=Manager,DC=Example,DC=NET>.  It
+   knows that both LDAP servers (hostb) and (hostc) hold
+   <OU=People,DC=Example,DC=NET> (one is the master and the other server
+   a shadow), and that LDAP-capable server (hostd) holds the subtree
+   <OU=Roles,DC=Example,DC=NET>.  If a wholeSubtree Search of
+   <DC=Example,DC=NET> is requested to the contacted server, it may
+   return the following:
+
+     SearchResultEntry for DC=Example,DC=NET
+     SearchResultEntry for CN=Manager,DC=Example,DC=NET
+     SearchResultReference {
+       ldap://hostb/OU=People,DC=Example,DC=NET??sub
+       ldap://hostc/OU=People,DC=Example,DC=NET??sub }
+     SearchResultReference {
+       ldap://hostd/OU=Roles,DC=Example,DC=NET??sub }
+     SearchResultDone (success)
+
+   Client implementors should note that when following a
+   SearchResultReference, additional SearchResultReference may be
+   generated.  Continuing the example, if the client contacted the
+   server (hostb) and issued the Search request for the subtree
+   <OU=People,DC=Example,DC=NET>, the server might respond as follows:
+
+     SearchResultEntry for OU=People,DC=Example,DC=NET
+     SearchResultReference {
+       ldap://hoste/OU=Managers,OU=People,DC=Example,DC=NET??sub }
+     SearchResultReference {
+       ldap://hostf/OU=Consultants,OU=People,DC=Example,DC=NET??sub }
+     SearchResultDone (success)
+
+   Similarly, if a singleLevel Search of <DC=Example,DC=NET> is
+   requested to the contacted server, it may return the following:
+
+     SearchResultEntry for CN=Manager,DC=Example,DC=NET
+     SearchResultReference {
+       ldap://hostb/OU=People,DC=Example,DC=NET??base
+       ldap://hostc/OU=People,DC=Example,DC=NET??base }
+     SearchResultReference {
+       ldap://hostd/OU=Roles,DC=Example,DC=NET??base }
+     SearchResultDone (success)
+
+
+
+Sermersheim                 Standards Track                    [Page 30]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   If the contacted server does not hold the base object for the Search,
+   but has knowledge of its possible location, then it may return a
+   referral to the client.  In this case, if the client requests a
+   subtree Search of <DC=Example,DC=ORG> to hosta, the server returns a
+   SearchResultDone containing a referral.
+
+     SearchResultDone (referral) {
+       ldap://hostg/DC=Example,DC=ORG??sub }
+
+4.6.  Modify Operation
+
+   The Modify operation allows a client to request that a modification
+   of an entry be performed on its behalf by a server.  The Modify
+   Request is defined as follows:
+
+        ModifyRequest ::= [APPLICATION 6] SEQUENCE {
+             object          LDAPDN,
+             changes         SEQUENCE OF change SEQUENCE {
+                  operation       ENUMERATED {
+                       add     (0),
+                       delete  (1),
+                       replace (2),
+                       ...  },
+                  modification    PartialAttribute } }
+
+   Fields of the Modify Request are:
+
+   - object: The value of this field contains the name of the entry to
+     be modified.  The server SHALL NOT perform any alias dereferencing
+     in determining the object to be modified.
+
+   - changes: A list of modifications to be performed on the entry.  The
+     entire list of modifications MUST be performed in the order they
+     are listed as a single atomic operation.  While individual
+     modifications may violate certain aspects of the directory schema
+     (such as the object class definition and Directory Information Tree
+     (DIT) content rule), the resulting entry after the entire list of
+     modifications is performed MUST conform to the requirements of the
+     directory model and controlling schema [RFC4512].
+
+     -  operation: Used to specify the type of modification being
+        performed.  Each operation type acts on the following
+        modification.  The values of this field have the following
+        semantics, respectively:
+
+           add: add values listed to the modification attribute,
+           creating the attribute if necessary.
+
+
+
+
+Sermersheim                 Standards Track                    [Page 31]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+           delete: delete values listed from the modification attribute.
+           If no values are listed, or if all current values of the
+           attribute are listed, the entire attribute is removed.
+
+           replace: replace all existing values of the modification
+           attribute with the new values listed, creating the attribute
+           if it did not already exist.  A replace with no value will
+           delete the entire attribute if it exists, and it is ignored
+           if the attribute does not exist.
+
+     -  modification: A PartialAttribute (which may have an empty SET
+        of vals) used to hold the attribute type or attribute type and
+        values being modified.
+
+   Upon receipt of a Modify Request, the server attempts to perform the
+   necessary modifications to the DIT and returns the result in a Modify
+   Response, defined as follows:
+
+        ModifyResponse ::= [APPLICATION 7] LDAPResult
+
+   The server will return to the client a single Modify Response
+   indicating either the successful completion of the DIT modification,
+   or the reason that the modification failed.  Due to the requirement
+   for atomicity in applying the list of modifications in the Modify
+   Request, the client may expect that no modifications of the DIT have
+   been performed if the Modify Response received indicates any sort of
+   error, and that all requested modifications have been performed if
+   the Modify Response indicates successful completion of the Modify
+   operation.  Whether or not the modification was applied cannot be
+   determined by the client if the Modify Response was not received
+   (e.g., the LDAP session was terminated or the Modify operation was
+   abandoned).
+
+   Servers MUST ensure that entries conform to user and system schema
+   rules or other data model constraints.  The Modify operation cannot
+   be used to remove from an entry any of its distinguished values,
+   i.e., those values which form the entry's relative distinguished
+   name.  An attempt to do so will result in the server returning the
+   notAllowedOnRDN result code.  The Modify DN operation described in
+   Section 4.9 is used to rename an entry.
+
+   For attribute types that specify no equality matching, the rules in
+   Section 2.5.1 of [RFC4512] are followed.
+
+   Note that due to the simplifications made in LDAP, there is not a
+   direct mapping of the changes in an LDAP ModifyRequest onto the
+   changes of a DAP ModifyEntry operation, and different implementations
+
+
+
+
+Sermersheim                 Standards Track                    [Page 32]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   of LDAP-DAP gateways may use different means of representing the
+   change.  If successful, the final effect of the operations on the
+   entry MUST be identical.
+
+4.7.  Add Operation
+
+   The Add operation allows a client to request the addition of an entry
+   into the Directory.  The Add Request is defined as follows:
+
+        AddRequest ::= [APPLICATION 8] SEQUENCE {
+             entry           LDAPDN,
+             attributes      AttributeList }
+
+        AttributeList ::= SEQUENCE OF attribute Attribute
+
+   Fields of the Add Request are:
+
+   - entry: the name of the entry to be added.  The server SHALL NOT
+     dereference any aliases in locating the entry to be added.
+
+   - attributes: the list of attributes that, along with those from the
+     RDN, make up the content of the entry being added.  Clients MAY or
+     MAY NOT include the RDN attribute(s) in this list.  Clients MUST
+     NOT supply NO-USER-MODIFICATION attributes such as the
+     createTimestamp or creatorsName attributes, since the server
+     maintains these automatically.
+
+   Servers MUST ensure that entries conform to user and system schema
+   rules or other data model constraints.  For attribute types that
+   specify no equality matching, the rules in Section 2.5.1 of [RFC4512]
+   are followed (this applies to the naming attribute in addition to any
+   multi-valued attributes being added).
+
+   The entry named in the entry field of the AddRequest MUST NOT exist
+   for the AddRequest to succeed.  The immediate superior (parent) of an
+   object or alias entry to be added MUST exist.  For example, if the
+   client attempted to add <CN=JS,DC=Example,DC=NET>, the
+   <DC=Example,DC=NET> entry did not exist, and the <DC=NET> entry did
+   exist, then the server would return the noSuchObject result code with
+   the matchedDN field containing <DC=NET>.
+
+   Upon receipt of an Add Request, a server will attempt to add the
+   requested entry.  The result of the Add attempt will be returned to
+   the client in the Add Response, defined as follows:
+
+        AddResponse ::= [APPLICATION 9] LDAPResult
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 33]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   A response of success indicates that the new entry has been added to
+   the Directory.
+
+4.8.  Delete Operation
+
+   The Delete operation allows a client to request the removal of an
+   entry from the Directory.  The Delete Request is defined as follows:
+
+        DelRequest ::= [APPLICATION 10] LDAPDN
+
+   The Delete Request consists of the name of the entry to be deleted.
+   The server SHALL NOT dereference aliases while resolving the name of
+   the target entry to be removed.
+
+   Only leaf entries (those with no subordinate entries) can be deleted
+   with this operation.
+
+   Upon receipt of a Delete Request, a server will attempt to perform
+   the entry removal requested and return the result in the Delete
+   Response defined as follows:
+
+        DelResponse ::= [APPLICATION 11] LDAPResult
+
+4.9.  Modify DN Operation
+
+   The Modify DN operation allows a client to change the Relative
+   Distinguished Name (RDN) of an entry in the Directory and/or to move
+   a subtree of entries to a new location in the Directory.  The Modify
+   DN Request is defined as follows:
+
+        ModifyDNRequest ::= [APPLICATION 12] SEQUENCE {
+             entry           LDAPDN,
+             newrdn          RelativeLDAPDN,
+             deleteoldrdn    BOOLEAN,
+             newSuperior     [0] LDAPDN OPTIONAL }
+
+   Fields of the Modify DN Request are:
+
+   - entry: the name of the entry to be changed.  This entry may or may
+     not have subordinate entries.
+
+   - newrdn: the new RDN of the entry.  The value of the old RDN is
+     supplied when moving the entry to a new superior without changing
+     its RDN.  Attribute values of the new RDN not matching any
+     attribute value of the entry are added to the entry, and an
+     appropriate error is returned if this fails.
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 34]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   - deleteoldrdn: a boolean field that controls whether the old RDN
+     attribute values are to be retained as attributes of the entry or
+     deleted from the entry.
+
+   - newSuperior: if present, this is the name of an existing object
+     entry that becomes the immediate superior (parent) of the
+     existing entry.
+
+   The server SHALL NOT dereference any aliases in locating the objects
+   named in entry or newSuperior.
+
+   Upon receipt of a ModifyDNRequest, a server will attempt to perform
+   the name change and return the result in the Modify DN Response,
+   defined as follows:
+
+        ModifyDNResponse ::= [APPLICATION 13] LDAPResult
+
+   For example, if the entry named in the entry field was <cn=John
+   Smith,c=US>, the newrdn field was <cn=John Cougar Smith>, and the
+   newSuperior field was absent, then this operation would attempt to
+   rename the entry as <cn=John Cougar Smith,c=US>.  If there was
+   already an entry with that name, the operation would fail with the
+   entryAlreadyExists result code.
+
+   Servers MUST ensure that entries conform to user and system schema
+   rules or other data model constraints.  For attribute types that
+   specify no equality matching, the rules in Section 2.5.1 of [RFC4512]
+   are followed (this pertains to newrdn and deleteoldrdn).
+
+   The object named in newSuperior MUST exist.  For example, if the
+   client attempted to add <CN=JS,DC=Example,DC=NET>, the
+   <DC=Example,DC=NET> entry did not exist, and the <DC=NET> entry did
+   exist, then the server would return the noSuchObject result code with
+   the matchedDN field containing <DC=NET>.
+
+   If the deleteoldrdn field is TRUE, the attribute values forming the
+   old RDN (but not the new RDN) are deleted from the entry.  If the
+   deleteoldrdn field is FALSE, the attribute values forming the old RDN
+   will be retained as non-distinguished attribute values of the entry.
+
+   Note that X.500 restricts the ModifyDN operation to affect only
+   entries that are contained within a single server.  If the LDAP
+   server is mapped onto DAP, then this restriction will apply, and the
+   affectsMultipleDSAs result code will be returned if this error
+   occurred.  In general, clients MUST NOT expect to be able to perform
+   arbitrary movements of entries and subtrees between servers or
+   between naming contexts.
+
+
+
+
+Sermersheim                 Standards Track                    [Page 35]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+4.10.  Compare Operation
+
+   The Compare operation allows a client to compare an assertion value
+   with the values of a particular attribute in a particular entry in
+   the Directory.  The Compare Request is defined as follows:
+
+        CompareRequest ::= [APPLICATION 14] SEQUENCE {
+             entry           LDAPDN,
+             ava             AttributeValueAssertion }
+
+   Fields of the Compare Request are:
+
+   - entry: the name of the entry to be compared.  The server SHALL NOT
+     dereference any aliases in locating the entry to be compared.
+
+   - ava: holds the attribute value assertion to be compared.
+
+   Upon receipt of a Compare Request, a server will attempt to perform
+   the requested comparison and return the result in the Compare
+   Response, defined as follows:
+
+        CompareResponse ::= [APPLICATION 15] LDAPResult
+
+   The resultCode is set to compareTrue, compareFalse, or an appropriate
+   error.  compareTrue indicates that the assertion value in the ava
+   field matches a value of the attribute or subtype according to the
+   attribute's EQUALITY matching rule.  compareFalse indicates that the
+   assertion value in the ava field and the values of the attribute or
+   subtype did not match.  Other result codes indicate either that the
+   result of the comparison was Undefined (Section 4.5.1.7), or that
+   some error occurred.
+
+   Note that some directory systems may establish access controls that
+   permit the values of certain attributes (such as userPassword) to be
+   compared but not interrogated by other means.
+
+4.11.  Abandon Operation
+
+   The function of the Abandon operation is to allow a client to request
+   that the server abandon an uncompleted operation.  The Abandon
+   Request is defined as follows:
+
+        AbandonRequest ::= [APPLICATION 16] MessageID
+
+   The MessageID is that of an operation that was requested earlier at
+   this LDAP message layer.  The Abandon request itself has its own
+   MessageID.  This is distinct from the MessageID of the earlier
+   operation being abandoned.
+
+
+
+Sermersheim                 Standards Track                    [Page 36]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   There is no response defined in the Abandon operation.  Upon receipt
+   of an AbandonRequest, the server MAY abandon the operation identified
+   by the MessageID.  Since the client cannot tell the difference
+   between a successfully abandoned operation and an uncompleted
+   operation, the application of the Abandon operation is limited to
+   uses where the client does not require an indication of its outcome.
+
+   Abandon, Bind, Unbind, and StartTLS operations cannot be abandoned.
+
+   In the event that a server receives an Abandon Request on a Search
+   operation in the midst of transmitting responses to the Search, that
+   server MUST cease transmitting entry responses to the abandoned
+   request immediately, and it MUST NOT send the SearchResultDone.  Of
+   course, the server MUST ensure that only properly encoded LDAPMessage
+   PDUs are transmitted.
+
+   The ability to abandon other (particularly update) operations is at
+   the discretion of the server.
+
+   Clients should not send Abandon requests for the same operation
+   multiple times, and they MUST also be prepared to receive results
+   from operations they have abandoned (since these might have been in
+   transit when the Abandon was requested or might not be able to be
+   abandoned).
+
+   Servers MUST discard Abandon requests for messageIDs they do not
+   recognize, for operations that cannot be abandoned, and for
+   operations that have already been abandoned.
+
+4.12.  Extended Operation
+
+   The Extended operation allows additional operations to be defined for
+   services not already available in the protocol; for example, to Add
+   operations to install transport layer security (see Section 4.14).
+
+   The Extended operation allows clients to make requests and receive
+   responses with predefined syntaxes and semantics.  These may be
+   defined in RFCs or be private to particular implementations.
+
+   Each Extended operation consists of an Extended request and an
+   Extended response.
+
+        ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
+             requestName      [0] LDAPOID,
+             requestValue     [1] OCTET STRING OPTIONAL }
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 37]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   The requestName is a dotted-decimal representation of the unique
+   OBJECT IDENTIFIER corresponding to the request.  The requestValue is
+   information in a form defined by that request, encapsulated inside an
+   OCTET STRING.
+
+   The server will respond to this with an LDAPMessage containing an
+   ExtendedResponse.
+
+        ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
+             COMPONENTS OF LDAPResult,
+             responseName     [10] LDAPOID OPTIONAL,
+             responseValue    [11] OCTET STRING OPTIONAL }
+
+   The responseName field, when present, contains an LDAPOID that is
+   unique for this extended operation or response.  This field is
+   optional (even when the extension specification defines an LDAPOID
+   for use in this field).  The field will be absent whenever the server
+   is unable or unwilling to determine the appropriate LDAPOID to
+   return, for instance, when the requestName cannot be parsed or its
+   value is not recognized.
+
+   Where the requestName is not recognized, the server returns
+   protocolError.  (The server may return protocolError in other cases.)
+
+   The requestValue and responseValue fields contain information
+   associated with the operation.  The format of these fields is defined
+   by the specification of the Extended operation.  Implementations MUST
+   be prepared to handle arbitrary contents of these fields, including
+   zero bytes.  Values that are defined in terms of ASN.1 and BER-
+   encoded according to Section 5.1 also follow the extensibility rules
+   in Section 4.
+
+   Servers list the requestName of Extended Requests they recognize in
+   the 'supportedExtension' attribute in the root DSE (Section 5.1 of
+   [RFC4512]).
+
+   Extended operations may be specified in other documents.  The
+   specification of an Extended operation consists of:
+
+   - the OBJECT IDENTIFIER assigned to the requestName,
+
+   - the OBJECT IDENTIFIER (if any) assigned to the responseName (note
+     that the same OBJECT IDENTIFIER may be used for both the
+     requestName and responseName),
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 38]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   - the format of the contents of the requestValue and responseValue
+     (if any), and
+
+   - the semantics of the operation.
+
+4.13.  IntermediateResponse Message
+
+   While the Search operation provides a mechanism to return multiple
+   response messages for a single Search request, other operations, by
+   nature, do not provide for multiple response messages.
+
+   The IntermediateResponse message provides a general mechanism for
+   defining single-request/multiple-response operations in LDAP.  This
+   message is intended to be used in conjunction with the Extended
+   operation to define new single-request/multiple-response operations
+   or in conjunction with a control when extending existing LDAP
+   operations in a way that requires them to return Intermediate
+   response information.
+
+   It is intended that the definitions and descriptions of Extended
+   operations and controls that make use of the IntermediateResponse
+   message will define the circumstances when an IntermediateResponse
+   message can be sent by a server and the associated meaning of an
+   IntermediateResponse message sent in a particular circumstance.
+
+        IntermediateResponse ::= [APPLICATION 25] SEQUENCE {
+                responseName     [0] LDAPOID OPTIONAL,
+                responseValue    [1] OCTET STRING OPTIONAL }
+
+   IntermediateResponse messages SHALL NOT be returned to the client
+   unless the client issues a request that specifically solicits their
+   return.  This document defines two forms of solicitation: Extended
+   operation and request control.  IntermediateResponse messages are
+   specified in documents describing the manner in which they are
+   solicited (i.e., in the Extended operation or request control
+   specification that uses them).  These specifications include:
+
+   - the OBJECT IDENTIFIER (if any) assigned to the responseName,
+
+   - the format of the contents of the responseValue (if any), and
+
+   - the semantics associated with the IntermediateResponse message.
+
+   Extensions that allow the return of multiple types of
+   IntermediateResponse messages SHALL identify those types using unique
+   responseName values (note that one of these may specify no value).
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 39]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   Sections 4.13.1 and 4.13.2 describe additional requirements on the
+   inclusion of responseName and responseValue in IntermediateResponse
+   messages.
+
+4.13.1.  Usage with LDAP ExtendedRequest and ExtendedResponse
+
+   A single-request/multiple-response operation may be defined using a
+   single ExtendedRequest message to solicit zero or more
+   IntermediateResponse messages of one or more kinds, followed by an
+   ExtendedResponse message.
+
+4.13.2.  Usage with LDAP Request Controls
+
+   A control's semantics may include the return of zero or more
+   IntermediateResponse messages prior to returning the final result
+   code for the operation.  One or more kinds of IntermediateResponse
+   messages may be sent in response to a request control.
+
+   All IntermediateResponse messages associated with request controls
+   SHALL include a responseName.  This requirement ensures that the
+   client can correctly identify the source of IntermediateResponse
+   messages when:
+
+   - two or more controls using IntermediateResponse messages are
+     included in a request for any LDAP operation or
+
+   - one or more controls using IntermediateResponse messages are
+     included in a request with an LDAP Extended operation that uses
+     IntermediateResponse messages.
+
+4.14.  StartTLS Operation
+
+   The Start Transport Layer Security (StartTLS) operation's purpose is
+   to initiate installation of a TLS layer.  The StartTLS operation is
+   defined using the Extended operation mechanism described in Section
+   4.12.
+
+4.14.1.  StartTLS Request
+
+   A client requests TLS establishment by transmitting a StartTLS
+   request message to the server.  The StartTLS request is defined in
+   terms of an ExtendedRequest.  The requestName is
+   "1.3.6.1.4.1.1466.20037", and the requestValue field is always
+   absent.
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 40]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   The client MUST NOT send any LDAP PDUs at this LDAP message layer
+   following this request until it receives a StartTLS Extended response
+   and, in the case of a successful response, completes TLS
+   negotiations.
+
+   Detected sequencing problems (particularly those detailed in Section
+   3.1.1 of [RFC4513]) result in the resultCode being set to
+   operationsError.
+
+   If the server does not support TLS (whether by design or by current
+   configuration), it returns with the resultCode set to protocolError
+   as described in Section 4.12.
+
+4.14.2.  StartTLS Response
+
+   When a StartTLS request is received, servers supporting the operation
+   MUST return a StartTLS response message to the requestor.  The
+   responseName is "1.3.6.1.4.1.1466.20037" when provided (see Section
+   4.12).  The responseValue is always absent.
+
+   If the server is willing and able to negotiate TLS, it returns the
+   StartTLS response with the resultCode set to success.  Upon client
+   receipt of a successful StartTLS response, protocol peers may
+   commence with TLS negotiation as discussed in Section 3 of [RFC4513].
+
+   If the server is otherwise unwilling or unable to perform this
+   operation, the server is to return an appropriate result code
+   indicating the nature of the problem.  For example, if the TLS
+   subsystem is not presently available, the server may indicate this by
+   returning with the resultCode set to unavailable.  In cases where a
+   non-success result code is returned, the LDAP session is left without
+   a TLS layer.
+
+4.14.3.  Removal of the TLS Layer
+
+   Either the client or server MAY remove the TLS layer and leave the
+   LDAP message layer intact by sending and receiving a TLS closure
+   alert.
+
+   The initiating protocol peer sends the TLS closure alert and MUST
+   wait until it receives a TLS closure alert from the other peer before
+   sending further LDAP PDUs.
+
+   When a protocol peer receives the initial TLS closure alert, it may
+   choose to allow the LDAP message layer to remain intact.  In this
+   case, it MUST immediately transmit a TLS closure alert.  Following
+   this, it MAY send and receive LDAP PDUs.
+
+
+
+
+Sermersheim                 Standards Track                    [Page 41]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   Protocol peers MAY terminate the LDAP session after sending or
+   receiving a TLS closure alert.
+
+5.  Protocol Encoding, Connection, and Transfer
+
+   This protocol is designed to run over connection-oriented, reliable
+   transports, where the data stream is divided into octets (8-bit
+   units), with each octet and each bit being significant.
+
+   One underlying service, LDAP over TCP, is defined in Section 5.2.
+   This service is generally applicable to applications providing or
+   consuming X.500-based directory services on the Internet.  This
+   specification was generally written with the TCP mapping in mind.
+   Specifications detailing other mappings may encounter various
+   obstacles.
+
+   Implementations of LDAP over TCP MUST implement the mapping as
+   described in Section 5.2.
+
+   This table illustrates the relationship among the different layers
+   involved in an exchange between two protocol peers:
+
+               +----------------------+
+               |  LDAP message layer  |
+               +----------------------+ > LDAP PDUs
+               +----------------------+ < data
+               |      SASL layer      |
+               +----------------------+ > SASL-protected data
+               +----------------------+ < data
+               |       TLS layer      |
+   Application +----------------------+ > TLS-protected data
+   ------------+----------------------+ < data
+     Transport | transport connection |
+               +----------------------+
+
+5.1.  Protocol Encoding
+
+   The protocol elements of LDAP SHALL be encoded for exchange using the
+   Basic Encoding Rules [BER] of [ASN.1] with the following
+   restrictions:
+
+   - Only the definite form of length encoding is used.
+
+   - OCTET STRING values are encoded in the primitive form only.
+
+   - If the value of a BOOLEAN type is true, the encoding of the value
+     octet is set to hex "FF".
+
+
+
+
+Sermersheim                 Standards Track                    [Page 42]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   - If a value of a type is its default value, it is absent.  Only some
+     BOOLEAN and INTEGER types have default values in this protocol
+     definition.
+
+   These restrictions are meant to ease the overhead of encoding and
+   decoding certain elements in BER.
+
+   These restrictions do not apply to ASN.1 types encapsulated inside of
+   OCTET STRING values, such as attribute values, unless otherwise
+   stated.
+
+5.2.  Transmission Control Protocol (TCP)
+
+   The encoded LDAPMessage PDUs are mapped directly onto the TCP
+   [RFC793] bytestream using the BER-based encoding described in Section
+   5.1.  It is recommended that server implementations running over the
+   TCP provide a protocol listener on the Internet Assigned Numbers
+   Authority (IANA)-assigned LDAP port, 389 [PortReg].  Servers may
+   instead provide a listener on a different port number.  Clients MUST
+   support contacting servers on any valid TCP port.
+
+5.3.  Termination of the LDAP session
+
+   Termination of the LDAP session is typically initiated by the client
+   sending an UnbindRequest (Section 4.3), or by the server sending a
+   Notice of Disconnection (Section 4.4.1).  In these cases, each
+   protocol peer gracefully terminates the LDAP session by ceasing
+   exchanges at the LDAP message layer, tearing down any SASL layer,
+   tearing down any TLS layer, and closing the transport connection.
+
+   A protocol peer may determine that the continuation of any
+   communication would be pernicious, and in this case, it may abruptly
+   terminate the session by ceasing communication and closing the
+   transport connection.
+
+   In either case, when the LDAP session is terminated, uncompleted
+   operations are handled as specified in Section 3.1.
+
+6.  Security Considerations
+
+   This version of the protocol provides facilities for simple
+   authentication using a cleartext password, as well as any SASL
+   [RFC4422] mechanism.  Installing SASL and/or TLS layers can provide
+   integrity and other data security services.
+
+   It is also permitted that the server can return its credentials to
+   the client, if it chooses to do so.
+
+
+
+
+Sermersheim                 Standards Track                    [Page 43]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   Use of cleartext password is strongly discouraged where the
+   underlying transport service cannot guarantee confidentiality and may
+   result in disclosure of the password to unauthorized parties.
+
+   Servers are encouraged to prevent directory modifications by clients
+   that have authenticated anonymously [RFC4513].
+
+   Security considerations for authentication methods, SASL mechanisms,
+   and TLS are described in [RFC4513].
+
+   Note that SASL authentication exchanges do not provide data
+   confidentiality or integrity protection for the version or name
+   fields of the BindRequest or the resultCode, diagnosticMessage, or
+   referral fields of the BindResponse, nor for any information
+   contained in controls attached to Bind requests or responses.  Thus,
+   information contained in these fields SHOULD NOT be relied on unless
+   it is otherwise protected (such as by establishing protections at the
+   transport layer).
+
+   Implementors should note that various security factors (including
+   authentication and authorization information and data security
+   services) may change during the course of the LDAP session or even
+   during the performance of a particular operation.  For instance,
+   credentials could expire, authorization identities or access controls
+   could change, or the underlying security layer(s) could be replaced
+   or terminated.  Implementations should be robust in the handling of
+   changing security factors.
+
+   In some cases, it may be appropriate to continue the operation even
+   in light of security factor changes.  For instance, it may be
+   appropriate to continue an Abandon operation regardless of the
+   change, or to continue an operation when the change upgraded (or
+   maintained) the security factor.  In other cases, it may be
+   appropriate to fail or alter the processing of the operation.  For
+   instance, if confidential protections were removed, it would be
+   appropriate either to fail a request to return sensitive data or,
+   minimally, to exclude the return of sensitive data.
+
+   Implementations that cache attributes and entries obtained via LDAP
+   MUST ensure that access controls are maintained if that information
+   is to be provided to multiple clients, since servers may have access
+   control policies that prevent the return of entries or attributes in
+   Search results except to particular authenticated clients.  For
+   example, caches could serve result information only to the client
+   whose request caused it to be in the cache.
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 44]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   Servers may return referrals or Search result references that
+   redirect clients to peer servers.  It is possible for a rogue
+   application to inject such referrals into the data stream in an
+   attempt to redirect a client to a rogue server.  Clients are advised
+   to be aware of this and possibly reject referrals when
+   confidentiality measures are not in place.  Clients are advised to
+   reject referrals from the StartTLS operation.
+
+   The matchedDN and diagnosticMessage fields, as well as some
+   resultCode values (e.g., attributeOrValueExists and
+   entryAlreadyExists), could disclose the presence or absence of
+   specific data in the directory that is subject to access and other
+   administrative controls.  Server implementations should restrict
+   access to protected information equally under both normal and error
+   conditions.
+
+   Protocol peers MUST be prepared to handle invalid and arbitrary-
+   length protocol encodings.  Invalid protocol encodings include: BER
+   encoding exceptions, format string and UTF-8 encoding exceptions,
+   overflow exceptions, integer value exceptions, and binary mode on/off
+   flag exceptions.  The LDAPv3 PROTOS [PROTOS-LDAP] test suite provides
+   excellent examples of these exceptions and test cases used to
+   discover flaws.
+
+   In the event that a protocol peer senses an attack that in its nature
+   could cause damage due to further communication at any layer in the
+   LDAP session, the protocol peer should abruptly terminate the LDAP
+   session as described in Section 5.3.
+
+7.  Acknowledgements
+
+   This document is based on RFC 2251 by Mark Wahl, Tim Howes, and Steve
+   Kille.  RFC 2251 was a product of the IETF ASID Working Group.
+
+   It is also based on RFC 2830 by Jeff Hodges, RL "Bob" Morgan, and
+   Mark Wahl.  RFC 2830 was a product of the IETF LDAPEXT Working Group.
+
+   It is also based on RFC 3771 by Roger Harrison and Kurt Zeilenga.
+   RFC 3771 was an individual submission to the IETF.
+
+   This document is a product of the IETF LDAPBIS Working Group.
+   Significant contributors of technical review and content include Kurt
+   Zeilenga, Steven Legg, and Hallvard Furuseth.
+
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 45]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+8.  Normative References
+
+   [ASN.1]       ITU-T Recommendation X.680 (07/2002) | ISO/IEC 8824-
+                 1:2002 "Information Technology - Abstract Syntax
+                 Notation One (ASN.1): Specification of basic notation".
+
+   [BER]         ITU-T Rec. X.690 (07/2002) | ISO/IEC 8825-1:2002,
+                 "Information technology - ASN.1 encoding rules:
+                 Specification of Basic Encoding Rules (BER), Canonical
+                 Encoding Rules (CER) and Distinguished Encoding Rules
+                 (DER)", 2002.
+
+   [ISO10646]    Universal Multiple-Octet Coded Character Set (UCS) -
+                 Architecture and Basic Multilingual Plane, ISO/IEC
+                 10646-1 : 1993.
+
+   [RFC791]      Postel, J., "Internet Protocol", STD 5, RFC 791,
+                 September 1981.
+
+   [RFC793]      Postel, J., "Transmission Control Protocol", STD 7, RFC
+                 793, September 1981.
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3454]     Hoffman P. and M. Blanchet, "Preparation of
+                 Internationalized Strings ('stringprep')", RFC 3454,
+                 December 2002.
+
+   [RFC3629]     Yergeau, F., "UTF-8, a transformation format of ISO
+                 10646", STD 63, RFC 3629, November 2003.
+
+   [RFC3986]     Berners-Lee, T., Fielding, R., and L. Masinter,
+                 "Uniform Resource Identifier (URI): Generic Syntax",
+                 STD 66, RFC 3986, January 2005.
+
+   [RFC4013]     Zeilenga, K., "SASLprep: Stringprep Profile for User
+                 Names and Passwords", RFC 4013, February 2005.
+
+   [RFC4234]     Crocker, D. and P. Overell, "Augmented BNF for Syntax
+                 Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4346]     Dierks, T. and E. Rescorla, "The TLS Protocol Version
+                 1.1", RFC 4346, March 2006.
+
+   [RFC4422]     Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple
+                 Authentication and Security Layer (SASL)", RFC 4422,
+                 June 2006.
+
+
+
+Sermersheim                 Standards Track                    [Page 46]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   [RFC4510]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4512]     Zeilenga, K., Lightweight Directory Access Protocol
+                 (LDAP): Directory Information Models", RFC 4512, June
+                 2006.
+
+   [RFC4513]     Harrison, R., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Authentication Methods and Security
+                 Mechanisms", RFC 4513, June 2006.
+
+   [RFC4514]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): String Representation of Distinguished
+                 Names", RFC 4514, June 2006.
+
+   [RFC4516]     Smith, M., Ed. and T. Howes, "Lightweight Directory
+                 Access Protocol (LDAP): Uniform Resource Locator", RFC
+                 4516, June 2006.
+
+   [RFC4517]     Legg, S., Ed., "Lightweight Directory Access Protocol
+                 (LDAP): Syntaxes and Matching Rules", RFC 4517, June
+                 2006.
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [Unicode]     The Unicode Consortium, "The Unicode Standard, Version
+                 3.2.0" is defined by "The Unicode Standard, Version
+                 3.0" (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-
+                 61633-5), as amended by the "Unicode Standard Annex
+                 #27: Unicode 3.1"
+                 (http://www.unicode.org/reports/tr27/) and by the
+                 "Unicode Standard Annex #28: Unicode 3.2"
+                 (http://www.unicode.org/reports/tr28/).
+
+   [X.500]       ITU-T Rec. X.500, "The Directory: Overview of Concepts,
+                 Models and Service", 1993.
+
+   [X.511]       ITU-T Rec. X.511, "The Directory: Abstract Service
+                 Definition", 1993.
+
+
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 47]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+9.  Informative References
+
+   [CharModel]   Whistler, K. and M. Davis, "Unicode Technical Report
+                 #17, Character Encoding Model", UTR17,
+                 <http://www.unicode.org/unicode/reports/tr17/>, August
+                 2000.
+
+   [Glossary]    The Unicode Consortium, "Unicode Glossary",
+                 <http://www.unicode.org/glossary/>.
+
+   [PortReg]     IANA, "Port Numbers",
+                 <http://www.iana.org/assignments/port-numbers>.
+
+   [PROTOS-LDAP] University of Oulu, "PROTOS Test-Suite: c06-ldapv3"
+                 <http://www.ee.oulu.fi/research/ouspg/protos/testing/
+                 c06/ldapv3/>.
+
+10.  IANA Considerations
+
+   The Internet Assigned Numbers Authority (IANA) has updated the LDAP
+   result code registry to indicate that this document provides the
+   definitive technical specification for result codes 0-36, 48-54, 64-
+   70, 80-90.  It is also noted that one resultCode value
+   (strongAuthRequired) has been renamed (to strongerAuthRequired).
+
+   The IANA has also updated the LDAP Protocol Mechanism registry to
+   indicate that this document and [RFC4513] provides the definitive
+   technical specification for the StartTLS (1.3.6.1.4.1.1466.20037)
+   Extended operation.
+
+   IANA has assigned LDAP Object Identifier 18 [RFC4520] to identify the
+   ASN.1 module defined in this document.
+
+        Subject: Request for LDAP Object Identifier Registration
+        Person & email address to contact for further information:
+             Jim Sermersheim <jimse at novell.com>
+        Specification: RFC 4511
+        Author/Change Controller: IESG
+        Comments:
+             Identifies the LDAP ASN.1 module
+
+
+
+
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 48]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+Appendix A.  LDAP Result Codes
+
+   This normative appendix details additional considerations regarding
+   LDAP result codes and provides a brief, general description of each
+   LDAP result code enumerated in Section 4.1.9.
+
+   Additional result codes MAY be defined for use with extensions
+   [RFC4520].  Client implementations SHALL treat any result code that
+   they do not recognize as an unknown error condition.
+
+   The descriptions provided here do not fully account for result code
+   substitutions used to prevent unauthorized disclosures (such as
+   substitution of noSuchObject for insufficientAccessRights, or
+   invalidCredentials for insufficientAccessRights).
+
+A.1.  Non-Error Result Codes
+
+   These result codes (called "non-error" result codes) do not indicate
+   an error condition:
+
+        success (0),
+        compareFalse (5),
+        compareTrue (6),
+        referral (10), and
+        saslBindInProgress (14).
+
+   The success, compareTrue, and compareFalse result codes indicate
+   successful completion (and, hence, are referred to as "successful"
+   result codes).
+
+   The referral and saslBindInProgress result codes indicate the client
+   needs to take additional action to complete the operation.
+
+A.2.  Result Codes
+
+   Existing LDAP result codes are described as follows:
+
+      success (0)
+         Indicates the successful completion of an operation.  Note:
+         this code is not used with the Compare operation.  See
+         compareFalse (5) and compareTrue (6).
+
+
+
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 49]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+      operationsError (1)
+         Indicates that the operation is not properly sequenced with
+         relation to other operations (of same or different type).
+
+         For example, this code is returned if the client attempts to
+         StartTLS [RFC4346] while there are other uncompleted operations
+         or if a TLS layer was already installed.
+
+      protocolError (2)
+         Indicates the server received data that is not well-formed.
+
+         For Bind operation only, this code is also used to indicate
+         that the server does not support the requested protocol
+         version.
+
+         For Extended operations only, this code is also used to
+         indicate that the server does not support (by design or
+         configuration) the Extended operation associated with the
+         requestName.
+
+         For request operations specifying multiple controls, this may
+         be used to indicate that the server cannot ignore the order
+         of the controls as specified, or that the combination of the
+         specified controls is invalid or unspecified.
+
+      timeLimitExceeded (3)
+         Indicates that the time limit specified by the client was
+         exceeded before the operation could be completed.
+
+      sizeLimitExceeded (4)
+         Indicates that the size limit specified by the client was
+         exceeded before the operation could be completed.
+
+      compareFalse (5)
+         Indicates that the Compare operation has successfully
+         completed and the assertion has evaluated to FALSE or
+         Undefined.
+
+      compareTrue (6)
+         Indicates that the Compare operation has successfully
+         completed and the assertion has evaluated to TRUE.
+
+      authMethodNotSupported (7)
+         Indicates that the authentication method or mechanism is not
+         supported.
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 50]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+      strongerAuthRequired (8)
+         Indicates the server requires strong(er) authentication in
+         order to complete the operation.
+
+         When used with the Notice of Disconnection operation, this
+         code indicates that the server has detected that an
+         established security association between the client and
+         server has unexpectedly failed or been compromised.
+
+      referral (10)
+         Indicates that a referral needs to be chased to complete the
+         operation (see Section 4.1.10).
+
+      adminLimitExceeded (11)
+         Indicates that an administrative limit has been exceeded.
+
+      unavailableCriticalExtension (12)
+         Indicates a critical control is unrecognized (see Section
+         4.1.11).
+
+      confidentialityRequired (13)
+         Indicates that data confidentiality protections are required.
+
+      saslBindInProgress (14)
+         Indicates the server requires the client to send a new bind
+         request, with the same SASL mechanism, to continue the
+         authentication process (see Section 4.2).
+
+      noSuchAttribute (16)
+         Indicates that the named entry does not contain the specified
+         attribute or attribute value.
+
+      undefinedAttributeType (17)
+         Indicates that a request field contains an unrecognized
+         attribute description.
+
+      inappropriateMatching (18)
+         Indicates that an attempt was made (e.g., in an assertion) to
+         use a matching rule not defined for the attribute type
+         concerned.
+
+      constraintViolation (19)
+         Indicates that the client supplied an attribute value that
+         does not conform to the constraints placed upon it by the
+         data model.
+
+         For example, this code is returned when multiple values are
+         supplied to an attribute that has a SINGLE-VALUE constraint.
+
+
+
+Sermersheim                 Standards Track                    [Page 51]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+      attributeOrValueExists (20)
+         Indicates that the client supplied an attribute or value to
+         be added to an entry, but the attribute or value already
+         exists.
+
+      invalidAttributeSyntax (21)
+         Indicates that a purported attribute value does not conform
+         to the syntax of the attribute.
+
+      noSuchObject (32)
+         Indicates that the object does not exist in the DIT.
+
+      aliasProblem (33)
+         Indicates that an alias problem has occurred.  For example,
+         the code may used to indicate an alias has been dereferenced
+         that names no object.
+
+      invalidDNSyntax (34)
+         Indicates that an LDAPDN or RelativeLDAPDN field (e.g., search
+         base, target entry, ModifyDN newrdn, etc.) of a request does
+         not conform to the required syntax or contains attribute
+         values that do not conform to the syntax of the attribute's
+         type.
+
+      aliasDereferencingProblem (36)
+         Indicates that a problem occurred while dereferencing an
+         alias.  Typically, an alias was encountered in a situation
+         where it was not allowed or where access was denied.
+
+      inappropriateAuthentication (48)
+         Indicates the server requires the client that had attempted
+         to bind anonymously or without supplying credentials to
+         provide some form of credentials.
+
+      invalidCredentials (49)
+         Indicates that the provided credentials (e.g., the user's name
+         and password) are invalid.
+
+      insufficientAccessRights (50)
+         Indicates that the client does not have sufficient access
+         rights to perform the operation.
+
+      busy (51)
+         Indicates that the server is too busy to service the
+         operation.
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 52]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+      unavailable (52)
+         Indicates that the server is shutting down or a subsystem
+         necessary to complete the operation is offline.
+
+      unwillingToPerform (53)
+         Indicates that the server is unwilling to perform the
+         operation.
+
+      loopDetect (54)
+         Indicates that the server has detected an internal loop (e.g.,
+         while dereferencing aliases or chaining an operation).
+
+      namingViolation (64)
+         Indicates that the entry's name violates naming restrictions.
+
+      objectClassViolation (65)
+         Indicates that the entry violates object class restrictions.
+
+      notAllowedOnNonLeaf (66)
+         Indicates that the operation is inappropriately acting upon a
+         non-leaf entry.
+
+      notAllowedOnRDN (67)
+         Indicates that the operation is inappropriately attempting to
+         remove a value that forms the entry's relative distinguished
+         name.
+
+      entryAlreadyExists (68)
+         Indicates that the request cannot be fulfilled (added, moved,
+         or renamed) as the target entry already exists.
+
+      objectClassModsProhibited (69)
+         Indicates that an attempt to modify the object class(es) of
+         an entry's 'objectClass' attribute is prohibited.
+
+         For example, this code is returned when a client attempts to
+         modify the structural object class of an entry.
+
+      affectsMultipleDSAs (71)
+         Indicates that the operation cannot be performed as it would
+         affect multiple servers (DSAs).
+
+      other (80)
+         Indicates the server has encountered an internal error.
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 53]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+Appendix B.  Complete ASN.1 Definition
+
+   This appendix is normative.
+
+        Lightweight-Directory-Access-Protocol-V3 {1 3 6 1 1 18}
+        -- Copyright (C) The Internet Society (2006).  This version of
+        -- this ASN.1 module is part of RFC 4511; see the RFC itself
+        -- for full legal notices.
+        DEFINITIONS
+        IMPLICIT TAGS
+        EXTENSIBILITY IMPLIED ::=
+
+        BEGIN
+
+        LDAPMessage ::= SEQUENCE {
+             messageID       MessageID,
+             protocolOp      CHOICE {
+                  bindRequest           BindRequest,
+                  bindResponse          BindResponse,
+                  unbindRequest         UnbindRequest,
+                  searchRequest         SearchRequest,
+                  searchResEntry        SearchResultEntry,
+                  searchResDone         SearchResultDone,
+                  searchResRef          SearchResultReference,
+                  modifyRequest         ModifyRequest,
+                  modifyResponse        ModifyResponse,
+                  addRequest            AddRequest,
+                  addResponse           AddResponse,
+                  delRequest            DelRequest,
+                  delResponse           DelResponse,
+                  modDNRequest          ModifyDNRequest,
+                  modDNResponse         ModifyDNResponse,
+                  compareRequest        CompareRequest,
+                  compareResponse       CompareResponse,
+                  abandonRequest        AbandonRequest,
+                  extendedReq           ExtendedRequest,
+                  extendedResp          ExtendedResponse,
+                  ...,
+                  intermediateResponse  IntermediateResponse },
+             controls       [0] Controls OPTIONAL }
+
+        MessageID ::= INTEGER (0 ..  maxInt)
+
+        maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) --
+
+        LDAPString ::= OCTET STRING -- UTF-8 encoded,
+                                    -- [ISO10646] characters
+
+
+
+
+Sermersheim                 Standards Track                    [Page 54]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+        LDAPOID ::= OCTET STRING -- Constrained to <numericoid>
+                                 -- [RFC4512]
+
+        LDAPDN ::= LDAPString -- Constrained to <distinguishedName>
+                              -- [RFC4514]
+
+        RelativeLDAPDN ::= LDAPString -- Constrained to <name-component>
+                                      -- [RFC4514]
+
+        AttributeDescription ::= LDAPString
+                                -- Constrained to <attributedescription>
+                                -- [RFC4512]
+
+        AttributeValue ::= OCTET STRING
+
+        AttributeValueAssertion ::= SEQUENCE {
+             attributeDesc   AttributeDescription,
+             assertionValue  AssertionValue }
+
+        AssertionValue ::= OCTET STRING
+
+        PartialAttribute ::= SEQUENCE {
+             type       AttributeDescription,
+             vals       SET OF value AttributeValue }
+
+        Attribute ::= PartialAttribute(WITH COMPONENTS {
+             ...,
+             vals (SIZE(1..MAX))})
+
+        MatchingRuleId ::= LDAPString
+
+        LDAPResult ::= SEQUENCE {
+             resultCode         ENUMERATED {
+                  success                      (0),
+                  operationsError              (1),
+                  protocolError                (2),
+                  timeLimitExceeded            (3),
+                  sizeLimitExceeded            (4),
+                  compareFalse                 (5),
+                  compareTrue                  (6),
+                  authMethodNotSupported       (7),
+                  strongerAuthRequired         (8),
+                       -- 9 reserved --
+                  referral                     (10),
+                  adminLimitExceeded           (11),
+                  unavailableCriticalExtension (12),
+                  confidentialityRequired      (13),
+                  saslBindInProgress           (14),
+
+
+
+Sermersheim                 Standards Track                    [Page 55]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+                  noSuchAttribute              (16),
+                  undefinedAttributeType       (17),
+                  inappropriateMatching        (18),
+                  constraintViolation          (19),
+                  attributeOrValueExists       (20),
+                  invalidAttributeSyntax       (21),
+                       -- 22-31 unused --
+                  noSuchObject                 (32),
+                  aliasProblem                 (33),
+                  invalidDNSyntax              (34),
+                       -- 35 reserved for undefined isLeaf --
+                  aliasDereferencingProblem    (36),
+                       -- 37-47 unused --
+                  inappropriateAuthentication  (48),
+                  invalidCredentials           (49),
+                  insufficientAccessRights     (50),
+                  busy                         (51),
+                  unavailable                  (52),
+                  unwillingToPerform           (53),
+                  loopDetect                   (54),
+                       -- 55-63 unused --
+                  namingViolation              (64),
+                  objectClassViolation         (65),
+                  notAllowedOnNonLeaf          (66),
+                  notAllowedOnRDN              (67),
+                  entryAlreadyExists           (68),
+                  objectClassModsProhibited    (69),
+                       -- 70 reserved for CLDAP --
+                  affectsMultipleDSAs          (71),
+                       -- 72-79 unused --
+                  other                        (80),
+                  ...  },
+             matchedDN          LDAPDN,
+             diagnosticMessage  LDAPString,
+             referral           [3] Referral OPTIONAL }
+
+        Referral ::= SEQUENCE SIZE (1..MAX) OF uri URI
+
+        URI ::= LDAPString     -- limited to characters permitted in
+                               -- URIs
+
+        Controls ::= SEQUENCE OF control Control
+
+        Control ::= SEQUENCE {
+             controlType             LDAPOID,
+             criticality             BOOLEAN DEFAULT FALSE,
+             controlValue            OCTET STRING OPTIONAL }
+
+
+
+
+Sermersheim                 Standards Track                    [Page 56]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+        BindRequest ::= [APPLICATION 0] SEQUENCE {
+             version                 INTEGER (1 ..  127),
+             name                    LDAPDN,
+             authentication          AuthenticationChoice }
+
+        AuthenticationChoice ::= CHOICE {
+             simple                  [0] OCTET STRING,
+                                     -- 1 and 2 reserved
+             sasl                    [3] SaslCredentials,
+             ...  }
+
+        SaslCredentials ::= SEQUENCE {
+             mechanism               LDAPString,
+             credentials             OCTET STRING OPTIONAL }
+
+        BindResponse ::= [APPLICATION 1] SEQUENCE {
+             COMPONENTS OF LDAPResult,
+             serverSaslCreds    [7] OCTET STRING OPTIONAL }
+
+        UnbindRequest ::= [APPLICATION 2] NULL
+
+        SearchRequest ::= [APPLICATION 3] SEQUENCE {
+             baseObject      LDAPDN,
+             scope           ENUMERATED {
+                  baseObject              (0),
+                  singleLevel             (1),
+                  wholeSubtree            (2),
+                  ...  },
+             derefAliases    ENUMERATED {
+                  neverDerefAliases       (0),
+                  derefInSearching        (1),
+                  derefFindingBaseObj     (2),
+                  derefAlways             (3) },
+             sizeLimit       INTEGER (0 ..  maxInt),
+             timeLimit       INTEGER (0 ..  maxInt),
+             typesOnly       BOOLEAN,
+             filter          Filter,
+             attributes      AttributeSelection }
+
+        AttributeSelection ::= SEQUENCE OF selector LDAPString
+                       -- The LDAPString is constrained to
+                       -- <attributeSelector> in Section 4.5.1.8
+
+        Filter ::= CHOICE {
+             and             [0] SET SIZE (1..MAX) OF filter Filter,
+             or              [1] SET SIZE (1..MAX) OF filter Filter,
+             not             [2] Filter,
+             equalityMatch   [3] AttributeValueAssertion,
+
+
+
+Sermersheim                 Standards Track                    [Page 57]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+             substrings      [4] SubstringFilter,
+             greaterOrEqual  [5] AttributeValueAssertion,
+             lessOrEqual     [6] AttributeValueAssertion,
+             present         [7] AttributeDescription,
+             approxMatch     [8] AttributeValueAssertion,
+             extensibleMatch [9] MatchingRuleAssertion,
+             ...  }
+
+        SubstringFilter ::= SEQUENCE {
+             type           AttributeDescription,
+             substrings     SEQUENCE SIZE (1..MAX) OF substring CHOICE {
+                  initial [0] AssertionValue,  -- can occur at most once
+                  any     [1] AssertionValue,
+                  final   [2] AssertionValue } -- can occur at most once
+             }
+
+        MatchingRuleAssertion ::= SEQUENCE {
+             matchingRule    [1] MatchingRuleId OPTIONAL,
+             type            [2] AttributeDescription OPTIONAL,
+             matchValue      [3] AssertionValue,
+             dnAttributes    [4] BOOLEAN DEFAULT FALSE }
+
+        SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
+             objectName      LDAPDN,
+             attributes      PartialAttributeList }
+
+        PartialAttributeList ::= SEQUENCE OF
+                             partialAttribute PartialAttribute
+
+        SearchResultReference ::= [APPLICATION 19] SEQUENCE
+                                  SIZE (1..MAX) OF uri URI
+
+        SearchResultDone ::= [APPLICATION 5] LDAPResult
+
+        ModifyRequest ::= [APPLICATION 6] SEQUENCE {
+             object          LDAPDN,
+             changes         SEQUENCE OF change SEQUENCE {
+                  operation       ENUMERATED {
+                       add     (0),
+                       delete  (1),
+                       replace (2),
+                       ...  },
+                  modification    PartialAttribute } }
+
+        ModifyResponse ::= [APPLICATION 7] LDAPResult
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 58]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+        AddRequest ::= [APPLICATION 8] SEQUENCE {
+             entry           LDAPDN,
+             attributes      AttributeList }
+
+        AttributeList ::= SEQUENCE OF attribute Attribute
+
+        AddResponse ::= [APPLICATION 9] LDAPResult
+
+        DelRequest ::= [APPLICATION 10] LDAPDN
+
+        DelResponse ::= [APPLICATION 11] LDAPResult
+
+        ModifyDNRequest ::= [APPLICATION 12] SEQUENCE {
+             entry           LDAPDN,
+             newrdn          RelativeLDAPDN,
+             deleteoldrdn    BOOLEAN,
+             newSuperior     [0] LDAPDN OPTIONAL }
+
+        ModifyDNResponse ::= [APPLICATION 13] LDAPResult
+
+        CompareRequest ::= [APPLICATION 14] SEQUENCE {
+             entry           LDAPDN,
+             ava             AttributeValueAssertion }
+
+        CompareResponse ::= [APPLICATION 15] LDAPResult
+
+        AbandonRequest ::= [APPLICATION 16] MessageID
+
+        ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
+             requestName      [0] LDAPOID,
+             requestValue     [1] OCTET STRING OPTIONAL }
+
+        ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
+             COMPONENTS OF LDAPResult,
+             responseName     [10] LDAPOID OPTIONAL,
+             responseValue    [11] OCTET STRING OPTIONAL }
+
+        IntermediateResponse ::= [APPLICATION 25] SEQUENCE {
+             responseName     [0] LDAPOID OPTIONAL,
+             responseValue    [1] OCTET STRING OPTIONAL }
+
+        END
+
+
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 59]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+Appendix C.  Changes
+
+   This appendix is non-normative.
+
+   This appendix summarizes substantive changes made to RFC 2251, RFC
+   2830, and RFC 3771.
+
+C.1.  Changes Made to RFC 2251
+
+   This section summarizes the substantive changes made to Sections 1,
+   2, 3.1, and 4, and the remainder of RFC 2251.  Readers should
+   consult [RFC4512] and [RFC4513] for summaries of changes to other
+   sections.
+
+C.1.1.  Section 1 (Status of this Memo)
+
+   - Removed IESG note.  Post publication of RFC 2251, mandatory LDAP
+     authentication mechanisms have been standardized which are
+     sufficient to remove this note.  See [RFC4513] for authentication
+     mechanisms.
+
+C.1.2.  Section 3.1 (Protocol Model) and others
+
+   - Removed notes giving history between LDAP v1, v2, and v3.  Instead,
+     added sufficient language so that this document can stand on its
+     own.
+
+C.1.3.  Section 4 (Elements of Protocol)
+
+   - Clarified where the extensibility features of ASN.1 apply to the
+     protocol.  This change affected various ASN.1 types by the
+     inclusion of ellipses (...) to certain elements.
+   - Removed the requirement that servers that implement version 3 or
+     later MUST provide the 'supportedLDAPVersion' attribute.  This
+     statement provided no interoperability advantages.
+
+C.1.4.  Section 4.1.1 (Message Envelope)
+
+   - There was a mandatory requirement for the server to return a
+     Notice of Disconnection and drop the transport connection when a
+     PDU is malformed in a certain way.  This has been updated such that
+     the server SHOULD return the Notice of Disconnection, and it MUST
+     terminate the LDAP Session.
+
+C.1.5.  Section 4.1.1.1 (Message ID)
+
+   - Required that the messageID of requests MUST be non-zero as the
+     zero is reserved for Notice of Disconnection.
+
+
+
+Sermersheim                 Standards Track                    [Page 60]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   - Specified when it is and isn't appropriate to return an already
+     used messageID.  RFC 2251 accidentally imposed synchronous server
+     behavior in its wording of this.
+
+C.1.6.  Section 4.1.2 (String Types)
+
+   - Stated that LDAPOID is constrained to <numericoid> from [RFC4512].
+
+C.1.7.  Section 4.1.5.1 (Binary Option) and others
+
+   - Removed the Binary Option from the specification.  There are
+     numerous interoperability problems associated with this method of
+     alternate attribute type encoding.  Work to specify a suitable
+     replacement is ongoing.
+
+C.1.8.  Section 4.1.8 (Attribute)
+
+   - Combined the definitions of PartialAttribute and Attribute here,
+     and defined Attribute in terms of PartialAttribute.
+
+C.1.9.  Section 4.1.10 (Result Message)
+
+   - Renamed "errorMessage" to "diagnosticMessage" as it is allowed to
+     be sent for non-error results.
+   - Moved some language into Appendix A, and referred the reader there.
+   - Allowed matchedDN to be present for other result codes than those
+     listed in RFC 2251.
+   - Renamed the code "strongAuthRequired" to "strongerAuthRequired" to
+     clarify that this code may often be returned to indicate that a
+     stronger authentication is needed to perform a given operation.
+
+C.1.10.  Section 4.1.11 (Referral)
+
+   - Defined referrals in terms of URIs rather than URLs.
+   - Removed the requirement that all referral URIs MUST be equally
+     capable of progressing the operation.  The statement was ambiguous
+     and provided no instructions on how to carry it out.
+   - Added the requirement that clients MUST NOT loop between servers.
+   - Clarified the instructions for using LDAPURLs in referrals, and in
+     doing so added a recommendation that the scope part be present.
+   - Removed imperatives which required clients to use URLs in specific
+     ways to progress an operation.  These did nothing for
+     interoperability.
+
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 61]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+C.1.11.  Section 4.1.12 (Controls)
+
+   - Specified how control values defined in terms of ASN.1 are to be
+     encoded.
+   - Noted that the criticality field is only applied to request
+     messages (except UnbindRequest), and must be ignored when present
+     on response messages and UnbindRequest.
+   - Specified that non-critical controls may be ignored at the
+     server's discretion.  There was confusion in the original wording
+     which led some to believe that recognized controls may not be
+     ignored as long as they were associated with a proper request.
+   - Added language regarding combinations of controls and the ordering
+     of controls on a message.
+   - Specified that when the semantics of the combination of controls
+     is undefined or unknown, it results in a protocolError.
+   - Changed "The server MUST be prepared" to "Implementations MUST be
+     prepared" in paragraph 8 to reflect that both client and server
+     implementations must be able to handle this (as both parse
+     controls).
+
+C.1.12.  Section 4.2 (Bind Operation)
+
+   - Mandated that servers return protocolError when the version is not
+     supported.
+   - Disambiguated behavior when the simple authentication is used, the
+     name is empty, and the password is non-empty.
+   - Required servers to not dereference aliases for Bind.  This was
+     added for consistency with other operations and to help ensure
+     data consistency.
+   - Required that textual passwords be transferred as UTF-8 encoded
+     Unicode, and added recommendations on string preparation.  This was
+     to help ensure interoperability of passwords being sent from
+     different clients.
+
+C.1.13.  Section 4.2.1 (Sequencing of the Bind Request)
+
+   - This section was largely reorganized for readability, and language
+     was added to clarify the authentication state of failed and
+     abandoned Bind operations.
+   - Removed: "If a SASL transfer encryption or integrity mechanism has
+     been negotiated, that mechanism does not support the changing of
+     credentials from one identity to another, then the client MUST
+     instead establish a new connection."
+     If there are dependencies between multiple negotiations of a
+     particular SASL mechanism, the technical specification for that
+     SASL mechanism details how applications are to deal with them.
+     LDAP should not require any special handling.
+   - Dropped MUST imperative in paragraph 3 to align with [RFC2119].
+
+
+
+Sermersheim                 Standards Track                    [Page 62]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+   - Mandated that clients not send non-Bind operations while a Bind is
+     in progress, and suggested that servers not process them if they
+     are received.  This is needed to ensure proper sequencing of the
+     Bind in relationship to other operations.
+
+C.1.14.  Section 4.2.3 (Bind Response)
+
+   - Moved most error-related text to Appendix A, and added text
+     regarding certain errors used in conjunction with the Bind
+     operation.
+   - Prohibited the server from specifying serverSaslCreds when not
+     appropriate.
+
+C.1.15.  Section 4.3 (Unbind Operation)
+
+   - Specified that both peers are to cease transmission and terminate
+     the LDAP session for the Unbind operation.
+
+C.1.16.  Section 4.4 (Unsolicited Notification)
+
+   - Added instructions for future specifications of Unsolicited
+     Notifications.
+
+C.1.17.  Section 4.5.1 (Search Request)
+
+   - SearchRequest attributes is now defined as an AttributeSelection
+     type rather than AttributeDescriptionList, and an ABNF is
+     provided.
+   - SearchRequest attributes may contain duplicate attribute
+     descriptions.  This was previously prohibited.  Now servers are
+     instructed to ignore subsequent names when they are duplicated.
+     This was relaxed in order to allow different short names and also
+     OIDs to be requested for an attribute.
+   - The present search filter now evaluates to Undefined when the
+     specified attribute is not known to the server.  It used to
+     evaluate to FALSE, which caused behavior inconsistent with what
+     most would expect, especially when the 'not' operator was used.
+   - The Filter choice SubstringFilter substrings type is now defined
+     with a lower bound of 1.
+   - The SubstringFilter substrings 'initial, 'any', and 'final' types
+     are now AssertionValue rather than LDAPString.  Also, added
+     imperatives stating that 'initial' (if present) must be listed
+     first, and 'final' (if present) must be listed last.
+   - Disambiguated the semantics of the derefAliases choices.  There was
+     question as to whether derefInSearching applied to the base object
+     in a wholeSubtree Search.
+   - Added instructions for equalityMatch, substrings, greaterOrEqual,
+     lessOrEqual, and approxMatch.
+
+
+
+Sermersheim                 Standards Track                    [Page 63]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+
+C.1.18.  Section 4.5.2 (Search Result)
+
+   - Recommended that servers not use attribute short names when it
+     knows they are ambiguous or may cause interoperability problems.
+   - Removed all mention of ExtendedResponse due to lack of
+     implementation.
+
+C.1.19.  Section 4.5.3 (Continuation References in the Search Result)
+
+   - Made changes similar to those made to Section 4.1.11.
+
+C.1.20.  Section 4.5.3.1 (Example)
+
+   - Fixed examples to adhere to changes made to Section 4.5.3.
+
+C.1.21.  Section 4.6 (Modify Operation)
+
+   - Replaced AttributeTypeAndValues with Attribute as they are
+     equivalent.
+   - Specified the types of modification changes that might
+     temporarily violate schema.  Some readers were under the impression
+     that any temporary schema violation was allowed.
+
+C.1.22.  Section 4.7 (Add Operation)
+
+   - Aligned Add operation with X.511 in that the attributes of the RDN
+     are used in conjunction with the listed attributes to create the
+     entry.  Previously, Add required that the distinguished values be
+     present in the listed attributes.
+   - Removed requirement that the objectClass attribute MUST be
+     specified as some DSE types do not require this attribute.
+     Instead, generic wording was added, requiring the added entry to
+     adhere to the data model.
+   - Removed recommendation regarding placement of objects.  This is
+     covered in the data model document.
+
+C.1.23.  Section 4.9 (Modify DN Operation)
+
+   - Required servers to not dereference aliases for Modify DN.  This
+     was added for consistency with other operations and to help ensure
+     data consistency.
+   - Allow Modify DN to fail when moving between naming contexts.
+   - Specified what happens when the attributes of the newrdn are not
+     present on the entry.
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 64]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+C.1.24.  Section 4.10 (Compare Operation)
+
+   - Specified that compareFalse means that the Compare took place and
+     the result is false.  There was confusion that led people to
+     believe that an Undefined match resulted in compareFalse.
+   - Required servers to not dereference aliases for Compare.  This was
+     added for consistency with other operations and to help ensure
+     data consistency.
+
+C.1.25.  Section 4.11 (Abandon Operation)
+
+   - Explained that since Abandon returns no response, clients should
+     not use it if they need to know the outcome.
+   - Specified that Abandon and Unbind cannot be abandoned.
+
+C.1.26.  Section 4.12 (Extended Operation)
+
+   - Specified how values of Extended operations defined in terms of
+     ASN.1 are to be encoded.
+   - Added instructions on what Extended operation specifications
+     consist of.
+   - Added a recommendation that servers advertise supported Extended
+     operations.
+
+C.1.27.  Section 5.2 (Transfer Protocols)
+
+   - Moved referral-specific instructions into referral-related
+     sections.
+
+C.1.28.  Section 7 (Security Considerations)
+
+   - Reworded notes regarding SASL not protecting certain aspects of
+     the LDAP Bind messages.
+   - Noted that Servers are encouraged to prevent directory
+     modifications by clients that have authenticated anonymously
+     [RFC4513].
+   - Added a note regarding the possibility of changes to security
+     factors (authentication, authorization, and data confidentiality).
+   - Warned against following referrals that may have been injected in
+     the data stream.
+   - Noted that servers should protect information equally, whether in
+     an error condition or not, and mentioned matchedDN,
+     diagnosticMessage, and resultCodes specifically.
+   - Added a note regarding malformed and long encodings.
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 65]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+C.1.29.  Appendix A (Complete ASN.1 Definition)
+
+   - Added "EXTENSIBILITY IMPLIED" to ASN.1 definition.
+   - Removed AttributeType.  It is not used.
+
+C.2.  Changes Made to RFC 2830
+
+   This section summarizes the substantive changes made to Sections of
+   RFC 2830.  Readers should consult [RFC4513] for summaries of changes
+   to other sections.
+
+C.2.1.  Section 2.3 (Response other than "success")
+
+   - Removed wording indicating that referrals can be returned from
+     StartTLS.
+   - Removed requirement that only a narrow set of result codes can be
+     returned.  Some result codes are required in certain scenarios, but
+     any other may be returned if appropriate.
+   - Removed requirement that the ExtendedResponse.responseName MUST be
+     present.  There are circumstances where this is impossible, and
+     requiring this is at odds with language in Section 4.12.
+
+C.2.1.  Section 4 (Closing a TLS Connection)
+
+   - Reworded most of this section to align with definitions of the
+     LDAP protocol layers.
+   - Removed instructions on abrupt closure as this is covered in other
+     areas of the document (specifically, Section 5.3)
+
+C.3.  Changes Made to RFC 3771
+
+   - Rewrote to fit into this document.  In general, semantics were
+     preserved.  Supporting and background language seen as redundant
+     due to its presence in this document was omitted.
+
+   - Specified that Intermediate responses to a request may be of
+     different types, and one of the response types may be specified to
+     have no response value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 66]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+Editor's Address
+
+   Jim Sermersheim
+   Novell, Inc.
+   1800 South Novell Place
+   Provo, Utah 84606, USA
+
+   Phone: +1 801 861-3088
+   EMail: jimse at novell.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 67]
+
+RFC 4511                         LDAPv3                        June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Sermersheim                 Standards Track                    [Page 68]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4512.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4512.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4512.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4512.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,2915 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4512                           OpenLDAP Foundation
+Obsoletes: 2251, 2252, 2256, 3674                              June 2006
+Category: Standards Track
+
+
+             Lightweight Directory Access Protocol (LDAP):
+                      Directory Information Models
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   The Lightweight Directory Access Protocol (LDAP) is an Internet
+   protocol for accessing distributed directory services that act in
+   accordance with X.500 data and service models.  This document
+   describes the X.500 Directory Information Models, as used in LDAP.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+Table of Contents
+
+   1. Introduction ....................................................3
+      1.1. Relationship to Other LDAP Specifications ..................3
+      1.2. Relationship to X.501 ......................................4
+      1.3. Conventions ................................................4
+      1.4. Common ABNF Productions ....................................4
+   2. Model of Directory User Information .............................6
+      2.1. The Directory Information Tree .............................7
+      2.2. Structure of an Entry ......................................7
+      2.3. Naming of Entries ..........................................8
+      2.4. Object Classes .............................................9
+      2.5. Attribute Descriptions ....................................12
+      2.6. Alias Entries .............................................16
+   3. Directory Administrative and Operational Information ...........17
+      3.1. Subtrees ..................................................17
+      3.2. Subentries ................................................18
+      3.3. The 'objectClass' attribute ...............................18
+      3.4. Operational Attributes ....................................19
+   4. Directory Schema ...............................................22
+      4.1. Schema Definitions ........................................23
+      4.2. Subschema Subentries ......................................32
+      4.3. 'extensibleObject' object class ...........................35
+      4.4. Subschema Discovery .......................................35
+   5. DSA (Server) Informational Model ...............................36
+      5.1. Server-Specific Data Requirements .........................36
+   6. Other Considerations ...........................................40
+      6.1. Preservation of User Information ..........................40
+      6.2. Short Names ...............................................41
+      6.3. Cache and Shadowing .......................................41
+   7. Implementation Guidelines ......................................42
+      7.1. Server Guidelines .........................................42
+      7.2. Client Guidelines .........................................42
+   8. Security Considerations ........................................43
+   9. IANA Considerations ............................................43
+   10. Acknowledgements ..............................................44
+   11. Normative References ..........................................45
+   Appendix A. Changes ...............................................47
+      A.1. Changes to RFC 2251 .......................................47
+      A.2. Changes to RFC 2252 .......................................49
+      A.3. Changes to RFC 2256 .......................................50
+      A.4. Changes to RFC 3674 .......................................51
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+1.  Introduction
+
+   This document discusses the X.500 Directory Information Models
+   [X.501], as used by the Lightweight Directory Access Protocol (LDAP)
+   [RFC4510].
+
+   The Directory is "a collection of open systems cooperating to provide
+   directory services" [X.500].  The information held in the Directory
+   is collectively known as the Directory Information Base (DIB).  A
+   Directory user, which may be a human or other entity, accesses the
+   Directory through a client (or Directory User Agent (DUA)).  The
+   client, on behalf of the directory user, interacts with one or more
+   servers (or Directory System Agents (DSA)).  A server holds a
+   fragment of the DIB.
+
+   The DIB contains two classes of information:
+
+      1) user information (e.g., information provided and administrated
+         by users).  Section 2 describes the Model of User Information.
+
+      2) administrative and operational information (e.g., information
+         used to administer and/or operate the directory).  Section 3
+         describes the model of Directory Administrative and Operational
+         Information.
+
+   These two models, referred to as the generic Directory Information
+   Models, describe how information is represented in the Directory.
+   These generic models provide a framework for other information
+   models.  Section 4 discusses the subschema information model and
+   subschema discovery.  Section 5 discusses the DSA (Server)
+   Informational Model.
+
+   Other X.500 information models (such as access control distribution
+   knowledge and replication knowledge information models) may be
+   adapted for use in LDAP.  Specification of how these models apply to
+   LDAP is left to future documents.
+
+1.1.  Relationship to Other LDAP Specifications
+
+   This document is a integral part of the LDAP technical specification
+   [RFC4510], which obsoletes the previously defined LDAP technical
+   specification, RFC 3377, in its entirety.
+
+   This document obsoletes RFC 2251, Sections 3.2 and 3.4, as well as
+   portions of Sections 4 and 6.  Appendix A.1 summarizes changes to
+   these sections.  The remainder of RFC 2251 is obsoleted by the
+   [RFC4511], [RFC4513], and [RFC4510] documents.
+
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   This document obsoletes RFC 2252, Sections 4, 5, and 7.  Appendix A.2
+   summarizes changes to these sections.  The remainder of RFC 2252 is
+   obsoleted by [RFC4517].
+
+   This document obsoletes RFC 2256, Sections 5.1, 5.2, 7.1, and 7.2.
+   Appendix A.3 summarizes changes to these sections.  The remainder of
+   RFC 2256 is obsoleted by [RFC4519] and [RFC4517].
+
+   This document obsoletes RFC 3674 in its entirety.  Appendix A.4
+   summarizes changes since RFC 3674.
+
+1.2.  Relationship to X.501
+
+   This document includes material, with and without adaptation, from
+   [X.501] as necessary to describe this protocol.  These adaptations
+   (and any other differences herein) apply to this protocol, and only
+   this protocol.
+
+1.3.  Conventions
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+   Schema definitions are provided using LDAP description formats (as
+   defined in Section 4.1).  Definitions provided here are formatted
+   (line wrapped) for readability.  Matching rules and LDAP syntaxes
+   referenced in these definitions are specified in [RFC4517].
+
+1.4.  Common ABNF Productions
+
+   A number of syntaxes in this document are described using Augmented
+   Backus-Naur Form (ABNF) [RFC4234].  These syntaxes (as well as a
+   number of syntaxes defined in other documents) rely on the following
+   common productions:
+
+      keystring = leadkeychar *keychar
+      leadkeychar = ALPHA
+      keychar = ALPHA / DIGIT / HYPHEN
+      number  = DIGIT / ( LDIGIT 1*DIGIT )
+
+      ALPHA   = %x41-5A / %x61-7A   ; "A"-"Z" / "a"-"z"
+      DIGIT   = %x30 / LDIGIT       ; "0"-"9"
+      LDIGIT  = %x31-39             ; "1"-"9"
+      HEX     = DIGIT / %x41-46 / %x61-66 ; "0"-"9" / "A"-"F" / "a"-"f"
+
+      SP      = 1*SPACE  ; one or more " "
+      WSP     = 0*SPACE  ; zero or more " "
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+      NULL    = %x00 ; null (0)
+      SPACE   = %x20 ; space (" ")
+      DQUOTE  = %x22 ; quote (""")
+      SHARP   = %x23 ; octothorpe (or sharp sign) ("#")
+      DOLLAR  = %x24 ; dollar sign ("$")
+      SQUOTE  = %x27 ; single quote ("'")
+      LPAREN  = %x28 ; left paren ("(")
+      RPAREN  = %x29 ; right paren (")")
+      PLUS    = %x2B ; plus sign ("+")
+      COMMA   = %x2C ; comma (",")
+      HYPHEN  = %x2D ; hyphen ("-")
+      DOT     = %x2E ; period (".")
+      SEMI    = %x3B ; semicolon (";")
+      LANGLE  = %x3C ; left angle bracket ("<")
+      EQUALS  = %x3D ; equals sign ("=")
+      RANGLE  = %x3E ; right angle bracket (">")
+      ESC     = %x5C ; backslash ("\")
+      USCORE  = %x5F ; underscore ("_")
+      LCURLY  = %x7B ; left curly brace "{"
+      RCURLY  = %x7D ; right curly brace "}"
+
+      ; Any UTF-8 [RFC3629] encoded Unicode [Unicode] character
+      UTF8    = UTF1 / UTFMB
+      UTFMB   = UTF2 / UTF3 / UTF4
+      UTF0    = %x80-BF
+      UTF1    = %x00-7F
+      UTF2    = %xC2-DF UTF0
+      UTF3    = %xE0 %xA0-BF UTF0 / %xE1-EC 2(UTF0) /
+                %xED %x80-9F UTF0 / %xEE-EF 2(UTF0)
+      UTF4    = %xF0 %x90-BF 2(UTF0) / %xF1-F3 3(UTF0) /
+                %xF4 %x80-8F 2(UTF0)
+
+      OCTET   = %x00-FF ; Any octet (8-bit data unit)
+
+   Object identifiers (OIDs) [X.680] are represented in LDAP using a
+   dot-decimal format conforming to the ABNF:
+
+      numericoid = number 1*( DOT number )
+
+   Short names, also known as descriptors, are used as more readable
+   aliases for object identifiers.  Short names are case insensitive and
+   conform to the ABNF:
+
+      descr = keystring
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   Where either an object identifier or a short name may be specified,
+   the following production is used:
+
+      oid = descr / numericoid
+
+   While the <descr> form is generally preferred when the usage is
+   restricted to short names referring to object identifiers that
+   identify like kinds of objects (e.g., attribute type descriptions,
+   matching rule descriptions, object class descriptions), the
+   <numericoid> form should be used when the object identifiers may
+   identify multiple kinds of objects or when an unambiguous short name
+   (descriptor) is not available.
+
+   Implementations SHOULD treat short names (descriptors) used in an
+   ambiguous manner (as discussed above) as unrecognized.
+
+   Short Names (descriptors) are discussed further in Section 6.2.
+
+2.  Model of Directory User Information
+
+   As [X.501] states:
+
+      The purpose of the Directory is to hold, and provide access to,
+      information about objects of interest (objects) in some 'world'.
+      An object can be anything which is identifiable (can be named).
+
+      An object class is an identified family of objects, or conceivable
+      objects, which share certain characteristics.  Every object
+      belongs to at least one class.  An object class may be a subclass
+      of other object classes, in which case the members of the former
+      class, the subclass, are also considered to be members of the
+      latter classes, the superclasses.  There may be subclasses of
+      subclasses, etc., to an arbitrary depth.
+
+   A directory entry, a named collection of information, is the basic
+   unit of information held in the Directory.  There are multiple kinds
+   of directory entries.
+
+   An object entry represents a particular object.  An alias entry
+   provides alternative naming.  A subentry holds administrative and/or
+   operational information.
+
+   The set of entries representing the DIB are organized hierarchically
+   in a tree structure known as the Directory Information Tree (DIT).
+
+   Section 2.1 describes the Directory Information Tree.
+   Section 2.2 discusses the structure of entries.
+   Section 2.3 discusses naming of entries.
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   Section 2.4 discusses object classes.
+   Section 2.5 discusses attribute descriptions.
+   Section 2.6 discusses alias entries.
+
+2.1.  The Directory Information Tree
+
+   As noted above, the DIB is composed of a set of entries organized
+   hierarchically in a tree structure known as the Directory Information
+   Tree (DIT); specifically, a tree where vertices are the entries.
+
+   The arcs between vertices define relations between entries.  If an
+   arc exists from X to Y, then the entry at X is the immediate superior
+   of Y, and Y is the immediate subordinate of X.  An entry's superiors
+   are the entry's immediate superior and its superiors.  An entry's
+   subordinates are all of its immediate subordinates and their
+   subordinates.
+
+   Similarly, the superior/subordinate relationship between object
+   entries can be used to derive a relation between the objects they
+   represent.  DIT structure rules can be used to govern relationships
+   between objects.
+
+   Note: An entry's immediate superior is also known as the entry's
+         parent, and an entry's immediate subordinate is also known as
+         the entry's child.  Entries that have the same parent are known
+         as siblings.
+
+2.2.  Structure of an Entry
+
+   An entry consists of a set of attributes that hold information about
+   the object that the entry represents.  Some attributes represent user
+   information and are called user attributes.  Other attributes
+   represent operational and/or administrative information and are
+   called operational attributes.
+
+   An attribute is an attribute description (a type and zero or more
+   options) with one or more associated values.  An attribute is often
+   referred to by its attribute description.  For example, the
+   'givenName' attribute is the attribute that consists of the attribute
+   description 'givenName' (the 'givenName' attribute type [RFC4519] and
+   zero options) and one or more associated values.
+
+   The attribute type governs whether the attribute can have multiple
+   values, the syntax and matching rules used to construct and compare
+   values of that attribute, and other functions.  Options indicate
+   subtypes and other functions.
+
+   Attribute values conform to the defined syntax of the attribute type.
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   No two values of an attribute may be equivalent.  Two values are
+   considered equivalent if and only if they would match according to
+   the equality matching rule of the attribute type.  Or, if the
+   attribute type is defined with no equality matching rule, two values
+   are equivalent if and only if they are identical.  (See 2.5.1 for
+   other restrictions.)
+
+   For example, a 'givenName' attribute can have more than one value,
+   they must be Directory Strings, and they are case insensitive.  A
+   'givenName' attribute cannot hold both "John" and "JOHN", as these
+   are equivalent values per the equality matching rule of the attribute
+   type.
+
+   Additionally, no attribute is to have a value that is not equivalent
+   to itself.  For example, the 'givenName' attribute cannot have as a
+   value a directory string that includes the REPLACEMENT CHARACTER
+   (U+FFFD) code point, as matching involving that directory string is
+   Undefined per this attribute's equality matching rule.
+
+   When an attribute is used for naming of the entry, one and only one
+   value of the attribute is used in forming the Relative Distinguished
+   Name.  This value is known as a distinguished value.
+
+2.3.  Naming of Entries
+
+2.3.1.  Relative Distinguished Names
+
+   Each entry is named relative to its immediate superior.  This
+   relative name, known as its Relative Distinguished Name (RDN)
+   [X.501], is composed of an unordered set of one or more attribute
+   value assertions (AVA) consisting of an attribute description with
+   zero options and an attribute value.  These AVAs are chosen to match
+   attribute values (each a distinguished value) of the entry.
+
+   An entry's relative distinguished name must be unique among all
+   immediate subordinates of the entry's immediate superior (i.e., all
+   siblings).
+
+   The following are examples of string representations of RDNs
+   [RFC4514]:
+
+      UID=12345
+      OU=Engineering
+      CN=Kurt Zeilenga+L=Redwood Shores
+
+   The last is an example of a multi-valued RDN; that is, an RDN
+   composed of multiple AVAs.
+
+
+
+
+Zeilenga                    Standards Track                     [Page 8]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+2.3.2.  Distinguished Names
+
+   An entry's fully qualified name, known as its Distinguished Name (DN)
+   [X.501], is the concatenation of its RDN and its immediate superior's
+   DN.  A Distinguished Name unambiguously refers to an entry in the
+   tree.  The following are examples of string representations of DNs
+   [RFC4514]:
+
+      UID=nobody at example.com,DC=example,DC=com
+      CN=John Smith,OU=Sales,O=ACME Limited,L=Moab,ST=Utah,C=US
+
+2.3.3.  Alias Names
+
+   An alias, or alias name, is "an name for an object, provided by the
+   use of alias entries" [X.501].  Alias entries are described in
+   Section 2.6.
+
+2.4.  Object Classes
+
+   An object class is "an identified family of objects (or conceivable
+   objects) that share certain characteristics" [X.501].
+
+   As defined in [X.501]:
+
+      Object classes are used in the Directory for a number of purposes:
+
+        - describing and categorizing objects and the entries that
+          correspond to these objects;
+
+        - where appropriate, controlling the operation of the Directory;
+
+        - regulating, in conjunction with DIT structure rule
+          specifications, the position of entries in the DIT;
+
+        - regulating, in conjunction with DIT content rule
+          specifications, the attributes that are contained in entries;
+
+        - identifying classes of entry that are to be associated with a
+          particular policy by the appropriate administrative authority.
+
+      An object class (a subclass) may be derived from an object class
+      (its direct superclass) which is itself derived from an even more
+      generic object class.  For structural object classes, this process
+      stops at the most generic object class, 'top' (defined in Section
+      2.4.1).  An ordered set of superclasses up to the most superior
+      object class of an object class is its superclass chain.
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 9]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+      An object class may be derived from two or more direct
+      superclasses (superclasses not part of the same superclass chain).
+      This feature of subclassing is termed multiple inheritance.
+
+   Each object class identifies the set of attributes required to be
+   present in entries belonging to the class and the set of attributes
+   allowed to be present in entries belonging to the class.  As an entry
+   of a class must meet the requirements of each class it belongs to, it
+   can be said that an object class inherits the sets of allowed and
+   required attributes from its superclasses.  A subclass can identify
+   an attribute allowed by its superclass as being required.  If an
+   attribute is a member of both sets, it is required to be present.
+
+   Each object class is defined to be one of three kinds of object
+   classes: Abstract, Structural, or Auxiliary.
+
+   Each object class is identified by an object identifier (OID) and,
+   optionally, one or more short names (descriptors).
+
+2.4.1.  Abstract Object Classes
+
+   An abstract object class, as the name implies, provides a base of
+   characteristics from which other object classes can be defined to
+   inherit from.  An entry cannot belong to an abstract object class
+   unless it belongs to a structural or auxiliary class that inherits
+   from that abstract class.
+
+   Abstract object classes cannot derive from structural or auxiliary
+   object classes.
+
+   All structural object classes derive (directly or indirectly) from
+   the 'top' abstract object class.  Auxiliary object classes do not
+   necessarily derive from 'top'.
+
+   The following is the object class definition (see Section 4.1.1) for
+   the 'top' object class:
+
+      ( 2.5.6.0 NAME 'top' ABSTRACT MUST objectClass )
+
+   All entries belong to the 'top' abstract object class.
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 10]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+2.4.2.  Structural Object Classes
+
+   As stated in [X.501]:
+
+      An object class defined for use in the structural specification of
+      the DIT is termed a structural object class.  Structural object
+      classes are used in the definition of the structure of the names
+      of the objects for compliant entries.
+
+      An object or alias entry is characterized by precisely one
+      structural object class superclass chain which has a single
+      structural object class as the most subordinate object class.
+      This structural object class is referred to as the structural
+      object class of the entry.
+
+      Structural object classes are related to associated entries:
+
+        - an entry conforming to a structural object class shall
+          represent the real-world object constrained by the object
+          class;
+
+        - DIT structure rules only refer to structural object classes;
+          the structural object class of an entry is used to specify the
+          position of the entry in the DIT;
+
+        - the structural object class of an entry is used, along with an
+          associated DIT content rule, to control the content of an
+          entry.
+
+      The structural object class of an entry shall not be changed.
+
+   Each structural object class is a (direct or indirect) subclass of
+   the 'top' abstract object class.
+
+   Structural object classes cannot subclass auxiliary object classes.
+
+   Each entry is said to belong to its structural object class as well
+   as all classes in its structural object class's superclass chain.
+
+2.4.3.  Auxiliary Object Classes
+
+   Auxiliary object classes are used to augment the characteristics of
+   entries.  They are commonly used to augment the sets of attributes
+   required and allowed to be present in an entry.  They can be used to
+   describe entries or classes of entries.
+
+   Auxiliary object classes cannot subclass structural object classes.
+
+
+
+
+Zeilenga                    Standards Track                    [Page 11]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   An entry can belong to any subset of the set of auxiliary object
+   classes allowed by the DIT content rule associated with the
+   structural object class of the entry.  If no DIT content rule is
+   associated with the structural object class of the entry, the entry
+   cannot belong to any auxiliary object class.
+
+   The set of auxiliary object classes that an entry belongs to can
+   change over time.
+
+2.5.  Attribute Descriptions
+
+   An attribute description is composed of an attribute type (see
+   Section 2.5.1) and a set of zero or more attribute options (see
+   Section 2.5.2).
+
+   An attribute description is represented by the ABNF:
+
+      attributedescription = attributetype options
+      attributetype = oid
+      options = *( SEMI option )
+      option = 1*keychar
+
+   where <attributetype> identifies the attribute type and each <option>
+   identifies an attribute option.  Both <attributetype> and <option>
+   productions are case insensitive.  The order in which <option>s
+   appear is irrelevant.  That is, any two <attributedescription>s that
+   consist of the same <attributetype> and same set of <option>s are
+   equivalent.
+
+   Examples of valid attribute descriptions:
+
+      2.5.4.0
+      cn;lang-de;lang-en
+      owner
+
+   An attribute description with an unrecognized attribute type is to be
+   treated as unrecognized.  Servers SHALL treat an attribute
+   description with an unrecognized attribute option as unrecognized.
+   Clients MAY treat an unrecognized attribute option as a tagging
+   option (see Section 2.5.2.1).
+
+   All attributes of an entry must have distinct attribute descriptions.
+
+2.5.1.  Attribute Types
+
+   An attribute type governs whether the attribute can have multiple
+   values, the syntax and matching rules used to construct and compare
+   values of that attribute, and other functions.
+
+
+
+Zeilenga                    Standards Track                    [Page 12]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   If no equality matching is specified for the attribute type:
+
+      - the attribute (of the type) cannot be used for naming;
+      - when adding the attribute (or replacing all values), no two
+        values may be equivalent (see 2.2);
+      - individual values of a multi-valued attribute are not to be
+        independently added or deleted;
+      - attribute value assertions (such as matching in search filters
+        and comparisons) using values of such a type cannot be
+        performed.
+
+   Otherwise, the specified equality matching rule is to be used to
+   evaluate attribute value assertions concerning the attribute type.
+   The specified equality rule is to be transitive and commutative.
+
+   The attribute type indicates whether the attribute is a user
+   attribute or an operational attribute.  If operational, the attribute
+   type indicates the operational usage and whether or not the attribute
+   is modifiable by users.  Operational attributes are discussed in
+   Section 3.4.
+
+   An attribute type (a subtype) may derive from a more generic
+   attribute type (a direct supertype).  The following restrictions
+   apply to subtyping:
+
+      - a subtype must have the same usage as its direct supertype,
+      - a subtype's syntax must be the same, or a refinement of, its
+        supertype's syntax, and
+      - a subtype must be collective [RFC3671] if its supertype is
+        collective.
+
+   An attribute description consisting of a subtype and no options is
+   said to be the direct description subtype of the attribute
+   description consisting of the subtype's direct supertype and no
+   options.
+
+   Each attribute type is identified by an object identifier (OID) and,
+   optionally, one or more short names (descriptors).
+
+2.5.2.  Attribute Options
+
+   There are multiple kinds of attribute description options.  The LDAP
+   technical specification details one kind: tagging options.
+
+   Not all options can be associated with attributes held in the
+   directory.  Tagging options can be.
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 13]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   Not all options can be used in conjunction with all attribute types.
+   In such cases, the attribute description is to be treated as
+   unrecognized.
+
+   An attribute description that contains mutually exclusive options
+   shall be treated as unrecognized.  That is, "cn;x-bar;x-foo", where
+   "x-foo" and "x-bar" are mutually exclusive, is to be treated as
+   unrecognized.
+
+   Other kinds of options may be specified in future documents.  These
+   documents must detail how new kinds of options they define relate to
+   tagging options.  In particular, these documents must detail whether
+   or not new kinds of options can be associated with attributes held in
+   the directory, how new kinds of options affect transfer of attribute
+   values, and how new kinds of options are treated in attribute
+   description hierarchies.
+
+   Options are represented as short, case-insensitive textual strings
+   conforming to the <option> production defined in Section 2.5 of this
+   document.
+
+   Procedures for registering options are detailed in BCP 64, RFC 4520
+   [RFC4520].
+
+2.5.2.1.  Tagging Options
+
+   Attributes held in the directory can have attribute descriptions with
+   any number of tagging options.  Tagging options are never mutually
+   exclusive.
+
+   An attribute description with N tagging options is a direct
+   (description) subtype of all attribute descriptions of the same
+   attribute type and all but one of the N options.  If the attribute
+   type has a supertype, then the attribute description is also a direct
+   (description) subtype of the attribute description of the supertype
+   and the N tagging options.  That is, 'cn;lang-de;lang-en' is a direct
+   (description) subtype of 'cn;lang-de', 'cn;lang-en', and
+   'name;lang-de;lang-en' ('cn' is a subtype of 'name'; both are defined
+   in [RFC4519]).
+
+2.5.3.  Attribute Description Hierarchies
+
+   An attribute description can be the direct subtype of zero or more
+   other attribute descriptions as indicated by attribute type subtyping
+   (as described in Section 2.5.1) or attribute tagging option subtyping
+   (as described in Section 2.5.2.1).  These subtyping relationships are
+   used to form hierarchies of attribute descriptions and attributes.
+
+
+
+
+Zeilenga                    Standards Track                    [Page 14]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   As adapted from [X.501]:
+
+      Attribute hierarchies allow access to the DIB with varying degrees
+      of granularity.  This is achieved by allowing the value components
+      of attributes to be accessed by using either their specific
+      attribute description (a direct reference to the attribute) or a
+      more generic attribute description (an indirect reference).
+
+      Semantically related attributes may be placed in a hierarchical
+      relationship, the more specialized being placed subordinate to the
+      more generalized.  Searching for or retrieving attributes and
+      their values is made easier by quoting the more generalized
+      attribute description; a filter item so specified is evaluated for
+      the more specialized descriptions as well as for the quoted
+      description.
+
+      Where subordinate specialized descriptions are selected to be
+      returned as part of a search result these descriptions shall be
+      returned if available.  Where the more general descriptions are
+      selected to be returned as part of a search result both the
+      general and the specialized descriptions shall be returned, if
+      available.  An attribute value shall always be returned as a value
+      of its own attribute description.
+
+      All of the attribute descriptions in an attribute hierarchy are
+      treated as distinct and unrelated descriptions for user
+      modification of entry content.
+
+      An attribute value stored in an object or alias entry is of
+      precisely one attribute description.  The description is indicated
+      when the value is originally added to the entry.
+
+   For the purpose of subschema administration of the entry, a
+   specification that an attribute is required is fulfilled if the entry
+   contains a value of an attribute description belonging to an
+   attribute hierarchy where the attribute type of that description is
+   the same as the required attribute's type.  That is, a "MUST name"
+   specification is fulfilled by 'name' or 'name;x-tag-option', but is
+   not fulfilled by 'CN' or 'CN;x-tag-option' (even though 'CN' is a
+   subtype of 'name').  Likewise, an entry may contain a value of an
+   attribute description belonging to an attribute hierarchy where the
+   attribute type of that description is either explicitly included in
+   the definition of an object class to which the entry belongs or
+   allowed by the DIT content rule applicable to that entry.  That is,
+   'name' and 'name;x-tag-option' are allowed by "MAY name" (or by "MUST
+   name"), but 'CN' and 'CN;x-tag-option' are not allowed by "MAY name"
+   (or by "MUST name").
+
+
+
+
+Zeilenga                    Standards Track                    [Page 15]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   For the purposes of other policy administration, unless stated
+   otherwise in the specification of the particular administrative
+   model, all of the attribute descriptions in an attribute hierarchy
+   are treated as distinct and unrelated descriptions.
+
+2.6.  Alias Entries
+
+   As adapted from [X.501]:
+
+      An alias, or an alias name, for an object is an alternative name
+      for an object or object entry which is provided by the use of
+      alias entries.
+
+      Each alias entry contains, within the 'aliasedObjectName'
+      attribute (known as the 'aliasedEntryName' attribute in X.500), a
+      name of some object.  The distinguished name of the alias entry is
+      thus also a name for this object.
+
+          NOTE - The name within the 'aliasedObjectName' is said to be
+                 pointed to by the alias.  It does not have to be the
+                 distinguished name of any entry.
+
+      The conversion of an alias name to an object name is termed
+      (alias) dereferencing and comprises the systematic replacement of
+      alias names, where found within a purported name, by the value of
+      the corresponding 'aliasedObjectName' attribute.  The process may
+      require the examination of more than one alias entry.
+
+      Any particular entry in the DIT may have zero or more alias names.
+      It therefore follows that several alias entries may point to the
+      same entry.  An alias entry may point to an entry that is not a
+      leaf entry and may point to another alias entry.
+
+      An alias entry shall have no subordinates, so that an alias entry
+      is always a leaf entry.
+
+      Every alias entry shall belong to the 'alias' object class.
+
+   An entry with the 'alias' object class must also belong to an object
+   class (or classes), or be governed by a DIT content rule, which
+   allows suitable naming attributes to be present.
+
+   Example:
+
+      dn: cn=bar,dc=example,dc=com
+      objectClass: top
+      objectClass: alias
+      objectClass: extensibleObject
+
+
+
+Zeilenga                    Standards Track                    [Page 16]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+      cn: bar
+      aliasedObjectName: cn=foo,dc=example,dc=com
+
+2.6.1.  'alias' Object Class
+
+   Alias entries belong to the 'alias' object class.
+
+      ( 2.5.6.1 NAME 'alias'
+        SUP top STRUCTURAL
+        MUST aliasedObjectName )
+
+2.6.2.  'aliasedObjectName' Attribute Type
+
+   The 'aliasedObjectName' attribute holds the name of the entry an
+   alias points to.  The 'aliasedObjectName' attribute is known as the
+   'aliasedEntryName' attribute in X.500.
+
+      ( 2.5.4.1 NAME 'aliasedObjectName'
+        EQUALITY distinguishedNameMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
+        SINGLE-VALUE )
+
+   The 'distinguishedNameMatch' matching rule and the DistinguishedName
+   (1.3.6.1.4.1.1466.115.121.1.12) syntax are defined in [RFC4517].
+
+3.  Directory Administrative and Operational Information
+
+   This section discusses select aspects of the X.500 Directory
+   Administrative and Operational Information model [X.501].  LDAP
+   implementations MAY support other aspects of this model.
+
+3.1.  Subtrees
+
+   As defined in [X.501]:
+
+      A subtree is a collection of object and alias entries situated at
+      the vertices of a tree.  Subtrees do not contain subentries.  The
+      prefix sub, in subtree, emphasizes that the base (or root) vertex
+      of this tree is usually subordinate to the root of the DIT.
+
+      A subtree begins at some vertex and extends to some identifiable
+      lower boundary, possibly extending to leaves.  A subtree is always
+      defined within a context which implicitly bounds the subtree.  For
+      example, the vertex and lower boundaries of a subtree defining a
+      replicated area are bounded by a naming context.
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 17]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+3.2.  Subentries
+
+   A subentry is a "special sort of entry, known by the Directory, used
+   to hold information associated with a subtree or subtree refinement"
+   [X.501].  Subentries are used in Directory to hold for administrative
+   and operational purposes as defined in [X.501].  Their use in LDAP is
+   detailed in [RFC3672].
+
+   The term "(sub)entry" in this specification indicates that servers
+   implementing X.500(93) models are, in accordance with X.500(93) as
+   described in [RFC3672], to use a subentry and that other servers are
+   to use an object entry belonging to the appropriate auxiliary class
+   normally used with the subentry (e.g., 'subschema' for subschema
+   subentries) to mimic the subentry.  This object entry's RDN SHALL be
+   formed from a value of the 'cn' (commonName) attribute [RFC4519] (as
+   all subentries are named with 'cn').
+
+3.3.  The 'objectClass' attribute
+
+   Each entry in the DIT has an 'objectClass' attribute.
+
+      ( 2.5.4.0 NAME 'objectClass'
+        EQUALITY objectIdentifierMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
+
+   The 'objectIdentifierMatch' matching rule and the OBJECT IDENTIFIER
+   (1.3.6.1.4.1.1466.115.121.1.38) syntax are defined in [RFC4517].
+
+   The 'objectClass' attribute specifies the object classes of an entry,
+   which (among other things) are used in conjunction with the
+   controlling schema to determine the permitted attributes of an entry.
+   Values of this attribute can be modified by clients, but the
+   'objectClass' attribute cannot be removed.
+
+   Servers that follow X.500(93) models SHALL restrict modifications of
+   this attribute to prevent the basic structural class of the entry
+   from being changed.  That is, one cannot change a 'person' into a
+   'country'.
+
+   When creating an entry or adding an 'objectClass' value to an entry,
+   all superclasses of the named classes SHALL be implicitly added as
+   well if not already present.  That is, if the auxiliary class 'x-a'
+   is a subclass of the class 'x-b', adding 'x-a' to 'objectClass'
+   causes 'x-b' to be implicitly added (if is not already present).
+
+   Servers SHALL restrict modifications of this attribute to prevent
+   superclasses of remaining 'objectClass' values from being deleted.
+   That is, if the auxiliary class 'x-a' is a subclass of the auxiliary
+
+
+
+Zeilenga                    Standards Track                    [Page 18]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   class 'x-b' and the 'objectClass' attribute contains 'x-a' and 'x-b',
+   an attempt to delete only 'x-b' from the 'objectClass' attribute is
+   an error.
+
+3.4.  Operational Attributes
+
+   Some attributes, termed operational attributes, are used or
+   maintained by servers for administrative and operational purposes.
+   As stated in [X.501]: "There are three varieties of operational
+   attributes:  Directory operational attributes, DSA-shared operational
+   attributes, and DSA-specific operational attributes".
+
+   A directory operational attribute is used to represent operational
+   and/or administrative information in the Directory Information Model.
+   This includes operational attributes maintained by the server (e.g.,
+   'createTimestamp') as well as operational attributes that hold values
+   administrated by the user (e.g., 'ditContentRules').
+
+   A DSA-shared operational attribute is used to represent information
+   of the DSA Information Model that is shared between DSAs.
+
+   A DSA-specific operational attribute is used to represent information
+   of the DSA Information Model that is specific to the DSA (though, in
+   some cases, may be derived from information shared between DSAs;
+   e.g., 'namingContexts').
+
+   The DSA Information Model operational attributes are detailed in
+   [X.501].
+
+   Operational attributes are not normally visible.  They are not
+   returned in search results unless explicitly requested by name.
+
+   Not all operational attributes are user modifiable.
+
+   Entries may contain, among others, the following operational
+   attributes:
+
+      - creatorsName: the Distinguished Name of the user who added this
+          entry to the directory,
+
+      - createTimestamp: the time this entry was added to the directory,
+
+      - modifiersName: the Distinguished Name of the user who last
+          modified this entry, and
+
+      - modifyTimestamp: the time this entry was last modified.
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 19]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   Servers SHOULD maintain the 'creatorsName', 'createTimestamp',
+   'modifiersName', and 'modifyTimestamp' attributes for all entries of
+   the DIT.
+
+3.4.1.  'creatorsName'
+
+   This attribute appears in entries that were added using the protocol
+   (e.g., using the Add operation).  The value is the distinguished name
+   of the creator.
+
+      ( 2.5.18.3 NAME 'creatorsName'
+        EQUALITY distinguishedNameMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
+        SINGLE-VALUE NO-USER-MODIFICATION
+        USAGE directoryOperation )
+
+   The 'distinguishedNameMatch' matching rule and the DistinguishedName
+   (1.3.6.1.4.1.1466.115.121.1.12) syntax are defined in [RFC4517].
+
+3.4.2.  'createTimestamp'
+
+   This attribute appears in entries that were added using the protocol
+   (e.g., using the Add operation).  The value is the time the entry was
+   added.
+
+      ( 2.5.18.1 NAME 'createTimestamp'
+        EQUALITY generalizedTimeMatch
+        ORDERING generalizedTimeOrderingMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
+        SINGLE-VALUE NO-USER-MODIFICATION
+        USAGE directoryOperation )
+
+   The 'generalizedTimeMatch' and 'generalizedTimeOrderingMatch'
+   matching rules and the GeneralizedTime
+   (1.3.6.1.4.1.1466.115.121.1.24) syntax are defined in [RFC4517].
+
+3.4.3.  'modifiersName'
+
+   This attribute appears in entries that have been modified using the
+   protocol (e.g., using the Modify operation).  The value is the
+   distinguished name of the last modifier.
+
+      ( 2.5.18.4 NAME 'modifiersName'
+        EQUALITY distinguishedNameMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
+        SINGLE-VALUE NO-USER-MODIFICATION
+        USAGE directoryOperation )
+
+
+
+
+Zeilenga                    Standards Track                    [Page 20]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   The 'distinguishedNameMatch' matching rule and the DistinguishedName
+   (1.3.6.1.4.1.1466.115.121.1.12) syntax are defined in [RFC4517].
+
+3.4.4.  'modifyTimestamp'
+
+   This attribute appears in entries that have been modified using the
+   protocol (e.g., using the Modify operation).  The value is the time
+   the entry was last modified.
+
+      ( 2.5.18.2 NAME 'modifyTimestamp'
+        EQUALITY generalizedTimeMatch
+        ORDERING generalizedTimeOrderingMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
+        SINGLE-VALUE NO-USER-MODIFICATION
+        USAGE directoryOperation )
+
+   The 'generalizedTimeMatch' and 'generalizedTimeOrderingMatch'
+   matching rules and the GeneralizedTime
+   (1.3.6.1.4.1.1466.115.121.1.24) syntax are defined in [RFC4517].
+
+3.4.5.  'structuralObjectClass'
+
+   This attribute indicates the structural object class of the entry.
+
+      ( 2.5.21.9 NAME 'structuralObjectClass'
+        EQUALITY objectIdentifierMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
+        SINGLE-VALUE NO-USER-MODIFICATION
+        USAGE directoryOperation )
+
+   The 'objectIdentifierMatch' matching rule and OBJECT IDENTIFIER
+   (1.3.6.1.4.1.1466.115.121.1.38) syntax is defined in [RFC4517].
+
+3.4.6.  'governingStructureRule'
+
+   This attribute indicates the structure rule governing the entry.
+
+      ( 2.5.21.10 NAME 'governingStructureRule'
+        EQUALITY integerMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+        SINGLE-VALUE NO-USER-MODIFICATION
+        USAGE directoryOperation )
+
+   The 'integerMatch' matching rule and INTEGER
+   (1.3.6.1.4.1.1466.115.121.1.27) syntax is defined in [RFC4517].
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 21]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+4.  Directory Schema
+
+   As defined in [X.501]:
+
+      The Directory Schema is a set of definitions and constraints
+      concerning the structure of the DIT, the possible ways entries are
+      named, the information that can be held in an entry, the
+      attributes used to represent that information and their
+      organization into hierarchies to facilitate search and retrieval
+      of the information and the ways in which values of attributes may
+      be matched in attribute value and matching rule assertions.
+
+      NOTE 1 - The schema enables the Directory system to, for example:
+
+      - prevent the creation of subordinate entries of the wrong
+        object-class (e.g., a country as a subordinate of a person);
+
+      - prevent the addition of attribute-types to an entry
+        inappropriate to the object-class (e.g., a serial number to a
+        person's entry);
+
+      - prevent the addition of an attribute value of a syntax not
+        matching that defined for the attribute-type (e.g., a printable
+        string to a bit string).
+
+      Formally, the Directory Schema comprises a set of:
+
+      a) Name Form definitions that define primitive naming relations
+         for structural object classes;
+
+      b) DIT Structure Rule definitions that define the names that
+         entries may have and the ways in which the entries may be
+         related to one another in the DIT;
+
+      c) DIT Content Rule definitions that extend the specification of
+         allowable attributes for entries beyond those indicated by the
+         structural object classes of the entries;
+
+      d) Object Class definitions that define the basic set of mandatory
+         and optional attributes that shall be present, and may be
+         present, respectively, in an entry of a given class, and which
+         indicate the kind of object class that is being defined;
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 22]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+      e) Attribute Type definitions that identify the object identifier
+         by which an attribute is known, its syntax, associated matching
+         rules, whether it is an operational attribute and if so its
+         type, whether it is a collective attribute, whether it is
+         permitted to have multiple values and whether or not it is
+         derived from another attribute type;
+
+      f) Matching Rule definitions that define matching rules.
+
+      And in LDAP:
+
+      g) LDAP Syntax definitions that define encodings used in LDAP.
+
+4.1.  Schema Definitions
+
+   Schema definitions in this section are described using ABNF and rely
+   on the common productions specified in Section 1.2 as well as these:
+
+      noidlen = numericoid [ LCURLY len RCURLY ]
+      len = number
+
+      oids = oid / ( LPAREN WSP oidlist WSP RPAREN )
+      oidlist = oid *( WSP DOLLAR WSP oid )
+
+      extensions = *( SP xstring SP qdstrings )
+      xstring = "X" HYPHEN 1*( ALPHA / HYPHEN / USCORE )
+
+      qdescrs = qdescr / ( LPAREN WSP qdescrlist WSP RPAREN )
+      qdescrlist = [ qdescr *( SP qdescr ) ]
+      qdescr = SQUOTE descr SQUOTE
+
+      qdstrings = qdstring / ( LPAREN WSP qdstringlist WSP RPAREN )
+      qdstringlist = [ qdstring *( SP qdstring ) ]
+      qdstring = SQUOTE dstring SQUOTE
+      dstring = 1*( QS / QQ / QUTF8 )   ; escaped UTF-8 string
+
+      QQ =  ESC %x32 %x37 ; "\27"
+      QS =  ESC %x35 ( %x43 / %x63 ) ; "\5C" / "\5c"
+
+      ; Any UTF-8 encoded Unicode character
+      ; except %x27 ("\'") and %x5C ("\")
+      QUTF8    = QUTF1 / UTFMB
+
+      ; Any ASCII character except %x27 ("\'") and %x5C ("\")
+      QUTF1    = %x00-26 / %x28-5B / %x5D-7F
+
+   Schema definitions in this section also share a number of common
+   terms.
+
+
+
+Zeilenga                    Standards Track                    [Page 23]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   The NAME field provides a set of short names (descriptors) that are
+   to be used as aliases for the OID.
+
+   The DESC field optionally allows a descriptive string to be provided
+   by the directory administrator and/or implementor.  While
+   specifications may suggest a descriptive string, there is no
+   requirement that the suggested (or any) descriptive string be used.
+
+   The OBSOLETE field, if present, indicates the element is not active.
+
+   Implementors should note that future versions of this document may
+   expand these definitions to include additional terms.  Terms whose
+   identifier begins with "X-" are reserved for private experiments and
+   are followed by <SP> and <qdstrings> tokens.
+
+4.1.1.  Object Class Definitions
+
+   Object Class definitions are written according to the ABNF:
+
+     ObjectClassDescription = LPAREN WSP
+         numericoid                 ; object identifier
+         [ SP "NAME" SP qdescrs ]   ; short names (descriptors)
+         [ SP "DESC" SP qdstring ]  ; description
+         [ SP "OBSOLETE" ]          ; not active
+         [ SP "SUP" SP oids ]       ; superior object classes
+         [ SP kind ]                ; kind of class
+         [ SP "MUST" SP oids ]      ; attribute types
+         [ SP "MAY" SP oids ]       ; attribute types
+         extensions WSP RPAREN
+
+     kind = "ABSTRACT" / "STRUCTURAL" / "AUXILIARY"
+
+   where:
+     <numericoid> is object identifier assigned to this object class;
+     NAME <qdescrs> are short names (descriptors) identifying this
+         object class;
+     DESC <qdstring> is a short descriptive string;
+     OBSOLETE indicates this object class is not active;
+     SUP <oids> specifies the direct superclasses of this object class;
+     the kind of object class is indicated by one of ABSTRACT,
+         STRUCTURAL, or AUXILIARY (the default is STRUCTURAL);
+     MUST and MAY specify the sets of required and allowed attribute
+         types, respectively; and
+     <extensions> describe extensions.
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 24]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+4.1.2.  Attribute Types
+
+   Attribute Type definitions are written according to the ABNF:
+
+     AttributeTypeDescription = LPAREN WSP
+         numericoid                    ; object identifier
+         [ SP "NAME" SP qdescrs ]      ; short names (descriptors)
+         [ SP "DESC" SP qdstring ]     ; description
+         [ SP "OBSOLETE" ]             ; not active
+         [ SP "SUP" SP oid ]           ; supertype
+         [ SP "EQUALITY" SP oid ]      ; equality matching rule
+         [ SP "ORDERING" SP oid ]      ; ordering matching rule
+         [ SP "SUBSTR" SP oid ]        ; substrings matching rule
+         [ SP "SYNTAX" SP noidlen ]    ; value syntax
+         [ SP "SINGLE-VALUE" ]         ; single-value
+         [ SP "COLLECTIVE" ]           ; collective
+         [ SP "NO-USER-MODIFICATION" ] ; not user modifiable
+         [ SP "USAGE" SP usage ]       ; usage
+         extensions WSP RPAREN         ; extensions
+
+     usage = "userApplications"     /  ; user
+             "directoryOperation"   /  ; directory operational
+             "distributedOperation" /  ; DSA-shared operational
+             "dSAOperation"            ; DSA-specific operational
+
+   where:
+     <numericoid> is object identifier assigned to this attribute type;
+     NAME <qdescrs> are short names (descriptors) identifying this
+         attribute type;
+     DESC <qdstring> is a short descriptive string;
+     OBSOLETE indicates this attribute type is not active;
+     SUP oid specifies the direct supertype of this type;
+     EQUALITY, ORDERING, and SUBSTR provide the oid of the equality,
+         ordering, and substrings matching rules, respectively;
+     SYNTAX identifies value syntax by object identifier and may suggest
+         a minimum upper bound;
+     SINGLE-VALUE indicates attributes of this type are restricted to a
+         single value;
+     COLLECTIVE indicates this attribute type is collective
+         [X.501][RFC3671];
+     NO-USER-MODIFICATION indicates this attribute type is not user
+         modifiable;
+     USAGE indicates the application of this attribute type; and
+     <extensions> describe extensions.
+
+   Each attribute type description must contain at least one of the SUP
+   or SYNTAX fields.  If no SYNTAX field is provided, the attribute type
+   description takes its value from the supertype.
+
+
+
+Zeilenga                    Standards Track                    [Page 25]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   If SUP field is provided, the EQUALITY, ORDERING, and SUBSTRING
+   fields, if not specified, take their value from the supertype.
+
+   Usage of userApplications, the default, indicates that attributes of
+   this type represent user information.  That is, they are user
+   attributes.
+
+   A usage of directoryOperation, distributedOperation, or dSAOperation
+   indicates that attributes of this type represent operational and/or
+   administrative information.  That is, they are operational
+   attributes.
+
+   directoryOperation usage indicates that the attribute of this type is
+   a directory operational attribute.  distributedOperation usage
+   indicates that the attribute of this type is a DSA-shared usage
+   operational attribute.  dSAOperation usage indicates that the
+   attribute of this type is a DSA-specific operational attribute.
+
+   COLLECTIVE requires usage userApplications.  Use of collective
+   attribute types in LDAP is discussed in [RFC3671].
+
+   NO-USER-MODIFICATION requires an operational usage.
+
+   Note that the <AttributeTypeDescription> does not list the matching
+   rules that can be used with that attribute type in an extensibleMatch
+   search filter [RFC4511].  This is done using the 'matchingRuleUse'
+   attribute described in Section 4.1.4.
+
+   This document refines the schema description of X.501 by requiring
+   that the SYNTAX field in an <AttributeTypeDescription> be a string
+   representation of an object identifier for the LDAP string syntax
+   definition, with an optional indication of the suggested minimum
+   bound of a value of this attribute.
+
+   A suggested minimum upper bound on the number of characters in a
+   value with a string-based syntax, or the number of bytes in a value
+   for all other syntaxes, may be indicated by appending this bound
+   count inside of curly braces following the syntax's OBJECT IDENTIFIER
+   in an Attribute Type Description.  This bound is not part of the
+   syntax name itself.  For instance, "1.3.6.4.1.1466.0{64}" suggests
+   that server implementations should allow a string to be 64 characters
+   long, although they may allow longer strings.  Note that a single
+   character of the Directory String syntax may be encoded in more than
+   one octet since UTF-8 [RFC3629] is a variable-length encoding.
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 26]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+4.1.3.  Matching Rules
+
+   Matching rules are used in performance of attribute value assertions,
+   such as in performance of a Compare operation.  They are also used in
+   evaluating search filters, determining which individual values are to
+   be added or deleted during performance of a Modify operation, and in
+   comparing distinguished names.
+
+   Each matching rule is identified by an object identifier (OID) and,
+   optionally, one or more short names (descriptors).
+
+   Matching rule definitions are written according to the ABNF:
+
+     MatchingRuleDescription = LPAREN WSP
+         numericoid                 ; object identifier
+         [ SP "NAME" SP qdescrs ]   ; short names (descriptors)
+         [ SP "DESC" SP qdstring ]  ; description
+         [ SP "OBSOLETE" ]          ; not active
+         SP "SYNTAX" SP numericoid  ; assertion syntax
+         extensions WSP RPAREN      ; extensions
+
+   where:
+     <numericoid> is object identifier assigned to this matching rule;
+     NAME <qdescrs> are short names (descriptors) identifying this
+         matching rule;
+     DESC <qdstring> is a short descriptive string;
+     OBSOLETE indicates this matching rule is not active;
+     SYNTAX identifies the assertion syntax (the syntax of the assertion
+         value) by object identifier; and
+     <extensions> describe extensions.
+
+4.1.4.  Matching Rule Uses
+
+   A matching rule use lists the attribute types that are suitable for
+   use with an extensibleMatch search filter.
+
+   Matching rule use descriptions are written according to the following
+   ABNF:
+
+     MatchingRuleUseDescription = LPAREN WSP
+         numericoid                 ; object identifier
+         [ SP "NAME" SP qdescrs ]   ; short names (descriptors)
+         [ SP "DESC" SP qdstring ]  ; description
+         [ SP "OBSOLETE" ]          ; not active
+         SP "APPLIES" SP oids       ; attribute types
+         extensions WSP RPAREN      ; extensions
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 27]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   where:
+     <numericoid> is the object identifier of the matching rule
+         associated with this matching rule use description;
+     NAME <qdescrs> are short names (descriptors) identifying this
+         matching rule use;
+     DESC <qdstring> is a short descriptive string;
+     OBSOLETE indicates this matching rule use is not active;
+     APPLIES provides a list of attribute types the matching rule
+         applies to; and
+     <extensions> describe extensions.
+
+4.1.5.  LDAP Syntaxes
+
+   LDAP Syntaxes of (attribute and assertion) values are described in
+   terms of ASN.1 [X.680] and, optionally, have an octet string encoding
+   known as the LDAP-specific encoding.  Commonly, the LDAP-specific
+   encoding is constrained to a string of Unicode [Unicode] characters
+   in UTF-8 [RFC3629] form.
+
+   Each LDAP syntax is identified by an object identifier (OID).
+
+   LDAP syntax definitions are written according to the ABNF:
+
+     SyntaxDescription = LPAREN WSP
+         numericoid                 ; object identifier
+         [ SP "DESC" SP qdstring ]  ; description
+         extensions WSP RPAREN      ; extensions
+
+   where:
+     <numericoid> is the object identifier assigned to this LDAP syntax;
+     DESC <qdstring> is a short descriptive string; and
+     <extensions> describe extensions.
+
+4.1.6.  DIT Content Rules
+
+   A DIT content rule is a "rule governing the content of entries of a
+   particular structural object class" [X.501].
+
+   For DIT entries of a particular structural object class, a DIT
+   content rule specifies which auxiliary object classes the entries are
+   allowed to belong to and which additional attributes (by type) are
+   required, allowed, or not allowed to appear in the entries.
+
+   The list of precluded attributes cannot include any attribute listed
+   as mandatory in the rule, the structural object class, or any of the
+   allowed auxiliary object classes.
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 28]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   Each content rule is identified by the object identifier, as well as
+   any short names (descriptors), of the structural object class it
+   applies to.
+
+   An entry may only belong to auxiliary object classes listed in the
+   governing content rule.
+
+   An entry must contain all attributes required by the object classes
+   the entry belongs to as well as all attributes required by the
+   governing content rule.
+
+   An entry may contain any non-precluded attributes allowed by the
+   object classes the entry belongs to as well as all attributes allowed
+   by the governing content rule.
+
+   An entry cannot include any attribute precluded by the governing
+   content rule.
+
+   An entry is governed by (if present and active in the subschema) the
+   DIT content rule that applies to the structural object class of the
+   entry (see Section 2.4.2).  If no active rule is present for the
+   entry's structural object class, the entry's content is governed by
+   the structural object class (and possibly other aspects of user and
+   system schema).  DIT content rules for superclasses of the structural
+   object class of an entry are not applicable to that entry.
+
+   DIT content rule descriptions are written according to the ABNF:
+
+     DITContentRuleDescription = LPAREN WSP
+         numericoid                 ; object identifier
+         [ SP "NAME" SP qdescrs ]   ; short names (descriptors)
+         [ SP "DESC" SP qdstring ]  ; description
+         [ SP "OBSOLETE" ]          ; not active
+         [ SP "AUX" SP oids ]       ; auxiliary object classes
+         [ SP "MUST" SP oids ]      ; attribute types
+         [ SP "MAY" SP oids ]       ; attribute types
+         [ SP "NOT" SP oids ]       ; attribute types
+         extensions WSP RPAREN      ; extensions
+
+   where:
+     <numericoid> is the object identifier of the structural object
+         class associated with this DIT content rule;
+     NAME <qdescrs> are short names (descriptors) identifying this DIT
+         content rule;
+     DESC <qdstring> is a short descriptive string;
+     OBSOLETE indicates this DIT content rule use is not active;
+     AUX specifies a list of auxiliary object classes that entries
+         subject to this DIT content rule may belong to;
+
+
+
+Zeilenga                    Standards Track                    [Page 29]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+     MUST, MAY, and NOT specify lists of attribute types that are
+         required, allowed, or precluded, respectively, from appearing
+         in entries subject to this DIT content rule; and
+     <extensions> describe extensions.
+
+4.1.7.  DIT Structure Rules and Name Forms
+
+   It is sometimes desirable to regulate where object and alias entries
+   can be placed in the DIT and how they can be named based upon their
+   structural object class.
+
+4.1.7.1.  DIT Structure Rules
+
+   A DIT structure rule is a "rule governing the structure of the DIT by
+   specifying a permitted superior to subordinate entry relationship.  A
+   structure rule relates a name form, and therefore a structural object
+   class, to superior structure rules.  This permits entries of the
+   structural object class identified by the name form to exist in the
+   DIT as subordinates to entries governed by the indicated superior
+   structure rules" [X.501].
+
+   DIT structure rule descriptions are written according to the ABNF:
+
+     DITStructureRuleDescription = LPAREN WSP
+         ruleid                     ; rule identifier
+         [ SP "NAME" SP qdescrs ]   ; short names (descriptors)
+         [ SP "DESC" SP qdstring ]  ; description
+         [ SP "OBSOLETE" ]          ; not active
+         SP "FORM" SP oid           ; NameForm
+         [ SP "SUP" ruleids ]       ; superior rules
+         extensions WSP RPAREN      ; extensions
+
+     ruleids = ruleid / ( LPAREN WSP ruleidlist WSP RPAREN )
+     ruleidlist = ruleid *( SP ruleid )
+     ruleid = number
+
+   where:
+     <ruleid> is the rule identifier of this DIT structure rule;
+     NAME <qdescrs> are short names (descriptors) identifying this DIT
+         structure rule;
+     DESC <qdstring> is a short descriptive string;
+     OBSOLETE indicates this DIT structure rule use is not active;
+     FORM is specifies the name form associated with this DIT structure
+         rule;
+     SUP identifies superior rules (by rule id); and
+     <extensions> describe extensions.
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 30]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   If no superior rules are identified, the DIT structure rule applies
+   to an autonomous administrative point (e.g., the root vertex of the
+   subtree controlled by the subschema) [X.501].
+
+4.1.7.2.  Name Forms
+
+   A name form "specifies a permissible RDN for entries of a particular
+   structural object class.  A name form identifies a named object class
+   and one or more attribute types to be used for naming (i.e., for the
+   RDN).  Name forms are primitive pieces of specification used in the
+   definition of DIT structure rules" [X.501].
+
+   Each name form indicates the structural object class to be named, a
+   set of required attribute types, and a set of allowed attribute
+   types.  A particular attribute type cannot be in both sets.
+
+   Entries governed by the form must be named using a value from each
+   required attribute type and zero or more values from the allowed
+   attribute types.
+
+   Each name form is identified by an object identifier (OID) and,
+   optionally, one or more short names (descriptors).
+
+   Name form descriptions are written according to the ABNF:
+
+     NameFormDescription = LPAREN WSP
+         numericoid                 ; object identifier
+         [ SP "NAME" SP qdescrs ]   ; short names (descriptors)
+         [ SP "DESC" SP qdstring ]  ; description
+         [ SP "OBSOLETE" ]          ; not active
+         SP "OC" SP oid             ; structural object class
+         SP "MUST" SP oids          ; attribute types
+         [ SP "MAY" SP oids ]       ; attribute types
+         extensions WSP RPAREN      ; extensions
+
+   where:
+     <numericoid> is object identifier that identifies this name form;
+     NAME <qdescrs> are short names (descriptors) identifying this name
+         form;
+     DESC <qdstring> is a short descriptive string;
+     OBSOLETE indicates this name form is not active;
+     OC identifies the structural object class this rule applies to,
+     MUST and MAY specify the sets of required and allowed,
+         respectively, naming attributes for this name form; and
+     <extensions> describe extensions.
+
+   All attribute types in the required ("MUST") and allowed ("MAY")
+   lists shall be different.
+
+
+
+Zeilenga                    Standards Track                    [Page 31]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+4.2.  Subschema Subentries
+
+   Subschema (sub)entries are used for administering information about
+   the directory schema.  A single subschema (sub)entry contains all
+   schema definitions (see Section 4.1) used by entries in a particular
+   part of the directory tree.
+
+   Servers that follow X.500(93) models SHOULD implement subschema using
+   the X.500 subschema mechanisms (as detailed in Section 12 of
+   [X.501]), so these are not ordinary object entries but subentries
+   (see Section 3.2).  LDAP clients SHOULD NOT assume that servers
+   implement any of the other aspects of X.500 subschema.
+
+   Servers MAY allow subschema modification.  Procedures for subschema
+   modification are discussed in Section 14.5 of [X.501].
+
+   A server that masters entries and permits clients to modify these
+   entries SHALL implement and provide access to these subschema
+   (sub)entries including providing a 'subschemaSubentry' attribute in
+   each modifiable entry.  This is so clients may discover the
+   attributes and object classes that are permitted to be present.  It
+   is strongly RECOMMENDED that all other servers implement this as
+   well.
+
+   The value of the 'subschemaSubentry' attribute is the name of the
+   subschema (sub)entry holding the subschema controlling the entry.
+
+      ( 2.5.18.10 NAME 'subschemaSubentry'
+        EQUALITY distinguishedNameMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
+        SINGLE-VALUE NO-USER-MODIFICATION
+        USAGE directoryOperation )
+
+   The 'distinguishedNameMatch' matching rule and the DistinguishedName
+   (1.3.6.1.4.1.1466.115.121.1.12) syntax are defined in [RFC4517].
+
+   Subschema is held in (sub)entries belonging to the subschema
+   auxiliary object class.
+
+      ( 2.5.20.1 NAME 'subschema' AUXILIARY
+        MAY ( dITStructureRules $ nameForms $ ditContentRules $
+          objectClasses $ attributeTypes $ matchingRules $
+          matchingRuleUse ) )
+
+   The 'ldapSyntaxes' operational attribute may also be present in
+   subschema entries.
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 32]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   Servers MAY provide additional attributes (described in other
+   documents) in subschema (sub)entries.
+
+   Servers SHOULD provide the attributes 'createTimestamp' and
+   'modifyTimestamp' in subschema (sub)entries, in order to allow
+   clients to maintain their caches of schema information.
+
+   The following subsections provide attribute type definitions for each
+   of schema definition attribute types.
+
+4.2.1.  'objectClasses'
+
+   This attribute holds definitions of object classes.
+
+      ( 2.5.21.6 NAME 'objectClasses'
+        EQUALITY objectIdentifierFirstComponentMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.37
+        USAGE directoryOperation )
+
+   The 'objectIdentifierFirstComponentMatch' matching rule and the
+   ObjectClassDescription (1.3.6.1.4.1.1466.115.121.1.37) syntax are
+   defined in [RFC4517].
+
+4.2.2.  'attributeTypes'
+
+   This attribute holds definitions of attribute types.
+
+      ( 2.5.21.5 NAME 'attributeTypes'
+        EQUALITY objectIdentifierFirstComponentMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.3
+        USAGE directoryOperation )
+
+   The 'objectIdentifierFirstComponentMatch' matching rule and the
+   AttributeTypeDescription (1.3.6.1.4.1.1466.115.121.1.3) syntax are
+   defined in [RFC4517].
+
+4.2.3.  'matchingRules'
+
+   This attribute holds definitions of matching rules.
+
+      ( 2.5.21.4 NAME 'matchingRules'
+        EQUALITY objectIdentifierFirstComponentMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.30
+        USAGE directoryOperation )
+
+   The 'objectIdentifierFirstComponentMatch' matching rule and the
+   MatchingRuleDescription (1.3.6.1.4.1.1466.115.121.1.30) syntax are
+   defined in [RFC4517].
+
+
+
+Zeilenga                    Standards Track                    [Page 33]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+4.2.4 'matchingRuleUse'
+
+   This attribute holds definitions of matching rule uses.
+
+      ( 2.5.21.8 NAME 'matchingRuleUse'
+        EQUALITY objectIdentifierFirstComponentMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.31
+        USAGE directoryOperation )
+
+   The 'objectIdentifierFirstComponentMatch' matching rule and the
+   MatchingRuleUseDescription (1.3.6.1.4.1.1466.115.121.1.31) syntax are
+   defined in [RFC4517].
+
+4.2.5.  'ldapSyntaxes'
+
+   This attribute holds definitions of LDAP syntaxes.
+
+      ( 1.3.6.1.4.1.1466.101.120.16 NAME 'ldapSyntaxes'
+        EQUALITY objectIdentifierFirstComponentMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.54
+        USAGE directoryOperation )
+
+   The 'objectIdentifierFirstComponentMatch' matching rule and the
+   SyntaxDescription (1.3.6.1.4.1.1466.115.121.1.54) syntax are defined
+   in [RFC4517].
+
+4.2.6.  'dITContentRules'
+
+   This attribute lists DIT Content Rules that are present in the
+   subschema.
+
+      ( 2.5.21.2 NAME 'dITContentRules'
+        EQUALITY objectIdentifierFirstComponentMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.16
+        USAGE directoryOperation )
+
+   The 'objectIdentifierFirstComponentMatch' matching rule and the
+   DITContentRuleDescription (1.3.6.1.4.1.1466.115.121.1.16) syntax are
+   defined in [RFC4517].
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 34]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+4.2.7.  'dITStructureRules'
+
+   This attribute lists DIT Structure Rules that are present in the
+   subschema.
+
+      ( 2.5.21.1 NAME 'dITStructureRules'
+        EQUALITY integerFirstComponentMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.17
+        USAGE directoryOperation )
+
+   The 'integerFirstComponentMatch' matching rule and the
+   DITStructureRuleDescription (1.3.6.1.4.1.1466.115.121.1.17) syntax
+   are defined in [RFC4517].
+
+4.2.8 'nameForms'
+
+   This attribute lists Name Forms that are in force.
+
+      ( 2.5.21.7 NAME 'nameForms'
+        EQUALITY objectIdentifierFirstComponentMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.35
+        USAGE directoryOperation )
+
+   The 'objectIdentifierFirstComponentMatch' matching rule and the
+   NameFormDescription (1.3.6.1.4.1.1466.115.121.1.35) syntax are
+   defined in [RFC4517].
+
+4.3.  'extensibleObject' object class
+
+   The 'extensibleObject' auxiliary object class allows entries that
+   belong to it to hold any user attribute.  The set of allowed
+   attribute types of this object class is implicitly the set of all
+   attribute types of userApplications usage.
+
+      ( 1.3.6.1.4.1.1466.101.120.111 NAME 'extensibleObject'
+        SUP top AUXILIARY )
+
+   The mandatory attributes of the other object classes of this entry
+   are still required to be present, and any precluded attributes are
+   still not allowed to be present.
+
+4.4.  Subschema Discovery
+
+   To discover the DN of the subschema (sub)entry holding the subschema
+   controlling a particular entry, a client reads that entry's
+   'subschemaSubentry' operational attribute.  To read schema attributes
+   from the subschema (sub)entry, clients MUST issue a Search operation
+   [RFC4511] where baseObject is the DN of the subschema (sub)entry,
+
+
+
+Zeilenga                    Standards Track                    [Page 35]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   scope is baseObject, filter is "(objectClass=subschema)" [RFC4515],
+   and the attributes field lists the names of the desired schema
+   attributes (as they are operational).  Note: the
+   "(objectClass=subschema)" filter allows LDAP servers that gateway to
+   X.500 to detect that subentry information is being requested.
+
+   Clients SHOULD NOT assume that a published subschema is complete,
+   that the server supports all of the schema elements it publishes, or
+   that the server does not support an unpublished element.
+
+5.  DSA (Server) Informational Model
+
+   The LDAP protocol assumes there are one or more servers that jointly
+   provide access to a Directory Information Tree (DIT).  The server
+   holding the original information is called the "master" (for that
+   information).  Servers that hold copies of the original information
+   are referred to as "shadowing" or "caching" servers.
+
+
+   As defined in [X.501]:
+
+      context prefix: The sequence of RDNs leading from the Root of the
+          DIT to the initial vertex of a naming context; corresponds to
+          the distinguished name of that vertex.
+
+      naming context: A subtree of entries held in a single master DSA.
+
+   That is, a naming context is the largest collection of entries,
+   starting at an entry that is mastered by a particular server, and
+   including all its subordinates and their subordinates, down to the
+   entries that are mastered by different servers.  The context prefix
+   is the name of the initial entry.
+
+   The root of the DIT is a DSA-specific Entry (DSE) and not part of any
+   naming context (or any subtree); each server has different attribute
+   values in the root DSE.
+
+5.1.  Server-Specific Data Requirements
+
+   An LDAP server SHALL provide information about itself and other
+   information that is specific to each server.  This is represented as
+   a group of attributes located in the root DSE, which is named with
+   the DN with zero RDNs (whose [RFC4514] representation is as the
+   zero-length string).
+
+   These attributes are retrievable, subject to access control and other
+   restrictions, if a client performs a Search operation [RFC4511] with
+   an empty baseObject, scope of baseObject, the filter
+
+
+
+Zeilenga                    Standards Track                    [Page 36]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   "(objectClass=*)" [RFC4515], and the attributes field listing the
+   names of the desired attributes.  It is noted that root DSE
+   attributes are operational and, like other operational attributes,
+   are not returned in search requests unless requested by name.
+
+   The root DSE SHALL NOT be included if the client performs a subtree
+   search starting from the root.
+
+   Servers may allow clients to modify attributes of the root DSE, where
+   appropriate.
+
+   The following attributes of the root DSE are defined below.
+   Additional attributes may be defined in other documents.
+
+      - altServer: alternative servers;
+
+      - namingContexts: naming contexts;
+
+      - supportedControl: recognized LDAP controls;
+
+      - supportedExtension: recognized LDAP extended operations;
+
+      - supportedFeatures: recognized LDAP features;
+
+      - supportedLDAPVersion: LDAP versions supported; and
+
+      - supportedSASLMechanisms: recognized Simple Authentication and
+        Security Layers (SASL) [RFC4422] mechanisms.
+
+   The values provided for these attributes may depend on session-
+   specific and other factors.  For example, a server supporting the
+   SASL EXTERNAL mechanism might only list "EXTERNAL" when the client's
+   identity has been established by a lower level.  See [RFC4513].
+
+   The root DSE may also include a 'subschemaSubentry' attribute.  If it
+   does, the attribute refers to the subschema (sub)entry holding the
+   schema controlling the root DSE.  Clients SHOULD NOT assume that this
+   subschema (sub)entry controls other entries held by the server.
+   General subschema discovery procedures are provided in Section 4.4.
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 37]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+5.1.1.  'altServer'
+
+   The 'altServer' attribute lists URIs referring to alternative servers
+   that may be contacted when this server becomes unavailable.  URIs for
+   servers implementing the LDAP are written according to [RFC4516].
+   Other kinds of URIs may be provided.  If the server does not know of
+   any other servers that could be used, this attribute will be absent.
+   Clients may cache this information in case their preferred server
+   later becomes unavailable.
+
+      ( 1.3.6.1.4.1.1466.101.120.6 NAME 'altServer'
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+        USAGE dSAOperation )
+
+   The IA5String (1.3.6.1.4.1.1466.115.121.1.26) syntax is defined in
+   [RFC4517].
+
+5.1.2.  'namingContexts'
+
+   The 'namingContexts' attribute lists the context prefixes of the
+   naming contexts the server masters or shadows (in part or in whole).
+   If the server is a first-level DSA [X.501], it should list (in
+   addition) an empty string (indicating the root of the DIT).  If the
+   server does not master or shadow any information (e.g., it is an LDAP
+   gateway to a public X.500 directory) this attribute will be absent.
+   If the server believes it masters or shadows the entire directory,
+   the attribute will have a single value, and that value will be the
+   empty string (indicating the root of the DIT).
+
+   This attribute may be used, for example, to select a suitable entry
+   name for subsequent operations with this server.
+
+      ( 1.3.6.1.4.1.1466.101.120.5 NAME 'namingContexts'
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
+        USAGE dSAOperation )
+
+   The DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) syntax is
+   defined in [RFC4517].
+
+5.1.3.  'supportedControl'
+
+   The 'supportedControl' attribute lists object identifiers identifying
+   the request controls [RFC4511] the server supports.  If the server
+   does not support any request controls, this attribute will be absent.
+   Object identifiers identifying response controls need not be listed.
+
+   Procedures for registering object identifiers used to discovery of
+   protocol mechanisms are detailed in BCP 64, RFC 4520 [RFC4520].
+
+
+
+Zeilenga                    Standards Track                    [Page 38]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+      ( 1.3.6.1.4.1.1466.101.120.13 NAME 'supportedControl'
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
+        USAGE dSAOperation )
+
+   The OBJECT IDENTIFIER (1.3.6.1.4.1.1466.115.121.1.38) syntax is
+   defined in [RFC4517].
+
+5.1.4.  'supportedExtension'
+
+   The 'supportedExtension' attribute lists object identifiers
+   identifying the extended operations [RFC4511] that the server
+   supports.  If the server does not support any extended operations,
+   this attribute will be absent.
+
+   An extended operation generally consists of an extended request and
+   an extended response but may also include other protocol data units
+   (such as intermediate responses).  The object identifier assigned to
+   the extended request is used to identify the extended operation.
+   Other object identifiers used in the extended operation need not be
+   listed as values of this attribute.
+
+   Procedures for registering object identifiers used to discovery of
+   protocol mechanisms are detailed in BCP 64, RFC 4520 [RFC4520].
+
+      ( 1.3.6.1.4.1.1466.101.120.7 NAME 'supportedExtension'
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
+        USAGE dSAOperation )
+
+   The OBJECT IDENTIFIER (1.3.6.1.4.1.1466.115.121.1.38) syntax is
+   defined in [RFC4517].
+
+5.1.5.  'supportedFeatures'
+
+   The 'supportedFeatures' attribute lists object identifiers
+   identifying elective features that the server supports.  If the
+   server does not support any discoverable elective features, this
+   attribute will be absent.
+
+      ( 1.3.6.1.4.1.4203.1.3.5 NAME 'supportedFeatures'
+          EQUALITY objectIdentifierMatch
+          SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
+          USAGE dSAOperation )
+
+   Procedures for registering object identifiers used to discovery of
+   protocol mechanisms are detailed in BCP 64, RFC 4520 [RFC4520].
+
+   The OBJECT IDENTIFIER (1.3.6.1.4.1.1466.115.121.1.38) syntax and
+   objectIdentifierMatch matching rule are defined in [RFC4517].
+
+
+
+Zeilenga                    Standards Track                    [Page 39]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+5.1.6.  'supportedLDAPVersion'
+
+   The 'supportedLDAPVersion' attribute lists the versions of LDAP that
+   the server supports.
+
+      ( 1.3.6.1.4.1.1466.101.120.15 NAME 'supportedLDAPVersion'
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+        USAGE dSAOperation )
+
+   The INTEGER (1.3.6.1.4.1.1466.115.121.1.27) syntax is defined in
+   [RFC4517].
+
+5.1.7.  'supportedSASLMechanisms'
+
+   The 'supportedSASLMechanisms' attribute lists the SASL mechanisms
+   [RFC4422] that the server recognizes and/or supports [RFC4513].  The
+   contents of this attribute may depend on the current session state.
+   If the server does not support any SASL mechanisms, this attribute
+   will not be present.
+
+      ( 1.3.6.1.4.1.1466.101.120.14 NAME 'supportedSASLMechanisms'
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+        USAGE dSAOperation )
+
+   The Directory String (1.3.6.1.4.1.1466.115.121.1.15) syntax is
+   defined in [RFC4517].
+
+6.  Other Considerations
+
+6.1.  Preservation of User Information
+
+   Syntaxes may be defined that have specific value and/or value form
+   (representation) preservation requirements.  For example, a syntax
+   containing digitally signed data can mandate that the server preserve
+   both the value and form of value presented to ensure that the
+   signature is not invalidated.
+
+   Where such requirements have not been explicitly stated, servers
+   SHOULD preserve the value of user information but MAY return the
+   value in a different form.  And where a server is unable (or
+   unwilling) to preserve the value of user information, the server
+   SHALL ensure that an equivalent value (per Section 2.3) is returned.
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 40]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+6.2.  Short Names
+
+   Short names, also known as descriptors, are used as more readable
+   aliases for object identifiers and are used to identify various
+   schema elements.  However, it is not expected that LDAP
+   implementations with human user interface would display these short
+   names (or the object identifiers they refer to) to the user.
+   Instead, they would most likely be performing translations (such as
+   expressing the short name in one of the local national languages).
+   For example, the short name "st" (stateOrProvinceName) might be
+   displayed to a German-speaking user as "Land".
+
+   The same short name might have different meaning in different
+   subschemas, and, within a particular subschema, the same short name
+   might refer to different object identifiers each identifying a
+   different kind of schema element.
+
+   Implementations MUST be prepared that the same short name might be
+   used in a subschema to refer to the different kinds of schema
+   elements.  That is, there might be an object class 'x-fubar' and an
+   attribute type 'x-fubar' in a subschema.
+
+   Implementations MUST be prepared that the same short name might be
+   used in the different subschemas to refer to the different schema
+   elements.  That is, there might be two matching rules 'x-fubar', each
+   in different subschemas.
+
+   Procedures for registering short names (descriptors) are detailed in
+   BCP 64, RFC 4520 [RFC4520].
+
+6.3.  Cache and Shadowing
+
+   Some servers may hold cache or shadow copies of entries, which can be
+   used to answer search and comparison queries, but will return
+   referrals or contact other servers if modification operations are
+   requested.  Servers that perform shadowing or caching MUST ensure
+   that they do not violate any access control constraints placed on the
+   data by the originating server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 41]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+7.  Implementation Guidelines
+
+7.1.  Server Guidelines
+
+   Servers MUST recognize all names of attribute types and object
+   classes defined in this document but, unless stated otherwise, need
+   not support the associated functionality.  Servers SHOULD recognize
+   all the names of attribute types and object classes defined in
+   Section 3 and 4, respectively, of [RFC4519].
+
+   Servers MUST ensure that entries conform to user and system schema
+   rules or other data model constraints.
+
+   Servers MAY support DIT Content Rules.  Servers MAY support DIT
+   Structure Rules and Name Forms.
+
+   Servers MAY support alias entries.
+
+   Servers MAY support the 'extensibleObject' object class.
+
+   Servers MAY support subentries.  If so, they MUST do so in accordance
+   with [RFC3672].  Servers that do not support subentries SHOULD use
+   object entries to mimic subentries as detailed in Section 3.2.
+
+   Servers MAY implement additional schema elements.  Servers SHOULD
+   provide definitions of all schema elements they support in subschema
+   (sub)entries.
+
+7.2.  Client Guidelines
+
+   In the absence of prior agreements with servers, clients SHOULD NOT
+   assume that servers support any particular schema elements beyond
+   those referenced in Section 7.1.  The client can retrieve subschema
+   information as described in Section 4.4.
+
+   Clients MUST NOT display or attempt to decode a value as ASN.1 if the
+   value's syntax is not known.  Clients MUST NOT assume the LDAP-
+   specific string encoding is restricted to a UTF-8 encoded string of
+   Unicode characters or any particular subset of Unicode (such as a
+   printable subset) unless such restriction is explicitly stated.
+   Clients SHOULD NOT send attribute values in a request that are not
+   valid according to the syntax defined for the attributes.
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 42]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+8.  Security Considerations
+
+   Attributes of directory entries are used to provide descriptive
+   information about the real-world objects they represent, which can be
+   people, organizations, or devices.  Most countries have privacy laws
+   regarding the publication of information about people.
+
+   General security considerations for accessing directory information
+   with LDAP are discussed in [RFC4511] and [RFC4513].
+
+9.  IANA Considerations
+
+   The Internet Assigned Numbers Authority (IANA) has updated the LDAP
+   descriptors registry as indicated in the following template:
+
+      Subject: Request for LDAP Descriptor Registration Update
+      Descriptor (short name): see comment
+      Object Identifier: see comment
+      Person & email address to contact for further information:
+          Kurt Zeilenga <kurt at OpenLDAP.org>
+      Usage: see comment
+      Specification: RFC 4512
+      Author/Change Controller: IESG
+      Comments:
+
+      The following descriptors (short names) has been added to
+      the registry.
+
+        NAME                         Type OID
+        ------------------------     ---- -----------------
+        governingStructureRule          A 2.5.21.10
+        structuralObjectClass           A 2.5.21.9
+
+      The following descriptors (short names) have been updated to
+      refer to this RFC.
+
+        NAME                         Type OID
+        ------------------------     ---- -----------------
+        alias                           O 2.5.6.1
+        aliasedObjectName               A 2.5.4.1
+        altServer                       A 1.3.6.1.4.1.1466.101.120.6
+        attributeTypes                  A 2.5.21.5
+        createTimestamp                 A 2.5.18.1
+        creatorsName                    A 2.5.18.3
+        dITContentRules                 A 2.5.21.2
+        dITStructureRules               A 2.5.21.1
+        extensibleObject                O 1.3.6.1.4.1.1466.101.120.111
+        ldapSyntaxes                    A 1.3.6.1.4.1.1466.101.120.16
+
+
+
+Zeilenga                    Standards Track                    [Page 43]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+        matchingRuleUse                 A 2.5.21.8
+        matchingRules                   A 2.5.21.4
+        modifiersName                   A 2.5.18.4
+        modifyTimestamp                 A 2.5.18.2
+        nameForms                       A 2.5.21.7
+        namingContexts                  A 1.3.6.1.4.1.1466.101.120.5
+        objectClass                     A 2.5.4.0
+        objectClasses                   A 2.5.21.6
+        subschema                       O 2.5.20.1
+        subschemaSubentry               A 2.5.18.10
+        supportedControl                A 1.3.6.1.4.1.1466.101.120.13
+        supportedExtension              A 1.3.6.1.4.1.1466.101.120.7
+        supportedFeatures               A 1.3.6.1.4.1.4203.1.3.5
+        supportedLDAPVersion            A 1.3.6.1.4.1.1466.101.120.15
+        supportedSASLMechanisms         A 1.3.6.1.4.1.1466.101.120.14
+        top                             O 2.5.6.0
+
+10.  Acknowledgements
+
+   This document is based in part on RFC 2251 by M. Wahl, T. Howes, and
+   S. Kille; RFC 2252 by M. Wahl, A. Coulbeck, T. Howes, S. Kille; and
+   RFC 2556 by M. Wahl, all products of the IETF Access, Searching and
+   Indexing of Directories (ASID) Working Group.  This document is also
+   based in part on "The Directory: Models" [X.501], a product of the
+   International Telephone Union (ITU).  Additional text was borrowed
+   from RFC 2253 by M. Wahl, T. Howes, and S. Kille.
+
+   This document is a product of the IETF LDAP Revision (LDAPBIS)
+   Working Group.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 44]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+11.  Normative References
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3629]     Yergeau, F., "UTF-8, a transformation format of ISO
+                 10646", STD 63, RFC 3629, November 2003.
+
+   [RFC3671]     Zeilenga, K., "Collective Attributes in the Lightweight
+                 Directory Access Protocol (LDAP)", RFC 3671, December
+                 2003.
+
+   [RFC3672]     Zeilenga, K., "Subentries in the Lightweight Directory
+                 Access Protocol (LDAP)", RFC 3672, December 2003.
+
+   [RFC4234]     Crocker, D. and P. Overell, "Augmented BNF for Syntax
+                 Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4422]     Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple
+                 Authentication and Security Layer (SASL)", RFC 4422,
+                 June 2006.
+
+   [RFC4510]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4513]     Harrison, R., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Authentication Methods and Security
+                 Mechanisms", RFC 4513, June 2006.
+
+   [RFC4514]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): String Representation of Distinguished
+                 Names", RFC 4514, June 2006.
+
+   [RFC4515]     Smith, M., Ed. and T. Howes, "Lightweight Directory
+                 Access Protocol (LDAP): String Representation of Search
+                 Filters", RFC 4515, June 2006.
+
+   [RFC4516]     Smith, M., Ed. and T. Howes, "Lightweight Directory
+                 Access Protocol (LDAP): Uniform Resource Locator", RFC
+                 4516, June 2006.
+
+   [RFC4517]     Legg, S., Ed., "Lightweight Directory Access Protocol
+                 (LDAP): Syntaxes and Matching Rules", RFC 4517, June
+                 2006.
+
+
+
+Zeilenga                    Standards Track                    [Page 45]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   [RFC4519]     Sciberras, A., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Schema for User Applications", RFC
+                 4519, June 2006.
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [Unicode]     The Unicode Consortium, "The Unicode Standard, Version
+                 3.2.0" is defined by "The Unicode Standard, Version
+                 3.0" (Reading, MA, Addison-Wesley, 2000.  ISBN 0-201-
+                 61633-5), as amended by the "Unicode Standard Annex
+                 #27: Unicode 3.1"
+                 (http://www.unicode.org/reports/tr27/) and by the
+                 "Unicode Standard Annex #28: Unicode 3.2"
+                 (http://www.unicode.org/reports/tr28/).
+
+   [X.500]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Overview of concepts, models and
+                 services," X.500(1993) (also ISO/IEC 9594-1:1994).
+
+   [X.501]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Models," X.501(1993) (also ISO/IEC 9594-
+                 2:1994).
+
+   [X.680]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "Abstract
+                 Syntax Notation One (ASN.1) - Specification of Basic
+                 Notation", X.680(2002) (also ISO/IEC 8824-1:2002).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 46]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+Appendix A.  Changes
+
+   This appendix is non-normative.
+
+   This document amounts to nearly a complete rewrite of portions of RFC
+   2251, RFC 2252, and RFC 2256.  This rewrite was undertaken to improve
+   overall clarity of technical specification.  This appendix provides a
+   summary of substantive changes made to the portions of these
+   documents incorporated into this document.  Readers should consult
+   [RFC4510], [RFC4511], [RFC4517], and [RFC4519] for summaries of
+   remaining portions of these documents.
+
+A.1.  Changes to RFC 2251
+
+   This document incorporates from RFC 2251, Sections 3.2 and 3.4, and
+   portions of Sections 4 and 6 as summarized below.
+
+A.1.1.  Section 3.2 of RFC 2251
+
+   Section 3.2 of RFC 2251 provided a brief introduction to the X.500
+   data model, as used by LDAP.  The previous specification relied on
+   [X.501] but lacked clarity in how X.500 models are adapted for use by
+   LDAP.  This document describes the X.500 data models, as used by
+   LDAP, in greater detail, especially in areas where adaptation is
+   needed.
+
+   Section 3.2.1 of RFC 2251 described an attribute as "a type with one
+   or more associated values".  In LDAP, an attribute is better
+   described as an attribute description, a type with zero or more
+   options, and one or more associated values.
+
+   Section 3.2.2 of RFC 2251 mandated that subschema subentries contain
+   objectClasses and attributeTypes attributes, yet X.500(93) treats
+   these attributes as optional.  While generally all implementations
+   that support X.500(93) subschema mechanisms will provide both of
+   these attributes, it is not absolutely required for interoperability
+   that all servers do.  The mandate was removed for consistency with
+   X.500(93).   The subschema discovery mechanism was also clarified to
+   indicate that subschema controlling an entry is obtained by reading
+   the (sub)entry referred to by that entry's 'subschemaSubentry'
+   attribute.
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 47]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+A.1.2.  Section 3.4 of RFC 2251
+
+   Section 3.4 of RFC 2251 provided "Server-specific Data Requirements".
+   This material, with changes, was incorporated in Section 5.1 of this
+   document.
+
+   Changes:
+
+   - Clarify that attributes of the root DSE are subject to "other
+     restrictions" in addition to access controls.
+
+   - Clarify that only recognized extended requests need to be
+     enumerated 'supportedExtension'.
+
+   - Clarify that only recognized request controls need to be enumerated
+     'supportedControl'.
+
+   - Clarify that root DSE attributes are operational and, like other
+     operational attributes, will not be returned in search requests
+     unless requested by name.
+
+   - Clarify that not all root DSE attributes are user modifiable.
+
+   - Remove inconsistent text regarding handling of the
+     'subschemaSubentry' attribute within the root DSE.  The previous
+     specification stated that the 'subschemaSubentry' attribute held in
+     the root DSE referred to "subschema entries (or subentries) known
+     by this server".  This is inconsistent with the attribute's
+     intended use as well as its formal definition as a single valued
+     attribute [X.501].  It is also noted that a simple (possibly
+     incomplete) list of subschema (sub)entries is not terribly useful.
+     This document (in Section 5.1) specifies that the
+     'subschemaSubentry' attribute of the root DSE refers to the
+     subschema controlling the root DSE.  It is noted that the general
+     subschema discovery mechanism remains available (see Section 4.4 of
+     this document).
+
+A.1.3.  Section 4 of RFC 2251
+
+   Portions of Section 4 of RFC 2251 detailing aspects of the
+   information model used by LDAP were incorporated in this document,
+   including:
+
+   - Restriction of distinguished values to attributes whose
+     descriptions have no options (from Section 4.1.3);
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 48]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   - Data model aspects of Attribute Types (from Section 4.1.4),
+     Attribute Descriptions (from 4.1.5), Attribute (from 4.1.8),
+     Matching Rule Identifier (from 4.1.9); and
+
+   - User schema requirements (from Sections 4.1.6, 4.5.1, and 4.7).
+
+   Clarifications to these portions include:
+
+   - Subtyping and AttributeDescriptions with options.
+
+A.1.4.  Section 6 of RFC 2251
+
+   The Section 6.1 and the second paragraph of Section 6.2 of RFC 2251
+   where incorporated into this document.
+
+A.2.  Changes to RFC 2252
+
+   This document incorporates Sections 4, 5, and 7 from RFC 2252.
+
+A.2.1.  Section 4 of RFC 2252
+
+   The specification was updated to use Augmented BNF [RFC4234].  The
+   string representation of an OBJECT IDENTIFIER was tightened to
+   disallow leading zeros as described in RFC 2252.
+
+   The <descr> syntax was changed to disallow semicolon (U+003B)
+   characters in order to appear to be consistent its natural language
+   specification "descr is the syntactic representation of an object
+   descriptor, which consists of letters and digits, starting with a
+   letter".  In a related change, the statement "an AttributeDescription
+   can be used as the value in a NAME part of an
+   AttributeTypeDescription" was deleted.  RFC 2252 provided no
+   specification of the semantics of attribute options appearing in NAME
+   fields.
+
+   RFC 2252 stated that the <descr> form of <oid> SHOULD be preferred
+   over the <numericoid> form.  However, <descr> form can be ambiguous.
+   To address this issue, the imperative was replaced with a statement
+   (in Section 1.4) that while the <descr> form is generally preferred,
+   <numericoid> should be used where an unambiguous <descr> is not
+   available.  Additionally, an expanded discussion of descriptor issues
+   is in Section 6.2 ("Short Names").
+
+   The ABNF for a quoted string (qdstring) was updated to reflect
+   support for the escaping mechanism described in Section 4.3 of RFC
+   2252.
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 49]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+A.2.2.  Section 5 of RFC 2252
+
+   Definitions of operational attributes provided in Section 5 of RFC
+   2252 where incorporated into this document.
+
+   The 'namingContexts' description was clarified.  A first-level DSA
+   should publish, in addition to other values, "" indicating the root
+   of the DIT.
+
+   The 'altServer' description was clarified.  It may hold any URI.
+
+   The 'supportedExtension' description was clarified.  A server need
+   only list the OBJECT IDENTIFIERs associated with the extended
+   requests of the extended operations it recognizes.
+
+   The 'supportedControl' description was clarified.  A server need only
+   list the OBJECT IDENTIFIERs associated with the request controls it
+   recognizes.
+
+   Descriptions for the 'structuralObjectClass' and
+   'governingStructureRule' operational attribute types were added.
+
+   The attribute definition of 'subschemaSubentry' was corrected to list
+   the terms SINGLE-VALUE and NO-USER-MODIFICATION in proper order.
+
+A.2.3.  Section 7 of RFC 2252
+
+   Section 7 of RFC 2252 provides definitions of the 'subschema' and
+   'extensibleObject' object classes.  These definitions where
+   integrated into Section 4.2 and Section 4.3 of this document,
+   respectively.  Section 7 of RFC 2252 also contained the object class
+   implementation requirement.  This was incorporated into Section 7 of
+   this document.
+
+   The specification of 'extensibleObject' was clarified regarding how
+   it interacts with precluded attributes.
+
+A.3.  Changes to RFC 2256
+
+   This document incorporates Sections 5.1, 5.2, 7.1, and 7.2 of RFC
+   2256.
+
+   Section 5.1 of RFC 2256 provided the definition of the 'objectClass'
+   attribute type.  This was integrated into Section 2.4.1 of this
+   document.  The statement "One of the values is either 'top' or
+   'alias'" was replaced with statement that one of the values is 'top'
+   as entries belonging to 'alias' also belong to 'top'.
+
+
+
+
+Zeilenga                    Standards Track                    [Page 50]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+   Section 5.2 of RFC 2256 provided the definition of the
+   'aliasedObjectName' attribute type.  This was integrated into Section
+   2.6.2 of this document.
+
+   Section 7.1 of RFC 2256 provided the definition of the 'top' object
+   class.  This was integrated into Section 2.4.1 of this document.
+
+   Section 7.2 of RFC 2256 provided the definition of the 'alias' object
+   class.  This was integrated into Section 2.6.1 of this document.
+
+A.4.  Changes to RFC 3674
+
+   This document made no substantive change to the 'supportedFeatures'
+   technical specification provided in RFC 3674.
+
+Editor's Address
+
+   Kurt D.  Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 51]
+
+RFC 4512                      LDAP Models                      June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 52]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4513.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4513.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4513.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4513.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,1907 @@
+
+
+
+
+
+
+Network Working Group                                   R. Harrison, Ed.
+Request for Comments: 4513                                  Novell, Inc.
+Obsoletes: 2251, 2829, 2830                                    June 2006
+Category: Standards Track
+
+
+             Lightweight Directory Access Protocol (LDAP):
+             Authentication Methods and Security Mechanisms
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document describes authentication methods and security
+   mechanisms of the Lightweight Directory Access Protocol (LDAP).  This
+   document details establishment of Transport Layer Security (TLS)
+   using the StartTLS operation.
+
+   This document details the simple Bind authentication method including
+   anonymous, unauthenticated, and name/password mechanisms and the
+   Simple Authentication and Security Layer (SASL) Bind authentication
+   method including the EXTERNAL mechanism.
+
+   This document discusses various authentication and authorization
+   states through which a session to an LDAP server may pass and the
+   actions that trigger these state changes.
+
+   This document, together with other documents in the LDAP Technical
+   Specification (see Section 1 of the specification's road map),
+   obsoletes RFC 2251, RFC 2829, and RFC 2830.
+
+
+
+
+
+
+
+
+
+
+
+Harrison                    Standards Track                     [Page 1]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+Table of Contents
+
+   1. Introduction ....................................................4
+      1.1. Relationship to Other Documents ............................6
+      1.2. Conventions ................................................6
+   2. Implementation Requirements .....................................7
+   3. StartTLS Operation ..............................................8
+      3.1.  TLS Establishment Procedures ..............................8
+           3.1.1. StartTLS Request Sequencing .........................8
+           3.1.2. Client Certificate ..................................9
+           3.1.3. Server Identity Check ...............................9
+                  3.1.3.1. Comparison of DNS Names ...................10
+                  3.1.3.2. Comparison of IP Addresses ................11
+                  3.1.3.3. Comparison of Other subjectName Types .....11
+           3.1.4. Discovery of Resultant Security Level ..............11
+           3.1.5. Refresh of Server Capabilities Information .........11
+      3.2.  Effect of TLS on Authorization State .....................12
+      3.3. TLS Ciphersuites ..........................................12
+   4. Authorization State ............................................13
+   5. Bind Operation .................................................14
+      5.1. Simple Authentication Method ..............................14
+           5.1.1. Anonymous Authentication Mechanism of Simple Bind ..14
+           5.1.2. Unauthenticated Authentication Mechanism of
+                  Simple Bind ........................................14
+           5.1.3. Name/Password Authentication Mechanism of
+                  Simple Bind ........................................15
+      5.2. SASL Authentication Method ................................16
+           5.2.1. SASL Protocol Profile ..............................16
+                  5.2.1.1. SASL Service Name for LDAP ................16
+                  5.2.1.2. SASL Authentication Initiation and
+                           Protocol Exchange .........................16
+                  5.2.1.3. Optional Fields ...........................17
+                  5.2.1.4. Octet Where Negotiated Security
+                           Layers Take Effect ........................18
+                  5.2.1.5. Determination of Supported SASL
+                           Mechanisms ................................18
+                  5.2.1.6. Rules for Using SASL Layers ...............19
+                  5.2.1.7. Support for Multiple Authentications ......19
+                  5.2.1.8. SASL Authorization Identities .............19
+           5.2.2. SASL Semantics within LDAP .........................20
+           5.2.3. SASL EXTERNAL Authentication Mechanism .............20
+                  5.2.3.1. Implicit Assertion ........................21
+                  5.2.3.2. Explicit Assertion ........................21
+   6. Security Considerations ........................................21
+      6.1. General LDAP Security Considerations ......................21
+      6.2. StartTLS Security Considerations ..........................22
+      6.3. Bind Operation Security Considerations ....................23
+           6.3.1. Unauthenticated Mechanism Security Considerations ..23
+
+
+
+Harrison                    Standards Track                     [Page 2]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+           6.3.2. Name/Password Mechanism Security Considerations ....23
+           6.3.3. Password-Related Security Considerations ...........23
+           6.3.4. Hashed Password Security Considerations ............24
+      6.4. SASL Security Considerations ..............................24
+      6.5. Related Security Considerations ...........................25
+   7. IANA Considerations ............................................25
+   8. Acknowledgements ...............................................25
+   9. Normative References ...........................................26
+   10. Informative References ........................................27
+   Appendix A. Authentication and Authorization Concepts .............28
+      A.1. Access Control Policy .....................................28
+      A.2. Access Control Factors ....................................28
+      A.3. Authentication, Credentials, Identity .....................28
+      A.4. Authorization Identity ....................................29
+   Appendix B. Summary of Changes ....................................29
+      B.1. Changes Made to RFC 2251 ..................................30
+           B.1.1. Section 4.2.1 ("Sequencing of the Bind Request") ...30
+           B.1.2. Section 4.2.2 ("Authentication and Other Security
+                  Services") .........................................30
+      B.2. Changes Made to RFC 2829 ..................................30
+           B.2.1. Section 4 ("Required security mechanisms") .........30
+           B.2.2. Section 5.1 ("Anonymous authentication
+                  procedure") ........................................31
+           B.2.3. Section 6 ("Password-based authentication") ........31
+           B.2.4. Section 6.1 ("Digest authentication") ..............31
+           B.2.5. Section 6.2 ("'simple' authentication choice under
+                  TLS encryption") ...................................31
+           B.2.6. Section 6.3 ("Other authentication choices with
+                  TLS") ..............................................31
+           B.2.7. Section 7.1 ("Certificate-based authentication
+                  with TLS") .........................................31
+           B.2.8. Section 8 ("Other mechanisms") .....................32
+           B.2.9. Section 9 ("Authorization Identity") ...............32
+           B.2.10. Section 10 ("TLS Ciphersuites") ...................32
+      B.3. Changes Made to RFC 2830 ..................................32
+           B.3.1. Section 3.6 ("Server Identity Check") ..............32
+           B.3.2. Section 3.7 ("Refresh of Server Capabilities
+                  Information") ......................................33
+           B.3.3. Section 5 ("Effects of TLS on a Client's
+                  Authorization Identity") ...........................33
+           B.3.4. Section 5.2 ("TLS Connection Closure Effects") .....33
+
+
+
+
+
+
+
+
+
+
+Harrison                    Standards Track                     [Page 3]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+1.  Introduction
+
+   The Lightweight Directory Access Protocol (LDAP) [RFC4510] is a
+   powerful protocol for accessing directories.  It offers means of
+   searching, retrieving, and manipulating directory content and ways to
+   access a rich set of security functions.
+
+   It is vital that these security functions be interoperable among all
+   LDAP clients and servers on the Internet; therefore there has to be a
+   minimum subset of security functions that is common to all
+   implementations that claim LDAP conformance.
+
+   Basic threats to an LDAP directory service include (but are not
+   limited to):
+
+   (1) Unauthorized access to directory data via data-retrieval
+       operations.
+
+   (2) Unauthorized access to directory data by monitoring access of
+       others.
+
+   (3) Unauthorized access to reusable client authentication information
+       by monitoring access of others.
+
+   (4) Unauthorized modification of directory data.
+
+   (5) Unauthorized modification of configuration information.
+
+   (6) Denial of Service: Use of resources (commonly in excess) in a
+       manner intended to deny service to others.
+
+   (7) Spoofing: Tricking a user or client into believing that
+       information came from the directory when in fact it did not,
+       either by modifying data in transit or misdirecting the client's
+       transport connection.  Tricking a user or client into sending
+       privileged information to a hostile entity that appears to be the
+       directory server but is not.  Tricking a directory server into
+       believing that information came from a particular client when in
+       fact it came from a hostile entity.
+
+   (8) Hijacking: An attacker seizes control of an established protocol
+       session.
+
+   Threats (1), (4), (5), (6), (7), and (8) are active attacks.  Threats
+   (2) and (3) are passive attacks.
+
+
+
+
+
+
+Harrison                    Standards Track                     [Page 4]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   Threats (1), (4), (5), and (6) are due to hostile clients.  Threats
+   (2), (3), (7), and (8) are due to hostile agents on the path between
+   client and server or hostile agents posing as a server, e.g., IP
+   spoofing.
+
+   LDAP offers the following security mechanisms:
+
+   (1) Authentication by means of the Bind operation.  The Bind
+       operation provides a simple method that supports anonymous,
+       unauthenticated, and name/password mechanisms, and the Simple
+       Authentication and Security Layer (SASL) method, which supports a
+       wide variety of authentication mechanisms.
+
+   (2) Mechanisms to support vendor-specific access control facilities
+       (LDAP does not offer a standard access control facility).
+
+   (3) Data integrity service by means of security layers in Transport
+       Layer Security (TLS) or SASL mechanisms.
+
+   (4) Data confidentiality service by means of security layers in TLS
+       or SASL mechanisms.
+
+   (5) Server resource usage limitation by means of administrative
+       limits configured on the server.
+
+   (6) Server authentication by means of the TLS protocol or SASL
+       mechanisms.
+
+   LDAP may also be protected by means outside the LDAP protocol, e.g.,
+   with IP layer security [RFC4301].
+
+   Experience has shown that simply allowing implementations to pick and
+   choose the security mechanisms that will be implemented is not a
+   strategy that leads to interoperability.  In the absence of mandates,
+   clients will continue to be written that do not support any security
+   function supported by the server, or worse, they will only support
+   mechanisms that provide inadequate security for most circumstances.
+
+   It is desirable to allow clients to authenticate using a variety of
+   mechanisms including mechanisms where identities are represented as
+   distinguished names [X.501][RFC4512], in string form [RFC4514], or as
+   used in different systems (e.g., simple user names [RFC4013]).
+   Because some authentication mechanisms transmit credentials in plain
+   text form, and/or do not provide data security services and/or are
+   subject to passive attacks, it is necessary to ensure secure
+   interoperability by identifying a mandatory-to-implement mechanism
+   for establishing transport-layer security services.
+
+
+
+
+Harrison                    Standards Track                     [Page 5]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   The set of security mechanisms provided in LDAP and described in this
+   document is intended to meet the security needs for a wide range of
+   deployment scenarios and still provide a high degree of
+   interoperability among various LDAP implementations and deployments.
+
+1.1.  Relationship to Other Documents
+
+   This document is an integral part of the LDAP Technical Specification
+   [RFC4510].
+
+   This document, together with [RFC4510], [RFC4511], and [RFC4512],
+   obsoletes RFC 2251 in its entirety.  Sections 4.2.1 (portions) and
+   4.2.2 of RFC 2251 are obsoleted by this document.  Appendix B.1
+   summarizes the substantive changes made to RFC 2251 by this document.
+
+   This document obsoletes RFC 2829 in its entirety.  Appendix B.2
+   summarizes the substantive changes made to RFC 2829 by this document.
+
+   Sections 2 and 4 of RFC 2830 are obsoleted by [RFC4511].  The
+   remainder of RFC 2830 is obsoleted by this document.  Appendix B.3
+   summarizes the substantive changes made to RFC 2830 by this document.
+
+1.2.  Conventions
+
+   The key words "MUST", "MUST NOT", "SHALL", "SHOULD", "SHOULD NOT",
+   "MAY", and "OPTIONAL" in this document are to be interpreted as
+   described in RFC 2119 [RFC2119].
+
+   The term "user" represents any human or application entity that is
+   accessing the directory using a directory client.  A directory client
+   (or client) is also known as a directory user agent (DUA).
+
+   The term "transport connection" refers to the underlying transport
+   services used to carry the protocol exchange, as well as associations
+   established by these services.
+
+   The term "TLS layer" refers to TLS services used in providing
+   security services, as well as associations established by these
+   services.
+
+   The term "SASL layer" refers to SASL services used in providing
+   security services, as well as associations established by these
+   services.
+
+   The term "LDAP message layer" refers to the LDAP Message (PDU)
+   services used in providing directory services, as well as
+   associations established by these services.
+
+
+
+
+Harrison                    Standards Track                     [Page 6]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   The term "LDAP session" refers to combined services (transport
+   connection, TLS layer, SASL layer, LDAP message layer) and their
+   associations.
+
+   In general, security terms in this document are used consistently
+   with the definitions provided in [RFC2828].  In addition, several
+   terms and concepts relating to security, authentication, and
+   authorization are presented in Appendix A of this document.  While
+   the formal definition of these terms and concepts is outside the
+   scope of this document, an understanding of them is prerequisite to
+   understanding much of the material in this document.  Readers who are
+   unfamiliar with security-related concepts are encouraged to review
+   Appendix A before reading the remainder of this document.
+
+2.  Implementation Requirements
+
+   LDAP server implementations MUST support the anonymous authentication
+   mechanism of the simple Bind method (Section 5.1.1).
+
+   LDAP implementations that support any authentication mechanism other
+   than the anonymous authentication mechanism of the simple Bind method
+   MUST support the name/password authentication mechanism of the simple
+   Bind method (Section 5.1.3) and MUST be capable of protecting this
+   name/password authentication using TLS as established by the StartTLS
+   operation (Section 3).
+
+   Implementations SHOULD disallow the use of the name/password
+   authentication mechanism by default when suitable data security
+   services are not in place, and they MAY provide other suitable data
+   security services for use with this authentication mechanism.
+
+   Implementations MAY support additional authentication mechanisms.
+   Some of these mechanisms are discussed below.
+
+   LDAP server implementations SHOULD support client assertion of
+   authorization identity via the SASL EXTERNAL mechanism (Section
+   5.2.3).
+
+   LDAP server implementations that support no authentication mechanism
+   other than the anonymous mechanism of the simple bind method SHOULD
+   support use of TLS as established by the StartTLS operation (Section
+   3).  (Other servers MUST support TLS per the second paragraph of this
+   section.)
+
+
+
+
+
+
+
+
+Harrison                    Standards Track                     [Page 7]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   Implementations supporting TLS MUST support the
+   TLS_RSA_WITH_3DES_EDE_CBC_SHA ciphersuite and SHOULD support the
+   TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA ciphersuite.  Support for the
+   latter ciphersuite is recommended to encourage interoperability with
+   implementations conforming to earlier LDAP StartTLS specifications.
+
+3.  StartTLS Operation
+
+   The Start Transport Layer Security (StartTLS) operation defined in
+   Section 4.14 of [RFC4511] provides the ability to establish TLS
+   [RFC4346] in an LDAP session.
+
+   The goals of using the TLS protocol with LDAP are to ensure data
+   confidentiality and integrity, and to optionally provide for
+   authentication.  TLS expressly provides these capabilities, although
+   the authentication services of TLS are available to LDAP only in
+   combination with the SASL EXTERNAL authentication method (see Section
+   5.2.3), and then only if the SASL EXTERNAL implementation chooses to
+   make use of the TLS credentials.
+
+3.1.  TLS Establishment Procedures
+
+   This section describes the overall procedures clients and servers
+   must follow for TLS establishment.  These procedures take into
+   consideration various aspects of the TLS layer including discovery of
+   resultant security level and assertion of the client's authorization
+   identity.
+
+3.1.1.  StartTLS Request Sequencing
+
+   A client may send the StartTLS extended request at any time after
+   establishing an LDAP session, except:
+
+      - when TLS is currently established on the session,
+      - when a multi-stage SASL negotiation is in progress on the
+        session, or
+      - when there are outstanding responses for operation requests
+        previously issued on the session.
+
+   As described in [RFC4511], Section 4.14.1, a (detected) violation of
+   any of these requirements results in a return of the operationsError
+   resultCode.
+
+   Client implementers should ensure that they strictly follow these
+   operation sequencing requirements to prevent interoperability issues.
+   Operational experience has shown that violating these requirements
+
+
+
+
+
+Harrison                    Standards Track                     [Page 8]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   causes interoperability issues because there are race conditions that
+   prevent servers from detecting some violations of these requirements
+   due to factors such as server hardware speed and network latencies.
+
+   There is no general requirement that the client have or have not
+   already performed a Bind operation (Section 5) before sending a
+   StartTLS operation request; however, where a client intends to
+   perform both a Bind operation and a StartTLS operation, it SHOULD
+   first perform the StartTLS operation so that the Bind request and
+   response messages are protected by the data security services
+   established by the StartTLS operation.
+
+3.1.2.  Client Certificate
+
+   If an LDAP server requests or demands that a client provide a user
+   certificate during TLS negotiation and the client does not present a
+   suitable user certificate (e.g., one that can be validated), the
+   server may use a local security policy to determine whether to
+   successfully complete TLS negotiation.
+
+   If a client that has provided a suitable certificate subsequently
+   performs a Bind operation using the SASL EXTERNAL authentication
+   mechanism (Section 5.2.3), information in the certificate may be used
+   by the server to identify and authenticate the client.
+
+3.1.3.  Server Identity Check
+
+   In order to prevent man-in-the-middle attacks, the client MUST verify
+   the server's identity (as presented in the server's Certificate
+   message).  In this section, the client's understanding of the
+   server's identity (typically the identity used to establish the
+   transport connection) is called the "reference identity".
+
+   The client determines the type (e.g., DNS name or IP address) of the
+   reference identity and performs a comparison between the reference
+   identity and each subjectAltName value of the corresponding type
+   until a match is produced.  Once a match is produced, the server's
+   identity has been verified, and the server identity check is
+   complete.  Different subjectAltName types are matched in different
+   ways.  Sections 3.1.3.1 - 3.1.3.3 explain how to compare values of
+   various subjectAltName types.
+
+   The client may map the reference identity to a different type prior
+   to performing a comparison.  Mappings may be performed for all
+   available subjectAltName types to which the reference identity can be
+   mapped; however, the reference identity should only be mapped to
+   types for which the mapping is either inherently secure (e.g.,
+   extracting the DNS name from a URI to compare with a subjectAltName
+
+
+
+Harrison                    Standards Track                     [Page 9]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   of type dNSName) or for which the mapping is performed in a secure
+   manner (e.g., using DNSSEC, or using user- or admin-configured host-
+   to-address/address-to-host lookup tables).
+
+   The server's identity may also be verified by comparing the reference
+   identity to the Common Name (CN) [RFC4519] value in the leaf Relative
+   Distinguished Name (RDN) of the subjectName field of the server's
+   certificate.  This comparison is performed using the rules for
+   comparison of DNS names in Section 3.1.3.1, below, with the exception
+   that no wildcard matching is allowed.  Although the use of the Common
+   Name value is existing practice, it is deprecated, and Certification
+   Authorities are encouraged to provide subjectAltName values instead.
+   Note that the TLS implementation may represent DNs in certificates
+   according to X.500 or other conventions.  For example, some X.500
+   implementations order the RDNs in a DN using a left-to-right (most
+   significant to least significant) convention instead of LDAP's
+   right-to-left convention.
+
+   If the server identity check fails, user-oriented clients SHOULD
+   either notify the user (clients may give the user the opportunity to
+   continue with the LDAP session in this case) or close the transport
+   connection and indicate that the server's identity is suspect.
+   Automated clients SHOULD close the transport connection and then
+   return or log an error indicating that the server's identity is
+   suspect or both.
+
+   Beyond the server identity check described in this section, clients
+   should be prepared to do further checking to ensure that the server
+   is authorized to provide the service it is requested to provide.  The
+   client may need to make use of local policy information in making
+   this determination.
+
+3.1.3.1.  Comparison of DNS Names
+
+   If the reference identity is an internationalized domain name,
+   conforming implementations MUST convert it to the ASCII Compatible
+   Encoding (ACE) format as specified in Section 4 of RFC 3490 [RFC3490]
+   before comparison with subjectAltName values of type dNSName.
+   Specifically, conforming implementations MUST perform the conversion
+   operation specified in Section 4 of RFC 3490 as follows:
+
+      * in step 1, the domain name SHALL be considered a "stored
+        string";
+      * in step 3, set the flag called "UseSTD3ASCIIRules";
+      * in step 4, process each label with the "ToASCII" operation; and
+      * in step 5, change all label separators to U+002E (full stop).
+
+
+
+
+
+Harrison                    Standards Track                    [Page 10]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   After performing the "to-ASCII" conversion, the DNS labels and names
+   MUST be compared for equality according to the rules specified in
+   Section 3 of RFC3490.
+
+   The '*' (ASCII 42) wildcard character is allowed in subjectAltName
+   values of type dNSName, and then only as the left-most (least
+   significant) DNS label in that value.  This wildcard matches any
+   left-most DNS label in the server name.  That is, the subject
+   *.example.com matches the server names a.example.com and
+   b.example.com, but does not match example.com or a.b.example.com.
+
+3.1.3.2.  Comparison of IP Addresses
+
+   When the reference identity is an IP address, the identity MUST be
+   converted to the "network byte order" octet string representation
+   [RFC791][RFC2460].  For IP Version 4, as specified in RFC 791, the
+   octet string will contain exactly four octets.  For IP Version 6, as
+   specified in RFC 2460, the octet string will contain exactly sixteen
+   octets.  This octet string is then compared against subjectAltName
+   values of type iPAddress.  A match occurs if the reference identity
+   octet string and value octet strings are identical.
+
+3.1.3.3.  Comparison of Other subjectName Types
+
+   Client implementations MAY support matching against subjectAltName
+   values of other types as described in other documents.
+
+3.1.4.  Discovery of Resultant Security Level
+
+   After a TLS layer is established in an LDAP session, both parties are
+   to each independently decide whether or not to continue based on
+   local policy and the security level achieved.  If either party
+   decides that the security level is inadequate for it to continue, it
+   SHOULD remove the TLS layer immediately after the TLS (re)negotiation
+   has completed (see [RFC4511], Section 4.14.3, and Section 3.2 below).
+   Implementations may reevaluate the security level at any time and,
+   upon finding it inadequate, should remove the TLS layer.
+
+3.1.5.  Refresh of Server Capabilities Information
+
+   After a TLS layer is established in an LDAP session, the client
+   SHOULD discard or refresh all information about the server that it
+   obtained prior to the initiation of the TLS negotiation and that it
+   did not obtain through secure mechanisms.  This protects against
+   man-in-the-middle attacks that may have altered any server
+   capabilities information retrieved prior to TLS layer installation.
+
+
+
+
+
+Harrison                    Standards Track                    [Page 11]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   The server may advertise different capabilities after installing a
+   TLS layer.  In particular, the value of 'supportedSASLMechanisms' may
+   be different after a TLS layer has been installed (specifically, the
+   EXTERNAL and PLAIN [PLAIN] mechanisms are likely to be listed only
+   after a TLS layer has been installed).
+
+3.2.  Effect of TLS on Authorization State
+
+   The establishment, change, and/or closure of TLS may cause the
+   authorization state to move to a new state.  This is discussed
+   further in Section 4.
+
+3.3.  TLS Ciphersuites
+
+   Several issues should be considered when selecting TLS ciphersuites
+   that are appropriate for use in a given circumstance.  These issues
+   include the following:
+
+      - The ciphersuite's ability to provide adequate confidentiality
+        protection for passwords and other data sent over the transport
+        connection.  Client and server implementers should recognize
+        that some TLS ciphersuites provide no confidentiality
+        protection, while other ciphersuites that do provide
+        confidentiality protection may be vulnerable to being cracked
+        using brute force methods, especially in light of ever-
+        increasing CPU speeds that reduce the time needed to
+        successfully mount such attacks.
+
+      - Client and server implementers should carefully consider the
+        value of the password or data being protected versus the level
+        of confidentiality protection provided by the ciphersuite to
+        ensure that the level of protection afforded by the ciphersuite
+        is appropriate.
+
+      - The ciphersuite's vulnerability (or lack thereof) to man-in-the-
+        middle attacks.  Ciphersuites vulnerable to man-in-the-middle
+        attacks SHOULD NOT be used to protect passwords or sensitive
+        data, unless the network configuration is such that the danger
+        of a man-in-the-middle attack is negligible.
+
+      - After a TLS negotiation (either initial or subsequent) is
+        completed, both protocol peers should independently verify that
+        the security services provided by the negotiated ciphersuite are
+        adequate for the intended use of the LDAP session.  If they are
+        not, the TLS layer should be closed.
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 12]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+4.  Authorization State
+
+   Every LDAP session has an associated authorization state.  This state
+   is comprised of numerous factors such as what (if any) authentication
+   state has been established, how it was established, and what security
+   services are in place.  Some factors may be determined and/or
+   affected by protocol events (e.g., Bind, StartTLS, or TLS closure),
+   and some factors may be determined by external events (e.g., time of
+   day or server load).
+
+   While it is often convenient to view authorization state in
+   simplistic terms (as we often do in this technical specification)
+   such as "an anonymous state", it is noted that authorization systems
+   in LDAP implementations commonly involve many factors that
+   interrelate in complex manners.
+
+   Authorization in LDAP is a local matter.  One of the key factors in
+   making authorization decisions is authorization identity.  The Bind
+   operation (defined in Section 4.2 of [RFC4511] and discussed further
+   in Section 5 below) allows information to be exchanged between the
+   client and server to establish an authorization identity for the LDAP
+   session.  The Bind operation may also be used to move the LDAP
+   session to an anonymous authorization state (see Section 5.1.1).
+
+   Upon initial establishment of the LDAP session, the session has an
+   anonymous authorization identity.  Among other things this implies
+   that the client need not send a BindRequest in the first PDU of the
+   LDAP message layer.  The client may send any operation request prior
+   to performing a Bind operation, and the server MUST treat it as if it
+   had been performed after an anonymous Bind operation (Section 5.1.1).
+
+   Upon receipt of a Bind request, the server immediately moves the
+   session to an anonymous authorization state.  If the Bind request is
+   successful, the session is moved to the requested authentication
+   state with its associated authorization state.  Otherwise, the
+   session remains in an anonymous state.
+
+   It is noted that other events both internal and external to LDAP may
+   result in the authentication and authorization states being moved to
+   an anonymous one.  For instance, the establishment, change, or
+   closure of data security services may result in a move to an
+   anonymous state, or the user's credential information (e.g.,
+   certificate) may have expired.  The former is an example of an event
+   internal to LDAP, whereas the latter is an example of an event
+   external to LDAP.
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 13]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+5.  Bind Operation
+
+   The Bind operation ([RFC4511], Section 4.2) allows authentication
+   information to be exchanged between the client and server to
+   establish a new authorization state.
+
+   The Bind request typically specifies the desired authentication
+   identity.  Some Bind mechanisms also allow the client to specify the
+   authorization identity.  If the authorization identity is not
+   specified, the server derives it from the authentication identity in
+   an implementation-specific manner.
+
+   If the authorization identity is specified, the server MUST verify
+   that the client's authentication identity is permitted to assume
+   (e.g., proxy for) the asserted authorization identity.  The server
+   MUST reject the Bind operation with an invalidCredentials resultCode
+   in the Bind response if the client is not so authorized.
+
+5.1.  Simple Authentication Method
+
+   The simple authentication method of the Bind Operation provides three
+   authentication mechanisms:
+
+      - An anonymous authentication mechanism (Section 5.1.1).
+
+      - An unauthenticated authentication mechanism (Section 5.1.2).
+
+      - A name/password authentication mechanism using credentials
+        consisting of a name (in the form of an LDAP distinguished name
+        [RFC4514]) and a password (Section 5.1.3).
+
+5.1.1.  Anonymous Authentication Mechanism of Simple Bind
+
+   An LDAP client may use the anonymous authentication mechanism of the
+   simple Bind method to explicitly establish an anonymous authorization
+   state by sending a Bind request with a name value of zero length and
+   specifying the simple authentication choice containing a password
+   value of zero length.
+
+5.1.2.  Unauthenticated Authentication Mechanism of Simple Bind
+
+   An LDAP client may use the unauthenticated authentication mechanism
+   of the simple Bind method to establish an anonymous authorization
+   state by sending a Bind request with a name value (a distinguished
+   name in LDAP string form [RFC4514] of non-zero length) and specifying
+   the simple authentication choice containing a password value of zero
+   length.
+
+
+
+
+Harrison                    Standards Track                    [Page 14]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   The distinguished name value provided by the client is intended to be
+   used for trace (e.g., logging) purposes only.  The value is not to be
+   authenticated or otherwise validated (including verification that the
+   DN refers to an existing directory object).  The value is not to be
+   used (directly or indirectly) for authorization purposes.
+
+   Unauthenticated Bind operations can have significant security issues
+   (see Section 6.3.1).  In particular, users intending to perform
+   Name/Password Authentication may inadvertently provide an empty
+   password and thus cause poorly implemented clients to request
+   Unauthenticated access.  Clients SHOULD be implemented to require
+   user selection of the Unauthenticated Authentication Mechanism by
+   means other than user input of an empty password.  Clients SHOULD
+   disallow an empty password input to a Name/Password Authentication
+   user interface.  Additionally, Servers SHOULD by default fail
+   Unauthenticated Bind requests with a resultCode of
+   unwillingToPerform.
+
+5.1.3.  Name/Password Authentication Mechanism of Simple Bind
+
+   An LDAP client may use the name/password authentication mechanism of
+   the simple Bind method to establish an authenticated authorization
+   state by sending a Bind request with a name value (a distinguished
+   name in LDAP string form [RFC4514] of non-zero length) and specifying
+   the simple authentication choice containing an OCTET STRING password
+   value of non-zero length.
+
+   Servers that map the DN sent in the Bind request to a directory entry
+   with an associated set of one or more passwords used with this
+   mechanism will compare the presented password to that set of
+   passwords.  The presented password is considered valid if it matches
+   any member of this set.
+
+   A resultCode of invalidDNSyntax indicates that the DN sent in the
+   name value is syntactically invalid.  A resultCode of
+   invalidCredentials indicates that the DN is syntactically correct but
+   not valid for purposes of authentication, that the password is not
+   valid for the DN, or that the server otherwise considers the
+   credentials invalid.  A resultCode of success indicates that the
+   credentials are valid and that the server is willing to provide
+   service to the entity these credentials identify.
+
+   Server behavior is undefined for Bind requests specifying the
+   name/password authentication mechanism with a zero-length name value
+   and a password value of non-zero length.
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 15]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   The name/password authentication mechanism of the simple Bind method
+   is not suitable for authentication in environments without
+   confidentiality protection.
+
+5.2.  SASL Authentication Method
+
+   The sasl authentication method of the Bind Operation provides
+   facilities for using any SASL mechanism including authentication
+   mechanisms and other services (e.g., data security services).
+
+5.2.1.  SASL Protocol Profile
+
+   LDAP allows authentication via any SASL mechanism [RFC4422].  As LDAP
+   includes native anonymous and name/password (plain text)
+   authentication methods, the ANONYMOUS [RFC4505] and PLAIN [PLAIN]
+   SASL mechanisms are typically not used with LDAP.
+
+   Each protocol that utilizes SASL services is required to supply
+   certain information profiling the way they are exposed through the
+   protocol ([RFC4422], Section 4).  This section explains how each of
+   these profiling requirements is met by LDAP.
+
+5.2.1.1.  SASL Service Name for LDAP
+
+   The SASL service name for LDAP is "ldap", which has been registered
+   with the IANA as a SASL service name.
+
+5.2.1.2.  SASL Authentication Initiation and Protocol Exchange
+
+   SASL authentication is initiated via a BindRequest message
+   ([RFC4511], Section 4.2) with the following parameters:
+
+      - The version is 3.
+      - The AuthenticationChoice is sasl.
+      - The mechanism element of the SaslCredentials sequence contains
+        the value of the desired SASL mechanism.
+      - The optional credentials field of the SaslCredentials sequence
+        MAY be used to provide an initial client response for mechanisms
+        that are defined to have the client send data first (see
+        [RFC4422], Sections 3 and 5).
+
+   In general, a SASL authentication protocol exchange consists of a
+   series of server challenges and client responses, the contents of
+   which are specific to and defined by the SASL mechanism.  Thus, for
+   some SASL authentication mechanisms, it may be necessary for the
+   client to respond to one or more server challenges by sending
+   BindRequest messages multiple times.  A challenge is indicated by the
+   server sending a BindResponse message with the resultCode set to
+
+
+
+Harrison                    Standards Track                    [Page 16]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   saslBindInProgress.  This indicates that the server requires the
+   client to send a new BindRequest message with the same SASL mechanism
+   to continue the authentication process.
+
+   To the LDAP message layer, these challenges and responses are opaque
+   binary tokens of arbitrary length.  LDAP servers use the
+   serverSaslCreds field (an OCTET STRING) in a BindResponse message to
+   transmit each challenge.  LDAP clients use the credentials field (an
+   OCTET STRING) in the SaslCredentials sequence of a BindRequest
+   message to transmit each response.  Note that unlike some Internet
+   protocols where SASL is used, LDAP is not text based and does not
+   Base64-transform these challenge and response values.
+
+   Clients sending a BindRequest message with the sasl choice selected
+   SHOULD send a zero-length value in the name field.  Servers receiving
+   a BindRequest message with the sasl choice selected SHALL ignore any
+   value in the name field.
+
+   A client may abort a SASL Bind negotiation by sending a BindRequest
+   message with a different value in the mechanism field of
+   SaslCredentials or with an AuthenticationChoice other than sasl.
+
+   If the client sends a BindRequest with the sasl mechanism field as an
+   empty string, the server MUST return a BindResponse with a resultCode
+   of authMethodNotSupported.  This will allow the client to abort a
+   negotiation if it wishes to try again with the same SASL mechanism.
+
+   The server indicates completion of the SASL challenge-response
+   exchange by responding with a BindResponse in which the resultCode
+   value is not saslBindInProgress.
+
+   The serverSaslCreds field in the BindResponse can be used to include
+   an optional challenge with a success notification for mechanisms that
+   are defined to have the server send additional data along with the
+   indication of successful completion.
+
+5.2.1.3.  Optional Fields
+
+   As discussed above, LDAP provides an optional field for carrying an
+   initial response in the message initiating the SASL exchange and
+   provides an optional field for carrying additional data in the
+   message indicating the outcome of the authentication exchange.  As
+   the mechanism-specific content in these fields may be zero length,
+   SASL requires protocol specifications to detail how an empty field is
+   distinguished from an absent field.
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 17]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   Zero-length initial response data is distinguished from no initial
+   response data in the initiating message, a BindRequest PDU, by the
+   presence of the SaslCredentials.credentials OCTET STRING (of length
+   zero) in that PDU.  If the client does not intend to send an initial
+   response with the BindRequest initiating the SASL exchange, it MUST
+   omit the SaslCredentials.credentials OCTET STRING (rather than
+   include an zero-length OCTET STRING).
+
+   Zero-length additional data is distinguished from no additional
+   response data in the outcome message, a BindResponse PDU, by the
+   presence of the serverSaslCreds OCTET STRING (of length zero) in that
+   PDU.  If a server does not intend to send additional data in the
+   BindResponse message indicating outcome of the exchange, the server
+   SHALL omit the serverSaslCreds OCTET STRING (rather than including a
+   zero-length OCTET STRING).
+
+5.2.1.4.  Octet Where Negotiated Security Layers Take Effect
+
+   SASL layers take effect following the transmission by the server and
+   reception by the client of the final BindResponse in the SASL
+   exchange with a resultCode of success.
+
+   Once a SASL layer providing data integrity or confidentiality
+   services takes effect, the layer remains in effect until a new layer
+   is installed (i.e., at the first octet following the final
+   BindResponse of the Bind operation that caused the new layer to take
+   effect).  Thus, an established SASL layer is not affected by a failed
+   or non-SASL Bind.
+
+5.2.1.5.  Determination of Supported SASL Mechanisms
+
+   Clients may determine the SASL mechanisms a server supports by
+   reading the 'supportedSASLMechanisms' attribute from the root DSE
+   (DSA-Specific Entry) ([RFC4512], Section 5.1).  The values of this
+   attribute, if any, list the mechanisms the server supports in the
+   current LDAP session state.  LDAP servers SHOULD allow all clients --
+   even those with an anonymous authorization -- to retrieve the
+   'supportedSASLMechanisms' attribute of the root DSE both before and
+   after the SASL authentication exchange.  The purpose of the latter is
+   to allow the client to detect possible downgrade attacks (see Section
+   6.4 and [RFC4422], Section 6.1.2).
+
+   Because SASL mechanisms provide critical security functions, clients
+   and servers should be configurable to specify what mechanisms are
+   acceptable and allow only those mechanisms to be used.  Both clients
+   and servers must confirm that the negotiated security level meets
+   their requirements before proceeding to use the session.
+
+
+
+
+Harrison                    Standards Track                    [Page 18]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+5.2.1.6.  Rules for Using SASL Layers
+
+   Upon installing a SASL layer, the client SHOULD discard or refresh
+   all information about the server that it obtained prior to the
+   initiation of the SASL negotiation and that it did not obtain through
+   secure mechanisms.
+
+   If a lower-level security layer (such as TLS) is installed, any SASL
+   layer SHALL be layered on top of such security layers regardless of
+   the order of their negotiation.  In all other respects, the SASL
+   layer and other security layers act independently, e.g., if both a
+   TLS layer and a SASL layer are in effect, then removing the TLS layer
+   does not affect the continuing service of the SASL layer.
+
+5.2.1.7.  Support for Multiple Authentications
+
+   LDAP supports multiple SASL authentications as defined in [RFC4422],
+   Section 4.
+
+5.2.1.8.  SASL Authorization Identities
+
+   Some SASL mechanisms allow clients to request a desired authorization
+   identity for the LDAP session ([RFC4422], Section 3.4).  The decision
+   to allow or disallow the current authentication identity to have
+   access to the requested authorization identity is a matter of local
+   policy.  The authorization identity is a string of UTF-8 [RFC3629]
+   encoded [Unicode] characters corresponding to the following Augmented
+   Backus-Naur Form (ABNF) [RFC4234] grammar:
+
+      authzId = dnAuthzId / uAuthzId
+
+      ; distinguished-name-based authz id
+      dnAuthzId =  "dn:" distinguishedName
+
+      ; unspecified authorization id, UTF-8 encoded
+      uAuthzId = "u:" userid
+      userid = *UTF8 ; syntax unspecified
+
+   where the distinguishedName rule is defined in Section 3 of [RFC4514]
+   and the UTF8 rule is defined in Section 1.4 of [RFC4512].
+
+   The dnAuthzId choice is used to assert authorization identities in
+   the form of a distinguished name to be matched in accordance with the
+   distinguishedNameMatch matching rule ([RFC4517], Section 4.2.15).
+   There is no requirement that the asserted distinguishedName value be
+   that of an entry in the directory.
+
+
+
+
+
+Harrison                    Standards Track                    [Page 19]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   The uAuthzId choice allows clients to assert an authorization
+   identity that is not in distinguished name form.  The format of
+   userid is defined only as a sequence of UTF-8 [RFC3629] encoded
+   [Unicode] characters, and any further interpretation is a local
+   matter.  For example, the userid could identify a user of a specific
+   directory service, be a login name, or be an email address.  A
+   uAuthzId SHOULD NOT be assumed to be globally unique.  To compare
+   uAuthzId values, each uAuthzId value MUST be prepared as a "query"
+   string ([RFC3454], Section 7) using the SASLprep [RFC4013] algorithm,
+   and then the two values are compared octet-wise.
+
+   The above grammar is extensible.  The authzId production may be
+   extended to support additional forms of identities.  Each form is
+   distinguished by its unique prefix (see Section 3.12 of [RFC4520] for
+   registration requirements).
+
+5.2.2.  SASL Semantics within LDAP
+
+   Implementers must take care to maintain the semantics of SASL
+   specifications when handling data that has different semantics in the
+   LDAP protocol.
+
+   For example, the SASL DIGEST-MD5 authentication mechanism
+   [DIGEST-MD5] utilizes an authentication identity and a realm that are
+   syntactically simple strings and semantically simple username
+   [RFC4013] and realm values.  These values are not LDAP DNs, and there
+   is no requirement that they be represented or treated as such.
+
+5.2.3.  SASL EXTERNAL Authentication Mechanism
+
+   A client can use the SASL EXTERNAL ([RFC4422], Appendix A) mechanism
+   to request the LDAP server to authenticate and establish a resulting
+   authorization identity using security credentials exchanged by a
+   lower security layer (such as by TLS authentication).  If the
+   client's authentication credentials have not been established at a
+   lower security layer, the SASL EXTERNAL Bind MUST fail with a
+   resultCode of inappropriateAuthentication.  Although this situation
+   has the effect of leaving the LDAP session in an anonymous state
+   (Section 4), the state of any installed security layer is unaffected.
+
+   A client may either request that its authorization identity be
+   automatically derived from its authentication credentials exchanged
+   at a lower security layer, or it may explicitly provide a desired
+   authorization identity.  The former is known as an implicit
+   assertion, and the latter as an explicit assertion.
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 20]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+5.2.3.1.  Implicit Assertion
+
+   An implicit authorization identity assertion is performed by invoking
+   a Bind request of the SASL form using the EXTERNAL mechanism name
+   that does not include the optional credentials field (found within
+   the SaslCredentials sequence in the BindRequest).  The server will
+   derive the client's authorization identity from the authentication
+   identity supplied by a security layer (e.g., a public key certificate
+   used during TLS layer installation) according to local policy.  The
+   underlying mechanics of how this is accomplished are implementation
+   specific.
+
+5.2.3.2.  Explicit Assertion
+
+   An explicit authorization identity assertion is performed by invoking
+   a Bind request of the SASL form using the EXTERNAL mechanism name
+   that includes the credentials field (found within the SaslCredentials
+   sequence in the BindRequest).  The value of the credentials field (an
+   OCTET STRING) is the asserted authorization identity and MUST be
+   constructed as documented in Section 5.2.1.8.
+
+6.  Security Considerations
+
+   Security issues are discussed throughout this document.  The
+   unsurprising conclusion is that security is an integral and necessary
+   part of LDAP.  This section discusses a number of LDAP-related
+   security considerations.
+
+6.1.  General LDAP Security Considerations
+
+   LDAP itself provides no security or protection from accessing or
+   updating the directory by means other than through the LDAP protocol,
+   e.g., from inspection of server database files by database
+   administrators.
+
+   Sensitive data may be carried in almost any LDAP message, and its
+   disclosure may be subject to privacy laws or other legal regulation
+   in many countries.  Implementers should take appropriate measures to
+   protect sensitive data from disclosure to unauthorized entities.
+
+   A session on which the client has not established data integrity and
+   privacy services (e.g., via StartTLS, IPsec, or a suitable SASL
+   mechanism) is subject to man-in-the-middle attacks to view and modify
+   information in transit.  Client and server implementers SHOULD take
+   measures to protect sensitive data in the LDAP session from these
+   attacks by using data protection services as discussed in this
+   document.  Clients and servers should provide the ability to be
+   configured to require these protections.  A resultCode of
+
+
+
+Harrison                    Standards Track                    [Page 21]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   confidentialityRequired indicates that the server requires
+   establishment of (stronger) data confidentiality protection in order
+   to perform the requested operation.
+
+   Access control should always be applied when reading sensitive
+   information or updating directory information.
+
+   Various security factors, including authentication and authorization
+   information and data security services may change during the course
+   of the LDAP session, or even during the performance of a particular
+   operation.  Implementations should be robust in the handling of
+   changing security factors.
+
+6.2.  StartTLS Security Considerations
+
+   All security gained via use of the StartTLS operation is gained by
+   the use of TLS itself.  The StartTLS operation, on its own, does not
+   provide any additional security.
+
+   The level of security provided through the use of TLS depends
+   directly on both the quality of the TLS implementation used and the
+   style of usage of that implementation.  Additionally, a man-in-the-
+   middle attacker can remove the StartTLS extended operation from the
+   'supportedExtension' attribute of the root DSE.  Both parties SHOULD
+   independently ascertain and consent to the security level achieved
+   once TLS is established and before beginning use of the TLS-
+   protected session.  For example, the security level of the TLS layer
+   might have been negotiated down to plaintext.
+
+   Clients MUST either warn the user when the security level achieved
+   does not provide an acceptable level of data confidentiality and/or
+   data integrity protection, or be configurable to refuse to proceed
+   without an acceptable level of security.
+
+   As stated in Section 3.1.2, a server may use a local security policy
+   to determine whether to successfully complete TLS negotiation.
+   Information in the user's certificate that is originated or verified
+   by the certification authority should be used by the policy
+   administrator when configuring the identification and authorization
+   policy.
+
+   Server implementers SHOULD allow server administrators to elect
+   whether and when data confidentiality and integrity are required, as
+   well as elect whether authentication of the client during the TLS
+   handshake is required.
+
+   Implementers should be aware of and understand TLS security
+   considerations as discussed in the TLS specification [RFC4346].
+
+
+
+Harrison                    Standards Track                    [Page 22]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+6.3.  Bind Operation Security Considerations
+
+   This section discusses several security considerations relevant to
+   LDAP authentication via the Bind operation.
+
+6.3.1.  Unauthenticated Mechanism Security Considerations
+
+   Operational experience shows that clients can (and frequently do)
+   misuse the unauthenticated authentication mechanism of the simple
+   Bind method (see Section 5.1.2).  For example, a client program might
+   make a decision to grant access to non-directory information on the
+   basis of successfully completing a Bind operation.  LDAP server
+   implementations may return a success response to an unauthenticated
+   Bind request.  This may erroneously leave the client with the
+   impression that the server has successfully authenticated the
+   identity represented by the distinguished name when in reality, an
+   anonymous authorization state has been established.  Clients that use
+   the results from a simple Bind operation to make authorization
+   decisions should actively detect unauthenticated Bind requests (by
+   verifying that the supplied password is not empty) and react
+   appropriately.
+
+6.3.2.  Name/Password Mechanism Security Considerations
+
+   The name/password authentication mechanism of the simple Bind method
+   discloses the password to the server, which is an inherent security
+   risk.  There are other mechanisms, such as SASL DIGEST-MD5
+   [DIGEST-MD5], that do not disclose the password to the server.
+
+6.3.3.  Password-Related Security Considerations
+
+   LDAP allows multi-valued password attributes.  In systems where
+   entries are expected to have one and only one password,
+   administrative controls should be provided to enforce this behavior.
+
+   The use of clear text passwords and other unprotected authentication
+   credentials is strongly discouraged over open networks when the
+   underlying transport service cannot guarantee confidentiality.  LDAP
+   implementations SHOULD NOT by default support authentication methods
+   using clear text passwords and other unprotected authentication
+   credentials unless the data on the session is protected using TLS or
+   other data confidentiality and data integrity protection.
+
+   The transmission of passwords in the clear -- typically for
+   authentication or modification -- poses a significant security risk.
+   This risk can be avoided by using SASL authentication [RFC4422]
+
+
+
+
+
+Harrison                    Standards Track                    [Page 23]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   mechanisms that do not transmit passwords in the clear or by
+   negotiating transport or session layer data confidentiality services
+   before transmitting password values.
+
+   To mitigate the security risks associated with the transfer of
+   passwords, a server implementation that supports any password-based
+   authentication mechanism that transmits passwords in the clear MUST
+   support a policy mechanism that at the time of authentication or
+   password modification, requires that:
+
+         A TLS layer has been successfully installed.
+
+         OR
+
+         Some other data confidentiality mechanism that protects the
+         password value from eavesdropping has been provided.
+
+         OR
+
+         The server returns a resultCode of confidentialityRequired for
+         the operation (i.e., name/password Bind with password value,
+         SASL Bind transmitting a password value in the clear, add or
+         modify including a userPassword value, etc.), even if the
+         password value is correct.
+
+   Server implementations may also want to provide policy mechanisms to
+   invalidate or otherwise protect accounts in situations where a server
+   detects that a password for an account has been transmitted in the
+   clear.
+
+6.3.4.  Hashed Password Security Considerations
+
+   Some authentication mechanisms (e.g., DIGEST-MD5) transmit a hash of
+   the password value that may be vulnerable to offline dictionary
+   attacks.  Implementers should take care to protect such hashed
+   password values during transmission using TLS or other
+   confidentiality mechanisms.
+
+6.4.  SASL Security Considerations
+
+   Until data integrity service is installed on an LDAP session, an
+   attacker can modify the transmitted values of the
+   'supportedSASLMechanisms' attribute response and thus downgrade the
+   list of available SASL mechanisms to include only the least secure
+   mechanism.  To detect this type of attack, the client may retrieve
+   the SASL mechanisms the server makes available both before and after
+   data integrity service is installed on an LDAP session.  If the
+   client finds that the integrity-protected list (the list obtained
+
+
+
+Harrison                    Standards Track                    [Page 24]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   after data integrity service was installed) contains a stronger
+   mechanism than those in the previously obtained list, the client
+   should assume the previously obtained list was modified by an
+   attacker.  In this circumstance it is recommended that the client
+   close the underlying transport connection and then reconnect to
+   reestablish the session.
+
+6.5.  Related Security Considerations
+
+   Additional security considerations relating to the various
+   authentication methods and mechanisms discussed in this document
+   apply and can be found in [RFC4422], [RFC4013], [RFC3454], and
+   [RFC3629].
+
+7.  IANA Considerations
+
+   The IANA has updated the LDAP Protocol Mechanism registry to indicate
+   that this document and [RFC4511] provide the definitive technical
+   specification for the StartTLS (1.3.6.1.4.1.1466.20037) extended
+   operation.
+
+   The IANA has updated the LDAP LDAPMessage types registry to indicate
+   that this document and [RFC4511] provide the definitive technical
+   specification for the bindRequest (0) and bindResponse (1) message
+   types.
+
+   The IANA has updated the LDAP Bind Authentication Method registry to
+   indicate that this document and [RFC4511] provide the definitive
+   technical specification for the simple (0) and sasl (3) bind
+   authentication methods.
+
+   The IANA has updated the LDAP authzid prefixes registry to indicate
+   that this document provides the definitive technical specification
+   for the dnAuthzId (dn:) and uAuthzId (u:) authzid prefixes.
+
+8.  Acknowledgements
+
+   This document combines information originally contained in RFC 2251,
+   RFC 2829, and RFC 2830.  RFC 2251 was a product of the Access,
+   Searching, and Indexing of Directories (ASID) Working Group.  RFC
+   2829 and RFC 2830 were products of the LDAP Extensions (LDAPEXT)
+   Working Group.
+
+   This document is a product of the IETF LDAP Revision (LDAPBIS)
+   working group.
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 25]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+9.  Normative References
+
+   [RFC791]     Postel, J., "Internet Protocol", STD 5, RFC 791,
+                September 1981.
+
+   [RFC2119]    Bradner, S., "Key words for use in RFCs to Indicate
+                Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC2460]    Deering, S. and R. Hinden, "Internet Protocol, Version 6
+                (IPv6) Specification", RFC 2460, December 1998.
+
+   [RFC3454]    Hoffman, P. and M. Blanchet, "Preparation of
+                Internationalized Strings ("stringprep")", RFC 3454,
+                December 2002.
+
+   [RFC3490]    Faltstrom, P., Hoffman, P., and A. Costello,
+                "Internationalizing Domain Names in Applications
+                (IDNA)", RFC 3490, March 2003.
+
+   [RFC3629]    Yergeau, F., "UTF-8, a transformation format of ISO
+                10646", STD 63, RFC 3629, November 2003.
+
+   [RFC4013]    Zeilenga, K., "SASLprep: Stringprep Profile for User
+                Names and Passwords", RFC 4013, February 2005.
+
+   [RFC4234]    Crocker, D. and P. Overell, "Augmented BNF for Syntax
+                Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4346]    Dierks, T. and E. Rescorla, "The TLS Protocol Version
+                1.1", RFC 4346, March 2006.
+
+   [RFC4422]    Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple
+                Authentication and Security Layer (SASL)", RFC 4422,
+                June 2006.
+
+   [RFC4510]    Zeilenga, K., Ed., "Lightweight Directory Access
+                Protocol (LDAP): Technical Specification Road Map", RFC
+                4510, June 2006.
+
+   [RFC4511]    Sermersheim, J., Ed., "Lightweight Directory Access
+                Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]    Zeilenga, K., "Lightweight Directory Access Protocol
+                (LDAP): Directory Information Models", RFC 4512, June
+                2006.
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 26]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   [RFC4514]    Zeilenga, K., Ed., "Lightweight Directory Access
+                Protocol (LDAP): String Representation of Distinguished
+                Names", RFC 4514, June 2006.
+
+   [RFC4517]    Legg, S., Ed., "Lightweight Directory Access Protocol
+                (LDAP): Syntaxes and Matching Rules", RFC 4517, June
+                2006.
+
+   [RFC4519]    Sciberras, A., Ed., "Lightweight Directory Access
+                Protocol (LDAP): Schema for User Applications", RFC
+                4519, June 2006.
+
+   [RFC4520]    Zeilenga, K., "Internet Assigned Numbers Authority
+                (IANA) Considerations for the Lightweight Directory
+                Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [Unicode]    The Unicode Consortium, "The Unicode Standard, Version
+                3.2.0" is defined by "The Unicode Standard, Version 3.0"
+                (Reading, MA, Addison-Wesley, 2000.  ISBN 0-201-61633-
+                5), as amended by the "Unicode Standard Annex #27:
+                Unicode 3.1" (http://www.unicode.org/reports/tr27/) and
+                by the "Unicode Standard Annex #28: Unicode 3.2"
+                (http://www.unicode.org/reports/tr28/).
+
+   [X.501]      ITU-T Rec. X.501, "The Directory: Models", 1993.
+
+10.  Informative References
+
+   [DIGEST-MD5] Leach, P., Newman, C., and A. Melnikov, "Using Digest
+                Authentication as a SASL Mechanism", Work in Progress,
+                March 2006.
+
+   [PLAIN]      Zeilenga, K., "The Plain SASL Mechanism", Work in
+                Progress, March 2005.
+
+   [RFC2828]    Shirey, R., "Internet Security Glossary", FYI 36, RFC
+                2828, May 2000.
+
+   [RFC4301]    Kent, S. and K. Seo, "Security Architecture for the
+                Internet Protocol", RFC 4301, December 2005.
+
+   [RFC4505]    Zeilenga, K., "The Anonymous SASL Mechanism", RFC 4505,
+                June 2006.
+
+
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 27]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+Appendix A.  Authentication and Authorization Concepts
+
+   This appendix is non-normative.
+
+   This appendix defines basic terms, concepts, and interrelationships
+   regarding authentication, authorization, credentials, and identity.
+   These concepts are used in describing how various security approaches
+   are utilized in client authentication and authorization.
+
+A.1.  Access Control Policy
+
+   An access control policy is a set of rules defining the protection of
+   resources, generally in terms of the capabilities of persons or other
+   entities accessing those resources.  Security objects and mechanisms,
+   such as those described here, enable the expression of access control
+   policies and their enforcement.
+
+A.2.  Access Control Factors
+
+   A request, when it is being processed by a server, may be associated
+   with a wide variety of security-related factors.  The server uses
+   these factors to determine whether and how to process the request.
+   These are called access control factors (ACFs).  They might include
+   source IP address, encryption strength, the type of operation being
+   requested, time of day, etc..  Some factors may be specific to the
+   request itself; others may be associated with the transport
+   connection via which the request is transmitted; and others (e.g.,
+   time of day) may be "environmental".
+
+   Access control policies are expressed in terms of access control
+   factors; for example, "a request having ACFs i,j,k can perform
+   operation Y on resource Z".  The set of ACFs that a server makes
+   available for such expressions is implementation specific.
+
+A.3.  Authentication, Credentials, Identity
+
+   Authentication credentials are the evidence supplied by one party to
+   another, asserting the identity of the supplying party (e.g., a user)
+   who is attempting to establish a new authorization state with the
+   other party (typically a server).  Authentication is the process of
+   generating, transmitting, and verifying these credentials and thus
+   the identity they assert.  An authentication identity is the name
+   presented in a credential.
+
+   There are many forms of authentication credentials.  The form used
+   depends upon the particular authentication mechanism negotiated by
+   the parties.  X.509 certificates, Kerberos tickets, and simple
+   identity and password pairs are all examples of authentication
+
+
+
+Harrison                    Standards Track                    [Page 28]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   credential forms.  Note that an authentication mechanism may
+   constrain the form of authentication identities used with it.
+
+A.4.  Authorization Identity
+
+   An authorization identity is one kind of access control factor.  It
+   is the name of the user or other entity that requests that operations
+   be performed.  Access control policies are often expressed in terms
+   of authorization identities; for example, "entity X can perform
+   operation Y on resource Z".
+
+   The authorization identity of an LDAP session is often semantically
+   the same as the authentication identity presented by the client, but
+   it may be different.  SASL allows clients to specify an authorization
+   identity distinct from the authentication identity asserted by the
+   client's credentials.  This permits agents such as proxy servers to
+   authenticate using their own credentials, yet request the access
+   privileges of the identity for which they are proxying [RFC4422].
+   Also, the form of authentication identity supplied by a service like
+   TLS may not correspond to the authorization identities used to
+   express a server's access control policy, thus requiring a server-
+   specific mapping to be done.  The method by which a server composes
+   and validates an authorization identity from the authentication
+   credentials supplied by a client is implementation specific.
+
+Appendix B.  Summary of Changes
+
+   This appendix is non-normative.
+
+   This appendix summarizes substantive changes made to RFC 2251, RFC
+   2829 and RFC 2830.  In addition to the specific changes detailed
+   below, the reader of this document should be aware that numerous
+   general editorial changes have been made to the original content from
+   the source documents.  These changes include the following:
+
+   - The material originally found in RFC 2251 Sections 4.2.1 and 4.2.2,
+     RFC 2829 (all sections except Sections 2 and 4), and RFC 2830 was
+     combined into a single document.
+
+   - The combined material was substantially reorganized and edited to
+     group related subjects, improve the document flow, and clarify
+     intent.
+
+   - Changes were made throughout the text to align with definitions of
+     LDAP protocol layers and IETF security terminology.
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 29]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+   - Substantial updates and additions were made to security
+     considerations from both documents based on current operational
+     experience.
+
+B.1.  Changes Made to RFC 2251
+
+   This section summarizes the substantive changes made to Sections
+   4.2.1 and 4.2.2 of RFC 2251 by this document.  Additional substantive
+   changes to Section 4.2.1 of RFC 2251 are also documented in
+   [RFC4511].
+
+B.1.1.  Section 4.2.1 ("Sequencing of the Bind Request")
+
+   - Paragraph 1: Removed the sentence, "If at any stage the client
+     wishes to abort the bind process it MAY unbind and then drop the
+     underlying connection".  The Unbind operation still permits this
+     behavior, but it is not documented explicitly.
+
+   - Clarified that the session is moved to an anonymous state upon
+     receipt of the BindRequest PDU and that it is only moved to a non-
+     anonymous state if and when the Bind request is successful.
+
+B.1.2.  Section 4.2.2 ("Authentication and Other Security Services")
+
+   - RFC 2251 states that anonymous authentication MUST be performed
+     using the simple bind method.  This specification defines the
+     anonymous authentication mechanism of the simple bind method and
+     requires all conforming implementations to support it.  Other
+     authentication mechanisms producing anonymous authentication and
+     authorization state may also be implemented and used by conforming
+     implementations.
+
+B.2.  Changes Made to RFC 2829
+
+   This section summarizes the substantive changes made to RFC 2829.
+
+B.2.1.  Section 4 ("Required security mechanisms")
+
+   - The name/password authentication mechanism (see Section B.2.5
+     below) protected by TLS replaces the SASL DIGEST-MD5 mechanism as
+     LDAP's mandatory-to-implement password-based authentication
+     mechanism.  Implementations are encouraged to continue supporting
+     SASL DIGEST-MD5 [DIGEST-MD5].
+
+
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 30]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+B.2.2.  Section 5.1 ("Anonymous authentication procedure")
+
+   - Clarified that anonymous authentication involves a name value of
+     zero length and a password value of zero length.  The
+     unauthenticated authentication mechanism was added to handle simple
+     Bind requests involving a name value with a non-zero length and a
+     password value of zero length.
+
+B.2.3.  Section 6 ("Password-based authentication")
+
+   - See Section B.2.1.
+
+B.2.4.  Section 6.1 ("Digest authentication")
+
+   - As the SASL-DIGEST-MD5 mechanism is no longer mandatory to
+     implement, this section is now historical and was not included in
+     this document.  RFC 2829, Section 6.1, continues to document the
+     SASL DIGEST-MD5 authentication mechanism.
+
+B.2.5.  Section 6.2 ("'simple' authentication choice under TLS
+        encryption")
+
+   - Renamed the "simple" authentication mechanism to the name/password
+     authentication mechanism to better describe it.
+
+   - The use of TLS was generalized to align with definitions of LDAP
+     protocol layers.  TLS establishment is now discussed as an
+     independent subject and is generalized for use with all
+     authentication mechanisms and other security layers.
+
+   - Removed the implication that the userPassword attribute is the sole
+     location for storage of password values to be used in
+     authentication.  There is no longer any implied requirement for how
+     or where passwords are stored at the server for use in
+     authentication.
+
+B.2.6.  Section 6.3 ("Other authentication choices with TLS")
+
+   - See Section B.2.5.
+
+B.2.7.  Section 7.1 ("Certificate-based authentication with TLS")
+
+   - See Section B.2.5.
+
+
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 31]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+B.2.8.  Section 8 ("Other mechanisms")
+
+   - All SASL authentication mechanisms are explicitly allowed within
+     LDAP.  Specifically, this means the SASL ANONYMOUS and SASL PLAIN
+     mechanisms are no longer precluded from use within LDAP.
+
+B.2.9.  Section 9 ("Authorization Identity")
+
+   - Specified matching rules for dnAuthzId and uAuthzId values.  In
+     particular, the DN value in the dnAuthzId form must be matched
+     using DN matching rules, and the uAuthzId value MUST be prepared
+     using SASLprep rules before being compared octet-wise.
+
+   - Clarified that uAuthzId values should not be assumed to be globally
+     unique.
+
+B.2.10.  Section 10 ("TLS Ciphersuites")
+
+   - TLS ciphersuite recommendations are no longer included in this
+     specification.  Implementations must now support the
+     TLS_RSA_WITH_3DES_EDE_CBC_SHA ciphersuite and should continue to
+     support the TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA ciphersuite.
+
+   - Clarified that anonymous authentication involves a name value of
+     zero length and a password value of zero length.  The
+     unauthenticated authentication mechanism was added to handle simple
+     Bind requests involving a name value with a non-zero length and a
+     password value of zero length.
+
+B.3.  Changes Made to RFC 2830
+
+   This section summarizes the substantive changes made to Sections 3
+   and 5 of RFC 2830.  Readers should consult [RFC4511] for summaries of
+   changes to other sections.
+
+B.3.1.  Section 3.6 ("Server Identity Check")
+
+   - Substantially updated the server identity check algorithm to ensure
+     that it is complete and robust.  In particular, the use of all
+     relevant values in the subjectAltName and the subjectName fields
+     are covered by the algorithm and matching rules are specified for
+     each type of value.  Mapped (derived) forms of the server identity
+     may now be used when the mapping is performed in a secure fashion.
+
+
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 32]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+B.3.2.  Section 3.7 ("Refresh of Server Capabilities Information")
+
+   - Clients are no longer required to always refresh information about
+     server capabilities following TLS establishment.  This is to allow
+     for situations where this information was obtained through a secure
+     mechanism.
+
+B.3.3.  Section 5 ("Effects of TLS on a Client's Authorization
+        Identity")
+
+   - Establishing a TLS layer on an LDAP session may now cause the
+     authorization state of the LDAP session to change.
+
+B.3.4.  Section 5.2 ("TLS Connection Closure Effects")
+
+   - Closing a TLS layer on an LDAP session changes the authentication
+     and authorization state of the LDAP session based on local policy.
+     Specifically, this means that implementations are not required to
+     change the authentication and authorization states to anonymous
+     upon TLS closure.
+
+   - Replaced references to RFC 2401 with RFC 4301.
+
+Author's Address
+
+   Roger Harrison
+   Novell, Inc.
+   1800 S.  Novell Place
+   Provo, UT 84606
+   USA
+
+   Phone: +1 801 861 2642
+   EMail: roger_harrison at novell.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 33]
+
+RFC 4513              LDAP Authentication Methods              June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Harrison                    Standards Track                    [Page 34]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4514.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4514.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4514.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4514.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,843 @@
+
+
+
+
+
+
+Network Working Group                                   K. Zeilenga, Ed.
+Request for Comments: 4514                           OpenLDAP Foundation
+Obsoletes: 2253                                                June 2006
+Category: Standards Track
+
+
+             Lightweight Directory Access Protocol (LDAP):
+              String Representation of Distinguished Names
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   The X.500 Directory uses distinguished names (DNs) as primary keys to
+   entries in the directory.  This document defines the string
+   representation used in the Lightweight Directory Access Protocol
+   (LDAP) to transfer distinguished names.  The string representation is
+   designed to give a clean representation of commonly used
+   distinguished names, while being able to represent any distinguished
+   name.
+
+1.  Background and Intended Usage
+
+   In X.500-based directory systems [X.500], including those accessed
+   using the Lightweight Directory Access Protocol (LDAP) [RFC4510],
+   distinguished names (DNs) are used to unambiguously refer to
+   directory entries [X.501][RFC4512].
+
+   The structure of a DN [X.501] is described in terms of ASN.1 [X.680].
+   In the X.500 Directory Access Protocol [X.511] (and other ITU-defined
+   directory protocols), DNs are encoded using the Basic Encoding Rules
+   (BER) [X.690].  In LDAP, DNs are represented in the string form
+   described in this document.
+
+   It is important to have a common format to be able to unambiguously
+   represent a distinguished name.  The primary goal of this
+   specification is ease of encoding and decoding.  A secondary goal is
+   to have names that are human readable.  It is not expected that LDAP
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+   implementations with a human user interface would display these
+   strings directly to the user, but that they would most likely be
+   performing translations (such as expressing attribute type names in
+   the local national language).
+
+   This document defines the string representation of Distinguished
+   Names used in LDAP [RFC4511][RFC4517].  Section 2 details the
+   RECOMMENDED algorithm for converting a DN from its ASN.1 structured
+   representation to a string.  Section 3 details how to convert a DN
+   from a string to an ASN.1 structured representation.
+
+   While other documents may define other algorithms for converting a DN
+   from its ASN.1 structured representation to a string, all algorithms
+   MUST produce strings that adhere to the requirements of Section 3.
+
+   This document does not define a canonical string representation for
+   DNs.  Comparison of DNs for equality is to be performed in accordance
+   with the distinguishedNameMatch matching rule [RFC4517].
+
+   This document is a integral part of the LDAP technical specification
+   [RFC4510], which obsoletes the previously defined LDAP technical
+   specification, RFC 3377, in its entirety.  This document obsoletes
+   RFC 2253.  Changes since RFC 2253 are summarized in Appendix B.
+
+   This specification assumes familiarity with X.500 [X.500] and the
+   concept of Distinguished Name [X.501][RFC4512].
+
+1.1.  Conventions
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+   Character names in this document use the notation for code points and
+   names from the Unicode Standard [Unicode].  For example, the letter
+   "a" may be represented as either <U+0061> or <LATIN SMALL LETTER A>.
+
+   Note: a glossary of terms used in Unicode can be found in [Glossary].
+   Information on the Unicode character encoding model can be found in
+   [CharModel].
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+2.  Converting DistinguishedName from ASN.1 to a String
+
+   X.501 [X.501] defines the ASN.1 [X.680] structure of distinguished
+   name.  The following is a variant provided for discussion purposes.
+
+      DistinguishedName ::= RDNSequence
+
+      RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
+
+      RelativeDistinguishedName ::= SET SIZE (1..MAX) OF
+          AttributeTypeAndValue
+
+      AttributeTypeAndValue ::= SEQUENCE {
+          type  AttributeType,
+          value AttributeValue }
+
+   This section defines the RECOMMENDED algorithm for converting a
+   distinguished name from an ASN.1-structured representation to a UTF-8
+   [RFC3629] encoded Unicode [Unicode] character string representation.
+   Other documents may describe other algorithms for converting a
+   distinguished name to a string, but only strings that conform to the
+   grammar defined in Section 3 SHALL be produced by LDAP
+   implementations.
+
+2.1.  Converting the RDNSequence
+
+   If the RDNSequence is an empty sequence, the result is the empty or
+   zero-length string.
+
+   Otherwise, the output consists of the string encodings of each
+   RelativeDistinguishedName in the RDNSequence (according to Section
+   2.2), starting with the last element of the sequence and moving
+   backwards toward the first.
+
+   The encodings of adjoining RelativeDistinguishedNames are separated
+   by a comma (',' U+002C) character.
+
+2.2.  Converting RelativeDistinguishedName
+
+   When converting from an ASN.1 RelativeDistinguishedName to a string,
+   the output consists of the string encodings of each
+   AttributeTypeAndValue (according to Section 2.3), in any order.
+
+   Where there is a multi-valued RDN, the outputs from adjoining
+   AttributeTypeAndValues are separated by a plus sign ('+' U+002B)
+   character.
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+2.3.  Converting AttributeTypeAndValue
+
+   The AttributeTypeAndValue is encoded as the string representation of
+   the AttributeType, followed by an equals sign ('=' U+003D) character,
+   followed by the string representation of the AttributeValue.  The
+   encoding of the AttributeValue is given in Section 2.4.
+
+   If the AttributeType is defined to have a short name (descriptor)
+   [RFC4512] and that short name is known to be registered [REGISTRY]
+   [RFC4520] as identifying the AttributeType, that short name, a
+   <descr>, is used.  Otherwise the AttributeType is encoded as the
+   dotted-decimal encoding, a <numericoid>, of its OBJECT IDENTIFIER.
+   The <descr> and <numericoid> are defined in [RFC4512].
+
+   Implementations are not expected to dynamically update their
+   knowledge of registered short names.  However, implementations SHOULD
+   provide a mechanism to allow their knowledge of registered short
+   names to be updated.
+
+2.4.  Converting an AttributeValue from ASN.1 to a String
+
+   If the AttributeType is of the dotted-decimal form, the
+   AttributeValue is represented by an number sign ('#' U+0023)
+   character followed by the hexadecimal encoding of each of the octets
+   of the BER encoding of the X.500 AttributeValue.  This form is also
+   used when the syntax of the AttributeValue does not have an LDAP-
+   specific ([RFC4517], Section 3.1) string encoding defined for it, or
+   the LDAP-specific string encoding is not restricted to UTF-8-encoded
+   Unicode characters.  This form may also be used in other cases, such
+   as when a reversible string representation is desired (see Section
+   5.2).
+
+   Otherwise, if the AttributeValue is of a syntax that has a LDAP-
+   specific string encoding, the value is converted first to a UTF-8-
+   encoded Unicode string according to its syntax specification (see
+   [RFC4517], Section 3.3, for examples).  If that UTF-8-encoded Unicode
+   string does not have any of the following characters that need
+   escaping, then that string can be used as the string representation
+   of the value.
+
+      - a space (' ' U+0020) or number sign ('#' U+0023) occurring at
+        the beginning of the string;
+
+      - a space (' ' U+0020) character occurring at the end of the
+        string;
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+      - one of the characters '"', '+', ',', ';', '<', '>',  or '\'
+        (U+0022, U+002B, U+002C, U+003B, U+003C, U+003E, or U+005C,
+        respectively);
+
+      - the null (U+0000) character.
+
+   Other characters may be escaped.
+
+   Each octet of the character to be escaped is replaced by a backslash
+   and two hex digits, which form a single octet in the code of the
+   character.  Alternatively, if and only if the character to be escaped
+   is one of
+
+      ' ', '"', '#', '+', ',', ';', '<', '=', '>', or '\'
+      (U+0020, U+0022, U+0023, U+002B, U+002C, U+003B,
+       U+003C, U+003D, U+003E, U+005C, respectively)
+
+   it can be prefixed by a backslash ('\' U+005C).
+
+   Examples of the escaping mechanism are shown in Section 4.
+
+3.  Parsing a String Back to a Distinguished Name
+
+   The string representation of Distinguished Names is restricted to
+   UTF-8 [RFC3629] encoded Unicode [Unicode] characters.  The structure
+   of this string representation is specified using the following
+   Augmented BNF [RFC4234] grammar:
+
+      distinguishedName = [ relativeDistinguishedName
+          *( COMMA relativeDistinguishedName ) ]
+      relativeDistinguishedName = attributeTypeAndValue
+          *( PLUS attributeTypeAndValue )
+      attributeTypeAndValue = attributeType EQUALS attributeValue
+      attributeType = descr / numericoid
+      attributeValue = string / hexstring
+
+      ; The following characters are to be escaped when they appear
+      ; in the value to be encoded: ESC, one of <escaped>, leading
+      ; SHARP or SPACE, trailing SPACE, and NULL.
+      string =   [ ( leadchar / pair ) [ *( stringchar / pair )
+         ( trailchar / pair ) ] ]
+
+      leadchar = LUTF1 / UTFMB
+      LUTF1 = %x01-1F / %x21 / %x24-2A / %x2D-3A /
+         %x3D / %x3F-5B / %x5D-7F
+
+      trailchar  = TUTF1 / UTFMB
+      TUTF1 = %x01-1F / %x21 / %x23-2A / %x2D-3A /
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+         %x3D / %x3F-5B / %x5D-7F
+
+      stringchar = SUTF1 / UTFMB
+      SUTF1 = %x01-21 / %x23-2A / %x2D-3A /
+         %x3D / %x3F-5B / %x5D-7F
+
+      pair = ESC ( ESC / special / hexpair )
+      special = escaped / SPACE / SHARP / EQUALS
+      escaped = DQUOTE / PLUS / COMMA / SEMI / LANGLE / RANGLE
+      hexstring = SHARP 1*hexpair
+      hexpair = HEX HEX
+
+   where the productions <descr>, <numericoid>, <COMMA>, <DQUOTE>,
+   <EQUALS>, <ESC>, <HEX>, <LANGLE>, <NULL>, <PLUS>, <RANGLE>, <SEMI>,
+   <SPACE>, <SHARP>, and <UTFMB> are defined in [RFC4512].
+
+   Each <attributeType>, either a <descr> or a <numericoid>, refers to
+   an attribute type of an attribute value assertion (AVA).  The
+   <attributeType> is followed by an <EQUALS> and an <attributeValue>.
+   The <attributeValue> is either in <string> or <hexstring> form.
+
+   If in <string> form, a LDAP string representation asserted value can
+   be obtained by replacing (left to right, non-recursively) each <pair>
+   appearing in the <string> as follows:
+
+      replace <ESC><ESC> with <ESC>;
+      replace <ESC><special> with <special>;
+      replace <ESC><hexpair> with the octet indicated by the <hexpair>.
+
+   If in <hexstring> form, a BER representation can be obtained from
+   converting each <hexpair> of the <hexstring> to the octet indicated
+   by the <hexpair>.
+
+   There is one or more attribute value assertions, separated by <PLUS>,
+   for a relative distinguished name.
+
+   There is zero or more relative distinguished names, separated by
+   <COMMA>, for a distinguished name.
+
+   Implementations MUST recognize AttributeType name strings
+   (descriptors) listed in the following table, but MAY recognize other
+   name strings.
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+      String  X.500 AttributeType
+      ------  --------------------------------------------
+      CN      commonName (2.5.4.3)
+      L       localityName (2.5.4.7)
+      ST      stateOrProvinceName (2.5.4.8)
+      O       organizationName (2.5.4.10)
+      OU      organizationalUnitName (2.5.4.11)
+      C       countryName (2.5.4.6)
+      STREET  streetAddress (2.5.4.9)
+      DC      domainComponent (0.9.2342.19200300.100.1.25)
+      UID     userId (0.9.2342.19200300.100.1.1)
+
+   These attribute types are described in [RFC4519].
+
+   Implementations MAY recognize other DN string representations.
+   However, as there is no requirement that alternative DN string
+   representations be recognized (and, if so, how), implementations
+   SHOULD only generate DN strings in accordance with Section 2 of this
+   document.
+
+4.  Examples
+
+   This notation is designed to be convenient for common forms of name.
+   This section gives a few examples of distinguished names written
+   using this notation.  First is a name containing three relative
+   distinguished names (RDNs):
+
+      UID=jsmith,DC=example,DC=net
+
+   Here is an example of a name containing three RDNs, in which the
+   first RDN is multi-valued:
+
+      OU=Sales+CN=J.  Smith,DC=example,DC=net
+
+   This example shows the method of escaping of a special characters
+   appearing in a common name:
+
+      CN=James \"Jim\" Smith\, III,DC=example,DC=net
+
+   The following shows the method for encoding a value that contains a
+   carriage return character:
+
+      CN=Before\0dAfter,DC=example,DC=net
+
+   In this RDN example, the type in the RDN is unrecognized, and the
+   value is the BER encoding of an OCTET STRING containing two octets,
+   0x48 and 0x69.
+
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+      1.3.6.1.4.1.1466.0=#04024869
+
+   Finally, this example shows an RDN whose commonName value consists of
+   5 letters:
+
+      Unicode Character                Code       UTF-8   Escaped
+      -------------------------------  ------     ------  --------
+      LATIN CAPITAL LETTER L           U+004C     0x4C    L
+      LATIN SMALL LETTER U             U+0075     0x75    u
+      LATIN SMALL LETTER C WITH CARON  U+010D     0xC48D  \C4\8D
+      LATIN SMALL LETTER I             U+0069     0x69    i
+      LATIN SMALL LETTER C WITH ACUTE  U+0107     0xC487  \C4\87
+
+   This could be encoded in printable ASCII [ASCII] (useful for
+   debugging purposes) as:
+
+      CN=Lu\C4\8Di\C4\87
+
+5.  Security Considerations
+
+   The following security considerations are specific to the handling of
+   distinguished names.  LDAP security considerations are discussed in
+   [RFC4511] and other documents comprising the LDAP Technical
+   Specification [RFC4510].
+
+5.1.  Disclosure
+
+   Distinguished Names typically consist of descriptive information
+   about the entries they name, which can be people, organizations,
+   devices, or other real-world objects.  This frequently includes some
+   of the following kinds of information:
+
+      - the common name of the object (i.e., a person's full name)
+      - an email or TCP/IP address
+      - its physical location (country, locality, city, street address)
+      - organizational attributes (such as department name or
+        affiliation)
+
+   In some cases, such information can be considered sensitive.  In many
+   countries, privacy laws exist that prohibit disclosure of certain
+   kinds of descriptive information (e.g., email addresses).  Hence,
+   server implementers are encouraged to support Directory Information
+   Tree (DIT) structural rules and name forms [RFC4512], as these
+   provide a mechanism for administrators to select appropriate naming
+   attributes for entries.  Administrators are encouraged to use
+   mechanisms, access controls, and other administrative controls that
+   may be available to restrict use of attributes containing sensitive
+   information in naming of entries.   Additionally, use of
+
+
+
+Zeilenga                    Standards Track                     [Page 8]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+   authentication and data security services in LDAP [RFC4513][RFC4511]
+   should be considered.
+
+5.2.  Use of Distinguished Names in Security Applications
+
+   The transformations of an AttributeValue value from its X.501 form to
+   an LDAP string representation are not always reversible back to the
+   same BER (Basic Encoding Rules) or DER (Distinguished Encoding Rules)
+   form.  An example of a situation that requires the DER form of a
+   distinguished name is the verification of an X.509 certificate.
+
+   For example, a distinguished name consisting of one RDN with one AVA,
+   in which the type is commonName and the value is of the TeletexString
+   choice with the letters 'Sam', would be represented in LDAP as the
+   string <CN=Sam>.  Another distinguished name in which the value is
+   still 'Sam', but is of the PrintableString choice, would have the
+   same representation <CN=Sam>.
+
+   Applications that require the reconstruction of the DER form of the
+   value SHOULD NOT use the string representation of attribute syntaxes
+   when converting a distinguished name to the LDAP format.  Instead,
+   they SHOULD use the hexadecimal form prefixed by the number sign ('#'
+   U+0023) as described in the first paragraph of Section 2.4.
+
+6.  Acknowledgements
+
+   This document is an update to RFC 2253, by Mark Wahl, Tim Howes, and
+   Steve Kille.  RFC 2253 was a product of the IETF ASID Working Group.
+
+   This document is a product of the IETF LDAPBIS Working Group.
+
+7.  References
+
+7.1.  Normative References
+
+   [REGISTRY]    IANA, Object Identifier Descriptors Registry,
+                 <http://www.iana.org/assignments/ldap-parameters>.
+
+   [Unicode]     The Unicode Consortium, "The Unicode Standard, Version
+                 3.2.0" is defined by "The Unicode Standard, Version
+                 3.0" (Reading, MA, Addison-Wesley, 2000.  ISBN 0-201-
+                 61633-5), as amended by the "Unicode Standard Annex
+                 #27: Unicode 3.1"
+                 (http://www.unicode.org/reports/tr27/) and by the
+                 "Unicode Standard Annex #28: Unicode 3.2"
+                 (http://www.unicode.org/reports/tr28/).
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 9]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+   [X.501]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Models," X.501(1993) (also ISO/IEC 9594-
+                 2:1994).
+
+   [X.680]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "Abstract
+                 Syntax Notation One (ASN.1) - Specification of Basic
+                 Notation", X.680(1997) (also ISO/IEC 8824-1:1998).
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3629]     Yergeau, F., "UTF-8, a transformation format of ISO
+                 10646", STD 63, RFC 3629, November 2003.
+
+   [RFC4234]     Crocker, D. and P. Overell, "Augmented BNF for Syntax
+                 Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4510]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Directory Information Models", RFC 4512, June
+                 2006.
+
+   [RFC4513]     Harrison, R., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Authentication Methods and Security
+                 Mechanisms", RFC 4513, June 2006.
+
+   [RFC4517]     Legg, S., Ed., "Lightweight Directory Access Protocol
+                 (LDAP): Syntaxes and Matching Rules", RFC 4517, June
+                 2006.
+
+   [RFC4519]     Sciberras, A., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Schema for User Applications", RFC
+                 4519, June 2006.
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 10]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+7.2.  Informative References
+
+   [ASCII]       Coded Character Set--7-bit American Standard Code for
+                 Information Interchange, ANSI X3.4-1986.
+
+   [CharModel]   Whistler, K. and M. Davis, "Unicode Technical Report
+                 #17, Character Encoding Model", UTR17,
+                 <http://www.unicode.org/unicode/reports/tr17/>, August
+                 2000.
+
+   [Glossary]    The Unicode Consortium, "Unicode Glossary",
+                 <http://www.unicode.org/glossary/>.
+
+   [X.500]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Overview of concepts, models and
+                 services," X.500(1993) (also ISO/IEC 9594-1:1994).
+
+   [X.511]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory: Abstract Service Definition", X.511(1993)
+                 (also ISO/IEC 9594-3:1993).
+
+   [X.690]       International Telecommunication Union -
+                 Telecommunication Standardization Sector,
+                 "Specification of ASN.1 encoding rules: Basic Encoding
+                 Rules (BER), Canonical Encoding Rules (CER), and
+                 Distinguished Encoding Rules (DER)", X.690(1997) (also
+                 ISO/IEC 8825-1:1998).
+
+   [RFC2849]     Good, G., "The LDAP Data Interchange Format (LDIF) -
+                 Technical Specification", RFC 2849, June 2000.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 11]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+Appendix A.  Presentation Issues
+
+   This appendix is provided for informational purposes only; it is not
+   a normative part of this specification.
+
+   The string representation described in this document is not intended
+   to be presented to humans without translation.  However, at times it
+   may be desirable to present non-translated DN strings to users.  This
+   section discusses presentation issues associated with non-translated
+   DN strings.  Issues with presentation of translated DN strings are
+   not discussed in this appendix.  Transcoding issues are also not
+   discussed in this appendix.
+
+   This appendix provides guidance for applications presenting DN
+   strings to users.  This section is not comprehensive; it does not
+   discuss all presentation issues that implementers may face.
+
+   Not all user interfaces are capable of displaying the full set of
+   Unicode characters.  Some Unicode characters are not displayable.
+
+   It is recommended that human interfaces use the optional hex pair
+   escaping mechanism (Section 2.3) to produce a string representation
+   suitable for display to the user.  For example, an application can
+   generate a DN string for display that escapes all non-printable
+   characters appearing in the AttributeValue's string representation
+   (as demonstrated in the final example of Section 4).
+
+   When a DN string is displayed in free-form text, it is often
+   necessary to distinguish the DN string from surrounding text.  While
+   this is often done with whitespace (as demonstrated in Section 4), it
+   is noted that DN strings may end with whitespace.  Careful readers of
+   Section 3 will note that the characters '<' (U+003C) and '>' (U+003E)
+   may only appear in the DN string if escaped.  These characters are
+   intended to be used in free-form text to distinguish a DN string from
+   surrounding text.  For example, <CN=Sam\ > distinguishes the string
+   representation of the DN composed of one RDN consisting of the AVA
+   (the commonName (CN) value 'Sam ') from the surrounding text.  It
+   should be noted to the user that the wrapping '<' and '>' characters
+   are not part of the DN string.
+
+   DN strings can be quite long.  It is often desirable to line-wrap
+   overly long DN strings in presentations.  Line wrapping should be
+   done by inserting whitespace after the RDN separator character or, if
+   necessary, after the AVA separator character.  It should be noted to
+   the user that the inserted whitespace is not part of the DN string
+   and is to be removed before use in LDAP.  For example, the following
+   DN string is long:
+
+
+
+
+Zeilenga                    Standards Track                    [Page 12]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+         CN=Kurt D.  Zeilenga,OU=Engineering,L=Redwood Shores,
+         O=OpenLDAP Foundation,ST=California,C=US
+
+   So it has been line-wrapped for readability.  The extra whitespace is
+   to be removed before the DN string is used in LDAP.
+
+   Inserting whitespace is not advised because it may not be obvious to
+   the user which whitespace is part of the DN string and which
+   whitespace was added for readability.
+
+   Another alternative is to use the LDAP Data Interchange Format (LDIF)
+   [RFC2849].  For example:
+
+         # This entry has a long DN...
+         dn: CN=Kurt D.  Zeilenga,OU=Engineering,L=Redwood Shores,
+          O=OpenLDAP Foundation,ST=California,C=US
+         CN: Kurt D.  Zeilenga
+         SN: Zeilenga
+         objectClass: person
+
+Appendix B.  Changes Made since RFC 2253
+
+   This appendix is provided for informational purposes only, it is not
+   a normative part of this specification.
+
+   The following substantive changes were made to RFC 2253:
+
+      - Removed IESG Note.  The IESG Note has been addressed.
+      - Replaced all references to ISO 10646-1 with [Unicode].
+      - Clarified (in Section 1) that this document does not define a
+        canonical string representation.
+      - Clarified that Section 2 describes the RECOMMENDED encoding
+        algorithm and that alternative algorithms are allowed.  Some
+        encoding options described in RFC 2253 are now treated as
+        alternative algorithms in this specification.
+      - Revised specification (in Section 2) to allow short names of any
+        registered attribute type to appear in string representations of
+        DNs instead of being restricted to a "published table".  Removed
+        "as an example" language.  Added statement (in Section 3)
+        allowing recognition of additional names but require recognition
+        of those names in the published table.  The table now appears in
+        Section 3.
+      - Removed specification of additional requirements for LDAPv2
+        implementations which also support LDAPv3 (RFC 2253, Section 4)
+        as LDAPv2 is now Historic.
+      - Allowed recognition of alternative string representations.
+      - Updated Section 2.4 to allow hex pair escaping of all characters
+        and clarified escaping for when multiple octet UTF-8 encodings
+
+
+
+Zeilenga                    Standards Track                    [Page 13]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+        are present.  Indicated that null (U+0000) character is to be
+        escaped.  Indicated that equals sign ('=' U+003D) character may
+        be escaped as '\='.
+      - Rewrote Section 3 to use ABNF as defined in RFC 4234.
+      - Updated the Section 3 ABNF.  Changes include:
+        + allowed AttributeType short names of length 1 (e.g., 'L'),
+        + used more restrictive <oid> production in AttributeTypes,
+        + did not require escaping of equals sign ('=' U+003D)
+          characters,
+        + did not require escaping of non-leading number sign ('#'
+          U+0023) characters,
+        + allowed space (' ' U+0020) to be escaped as '\ ',
+        + required hex escaping of null (U+0000) characters, and
+        + removed LDAPv2-only constructs.
+      - Updated Section 3 to describe how to parse elements of the
+        grammar.
+      - Rewrote examples.
+      - Added reference to documentations containing general LDAP
+        security considerations.
+      - Added discussion of presentation issues (Appendix A).
+      - Added this appendix.
+
+   In addition, numerous editorial changes were made.
+
+Editor's Address
+
+   Kurt D.  Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 14]
+
+RFC 4514               LDAP: Distinguished Names               June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 15]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4515.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4515.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4515.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4515.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,675 @@
+
+
+
+
+
+
+Network Working Group                                      M. Smith, Ed.
+Request for Comments: 4515                           Pearl Crescent, LLC
+Obsoletes: 2254                                                 T. Howes
+Category: Standards Track                                  Opsware, Inc.
+                                                               June 2006
+
+
+             Lightweight Directory Access Protocol (LDAP):
+                String Representation of Search Filters
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   Lightweight Directory Access Protocol (LDAP) search filters are
+   transmitted in the LDAP protocol using a binary representation that
+   is appropriate for use on the network.  This document defines a
+   human-readable string representation of LDAP search filters that is
+   appropriate for use in LDAP URLs (RFC 4516) and in other
+   applications.
+
+Table of Contents
+
+   1. Introduction ....................................................2
+   2. LDAP Search Filter Definition ...................................2
+   3. String Search Filter Definition .................................3
+   4. Examples ........................................................5
+   5. Security Considerations .........................................7
+   6. Normative References ............................................7
+   7. Informative References ..........................................8
+   8. Acknowledgements ................................................8
+   Appendix A: Changes Since RFC 2254 .................................9
+      A.1. Technical Changes ..........................................9
+      A.2. Editorial Changes ..........................................9
+
+
+
+
+
+
+
+Smith and Howes             Standards Track                     [Page 1]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+1.  Introduction
+
+   The Lightweight Directory Access Protocol (LDAP) [RFC4510] defines a
+   network representation of a search filter transmitted to an LDAP
+   server.  Some applications may find it useful to have a common way of
+   representing these search filters in a human-readable form; LDAP URLs
+   [RFC4516] are an example of one such application.  This document
+   defines a human-readable string format for representing the full
+   range of possible LDAP version 3 search filters, including extended
+   match filters.
+
+   This document is a integral part of the LDAP technical specification
+   [RFC4510], which obsoletes the previously defined LDAP technical
+   specification, RFC 3377, in its entirety.
+
+   This document replaces RFC 2254.  Changes to RFC 2254 are summarized
+   in Appendix A.
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+2.  LDAP Search Filter Definition
+
+   An LDAP search filter is defined in Section 4.5.1 of [RFC4511] as
+   follows:
+
+        Filter ::= CHOICE {
+            and                [0] SET SIZE (1..MAX) OF filter Filter,
+            or                 [1] SET SIZE (1..MAX) OF filter Filter,
+            not                [2] Filter,
+            equalityMatch      [3] AttributeValueAssertion,
+            substrings         [4] SubstringFilter,
+            greaterOrEqual     [5] AttributeValueAssertion,
+            lessOrEqual        [6] AttributeValueAssertion,
+            present            [7] AttributeDescription,
+            approxMatch        [8] AttributeValueAssertion,
+            extensibleMatch    [9] MatchingRuleAssertion }
+
+        SubstringFilter ::= SEQUENCE {
+            type    AttributeDescription,
+            -- initial and final can occur at most once
+            substrings    SEQUENCE SIZE (1..MAX) OF substring CHOICE {
+             initial        [0] AssertionValue,
+             any            [1] AssertionValue,
+             final          [2] AssertionValue } }
+
+
+
+
+
+Smith and Howes             Standards Track                     [Page 2]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+        AttributeValueAssertion ::= SEQUENCE {
+            attributeDesc   AttributeDescription,
+            assertionValue  AssertionValue }
+
+        MatchingRuleAssertion ::= SEQUENCE {
+            matchingRule    [1] MatchingRuleId OPTIONAL,
+            type            [2] AttributeDescription OPTIONAL,
+            matchValue      [3] AssertionValue,
+            dnAttributes    [4] BOOLEAN DEFAULT FALSE }
+
+        AttributeDescription ::= LDAPString
+                        -- Constrained to <attributedescription>
+                        -- [RFC4512]
+
+        AttributeValue ::= OCTET STRING
+
+        MatchingRuleId ::= LDAPString
+
+        AssertionValue ::= OCTET STRING
+
+        LDAPString ::= OCTET STRING -- UTF-8 encoded,
+                                    -- [Unicode] characters
+
+   The AttributeDescription, as defined in [RFC4511], is a string
+   representation of the attribute description that is discussed in
+   [RFC4512].  The AttributeValue and AssertionValue OCTET STRING have
+   the form defined in [RFC4517].  The Filter is encoded for
+   transmission over a network using the Basic Encoding Rules (BER)
+   defined in [X.690], with simplifications described in [RFC4511].
+
+3.  String Search Filter Definition
+
+   The string representation of an LDAP search filter is a string of
+   UTF-8 [RFC3629] encoded Unicode characters [Unicode] that is defined
+   by the following grammar, following the ABNF notation defined in
+   [RFC4234].  The productions used that are not defined here are
+   defined in Section 1.4 (Common ABNF Productions) of [RFC4512] unless
+   otherwise noted.  The filter format uses a prefix notation.
+
+      filter         = LPAREN filtercomp RPAREN
+      filtercomp     = and / or / not / item
+      and            = AMPERSAND filterlist
+      or             = VERTBAR filterlist
+      not            = EXCLAMATION filter
+      filterlist     = 1*filter
+      item           = simple / present / substring / extensible
+      simple         = attr filtertype assertionvalue
+      filtertype     = equal / approx / greaterorequal / lessorequal
+
+
+
+Smith and Howes             Standards Track                     [Page 3]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+      equal          = EQUALS
+      approx         = TILDE EQUALS
+      greaterorequal = RANGLE EQUALS
+      lessorequal    = LANGLE EQUALS
+      extensible     = ( attr [dnattrs]
+                           [matchingrule] COLON EQUALS assertionvalue )
+                       / ( [dnattrs]
+                            matchingrule COLON EQUALS assertionvalue )
+      present        = attr EQUALS ASTERISK
+      substring      = attr EQUALS [initial] any [final]
+      initial        = assertionvalue
+      any            = ASTERISK *(assertionvalue ASTERISK)
+      final          = assertionvalue
+      attr           = attributedescription
+                         ; The attributedescription rule is defined in
+                         ; Section 2.5 of [RFC4512].
+      dnattrs        = COLON "dn"
+      matchingrule   = COLON oid
+      assertionvalue = valueencoding
+      ; The <valueencoding> rule is used to encode an <AssertionValue>
+      ; from Section 4.1.6 of [RFC4511].
+      valueencoding  = 0*(normal / escaped)
+      normal         = UTF1SUBSET / UTFMB
+      escaped        = ESC HEX HEX
+      UTF1SUBSET     = %x01-27 / %x2B-5B / %x5D-7F
+                          ; UTF1SUBSET excludes 0x00 (NUL), LPAREN,
+                          ; RPAREN, ASTERISK, and ESC.
+      EXCLAMATION    = %x21 ; exclamation mark ("!")
+      AMPERSAND      = %x26 ; ampersand (or AND symbol) ("&")
+      ASTERISK       = %x2A ; asterisk ("*")
+      COLON          = %x3A ; colon (":")
+      VERTBAR        = %x7C ; vertical bar (or pipe) ("|")
+      TILDE          = %x7E ; tilde ("~")
+
+   Note that although both the <substring> and <present> productions in
+   the grammar above can produce the "attr=*" construct, this construct
+   is used only to denote a presence filter.
+
+   The <valueencoding> rule ensures that the entire filter string is a
+   valid UTF-8 string and provides that the octets that represent the
+   ASCII characters "*" (ASCII 0x2a), "(" (ASCII 0x28), ")" (ASCII
+   0x29), "\" (ASCII 0x5c), and NUL (ASCII 0x00) are represented as a
+   backslash "\" (ASCII 0x5c) followed by the two hexadecimal digits
+   representing the value of the encoded octet.
+
+
+
+
+
+
+
+Smith and Howes             Standards Track                     [Page 4]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+   This simple escaping mechanism eliminates filter-parsing ambiguities
+   and allows any filter that can be represented in LDAP to be
+   represented as a NUL-terminated string.  Other octets that are part
+   of the <normal> set may be escaped using this mechanism, for example,
+   non-printing ASCII characters.
+
+   For AssertionValues that contain UTF-8 character data, each octet of
+   the character to be escaped is replaced by a backslash and two hex
+   digits, which form a single octet in the code of the character.  For
+   example, the filter checking whether the "cn" attribute contained a
+   value with the character "*" anywhere in it would be represented as
+   "(cn=*\2a*)".
+
+   As indicated by the <valueencoding> rule, implementations MUST escape
+   all octets greater than 0x7F that are not part of a valid UTF-8
+   encoding sequence when they generate a string representation of a
+   search filter.  Implementations SHOULD accept as input strings that
+   are not valid UTF-8 strings.  This is necessary because RFC 2254 did
+   not clearly define the term "string representation" (and in
+   particular did not mention that the string representation of an LDAP
+   search filter is a string of UTF-8-encoded Unicode characters).
+
+4.  Examples
+
+   This section gives a few examples of search filters written using
+   this notation.
+
+        (cn=Babs Jensen)
+        (!(cn=Tim Howes))
+        (&(objectClass=Person)(|(sn=Jensen)(cn=Babs J*)))
+        (o=univ*of*mich*)
+        (seeAlso=)
+
+   The following examples illustrate the use of extensible matching.
+
+        (cn:caseExactMatch:=Fred Flintstone)
+        (cn:=Betty Rubble)
+        (sn:dn:2.4.6.8.10:=Barney Rubble)
+        (o:dn:=Ace Industry)
+        (:1.2.3:=Wilma Flintstone)
+        (:DN:2.4.6.8.10:=Dino)
+
+   The first example shows use of the matching rule "caseExactMatch."
+
+   The second example demonstrates use of a MatchingRuleAssertion form
+   without a matchingRule.
+
+
+
+
+
+Smith and Howes             Standards Track                     [Page 5]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+   The third example illustrates the use of the ":oid" notation to
+   indicate that the matching rule identified by the OID "2.4.6.8.10"
+   should be used when making comparisons, and that the attributes of an
+   entry's distinguished name should be considered part of the entry
+   when evaluating the match (indicated by the use of ":dn").
+
+   The fourth example denotes an equality match, except that DN
+   components should be considered part of the entry when doing the
+   match.
+
+   The fifth example is a filter that should be applied to any attribute
+   supporting the matching rule given (since the <attr> has been
+   omitted).
+
+   The sixth and final example is also a filter that should be applied
+   to any attribute supporting the matching rule given.  Attributes
+   supporting the matching rule contained in the DN should also be
+   considered.
+
+   The following examples illustrate the use of the escaping mechanism.
+
+        (o=Parens R Us \28for all your parenthetical needs\29)
+        (cn=*\2A*)
+        (filename=C:\5cMyFile)
+        (bin=\00\00\00\04)
+        (sn=Lu\c4\8di\c4\87)
+        (1.3.6.1.4.1.1466.0=\04\02\48\69)
+
+   The first example shows the use of the escaping mechanism to
+   represent parenthesis characters.  The second shows how to represent
+   a "*" in an assertion value, preventing it from being interpreted as
+   a substring indicator.  The third illustrates the escaping of the
+   backslash character.
+
+   The fourth example shows a filter searching for the four-octet value
+   00 00 00 04 (hex), illustrating the use of the escaping mechanism to
+   represent arbitrary data, including NUL characters.
+
+   The fifth example illustrates the use of the escaping mechanism to
+   represent various non-ASCII UTF-8 characters.  Specifically, there
+   are 5 characters in the <assertionvalue> portion of this example:
+   LATIN CAPITAL LETTER L (U+004C), LATIN SMALL LETTER U (U+0075), LATIN
+   SMALL LETTER C WITH CARON (U+010D), LATIN SMALL LETTER I (U+0069),
+   and LATIN SMALL LETTER C WITH ACUTE (U+0107).
+
+   The sixth and final example demonstrates assertion of a BER-encoded
+   value.
+
+
+
+
+Smith and Howes             Standards Track                     [Page 6]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+5.  Security Considerations
+
+   This memo describes a string representation of LDAP search filters.
+   While the representation itself has no known security implications,
+   LDAP search filters do.  They are interpreted by LDAP servers to
+   select entries from which data is retrieved.  LDAP servers should
+   take care to protect the data they maintain from unauthorized access.
+
+   Please refer to the Security Considerations sections of [RFC4511] and
+   [RFC4513] for more information.
+
+6.  Normative References
+
+   [RFC2119]   Bradner, S., "Key words for use in RFCs to Indicate
+               Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3629]   Yergeau, F., "UTF-8, a transformation format of ISO
+               10646", STD 63, RFC 3629, November 2003.
+
+   [RFC4234]   Crocker, D. and P. Overell, "Augmented BNF for Syntax
+               Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4510]   Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+               (LDAP): Technical Specification Road Map", RFC 4510, June
+               2006.
+
+   [RFC4511]   Sermersheim, J., Ed., "Lightweight Directory Access
+               Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]   Zeilenga, K., "Lightweight Directory Access Protocol
+               (LDAP): Directory Information Models", RFC 4512, June
+               2006.
+
+   [RFC4513]   Harrison, R., Ed., "Lightweight Directory Access Protocol
+               (LDAP): Authentication Methods and Security Mechanisms",
+               RFC 4513, June 2006.
+
+   [RFC4517]   Legg, S., Ed., "Lightweight Directory Access Protocol
+               (LDAP): Syntaxes and Matching Rules", RFC 4517, June
+               2006.
+
+   [Unicode]   The Unicode Consortium, "The Unicode Standard, Version
+               3.2.0" is defined by "The Unicode Standard, Version 3.0"
+               (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
+               as amended by the "Unicode Standard Annex #27: Unicode
+               3.1" (http://www.unicode.org/reports/tr27/) and by the
+               "Unicode Standard Annex #28: Unicode 3.2."
+
+
+
+
+Smith and Howes             Standards Track                     [Page 7]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+7.  Informative References
+
+   [RFC4516]   Smith, M., Ed. and T. Howes, "Lightweight Directory
+               Access Protocol (LDAP): Uniform Resource Locator", RFC
+               4516, June 2006.
+
+   [X.690]     Specification of ASN.1 encoding rules: Basic, Canonical,
+               and Distinguished Encoding Rules, ITU-T Recommendation
+               X.690, 1994.
+
+8.  Acknowledgements
+
+   This document replaces RFC 2254 by Tim Howes.  RFC 2254 was a product
+   of the IETF ASID Working Group.
+
+   Changes included in this revised specification are based upon
+   discussions among the authors, discussions within the LDAP (v3)
+   Revision Working Group (ldapbis), and discussions within other IETF
+   Working Groups.  The contributions of individuals in these working
+   groups is gratefully acknowledged.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Smith and Howes             Standards Track                     [Page 8]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+Appendix A: Changes Since RFC 2254
+
+A.1.  Technical Changes
+
+   Replaced [ISO 10646] reference with [Unicode].
+
+   The following technical changes were made to the contents of the
+   "String Search Filter Definition" section:
+
+   Added statement that the string representation is a string of UTF-8-
+   encoded Unicode characters.
+
+   Revised all of the ABNF to use common productions from [RFC4512].
+
+   Replaced the "value" rule with a new "assertionvalue" rule within the
+   "simple", "extensible", and "substring" ("initial", "any", and
+   "final") rules.  This matches a change made in [RFC4517].
+
+   Added "(" and ")" around the components of the <extensible>
+   subproductions for clarity.
+
+   Revised the "attr", "matchingrule", and "assertionvalue" ABNF to more
+   precisely reference productions from the [RFC4512] and [RFC4511]
+   documents.
+
+   "String Search Filter Definition" section: replaced "greater" and
+   "less" with "greaterorequal" and "lessorequal" to avoid confusion.
+
+   Introduced the "valueencoding" and associated "normal" and "escaped"
+   rules to reduce the dependence on descriptive text.  The "normal"
+   production restricts filter strings to valid UTF-8 sequences.
+
+   Added a statement about expected behavior in light of RFC 2254's lack
+   of a clear definition of "string representation."
+
+A.2.  Editorial Changes
+
+   Changed document title to include "LDAP:" prefix.
+
+   IESG Note: removed note about lack of satisfactory mandatory
+   authentication mechanisms.
+
+   Header and "Authors' Addresses" sections: added Mark Smith as the
+   document editor and updated affiliation and contact information.
+
+   "Table of Contents" and "Intellectual Property" sections: added.
+
+   Copyright: updated per latest IETF guidelines.
+
+
+
+Smith and Howes             Standards Track                     [Page 9]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+   "Abstract" section: separated from introductory material.
+
+   "Introduction" section: new section; separated from the Abstract.
+   Updated second paragraph to indicate that RFC 2254 is replaced by
+   this document (instead of RFC 1960).  Added reference to the
+   [RFC4510] document.
+
+   "LDAP Search Filter Definition" section: made corrections to the LDAP
+   search filter ABNF so it matches that used in [RFC4511].
+
+   Clarified the definition of 'value' (now 'assertionvalue') to take
+   into account the fact that it is not precisely an AttributeAssertion
+   from [RFC4511] Section 4.1.6 (special handling is required for some
+   characters).  Added a note that each octet of a character to be
+   escaped is replaced by a backslash and two hex digits, which
+   represent a single octet.
+
+   "Examples" section: added four additional examples: (seeAlso=),
+   (cn:=Betty Rubble), (:1.2.3:=Wilma Flintstone), and
+   (1.3.6.1.4.1.1466.0=\04\02\48\69).  Replaced one occurrence of "a
+   value" with "an assertion value".  Corrected the description of this
+   example: (sn:dn:2.4.6.8.10:=Barney Rubble).  Replaced the numeric OID
+   in the first extensible match example with "caseExactMatch" to
+   demonstrate use of the descriptive form.  Used "DN" (uppercase) in
+   the last extensible match example to remind the reader to treat the
+   <dnattrs> production as case insensitive.  Reworded the description
+   of the fourth escaping mechanism example to avoid making assumptions
+   about byte order.  Added text to the fifth escaping mechanism example
+   to spell out what the non-ASCII characters are in Unicode terms.
+
+   "Security Considerations" section: added references to [RFC4511] and
+   [RFC4513].
+
+   "Normative References" section: renamed from "References" per new RFC
+   guidelines.  Changed from [1] style to [RFC4511] style throughout the
+   document.  Added entries for [Unicode], [RFC2119], [RFC4513],
+   [RFC4512], and [RFC4510] and updated the UTF-8 reference.  Replaced
+   RFC 822 reference with a reference to RFC 4234.
+
+   "Informative References" section: (new section) moved [X.690] to this
+   section.  Added a reference to [RFC4516].
+
+   "Acknowledgements" section: added.
+
+   "Appendix A: Changes Since RFC 2254" section: added.
+
+   Surrounded the names of all ABNF productions with "<" and ">" where
+   they are used in descriptive text.
+
+
+
+Smith and Howes             Standards Track                    [Page 10]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+   Replaced all occurrences of "LDAPv3" with "LDAP."
+
+Authors' Addresses
+
+   Mark Smith, Editor
+   Pearl Crescent, LLC
+   447 Marlpool Dr.
+   Saline, MI 48176
+   USA
+
+   Phone: +1 734 944-2856
+   EMail: mcs at pearlcrescent.com
+
+
+   Tim Howes
+   Opsware, Inc.
+   599 N. Mathilda Ave.
+   Sunnyvale, CA 94085
+   USA
+
+   Phone: +1 408 744-7509
+   EMail: howes at opsware.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Smith and Howes             Standards Track                    [Page 11]
+
+RFC 4515     LDAP: String Representation of Search Filters     June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Smith and Howes             Standards Track                    [Page 12]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4516.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4516.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4516.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4516.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,843 @@
+
+
+
+
+
+
+Network Working Group                                      M. Smith, Ed.
+Request for Comments: 4516                           Pearl Crescent, LLC
+Obsoletes: 2255                                                 T. Howes
+Category: Standards Track                                  Opsware, Inc.
+                                                               June 2006
+
+
+             Lightweight Directory Access Protocol (LDAP):
+                        Uniform Resource Locator
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document describes a format for a Lightweight Directory Access
+   Protocol (LDAP) Uniform Resource Locator (URL).  An LDAP URL
+   describes an LDAP search operation that is used to retrieve
+   information from an LDAP directory, or, in the context of an LDAP
+   referral or reference, an LDAP URL describes a service where an LDAP
+   operation may be progressed.
+
+Table of Contents
+
+   1. Introduction ....................................................2
+   2. URL Definition ..................................................2
+      2.1. Percent-Encoding ...........................................4
+   3. Defaults for Fields of the LDAP URL .............................5
+   4. Examples ........................................................6
+   5. Security Considerations .........................................8
+   6. Normative References ............................................9
+   7. Informative References .........................................10
+   8. Acknowledgements ...............................................10
+   Appendix A: Changes Since RFC 2255 ................................11
+      A.1. Technical Changes .........................................11
+      A.2. Editorial Changes .........................................11
+
+
+
+
+
+
+Smith & Howes               Standards Track                     [Page 1]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+1.  Introduction
+
+   LDAP is the Lightweight Directory Access Protocol [RFC4510].  This
+   document specifies the LDAP URL format for version 3 of LDAP and
+   clarifies how LDAP URLs are resolved.  This document also defines an
+   extension mechanism for LDAP URLs.  This mechanism may be used to
+   provide access to new LDAP extensions.
+
+   Note that not all the parameters of the LDAP search operation
+   described in [RFC4511] can be expressed using the format defined in
+   this document.  Note also that URLs may be used to represent
+   reference knowledge, including that for non-search operations.
+
+   This document is an integral part of the LDAP technical specification
+   [RFC4510], which obsoletes the previously defined LDAP technical
+   specification, RFC 3377, in its entirety.
+
+   This document replaces RFC 2255.  See Appendix A for a list of
+   changes relative to RFC 2255.
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+2.  URL Definition
+
+   An LDAP URL begins with the protocol prefix "ldap" and is defined by
+   the following grammar, following the ABNF notation defined in
+   [RFC4234].
+
+      ldapurl     = scheme COLON SLASH SLASH [host [COLON port]]
+                       [SLASH dn [QUESTION [attributes]
+                       [QUESTION [scope] [QUESTION [filter]
+                       [QUESTION extensions]]]]]
+                                      ; <host> and <port> are defined
+                                      ;   in Sections 3.2.2 and 3.2.3
+                                      ;   of [RFC3986].
+                                      ; <filter> is from Section 3 of
+                                      ;   [RFC4515], subject to the
+                                      ;   provisions of the
+                                      ;   "Percent-Encoding" section
+                                      ;   below.
+
+      scheme      = "ldap"
+
+
+
+
+
+
+
+Smith & Howes               Standards Track                     [Page 2]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+      dn          = distinguishedName ; From Section 3 of [RFC4514],
+                                      ; subject to the provisions of
+                                      ; the "Percent-Encoding"
+                                      ; section below.
+
+      attributes  = attrdesc *(COMMA attrdesc)
+      attrdesc    = selector *(COMMA selector)
+      selector    = attributeSelector ; From Section 4.5.1 of
+                                      ; [RFC4511], subject to the
+                                      ; provisions of the
+                                      ; "Percent-Encoding" section
+                                      ; below.
+
+      scope       = "base" / "one" / "sub"
+      extensions  = extension *(COMMA extension)
+      extension   = [EXCLAMATION] extype [EQUALS exvalue]
+      extype      = oid               ; From section 1.4 of [RFC4512].
+
+      exvalue     = LDAPString        ; From section 4.1.2 of
+                                      ; [RFC4511], subject to the
+                                      ; provisions of the
+                                      ; "Percent-Encoding" section
+                                      ; below.
+
+      EXCLAMATION = %x21              ; exclamation mark ("!")
+      SLASH       = %x2F              ; forward slash ("/")
+      COLON       = %x3A              ; colon (":")
+      QUESTION    = %x3F              ; question mark ("?")
+
+   The "ldap" prefix indicates an entry or entries accessible from the
+   LDAP server running on the given hostname at the given portnumber.
+   Note that the <host> may contain literal IPv6 addresses as specified
+   in Section 3.2.2 of [RFC3986].
+
+   The <dn> is an LDAP Distinguished Name using the string format
+   described in [RFC4514].  It identifies the base object of the LDAP
+   search or the target of a non-search operation.
+
+   The <attributes> construct is used to indicate which attributes
+   should be returned from the entry or entries.
+
+   The <scope> construct is used to specify the scope of the search to
+   perform in the given LDAP server.  The allowable scopes are "base"
+   for a base object search, "one" for a one-level search, or "sub" for
+   a subtree search.
+
+
+
+
+
+
+Smith & Howes               Standards Track                     [Page 3]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+   The <filter> is used to specify the search filter to apply to entries
+   within the specified scope during the search.  It has the format
+   specified in [RFC4515].
+
+   The <extensions> construct provides the LDAP URL with an
+   extensibility mechanism, allowing the capabilities of the URL to be
+   extended in the future.  Extensions are a simple comma-separated list
+   of type=value pairs, where the =value portion MAY be omitted for
+   options not requiring it.  Each type=value pair is a separate
+   extension.  These LDAP URL extensions are not necessarily related to
+   any of the LDAP extension mechanisms.  Extensions may be supported or
+   unsupported by the client resolving the URL.  An extension prefixed
+   with a '!' character (ASCII 0x21) is critical.  An extension not
+   prefixed with a '!' character is non-critical.
+
+   If an LDAP URL extension is implemented (that is, if the
+   implementation understands it and is able to use it), the
+   implementation MUST make use of it.  If an extension is not
+   implemented and is marked critical, the implementation MUST NOT
+   process the URL.  If an extension is not implemented and is not
+   marked critical, the implementation MUST ignore the extension.
+
+   The extension type (<extype>) MAY be specified using the numeric OID
+   <numericoid> form (e.g., 1.2.3.4) or the descriptor <descr> form
+   (e.g., myLDAPURLExtension).  Use of the <descr> form SHOULD be
+   restricted to registered object identifier descriptive names.  See
+   [RFC4520] for registration details and usage guidelines for
+   descriptive names.
+
+   No LDAP URL extensions are defined in this document.  Other documents
+   or a future version of this document MAY define one or more
+   extensions.
+
+2.1.  Percent-Encoding
+
+   A generated LDAP URL MUST consist only of the restricted set of
+   characters included in one of the following three productions defined
+   in [RFC3986]:
+
+         <reserved>
+         <unreserved>
+         <pct-encoded>
+
+   Implementations SHOULD accept other valid UTF-8 strings [RFC3629] as
+   input.  An octet MUST be encoded using the percent-encoding mechanism
+   described in section 2.1 of [RFC3986] in any of these situations:
+
+
+
+
+
+Smith & Howes               Standards Track                     [Page 4]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+      The octet is not in the reserved set defined in section 2.2 of
+      [RFC3986] or in the unreserved set defined in section 2.3 of
+      [RFC3986].
+
+      It is the single Reserved character '?' and occurs inside a <dn>,
+      <filter>, or other element of an LDAP URL.
+
+      It is a comma character ',' that occurs inside an <exvalue>.
+
+   Note that before the percent-encoding mechanism is applied, the
+   extensions component of the LDAP URL may contain one or more null
+   (zero) bytes.  No other component may.
+
+3.  Defaults for Fields of the LDAP URL
+
+   Some fields of the LDAP URL are optional, as described above.  In the
+   absence of any other specification, the following general defaults
+   SHOULD be used when a field is absent.  Note that other documents MAY
+   specify different defaulting rules; for example, section 4.1.10 of
+   [RFC4511] specifies a different rule for determining the correct DN
+   to use when it is absent in an LDAP URL that is returned as a
+   referral.
+
+   <host>
+      If no <host> is given, the client must have some a priori
+      knowledge of an appropriate LDAP server to contact.
+
+   <port>
+      The default LDAP port is TCP port 389.
+
+   <dn>
+      If no <dn> is given, the default is the zero-length DN, "".
+
+   <attributes>
+      If the <attributes> part is omitted, all user attributes of the
+      entry or entries should be requested (e.g., by setting the
+      attributes field AttributeDescriptionList in the LDAP search
+      request to a NULL list, or by using the special <alluserattrs>
+      selector "*").
+
+   <scope>
+      If <scope> is omitted, a <scope> of "base" is assumed.
+
+   <filter>
+      If <filter> is omitted, a filter of "(objectClass=*)" is assumed.
+
+   <extensions>
+      If <extensions> is omitted, no extensions are assumed.
+
+
+
+Smith & Howes               Standards Track                     [Page 5]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+4.  Examples
+
+   The following are some example LDAP URLs that use the format defined
+   above.  The first example is an LDAP URL referring to the University
+   of Michigan entry, available from an LDAP server of the client's
+   choosing:
+
+      ldap:///o=University%20of%20Michigan,c=US
+
+   The next example is an LDAP URL referring to the University of
+   Michigan entry in a particular ldap server:
+
+      ldap://ldap1.example.net/o=University%20of%20Michigan,c=US
+
+   Both of these URLs correspond to a base object search of the
+   "o=University of Michigan,c=US" entry using a filter of
+   "(objectclass=*)", requesting all attributes.
+
+   The next example is an LDAP URL referring to only the postalAddress
+   attribute of the University of Michigan entry:
+
+      ldap://ldap1.example.net/o=University%20of%20Michigan,
+             c=US?postalAddress
+
+   The corresponding LDAP search operation is the same as in the
+   previous example, except that only the postalAddress attribute is
+   requested.
+
+   The next example is an LDAP URL referring to the set of entries found
+   by querying the given LDAP server on port 6666 and doing a subtree
+   search of the University of Michigan for any entry with a common name
+   of "Babs Jensen", retrieving all attributes:
+
+      ldap://ldap1.example.net:6666/o=University%20of%20Michigan,
+             c=US??sub?(cn=Babs%20Jensen)
+
+   The next example is an LDAP URL referring to all children of the c=GB
+   entry:
+
+      LDAP://ldap1.example.com/c=GB?objectClass?ONE
+
+   The objectClass attribute is requested to be returned along with the
+   entries, and the default filter of "(objectclass=*)" is used.
+
+   The next example is an LDAP URL to retrieve the mail attribute for
+   the LDAP entry named "o=Question?,c=US", illustrating the use of the
+   percent-encoding mechanism on the reserved character '?'.
+
+
+
+
+Smith & Howes               Standards Track                     [Page 6]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+      ldap://ldap2.example.com/o=Question%3f,c=US?mail
+
+   The next example (which is broken into two lines for readability)
+   illustrates the interaction between the LDAP string representation of
+   the filters-quoting mechanism and the URL-quoting mechanisms.
+
+      ldap://ldap3.example.com/o=Babsco,c=US
+              ???(four-octet=%5c00%5c00%5c00%5c04)
+
+   The filter in this example uses the LDAP escaping mechanism of \ to
+   encode three zero or null bytes in the value.  In LDAP, the filter
+   would be written as (four-octet=\00\00\00\04).  Because the \
+   character must be escaped in a URL, the \s are percent-encoded as %5c
+   (or %5C) in the URL encoding.
+
+   The next example illustrates the interaction between the LDAP string
+   representation of the DNs-quoting mechanism and URL-quoting
+   mechanisms.
+
+      ldap://ldap.example.com/o=An%20Example%5C2C%20Inc.,c=US
+
+   The DN encoded in the above URL is:
+
+      o=An Example\2C Inc.,c=US
+
+   That is, the left-most RDN value is:
+
+      An Example, Inc.
+
+   The following three URLs are equivalent, assuming that the defaulting
+   rules specified in Section 3 of this document are used:
+
+      ldap://ldap.example.net
+      ldap://ldap.example.net/
+      ldap://ldap.example.net/?
+
+   These three URLs point to the root DSE on the ldap.example.net
+   server.
+
+   The final two examples show use of a hypothetical, experimental bind
+   name extension (the value associated with the extension is an LDAP
+   DN).
+
+      ldap:///??sub??e-bindname=cn=Manager%2cdc=example%2cdc=com
+      ldap:///??sub??!e-bindname=cn=Manager%2cdc=example%2cdc=com
+
+
+
+
+
+
+Smith & Howes               Standards Track                     [Page 7]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+   The two URLs are the same, except that the second one marks the
+   e-bindname extension as critical.  Notice the use of the percent-
+   encoding mechanism to encode the commas within the distinguished name
+   value in the e-bindname extension.
+
+5.  Security Considerations
+
+   The general URL security considerations discussed in [RFC3986] are
+   relevant for LDAP URLs.
+
+   The use of security mechanisms when processing LDAP URLs requires
+   particular care, since clients may encounter many different servers
+   via URLs, and since URLs are likely to be processed automatically,
+   without user intervention.  A client SHOULD have a user-configurable
+   policy that controls which servers the client will establish LDAP
+   sessions with and with which security mechanisms, and SHOULD NOT
+   establish LDAP sessions that are inconsistent with this policy.  If a
+   client chooses to reuse an existing LDAP session when resolving one
+   or more LDAP URLs, it MUST ensure that the session is compatible with
+   the URL and that no security policies are violated.
+
+   Sending authentication information, no matter the mechanism, may
+   violate a user's privacy requirements.  In the absence of specific
+   policy permitting authentication information to be sent to a server,
+   a client should use an anonymous LDAP session.  (Note that clients
+   conforming to previous LDAP URL specifications, where all LDAP
+   sessions are anonymous and unprotected, are consistent with this
+   specification; they simply have the default security policy.)  Simply
+   opening a transport connection to another server may violate some
+   users' privacy requirements, so clients should provide the user with
+   a way to control URL processing.
+
+   Some authentication methods, in particular, reusable passwords sent
+   to the server, may reveal easily-abused information to the remote
+   server or to eavesdroppers in transit and should not be used in URL
+   processing unless they are explicitly permitted by policy.
+   Confirmation by the human user of the use of authentication
+   information is appropriate in many circumstances.  Use of strong
+   authentication methods that do not reveal sensitive information is
+   much preferred.  If the URL represents a referral for an update
+   operation, strong authentication methods SHOULD be used.  Please
+   refer to the Security Considerations section of [RFC4513] for more
+   information.
+
+   The LDAP URL format allows the specification of an arbitrary LDAP
+   search operation to be performed when evaluating the LDAP URL.
+   Following an LDAP URL may cause unexpected results, for example, the
+   retrieval of large amounts of data or the initiation of a long-lived
+
+
+
+Smith & Howes               Standards Track                     [Page 8]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+   search.  The security implications of resolving an LDAP URL are the
+   same as those of resolving an LDAP search query.
+
+6.  Normative References
+
+   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
+              Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3629]  Yergeau, F., "UTF-8, a transformation format of ISO
+              10646", STD 63, RFC 3629, November 2003.
+
+   [RFC3986]  Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
+              Resource Identifier (URI): Generic Syntax", STD 66, RFC
+              3986, January 2005.
+
+   [RFC4234]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
+              Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4510]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Technical Specification Road Map", RFC 4510, June
+              2006.
+
+   [RFC4511]  Sermersheim, J., Ed., "Lightweight Directory Access
+              Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP): Directory Information Models", RFC 4512, June
+              2006.
+
+   [RFC4513]  Harrison, R., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Authentication Methods and Security Mechanisms",
+              RFC 4513, June 2006.
+
+   [RFC4514]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+              (LDAP): String Representation of Distinguished Names", RFC
+              4514, June 2006.
+
+   [RFC4515]  Smith, M. Ed. and T. Howes, "Lightweight Directory Access
+              Protocol (LDAP): String Representation of Search Filters",
+              RFC 4515, June 2006.
+
+
+
+
+
+
+
+
+
+
+
+Smith & Howes               Standards Track                     [Page 9]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+7.  Informative References
+
+   [RFC2396]  Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
+              Resource Identifiers (URI): Generic Syntax", RFC 2396,
+              August 1998.
+
+   [RFC4520]  Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
+              Considerations for the Lightweight Directory Access
+              Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+8.  Acknowledgements
+
+   The LDAP URL format was originally defined at the University of
+   Michigan.  This material is based upon work supported by the National
+   Science Foundation under Grant No. NCR-9416667.  The support of both
+   the University of Michigan and the National Science Foundation is
+   gratefully acknowledged.
+
+   This document obsoletes RFC 2255 by Tim Howes and Mark Smith.
+   Changes included in this revised specification are based upon
+   discussions among the authors, discussions within the LDAP (v3)
+   Revision Working Group (ldapbis), and discussions within other IETF
+   Working Groups.  The contributions of individuals in these working
+   groups is gratefully acknowledged.  Several people in particular have
+   made valuable comments on this document: RL "Bob" Morgan, Mark Wahl,
+   Kurt Zeilenga, Jim Sermersheim, and Hallvard Furuseth deserve special
+   thanks for their contributions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Smith & Howes               Standards Track                    [Page 10]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+Appendix A: Changes Since RFC 2255
+
+A.1.  Technical Changes
+
+   The following technical changes were made to the contents of the "URL
+   Definition" section:
+
+   Revised all of the ABNF to use common productions from [RFC4512].
+
+   Replaced references to [RFC2396] with a reference to [RFC3986] (this
+   allows literal IPv6 addresses to be used inside the <host> portion of
+   the URL, and a note was added to remind the reader of this
+   enhancement).  Referencing [RFC3986] required changes to the ABNF and
+   text so that productions that are no longer defined by [RFC3986] are
+   not used.  For example, <hostport> is not defined by [RFC3986] so it
+   has been replaced with host [COLON port].  Note that [RFC3986]
+   includes new definitions for the "Reserved" and "Unreserved" sets of
+   characters, and the net result is that the following two additional
+   characters should be percent-encoded when they appear anywhere in the
+   data used to construct an LDAP URL: "[" and "]" (these two characters
+   were first added to the Reserved set by RFC 2732).
+
+   Changed the definition of <attrdesc> to refer to <attributeSelector>
+   from [RFC4511].  This allows the use of "*" in the <attrdesc> part of
+   the URL.  It is believed that existing implementations of RFC 2255
+   already support this.
+
+   Avoided use of <prose-val> (bracketed-string) productions in the
+   <dn>, <host>, <attrdesc>, and <exvalue> rules.
+
+   Changed the ABNF for <ldapurl> to group the <dn> component with the
+   preceding <SLASH>.
+
+   Changed the <extype> rule to be an <oid> from [RFC4512].
+
+   Changed the text about extension types so it references [RFC4520].
+   Reordered rules to more closely follow the order in which the
+   elements appear in the URL.
+
+   "Bindname Extension": removed due to lack of known implementations.
+
+A.2.  Editorial Changes
+
+   Changed document title to include "LDAP:" prefix.
+
+   IESG Note: removed note about lack of satisfactory mandatory
+   authentication mechanisms.
+
+
+
+
+Smith & Howes               Standards Track                    [Page 11]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+   "Status of this Memo" section: updated boilerplate to match current
+   I-D guidelines.
+
+   "Abstract" section: separated from introductory material.
+
+   "Table of Contents" and "Intellectual Property" sections: added.
+
+   "Introduction" section: new section; separated from the Abstract.
+   Changed the text indicate that RFC 2255 is replaced by this document
+   (instead of RFC 1959).  Added text to indicate that LDAP URLs are
+   used for references and referrals.  Fixed typo (replaced the nonsense
+   phrase "to perform to retrieve" with "used to retrieve").  Added a
+   note to let the reader know that not all of the parameters of the
+   LDAP search operation described in [RFC4511] can be expressed using
+   this format.
+
+   "URL Definition" section: removed second copy of <ldapurl> grammar
+   and following two paragraphs (editorial error in RFC 2255).  Fixed
+   line break within '!' sequence.  Reformatted the ABNF to improve
+   readability by aligning comments and adding some blank lines.
+   Replaced "residing in the LDAP server" with "accessible from the LDAP
+   server" in the sentence immediately following the ABNF.  Removed the
+   sentence "Individual attrdesc names are as defined for
+   AttributeDescription in [RFC4511]."  because [RFC4511]'s
+   <attributeSelector> is now used directly in the ABNF.  Reworded last
+   paragraph to clarify which characters must be percent-encoded.  Added
+   text to indicate that LDAP URLs are used for references and
+   referrals.  Added text that refers to the ABNF from RFC 4234.
+   Clarified and strengthened the requirements with respect to
+   processing of URLs that contain implemented and not implemented
+   extensions (the approach now closely matches that specified in
+   [RFC4511] for LDAP controls).
+
+   "Defaults for Fields of the LDAP URL" section: added; formed by
+   moving text about defaults out of the "URL Definition" section.
+   Replaced direct reference to the attribute name "*" with a reference
+   to the special <alluserattrs> selector "*" defined in [RFC4511].
+
+   "URL Processing" section: removed.
+
+   "Examples" section: Modified examples to use example.com and
+   example.net hostnames.  Added missing '?' to the LDAP URL example
+   whose filter contains three null bytes.  Removed space after one
+   comma within a DN.  Revised the bindname example to use e-bindname.
+   Changed the name of an attribute used in one example from "int" to
+   "four-octet" to avoid potential confusion.  Added an example that
+   demonstrates the interaction between DN escaping and URL percent-
+   encoding.  Added some examples to show URL equivalence with respect
+
+
+
+Smith & Howes               Standards Track                    [Page 12]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+   to the <dn> portion of the URL.  Used uppercase in some examples to
+   remind the reader that some tokens are case-insensitive.
+
+   "Security Considerations" section: Added a note about connection
+   reuse.  Added a note about using strong authentication methods for
+   updates.  Added a reference to [RFC4513].  Added note that simply
+   opening a connection may violate some users' privacy requirements.
+   Adopted the working group's revised LDAP terminology specification by
+   replacing the word "connection" with "LDAP session" or "LDAP
+   connection" as appropriate.
+
+   "Acknowledgements" section: added statement that this document
+   obsoletes RFC 2255.  Added Kurt Zeilenga, Jim Sermersheim, and
+   Hallvard Furuseth.
+
+   "Normative References" section: renamed from "References" per new RFC
+   guidelines.  Changed from [1] style to [RFC4511] style throughout the
+   document.  Added references to RFC 4234 and RFC 3629.  Updated all
+   RFC 1738 references to point to the appropriate sections within
+   [RFC3986].  Updated the LDAP references to refer to LDAPBis WG
+   documents.  Removed the reference to the LDAP Attribute Syntaxes
+   document and added references to the [RFC4513], [RFC4520], and
+   [RFC4510] documents.
+
+   "Informative References" section: added.
+
+   Header and "Authors' Addresses" sections: added "editor" next to Mark
+   Smith's name.  Updated affiliation and contact information.
+
+   Copyright: updated the year.
+
+   Throughout the document: surrounded the names of all ABNF productions
+   with "<" and ">" where they are used in descriptive text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Smith & Howes               Standards Track                    [Page 13]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+Authors' Addresses
+
+   Mark Smith, Editor
+   Pearl Crescent, LLC
+   447 Marlpool Dr.
+   Saline, MI 48176
+   USA
+
+   Phone: +1 734 944-2856
+   EMail: mcs at pearlcrescent.com
+
+
+   Tim Howes
+   Opsware, Inc.
+   599 N. Mathilda Ave.
+   Sunnyvale, CA 94085
+   USA
+
+   Phone: +1 408 744-7509
+   EMail: howes at opsware.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Smith & Howes               Standards Track                    [Page 14]
+
+RFC 4516             LDAP: Uniform Resource Locator            June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Smith & Howes               Standards Track                    [Page 15]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4517.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4517.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4517.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4517.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,2971 @@
+
+
+
+
+
+
+Network Working Group                                       S. Legg, Ed.
+Request for Comments: 4517                                       eB2Bcom
+Obsoletes: 2252, 2256                                          June 2006
+Updates: 3698
+Category: Standards Track
+
+
+             Lightweight Directory Access Protocol (LDAP):
+                      Syntaxes and Matching Rules
+
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   Each attribute stored in a Lightweight Directory Access Protocol
+   (LDAP) directory, whose values may be transferred in the LDAP
+   protocol, has a defined syntax that constrains the structure and
+   format of its values.  The comparison semantics for values of a
+   syntax are not part of the syntax definition but are instead provided
+   through separately defined matching rules.  Matching rules specify an
+   argument, an assertion value, which also has a defined syntax.  This
+   document defines a base set of syntaxes and matching rules for use in
+   defining attributes for LDAP directories.
+
+Table of Contents
+
+   1. Introduction ....................................................3
+   2. Conventions .....................................................4
+   3. Syntaxes ........................................................4
+      3.1. General Considerations .....................................5
+      3.2. Common Definitions .........................................5
+      3.3. Syntax Definitions .........................................6
+           3.3.1. Attribute Type Description ..........................6
+           3.3.2. Bit String ..........................................6
+           3.3.3. Boolean .............................................7
+           3.3.4. Country String ......................................7
+           3.3.5. Delivery Method .....................................8
+
+
+
+Legg                        Standards Track                     [Page 1]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+           3.3.6. Directory String ....................................8
+           3.3.7. DIT Content Rule Description ........................9
+           3.3.8. DIT Structure Rule Description .....................10
+           3.3.9. DN .................................................10
+           3.3.10. Enhanced Guide ....................................11
+           3.3.11. Facsimile Telephone Number ........................12
+           3.3.12. Fax ...............................................12
+           3.3.13. Generalized Time ..................................13
+           3.3.14. Guide .............................................14
+           3.3.15. IA5 String ........................................15
+           3.3.16. Integer ...........................................15
+           3.3.17. JPEG ..............................................15
+           3.3.18. LDAP Syntax Description ...........................16
+           3.3.19. Matching Rule Description .........................16
+           3.3.20. Matching Rule Use Description .....................17
+           3.3.21. Name and Optional UID .............................17
+           3.3.22. Name Form Description .............................18
+           3.3.23. Numeric String ....................................18
+           3.3.24. Object Class Description ..........................18
+           3.3.25. Octet String ......................................19
+           3.3.26. OID ...............................................19
+           3.3.27. Other Mailbox .....................................20
+           3.3.28. Postal Address ....................................20
+           3.3.29. Printable String ..................................21
+           3.3.30. Substring Assertion ...............................22
+           3.3.31. Telephone Number ..................................23
+           3.3.32. Teletex Terminal Identifier .......................23
+           3.3.33. Telex Number ......................................24
+           3.3.34. UTC Time ..........................................24
+   4. Matching Rules .................................................25
+      4.1. General Considerations ....................................25
+      4.2. Matching Rule Definitions .................................27
+           4.2.1. bitStringMatch .....................................27
+           4.2.2. booleanMatch .......................................28
+           4.2.3. caseExactIA5Match ..................................28
+           4.2.4. caseExactMatch .....................................29
+           4.2.5. caseExactOrderingMatch .............................29
+           4.2.6. caseExactSubstringsMatch ...........................30
+           4.2.7. caseIgnoreIA5Match .................................30
+           4.2.8. caseIgnoreIA5SubstringsMatch .......................31
+           4.2.9. caseIgnoreListMatch ................................31
+           4.2.10. caseIgnoreListSubstringsMatch .....................32
+           4.2.11. caseIgnoreMatch ...................................33
+           4.2.12. caseIgnoreOrderingMatch ...........................33
+           4.2.13. caseIgnoreSubstringsMatch .........................34
+           4.2.14. directoryStringFirstComponentMatch ................34
+           4.2.15. distinguishedNameMatch ............................35
+           4.2.16. generalizedTimeMatch ..............................36
+
+
+
+Legg                        Standards Track                     [Page 2]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+           4.2.17. generalizedTimeOrderingMatch ......................36
+           4.2.18. integerFirstComponentMatch ........................36
+           4.2.19. integerMatch ......................................37
+           4.2.20. integerOrderingMatch ..............................37
+           4.2.21. keywordMatch ......................................38
+           4.2.22. numericStringMatch ................................38
+           4.2.23. numericStringOrderingMatch ........................39
+           4.2.24. numericStringSubstringsMatch ......................39
+           4.2.25. objectIdentifierFirstComponentMatch ...............40
+           4.2.26. objectIdentifierMatch .............................40
+           4.2.27. octetStringMatch ..................................41
+           4.2.28. octetStringOrderingMatch ..........................41
+           4.2.29. telephoneNumberMatch ..............................42
+           4.2.30. telephoneNumberSubstringsMatch ....................42
+           4.2.31. uniqueMemberMatch .................................43
+           4.2.32. wordMatch .........................................44
+   5. Security Considerations ........................................44
+   6. Acknowledgements ...............................................44
+   7. IANA Considerations ............................................45
+   8. References .....................................................46
+      8.1. Normative References ......................................46
+      8.2. Informative References ....................................48
+   Appendix A. Summary of Syntax Object Identifiers ..................49
+   Appendix B. Changes from RFC 2252 .................................49
+
+1.  Introduction
+
+   Each attribute stored in a Lightweight Directory Access Protocol
+   (LDAP) directory [RFC4510], whose values may be transferred in the
+   LDAP protocol [RFC4511], has a defined syntax (i.e., data type) that
+   constrains the structure and format of its values.  The comparison
+   semantics for values of a syntax are not part of the syntax
+   definition but are instead provided through separately defined
+   matching rules.  Matching rules specify an argument, an assertion
+   value, which also has a defined syntax.  This document defines a base
+   set of syntaxes and matching rules for use in defining attributes for
+   LDAP directories.
+
+   Readers are advised to familiarize themselves with the Directory
+   Information Models [RFC4512] before reading the rest of this
+   document.  Section 3 provides definitions for the base set of LDAP
+   syntaxes.  Section 4 provides definitions for the base set of
+   matching rules for LDAP.
+
+   This document is an integral part of the LDAP technical specification
+   [RFC4510], which obsoletes the previously defined LDAP technical
+   specification, RFC 3377, in its entirety.
+
+
+
+
+Legg                        Standards Track                     [Page 3]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   Sections 4, 5, and 7 of RFC 2252 are obsoleted by [RFC4512].  The
+   remainder of RFC 2252 is obsoleted by this document.  Sections 6 and
+   8 of RFC 2256 are obsoleted by this document.  The remainder of RFC
+   2256 is obsoleted by [RFC4519] and [RFC4512].  All but Section 2.11
+   of RFC 3698 is obsoleted by this document.
+
+   A number of schema elements that were included in the previous
+   revision of the LDAP technical specification are not included in this
+   revision of LDAP.  Public Key Infrastructure schema elements are now
+   specified in [RFC4523].  Unless reintroduced in future technical
+   specifications, the remainder are to be considered Historic.
+
+   The changes with respect to RFC 2252 are described in Appendix B of
+   this document.
+
+2.  Conventions
+
+   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
+   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
+   and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119
+   [RFC2119].
+
+   Syntax definitions are written according to the <SyntaxDescription>
+   ABNF [RFC4234] rule specified in [RFC4512], and matching rule
+   definitions are written according to the <MatchingRuleDescription>
+   ABNF rule specified in [RFC4512], except that the syntax and matching
+   rule definitions provided in this document are line-wrapped for
+   readability.  When such definitions are transferred as attribute
+   values in the LDAP protocol (e.g., as values of the ldapSyntaxes and
+   matchingRules attributes [RFC4512], respectively), then those values
+   would not contain line breaks.
+
+3.  Syntaxes
+
+   Syntax definitions constrain the structure of attribute values stored
+   in an LDAP directory, and determine the representation of attribute
+   and assertion values transferred in the LDAP protocol.
+
+   Syntaxes that are required for directory operation, or that are in
+   common use, are specified in this section.  Servers SHOULD recognize
+   all the syntaxes listed in this document, but are not required to
+   otherwise support them, and MAY recognise or support other syntaxes.
+   However, the definition of additional arbitrary syntaxes is
+   discouraged since it will hinder interoperability.  Client and server
+   implementations typically do not have the ability to dynamically
+   recognize new syntaxes.
+
+
+
+
+
+Legg                        Standards Track                     [Page 4]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+3.1.  General Considerations
+
+   The description of each syntax specifies how attribute or assertion
+   values conforming to the syntax are to be represented when
+   transferred in the LDAP protocol [RFC4511].  This representation is
+   referred to as the LDAP-specific encoding to distinguish it from
+   other methods of encoding attribute values (e.g., the Basic Encoding
+   Rules (BER) encoding [BER] used by X.500 [X.500] directories).
+
+   The LDAP-specific encoding of a given attribute syntax always
+   produces octet-aligned values.  To the greatest extent possible,
+   encoding rules for LDAP syntaxes should produce character strings
+   that can be displayed with little or no translation by clients
+   implementing LDAP.  However, clients MUST NOT assume that the LDAP-
+   specific encoding of a value of an unrecognized syntax is a human-
+   readable character string.  There are a few cases (e.g., the JPEG
+   syntax) when it is not reasonable to produce a human-readable
+   representation.
+
+   Each LDAP syntax is uniquely identified with an object identifier
+   [ASN.1] represented in the dotted-decimal format (short descriptive
+   names are not defined for syntaxes).  These object identifiers are
+   not intended to be displayed to users.  The object identifiers for
+   the syntaxes defined in this document are summarized in Appendix A.
+
+   A suggested minimum upper bound on the number of characters in an
+   attribute value with a string-based syntax, or the number of octets
+   in a value for all other syntaxes, MAY be indicated by appending the
+   bound inside of curly braces following the syntax's OBJECT IDENTIFIER
+   in an attribute type definition (see the <noidlen> rule in
+   [RFC4512]).  Such a bound is not considered part of the syntax
+   identifier.
+
+   For example, "1.3.6.1.4.1.1466.115.121.1.15{64}" in an attribute
+   definition suggests that the directory server will allow a value of
+   the attribute to be up to 64 characters long, although it may allow
+   longer character strings.  Note that a single character of the
+   Directory String syntax can be encoded in more than one octet, since
+   UTF-8 [RFC3629] is a variable-length encoding.  Therefore, a 64-
+   character string may be more than 64 octets in length.
+
+3.2.  Common Definitions
+
+   The following ABNF rules are used in a number of the syntax
+   definitions in Section 3.3.
+
+      PrintableCharacter = ALPHA / DIGIT / SQUOTE / LPAREN / RPAREN /
+                           PLUS / COMMA / HYPHEN / DOT / EQUALS /
+
+
+
+Legg                        Standards Track                     [Page 5]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+                           SLASH / COLON / QUESTION / SPACE
+      PrintableString    = 1*PrintableCharacter
+      IA5String          = *(%x00-7F)
+      SLASH              = %x2F  ; forward slash ("/")
+      COLON              = %x3A  ; colon (":")
+      QUESTION           = %x3F  ; question mark ("?")
+
+   The <ALPHA>, <DIGIT>, <SQUOTE>, <LPAREN>, <RPAREN>, <PLUS>, <COMMA>,
+   <HYPHEN>, <DOT>, <EQUALS>, and <SPACE> rules are defined in
+   [RFC4512].
+
+3.3.  Syntax Definitions
+
+3.3.1.  Attribute Type Description
+
+   A value of the Attribute Type Description syntax is the definition of
+   an attribute type.  The LDAP-specific encoding of a value of this
+   syntax is defined by the <AttributeTypeDescription> rule in
+   [RFC4512].
+
+      For example, the following definition of the createTimestamp
+      attribute type from [RFC4512] is also a value of the Attribute
+      Type Description syntax.  (Note: Line breaks have been added for
+      readability; they are not part of the value when transferred in
+      protocol.)
+
+         ( 2.5.18.1 NAME 'createTimestamp'
+            EQUALITY generalizedTimeMatch
+            ORDERING generalizedTimeOrderingMatch
+            SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
+            SINGLE-VALUE NO-USER-MODIFICATION
+            USAGE directoryOperation )
+
+   The LDAP definition for the Attribute Type Description syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.3 DESC 'Attribute Type Description' )
+
+   This syntax corresponds to the AttributeTypeDescription ASN.1 type
+   from [X.501].
+
+3.3.2.  Bit String
+
+   A value of the Bit String syntax is a sequence of binary digits.  The
+   LDAP-specific encoding of a value of this syntax is defined by the
+   following ABNF:
+
+      BitString    = SQUOTE *binary-digit SQUOTE "B"
+      binary-digit = "0" / "1"
+
+
+
+Legg                        Standards Track                     [Page 6]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   The <SQUOTE> rule is defined in [RFC4512].
+
+      Example:
+         '0101111101'B
+
+   The LDAP definition for the Bit String syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.6 DESC 'Bit String' )
+
+   This syntax corresponds to the BIT STRING ASN.1 type from [ASN.1].
+
+3.3.3.  Boolean
+
+   A value of the Boolean syntax is one of the Boolean values, true or
+   false.  The LDAP-specific encoding of a value of this syntax is
+   defined by the following ABNF:
+
+      Boolean = "TRUE" / "FALSE"
+
+   The LDAP definition for the Boolean syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.7 DESC 'Boolean' )
+
+   This syntax corresponds to the BOOLEAN ASN.1 type from [ASN.1].
+
+3.3.4.  Country String
+
+   A value of the Country String syntax is one of the two-character
+   codes from ISO 3166 [ISO3166] for representing a country.  The LDAP-
+   specific encoding of a value of this syntax is defined by the
+   following ABNF:
+
+      CountryString  = 2(PrintableCharacter)
+
+   The <PrintableCharacter> rule is defined in Section 3.2.
+
+      Examples:
+
+         US
+         AU
+
+   The LDAP definition for the Country String syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.11 DESC 'Country String' )
+
+   This syntax corresponds to the following ASN.1 type from [X.520]:
+
+      PrintableString (SIZE (2)) -- ISO 3166 codes only
+
+
+
+Legg                        Standards Track                     [Page 7]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+3.3.5.  Delivery Method
+
+   A value of the Delivery Method syntax is a sequence of items that
+   indicate, in preference order, the service(s) by which an entity is
+   willing and/or capable of receiving messages.  The LDAP-specific
+   encoding of a value of this syntax is defined by the following ABNF:
+
+      DeliveryMethod = pdm *( WSP DOLLAR WSP pdm )
+
+      pdm = "any" / "mhs" / "physical" / "telex" / "teletex" /
+            "g3fax" / "g4fax" / "ia5" / "videotex" / "telephone"
+
+   The <WSP> and <DOLLAR> rules are defined in [RFC4512].
+
+      Example:
+         telephone $ videotex
+
+   The LDAP definition for the Delivery Method syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.14 DESC 'Delivery Method' )
+
+   This syntax corresponds to the following ASN.1 type from [X.520]:
+
+      SEQUENCE OF INTEGER {
+          any-delivery-method     (0),
+          mhs-delivery            (1),
+          physical-delivery       (2),
+          telex-delivery          (3),
+          teletex-delivery        (4),
+          g3-facsimile-delivery   (5),
+          g4-facsimile-delivery   (6),
+          ia5-terminal-delivery   (7),
+          videotex-delivery       (8),
+          telephone-delivery      (9) }
+
+3.3.6.  Directory String
+
+   A value of the Directory String syntax is a string of one or more
+   arbitrary characters from the Universal Character Set (UCS) [UCS].  A
+   zero-length character string is not permitted.  The LDAP-specific
+   encoding of a value of this syntax is the UTF-8 encoding [RFC3629] of
+   the character string.  Such encodings conform to the following ABNF:
+
+      DirectoryString = 1*UTF8
+
+   The <UTF8> rule is defined in [RFC4512].
+
+
+
+
+
+Legg                        Standards Track                     [Page 8]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+      Example:
+         This is a value of Directory String containing #!%#@.
+
+   Servers and clients MUST be prepared to receive arbitrary UCS code
+   points, including code points outside the range of printable ASCII
+   and code points not presently assigned to any character.
+
+   Attribute type definitions using the Directory String syntax should
+   not restrict the format of Directory String values, e.g., by
+   requiring that the character string conforms to specific patterns
+   described by ABNF.  A new syntax should be defined in such cases.
+
+   The LDAP definition for the Directory String syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.15 DESC 'Directory String' )
+
+   This syntax corresponds to the DirectoryString parameterized ASN.1
+   type from [X.520].
+
+   The DirectoryString ASN.1 type allows a choice between the
+   TeletexString, PrintableString, or UniversalString ASN.1 types from
+   [ASN.1].  However, note that the chosen alternative is not indicated
+   in the LDAP-specific encoding of a Directory String value.
+
+   Implementations that convert Directory String values from the LDAP-
+   specific encoding to the BER encoding used by X.500 must choose an
+   alternative that permits the particular characters in the string and
+   must convert the characters from the UTF-8 encoding into the
+   character encoding of the chosen alternative.  When converting
+   Directory String values from the BER encoding to the LDAP-specific
+   encoding, the characters must be converted from the character
+   encoding of the chosen alternative into the UTF-8 encoding.  These
+   conversions SHOULD be done in a manner consistent with the Transcode
+   step of the string preparation algorithms [RFC4518] for LDAP.
+
+3.3.7.  DIT Content Rule Description
+
+   A value of the DIT Content Rule Description syntax is the definition
+   of a DIT (Directory Information Tree) content rule.  The LDAP-
+   specific encoding of a value of this syntax is defined by the
+   <DITContentRuleDescription> rule in [RFC4512].
+
+      Example:
+         ( 2.5.6.4 DESC 'content rule for organization'
+            NOT ( x121Address $ telexNumber ) )
+
+      Note: A line break has been added for readability; it is not part
+      of the value.
+
+
+
+Legg                        Standards Track                     [Page 9]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   The LDAP definition for the DIT Content Rule Description syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.16
+         DESC 'DIT Content Rule Description' )
+
+   This syntax corresponds to the DITContentRuleDescription ASN.1 type
+   from [X.501].
+
+3.3.8.  DIT Structure Rule Description
+
+   A value of the DIT Structure Rule Description syntax is the
+   definition of a DIT structure rule.  The LDAP-specific encoding of a
+   value of this syntax is defined by the <DITStructureRuleDescription>
+   rule in [RFC4512].
+
+      Example:
+         ( 2 DESC 'organization structure rule' FORM 2.5.15.3 )
+
+   The LDAP definition for the DIT Structure Rule Description syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.17
+         DESC 'DIT Structure Rule Description' )
+
+   This syntax corresponds to the DITStructureRuleDescription ASN.1 type
+   from [X.501].
+
+3.3.9.  DN
+
+   A value of the DN syntax is the (purported) distinguished name (DN)
+   of an entry [RFC4512].  The LDAP-specific encoding of a value of this
+   syntax is defined by the <distinguishedName> rule from the string
+   representation of distinguished names [RFC4514].
+
+      Examples (from [RFC4514]):
+         UID=jsmith,DC=example,DC=net
+         OU=Sales+CN=J. Smith,DC=example,DC=net
+         CN=John Smith\, III,DC=example,DC=net
+         CN=Before\0dAfter,DC=example,DC=net
+         1.3.6.1.4.1.1466.0=#04024869,DC=example,DC=com
+         CN=Lu\C4\8Di\C4\87
+
+   The LDAP definition for the DN syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.12 DESC 'DN' )
+
+   The DN syntax corresponds to the DistinguishedName ASN.1 type from
+   [X.501].  Note that a BER encoded distinguished name (as used by
+   X.500) re-encoded into the LDAP-specific encoding is not necessarily
+
+
+
+Legg                        Standards Track                    [Page 10]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   reversible to the original BER encoding since the chosen string type
+   in any DirectoryString components of the distinguished name is not
+   indicated in the LDAP-specific encoding of the distinguished name
+   (see Section 3.3.6).
+
+3.3.10.  Enhanced Guide
+
+   A value of the Enhanced Guide syntax suggests criteria, which consist
+   of combinations of attribute types and filter operators, to be used
+   in constructing filters to search for entries of particular object
+   classes.  The Enhanced Guide syntax improves upon the Guide syntax by
+   allowing the recommended depth of the search to be specified.
+
+   The LDAP-specific encoding of a value of this syntax is defined by
+   the following ABNF:
+
+      EnhancedGuide = object-class SHARP WSP criteria WSP
+                         SHARP WSP subset
+      object-class  = WSP oid WSP
+      subset        = "baseobject" / "oneLevel" / "wholeSubtree"
+
+      criteria   = and-term *( BAR and-term )
+      and-term   = term *( AMPERSAND term )
+      term       = EXCLAIM term /
+                   attributetype DOLLAR match-type /
+                   LPAREN criteria RPAREN /
+                   true /
+                   false
+      match-type = "EQ" / "SUBSTR" / "GE" / "LE" / "APPROX"
+      true       = "?true"
+      false      = "?false"
+      BAR        = %x7C  ; vertical bar ("|")
+      AMPERSAND  = %x26  ; ampersand ("&")
+      EXCLAIM    = %x21  ; exclamation mark ("!")
+
+   The <SHARP>, <WSP>, <oid>, <LPAREN>, <RPAREN>, <attributetype>, and
+   <DOLLAR> rules are defined in [RFC4512].
+
+   The LDAP definition for the Enhanced Guide syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.21 DESC 'Enhanced Guide' )
+
+      Example:
+         person#(sn$EQ)#oneLevel
+
+   The Enhanced Guide syntax corresponds to the EnhancedGuide ASN.1 type
+   from [X.520].  The EnhancedGuide type references the Criteria ASN.1
+   type, also from [X.520].  The <true> rule, above, represents an empty
+
+
+
+Legg                        Standards Track                    [Page 11]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   "and" expression in a value of the Criteria type.  The <false> rule,
+   above, represents an empty "or" expression in a value of the Criteria
+   type.
+
+3.3.11.  Facsimile Telephone Number
+
+   A value of the Facsimile Telephone Number syntax is a subscriber
+   number of a facsimile device on the public switched telephone
+   network.  The LDAP-specific encoding of a value of this syntax is
+   defined by the following ABNF:
+
+      fax-number       = telephone-number *( DOLLAR fax-parameter )
+      telephone-number = PrintableString
+      fax-parameter    = "twoDimensional" /
+                         "fineResolution" /
+                         "unlimitedLength" /
+                         "b4Length" /
+                         "a3Width" /
+                         "b4Width" /
+                         "uncompressed"
+
+   The <telephone-number> is a string of printable characters that
+   complies with the internationally agreed format for representing
+   international telephone numbers [E.123].  The <PrintableString> rule
+   is defined in Section 3.2.  The <DOLLAR> rule is defined in
+   [RFC4512].
+
+   The LDAP definition for the Facsimile Telephone Number syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.22 DESC 'Facsimile Telephone Number')
+
+   The Facsimile Telephone Number syntax corresponds to the
+   FacsimileTelephoneNumber ASN.1 type from [X.520].
+
+3.3.12.  Fax
+
+   A value of the Fax syntax is an image that is produced using the
+   Group 3 facsimile process [FAX] to duplicate an object, such as a
+   memo.  The LDAP-specific encoding of a value of this syntax is the
+   string of octets for a Group 3 Fax image as defined in [FAX].
+
+   The LDAP definition for the Fax syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.23 DESC 'Fax' )
+
+   The ASN.1 type corresponding to the Fax syntax is defined as follows,
+   assuming EXPLICIT TAGS:
+
+
+
+
+Legg                        Standards Track                    [Page 12]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+      Fax ::= CHOICE {
+        g3-facsimile  [3] G3FacsimileBodyPart
+      }
+
+   The G3FacsimileBodyPart ASN.1 type is defined in [X.420].
+
+3.3.13.  Generalized Time
+
+   A value of the Generalized Time syntax is a character string
+   representing a date and time.  The LDAP-specific encoding of a value
+   of this syntax is a restriction of the format defined in [ISO8601],
+   and is described by the following ABNF:
+
+      GeneralizedTime = century year month day hour
+                           [ minute [ second / leap-second ] ]
+                           [ fraction ]
+                           g-time-zone
+
+      century = 2(%x30-39) ; "00" to "99"
+      year    = 2(%x30-39) ; "00" to "99"
+      month   =   ( %x30 %x31-39 ) ; "01" (January) to "09"
+                / ( %x31 %x30-32 ) ; "10" to "12"
+      day     =   ( %x30 %x31-39 )    ; "01" to "09"
+                / ( %x31-32 %x30-39 ) ; "10" to "29"
+                / ( %x33 %x30-31 )    ; "30" to "31"
+      hour    = ( %x30-31 %x30-39 ) / ( %x32 %x30-33 ) ; "00" to "23"
+      minute  = %x30-35 %x30-39                        ; "00" to "59"
+
+      second      = ( %x30-35 %x30-39 ) ; "00" to "59"
+      leap-second = ( %x36 %x30 )       ; "60"
+
+      fraction        = ( DOT / COMMA ) 1*(%x30-39)
+      g-time-zone     = %x5A  ; "Z"
+                        / g-differential
+      g-differential  = ( MINUS / PLUS ) hour [ minute ]
+      MINUS           = %x2D  ; minus sign ("-")
+
+   The <DOT>, <COMMA>, and <PLUS> rules are defined in [RFC4512].
+
+   The above ABNF allows character strings that do not represent valid
+   dates (in the Gregorian calendar) and/or valid times (e.g., February
+   31, 1994).  Such character strings SHOULD be considered invalid for
+   this syntax.
+
+   The time value represents coordinated universal time (equivalent to
+   Greenwich Mean Time) if the "Z" form of <g-time-zone> is used;
+   otherwise, the value represents a local time in the time zone
+   indicated by <g-differential>.  In the latter case, coordinated
+
+
+
+Legg                        Standards Track                    [Page 13]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   universal time can be calculated by subtracting the differential from
+   the local time.  The "Z" form of <g-time-zone> SHOULD be used in
+   preference to <g-differential>.
+
+   If <minute> is omitted, then <fraction> represents a fraction of an
+   hour; otherwise, if <second> and <leap-second> are omitted, then
+   <fraction> represents a fraction of a minute; otherwise, <fraction>
+   represents a fraction of a second.
+
+      Examples:
+         199412161032Z
+         199412160532-0500
+
+   Both example values represent the same coordinated universal time:
+   10:32 AM, December 16, 1994.
+
+   The LDAP definition for the Generalized Time syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.24 DESC 'Generalized Time' )
+
+   This syntax corresponds to the GeneralizedTime ASN.1 type from
+   [ASN.1], with the constraint that local time without a differential
+   SHALL NOT be used.
+
+3.3.14.  Guide
+
+   A value of the Guide syntax suggests criteria, which consist of
+   combinations of attribute types and filter operators, to be used in
+   constructing filters to search for entries of particular object
+   classes.  The Guide syntax is obsolete and should not be used for
+   defining new attribute types.
+
+   The LDAP-specific encoding of a value of this syntax is defined by
+   the following ABNF:
+
+      Guide = [ object-class SHARP ] criteria
+
+   The <object-class> and <criteria> rules are defined in Section
+   3.3.10.  The <SHARP> rule is defined in [RFC4512].
+
+   The LDAP definition for the Guide syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.25 DESC 'Guide' )
+
+   The Guide syntax corresponds to the Guide ASN.1 type from [X.520].
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 14]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+3.3.15.  IA5 String
+
+   A value of the IA5 String syntax is a string of zero, one, or more
+   characters from International Alphabet 5 (IA5) [T.50], the
+   international version of the ASCII character set.  The LDAP-specific
+   encoding of a value of this syntax is the unconverted string of
+   characters, which conforms to the <IA5String> rule in Section 3.2.
+
+   The LDAP definition for the IA5 String syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.26 DESC 'IA5 String' )
+
+   This syntax corresponds to the IA5String ASN.1 type from [ASN.1].
+
+3.3.16.  Integer
+
+   A value of the Integer syntax is a whole number of unlimited
+   magnitude.  The LDAP-specific encoding of a value of this syntax is
+   the optionally signed decimal digit character string representation
+   of the number (for example, the number 1321 is represented by the
+   character string "1321").  The encoding is defined by the following
+   ABNF:
+
+      Integer = ( HYPHEN LDIGIT *DIGIT ) / number
+
+   The <HYPHEN>, <LDIGIT>, <DIGIT>, and <number> rules are defined in
+   [RFC4512].
+
+   The LDAP definition for the Integer syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.27 DESC 'INTEGER' )
+
+   This syntax corresponds to the INTEGER ASN.1 type from [ASN.1].
+
+3.3.17.  JPEG
+
+   A value of the JPEG syntax is an image in the JPEG File Interchange
+   Format (JFIF), as described in [JPEG].  The LDAP-specific encoding of
+   a value of this syntax is the sequence of octets of the JFIF encoding
+   of the image.
+
+   The LDAP definition for the JPEG syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.28 DESC 'JPEG' )
+
+   The JPEG syntax corresponds to the following ASN.1 type:
+
+
+
+
+
+Legg                        Standards Track                    [Page 15]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+      JPEG ::= OCTET STRING (CONSTRAINED BY
+                   { -- contents octets are an image in the --
+                     -- JPEG File Interchange Format -- })
+
+3.3.18.  LDAP Syntax Description
+
+   A value of the LDAP Syntax Description syntax is the description of
+   an LDAP syntax.  The LDAP-specific encoding of a value of this syntax
+   is defined by the <SyntaxDescription> rule in [RFC4512].
+
+   The LDAP definition for the LDAP Syntax Description syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.54 DESC 'LDAP Syntax Description' )
+
+   The above LDAP definition for the LDAP Syntax Description syntax is
+   itself a legal value of the LDAP Syntax Description syntax.
+
+   The ASN.1 type corresponding to the LDAP Syntax Description syntax is
+   defined as follows, assuming EXPLICIT TAGS:
+
+      LDAPSyntaxDescription ::= SEQUENCE {
+          identifier      OBJECT IDENTIFIER,
+          description     DirectoryString { ub-schema } OPTIONAL }
+
+   The DirectoryString parameterized ASN.1 type is defined in [X.520].
+
+   The value of ub-schema (an integer) is implementation defined.  A
+   non-normative definition appears in [X.520].
+
+3.3.19.  Matching Rule Description
+
+   A value of the Matching Rule Description syntax is the definition of
+   a matching rule.  The LDAP-specific encoding of a value of this
+   syntax is defined by the <MatchingRuleDescription> rule in [RFC4512].
+
+      Example:
+         ( 2.5.13.2 NAME 'caseIgnoreMatch'
+            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   Note: A line break has been added for readability; it is not part of
+   the syntax.
+
+   The LDAP definition for the Matching Rule Description syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.30 DESC 'Matching Rule Description' )
+
+   This syntax corresponds to the MatchingRuleDescription ASN.1 type
+   from [X.501].
+
+
+
+Legg                        Standards Track                    [Page 16]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+3.3.20.  Matching Rule Use Description
+
+   A value of the Matching Rule Use Description syntax indicates the
+   attribute types to which a matching rule may be applied in an
+   extensibleMatch search filter [RFC4511].  The LDAP-specific encoding
+   of a value of this syntax is defined by the
+   <MatchingRuleUseDescription> rule in [RFC4512].
+
+      Example:
+         ( 2.5.13.16 APPLIES ( givenName $ surname ) )
+
+   The LDAP definition for the Matching Rule Use Description syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.31
+         DESC 'Matching Rule Use Description' )
+
+   This syntax corresponds to the MatchingRuleUseDescription ASN.1 type
+   from [X.501].
+
+3.3.21.  Name and Optional UID
+
+   A value of the Name and Optional UID syntax is the distinguished name
+   [RFC4512] of an entity optionally accompanied by a unique identifier
+   that serves to differentiate the entity from others with an identical
+   distinguished name.
+
+   The LDAP-specific encoding of a value of this syntax is defined by
+   the following ABNF:
+
+      NameAndOptionalUID = distinguishedName [ SHARP BitString ]
+
+   The <BitString> rule is defined in Section 3.3.2.  The
+   <distinguishedName> rule is defined in [RFC4514].  The <SHARP> rule
+   is defined in [RFC4512].
+
+   Note that although the '#' character may occur in the string
+   representation of a distinguished name, no additional escaping of
+   this character is performed when a <distinguishedName> is encoded in
+   a <NameAndOptionalUID>.
+
+      Example:
+         1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B
+
+   The LDAP definition for the Name and Optional UID syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.34 DESC 'Name And Optional UID' )
+
+
+
+
+
+Legg                        Standards Track                    [Page 17]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   This syntax corresponds to the NameAndOptionalUID ASN.1 type from
+   [X.520].
+
+3.3.22.  Name Form Description
+
+   A value of the Name Form Description syntax is the definition of a
+   name form, which regulates how entries may be named.  The LDAP-
+   specific encoding of a value of this syntax is defined by the
+   <NameFormDescription> rule in [RFC4512].
+
+      Example:
+         ( 2.5.15.3 NAME 'orgNameForm' OC organization MUST o )
+
+   The LDAP definition for the Name Form Description syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.35 DESC 'Name Form Description' )
+
+   This syntax corresponds to the NameFormDescription ASN.1 type from
+   [X.501].
+
+3.3.23.  Numeric String
+
+   A value of the Numeric String syntax is a sequence of one or more
+   numerals and spaces.  The LDAP-specific encoding of a value of this
+   syntax is the unconverted string of characters, which conforms to the
+   following ABNF:
+
+      NumericString = 1*(DIGIT / SPACE)
+
+   The <DIGIT> and <SPACE> rules are defined in [RFC4512].
+
+      Example:
+         15 079 672 281
+
+   The LDAP definition for the Numeric String syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.36 DESC 'Numeric String' )
+
+   This syntax corresponds to the NumericString ASN.1 type from [ASN.1].
+
+3.3.24.  Object Class Description
+
+   A value of the Object Class Description syntax is the definition of
+   an object class.  The LDAP-specific encoding of a value of this
+   syntax is defined by the <ObjectClassDescription> rule in [RFC4512].
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 18]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+      Example:
+         ( 2.5.6.2 NAME 'country' SUP top STRUCTURAL MUST c
+            MAY ( searchGuide $ description ) )
+
+   Note: A line break has been added for readability; it is not part of
+   the syntax.
+
+   The LDAP definition for the Object Class Description syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.37 DESC 'Object Class Description' )
+
+   This syntax corresponds to the ObjectClassDescription ASN.1 type from
+   [X.501].
+
+3.3.25.  Octet String
+
+   A value of the Octet String syntax is a sequence of zero, one, or
+   more arbitrary octets.  The LDAP-specific encoding of a value of this
+   syntax is the unconverted sequence of octets, which conforms to the
+   following ABNF:
+
+      OctetString = *OCTET
+
+   The <OCTET> rule is defined in [RFC4512].  Values of this syntax are
+   not generally human-readable.
+
+   The LDAP definition for the Octet String syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.40 DESC 'Octet String' )
+
+   This syntax corresponds to the OCTET STRING ASN.1 type from [ASN.1].
+
+3.3.26.  OID
+
+   A value of the OID syntax is an object identifier: a sequence of two
+   or more non-negative integers that uniquely identify some object or
+   item of specification.  Many of the object identifiers used in LDAP
+   also have IANA registered names [RFC4520].
+
+   The LDAP-specific encoding of a value of this syntax is defined by
+   the <oid> rule in [RFC4512].
+
+      Examples:
+         1.2.3.4
+         cn
+
+   The LDAP definition for the OID syntax is:
+
+
+
+
+Legg                        Standards Track                    [Page 19]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+      ( 1.3.6.1.4.1.1466.115.121.1.38 DESC 'OID' )
+
+   This syntax corresponds to the OBJECT IDENTIFIER ASN.1 type from
+   [ASN.1].
+
+3.3.27.  Other Mailbox
+
+   A value of the Other Mailbox syntax identifies an electronic mailbox,
+   in a particular named mail system.  The LDAP-specific encoding of a
+   value of this syntax is defined by the following ABNF:
+
+      OtherMailbox = mailbox-type DOLLAR mailbox
+      mailbox-type = PrintableString
+      mailbox      = IA5String
+
+   The <mailbox-type> rule represents the type of mail system in which
+   the mailbox resides (for example, "MCIMail"), and <mailbox> is the
+   actual mailbox in the mail system described by <mailbox-type>.  The
+   <PrintableString> and <IA5String> rules are defined in Section 3.2.
+   The <DOLLAR> rule is defined in [RFC4512].
+
+   The LDAP definition for the Other Mailbox syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.39 DESC 'Other Mailbox' )
+
+   The ASN.1 type corresponding to the Other Mailbox syntax is defined
+   as follows, assuming EXPLICIT TAGS:
+
+      OtherMailbox ::= SEQUENCE {
+          mailboxType  PrintableString,
+          mailbox      IA5String
+      }
+
+3.3.28.  Postal Address
+
+   A value of the Postal Address syntax is a sequence of strings of one
+   or more arbitrary UCS characters, which form an address in a physical
+   mail system.
+
+   The LDAP-specific encoding of a value of this syntax is defined by
+   the following ABNF:
+
+
+
+
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 20]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+      PostalAddress = line *( DOLLAR line )
+      line          = 1*line-char
+      line-char     = %x00-23
+                      / (%x5C "24")  ; escaped "$"
+                      / %x25-5B
+                      / (%x5C "5C")  ; escaped "\"
+                      / %x5D-7F
+                      / UTFMB
+
+   Each character string (i.e., <line>) of a postal address value is
+   encoded as a UTF-8 [RFC3629] string, except that "\" and "$"
+   characters, if they occur in the string, are escaped by a "\"
+   character followed by the two hexadecimal digit code for the
+   character.  The <DOLLAR> and <UTFMB> rules are defined in [RFC4512].
+
+   Many servers limit the postal address to no more than six lines of no
+   more than thirty characters each.
+
+      Example:
+         1234 Main St.$Anytown, CA 12345$USA
+         \241,000,000 Sweepstakes$PO Box 1000000$Anytown, CA 12345$USA
+
+   The LDAP definition for the Postal Address syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.41 DESC 'Postal Address' )
+
+   This syntax corresponds to the PostalAddress ASN.1 type from [X.520];
+   that is
+
+      PostalAddress ::= SEQUENCE SIZE(1..ub-postal-line) OF
+          DirectoryString { ub-postal-string }
+
+   The values of ub-postal-line and ub-postal-string (both integers) are
+   implementation defined.  Non-normative definitions appear in [X.520].
+
+3.3.29.  Printable String
+
+   A value of the Printable String syntax is a string of one or more
+   latin alphabetic, numeric, and selected punctuation characters as
+   specified by the <PrintableCharacter> rule in Section 3.2.
+
+   The LDAP-specific encoding of a value of this syntax is the
+   unconverted string of characters, which conforms to the
+   <PrintableString> rule in Section 3.2.
+
+      Example:
+         This is a PrintableString.
+
+
+
+
+Legg                        Standards Track                    [Page 21]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   The LDAP definition for the PrintableString syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.44 DESC 'Printable String' )
+
+   This syntax corresponds to the PrintableString ASN.1 type from
+   [ASN.1].
+
+3.3.30.  Substring Assertion
+
+   A value of the Substring Assertion syntax is a sequence of zero, one,
+   or more character substrings used as an argument for substring
+   extensible matching of character string attribute values; i.e., as
+   the matchValue of a MatchingRuleAssertion [RFC4511].  Each substring
+   is a string of one or more arbitrary characters from the Universal
+   Character Set (UCS) [UCS].  A zero-length substring is not permitted.
+
+   The LDAP-specific encoding of a value of this syntax is defined by
+   the following ABNF:
+
+      SubstringAssertion = [ initial ] any [ final ]
+
+      initial  = substring
+      any      = ASTERISK *(substring ASTERISK)
+      final    = substring
+      ASTERISK = %x2A  ; asterisk ("*")
+
+      substring           = 1*substring-character
+      substring-character = %x00-29
+                            / (%x5C "2A")  ; escaped "*"
+                            / %x2B-5B
+                            / (%x5C "5C")  ; escaped "\"
+                            / %x5D-7F
+                            / UTFMB
+
+   Each <substring> of a Substring Assertion value is encoded as a UTF-8
+   [RFC3629] string, except that "\" and "*" characters, if they occur
+   in the substring, are escaped by a "\" character followed by the two
+   hexadecimal digit code for the character.
+
+   The Substring Assertion syntax is used only as the syntax of
+   assertion values in the extensible match.  It is not used as an
+   attribute syntax, or in the SubstringFilter [RFC4511].
+
+   The LDAP definition for the Substring Assertion syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.58 DESC 'Substring Assertion' )
+
+
+
+
+
+Legg                        Standards Track                    [Page 22]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   This syntax corresponds to the SubstringAssertion ASN.1 type from
+   [X.520].
+
+3.3.31.  Telephone Number
+
+   A value of the Telephone Number syntax is a string of printable
+   characters that complies with the internationally agreed format for
+   representing international telephone numbers [E.123].
+
+   The LDAP-specific encoding of a value of this syntax is the
+   unconverted string of characters, which conforms to the
+   <PrintableString> rule in Section 3.2.
+
+      Examples:
+         +1 512 315 0280
+         +1-512-315-0280
+         +61 3 9896 7830
+
+   The LDAP definition for the Telephone Number syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.50 DESC 'Telephone Number' )
+
+   The Telephone Number syntax corresponds to the following ASN.1 type
+   from [X.520]:
+
+      PrintableString (SIZE(1..ub-telephone-number))
+
+   The value of ub-telephone-number (an integer) is implementation
+   defined.  A non-normative definition appears in [X.520].
+
+3.3.32.  Teletex Terminal Identifier
+
+   A value of this syntax specifies the identifier and (optionally)
+   parameters of a teletex terminal.
+
+   The LDAP-specific encoding of a value of this syntax is defined by
+   the following ABNF:
+
+      teletex-id = ttx-term *(DOLLAR ttx-param)
+      ttx-term   = PrintableString          ; terminal identifier
+      ttx-param  = ttx-key COLON ttx-value  ; parameter
+      ttx-key    = "graphic" / "control" / "misc" / "page" / "private"
+      ttx-value  = *ttx-value-octet
+
+      ttx-value-octet = %x00-23
+                        / (%x5C "24")  ; escaped "$"
+                        / %x25-5B
+                        / (%x5C "5C")  ; escaped "\"
+
+
+
+Legg                        Standards Track                    [Page 23]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+                        / %x5D-FF
+
+   The <PrintableString> and <COLON> rules are defined in Section 3.2.
+   The <DOLLAR> rule is defined in [RFC4512].
+
+   The LDAP definition for the Teletex Terminal Identifier syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.51
+         DESC 'Teletex Terminal Identifier' )
+
+   This syntax corresponds to the TeletexTerminalIdentifier ASN.1 type
+   from [X.520].
+
+3.3.33.  Telex Number
+
+   A value of the Telex Number syntax specifies the telex number,
+   country code, and answerback code of a telex terminal.
+
+   The LDAP-specific encoding of a value of this syntax is defined by
+   the following ABNF:
+
+      telex-number  = actual-number DOLLAR country-code
+                         DOLLAR answerback
+      actual-number = PrintableString
+      country-code  = PrintableString
+      answerback    = PrintableString
+
+   The <PrintableString> rule is defined in Section 3.2.  The <DOLLAR>
+   rule is defined in [RFC4512].
+
+   The LDAP definition for the Telex Number syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.52 DESC 'Telex Number' )
+
+   This syntax corresponds to the TelexNumber ASN.1 type from [X.520].
+
+3.3.34.  UTC Time
+
+   A value of the UTC Time syntax is a character string representing a
+   date and time to a precision of one minute or one second.  The year
+   is given as a two-digit number.  The LDAP-specific encoding of a
+   value of this syntax follows the format defined in [ASN.1] for the
+   UTCTime type and is described by the following ABNF:
+
+      UTCTime         = year month day hour minute [ second ]
+                           [ u-time-zone ]
+      u-time-zone     = %x5A  ; "Z"
+                        / u-differential
+
+
+
+Legg                        Standards Track                    [Page 24]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+      u-differential  = ( MINUS / PLUS ) hour minute
+
+   The <year>, <month>, <day>, <hour>, <minute>, <second>, and <MINUS>
+   rules are defined in Section 3.3.13.  The <PLUS> rule is defined in
+   [RFC4512].
+
+   The above ABNF allows character strings that do not represent valid
+   dates (in the Gregorian calendar) and/or valid times.  Such character
+   strings SHOULD be considered invalid for this syntax.
+
+   The time value represents coordinated universal time if the "Z" form
+   of <u-time-zone> is used; otherwise, the value represents a local
+   time.  In the latter case, if <u-differential> is provided, then
+   coordinated universal time can be calculated by subtracting the
+   differential from the local time.  The <u-time-zone> SHOULD be
+   present in time values, and the "Z" form of <u-time-zone> SHOULD be
+   used in preference to <u-differential>.
+
+   The LDAP definition for the UTC Time syntax is:
+
+      ( 1.3.6.1.4.1.1466.115.121.1.53 DESC 'UTC Time' )
+
+   Note: This syntax is deprecated in favor of the Generalized Time
+   syntax.
+
+   The UTC Time syntax corresponds to the UTCTime ASN.1 type from
+   [ASN.1].
+
+4.  Matching Rules
+
+   Matching rules are used by directory implementations to compare
+   attribute values against assertion values when performing Search and
+   Compare operations [RFC4511].  They are also used when comparing a
+   purported distinguished name [RFC4512] with the name of an entry.
+   When modifying entries, matching rules are used to identify values to
+   be deleted and to prevent an attribute from containing two equal
+   values.
+
+   Matching rules that are required for directory operation, or that are
+   in common use, are specified in this section.
+
+4.1.  General Considerations
+
+   A matching rule is applied to attribute values through an
+   AttributeValueAssertion or MatchingRuleAssertion [RFC4511].  The
+   conditions under which an AttributeValueAssertion or
+   MatchingRuleAssertion evaluates to Undefined are specified elsewhere
+   [RFC4511].  If an assertion is not Undefined, then the result of the
+
+
+
+Legg                        Standards Track                    [Page 25]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   assertion is the result of applying the selected matching rule.  A
+   matching rule evaluates to TRUE, and in some cases Undefined, as
+   specified in the description of the matching rule; otherwise, it
+   evaluates to FALSE.
+
+   Each assertion contains an assertion value.  The definition of each
+   matching rule specifies the syntax for the assertion value.  The
+   syntax of the assertion value is typically, but not necessarily, the
+   same as the syntax of the attribute values to which the matching rule
+   may be applied.  Note that an AssertionValue in a SubstringFilter
+   [RFC4511] conforms to the assertion syntax of the equality matching
+   rule for the attribute type rather than to the assertion syntax of
+   the substrings matching rule for the attribute type.  Conceptually,
+   the entire SubstringFilter is converted into an assertion value of
+   the substrings matching rule prior to applying the rule.
+
+   The definition of each matching rule indicates the attribute syntaxes
+   to which the rule may be applied, by specifying conditions the
+   corresponding ASN.1 type of a candidate attribute syntax must
+   satisfy.  These conditions are also satisfied if the corresponding
+   ASN.1 type is a tagged or constrained derivative of the ASN.1 type
+   explicitly mentioned in the rule description (i.e., ASN.1 tags and
+   constraints are ignored in checking applicability), or is an
+   alternative reference notation for the explicitly mentioned type.
+   Each rule description lists, as examples of applicable attribute
+   syntaxes, the complete list of the syntaxes defined in this document
+   to which the matching rule applies.  A matching rule may be
+   applicable to additional syntaxes defined in other documents if those
+   syntaxes satisfy the conditions on the corresponding ASN.1 type.
+
+   The description of each matching rule indicates whether the rule is
+   suitable for use as the equality matching rule (EQUALITY), ordering
+   matching rule (ORDERING), or substrings matching rule (SUBSTR) in an
+   attribute type definition [RFC4512].
+
+   Each matching rule is uniquely identified with an object identifier.
+   The definition of a matching rule should not subsequently be changed.
+   If a change is desirable, then a new matching rule with a different
+   object identifier should be defined instead.
+
+   Servers MAY implement the wordMatch and keywordMatch matching rules,
+   but they SHOULD implement the other matching rules in Section 4.2.
+   Servers MAY implement additional matching rules.
+
+   Servers that implement the extensibleMatch filter SHOULD allow the
+   matching rules listed in Section 4.2 to be used in the
+   extensibleMatch filter and SHOULD allow matching rules to be used
+   with all attribute types known to the server, where the assertion
+
+
+
+Legg                        Standards Track                    [Page 26]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   syntax of the matching rule is the same as the value syntax of the
+   attribute.
+
+   Servers MUST publish, in the matchingRules attribute, the definitions
+   of matching rules referenced by values of the attributeTypes and
+   matchingRuleUse attributes in the same subschema entry.  Other
+   unreferenced matching rules MAY be published in the matchingRules
+   attribute.
+
+   If the server supports the extensibleMatch filter, then the server
+   MAY use the matchingRuleUse attribute to indicate the applicability
+   (in an extensibleMatch filter) of selected matching rules to
+   nominated attribute types.
+
+4.2.  Matching Rule Definitions
+
+   Nominated character strings in assertion and attribute values are
+   prepared according to the string preparation algorithms [RFC4518] for
+   LDAP when evaluating the following matching rules:
+
+      numericStringMatch,
+      numericStringSubstringsMatch,
+      caseExactMatch,
+      caseExactOrderingMatch,
+      caseExactSubstringsMatch,
+      caseExactIA5Match,
+      caseIgnoreIA5Match,
+      caseIgnoreIA5SubstringsMatch,
+      caseIgnoreListMatch,
+      caseIgnoreListSubstringsMatch,
+      caseIgnoreMatch,
+      caseIgnoreOrderingMatch,
+      caseIgnoreSubstringsMatch,
+      directoryStringFirstComponentMatch,
+      telephoneNumberMatch,
+      telephoneNumberSubstringsMatch and
+      wordMatch.
+
+   The Transcode, Normalize, Prohibit, and Check bidi steps are the same
+   for each of the matching rules.  However, the Map and Insignificant
+   Character Handling steps depend on the specific rule, as detailed in
+   the description of these matching rules in the sections that follow.
+
+4.2.1.  bitStringMatch
+
+   The bitStringMatch rule compares an assertion value of the Bit String
+   syntax to an attribute value of a syntax (e.g., the Bit String
+   syntax) whose corresponding ASN.1 type is BIT STRING.
+
+
+
+Legg                        Standards Track                    [Page 27]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   If the corresponding ASN.1 type of the attribute syntax does not have
+   a named bit list [ASN.1] (which is the case for the Bit String
+   syntax), then the rule evaluates to TRUE if and only if the attribute
+   value has the same number of bits as the assertion value and the bits
+   match on a bitwise basis.
+
+   If the corresponding ASN.1 type does have a named bit list, then
+   bitStringMatch operates as above, except that trailing zero bits in
+   the attribute and assertion values are treated as absent.
+
+   The LDAP definition for the bitStringMatch rule is:
+
+      ( 2.5.13.16 NAME 'bitStringMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )
+
+   The bitStringMatch rule is an equality matching rule.
+
+4.2.2.  booleanMatch
+
+   The booleanMatch rule compares an assertion value of the Boolean
+   syntax to an attribute value of a syntax (e.g., the Boolean syntax)
+   whose corresponding ASN.1 type is BOOLEAN.
+
+   The rule evaluates to TRUE if and only if the attribute value and the
+   assertion value are both TRUE or both FALSE.
+
+   The LDAP definition for the booleanMatch rule is:
+
+      ( 2.5.13.13 NAME 'booleanMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 )
+
+   The booleanMatch rule is an equality matching rule.
+
+4.2.3.  caseExactIA5Match
+
+   The caseExactIA5Match rule compares an assertion value of the IA5
+   String syntax to an attribute value of a syntax (e.g., the IA5 String
+   syntax) whose corresponding ASN.1 type is IA5String.
+
+   The rule evaluates to TRUE if and only if the prepared attribute
+   value character string and the prepared assertion value character
+   string have the same number of characters and corresponding
+   characters have the same code point.
+
+   In preparing the attribute value and assertion value for comparison,
+   characters are not case folded in the Map preparation step, and only
+   Insignificant Space Handling is applied in the Insignificant
+   Character Handling step.
+
+
+
+Legg                        Standards Track                    [Page 28]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   The LDAP definition for the caseExactIA5Match rule is:
+
+      ( 1.3.6.1.4.1.1466.109.114.1 NAME 'caseExactIA5Match'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+   The caseExactIA5Match rule is an equality matching rule.
+
+4.2.4.  caseExactMatch
+
+   The caseExactMatch rule compares an assertion value of the Directory
+   String syntax to an attribute value of a syntax (e.g., the Directory
+   String, Printable String, Country String, or Telephone Number syntax)
+   whose corresponding ASN.1 type is DirectoryString or one of the
+   alternative string types of DirectoryString, such as PrintableString
+   (the other alternatives do not correspond to any syntax defined in
+   this document).
+
+   The rule evaluates to TRUE if and only if the prepared attribute
+   value character string and the prepared assertion value character
+   string have the same number of characters and corresponding
+   characters have the same code point.
+
+   In preparing the attribute value and assertion value for comparison,
+   characters are not case folded in the Map preparation step, and only
+   Insignificant Space Handling is applied in the Insignificant
+   Character Handling step.
+
+   The LDAP definition for the caseExactMatch rule is:
+
+      ( 2.5.13.5 NAME 'caseExactMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   The caseExactMatch rule is an equality matching rule.
+
+4.2.5.  caseExactOrderingMatch
+
+   The caseExactOrderingMatch rule compares an assertion value of the
+   Directory String syntax to an attribute value of a syntax (e.g., the
+   Directory String, Printable String, Country String, or Telephone
+   Number syntax) whose corresponding ASN.1 type is DirectoryString or
+   one of its alternative string types.
+
+   The rule evaluates to TRUE if and only if, in the code point
+   collation order, the prepared attribute value character string
+   appears earlier than the prepared assertion value character string;
+   i.e., the attribute value is "less than" the assertion value.
+
+
+
+
+
+Legg                        Standards Track                    [Page 29]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   In preparing the attribute value and assertion value for comparison,
+   characters are not case folded in the Map preparation step, and only
+   Insignificant Space Handling is applied in the Insignificant
+   Character Handling step.
+
+   The LDAP definition for the caseExactOrderingMatch rule is:
+
+      ( 2.5.13.6 NAME 'caseExactOrderingMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   The caseExactOrderingMatch rule is an ordering matching rule.
+
+4.2.6.  caseExactSubstringsMatch
+
+   The caseExactSubstringsMatch rule compares an assertion value of the
+   Substring Assertion syntax to an attribute value of a syntax (e.g.,
+   the Directory String, Printable String, Country String, or Telephone
+   Number syntax) whose corresponding ASN.1 type is DirectoryString or
+   one of its alternative string types.
+
+   The rule evaluates to TRUE if and only if (1) the prepared substrings
+   of the assertion value match disjoint portions of the prepared
+   attribute value character string in the order of the substrings in
+   the assertion value, (2) an <initial> substring, if present, matches
+   the beginning of the prepared attribute value character string, and
+   (3) a <final> substring, if present, matches the end of the prepared
+   attribute value character string.  A prepared substring matches a
+   portion of the prepared attribute value character string if
+   corresponding characters have the same code point.
+
+   In preparing the attribute value and assertion value substrings for
+   comparison, characters are not case folded in the Map preparation
+   step, and only Insignificant Space Handling is applied in the
+   Insignificant Character Handling step.
+
+   The LDAP definition for the caseExactSubstringsMatch rule is:
+
+      ( 2.5.13.7 NAME 'caseExactSubstringsMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )
+
+   The caseExactSubstringsMatch rule is a substrings matching rule.
+
+4.2.7.  caseIgnoreIA5Match
+
+   The caseIgnoreIA5Match rule compares an assertion value of the IA5
+   String syntax to an attribute value of a syntax (e.g., the IA5 String
+   syntax) whose corresponding ASN.1 type is IA5String.
+
+
+
+
+Legg                        Standards Track                    [Page 30]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   The rule evaluates to TRUE if and only if the prepared attribute
+   value character string and the prepared assertion value character
+   string have the same number of characters and corresponding
+   characters have the same code point.
+
+   In preparing the attribute value and assertion value for comparison,
+   characters are case folded in the Map preparation step, and only
+   Insignificant Space Handling is applied in the Insignificant
+   Character Handling step.
+
+   The LDAP definition for the caseIgnoreIA5Match rule is:
+
+      ( 1.3.6.1.4.1.1466.109.114.2 NAME 'caseIgnoreIA5Match'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+   The caseIgnoreIA5Match rule is an equality matching rule.
+
+4.2.8.  caseIgnoreIA5SubstringsMatch
+
+   The caseIgnoreIA5SubstringsMatch rule compares an assertion value of
+   the Substring Assertion syntax to an attribute value of a syntax
+   (e.g., the IA5 String syntax) whose corresponding ASN.1 type is
+   IA5String.
+
+   The rule evaluates to TRUE if and only if (1) the prepared substrings
+   of the assertion value match disjoint portions of the prepared
+   attribute value character string in the order of the substrings in
+   the assertion value, (2) an <initial> substring, if present, matches
+   the beginning of the prepared attribute value character string, and
+   (3) a <final> substring, if present, matches the end of the prepared
+   attribute value character string.  A prepared substring matches a
+   portion of the prepared attribute value character string if
+   corresponding characters have the same code point.
+
+   In preparing the attribute value and assertion value substrings for
+   comparison, characters are case folded in the Map preparation step,
+   and only Insignificant Space Handling is applied in the Insignificant
+   Character Handling step.
+
+      ( 1.3.6.1.4.1.1466.109.114.3 NAME 'caseIgnoreIA5SubstringsMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )
+
+   The caseIgnoreIA5SubstringsMatch rule is a substrings matching rule.
+
+4.2.9.  caseIgnoreListMatch
+
+   The caseIgnoreListMatch rule compares an assertion value that is a
+   sequence of strings to an attribute value of a syntax (e.g., the
+
+
+
+Legg                        Standards Track                    [Page 31]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   Postal Address syntax) whose corresponding ASN.1 type is a SEQUENCE
+   OF the DirectoryString ASN.1 type.
+
+   The rule evaluates to TRUE if and only if the attribute value and the
+   assertion value have the same number of strings and corresponding
+   strings (by position) match according to the caseIgnoreMatch matching
+   rule.
+
+   In [X.520], the assertion syntax for this matching rule is defined to
+   be:
+
+      SEQUENCE OF DirectoryString {ub-match}
+
+   That is, it is different from the corresponding type for the Postal
+   Address syntax.  The choice of the Postal Address syntax for the
+   assertion syntax of the caseIgnoreListMatch in LDAP should not be
+   seen as limiting the matching rule to apply only to attributes with
+   the Postal Address syntax.
+
+   The LDAP definition for the caseIgnoreListMatch rule is:
+
+      ( 2.5.13.11 NAME 'caseIgnoreListMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
+
+   The caseIgnoreListMatch rule is an equality matching rule.
+
+4.2.10.  caseIgnoreListSubstringsMatch
+
+   The caseIgnoreListSubstringsMatch rule compares an assertion value of
+   the Substring Assertion syntax to an attribute value of a syntax
+   (e.g., the Postal Address syntax) whose corresponding ASN.1 type is a
+   SEQUENCE OF the DirectoryString ASN.1 type.
+
+   The rule evaluates to TRUE if and only if the assertion value
+   matches, per the caseIgnoreSubstringsMatch rule, the character string
+   formed by concatenating the strings of the attribute value, except
+   that none of the <initial>, <any>, or <final> substrings of the
+   assertion value are considered to match a substring of the
+   concatenated string which spans more than one of the original strings
+   of the attribute value.
+
+   Note that, in terms of the LDAP-specific encoding of the Postal
+   Address syntax, the concatenated string omits the <DOLLAR> line
+   separator and the escaping of "\" and "$" characters.
+
+   The LDAP definition for the caseIgnoreListSubstringsMatch rule is:
+
+      ( 2.5.13.12 NAME 'caseIgnoreListSubstringsMatch'
+
+
+
+Legg                        Standards Track                    [Page 32]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )
+
+   The caseIgnoreListSubstringsMatch rule is a substrings matching rule.
+
+4.2.11.  caseIgnoreMatch
+
+   The caseIgnoreMatch rule compares an assertion value of the Directory
+   String syntax to an attribute value of a syntax (e.g., the Directory
+   String, Printable String, Country String, or Telephone Number syntax)
+   whose corresponding ASN.1 type is DirectoryString or one of its
+   alternative string types.
+
+   The rule evaluates to TRUE if and only if the prepared attribute
+   value character string and the prepared assertion value character
+   string have the same number of characters and corresponding
+   characters have the same code point.
+
+   In preparing the attribute value and assertion value for comparison,
+   characters are case folded in the Map preparation step, and only
+   Insignificant Space Handling is applied in the Insignificant
+   Character Handling step.
+
+   The LDAP definition for the caseIgnoreMatch rule is:
+
+      ( 2.5.13.2 NAME 'caseIgnoreMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   The caseIgnoreMatch rule is an equality matching rule.
+
+4.2.12.  caseIgnoreOrderingMatch
+
+   The caseIgnoreOrderingMatch rule compares an assertion value of the
+   Directory String syntax to an attribute value of a syntax (e.g., the
+   Directory String, Printable String, Country String, or Telephone
+   Number syntax) whose corresponding ASN.1 type is DirectoryString or
+   one of its alternative string types.
+
+   The rule evaluates to TRUE if and only if, in the code point
+   collation order, the prepared attribute value character string
+   appears earlier than the prepared assertion value character string;
+   i.e., the attribute value is "less than" the assertion value.
+
+   In preparing the attribute value and assertion value for comparison,
+   characters are case folded in the Map preparation step, and only
+   Insignificant Space Handling is applied in the Insignificant
+   Character Handling step.
+
+   The LDAP definition for the caseIgnoreOrderingMatch rule is:
+
+
+
+Legg                        Standards Track                    [Page 33]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+      ( 2.5.13.3 NAME 'caseIgnoreOrderingMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   The caseIgnoreOrderingMatch rule is an ordering matching rule.
+
+4.2.13.  caseIgnoreSubstringsMatch
+
+   The caseIgnoreSubstringsMatch rule compares an assertion value of the
+   Substring Assertion syntax to an attribute value of a syntax (e.g.,
+   the Directory String, Printable String, Country String, or Telephone
+   Number syntax) whose corresponding ASN.1 type is DirectoryString or
+   one of its alternative string types.
+
+   The rule evaluates to TRUE if and only if (1) the prepared substrings
+   of the assertion value match disjoint portions of the prepared
+   attribute value character string in the order of the substrings in
+   the assertion value, (2) an <initial> substring, if present, matches
+   the beginning of the prepared attribute value character string, and
+   (3) a <final> substring, if present, matches the end of the prepared
+   attribute value character string.  A prepared substring matches a
+   portion of the prepared attribute value character string if
+   corresponding characters have the same code point.
+
+   In preparing the attribute value and assertion value substrings for
+   comparison, characters are case folded in the Map preparation step,
+   and only Insignificant Space Handling is applied in the Insignificant
+   Character Handling step.
+
+   The LDAP definition for the caseIgnoreSubstringsMatch rule is:
+
+      ( 2.5.13.4 NAME 'caseIgnoreSubstringsMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )
+
+   The caseIgnoreSubstringsMatch rule is a substrings matching rule.
+
+4.2.14.  directoryStringFirstComponentMatch
+
+   The directoryStringFirstComponentMatch rule compares an assertion
+   value of the Directory String syntax to an attribute value of a
+   syntax whose corresponding ASN.1 type is a SEQUENCE with a mandatory
+   first component of the DirectoryString ASN.1 type.
+
+   Note that the assertion syntax of this matching rule differs from the
+   attribute syntax of attributes for which this is the equality
+   matching rule.
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 34]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   The rule evaluates to TRUE if and only if the assertion value matches
+   the first component of the attribute value using the rules of
+   caseIgnoreMatch.
+
+   The LDAP definition for the directoryStringFirstComponentMatch
+   matching rule is:
+
+      ( 2.5.13.31 NAME 'directoryStringFirstComponentMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   The directoryStringFirstComponentMatch rule is an equality matching
+   rule.  When using directoryStringFirstComponentMatch to compare two
+   attribute values (of an applicable syntax), an assertion value must
+   first be derived from one of the attribute values.  An assertion
+   value can be derived from an attribute value by taking the first
+   component of that attribute value.
+
+4.2.15.  distinguishedNameMatch
+
+   The distinguishedNameMatch rule compares an assertion value of the DN
+   syntax to an attribute value of a syntax (e.g., the DN syntax) whose
+   corresponding ASN.1 type is DistinguishedName.
+
+   The rule evaluates to TRUE if and only if the attribute value and the
+   assertion value have the same number of relative distinguished names
+   and corresponding relative distinguished names (by position) are the
+   same.  A relative distinguished name (RDN) of the assertion value is
+   the same as an RDN of the attribute value if and only if they have
+   the same number of attribute value assertions and each attribute
+   value assertion (AVA) of the first RDN is the same as the AVA of the
+   second RDN with the same attribute type.  The order of the AVAs is
+   not significant.  Also note that a particular attribute type may
+   appear in at most one AVA in an RDN.  Two AVAs with the same
+   attribute type are the same if their values are equal according to
+   the equality matching rule of the attribute type.  If one or more of
+   the AVA comparisons evaluate to Undefined and the remaining AVA
+   comparisons return TRUE then the distinguishedNameMatch rule
+   evaluates to Undefined.
+
+   The LDAP definition for the distinguishedNameMatch rule is:
+
+      ( 2.5.13.1 NAME 'distinguishedNameMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+
+   The distinguishedNameMatch rule is an equality matching rule.
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 35]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+4.2.16.  generalizedTimeMatch
+
+   The generalizedTimeMatch rule compares an assertion value of the
+   Generalized Time syntax to an attribute value of a syntax (e.g., the
+   Generalized Time syntax) whose corresponding ASN.1 type is
+   GeneralizedTime.
+
+   The rule evaluates to TRUE if and only if the attribute value
+   represents the same universal coordinated time as the assertion
+   value.  If a time is specified with the minutes or seconds absent,
+   then the number of minutes or seconds (respectively) is assumed to be
+   zero.
+
+   The LDAP definition for the generalizedTimeMatch rule is:
+
+      ( 2.5.13.27 NAME 'generalizedTimeMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
+
+   The generalizedTimeMatch rule is an equality matching rule.
+
+4.2.17.  generalizedTimeOrderingMatch
+
+   The generalizedTimeOrderingMatch rule compares the time ordering of
+   an assertion value of the Generalized Time syntax to an attribute
+   value of a syntax (e.g., the Generalized Time syntax) whose
+   corresponding ASN.1 type is GeneralizedTime.
+
+   The rule evaluates to TRUE if and only if the attribute value
+   represents a universal coordinated time that is earlier than the
+   universal coordinated time represented by the assertion value.
+
+   The LDAP definition for the generalizedTimeOrderingMatch rule is:
+
+      ( 2.5.13.28 NAME 'generalizedTimeOrderingMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
+
+   The generalizedTimeOrderingMatch rule is an ordering matching rule.
+
+4.2.18.  integerFirstComponentMatch
+
+   The integerFirstComponentMatch rule compares an assertion value of
+   the Integer syntax to an attribute value of a syntax (e.g., the DIT
+   Structure Rule Description syntax) whose corresponding ASN.1 type is
+   a SEQUENCE with a mandatory first component of the INTEGER ASN.1
+   type.
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 36]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   Note that the assertion syntax of this matching rule differs from the
+   attribute syntax of attributes for which this is the equality
+   matching rule.
+
+   The rule evaluates to TRUE if and only if the assertion value and the
+   first component of the attribute value are the same integer value.
+
+   The LDAP definition for the integerFirstComponentMatch matching rule
+   is:
+
+      ( 2.5.13.29 NAME 'integerFirstComponentMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+   The integerFirstComponentMatch rule is an equality matching rule.
+   When using integerFirstComponentMatch to compare two attribute values
+   (of an applicable syntax), an assertion value must first be derived
+   from one of the attribute values.  An assertion value can be derived
+   from an attribute value by taking the first component of that
+   attribute value.
+
+4.2.19.  integerMatch
+
+   The integerMatch rule compares an assertion value of the Integer
+   syntax to an attribute value of a syntax (e.g., the Integer syntax)
+   whose corresponding ASN.1 type is INTEGER.
+
+   The rule evaluates to TRUE if and only if the attribute value and the
+   assertion value are the same integer value.
+
+   The LDAP definition for the integerMatch matching rule is:
+
+      ( 2.5.13.14 NAME 'integerMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+   The integerMatch rule is an equality matching rule.
+
+4.2.20.  integerOrderingMatch
+
+   The integerOrderingMatch rule compares an assertion value of the
+   Integer syntax to an attribute value of a syntax (e.g., the Integer
+   syntax) whose corresponding ASN.1 type is INTEGER.
+
+   The rule evaluates to TRUE if and only if the integer value of the
+   attribute value is less than the integer value of the assertion
+   value.
+
+   The LDAP definition for the integerOrderingMatch matching rule is:
+
+
+
+
+Legg                        Standards Track                    [Page 37]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+      ( 2.5.13.15 NAME 'integerOrderingMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+   The integerOrderingMatch rule is an ordering matching rule.
+
+4.2.21.  keywordMatch
+
+   The keywordMatch rule compares an assertion value of the Directory
+   String syntax to an attribute value of a syntax (e.g., the Directory
+   String syntax) whose corresponding ASN.1 type is DirectoryString.
+
+   The rule evaluates to TRUE if and only if the assertion value
+   character string matches any keyword in the attribute value.  The
+   identification of keywords in the attribute value and the exactness
+   of the match are both implementation specific.
+
+   The LDAP definition for the keywordMatch rule is:
+
+      ( 2.5.13.33 NAME 'keywordMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+4.2.22.  numericStringMatch
+
+   The numericStringMatch rule compares an assertion value of the
+   Numeric String syntax to an attribute value of a syntax (e.g., the
+   Numeric String syntax) whose corresponding ASN.1 type is
+   NumericString.
+
+   The rule evaluates to TRUE if and only if the prepared attribute
+   value character string and the prepared assertion value character
+   string have the same number of characters and corresponding
+   characters have the same code point.
+
+   In preparing the attribute value and assertion value for comparison,
+   characters are not case folded in the Map preparation step, and only
+   numericString Insignificant Character Handling is applied in the
+   Insignificant Character Handling step.
+
+   The LDAP definition for the numericStringMatch matching rule is:
+
+      ( 2.5.13.8 NAME 'numericStringMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )
+
+   The numericStringMatch rule is an equality matching rule.
+
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 38]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+4.2.23.  numericStringOrderingMatch
+
+   The numericStringOrderingMatch rule compares an assertion value of
+   the Numeric String syntax to an attribute value of a syntax (e.g.,
+   the Numeric String syntax) whose corresponding ASN.1 type is
+   NumericString.
+
+   The rule evaluates to TRUE if and only if, in the code point
+   collation order, the prepared attribute value character string
+   appears earlier than the prepared assertion value character string;
+   i.e., the attribute value is "less than" the assertion value.
+
+   In preparing the attribute value and assertion value for comparison,
+   characters are not case folded in the Map preparation step, and only
+   numericString Insignificant Character Handling is applied in the
+   Insignificant Character Handling step.
+
+   The rule is identical to the caseIgnoreOrderingMatch rule except that
+   all space characters are skipped during comparison (case is
+   irrelevant as the characters are numeric).
+
+   The LDAP definition for the numericStringOrderingMatch matching rule
+   is:
+
+      ( 2.5.13.9 NAME 'numericStringOrderingMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )
+
+   The numericStringOrderingMatch rule is an ordering matching rule.
+
+4.2.24.  numericStringSubstringsMatch
+
+   The numericStringSubstringsMatch rule compares an assertion value of
+   the Substring Assertion syntax to an attribute value of a syntax
+   (e.g., the Numeric String syntax) whose corresponding ASN.1 type is
+   NumericString.
+
+   The rule evaluates to TRUE if and only if (1) the prepared substrings
+   of the assertion value match disjoint portions of the prepared
+   attribute value character string in the order of the substrings in
+   the assertion value, (2) an <initial> substring, if present, matches
+   the beginning of the prepared attribute value character string, and
+   (3) a <final> substring, if present, matches the end of the prepared
+   attribute value character string.  A prepared substring matches a
+   portion of the prepared attribute value character string if
+   corresponding characters have the same code point.
+
+   In preparing the attribute value and assertion value for comparison,
+   characters are not case folded in the Map preparation step, and only
+
+
+
+Legg                        Standards Track                    [Page 39]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   numericString Insignificant Character Handling is applied in the
+   Insignificant Character Handling step.
+
+   The LDAP definition for the numericStringSubstringsMatch matching
+   rule is:
+
+      ( 2.5.13.10 NAME 'numericStringSubstringsMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )
+
+   The numericStringSubstringsMatch rule is a substrings matching rule.
+
+4.2.25.  objectIdentifierFirstComponentMatch
+
+   The objectIdentifierFirstComponentMatch rule compares an assertion
+   value of the OID syntax to an attribute value of a syntax (e.g., the
+   Attribute Type Description, DIT Content Rule Description, LDAP Syntax
+   Description, Matching Rule Description, Matching Rule Use
+   Description, Name Form Description, or Object Class Description
+   syntax) whose corresponding ASN.1 type is a SEQUENCE with a mandatory
+   first component of the OBJECT IDENTIFIER ASN.1 type.
+
+   Note that the assertion syntax of this matching rule differs from the
+   attribute syntax of attributes for which this is the equality
+   matching rule.
+
+   The rule evaluates to TRUE if and only if the assertion value matches
+   the first component of the attribute value using the rules of
+   objectIdentifierMatch.
+
+   The LDAP definition for the objectIdentifierFirstComponentMatch
+   matching rule is:
+
+      ( 2.5.13.30 NAME 'objectIdentifierFirstComponentMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
+
+   The objectIdentifierFirstComponentMatch rule is an equality matching
+   rule.  When using objectIdentifierFirstComponentMatch to compare two
+   attribute values (of an applicable syntax), an assertion value must
+   first be derived from one of the attribute values.  An assertion
+   value can be derived from an attribute value by taking the first
+   component of that attribute value.
+
+4.2.26.  objectIdentifierMatch
+
+   The objectIdentifierMatch rule compares an assertion value of the OID
+   syntax to an attribute value of a syntax (e.g., the OID syntax) whose
+   corresponding ASN.1 type is OBJECT IDENTIFIER.
+
+
+
+
+Legg                        Standards Track                    [Page 40]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   The rule evaluates to TRUE if and only if the assertion value and the
+   attribute value represent the same object identifier; that is, the
+   same sequence of integers, whether represented explicitly in the
+   <numericoid> form of <oid> or implicitly in the <descr> form (see
+   [RFC4512]).
+
+   If an LDAP client supplies an assertion value in the <descr> form and
+   the chosen descriptor is not recognized by the server, then the
+   objectIdentifierMatch rule evaluates to Undefined.
+
+   The LDAP definition for the objectIdentifierMatch matching rule is:
+
+      ( 2.5.13.0 NAME 'objectIdentifierMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
+
+   The objectIdentifierMatch rule is an equality matching rule.
+
+4.2.27.  octetStringMatch
+
+   The octetStringMatch rule compares an assertion value of the Octet
+   String syntax to an attribute value of a syntax (e.g., the Octet
+   String or JPEG syntax) whose corresponding ASN.1 type is the OCTET
+   STRING ASN.1 type.
+
+   The rule evaluates to TRUE if and only if the attribute value and the
+   assertion value are the same length and corresponding octets (by
+   position) are the same.
+
+   The LDAP definition for the octetStringMatch matching rule is:
+
+      ( 2.5.13.17 NAME 'octetStringMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
+
+   The octetStringMatch rule is an equality matching rule.
+
+4.2.28.  octetStringOrderingMatch
+
+   The octetStringOrderingMatch rule compares an assertion value of the
+   Octet String syntax to an attribute value of a syntax (e.g., the
+   Octet String or JPEG syntax) whose corresponding ASN.1 type is the
+   OCTET STRING ASN.1 type.
+
+   The rule evaluates to TRUE if and only if the attribute value appears
+   earlier in the collation order than the assertion value.  The rule
+   compares octet strings from the first octet to the last octet, and
+   from the most significant bit to the least significant bit within the
+   octet.  The first occurrence of a different bit determines the
+   ordering of the strings.  A zero bit precedes a one bit.  If the
+
+
+
+Legg                        Standards Track                    [Page 41]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   strings contain different numbers of octets but the longer string is
+   identical to the shorter string up to the length of the shorter
+   string, then the shorter string precedes the longer string.
+
+   The LDAP definition for the octetStringOrderingMatch matching rule
+   is:
+
+      ( 2.5.13.18 NAME 'octetStringOrderingMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
+
+   The octetStringOrderingMatch rule is an ordering matching rule.
+
+4.2.29.  telephoneNumberMatch
+
+   The telephoneNumberMatch rule compares an assertion value of the
+   Telephone Number syntax to an attribute value of a syntax (e.g., the
+   Telephone Number syntax) whose corresponding ASN.1 type is a
+   PrintableString representing a telephone number.
+
+   The rule evaluates to TRUE if and only if the prepared attribute
+   value character string and the prepared assertion value character
+   string have the same number of characters and corresponding
+   characters have the same code point.
+
+   In preparing the attribute value and assertion value for comparison,
+   characters are case folded in the Map preparation step, and only
+   telephoneNumber Insignificant Character Handling is applied in the
+   Insignificant Character Handling step.
+
+   The LDAP definition for the telephoneNumberMatch matching rule is:
+
+      ( 2.5.13.20 NAME 'telephoneNumberMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
+
+   The telephoneNumberMatch rule is an equality matching rule.
+
+4.2.30.  telephoneNumberSubstringsMatch
+
+   The telephoneNumberSubstringsMatch rule compares an assertion value
+   of the Substring Assertion syntax to an attribute value of a syntax
+   (e.g., the Telephone Number syntax) whose corresponding ASN.1 type is
+   a PrintableString representing a telephone number.
+
+   The rule evaluates to TRUE if and only if (1) the prepared substrings
+   of the assertion value match disjoint portions of the prepared
+   attribute value character string in the order of the substrings in
+   the assertion value, (2) an <initial> substring, if present, matches
+   the beginning of the prepared attribute value character string, and
+
+
+
+Legg                        Standards Track                    [Page 42]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   (3) a <final> substring, if present, matches the end of the prepared
+   attribute value character string.  A prepared substring matches a
+   portion of the prepared attribute value character string if
+   corresponding characters have the same code point.
+
+   In preparing the attribute value and assertion value substrings for
+   comparison, characters are case folded in the Map preparation step,
+   and only telephoneNumber Insignificant Character Handling is applied
+   in the Insignificant Character Handling step.
+
+   The LDAP definition for the telephoneNumberSubstringsMatch matching
+   rule is:
+
+      ( 2.5.13.21 NAME 'telephoneNumberSubstringsMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )
+
+   The telephoneNumberSubstringsMatch rule is a substrings matching
+   rule.
+
+4.2.31.  uniqueMemberMatch
+
+   The uniqueMemberMatch rule compares an assertion value of the Name
+   And Optional UID syntax to an attribute value of a syntax (e.g., the
+   Name And Optional UID syntax) whose corresponding ASN.1 type is
+   NameAndOptionalUID.
+
+   The rule evaluates to TRUE if and only if the <distinguishedName>
+   components of the assertion value and attribute value match according
+   to the distinguishedNameMatch rule and either, (1) the <BitString>
+   component is absent from both the attribute value and assertion
+   value, or (2) the <BitString> component is present in both the
+   attribute value and the assertion value and the <BitString> component
+   of the assertion value matches the <BitString> component of the
+   attribute value according to the bitStringMatch rule.
+
+   Note that this matching rule has been altered from its description in
+   X.520 [X.520] in order to make the matching rule commutative.  Server
+   implementors should consider using the original X.520 semantics
+   (where the matching was less exact) for approximate matching of
+   attributes with uniqueMemberMatch as the equality matching rule.
+
+   The LDAP definition for the uniqueMemberMatch matching rule is:
+
+      ( 2.5.13.23 NAME 'uniqueMemberMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )
+
+   The uniqueMemberMatch rule is an equality matching rule.
+
+
+
+
+Legg                        Standards Track                    [Page 43]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+4.2.32.  wordMatch
+
+   The wordMatch rule compares an assertion value of the Directory
+   String syntax to an attribute value of a syntax (e.g., the Directory
+   String syntax) whose corresponding ASN.1 type is DirectoryString.
+
+   The rule evaluates to TRUE if and only if the assertion value word
+   matches, according to the semantics of caseIgnoreMatch, any word in
+   the attribute value.  The precise definition of a word is
+   implementation specific.
+
+   The LDAP definition for the wordMatch rule is:
+
+      ( 2.5.13.32 NAME 'wordMatch'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+5.  Security Considerations
+
+   In general, the LDAP-specific encodings for syntaxes defined in this
+   document do not define canonical encodings.  That is, a
+   transformation from an LDAP-specific encoding into some other
+   encoding (e.g., BER) and back into the LDAP-specific encoding will
+   not necessarily reproduce exactly the original octets of the LDAP-
+   specific encoding.  Therefore, an LDAP-specific encoding should not
+   be used where a canonical encoding is required.
+
+   Furthermore, the LDAP-specific encodings do not necessarily enable an
+   alternative encoding of values of the Directory String and DN
+   syntaxes to be reconstructed; e.g., a transformation from a
+   Distinguished Encoding Rules (DER) [BER] encoding to an LDAP-specific
+   encoding and back to a DER encoding may not reproduce the original
+   DER encoding.  Therefore, LDAP-specific encodings should not be used
+   where reversibility to DER is needed; e.g., for the verification of
+   digital signatures.  Instead, DER or a DER-reversible encoding should
+   be used.
+
+   When interpreting security-sensitive fields (in particular, fields
+   used to grant or deny access), implementations MUST ensure that any
+   matching rule comparisons are done on the underlying abstract value,
+   regardless of the particular encoding used.
+
+6.  Acknowledgements
+
+   This document is primarily a revision of RFC 2252 by M. Wahl, A.
+   Coulbeck, T. Howes, and S. Kille.  RFC 2252 was a product of the IETF
+   ASID Working Group.
+
+
+
+
+
+Legg                        Standards Track                    [Page 44]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   This document is based on input from the IETF LDAPBIS working group.
+   The author would like to thank Kathy Dally for editing the early
+   drafts of this document, and Jim Sermersheim and Kurt Zeilenga for
+   their significant contributions to this revision.
+
+7.  IANA Considerations
+
+   The Internet Assigned Numbers Authority (IANA) has updated the LDAP
+   descriptors registry [BCP64] as indicated by the following templates:
+
+      Subject: Request for LDAP Descriptor Registration Update
+      Descriptor (short name): see comment
+      Object Identifier: see comment
+      Person & email address to contact for further information:
+        Steven Legg <steven.legg at eb2bcom.com>
+      Usage: see comment
+      Specification: RFC 4517
+      Author/Change Controller: IESG
+
+      NAME                              Type  OID
+      ------------------------------------------------------------------
+      bitStringMatch                       M  2.5.13.16
+      booleanMatch                         M  2.5.13.13
+      caseExactIA5Match                    M  1.3.6.1.4.1.1466.109.114.1
+      caseExactMatch                       M  2.5.13.5
+      caseExactOrderingMatch               M  2.5.13.6
+      caseExactSubstringsMatch             M  2.5.13.7
+      caseIgnoreIA5Match                   M  1.3.6.1.4.1.1466.109.114.2
+      caseIgnoreListMatch                  M  2.5.13.11
+      caseIgnoreListSubstringsMatch        M  2.5.13.12
+      caseIgnoreMatch                      M  2.5.13.2
+      caseIgnoreOrderingMatch              M  2.5.13.3
+      caseIgnoreSubstringsMatch            M  2.5.13.4
+      directoryStringFirstComponentMatch   M  2.5.13.31
+      distinguishedNameMatch               M  2.5.13.1
+      generalizedTimeMatch                 M  2.5.13.27
+      generalizedTimeOrderingMatch         M  2.5.13.28
+      integerFirstComponentMatch           M  2.5.13.29
+      integerMatch                         M  2.5.13.14
+      integerOrderingMatch                 M  2.5.13.15
+      keywordMatch                         M  2.5.13.33
+      numericStringMatch                   M  2.5.13.8
+      numericStringOrderingMatch           M  2.5.13.9
+      numericStringSubstringsMatch         M  2.5.13.10
+      objectIdentifierFirstComponentMatch  M  2.5.13.30
+      octetStringMatch                     M  2.5.13.17
+      octetStringOrderingMatch             M  2.5.13.18
+      telephoneNumberMatch                 M  2.5.13.20
+
+
+
+Legg                        Standards Track                    [Page 45]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+      telephoneNumberSubstringsMatch       M  2.5.13.21
+      uniqueMemberMatch                    M  2.5.13.23
+      wordMatch                            M  2.5.13.32
+
+      The descriptor for the object identifier 2.5.13.0 was incorrectly
+      registered as objectIdentifiersMatch (extraneous \`s') in BCP 64.
+      It has been changed to the following, with a reference to
+      RFC 4517.
+
+      NAME                              Type  OID
+      ------------------------------------------------------------------
+      objectIdentifierMatch                M  2.5.13.0
+
+      Subject: Request for LDAP Descriptor Registration
+      Descriptor (short name): caseIgnoreIA5SubstringsMatch
+      Object Identifier: 1.3.6.1.4.1.1466.109.114.3
+      Person & email address to contact for further information:
+        Steven Legg <steven.legg at eb2bcom.com>
+      Usage: other (M)
+      Specification: RFC 4517
+      Author/Change Controller: IESG
+
+8.  References
+
+8.1.  Normative References
+
+   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
+              Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3629]  Yergeau, F., "UTF-8, a transformation format of ISO
+              10646", STD 63, RFC 3629, November 2003.
+
+   [RFC4234]  Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
+              Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4510]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Technical Specification Road Map", RFC 4510, June
+              2006.
+
+   [RFC4511]  Sermersheim, J., Ed., "Lightweight Directory Access
+              Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP): Directory Information Models", RFC 4512, June
+              2006.
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 46]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   [RFC4514]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+              (LDAP): String Representation of Distinguished Names", RFC
+              4514, June 2006.
+
+   [RFC4518]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP): Internationalized String Preparation", RFC 4518,
+              June 2006.
+
+   [RFC4520]  Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
+              Considerations for the Lightweight Directory Access
+              Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [E.123]    Notation for national and international telephone numbers,
+              ITU-T Recommendation E.123, 1988.
+
+   [FAX]      Standardization of Group 3 facsimile apparatus for
+              document transmission - Terminal Equipment and Protocols
+              for Telematic Services, ITU-T Recommendation T.4, 1993
+
+   [T.50]     International Reference Alphabet (IRA) (Formerly
+              International Alphabet No. 5 or IA5) Information
+              Technology - 7-Bit Coded Character Set for Information
+              Interchange, ITU-T Recommendation T.50, 1992
+
+   [X.420]    ITU-T Recommendation X.420 (1996) | ISO/IEC 10021-7:1997,
+              Information Technology - Message Handling Systems (MHS):
+              Interpersonal messaging system
+
+   [X.501]    ITU-T Recommendation X.501 (1993) | ISO/IEC 9594-2:1994,
+              Information Technology - Open Systems Interconnection -
+              The Directory: Models
+
+   [X.520]    ITU-T Recommendation X.520 (1993) | ISO/IEC 9594-6:1994,
+              Information Technology - Open Systems Interconnection -
+              The Directory: Selected attribute types
+
+   [ASN.1]    ITU-T Recommendation X.680 (07/02) | ISO/IEC 8824-1:2002,
+              Information technology - Abstract Syntax Notation One
+              (ASN.1): Specification of basic notation
+
+   [ISO3166]  ISO 3166, "Codes for the representation of names of
+              countries".
+
+   [ISO8601]  ISO 8601:2004, "Data elements and interchange formats --
+              Information interchange -- Representation of dates and
+              times".
+
+
+
+
+
+Legg                        Standards Track                    [Page 47]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   [UCS]      Universal Multiple-Octet Coded Character Set (UCS) -
+              Architecture and Basic Multilingual Plane, ISO/IEC 10646-
+              1:  1993 (with amendments).
+
+   [JPEG]     JPEG File Interchange Format (Version 1.02).  Eric
+              Hamilton, C-Cube Microsystems, Milpitas, CA, September 1,
+              1992.
+
+8.2.  Informative References
+
+   [RFC4519]  Sciberras, A., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Schema for User Applications", RFC 4519, June
+              2006.
+
+   [RFC4523]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP) Schema Definitions for X.509 Certificates", RFC
+              4523, June 2006.
+
+   [X.500]    ITU-T Recommendation X.500 (1993) | ISO/IEC 9594-1:1994,
+              Information Technology - Open Systems Interconnection -
+              The Directory: Overview of concepts, models and services
+
+   [BER]      ITU-T Recommendation X.690 (07/02) | ISO/IEC 8825-1:2002,
+              Information technology - ASN.1 encoding rules:
+              Specification of Basic Encoding Rules (BER), Canonical
+              Encoding Rules (CER) and Distinguished Encoding Rules
+              (DER)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 48]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+Appendix A. Summary of Syntax Object Identifiers
+
+   The following list summarizes the object identifiers assigned to the
+   syntaxes defined in this document.
+
+      Syntax                           OBJECT IDENTIFIER
+      ==============================================================
+      Attribute Type Description       1.3.6.1.4.1.1466.115.121.1.3
+      Bit String                       1.3.6.1.4.1.1466.115.121.1.6
+      Boolean                          1.3.6.1.4.1.1466.115.121.1.7
+      Country String                   1.3.6.1.4.1.1466.115.121.1.11
+      Delivery Method                  1.3.6.1.4.1.1466.115.121.1.14
+      Directory String                 1.3.6.1.4.1.1466.115.121.1.15
+      DIT Content Rule Description     1.3.6.1.4.1.1466.115.121.1.16
+      DIT Structure Rule Description   1.3.6.1.4.1.1466.115.121.1.17
+      DN                               1.3.6.1.4.1.1466.115.121.1.12
+      Enhanced Guide                   1.3.6.1.4.1.1466.115.121.1.21
+      Facsimile Telephone Number       1.3.6.1.4.1.1466.115.121.1.22
+      Fax                              1.3.6.1.4.1.1466.115.121.1.23
+      Generalized Time                 1.3.6.1.4.1.1466.115.121.1.24
+      Guide                            1.3.6.1.4.1.1466.115.121.1.25
+      IA5 String                       1.3.6.1.4.1.1466.115.121.1.26
+      Integer                          1.3.6.1.4.1.1466.115.121.1.27
+      JPEG                             1.3.6.1.4.1.1466.115.121.1.28
+      LDAP Syntax Description          1.3.6.1.4.1.1466.115.121.1.54
+      Matching Rule Description        1.3.6.1.4.1.1466.115.121.1.30
+      Matching Rule Use Description    1.3.6.1.4.1.1466.115.121.1.31
+      Name And Optional UID            1.3.6.1.4.1.1466.115.121.1.34
+      Name Form Description            1.3.6.1.4.1.1466.115.121.1.35
+      Numeric String                   1.3.6.1.4.1.1466.115.121.1.36
+      Object Class Description         1.3.6.1.4.1.1466.115.121.1.37
+      Octet String                     1.3.6.1.4.1.1466.115.121.1.40
+      OID                              1.3.6.1.4.1.1466.115.121.1.38
+      Other Mailbox                    1.3.6.1.4.1.1466.115.121.1.39
+      Postal Address                   1.3.6.1.4.1.1466.115.121.1.41
+      Printable String                 1.3.6.1.4.1.1466.115.121.1.44
+      Substring Assertion              1.3.6.1.4.1.1466.115.121.1.58
+      Telephone Number                 1.3.6.1.4.1.1466.115.121.1.50
+      Teletex Terminal Identifier      1.3.6.1.4.1.1466.115.121.1.51
+      Telex Number                     1.3.6.1.4.1.1466.115.121.1.52
+      UTC Time                         1.3.6.1.4.1.1466.115.121.1.53
+
+Appendix B. Changes from RFC 2252
+
+   This annex lists the significant differences between this
+   specification and RFC 2252.
+
+
+
+
+
+Legg                        Standards Track                    [Page 49]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   This annex is provided for informational purposes only.  It is not a
+   normative part of this specification.
+
+   1.  The IESG Note has been removed.
+
+   2.  The major part of Sections 4, 5 and 7 has been moved to [RFC4512]
+       and revised.  Changes to the parts of these sections moved to
+       [RFC4512] are detailed in [RFC4512].
+
+   3.  BNF descriptions of syntax formats have been replaced by ABNF
+       [RFC4234] specifications.
+
+   4.  The ambiguous statement in RFC 2252, Section 4.3 regarding the
+       use of a backslash quoting mechanism to escape separator symbols
+       has been removed.  The escaping mechanism is now explicitly
+       represented in the ABNF for the syntaxes where this provision
+       applies.
+
+   5.  The description of each of the LDAP syntaxes has been expanded so
+       that they are less dependent on knowledge of X.500 for
+       interpretation.
+
+   6.  The relationship of LDAP syntaxes to corresponding ASN.1 type
+       definitions has been made explicit.
+
+   7.  The set of characters allowed in a <PrintableString> (formerly
+       <printablestring>) has been corrected to align with the
+       PrintableString ASN.1 type in [ASN.1].  Specifically, the double
+       quote character has been removed and the single quote character
+       and equals sign have been added.
+
+   8.  Values of the Directory String, Printable String and Telephone
+       Number syntaxes are now required to have at least one character.
+
+   9.  The <DITContentRuleDescription>, <NameFormDescription> and
+       <DITStructureRuleDescription> rules have been moved to [RFC4512].
+
+   10. The corresponding ASN.1 type for the Other Mailbox syntax has
+       been incorporated from RFC 1274.
+
+   11. A corresponding ASN.1 type for the LDAP Syntax Description syntax
+       has been invented.
+
+   12. The Binary syntax has been removed because it was not adequately
+       specified, implementations with different incompatible
+       interpretations exist, and it was confused with the ;binary
+       transfer encoding.
+
+
+
+
+Legg                        Standards Track                    [Page 50]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+   13. All discussion of transfer options, including the ";binary"
+       option, has been removed.  All imperatives regarding binary
+       transfer of values have been removed.
+
+   14. The Delivery Method, Enhanced Guide, Guide, Octet String, Teletex
+       Terminal Identifier and Telex Number syntaxes from RFC 2256 have
+       been incorporated.
+
+   15. The <criteria> rule for the Enhanced Guide and Guide syntaxes has
+       been extended to accommodate empty "and" and "or" expressions.
+
+   16. An encoding for the <ttx-value> rule in the Teletex Terminal
+       Identifier syntax has been defined.
+
+   17. The PKI-related syntaxes (Certificate, Certificate List and
+       Certificate Pair) have been removed.  They are reintroduced in
+       [RFC4523] (as is the Supported Algorithm syntax from RFC 2256).
+
+   18. The MHS OR Address syntax has been removed since its
+       specification (in RFC 2156) is not at draft standard maturity.
+
+   19. The DL Submit Permission syntax has been removed as it depends on
+       the MHS OR Address syntax.
+
+   20. The Presentation Address syntax has been removed since its
+       specification (in RFC 1278) is not at draft standard maturity.
+
+   21. The ACI Item, Access Point, Audio, Data Quality, DSA Quality, DSE
+       Type, LDAP Schema Description, Master And Shadow Access Points,
+       Modify Rights, Protocol Information, Subtree Specification,
+       Supplier Information, Supplier Or Consumer and Supplier And
+       Consumer syntaxes have been removed.  These syntaxes are
+       referenced in RFC 2252, but not defined.
+
+   22. The LDAP Schema Definition syntax (defined in RFC 2927) and the
+       Mail Preference syntax have been removed on the grounds that they
+       are out of scope for the core specification.
+
+   23. The description of each of the matching rules has been expanded
+       so that they are less dependent on knowledge of X.500 for
+       interpretation.
+
+   24. The caseIgnoreIA5SubstringsMatch matching rule from RFC 2798 has
+       been added.
+
+   25. The caseIgnoreListSubstringsMatch, caseIgnoreOrderingMatch and
+       caseIgnoreSubstringsMatch matching rules have been added to the
+       list of matching rules for which the provisions for handling
+
+
+
+Legg                        Standards Track                    [Page 51]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+       leading, trailing and multiple adjoining whitespace characters
+       apply (now through string preparation).  This is consistent with
+       the definitions of these matching rules in X.500.  The
+       caseIgnoreIA5SubstringsMatch rule has also been added to the
+       list.
+
+   26. The specification of the octetStringMatch matching rule from
+       RFC 2256 has been added to this document.
+
+   27. The presentationAddressMatch matching rule has been removed as it
+       depends on an assertion syntax (Presentation Address) that is not
+       at draft standard maturity.
+
+   28. The protocolInformationMatch matching rule has been removed as it
+       depends on an undefined assertion syntax (Protocol Information).
+
+   29. The definitive reference for ASN.1 has been changed from X.208 to
+       X.680 since X.680 is the version of ASN.1 referred to by X.500.
+
+   30. The specification of the caseIgnoreListSubstringsMatch matching
+       rule from RFC 2798 & X.520 has been added.
+
+   31. String preparation algorithms have been applied to the character
+       string matching rules.
+
+   32. The specifications of the booleanMatch, caseExactMatch,
+       caseExactOrderingMatch, caseExactSubstringsMatch,
+       directoryStringFirstComponentMatch, integerOrderingMatch,
+       keywordMatch, numericStringOrderingMatch,
+       octetStringOrderingMatch and wordMatch matching rules from
+       RFC 3698 & X.520 have been added.
+
+Author's Address
+
+   Steven Legg
+   eB2Bcom
+   Suite3, Woodhouse Corporate Centre
+   935 Station Street
+   Box Hill North, Victoria 3129
+   AUSTRALIA
+
+   Phone: +61 3 9896 7830
+   Fax: +61 3 9896 7801
+   EMail: steven.legg at eb2bcom.com
+
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 52]
+
+RFC 4517           LDAP: Syntaxes and Matching Rules           June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Legg                        Standards Track                    [Page 53]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4518.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4518.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4518.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4518.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,787 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4518                           OpenLDAP Foundation
+Category: Standards Track                                      June 2006
+
+
+             Lightweight Directory Access Protocol (LDAP):
+                  Internationalized String Preparation
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   The previous Lightweight Directory Access Protocol (LDAP) technical
+   specifications did not precisely define how character string matching
+   is to be performed.  This led to a number of usability and
+   interoperability problems.  This document defines string preparation
+   algorithms for character-based matching rules defined for use in
+   LDAP.
+
+1.  Introduction
+
+1.1.  Background
+
+   A Lightweight Directory Access Protocol (LDAP) [RFC4510] matching
+   rule [RFC4517] defines an algorithm for determining whether a
+   presented value matches an attribute value in accordance with the
+   criteria defined for the rule.  The proposition may be evaluated to
+   True, False, or Undefined.
+
+      True      - the attribute contains a matching value,
+
+      False     - the attribute contains no matching value,
+
+      Undefined - it cannot be determined whether the attribute contains
+                  a matching value.
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   For instance, the caseIgnoreMatch matching rule may be used to
+   compare whether the commonName attribute contains a particular value
+   without regard for case and insignificant spaces.
+
+1.2.  X.500 String Matching Rules
+
+   "X.520: Selected attribute types" [X.520] provides (among other
+   things) value syntaxes and matching rules for comparing values
+   commonly used in the directory [X.500].  These specifications are
+   inadequate for strings composed of Unicode [Unicode] characters.
+
+   The caseIgnoreMatch matching rule [X.520], for example, is simply
+   defined as being a case-insensitive comparison where insignificant
+   spaces are ignored.  For printableString, there is only one space
+   character and case mapping is bijective, hence this definition is
+   sufficient.  However, for Unicode string types such as
+   universalString, this is not sufficient.  For example, a case-
+   insensitive matching implementation that folded lowercase characters
+   to uppercase would yield different results than an implementation
+   that used uppercase to lowercase folding.  Or one implementation may
+   view space as referring to only SPACE (U+0020), a second
+   implementation may view any character with the space separator (Zs)
+   property as a space, and another implementation may view any
+   character with the whitespace (WS) category as a space.
+
+   The lack of precise specification for character string matching has
+   led to significant interoperability problems.  When used in
+   certificate chain validation, security vulnerabilities can arise.  To
+   address these problems, this document defines precise algorithms for
+   preparing character strings for matching.
+
+1.3.  Relationship to "stringprep"
+
+   The character string preparation algorithms described in this
+   document are based upon the "stringprep" approach [RFC3454].  In
+   "stringprep", presented and stored values are first prepared for
+   comparison so that a character-by-character comparison yields the
+   "correct" result.
+
+   The approach used here is a refinement of the "stringprep" [RFC3454]
+   approach.  Each algorithm involves two additional preparation steps.
+
+   a) Prior to applying the Unicode string preparation steps outlined in
+      "stringprep", the string is transcoded to Unicode.
+
+   b) After applying the Unicode string preparation steps outlined in
+      "stringprep", the string is modified to appropriately handle
+      characters insignificant to the matching rule.
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   Hence, preparation of character strings for X.500 [X.500] matching
+   [X.501] involves the following steps:
+
+      1) Transcode
+      2) Map
+      3) Normalize
+      4) Prohibit
+      5) Check Bidi (Bidirectional)
+      6) Insignificant Character Handling
+
+   These steps are described in Section 2.
+
+   It is noted that while various tables of Unicode characters included
+   or referenced by this specification are derived from Unicode
+   [Unicode] data, these tables are to be considered definitive for the
+   purpose of implementing this specification.
+
+1.4.  Relationship to the LDAP Technical Specification
+
+   This document is an integral part of the LDAP technical specification
+   [RFC4510], which obsoletes the previously defined LDAP technical
+   specification [RFC3377] in its entirety.
+
+   This document details new LDAP internationalized character string
+   preparation algorithms used by [RFC4517] and possible other technical
+   specifications defining LDAP syntaxes and/or matching rules.
+
+1.5.  Relationship to X.500
+
+   LDAP is defined [RFC4510] in X.500 terms as an X.500 access
+   mechanism.  As such, there is a strong desire for alignment between
+   LDAP and X.500 syntax and semantics.  The character string
+   preparation algorithms described in this document are based upon
+   "Internationalized String Matching Rules for X.500" [XMATCH] proposal
+   to ITU/ISO Joint Study Group 2.
+
+1.6.  Conventions and Terms
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+   Character names in this document use the notation for code points and
+   names from the Unicode Standard [Unicode].  For example, the letter
+   "a" may be represented as either <U+0061> or <LATIN SMALL LETTER A>.
+   In the lists of mappings and the prohibited characters, the "U+" is
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   left off to make the lists easier to read.  The comments for
+   character ranges are shown in square brackets (such as "[CONTROL
+   CHARACTERS]") and do not come from the standard.
+
+   Note: a glossary of terms used in Unicode can be found in [Glossary].
+   Information on the Unicode character encoding model can be found in
+   [CharModel].
+
+   The term "combining mark", as used in this specification, refers to
+   any Unicode [Unicode] code point that has a mark property (Mn, Mc,
+   Me).  Appendix A provides a definitive list of combining marks.
+
+2.  String Preparation
+
+   The following six-step process SHALL be applied to each presented and
+   attribute value in preparation for character string matching rule
+   evaluation.
+
+      1) Transcode
+      2) Map
+      3) Normalize
+      4) Prohibit
+      5) Check bidi
+      6) Insignificant Character Handling
+
+   Failure in any step causes the assertion to evaluate to Undefined.
+
+   The character repertoire of this process is Unicode 3.2 [Unicode].
+
+   Note that this six-step process specification is intended to describe
+   expected matching behavior.  Implementations are free to use
+   alternative processes so long as the matching rule evaluation
+   behavior provided is consistent with the behavior described by this
+   specification.
+
+2.1.  Transcode
+
+   Each non-Unicode string value is transcoded to Unicode.
+
+   PrintableString [X.680] values are transcoded directly to Unicode.
+
+   UniversalString, UTF8String, and bmpString [X.680] values need not be
+   transcoded as they are Unicode-based strings (in the case of
+   bmpString, a subset of Unicode).
+
+   TeletexString [X.680] values are transcoded to Unicode.  As there is
+   no standard for mapping TeletexString values to Unicode, the mapping
+   is left a local matter.
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   For these and other reasons, use of TeletexString is NOT RECOMMENDED.
+
+   The output is the transcoded string.
+
+2.2.  Map
+
+   SOFT HYPHEN (U+00AD) and MONGOLIAN TODO SOFT HYPHEN (U+1806) code
+   points are mapped to nothing.  COMBINING GRAPHEME JOINER (U+034F) and
+   VARIATION SELECTORs (U+180B-180D, FF00-FE0F) code points are also
+   mapped to nothing.  The OBJECT REPLACEMENT CHARACTER (U+FFFC) is
+   mapped to nothing.
+
+   CHARACTER TABULATION (U+0009), LINE FEED (LF) (U+000A), LINE
+   TABULATION (U+000B), FORM FEED (FF) (U+000C), CARRIAGE RETURN (CR)
+   (U+000D), and NEXT LINE (NEL) (U+0085) are mapped to SPACE (U+0020).
+
+   All other control code (e.g., Cc) points or code points with a
+   control function (e.g., Cf) are mapped to nothing.  The following is
+   a complete list of these code points: U+0000-0008, 000E-001F, 007F-
+   0084, 0086-009F, 06DD, 070F, 180E, 200C-200F, 202A-202E, 2060-2063,
+   206A-206F, FEFF, FFF9-FFFB, 1D173-1D17A, E0001, E0020-E007F.
+
+   ZERO WIDTH SPACE (U+200B) is mapped to nothing.  All other code
+   points with Separator (space, line, or paragraph) property (e.g., Zs,
+   Zl, or Zp) are mapped to SPACE (U+0020).  The following is a complete
+   list of these code points: U+0020, 00A0, 1680, 2000-200A, 2028-2029,
+   202F, 205F, 3000.
+
+   For case ignore, numeric, and stored prefix string matching rules,
+   characters are case folded per B.2 of [RFC3454].
+
+   The output is the mapped string.
+
+2.3.  Normalize
+
+   The input string is to be normalized to Unicode Form KC
+   (compatibility composed) as described in [UAX15].  The output is the
+   normalized string.
+
+2.4.  Prohibit
+
+   All Unassigned code points are prohibited.  Unassigned code points
+   are listed in Table A.1 of [RFC3454].
+
+   Characters that, per Section 5.8 of [RFC3454], change display
+   properties or are deprecated are prohibited.  These characters are
+   listed in Table C.8 of [RFC3454].
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   Private Use code points are prohibited.  These characters are listed
+   in Table C.3 of [RFC3454].
+
+   All non-character code points are prohibited.  These code points are
+   listed in Table C.4 of [RFC3454].
+
+   Surrogate codes are prohibited.  These characters are listed in Table
+   C.5 of [RFC3454].
+
+   The REPLACEMENT CHARACTER (U+FFFD) code point is prohibited.
+
+   The step fails if the input string contains any prohibited code
+   point.  Otherwise, the output is the input string.
+
+2.5.  Check bidi
+
+   Bidirectional characters are ignored.
+
+2.6.  Insignificant Character Handling
+
+   In this step, the string is modified to ensure proper handling of
+   characters insignificant to the matching rule.  This modification
+   differs from matching rule to matching rule.
+
+   Section 2.6.1 applies to case ignore and exact string matching.
+   Section 2.6.2 applies to numericString matching.
+   Section 2.6.3 applies to telephoneNumber matching.
+
+2.6.1.  Insignificant Space Handling
+
+   For the purposes of this section, a space is defined to be the SPACE
+   (U+0020) code point followed by no combining marks.
+
+       NOTE - The previous steps ensure that the string cannot contain
+              any code points in the separator class, other than SPACE
+              (U+0020).
+
+   For input strings that are attribute values or non-substring
+   assertion values:  If the input string contains no non-space
+   character, then the output is exactly two SPACEs.  Otherwise (the
+   input string contains at least one non-space character), the string
+   is modified such that the string starts with exactly one space
+   character, ends with exactly one SPACE character, and any inner
+   (non-empty) sequence of space characters is replaced with exactly two
+   SPACE characters.  For instance, the input strings
+   "foo<SPACE>bar<SPACE><SPACE>", result in the output
+   "<SPACE>foo<SPACE><SPACE>bar<SPACE>".
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   For input strings that are substring assertion values: If the string
+   being prepared contains no non-space characters, then the output
+   string is exactly one SPACE.  Otherwise, the following steps are
+   taken:
+
+   -  If the input string is an initial substring, it is modified to
+      start with exactly one SPACE character;
+
+   -  If the input string is an initial or an any substring that ends in
+      one or more space characters, it is modified to end with exactly
+      one SPACE character;
+
+   -  If the input string is an any or a final substring that starts in
+      one or more space characters, it is modified to start with exactly
+      one SPACE character; and
+
+   -  If the input string is a final substring, it is modified to end
+      with exactly one SPACE character.
+
+   For instance, for the input string "foo<SPACE>bar<SPACE><SPACE>" as
+   an initial substring, the output would be
+   "<SPACE>foo<SPACE><SPACE>bar<SPACE>".  As an any or final substring,
+   the same input would result in "foo<SPACE>bar<SPACE>".
+
+   Appendix B discusses the rationale for the behavior.
+
+2.6.2.  numericString Insignificant Character Handling
+
+   For the purposes of this section, a space is defined to be the SPACE
+   (U+0020) code point followed by no combining marks.
+
+   All spaces are regarded as insignificant and are to be removed.
+
+   For example, removal of spaces from the Form KC string:
+       "<SPACE><SPACE>123<SPACE><SPACE>456<SPACE><SPACE>"
+   would result in the output string:
+       "123456"
+   and the Form KC string:
+       "<SPACE><SPACE><SPACE>"
+   would result in the output string:
+       "" (an empty string).
+
+2.6.3.  telephoneNumber Insignificant Character Handling
+
+   For the purposes of this section, a hyphen is defined to be a
+   HYPHEN-MINUS (U+002D), ARMENIAN HYPHEN (U+058A), HYPHEN (U+2010),
+   NON-BREAKING HYPHEN (U+2011), MINUS SIGN (U+2212), SMALL HYPHEN-MINUS
+   (U+FE63), or FULLWIDTH HYPHEN-MINUS (U+FF0D) code point followed by
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   no combining marks and a space is defined to be the SPACE (U+0020)
+   code point followed by no combining marks.
+
+   All hyphens and spaces are considered insignificant and are to be
+   removed.
+
+   For example, removal of hyphens and spaces from the Form KC string:
+       "<SPACE><HYPHEN>123<SPACE><SPACE>456<SPACE><HYPHEN>"
+   would result in the output string:
+       "123456"
+   and the Form KC string:
+       "<HYPHEN><HYPHEN><HYPHEN>"
+   would result in the (empty) output string:
+       "".
+
+3.  Security Considerations
+
+   "Preparation of Internationalized Strings ("stringprep")" [RFC3454]
+   security considerations generally apply to the algorithms described
+   here.
+
+4.  Acknowledgements
+
+   The approach used in this document is based upon design principles
+   and algorithms described in "Preparation of Internationalized Strings
+   ('stringprep')" [RFC3454] by Paul Hoffman and Marc Blanchet.  Some
+   additional guidance was drawn from Unicode Technical Standards,
+   Technical Reports, and Notes.
+
+   This document is a product of the IETF LDAP Revision (LDAPBIS)
+   Working Group.
+
+5.  References
+
+5.1.  Normative References
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3454]     Hoffman, P. and M. Blanchet, "Preparation of
+                 Internationalized Strings ("stringprep")", RFC 3454,
+                 December 2002.
+
+   [RFC4510]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Technical Specification Road Map", RFC 4510,
+                 June 2006.
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 8]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   [RFC4517]     Legg, S., Ed., "Lightweight Directory Access Protocol
+                 (LDAP): Syntaxes and Matching Rules", RFC 4517, June
+                 2006.
+
+   [Unicode]     The Unicode Consortium, "The Unicode Standard, Version
+                 3.2.0" is defined by "The Unicode Standard, Version
+                 3.0" (Reading, MA, Addison-Wesley, 2000.  ISBN 0-201-
+                 61633-5), as amended by the "Unicode Standard Annex
+                 #27: Unicode 3.1"
+                 (http://www.unicode.org/reports/tr27/) and by the
+                 "Unicode Standard Annex #28: Unicode 3.2"
+                 (http://www.unicode.org/reports/tr28/).
+
+   [UAX15]       Davis, M. and M. Duerst, "Unicode Standard Annex #15:
+                 Unicode Normalization Forms, Version 3.2.0".
+                 <http://www.unicode.org/unicode/reports/tr15/tr15-
+                 22.html>, March 2002.
+
+   [X.680]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "Abstract
+                 Syntax Notation One (ASN.1) - Specification of Basic
+                 Notation", X.680(2002) (also ISO/IEC 8824-1:2002).
+
+5.2.  Informative References
+
+   [X.500]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Overview of concepts, models and
+                 services," X.500(1993) (also ISO/IEC 9594-1:1994).
+
+   [X.501]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Models," X.501(1993) (also ISO/IEC 9594-
+                 2:1994).
+
+   [X.520]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory: Selected Attribute Types", X.520(1993) (also
+                 ISO/IEC 9594-6:1994).
+
+   [Glossary]    The Unicode Consortium, "Unicode Glossary",
+                 <http://www.unicode.org/glossary/>.
+
+   [CharModel]   Whistler, K. and M. Davis, "Unicode Technical Report
+                 #17, Character Encoding Model", UTR17,
+                 <http://www.unicode.org/unicode/reports/tr17/>, August
+                 2000.
+
+
+
+
+Zeilenga                    Standards Track                     [Page 9]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   [RFC3377]     Hodges, J. and R. Morgan, "Lightweight Directory Access
+                 Protocol (v3): Technical Specification", RFC 3377,
+                 September 2002.
+
+   [RFC4515]     Smith, M., Ed. and T. Howes, "Lightweight Directory
+                 Access Protocol (LDAP): String Representation of Search
+                 Filters", RFC 4515, June 2006.
+
+   [XMATCH]      Zeilenga, K., "Internationalized String Matching Rules
+                 for X.500", Work in Progress.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 10]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+Appendix A.  Combining Marks
+
+   This appendix is normative.
+
+   This table was derived from Unicode [Unicode] data files; it lists
+   all code points with the Mn, Mc, or Me properties.  This table is to
+   be considered definitive for the purposes of implementation of this
+   specification.
+
+         0300-034F 0360-036F 0483-0486 0488-0489 0591-05A1
+         05A3-05B9 05BB-05BC 05BF 05C1-05C2 05C4 064B-0655 0670
+         06D6-06DC 06DE-06E4 06E7-06E8 06EA-06ED 0711 0730-074A
+         07A6-07B0 0901-0903 093C 093E-094F 0951-0954 0962-0963
+         0981-0983 09BC 09BE-09C4 09C7-09C8 09CB-09CD 09D7
+         09E2-09E3 0A02 0A3C 0A3E-0A42 0A47-0A48 0A4B-0A4D
+         0A70-0A71 0A81-0A83 0ABC 0ABE-0AC5 0AC7-0AC9 0ACB-0ACD
+         0B01-0B03 0B3C 0B3E-0B43 0B47-0B48 0B4B-0B4D 0B56-0B57
+         0B82 0BBE-0BC2 0BC6-0BC8 0BCA-0BCD 0BD7 0C01-0C03
+         0C3E-0C44 0C46-0C48 0C4A-0C4D 0C55-0C56 0C82-0C83
+         0CBE-0CC4 0CC6-0CC8 0CCA-0CCD 0CD5-0CD6 0D02-0D03
+         0D3E-0D43 0D46-0D48 0D4A-0D4D 0D57 0D82-0D83 0DCA
+         0DCF-0DD4 0DD6 0DD8-0DDF 0DF2-0DF3 0E31 0E34-0E3A
+         0E47-0E4E 0EB1 0EB4-0EB9 0EBB-0EBC 0EC8-0ECD 0F18-0F19
+         0F35 0F37 0F39 0F3E-0F3F 0F71-0F84 0F86-0F87 0F90-0F97
+         0F99-0FBC 0FC6 102C-1032 1036-1039 1056-1059 1712-1714
+         1732-1734 1752-1753 1772-1773 17B4-17D3 180B-180D 18A9
+         20D0-20EA 302A-302F 3099-309A FB1E FE00-FE0F FE20-FE23
+         1D165-1D169 1D16D-1D172 1D17B-1D182 1D185-1D18B
+         1D1AA-1D1AD
+
+Appendix B.  Substrings Matching
+
+   This appendix is non-normative.
+
+   In the absence of substrings matching, the insignificant space
+   handling for case ignore/exact matching could be simplified.
+   Specifically, the handling could be to require that all sequences of
+   one or more spaces be replaced with one space and, if the string
+   contains non-space characters, removal of all leading spaces and
+   trailing spaces.
+
+   In the presence of substrings matching, this simplified space
+   handling would lead to unexpected and undesirable matching behavior.
+   For instance:
+
+   1) (CN=foo\20*\20bar) would match the CN value "foobar";
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 11]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   2) (CN=*\20foobar\20*) would match "foobar", but
+      (CN=*\20*foobar*\20*) would not.
+
+   Note to readers not familiar with LDAP substrings matching: the LDAP
+   filter [RFC4515] assertion (CN=A*B*C) says to "match any value (of
+   the attribute CN) that begins with A, contains B after A, ends with C
+   where C is also after B."
+
+   The first case illustrates that this simplified space handling would
+   cause leading and trailing spaces in substrings of the string to be
+   regarded as insignificant.  However, only leading and trailing (as
+   well as multiple consecutive spaces) of the string (as a whole) are
+   insignificant.
+
+   The second case illustrates that this simplified space handling would
+   cause sub-partitioning failures.  That is, if a prepared any
+   substring matches a partition of the attribute value, then an
+   assertion constructed by subdividing that substring into multiple
+   substrings should also match.
+
+   In designing an appropriate approach for space handling for
+   substrings matching, one must study key aspects of X.500 case
+   exact/ignore matching.  X.520 [X.520] says:
+
+      The [substrings] rule returns TRUE if there is a partitioning of
+      the attribute value (into portions) such that:
+
+         -  the specified substrings (initial, any, final) match
+            different portions of the value in the order of the strings
+            sequence;
+
+         -  initial, if present, matches the first portion of the value;
+
+         -  final, if present, matches the last portion of the value;
+
+         -  any, if present, matches some arbitrary portion of the
+            value.
+
+   That is, the substrings assertion (CN=foo\20*\20bar) matches the
+   attribute value "foo<SPACE><SPACE>bar" as the value can be
+   partitioned into the portions "foo<SPACE>" and "<SPACE>bar" meeting
+   the above requirements.
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 12]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+   X.520 also says:
+
+      [T]he following spaces are regarded as not significant:
+
+         -  leading spaces (i.e., those preceding the first character
+            that is not a space);
+
+         -  trailing spaces (i.e., those following the last character
+            that is not a space);
+
+         -  multiple consecutive spaces (these are taken as equivalent
+            to a single space character).
+
+   This statement applies to the assertion values and attribute values
+   as whole strings, and not individually to substrings of an assertion
+   value.  In particular, the statements should be taken to mean that if
+   an assertion value and attribute value match without any
+   consideration to insignificant characters, then that assertion value
+   should also match any attribute value that differs only by inclusion
+   nor removal of insignificant characters.
+
+   Hence the assertion (CN=foo\20*\20bar) matches
+   "foo<SPACE><SPACE><SPACE>bar" and "foo<SPACE>bar" as these values
+   only differ from "foo<SPACE><SPACE>bar" by the inclusion or removal
+   of insignificant spaces.
+
+   Astute readers of this text will also note that there are special
+   cases where the specified space handling does not ignore spaces that
+   could be considered insignificant.  For instance, the assertion
+   (CN=\20*\20*\20) does not match "<SPACE><SPACE><SPACE>"
+   (insignificant spaces present in value) or " " (insignificant spaces
+   not present in value).  However, as these cases have no practical
+   application that cannot be met by simple assertions, e.g., (cn=\20),
+   and this minor anomaly can only be fully addressed by a preparation
+   algorithm to be used in conjunction with character-by-character
+   partitioning and matching, the anomaly is considered acceptable.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 13]
+
+RFC 4518       LDAP: Internationalized String Preparation      June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 14]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4519.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4519.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4519.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4519.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,1963 @@
+
+
+
+
+
+
+Network Working Group                                  A. Sciberras, Ed.
+Request for Comments: 4519                                       eB2Bcom
+Obsoletes: 2256                                                June 2006
+Updates: 2247, 2798, 2377
+Category: Standards Track
+
+
+             Lightweight Directory Access Protocol (LDAP):
+                      Schema for User Applications
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document is an integral part of the Lightweight Directory Access
+   Protocol (LDAP) technical specification.  It provides a technical
+   specification of attribute types and object classes intended for use
+   by LDAP directory clients for many directory services, such as White
+   Pages.  These objects are widely used as a basis for the schema in
+   many LDAP directories.  This document does not cover attributes used
+   for the administration of directory servers, nor does it include
+   directory objects defined for specific uses in other documents.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sciberras                   Standards Track                     [Page 1]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+Table of Contents
+
+   1. Introduction ....................................................3
+      1.1. Relationship with Other Specifications .....................3
+      1.2. Conventions ................................................4
+      1.3. General Issues .............................................4
+   2. Attribute Types .................................................4
+      2.1. 'businessCategory' .........................................5
+      2.2. 'c' ........................................................5
+      2.3. 'cn' .......................................................5
+      2.4. 'dc' .......................................................6
+      2.5. 'description' ..............................................6
+      2.6. 'destinationIndicator' .....................................7
+      2.7. 'distinguishedName' ........................................7
+      2.8. 'dnQualifier' ..............................................8
+      2.9. 'enhancedSearchGuide' ......................................8
+      2.10. 'facsimileTelephoneNumber' ................................9
+      2.11. 'generationQualifier' .....................................9
+      2.12. 'givenName' ...............................................9
+      2.13. 'houseIdentifier' .........................................9
+      2.14. 'initials' ...............................................10
+      2.15. 'internationalISDNNumber' ................................10
+      2.16. 'l' ......................................................10
+      2.17. 'member' .................................................11
+      2.18. 'name' ...................................................11
+      2.19. 'o' ......................................................11
+      2.20. 'ou' .....................................................12
+      2.21. 'owner' ..................................................12
+      2.22. 'physicalDeliveryOfficeName' .............................12
+      2.23. 'postalAddress' ..........................................13
+      2.24. 'postalCode' .............................................13
+      2.25. 'postOfficeBox' ..........................................14
+      2.26. 'preferredDeliveryMethod' ................................14
+      2.27. 'registeredAddress' ......................................14
+      2.28. 'roleOccupant' ...........................................15
+      2.29. 'searchGuide' ............................................15
+      2.30. 'seeAlso' ................................................15
+      2.31. 'serialNumber' ...........................................16
+      2.32. 'sn' .....................................................16
+      2.33. 'st' .....................................................16
+      2.34. 'street' .................................................17
+      2.35. 'telephoneNumber' ........................................17
+      2.36. 'teletexTerminalIdentifier' ..............................17
+      2.37. 'telexNumber' ............................................18
+      2.38. 'title' ..................................................18
+      2.39. 'uid' ....................................................18
+      2.40. 'uniqueMember' ...........................................19
+      2.41. 'userPassword' ...........................................19
+
+
+
+Sciberras                   Standards Track                     [Page 2]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      2.42. 'x121Address' ............................................20
+      2.43. 'x500UniqueIdentifier' ...................................20
+   3. Object Classes .................................................20
+      3.1. 'applicationProcess' ......................................21
+      3.2. 'country' .................................................21
+      3.3. 'dcObject' ................................................21
+      3.4. 'device' ..................................................21
+      3.5. 'groupOfNames' ............................................22
+      3.6. 'groupOfUniqueNames' ......................................22
+      3.7. 'locality' ................................................23
+      3.8. 'organization' ............................................23
+      3.9. 'organizationalPerson' ....................................24
+      3.10. 'organizationalRole' .....................................24
+      3.11. 'organizationalUnit' .....................................24
+      3.12. 'person' .................................................25
+      3.13. 'residentialPerson' ......................................25
+      3.14. 'uidObject' ..............................................26
+   4. IANA Considerations ............................................26
+   5. Security Considerations ........................................28
+   6. Acknowledgements ...............................................28
+   7. References .....................................................29
+      7.1. Normative References ......................................29
+      7.2. Informative References ....................................30
+   Appendix A  Changes Made Since RFC 2256 ...........................32
+
+1.  Introduction
+
+   This document provides an overview of attribute types and object
+   classes intended for use by Lightweight Directory Access Protocol
+   (LDAP) directory clients for many directory services, such as White
+   Pages.  Originally specified in the X.500 [X.500] documents, these
+   objects are widely used as a basis for the schema in many LDAP
+   directories.  This document does not cover attributes used for the
+   administration of directory servers, nor does it include directory
+   objects defined for specific uses in other documents.
+
+1.1.  Relationship with Other Specifications
+
+   This document is an integral part of the LDAP technical specification
+   [RFC4510], which obsoletes the previously defined LDAP technical
+   specification, RFC 3377, in its entirety.  In terms of RFC 2256,
+   Sections 6 and 8 of RFC 2256 are obsoleted by [RFC4517].  Sections
+   5.1, 5.2, 7.1, and 7.2 of RFC 2256 are obsoleted by [RFC4512].  The
+   remainder of RFC 2256 is obsoleted by this document.  The technical
+   specification for the 'dc' attribute type and 'dcObject' object class
+   found in RFC 2247 are superseded by sections 2.4 and 3.3 of this
+   document.  The remainder of RFC 2247 remains in force.
+
+
+
+
+Sciberras                   Standards Track                     [Page 3]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+   This document updates RFC 2798 by replacing the informative
+   description of the 'uid' attribute type with the definitive
+   description provided in Section 2.39 of this document.
+
+   This document updates RFC 2377 by replacing the informative
+   description of the 'uidObject' object class with the definitive
+   description provided in Section 3.14 of this document.
+
+   A number of schema elements that were included in the previous
+   revision of the LDAP Technical Specification are not included in this
+   revision of LDAP.  PKI-related schema elements are now specified in
+   [RFC4523].  Unless reintroduced in future technical specifications,
+   the remainder are to be considered Historic.
+
+   The descriptions in this document SHALL be considered definitive for
+   use in LDAP.
+
+1.2.  Conventions
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in RFC 2119 [RFC2119].
+
+1.3.  General Issues
+
+   This document references Syntaxes defined in Section 3 of [RFC4517]
+   and Matching Rules defined in Section 4 of [RFC4517].
+
+   The definitions of Attribute Types and Object Classes are written
+   using the Augmented Backus-Naur Form (ABNF) [RFC4234] of
+   AttributeTypeDescription and ObjectClassDescription given in
+   [RFC4512].  Lines have been folded for readability.  When such values
+   are transferred as attribute values in the LDAP Protocol, the values
+   will not contain line breaks.
+
+2.  Attribute Types
+
+   The attribute types contained in this section hold user information.
+
+   There is no requirement that servers implement the 'searchGuide' and
+   'teletexTerminalIdentifier' attribute types.  In fact, their use is
+   greatly discouraged.
+
+   An LDAP server implementation SHOULD recognize the rest of the
+   attribute types described in this section.
+
+
+
+
+
+
+Sciberras                   Standards Track                     [Page 4]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+2.1.  'businessCategory'
+
+   The 'businessCategory' attribute type describes the kinds of business
+   performed by an organization.  Each kind is one value of this
+   multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.15 NAME 'businessCategory'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax
+   [RFC4517].
+
+   Examples: "banking", "transportation", and "real estate".
+
+2.2.  'c'
+
+   The 'c' ('countryName' in X.500) attribute type contains a two-letter
+   ISO 3166 [ISO3166] country code.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.6 NAME 'c'
+         SUP name
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.11
+         SINGLE-VALUE )
+
+   1.3.6.1.4.1.1466.115.121.1.11 refers to the Country String syntax
+   [RFC4517].
+
+   Examples: "DE", "AU" and "FR".
+
+2.3.  'cn'
+
+   The 'cn' ('commonName' in X.500) attribute type contains names of an
+   object.  Each name is one value of this multi-valued attribute.  If
+   the object corresponds to a person, it is typically the person's full
+   name.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.3 NAME 'cn'
+         SUP name )
+
+   Examples: "Martin K Smith", "Marty Smith" and "printer12".
+
+
+
+
+
+
+Sciberras                   Standards Track                     [Page 5]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+2.4.  'dc'
+
+   The 'dc' ('domainComponent' in RFC 1274) attribute type is a string
+   holding one component, a label, of a DNS domain name
+   [RFC1034][RFC2181] naming a host [RFC1123].  That is, a value of this
+   attribute is a string of ASCII characters adhering to the following
+   ABNF [RFC4234]:
+
+   label = (ALPHA / DIGIT) [*61(ALPHA / DIGIT / HYPHEN) (ALPHA / DIGIT)]
+   ALPHA   = %x41-5A / %x61-7A     ; "A"-"Z" / "a"-"z"
+   DIGIT   = %x30-39               ; "0"-"9"
+   HYPHEN  = %x2D                  ; hyphen ("-")
+
+   The encoding of IA5String for use in LDAP is simply the characters of
+   the ASCII label.  The equality matching rule is case insensitive, as
+   is today's DNS.  (Source: RFC 2247 [RFC2247] and RFC 1274 [RFC 1274])
+
+      ( 0.9.2342.19200300.100.1.25 NAME 'dc'
+         EQUALITY caseIgnoreIA5Match
+         SUBSTR caseIgnoreIA5SubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+         SINGLE-VALUE )
+
+   1.3.6.1.4.1.1466.115.121.1.26 refers to the IA5 String syntax
+   [RFC4517].
+
+   Examples: Valid values include "example" and "com" but not
+   "example.com".  The latter is invalid as it contains multiple domain
+   components.
+
+   It is noted that the directory service will not ensure that values of
+   this attribute conform to the host label restrictions [RFC1123]
+   illustrated by the <label> production provided above.  It is the
+   directory client's responsibility to ensure that the labels it stores
+   in this attribute are appropriately restricted.
+
+   Directory applications supporting International Domain Names SHALL
+   use the ToASCII method [RFC3490] to produce the domain component
+   label.  The special considerations discussed in Section 4 of RFC 3490
+   [RFC3490] should be taken, depending on whether the domain component
+   is used for "stored" or "query" purposes.
+
+2.5.  'description'
+
+   The 'description' attribute type contains human-readable descriptive
+   phrases about the object.  Each description is one value of this
+   multi-valued attribute.
+   (Source: X.520 [X.520])
+
+
+
+Sciberras                   Standards Track                     [Page 6]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      ( 2.5.4.13 NAME 'description'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax
+   [RFC4517].
+
+   Examples: "a color printer", "Maintenance is done every Monday, at
+             1pm.", and "distribution list for all technical staff".
+
+2.6.  'destinationIndicator'
+
+   The 'destinationIndicator' attribute type contains country and city
+   strings associated with the object (the addressee) needed to provide
+   the Public Telegram Service.  The strings are composed in accordance
+   with CCITT Recommendations F.1 [F.1] and F.31 [F.31].  Each string is
+   one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.27 NAME 'destinationIndicator'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
+
+   1.3.6.1.4.1.1466.115.121.1.44 refers to the Printable String syntax
+   [RFC4517].
+
+   Examples: "AASD" as a destination indicator for Sydney, Australia.
+             "GBLD" as a destination indicator for London, United
+             Kingdom.
+
+   It is noted that the directory will not ensure that values of this
+   attribute conform to the F.1 and F.31 CCITT Recommendations.  It is
+   the application's responsibility to ensure destination indicators
+   that it stores in this attribute are appropriately constructed.
+
+2.7.  'distinguishedName'
+
+   The 'distinguishedName' attribute type is not used as the name of the
+   object itself, but it is instead a base type from which some user
+   attribute types with a DN syntax can inherit.
+
+   It is unlikely that values of this type itself will occur in an
+   entry.  LDAP server implementations that do not support attribute
+   subtyping need not recognize this attribute in requests.  Client
+   implementations MUST NOT assume that LDAP servers are capable of
+   performing attribute subtyping.
+
+
+
+Sciberras                   Standards Track                     [Page 7]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.49 NAME 'distinguishedName'
+         EQUALITY distinguishedNameMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+
+   1.3.6.1.4.1.1466.115.121.1.12 refers to the DN syntax [RFC4517].
+
+2.8.  'dnQualifier'
+
+   The 'dnQualifier' attribute type contains disambiguating information
+   strings to add to the relative distinguished name of an entry.  The
+   information is intended for use when merging data from multiple
+   sources in order to prevent conflicts between entries that would
+   otherwise have the same name.  Each string is one value of this
+   multi-valued attribute.  It is recommended that a value of the
+   'dnQualifier' attribute be the same for all entries from a particular
+   source.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.46 NAME 'dnQualifier'
+         EQUALITY caseIgnoreMatch
+         ORDERING caseIgnoreOrderingMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
+
+   1.3.6.1.4.1.1466.115.121.1.44 refers to the Printable String syntax
+   [RFC4517].
+
+   Examples: "20050322123345Z" - timestamps can be used to disambiguate
+             information.
+             "123456A" - serial numbers can be used to disambiguate
+             information.
+
+2.9.  'enhancedSearchGuide'
+
+   The 'enhancedSearchGuide' attribute type contains sets of information
+   for use by directory clients in constructing search filters.  Each
+   set is one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.47 NAME 'enhancedSearchGuide'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 )
+
+   1.3.6.1.4.1.1466.115.121.1.21 refers to the Enhanced Guide syntax
+   [RFC4517].
+
+
+
+
+
+Sciberras                   Standards Track                     [Page 8]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+   Examples: "person#(sn$APPROX)#wholeSubtree" and
+             "organizationalUnit#(ou$SUBSTR)#oneLevel".
+
+2.10.  'facsimileTelephoneNumber'
+
+   The 'facsimileTelephoneNumber' attribute type contains telephone
+   numbers (and, optionally, the parameters) for facsimile terminals.
+   Each telephone number is one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.23 NAME 'facsimileTelephoneNumber'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.22 )
+
+   1.3.6.1.4.1.1466.115.121.1.22 refers to the Facsimile Telephone
+   Number syntax [RFC4517].
+
+   Examples: "+61 3 9896 7801" and "+81 3 347 7418$fineResolution".
+
+2.11.  'generationQualifier'
+
+   The 'generationQualifier' attribute type contains name strings that
+   are typically the suffix part of a person's name.  Each string is one
+   value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.44 NAME 'generationQualifier'
+         SUP name )
+
+   Examples: "III", "3rd", and "Jr.".
+
+2.12.  'givenName'
+
+   The 'givenName' attribute type contains name strings that are the
+   part of a person's name that is not their surname.  Each string is
+   one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.42 NAME 'givenName'
+         SUP name )
+
+   Examples: "Andrew", "Charles", and "Joanne".
+
+2.13.  'houseIdentifier'
+
+   The 'houseIdentifier' attribute type contains identifiers for a
+   building within a location.  Each identifier is one value of this
+   multi-valued attribute.
+   (Source: X.520 [X.520])
+
+
+
+Sciberras                   Standards Track                     [Page 9]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      ( 2.5.4.51 NAME 'houseIdentifier'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax
+   [RFC4517].
+
+   Example: "20" to represent the house number 20.
+
+2.14.  'initials'
+
+   The 'initials' attribute type contains strings of initials of some or
+   all of an individual's names, except the surname(s).  Each string is
+   one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.43 NAME 'initials'
+         SUP name )
+
+   Examples: "K. A." and "K".
+
+2.15.  'internationalISDNNumber'
+
+   The 'internationalISDNNumber' attribute type contains Integrated
+   Services Digital Network (ISDN) addresses, as defined in the
+   International Telecommunication Union (ITU) Recommendation E.164
+   [E.164].  Each address is one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.25 NAME 'internationalISDNNumber'
+         EQUALITY numericStringMatch
+         SUBSTR numericStringSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )
+
+   1.3.6.1.4.1.1466.115.121.1.36 refers to the Numeric String syntax
+   [RFC4517].
+
+   Example: "0198 333 333".
+
+2.16.  'l'
+
+   The 'l' ('localityName' in X.500) attribute type contains names of a
+   locality or place, such as a city, county, or other geographic
+   region.  Each name is one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 10]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      ( 2.5.4.7 NAME 'l'
+         SUP name )
+
+   Examples: "Geneva", "Paris", and "Edinburgh".
+
+2.17.  'member'
+
+   The 'member' attribute type contains the distinguished names of
+   objects that are on a list or in a group.  Each name is one value of
+   this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.31 NAME 'member'
+         SUP distinguishedName )
+
+   Examples: "cn=James Clarke,ou=Finance,o=Widget\, Inc." and
+             "cn=John Xerri,ou=Finance,o=Widget\, Inc." may
+             be two members of the financial team (group) at Widget,
+             Inc., in which case, both of these distinguished names
+             would be present as individual values of the member
+             attribute.
+
+2.18.  'name'
+
+   The 'name' attribute type is the attribute supertype from which user
+   attribute types with the name syntax inherit.  Such attribute types
+   are typically used for naming.  The attribute type is multi-valued.
+
+   It is unlikely that values of this type itself will occur in an
+   entry.  LDAP server implementations that do not support attribute
+   subtyping need not recognize this attribute in requests.  Client
+   implementations MUST NOT assume that LDAP servers are capable of
+   performing attribute subtyping.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.41 NAME 'name'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax
+   [RFC4517].
+
+2.19.  'o'
+
+   The 'o' ('organizationName' in X.500) attribute type contains the
+   names of an organization.  Each name is one value of this
+   multi-valued attribute.
+
+
+
+Sciberras                   Standards Track                    [Page 11]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.10 NAME 'o'
+         SUP name )
+
+   Examples: "Widget", "Widget, Inc.", and "Widget, Incorporated.".
+
+2.20.  'ou'
+
+   The 'ou' ('organizationalUnitName' in X.500) attribute type contains
+   the names of an organizational unit.  Each name is one value of this
+   multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.11 NAME 'ou'
+         SUP name )
+
+   Examples: "Finance", "Human Resources", and "Research and
+             Development".
+
+2.21.  'owner'
+
+   The 'owner' attribute type contains the distinguished names of
+   objects that have an ownership responsibility for the object that is
+   owned.  Each owner's name is one value of this multi-valued
+   attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.32 NAME 'owner'
+         SUP distinguishedName )
+
+   Example: The mailing list object, whose DN is "cn=All Employees,
+            ou=Mailing List,o=Widget\, Inc.", is owned by the Human
+            Resources Director.
+
+            Therefore, the value of the 'owner' attribute within the
+            mailing list object, would be the DN of the director (role):
+            "cn=Human Resources Director,ou=employee,o=Widget\, Inc.".
+
+2.22.  'physicalDeliveryOfficeName'
+
+   The 'physicalDeliveryOfficeName' attribute type contains names that a
+   Postal Service uses to identify a post office.
+   (Source: X.520 [X.520])
+
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 12]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      ( 2.5.4.19 NAME 'physicalDeliveryOfficeName'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax
+   [RFC4517].
+
+   Examples: "Bremerhaven, Main" and "Bremerhaven, Bonnstrasse".
+
+2.23.  'postalAddress'
+
+   The 'postalAddress' attribute type contains addresses used by a
+   Postal Service to perform services for the object.  Each address is
+   one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.16 NAME 'postalAddress'
+         EQUALITY caseIgnoreListMatch
+         SUBSTR caseIgnoreListSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
+
+   1.3.6.1.4.1.1466.115.121.1.41 refers to the Postal Address syntax
+   [RFC4517].
+
+   Example: "15 Main St.$Ottawa$Canada".
+
+2.24.  'postalCode'
+
+   The 'postalCode' attribute type contains codes used by a Postal
+   Service to identify postal service zones.  Each code is one value of
+   this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.17 NAME 'postalCode'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax
+   [RFC4517].
+
+   Example: "22180", to identify Vienna, VA, in the USA.
+
+
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 13]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+2.25.  'postOfficeBox'
+
+   The 'postOfficeBox' attribute type contains postal box identifiers
+   that a Postal Service uses when a customer arranges to receive mail
+   at a box on the premises of the Postal Service.  Each postal box
+   identifier is a single value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.18 NAME 'postOfficeBox'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax
+   [RFC4517].
+
+   Example: "Box 45".
+
+2.26.  'preferredDeliveryMethod'
+
+   The 'preferredDeliveryMethod' attribute type contains an indication
+   of the preferred method of getting a message to the object.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.28 NAME 'preferredDeliveryMethod'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.14
+         SINGLE-VALUE )
+
+   1.3.6.1.4.1.1466.115.121.1.14 refers to the Delivery Method syntax
+   [RFC4517].
+
+   Example: If the mhs-delivery Delivery Method is preferred over
+            telephone-delivery, which is preferred over all other
+            methods, the value would be: "mhs $ telephone".
+
+2.27.  'registeredAddress'
+
+   The 'registeredAddress' attribute type contains postal addresses
+   suitable for reception of telegrams or expedited documents, where it
+   is necessary to have the recipient accept delivery.  Each address is
+   one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.26 NAME 'registeredAddress'
+         SUP postalAddress
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 14]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+   1.3.6.1.4.1.1466.115.121.1.41 refers to the Postal Address syntax
+   [RFC4517].
+
+   Example: "Receptionist$Widget, Inc.$15 Main St.$Ottawa$Canada".
+
+2.28.  'roleOccupant'
+
+   The 'roleOccupant' attribute type contains the distinguished names of
+   objects (normally people) that fulfill the responsibilities of a role
+   object.  Each distinguished name is one value of this multi-valued
+   attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.33 NAME 'roleOccupant'
+         SUP distinguishedName )
+
+   Example: The role object, "cn=Human Resources
+            Director,ou=Position,o=Widget\, Inc.", is fulfilled by two
+            people whose object names are "cn=Mary
+            Smith,ou=employee,o=Widget\, Inc." and "cn=James
+            Brown,ou=employee,o=Widget\, Inc.".  The 'roleOccupant'
+            attribute will contain both of these distinguished names,
+            since they are the occupants of this role.
+
+2.29.  'searchGuide'
+
+   The 'searchGuide' attribute type contains sets of information for use
+   by clients in constructing search filters.  It is superseded by
+   'enhancedSearchGuide', described above in Section 2.9.  Each set is
+   one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.14 NAME 'searchGuide'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 )
+
+   1.3.6.1.4.1.1466.115.121.1.25 refers to the Guide syntax [RFC4517].
+
+   Example: "person#sn$EQ".
+
+2.30.  'seeAlso'
+
+   The 'seeAlso' attribute type contains the distinguished names of
+   objects that are related to the subject object.  Each related object
+   name is one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.34 NAME 'seeAlso'
+         SUP distinguishedName )
+
+
+
+Sciberras                   Standards Track                    [Page 15]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+   Example: The person object "cn=James Brown,ou=employee,o=Widget\,
+            Inc." is related to the role objects "cn=Football Team
+            Captain,ou=sponsored activities,o=Widget\, Inc." and
+            "cn=Chess Team,ou=sponsored activities,o=Widget\, Inc.".
+            Since the role objects are related to the person object, the
+            'seeAlso' attribute will contain the distinguished name of
+            each role object as separate values.
+
+2.31.  'serialNumber'
+
+   The 'serialNumber' attribute type contains the serial numbers of
+   devices.  Each serial number is one value of this multi-valued
+   attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.5 NAME 'serialNumber'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
+
+   1.3.6.1.4.1.1466.115.121.1.44 refers to the Printable String syntax
+   [RFC4517].
+
+   Examples: "WI-3005" and "XF551426".
+
+2.32.  'sn'
+
+   The 'sn' ('surname' in X.500) attribute type contains name strings
+   for the family names of a person.  Each string is one value of this
+   multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.4 NAME 'sn'
+         SUP name )
+
+   Example: "Smith".
+
+2.33.  'st'
+
+   The 'st' ('stateOrProvinceName' in X.500) attribute type contains the
+   full names of states or provinces.  Each name is one value of this
+   multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.8 NAME 'st'
+         SUP name )
+
+   Example: "California".
+
+
+
+Sciberras                   Standards Track                    [Page 16]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+2.34.  'street'
+
+   The 'street' ('streetAddress' in X.500) attribute type contains site
+   information from a postal address (i.e., the street name, place,
+   avenue, and the house number).  Each street is one value of this
+   multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.9 NAME 'street'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax
+   [RFC4517].
+
+   Example: "15 Main St.".
+
+2.35.  'telephoneNumber'
+
+   The 'telephoneNumber' attribute type contains telephone numbers that
+   comply with the ITU Recommendation E.123 [E.123].  Each number is one
+   value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.20 NAME 'telephoneNumber'
+         EQUALITY telephoneNumberMatch
+         SUBSTR telephoneNumberSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
+
+   1.3.6.1.4.1.1466.115.121.1.50 refers to the Telephone Number syntax
+   [RFC4517].
+
+   Example: "+1 234 567 8901".
+
+2.36.  'teletexTerminalIdentifier'
+
+   The withdrawal of Recommendation F.200 has resulted in the withdrawal
+   of this attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.22 NAME 'teletexTerminalIdentifier'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 )
+
+   1.3.6.1.4.1.1466.115.121.1.51 refers to the Teletex Terminal
+   Identifier syntax [RFC4517].
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 17]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+2.37.  'telexNumber'
+
+   The 'telexNumber' attribute type contains sets of strings that are a
+   telex number, country code, and answerback code of a telex terminal.
+   Each set is one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.21 NAME 'telexNumber'
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 )
+
+   1.3.6.1.4.1.1466.115.121.1.52 refers to the Telex Number syntax
+   [RFC4517].
+
+   Example: "12345$023$ABCDE".
+
+2.38.  'title'
+
+   The 'title' attribute type contains the title of a person in their
+   organizational context.  Each title is one value of this multi-valued
+   attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.12 NAME 'title'
+         SUP name )
+   Examples: "Vice President", "Software Engineer", and "CEO".
+
+2.39.  'uid'
+
+   The 'uid' ('userid' in RFC 1274) attribute type contains computer
+   system login names associated with the object.  Each name is one
+   value of this multi-valued attribute.
+   (Source: RFC 2798 [RFC2798] and RFC 1274 [RFC1274])
+
+      ( 0.9.2342.19200300.100.1.1 NAME 'uid'
+         EQUALITY caseIgnoreMatch
+         SUBSTR caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax
+   [RFC4517].
+
+   Examples: "s9709015", "admin", and "Administrator".
+
+
+
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 18]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+2.40.  'uniqueMember'
+
+   The 'uniqueMember' attribute type contains the distinguished names of
+   an object that is on a list or in a group, where the relative
+   distinguished names of the object include a value that distinguishes
+   between objects when a distinguished name has been reused.  Each
+   distinguished name is one value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.50 NAME 'uniqueMember'
+         EQUALITY uniqueMemberMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )
+
+   1.3.6.1.4.1.1466.115.121.1.34 refers to the Name and Optional UID
+   syntax [RFC4517].
+
+   Example: If "ou=1st Battalion,o=Defense,c=US" is a battalion that was
+            disbanded, establishing a new battalion with the "same" name
+            would have a unique identifier value added, resulting in
+            "ou=1st Battalion, o=Defense,c=US#'010101'B".
+
+2.41.  'userPassword'
+
+   The 'userPassword' attribute contains octet strings that are known
+   only to the user and the system to which the user has access.  Each
+   string is one value of this multi-valued attribute.
+
+   The application SHOULD prepare textual strings used as passwords by
+   transcoding them to Unicode, applying SASLprep [RFC4013], and
+   encoding as UTF-8.  The determination of whether a password is
+   textual is a local client matter.
+   (Source: X.509 [X.509])
+
+      ( 2.5.4.35 NAME 'userPassword'
+         EQUALITY octetStringMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
+
+   1.3.6.1.4.1.1466.115.121.1.40 refers to the Octet String syntax
+   [RFC4517].
+
+   Passwords are stored using an Octet String syntax and are not
+   encrypted.  Transfer of cleartext passwords is strongly discouraged
+   where the underlying transport service cannot guarantee
+   confidentiality and may result in disclosure of the password to
+   unauthorized parties.
+
+   An example of a need for multiple values in the 'userPassword'
+   attribute is an environment where every month the user is expected to
+
+
+
+Sciberras                   Standards Track                    [Page 19]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+   use a different password generated by some automated system.  During
+   transitional periods, like the last and first day of the periods, it
+   may be necessary to allow two passwords for the two consecutive
+   periods to be valid in the system.
+
+2.42.  'x121Address'
+
+   The 'x121Address' attribute type contains data network addresses as
+   defined by ITU Recommendation X.121 [X.121].  Each address is one
+   value of this multi-valued attribute.
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.24 NAME 'x121Address'
+         EQUALITY numericStringMatch
+         SUBSTR numericStringSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )
+
+   1.3.6.1.4.1.1466.115.121.1.36 refers to the Numeric String syntax
+   [RFC4517].
+
+   Example: "36111222333444555".
+
+2.43.  'x500UniqueIdentifier'
+
+   The 'x500UniqueIdentifier' attribute type contains binary strings
+   that are used to distinguish between objects when a distinguished
+   name has been reused.  Each string is one value of this multi-valued
+   attribute.
+
+   In X.520 [X.520], this attribute type is called 'uniqueIdentifier'.
+   This is a different attribute type from both the 'uid' and
+   'uniqueIdentifier' LDAP attribute types.  The 'uniqueIdentifier'
+   attribute type is defined in [RFC4524].
+   (Source: X.520 [X.520])
+
+      ( 2.5.4.45 NAME 'x500UniqueIdentifier'
+         EQUALITY bitStringMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )
+
+   1.3.6.1.4.1.1466.115.121.1.6 refers to the Bit String syntax
+   [RFC4517].
+
+3.  Object Classes
+
+   LDAP servers SHOULD recognize all the Object Classes listed here as
+   values of the 'objectClass' attribute (see [RFC4512]).
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 20]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+3.1.  'applicationProcess'
+
+   The 'applicationProcess' object class definition is the basis of an
+   entry that represents an application executing in a computer system.
+   (Source: X.521 [X.521])
+
+      ( 2.5.6.11 NAME 'applicationProcess'
+         SUP top
+         STRUCTURAL
+         MUST cn
+         MAY ( seeAlso $
+               ou $
+               l $
+               description ) )
+
+3.2.  'country'
+
+   The 'country' object class definition is the basis of an entry that
+   represents a country.
+   (Source: X.521 [X.521])
+
+      ( 2.5.6.2 NAME 'country'
+         SUP top
+         STRUCTURAL
+         MUST c
+         MAY ( searchGuide $
+               description ) )
+
+3.3.  'dcObject'
+
+   The 'dcObject' object class permits an entry to contains domain
+   component information.  This object class is defined as auxiliary,
+   because it will be used in conjunction with an existing structural
+   object class.
+   (Source: RFC 2247 [RFC2247])
+
+      ( 1.3.6.1.4.1.1466.344 NAME 'dcObject'
+         SUP top
+         AUXILIARY
+         MUST dc )
+
+3.4.  'device'
+
+   The 'device' object class is the basis of an entry that represents an
+   appliance, computer, or network element.
+   (Source: X.521 [X.521])
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 21]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      ( 2.5.6.14 NAME 'device'
+         SUP top
+         STRUCTURAL
+         MUST cn
+         MAY ( serialNumber $
+               seeAlso $
+               owner $
+               ou $
+               o $
+               l $
+               description ) )
+
+3.5.  'groupOfNames'
+
+   The 'groupOfNames' object class is the basis of an entry that
+   represents a set of named objects including information related to
+   the purpose or maintenance of the set.
+   (Source: X.521 [X.521])
+
+      ( 2.5.6.9 NAME 'groupOfNames'
+         SUP top
+         STRUCTURAL
+         MUST ( member $
+               cn )
+         MAY ( businessCategory $
+               seeAlso $
+               owner $
+               ou $
+               o $
+               description ) )
+
+3.6.  'groupOfUniqueNames'
+
+   The 'groupOfUniqueNames' object class is the same as the
+   'groupOfNames' object class except that the object names are not
+   repeated or reassigned within a set scope.
+   (Source: X.521 [X.521])
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 22]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      ( 2.5.6.17 NAME 'groupOfUniqueNames'
+         SUP top
+         STRUCTURAL
+         MUST ( uniqueMember $
+               cn )
+         MAY ( businessCategory $
+               seeAlso $
+               owner $
+               ou $
+               o $
+               description ) )
+
+3.7.  'locality'
+
+   The 'locality' object class is the basis of an entry that represents
+   a place in the physical world.
+   (Source: X.521 [X.521])
+
+      ( 2.5.6.3 NAME 'locality'
+         SUP top
+         STRUCTURAL
+         MAY ( street $
+               seeAlso $
+               searchGuide $
+               st $
+               l $
+               description ) )
+
+3.8.  'organization'
+
+   The 'organization' object class is the basis of an entry that
+   represents a structured group of people.
+   (Source: X.521 [X.521])
+
+      ( 2.5.6.4 NAME 'organization'
+         SUP top
+         STRUCTURAL
+         MUST o
+         MAY ( userPassword $ searchGuide $ seeAlso $
+               businessCategory $ x121Address $ registeredAddress $
+               destinationIndicator $ preferredDeliveryMethod $
+               telexNumber $ teletexTerminalIdentifier $
+               telephoneNumber $ internationalISDNNumber $
+               facsimileTelephoneNumber $ street $ postOfficeBox $
+               postalCode $ postalAddress $ physicalDeliveryOfficeName $
+               st $ l $ description ) )
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 23]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+3.9.  'organizationalPerson'
+
+   The 'organizationalPerson' object class is the basis of an entry that
+   represents a person in relation to an organization.
+   (Source: X.521 [X.521])
+
+      ( 2.5.6.7 NAME 'organizationalPerson'
+         SUP person
+         STRUCTURAL
+         MAY ( title $ x121Address $ registeredAddress $
+               destinationIndicator $ preferredDeliveryMethod $
+               telexNumber $ teletexTerminalIdentifier $
+               telephoneNumber $ internationalISDNNumber $
+               facsimileTelephoneNumber $ street $ postOfficeBox $
+               postalCode $ postalAddress $ physicalDeliveryOfficeName $
+               ou $ st $ l ) )
+
+3.10.  'organizationalRole'
+
+   The 'organizationalRole' object class is the basis of an entry that
+   represents a job, function, or position in an organization.
+   (Source: X.521 [X.521])
+
+      ( 2.5.6.8 NAME 'organizationalRole'
+         SUP top
+         STRUCTURAL
+         MUST cn
+         MAY ( x121Address $ registeredAddress $ destinationIndicator $
+               preferredDeliveryMethod $ telexNumber $
+               teletexTerminalIdentifier $ telephoneNumber $
+               internationalISDNNumber $ facsimileTelephoneNumber $
+               seeAlso $ roleOccupant $ preferredDeliveryMethod $
+               street $ postOfficeBox $ postalCode $ postalAddress $
+               physicalDeliveryOfficeName $ ou $ st $ l $
+               description ) )
+
+3.11.  'organizationalUnit'
+
+   The 'organizationalUnit' object class is the basis of an entry that
+   represents a piece of an organization.
+   (Source: X.521 [X.521])
+
+
+
+
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 24]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      ( 2.5.6.5 NAME 'organizationalUnit'
+         SUP top
+         STRUCTURAL
+         MUST ou
+         MAY ( businessCategory $ description $ destinationIndicator $
+               facsimileTelephoneNumber $ internationalISDNNumber $ l $
+               physicalDeliveryOfficeName $ postalAddress $ postalCode $
+               postOfficeBox $ preferredDeliveryMethod $
+               registeredAddress $ searchGuide $ seeAlso $ st $ street $
+               telephoneNumber $ teletexTerminalIdentifier $
+               telexNumber $ userPassword $ x121Address ) )
+
+3.12  'person'
+
+   The 'person' object class is the basis of an entry that represents a
+   human being.
+   (Source: X.521 [X.521])
+
+      ( 2.5.6.6 NAME 'person'
+         SUP top
+         STRUCTURAL
+         MUST ( sn $
+               cn )
+         MAY ( userPassword $
+               telephoneNumber $
+               seeAlso $ description ) )
+
+3.13.  'residentialPerson'
+
+   The 'residentialPerson' object class is the basis of an entry that
+   includes a person's residence in the representation of the person.
+   (Source: X.521 [X.521])
+
+      ( 2.5.6.10 NAME 'residentialPerson'
+         SUP person
+         STRUCTURAL
+         MUST l
+         MAY ( businessCategory $ x121Address $ registeredAddress $
+               destinationIndicator $ preferredDeliveryMethod $
+               telexNumber $ teletexTerminalIdentifier $
+               telephoneNumber $ internationalISDNNumber $
+               facsimileTelephoneNumber $ preferredDeliveryMethod $
+               street $ postOfficeBox $ postalCode $ postalAddress $
+               physicalDeliveryOfficeName $ st $ l ) )
+
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 25]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+3.14.  'uidObject'
+
+   The 'uidObject' object class permits an entry to contains user
+   identification information.  This object class is defined as
+   auxiliary, because it will be used in conjunction with an existing
+   structural object class.
+   (Source: RFC 2377 [RFC2377])
+
+      ( 1.3.6.1.1.3.1 NAME 'uidObject'
+         SUP top
+         AUXILIARY
+         MUST uid )
+
+4.  IANA Considerations
+
+   The Internet Assigned Numbers Authority (IANA) has updated the LDAP
+   descriptors registry as indicated in the following template:
+
+      Subject: Request for LDAP Descriptor Registration Update
+      Descriptor (short name): see comments
+      Object Identifier: see comments
+      Person & email address to contact for further information:
+         Andrew Sciberras <andrew.sciberras at eb2bcom.com>
+      Usage: (A = attribute type, O = Object Class) see comment
+      Specification: RFC 4519
+      Author/Change Controller: IESG
+
+   Comments
+
+      In the LDAP descriptors registry, the following descriptors (short
+      names) have been updated to refer to RFC 4519.  Names that need to
+      be reserved, rather than assigned to an Object Identifier, will
+      contain an Object Identifier value of RESERVED.
+
+      NAME                         Type OID
+      ------------------------     ---- ----------------------------
+      applicationProcess           O    2.5.6.11
+      businessCategory             A    2.5.4.15
+      c                            A    2.5.4.6
+      cn                           A    2.5.4.3
+      commonName                   A    2.5.4.3
+      country                      O    2.5.6.2
+      countryName                  A    2.5.4.6
+      dc                           A    0.9.2342.19200300.100.1.25
+      dcObject                     O    1.3.6.1.4.1.1466.344
+      description                  A    2.5.4.13
+      destinationIndicator         A    2.5.4.27
+      device                       O    2.5.6.14
+
+
+
+Sciberras                   Standards Track                    [Page 26]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      NAME                         Type OID
+      ------------------------     ---- ----------------------------
+      distinguishedName            A    2.5.4.49
+      dnQualifier                  A    2.5.4.46
+      domainComponent              A    0.9.2342.19200300.100.1.25
+      enhancedSearchGuide          A    2.5.4.47
+      facsimileTelephoneNumber     A    2.5.4.23
+      generationQualifier          A    2.5.4.44
+      givenName                    A    2.5.4.42
+      gn                           A    RESERVED
+      groupOfNames                 O    2.5.6.9
+      groupOfUniqueNames           O    2.5.6.17
+      houseIdentifier              A    2.5.4.51
+      initials                     A    2.5.4.43
+      internationalISDNNumber      A    2.5.4.25
+      l                            A    2.5.4.7
+      locality                     O    2.5.6.3
+      localityName                 A    2.5.4.7
+      member                       A    2.5.4.31
+      name                         A    2.5.4.41
+      o                            A    2.5.4.10
+      organization                 O    2.5.6.4
+      organizationName             A    2.5.4.10
+      organizationalPerson         O    2.5.6.7
+      organizationalRole           O    2.5.6.8
+      organizationalUnit           O    2.5.6.5
+      organizationalUnitName       A    2.5.4.11
+      ou                           A    2.5.4.11
+      owner                        A    2.5.4.32
+      person                       O    2.5.6.6
+      physicalDeliveryOfficeName   A    2.5.4.19
+      postalAddress                A    2.5.4.16
+      postalCode                   A    2.5.4.17
+      postOfficeBox                A    2.5.4.18
+      preferredDeliveryMethod      A    2.5.4.28
+      registeredAddress            A    2.5.4.26
+      residentialPerson            O    2.5.6.10
+      roleOccupant                 A    2.5.4.33
+      searchGuide                  A    2.5.4.14
+      seeAlso                      A    2.5.4.34
+      serialNumber                 A    2.5.4.5
+      sn                           A    2.5.4.4
+      st                           A    2.5.4.8
+      street                       A    2.5.4.9
+      surname                      A    2.5.4.4
+      telephoneNumber              A    2.5.4.20
+      teletexTerminalIdentifier    A    2.5.4.22
+      telexNumber                  A    2.5.4.21
+
+
+
+Sciberras                   Standards Track                    [Page 27]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      NAME                         Type OID
+      ------------------------     ---- ----------------------------
+      title                        A    2.5.4.12
+      uid                          A    0.9.2342.19200300.100.1.1
+      uidObject                    O    1.3.6.1.1.3.1
+      uniqueMember                 A    2.5.4.50
+      userid                       A    0.9.2342.19200300.100.1.1
+      userPassword                 A    2.5.4.35
+      x121Address                  A    2.5.4.24
+      x500UniqueIdentifier         A    2.5.4.45
+
+5.  Security Considerations
+
+   Attributes of directory entries are used to provide descriptive
+   information about the real-world objects they represent, which can be
+   people, organizations, or devices.  Most countries have privacy laws
+   regarding the publication of information about people.
+
+   Transfer of cleartext passwords is strongly discouraged where the
+   underlying transport service cannot guarantee confidentiality and
+   integrity, since this may result in disclosure of the password to
+   unauthorized parties.
+
+   Multiple attribute values for the 'userPassword' attribute need to be
+   used with care.  Especially reset/deletion of a password by an
+   administrator without knowing the old user password gets tricky or
+   impossible if multiple values for different applications are present.
+
+   Certainly, applications that intend to replace the 'userPassword'
+   value(s) with new value(s) should use modify/replaceValues (or
+   modify/deleteAttribute+addAttribute).  In addition, server
+   implementations are encouraged to provide administrative controls
+   that, if enabled, restrict the 'userPassword' attribute to one value.
+
+   Note that when used for authentication purposes [RFC4513], the user
+   need only prove knowledge of one of the values, not all of the
+   values.
+
+6.  Acknowledgements
+
+   The definitions, on which this document is based, have been developed
+   by committees for telecommunications and international standards.
+
+   This document is an update of RFC 2256 by Mark Wahl.  RFC 2256 was a
+   product of the IETF ASID Working Group.
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 28]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+   The 'dc' attribute type definition and the 'dcObject' object class
+   definition in this document supersede the specification in RFC 2247
+   by S. Kille, M. Wahl, A. Grimstad, R. Huber, and S. Sataluri.
+
+   The 'uid' attribute type definition in this document supersedes the
+   specification of the 'userid' in RFC 1274 by P. Barker and S. Kille
+   and of the uid in RFC 2798 by M. Smith.
+
+   The 'uidObject' object class definition in this document supersedes
+   the specification of the 'uidObject' in RFC 2377 by A. Grimstad, R.
+   Huber, S. Sataluri, and M. Wahl.
+
+   This document is based upon input of the IETF LDAPBIS working group.
+   The author wishes to thank S. Legg and K. Zeilenga for their
+   significant contribution to this update.  The author would also like
+   to thank Kathy Dally, who edited early versions of this document.
+
+7.  References
+
+7.1.  Normative References
+
+   [E.123]    Notation for national and international telephone numbers,
+              ITU-T Recommendation E.123, 1988
+
+   [E.164]    The international public telecommunication numbering plan,
+              ITU-T Recommendation E.164, 1997
+
+   [F.1]      Operational Provisions For The International Public
+              Telegram Service Transmission System, CCITT Recommendation
+              F.1, 1992
+
+   [F.31]     Telegram Retransmission System, CCITT Recommendation F.31,
+              1988
+
+   [ISO3166]  ISO 3166, "Codes for the representation of names of
+              countries".
+
+   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
+              STD 13, RFC 1034, November 1987.
+
+   [RFC1123]  Braden, R., "Requirements for Internet Hosts - Application
+              and Support", STD 3, RFC 1123, October 1989.
+
+   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
+              Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC2181]  Elz, R. and R. Bush, "Clarifications to the DNS
+              Specification", RFC 2181, July 1997.
+
+
+
+Sciberras                   Standards Track                    [Page 29]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+   [RFC3490]  Faltstrom, P., Hoffman, P., and A. Costello,
+              "Internationalizing Domain Names in Applications (IDNA)",
+              RFC 3490, March 2003.
+
+   [RFC4013]  Zeilenga, K., "SASLprep: Stringprep Profile for User Names
+              and Passwords", RFC 4013, February 2005.
+
+   [RFC4234]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
+              Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4510]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Technical Specification Road Map", RFC 4510, June
+              2006.
+
+   [RFC4512]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP): Directory Information Models", RFC 4512, June
+              2006.
+
+   [RFC4517]  Legg, S., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Syntaxes and Matching Rules", RFC 4517, June 2006.
+
+   [X.121]    International numbering plan for public data networks,
+              ITU-T Recommendation X.121, 1996
+
+   [X.509]    The Directory:  Authentication Framework, ITU-T
+              Recommendation X.509, 1993
+
+   [X.520]    The Directory: Selected Attribute Types, ITU-T
+              Recommendation X.520, 1993
+
+   [X.521]    The Directory: Selected Object Classes.  ITU-T
+              Recommendation X.521, 1993
+
+7.2.  Informative References
+
+   [RFC1274]  Barker, P. and S. Kille, "The COSINE and Internet X.500
+              Schema", RFC 1274, November 1991.
+
+   [RFC2247]  Kille, S., Wahl, M., Grimstad, A., Huber, R., and S.
+              Sataluri, "Using Domains in LDAP/X.500 Distinguished
+              Names", RFC 2247, January 1998.
+
+   [RFC2377]  Grimstad, A., Huber, R., Sataluri, S., and M. Wahl,
+              "Naming Plan for Internet Directory-Enabled Applications",
+              RFC 2377, September 1998.
+
+   [RFC2798]  Smith, M., "Definition of the inetOrgPerson LDAP Object
+              Class", RFC 2798, April 2000.
+
+
+
+Sciberras                   Standards Track                    [Page 30]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+   [RFC4513]  Harrison R., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Authentication Methods and Security Mechanisms",
+              RFC 4513, June 2006.
+
+   [RFC4523]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP) Schema Definitions for X.509 Certificates", RFC
+              4523, June 2006.
+
+   [RFC4524]  Zeilenga, E., Ed., "COSINE LDAP/X.500 Schema", RFC 4524,
+              June 2006.
+
+   [X.500]    ITU-T Recommendations X.500 (1993) | ISO/IEC 9594-1:1994,
+              Information Technology - Open Systems Interconnection -
+              The Directory: Overview of concepts, models and services.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 31]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+Appendix A.  Changes Made Since RFC 2256
+
+   This appendix lists the changes that have been made from RFC 2256 to
+   RFC 4519.
+
+   This appendix is not a normative part of this specification, which
+   has been provided for informational purposes only.
+
+      1.  Replaced the document title.
+
+      2.  Removed the IESG Note.
+
+      3.  Dependencies on RFC 1274 have been eliminated.
+
+      4.  Added a Security Considerations section and an IANA
+          Considerations section.
+
+      5.  Deleted the conformance requirement for subschema object
+          classes in favor of a statement in [RFC4517].
+
+      6.  Added explanation to attribute types and to each object class.
+
+      7.  Removed Section 4, Syntaxes, and Section 6, Matching Rules,
+          (moved to [RFC4517]).
+
+      8.  Removed the certificate-related attribute types:
+          authorityRevocationList, cACertificate,
+          certificateRevocationList, crossCertificatePair,
+          deltaRevocationList, supportedAlgorithms, and userCertificate.
+
+          Removed the certificate-related Object Classes:
+          certificationAuthority, certificationAuthority-V2,
+          cRLDistributionPoint, strongAuthenticationUser, and
+          userSecurityInformation
+
+          LDAP PKI is now discussed in [RFC4523].
+
+      9.  Removed the dmdName, knowledgeInformation,
+          presentationAddress, protocolInformation, and
+          supportedApplicationContext attribute types and the dmd,
+          applicationEntity, and dSA object classes.
+
+      10. Deleted the aliasedObjectName and objectClass attribute type
+          definitions.  Deleted the alias and top object class
+          definitions.  They are included in [RFC4512].
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 32]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      11. Added the 'dc' attribute type from RFC 2247, making the
+          distinction between 'stored' and 'query' values when preparing
+          IDN strings.
+
+      12. Numerous editorial changes.
+
+      13. Removed upper bound after the SYNTAX oid in all attribute
+          definitions where it appeared.
+
+      14. Added text about Unicode, SASLprep [RFC4013], and UTF-8 for
+          userPassword.
+
+      15. Included definitions, comments and references for 'dcObject'
+          and 'uidObject'.
+
+      16. Replaced PKI schema references to use RFC 4523.
+
+      17. Spelt out and referenced ABNF on first usage.
+
+      18. Removed Section 2.4 (Source).  Replaced the source table with
+          explicit references for each definition.
+
+      19. All references to an attribute type or object class are
+          enclosed in single quotes.
+
+      20. The layout of attribute type definitions has been changed to
+          provide consistency throughout the document:
+          > Section Heading
+          > Description of Attribute type
+          > Multivalued description
+          > Source Information
+          > Definition
+          > Example
+          > Additional Comments
+
+          Adding this consistent output included the addition of
+          examples to some definitions.
+
+      21. References to alternate names for attributes types are
+          provided with a reference to where they were originally
+          specified.
+
+      22. Clarification of the description of 'distinguishedName' and
+          'name', in regards to these attribute types being supertypes.
+
+      23. Spelt out ISDN on first usage.
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 33]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+      24. Inserted a reference to [RFC4517] for the
+          'teletexTerminalIdentifier' definition's SYNTAX OID.
+
+      25. Additional names were added to the IANA Considerations.  Names
+          include 'commonName', 'dcObject', 'domainComponent', 'GN',
+          'localityName', 'organizationName', 'organizationUnitName',
+          'surname', 'uidObject' and 'userid'.
+
+      26. Renamed all instances of supercede to supersede.
+
+      27. Moved [F.1], [F.31] and [RFC4013] from informative to
+          normative references.
+
+      28. Changed the 'c' definition to be consistent with X.500.
+
+Author's Address
+
+   Andrew Sciberras
+   eB2Bcom
+   Suite 3, Woodhouse Corporate Centre,
+   935 Station Street,
+   Box Hill North, Victoria 3129
+   AUSTRALIA
+
+   Phone: +61 3 9896 7833
+   EMail: andrew.sciberras at eb2bcom.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 34]
+
+RFC 4519           LDAP: Schema for User Applications          June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Sciberras                   Standards Track                    [Page 35]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4520.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4520.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4520.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4520.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,1067 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4520                           OpenLDAP Foundation
+BCP: 64                                                        June 2006
+Obsoletes: 3383
+Category: Best Current Practice
+
+
+     Internet Assigned Numbers Authority (IANA) Considerations for
+            the Lightweight Directory Access Protocol (LDAP)
+
+Status of This Memo
+
+   This document specifies an Internet Best Current Practices for the
+   Internet Community, and requests discussion and suggestions for
+   improvements.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document provides procedures for registering extensible elements
+   of the Lightweight Directory Access Protocol (LDAP).  The document
+   also provides guidelines to the Internet Assigned Numbers Authority
+   (IANA) describing conditions under which new values can be assigned.
+
+1.  Introduction
+
+   The Lightweight Directory Access Protocol [RFC4510] (LDAP) is an
+   extensible protocol.  LDAP supports:
+
+      -  the addition of new operations,
+      -  the extension of existing operations, and
+      -  the extensible schema.
+
+   This document details procedures for registering values used to
+   unambiguously identify extensible elements of the protocol, including
+   the following:
+
+      - LDAP message types
+      - LDAP extended operations and controls
+      - LDAP result codes
+      - LDAP authentication methods
+      - LDAP attribute description options
+      - Object Identifier descriptors
+
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 1]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+   These registries are maintained by the Internet Assigned Numbers
+   Authority (IANA).
+
+   In addition, this document provides guidelines to IANA describing the
+   conditions under which new values can be assigned.
+
+   This document replaces RFC 3383.
+
+2.  Terminology and Conventions
+
+   This section details terms and conventions used in this document.
+
+2.1.  Policy Terminology
+
+   The terms "IESG Approval", "Standards Action", "IETF Consensus",
+   "Specification Required", "First Come First Served", "Expert Review",
+   and "Private Use" are used as defined in BCP 26 [RFC2434].
+
+   The term "registration owner" (or "owner") refers to the party
+   authorized to change a value's registration.
+
+2.2.  Requirement Terminology
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].  In
+   this case, "the specification", as used by BCP 14, refers to the
+   processing of protocols being submitted to the IETF standards
+   process.
+
+2.3.  Common ABNF Productions
+
+   A number of syntaxes in this document are described using ABNF
+   [RFC4234].  These syntaxes rely on the following common productions:
+
+         ALPHA = %x41-5A / %x61-7A    ; "A"-"Z" / "a"-"z"
+         LDIGIT = %x31-39             ; "1"-"9"
+         DIGIT = %x30 / LDIGIT        ; "0"-"9"
+         HYPHEN = %x2D                ; "-"
+         DOT = %x2E                   ; "."
+         number = DIGIT / ( LDIGIT 1*DIGIT )
+         keychar = ALPHA / DIGIT / HYPHEN
+         leadkeychar = ALPHA
+         keystring = leadkeychar *keychar
+         keyword = keystring
+
+   Keywords are case insensitive.
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 2]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+3.  IANA Considerations for LDAP
+
+   This section details each kind of protocol value that can be
+   registered and provides IANA guidelines on how to assign new values.
+
+   IANA may reject obviously bogus registrations.
+
+   LDAP values specified in RFCs MUST be registered.  Other LDAP values,
+   except those in private-use name spaces, SHOULD be registered.  RFCs
+   SHOULD NOT reference, use, or otherwise recognize unregistered LDAP
+   values.
+
+3.1.  Object Identifiers
+
+   Numerous LDAP schema and protocol elements are identified by Object
+   Identifiers (OIDs) [X.680].  Specifications that assign OIDs to
+   elements SHOULD state who delegated the OIDs for their use.
+
+   For IETF-developed elements, specifications SHOULD use OIDs under
+   "Internet Directory Numbers" (1.3.6.1.1.x).  For elements developed
+   by others, any properly delegated OID can be used, including those
+   under "Internet Directory Numbers" (1.3.6.1.1.x) or "Internet Private
+   Enterprise Numbers" (1.3.6.1.4.1.x).
+
+   Internet Directory Numbers (1.3.6.1.1.x) will be assigned upon Expert
+   Review with Specification Required.  Only one OID per specification
+   will be assigned.  The specification MAY then assign any number of
+   OIDs within this arc without further coordination with IANA.
+
+   Internet Private Enterprise Numbers (1.3.6.1.4.1.x) are assigned by
+   IANA <http://www.iana.org/cgi-bin/enterprise.pl>.  Practices for IANA
+   assignment of Internet Private Enterprise Numbers are detailed in RFC
+   2578 [RFC2578].
+
+   To avoid interoperability problems between early implementations of a
+   "work in progress" and implementations of the published specification
+   (e.g., the RFC), experimental OIDs SHOULD be used in "works in
+   progress" and early implementations.  OIDs under the Internet
+   Experimental OID arc (1.3.6.1.3.x) may be used for this purpose.
+   Practices for IANA assignment of these Internet Experimental numbers
+   are detailed in RFC 2578 [RFC2578].
+
+3.2.  Protocol Mechanisms
+
+   LDAP provides a number of Root DSA-Specific Entry (DSE) attributes
+   for discovery of protocol mechanisms identified by OIDs, including
+   the supportedControl, supportedExtension, and supportedFeatures
+   attributes [RFC4512].
+
+
+
+Zeilenga                 Best Current Practice                  [Page 3]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+   A registry of OIDs used for discovery of protocol mechanisms is
+   provided to allow implementors and others to locate the technical
+   specification for these protocol mechanisms.  Future specifications
+   of additional Root DSE attributes holding values identifying protocol
+   mechanisms MAY extend this registry for their values.
+
+   Protocol mechanisms are registered on a First Come First Served
+   basis.
+
+3.3.  LDAP Syntaxes
+
+   This registry provides a listing of LDAP syntaxes [RFC4512].  Each
+   LDAP syntax is identified by an OID.  This registry is provided to
+   allow implementors and others to locate the technical specification
+   describing a particular LDAP Syntax.
+
+   LDAP Syntaxes are registered on a First Come First Served with
+   Specification Required basis.
+
+   Note: Unlike object classes, attribute types, and various other kinds
+         of schema elements, descriptors are not used in LDAP to
+         identify LDAP Syntaxes.
+
+3.4.  Object Identifier Descriptors
+
+   LDAP allows short descriptive names (or descriptors) to be used
+   instead of a numeric Object Identifier to identify select protocol
+   extensions [RFC4511], schema elements [RFC4512], LDAP URL [RFC4516]
+   extensions, and other objects.
+
+   Although the protocol allows the same descriptor to refer to
+   different object identifiers in certain cases and the registry
+   supports multiple registrations of the same descriptor (each
+   indicating a different kind of schema element and different object
+   identifier), multiple registrations of the same descriptor are to be
+   avoided.  All such multiple registration requests require Expert
+   Review.
+
+   Descriptors are restricted to strings of UTF-8 [RFC3629] encoded
+   Unicode characters restricted by the following ABNF:
+
+      name = keystring
+
+   Descriptors are case insensitive.
+
+   Multiple names may be assigned to a given OID.  For purposes of
+   registration, an OID is to be represented in numeric OID form (e.g.,
+   1.1.0.23.40) conforming to the following ABNF:
+
+
+
+Zeilenga                 Best Current Practice                  [Page 4]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+      numericoid = number 1*( DOT number )
+
+   While the protocol places no maximum length restriction upon
+   descriptors, they should be short.  Descriptors longer than 48
+   characters may be viewed as too long to register.
+
+   A value ending with a hyphen ("-") reserves all descriptors that
+   start with that value.  For example, the registration of the option
+   "descrFamily-" reserves all options that start with "descrFamily-"
+   for some related purpose.
+
+   Descriptors beginning with "x-" are for Private Use and cannot be
+   registered.
+
+   Descriptors beginning with "e-" are reserved for experiments and will
+   be registered on a First Come First Served basis.
+
+   All other descriptors require Expert Review to be registered.
+
+   The registrant need not "own" the OID being named.
+
+   The OID name space is managed by the ISO/IEC Joint Technical
+   Committee 1 - Subcommittee 6.
+
+3.5.  AttributeDescription Options
+
+   An AttributeDescription [RFC4512] can contain zero or more options
+   specifying additional semantics.  An option SHALL be restricted to a
+   string of UTF-8 encoded Unicode characters limited by the following
+   ABNF:
+
+      option = keystring
+
+   Options are case insensitive.
+
+   While the protocol places no maximum length restriction upon option
+   strings, they should be short.  Options longer than 24 characters may
+   be viewed as too long to register.
+
+   Values ending with a hyphen ("-") reserve all option names that start
+   with the name.  For example, the registration of the option
+   "optionFamily-" reserves all options that start with "optionFamily-"
+   for some related purpose.
+
+   Options beginning with "x-" are for Private Use and cannot be
+   registered.
+
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 5]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+   Options beginning with "e-" are reserved for experiments and will be
+   registered on a First Come First Served basis.
+
+   All other options require Standards Action or Expert Review with
+   Specification Required to be registered.
+
+3.6.  LDAP Message Types
+
+   Each protocol message is encapsulated in an LDAPMessage envelope
+   [RFC4511.  The protocolOp CHOICE indicates the type of message
+   encapsulated.  Each message type consists of an ASN.1 identifier in
+   the form of a keyword and a non-negative choice number.  The choice
+   number is combined with the class (APPLICATION) and data type
+   (CONSTRUCTED or PRIMITIVE) to construct the BER tag in the message's
+   encoding.  The choice numbers for existing protocol messages are
+   implicit in the protocol's ASN.1 defined in [RFC4511].
+
+   New values will be registered upon Standards Action.
+
+   Note: LDAP provides extensible messages that reduce but do not
+         eliminate the need to add new message types.
+
+3.7.  LDAP Authentication Method
+
+   The LDAP Bind operation supports multiple authentication methods
+   [RFC4511].  Each authentication choice consists of an ASN.1
+   identifier in the form of a keyword and a non-negative integer.
+
+   The registrant SHALL classify the authentication method usage using
+   one of the following terms:
+
+         COMMON      - method is appropriate for common use on the
+                       Internet.
+         LIMITED USE - method is appropriate for limited use.
+         OBSOLETE    - method has been deprecated or otherwise found to
+                       be inappropriate for any use.
+
+   Methods without publicly available specifications SHALL NOT be
+   classified as COMMON.  New registrations of the class OBSOLETE cannot
+   be registered.
+
+   New authentication method integers in the range 0-1023 require
+   Standards Action to be registered.  New authentication method
+   integers in the range 1024-4095 require Expert Review with
+   Specification Required.  New authentication method integers in the
+   range 4096-16383 will be registered on a First Come First Served
+   basis.  Keywords associated with integers in the range 0-4095 SHALL
+   NOT start with "e-" or "x-".  Keywords associated with integers in
+
+
+
+Zeilenga                 Best Current Practice                  [Page 6]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+   the range 4096-16383 SHALL start with "e-".  Values greater than or
+   equal to 16384 and keywords starting with "x-" are for Private Use
+   and cannot be registered.
+
+   Note: LDAP supports Simple Authentication and Security Layers
+         [RFC4422] as an authentication choice.  SASL is an extensible
+         authentication framework.
+
+3.8.  LDAP Result Codes
+
+   LDAP result messages carry a resultCode enumerated value to indicate
+   the outcome of the operation [RFC4511].  Each result code consists of
+   an ASN.1 identifier in the form of a keyword and a non-negative
+   integer.
+
+   New resultCodes integers in the range 0-1023 require Standards Action
+   to be registered.  New resultCode integers in the range 1024-4095
+   require Expert Review with Specification Required.  New resultCode
+   integers in the range 4096-16383 will be registered on a First Come
+   First Served basis.  Keywords associated with integers in the range
+   0-4095 SHALL NOT start with "e-" or "x-".  Keywords associated with
+   integers in the range 4096-16383 SHALL start with "e-".  Values
+   greater than or equal to 16384 and keywords starting with "x-" are
+   for Private Use and cannot be registered.
+
+3.9.  LDAP Search Scope
+
+   LDAP SearchRequest messages carry a scope-enumerated value to
+   indicate the extent of search within the DIT [RFC4511].  Each search
+   value consists of an ASN.1 identifier in the form of a keyword and a
+   non-negative integer.
+
+   New scope integers in the range 0-1023 require Standards Action to be
+   registered.  New scope integers in the range 1024-4095 require Expert
+   Review with Specification Required.  New scope integers in the range
+   4096-16383 will be registered on a First Come First Served basis.
+   Keywords associated with integers in the range 0-4095 SHALL NOT start
+   with "e-" or "x-".  Keywords associated with integers in the range
+   4096-16383 SHALL start with "e-".  Values greater than or equal to
+   16384 and keywords starting with "x-" are for Private Use and cannot
+   be registered.
+
+3.10.  LDAP Filter Choice
+
+   LDAP filters are used in making assertions against an object
+   represented in the directory [RFC4511].  The Filter CHOICE indicates
+   a type of assertion.  Each Filter CHOICE consists of an ASN.1
+   identifier in the form of a keyword and a non-negative choice number.
+
+
+
+Zeilenga                 Best Current Practice                  [Page 7]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+   The choice number is combined with the class (APPLICATION) and data
+   type (CONSTRUCTED or PRIMITIVE) to construct the BER tag in the
+   message's encoding.
+
+   Note: LDAP provides the extensibleMatching choice, which reduces but
+         does not eliminate the need to add new filter choices.
+
+3.11.  LDAP ModifyRequest Operation Type
+
+   The LDAP ModifyRequest carries a sequence of modification operations
+   [RFC4511].  Each kind (e.g., add, delete, replace) of operation
+   consists of an ASN.1 identifier in the form of a keyword and a non-
+   negative integer.
+
+   New operation type integers in the range 0-1023 require Standards
+   Action to be registered.  New operation type integers in the range
+   1024-4095 require Expert Review with Specification Required.  New
+   operation type integers in the range 4096-16383 will be registered on
+   a First Come First Served basis.  Keywords associated with integers
+   in the range 0-4095 SHALL NOT start with "e-" or "x-".  Keywords
+   associated with integers in the range 4096-16383 SHALL start with
+   "e-".  Values greater than or equal to 16384 and keywords starting
+   with "x-" are for Private Use and cannot be registered.
+
+3.12.  LDAP authzId Prefixes
+
+   Authorization Identities in LDAP are strings conforming to the
+   <authzId> production [RFC4513].  This production is extensible.  Each
+   new specific authorization form is identified by a prefix string
+   conforming to the following ABNF:
+
+         prefix = keystring COLON
+         COLON = %x3A ; COLON (":" U+003A)
+
+   Prefixes are case insensitive.
+
+   While the protocol places no maximum length restriction upon prefix
+   strings, they should be short.  Prefixes longer than 12 characters
+   may be viewed as too long to register.
+
+   Prefixes beginning with "x-" are for Private Use and cannot be
+   registered.
+
+   Prefixes beginning with "e-" are reserved for experiments and will be
+   registered on a First Come First Served basis.
+
+   All other prefixes require Standards Action or Expert Review with
+   Specification Required to be registered.
+
+
+
+Zeilenga                 Best Current Practice                  [Page 8]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+3.13.  Directory Systems Names
+
+   The IANA-maintained "Directory Systems Names" registry [IANADSN] of
+   valid keywords for well-known attributes was used in the LDAPv2
+   string representation of a distinguished name [RFC1779].  LDAPv2 is
+   now Historic [RFC3494].
+
+   Directory systems names are not known to be used in any other
+   context.  LDAPv3 [RFC4514] uses Object Identifier Descriptors
+   [Section 3.2] (which have a different syntax than directory system
+   names).
+
+   New Directory System Names will no longer be accepted.  For
+   historical purposes, the current list of registered names should
+   remain publicly available.
+
+4.  Registration Procedure
+
+   The procedure given here MUST be used by anyone who wishes to use a
+   new value of a type described in Section 3 of this document.
+
+   The first step is for the requester to fill out the appropriate form.
+   Templates are provided in Appendix A.
+
+   If the policy is Standards Action, the completed form SHOULD be
+   provided to the IESG with the request for Standards Action.  Upon
+   approval of the Standards Action, the IESG SHALL forward the request
+   (possibly revised) to IANA.  The IESG SHALL be regarded as the
+   registration owner of all values requiring Standards Action.
+
+   If the policy is Expert Review, the requester SHALL post the
+   completed form to the <directory at apps.ietf.org> mailing list for
+   public review.  The review period is two (2) weeks.  If a revised
+   form is later submitted, the review period is restarted.  Anyone may
+   subscribe to this list by sending a request to <directory-
+   request at apps.ietf.org>.  During the review, objections may be raised
+   by anyone (including the Expert) on the list.  After completion of
+   the review, the Expert, based on public comments, SHALL either
+   approve the request and forward it to the IANA OR deny the request.
+   In either case, the Expert SHALL promptly notify the requester of the
+   action.  Actions of the Expert may be appealed [RFC2026].  The Expert
+   is appointed by Applications Area Directors.  The requester is viewed
+   as the registration owner of values registered under Expert Review.
+
+   If the policy is First Come First Served, the requester SHALL submit
+   the completed form directly to the IANA: <iana at iana.org>.  The
+   requester is viewed as the registration owner of values registered
+   under First Come First Served.
+
+
+
+Zeilenga                 Best Current Practice                  [Page 9]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+   Neither the Expert nor IANA will take position on the claims of
+   copyright or trademark issues regarding completed forms.
+
+   Prior to submission of the Internet Draft (I-D) to the RFC Editor but
+   after IESG review and tentative approval, the document editor SHOULD
+   revise the I-D to use registered values.
+
+5.  Registration Maintenance
+
+   This section discusses maintenance of registrations.
+
+5.1.  Lists of Registered Values
+
+   IANA makes lists of registered values readily available to the
+   Internet community on its web site: <http://www.iana.org/>.
+
+5.2.  Change Control
+
+   The registration owner MAY update the registration subject to the
+   same constraints and review as with new registrations.  In cases
+   where the registration owner is unable or is unwilling to make
+   necessary updates, the IESG MAY assume ownership of the registration
+   in order to update the registration.
+
+5.3.  Comments
+
+   For cases where others (anyone other than the registration owner)
+   have significant objections to the claims in a registration and the
+   registration owner does not agree to change the registration,
+   comments MAY be attached to a registration upon Expert Review.  For
+   registrations owned by the IESG, the objections SHOULD be addressed
+   by initiating a request for Expert Review.
+
+   The form of these requests is ad hoc, but MUST include the specific
+   objections to be reviewed and SHOULD contain (directly or by
+   reference) materials supporting the objections.
+
+6.  Security Considerations
+
+   The security considerations detailed in BCP 26 [RFC2434] are
+   generally applicable to this document.  Additional security
+   considerations specific to each name space are discussed in Section
+   3, where appropriate.
+
+   Security considerations for LDAP are discussed in documents
+   comprising the technical specification [RFC4510].
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 10]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+7.  Acknowledgement
+
+   This document is a product of the IETF LDAP Revision (LDAPBIS)
+   Working Group (WG).  This document is a revision of RFC 3383, also a
+   product of the LDAPBIS WG.
+
+   This document includes text borrowed from "Guidelines for Writing an
+   IANA Considerations Section in RFCs" [RFC2434] by Thomas Narten and
+   Harald Alvestrand.
+
+8.  References
+
+8.1.  Normative References
+
+   [RFC2026]  Bradner, S., "The Internet Standards Process -- Revision
+              3", BCP 9, RFC 2026, October 1996.
+
+   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
+              Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC2434]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
+              IANA Considerations Section in RFCs", BCP 26, RFC 2434,
+              October 1998.
+
+   [RFC2578]  McCloghrie, K., Perkins, D., and J. Schoenwaelder,
+              "Structure of Management Information Version 2 (SMIv2)",
+              STD 58, RFC 2578, April 1999.
+
+   [RFC3629]  Yergeau, F., "UTF-8, a transformation format of ISO
+              10646", STD 63, RFC 3629, November 2003.
+
+   [RFC4234]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
+              Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4510]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Technical Specification Road Map", RFC 4510, June
+              2006.
+
+   [RFC4511]  Sermersheim, J., Ed., "Lightweight Directory Access
+              Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP): Directory Information Models", RFC 4512, June
+              2006.
+
+   [RFC4513]  Harrison, R., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Authentication Methods and Security Mechanisms",
+              RFC 4513, June 2006.
+
+
+
+Zeilenga                 Best Current Practice                 [Page 11]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+   [RFC4516]  Smith, M., Ed. and T. Howes, "Lightweight Directory Access
+              Protocol (LDAP): Uniform Resource Locator", RFC 4516, June
+              2006.
+
+   [Unicode]  The Unicode Consortium, "The Unicode Standard, Version
+              3.2.0" is defined by "The Unicode Standard, Version 3.0"
+              (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
+              as amended by the "Unicode Standard Annex #27: Unicode
+              3.1" (http://www.unicode.org/reports/tr27/) and by the
+              "Unicode Standard Annex #28: Unicode 3.2"
+              (http://www.unicode.org/reports/tr28/).
+
+   [X.680]    International Telecommunication Union - Telecommunication
+              Standardization Sector, "Abstract Syntax Notation One
+              (ASN.1) - Specification of Basic Notation", X.680(2002)
+              (also ISO/IEC 8824-1:2002).
+
+8.2.  Informative References
+
+   [RFC1779]  Kille, S., "A String Representation of Distinguished
+              Names", RFC 1779, March 1995.
+
+   [RFC3494]  Zeilenga, K.,"Lightweight Directory Access Protocol
+              version 2 (LDAPv2) to Historic Status", RFC 3494, March
+              2003.
+
+   [RFC4514]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+              (LDAP): String Representation of Distinguished Names", RFC
+              4514, June 2006.
+
+   [RFC4422]  Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple
+              Authentication and Security Layer (SASL)", RFC 4422, June
+              2006.
+
+   [IANADSN]  IANA, "Directory Systems Names",
+              http://www.iana.org/assignments/directory-system-names.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 12]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+Appendix A.  Registration Templates
+
+   This appendix provides registration templates for registering new
+   LDAP values.  Note that more than one value may be requested by
+   extending the template by listing multiple values, or through use of
+   tables.
+
+A.1.  LDAP Object Identifier Registration Template
+
+   Subject: Request for LDAP OID Registration
+
+   Person & email address to contact for further information:
+
+   Specification: (I-D)
+
+   Author/Change Controller:
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+A.2.  LDAP Protocol Mechanism Registration Template
+
+   Subject: Request for LDAP Protocol Mechanism Registration
+
+   Object Identifier:
+
+   Description:
+
+   Person & email address to contact for further information:
+
+   Usage: (One of Control or Extension or Feature or other)
+
+   Specification: (RFC, I-D, URI)
+
+   Author/Change Controller:
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 13]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+A.3.  LDAP Syntax Registration Template
+
+   Subject: Request for LDAP Syntax Registration
+
+   Object Identifier:
+
+   Description:
+
+   Person & email address to contact for further information:
+
+   Specification: (RFC, I-D, URI)
+
+   Author/Change Controller:
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+A.4.  LDAP Descriptor Registration Template
+
+   Subject: Request for LDAP Descriptor Registration
+
+   Descriptor (short name):
+
+   Object Identifier:
+
+   Person & email address to contact for further information:
+
+   Usage: (One of administrative role, attribute type, matching rule,
+     name form, object class, URL extension, or other)
+
+   Specification: (RFC, I-D, URI)
+
+   Author/Change Controller:
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 14]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+A.5.  LDAP Attribute Description Option Registration Template
+
+   Subject: Request for LDAP Attribute Description Option Registration
+   Option Name:
+
+   Family of Options: (YES or NO)
+
+   Person & email address to contact for further information:
+
+   Specification: (RFC, I-D, URI)
+
+   Author/Change Controller:
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+A.6.  LDAP Message Type Registration Template
+
+   Subject: Request for LDAP Message Type Registration
+
+   LDAP Message Name:
+
+   Person & email address to contact for further information:
+
+   Specification: (Approved I-D)
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+A.7.  LDAP Authentication Method Registration Template
+
+   Subject: Request for LDAP Authentication Method Registration
+
+   Authentication Method Name:
+
+   Person & email address to contact for further information:
+
+   Specification: (RFC, I-D, URI)
+
+   Intended Usage: (One of COMMON, LIMITED-USE, OBSOLETE)
+
+   Author/Change Controller:
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+
+
+Zeilenga                 Best Current Practice                 [Page 15]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+A.8.  LDAP Result Code Registration Template
+
+   Subject: Request for LDAP Result Code Registration
+
+   Result Code Name:
+
+   Person & email address to contact for further information:
+
+   Specification: (RFC, I-D, URI)
+
+   Author/Change Controller:
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+A.8.  LDAP Search Scope Registration Template
+
+   Subject: Request for LDAP Search Scope Registration
+
+   Search Scope Name:
+
+   Filter Scope String:
+
+   Person & email address to contact for further information:
+
+   Specification: (RFC, I-D, URI)
+
+   Author/Change Controller:
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 16]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+A.9.  LDAP Filter Choice Registration Template
+
+   Subject: Request for LDAP Filter Choice Registration
+
+   Filter Choice Name:
+
+   Person & email address to contact for further information:
+
+   Specification: (RFC, I-D, URI)
+
+   Author/Change Controller:
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+A.10.  LDAP ModifyRequest Operation Registration Template
+
+   Subject: Request for LDAP ModifyRequest Operation Registration
+
+   ModifyRequest Operation Name:
+
+   Person & email address to contact for further information:
+
+   Specification: (RFC, I-D, URI)
+
+   Author/Change Controller:
+
+   Comments:
+
+   (Any comments that the requester deems relevant to the request.)
+
+Appendix B.  Changes since RFC 3383
+
+   This informative appendix provides a summary of changes made since
+   RFC 3383.
+
+      -  Object Identifier Descriptors practices were updated to require
+         all descriptors defined in RFCs to be registered and
+         recommending all other descriptors (excepting those in
+         private-use name space) be registered.  Additionally, all
+         requests for multiple registrations of the same descriptor are
+         now subject to Expert Review.
+
+      -  Protocol Mechanisms practices were updated to include values of
+         the 'supportedFeatures' attribute type.
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 17]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+      -  LDAP Syntax, Search Scope, Filter Choice, ModifyRequest
+         operation, and authzId prefixes registries were added.
+
+      -  References to RFCs comprising the LDAP technical specifications
+         have been updated to latest revisions.
+
+      -  References to ISO 10646 have been replaced with [Unicode].
+
+      -  The "Assigned Values" appendix providing initial registry
+         values was removed.
+
+      -  Numerous editorial changes were made.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 18]
+
+RFC 4520              IANA Considerations for LDAP             June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 19]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4521.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4521.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4521.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4521.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,899 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4521                           OpenLDAP Foundation
+BCP: 118                                                       June 2006
+Category: Best Current Practice
+
+
+                          Considerations for
+        Lightweight Directory Access Protocol (LDAP) Extensions
+
+Status of This Memo
+
+   This document specifies an Internet Best Current Practices for the
+   Internet Community, and requests discussion and suggestions for
+   improvements.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   The Lightweight Directory Access Protocol (LDAP) is extensible.  It
+   provides mechanisms for adding new operations, extending existing
+   operations, and expanding user and system schemas.  This document
+   discusses considerations for designers of LDAP extensions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 1]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+Table of Contents
+
+   1. Introduction ....................................................3
+      1.1. Terminology ................................................3
+   2. General Considerations ..........................................4
+      2.1. Scope of Extension .........................................4
+      2.2. Interaction between extensions .............................4
+      2.3. Discovery Mechanism ........................................4
+      2.4. Internationalization Considerations ........................5
+      2.5. Use of the Basic Encoding Rules ............................5
+      2.6. Use of Formal Languages ....................................5
+      2.7. Examples ...................................................5
+      2.8. Registration of Protocol Values ............................5
+   3. LDAP Operation Extensions .......................................6
+      3.1. Controls ...................................................6
+           3.1.1. Extending Bind Operation with Controls ..............6
+           3.1.2. Extending the Start TLS Operation with Controls .....7
+           3.1.3. Extending the Search Operation with Controls ........7
+           3.1.4. Extending the Update Operations with Controls .......8
+           3.1.5. Extending the Responseless Operations with Controls..8
+      3.2. Extended Operations ........................................8
+      3.3. Intermediate Responses .....................................8
+      3.4. Unsolicited Notifications ..................................9
+   4. Extending the LDAP ASN.1 Definition .............................9
+      4.1. Result Codes ...............................................9
+      4.2. LDAP Message Types .........................................9
+      4.3. Authentication Methods ....................................10
+      4.4. General ASN.1 Extensibility ...............................10
+   5. Schema Extensions ..............................................10
+      5.1. LDAP Syntaxes .............................................11
+      5.2. Matching Rules ............................................11
+      5.3. Attribute Types ...........................................12
+      5.4. Object Classes ............................................12
+   6. Other Extension Mechanisms .....................................12
+      6.1. Attribute Description Options .............................12
+      6.2. Authorization Identities ..................................12
+      6.3. LDAP URL Extensions .......................................12
+   7. Security Considerations ........................................12
+   8. Acknowledgements ...............................................13
+   9. References .....................................................13
+      9.1. Normative References ......................................13
+      9.2. Informative References ....................................15
+
+
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 2]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+1.  Introduction
+
+   The Lightweight Directory Access Protocol (LDAP) [RFC4510] is an
+   extensible protocol.
+
+   LDAP allows for new operations to be added and for existing
+   operations to be enhanced [RFC4511].
+
+   LDAP allows additional schema to be defined [RFC4512][RFC4517].  This
+   can include additional object classes, attribute types, matching
+   rules, additional syntaxes, and other elements of schema.  LDAP
+   provides an ability to extend attribute types with options [RFC4512].
+
+   LDAP supports a Simple Authentication and Security Layer (SASL)
+   authentication method [RFC4511][RFC4513].  SASL [RFC4422] is
+   extensible.  LDAP may be extended to support additional
+   authentication methods [RFC4511].
+
+   LDAP supports establishment of Transport Layer Security (TLS)
+   [RFC4511][RFC4513].  TLS [RFC4346] is extensible.
+
+   LDAP has an extensible Uniform Resource Locator (URL) format
+   [RFC4516].
+
+   Lastly, LDAP allows for certain extensions to the protocol's Abstract
+   Syntax Notation - One (ASN.1) [X.680] definition to be made.  This
+   facilitates a wide range of protocol enhancements, for example, new
+   result codes needed to support extensions to be added through
+   extension of the protocol's ASN.1 definition.
+
+   This document describes practices that engineers should consider when
+   designing extensions to LDAP.
+
+1.1.  Terminology
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].  In
+   this document, "the specification", as used by BCP 14, RFC 2119,
+   refers to the engineering of LDAP extensions.
+
+   The term "Request Control" refers to a control attached to a client-
+   generated message sent to a server.  The term "Response Control"
+   refers to a control attached to a server-generated message sent to a
+   client.
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 3]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+   DIT stands for Directory Information Tree.
+   DSA stands for Directory System Agent, a server.
+   DSE stands for DSA-Specific Entry.
+   DUA stands for Directory User Agent, a client.
+   DN stands for Distinguished Name.
+
+2.  General Considerations
+
+2.1.  Scope of Extension
+
+   Mutually agreeing peers may, within the confines of an extension,
+   agree to significant changes in protocol semantics.  However,
+   designers MUST consider the impact of an extension upon protocol
+   peers that have not agreed to implement or otherwise recognize and
+   support the extension.  Extensions MUST be "truly optional"
+   [RFC2119].
+
+2.2.  Interaction between extensions
+
+   Designers SHOULD consider how extensions they engineer interact with
+   other extensions.
+
+   Designers SHOULD consider the extensibility of extensions they
+   specify.  Extensions to LDAP SHOULD themselves be extensible.
+
+   Except where it is stated otherwise, extensibility is implied.
+
+2.3.  Discovery Mechanism
+
+   Extensions SHOULD provide adequate discovery mechanisms.
+
+   As LDAP design is based upon the client-request/server-response
+   paradigm, the general discovery approach is for the client to
+   discover the capabilities of the server before utilizing a particular
+   extension.  Commonly, this discovery involves querying the root DSE
+   and/or other DSEs for operational information associated with the
+   extension.  LDAP provides no mechanism for a server to discover the
+   capabilities of a client.
+
+   The 'supportedControl' attribute [RFC4512] is used to advertise
+   supported controls.  The 'supportedExtension' attribute [RFC4512] is
+   used to advertise supported extended operations.  The
+   'supportedFeatures' attribute [RFC4512] is used to advertise
+   features.  Other root DSE attributes MAY be defined to advertise
+   other capabilities.
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 4]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+2.4.  Internationalization Considerations
+
+   LDAP is designed to support the full Unicode [Unicode] repertory of
+   characters.  Extensions SHOULD avoid unnecessarily restricting
+   applications to subsets of Unicode (e.g., Basic Multilingual Plane,
+   ISO 8859-1, ASCII, Printable String).
+
+   LDAP Language Tag options [RFC3866] provide a mechanism for tagging
+   text (and other) values with language information.  Extensions that
+   define attribute types SHOULD allow use of language tags with these
+   attributes.
+
+2.5.  Use of the Basic Encoding Rules
+
+   Numerous elements of LDAP are described using ASN.1 [X.680] and are
+   encoded using a particular subset [Protocol, Section 5.2] of the
+   Basic Encoding Rules (BER) [X.690].  To allow reuse of
+   parsers/generators used in implementing the LDAP "core" technical
+   specification [RFC4510], it is RECOMMENDED that extension elements
+   (e.g., extension specific contents of controlValue, requestValue,
+   responseValue fields) described by ASN.1 and encoded using BER be
+   subjected to the restrictions of [Protocol, Section 5.2].
+
+2.6.  Use of Formal Languages
+
+   Formal languages SHOULD be used in specifications in accordance with
+   IESG guidelines [FORMAL].
+
+2.7.  Examples
+
+   Example DN strings SHOULD conform to the syntax defined in [RFC4518].
+   Example LDAP filter strings SHOULD conform to the syntax defined in
+   [RFC4515].  Example LDAP URLs SHOULD conform to the syntax defined in
+   [RFC4516].  Entries SHOULD be represented using LDIF [RFC2849].
+
+2.8.  Registration of Protocol Values
+
+   Designers SHALL register protocol values of their LDAP extensions in
+   accordance with BCP 64, RFC 4520 [RFC4520].  Specifications that
+   create new extensible protocol elements SHALL extend existing
+   registries or establish new registries for values of these elements
+   in accordance with BCP 64, RFC 4520 [RFC4520] and BCP 26, RFC 2434
+   [RFC2434].
+
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 5]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+3.  LDAP Operation Extensions
+
+   Extensions SHOULD use controls in defining extensions that complement
+   existing operations.  Where the extension to be defined does not
+   complement an existing operation, designers SHOULD consider defining
+   an extended operation instead.
+
+   For example, a subtree delete operation could be designed as either
+   an extension of the delete operation or as a new operation.  As the
+   feature complements the existing delete operation, use of the control
+   mechanism to extend the delete operation is likely more appropriate.
+
+   As a counter (and contrived) example, a locate services operation (an
+   operation that would return for a DN a set of LDAP URLs to services
+   that may hold the entry named by this DN) could be designed as either
+   a search operation or a new operation.  As the feature doesn't
+   complement the search operation (e.g., the operation is not contrived
+   to search for entries held in the Directory Information Tree), it is
+   likely more appropriate to define a new operation using the extended
+   operation mechanism.
+
+3.1.  Controls
+
+   Controls [Protocol, Section 4.1.11] are the RECOMMENDED mechanism for
+   extending existing operations.  The existing operation can be a base
+   operation defined in [RFC4511] (e.g., search, modify) , an extended
+   operation (e.g., Start TLS [RFC4511], Password Modify [RFC3062]), or
+   an operation defined as an extension to a base or extended operation.
+
+   Extensions SHOULD NOT return Response controls unless the server has
+   specific knowledge that the client can make use of the control.
+   Generally, the client requests the return of a particular response
+   control by providing a related request control.
+
+   An existing operation MAY be extended to return IntermediateResponse
+   messages [Protocol, Section 4.13].
+
+   Specifications of controls SHALL NOT attach additional semantics to
+   the criticality of controls beyond those defined in [Protocol,
+   Section 4.1.11].  A specification MAY mandate the criticality take on
+   a particular value (e.g., TRUE or FALSE), where appropriate.
+
+3.1.1.  Extending Bind Operation with Controls
+
+   Controls attached to the request and response messages of a Bind
+   Operation [RFC4511] are not protected by any security layers
+   established by that Bind operation.
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 6]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+   Specifications detailing controls extending the Bind operation SHALL
+   detail that the Bind negotiated security layers do not protect the
+   information contained in these controls and SHALL detail how the
+   information in these controls is protected or why the information
+   does not need protection.
+
+   It is RECOMMENDED that designers consider alternative mechanisms for
+   providing the function.  For example, an extended operation issued
+   subsequent to the Bind operation (hence, protected by the security
+   layers negotiated by the Bind operation) might be used to provide the
+   desired function.
+
+   Additionally, designers of Bind control extensions MUST also consider
+   how the controls' semantics interact with individual steps of a
+   multi-step Bind operation.  Note that some steps are optional and
+   thus may require special attention in the design.
+
+3.1.2.  Extending the Start TLS Operation with Controls
+
+   Controls attached to the request and response messages of a Start TLS
+   Operation [RFC4511] are not protected by the security layers
+   established by the Start TLS operation.
+
+   Specifications detailing controls extending the Start TLS operation
+   SHALL detail that the Start TLS negotiated security layers do not
+   protect the information contained in these controls and SHALL detail
+   how the information in these controls is protected or why the
+   information does not need protection.
+
+   It is RECOMMENDED that designers consider alternative mechanisms for
+   providing the function.  For example, an extended operation issued
+   subsequent to the Start TLS operation (hence, protected by the
+   security layers negotiated by the Start TLS operation) might be used
+   to provided the desired function.
+
+3.1.3.  Extending the Search Operation with Controls
+
+   The Search operation processing has two distinct phases:
+
+      -  finding the base object; and
+
+      -  searching for objects at or under that base object.
+
+   Specifications of controls extending the Search Operation should
+   clearly state in which phase(s) the control's semantics apply.
+   Semantics of controls that are not specific to the Search Operation
+   SHOULD apply in the finding phase.
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 7]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+3.1.4.  Extending the Update Operations with Controls
+
+   Update operations have properties of atomicity, consistency,
+   isolation, and durability ([ACID]).
+
+      -  atomicity: All or none of the DIT changes requested are made.
+
+      -  consistency: The resulting DIT state must be conform to schema
+         and other constraints.
+
+      -  isolation: Intermediate states are not exposed.
+
+      -  durability: The resulting DIT state is preserved until
+         subsequently updated.
+
+   When defining a control that requests additional (or other) DIT
+   changes be made to the DIT, these additional changes SHOULD NOT be
+   treated as part of a separate transaction.  The specification MUST be
+   clear as to whether the additional DIT changes are part of the same
+   or a separate transaction as the DIT changes expressed in the request
+   of the base operation.
+
+   When defining a control that requests additional (or other) DIT
+   changes be made to the DIT, the specification MUST be clear as to the
+   order in which these and the base changes are to be applied to the
+   DIT.
+
+3.1.5.  Extending the Responseless Operations with Controls
+
+   The Abandon and Unbind operations do not include a response message.
+   For this reason, specifications for controls designed to be attached
+   to Abandon and Unbind requests SHOULD mandate that the control's
+   criticality be FALSE.
+
+3.2.  Extended Operations
+
+   Extended Operations [Protocol, Section 4.12] are the RECOMMENDED
+   mechanism for defining new operations.  An extended operation
+   consists of an ExtendedRequest message, zero or more
+   IntermediateResponse messages, and an ExtendedResponse message.
+
+3.3.  Intermediate Responses
+
+   Extensions SHALL use IntermediateResponse messages instead of
+   ExtendedResponse messages to return intermediate results.
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                  [Page 8]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+3.4.  Unsolicited Notifications
+
+   Unsolicited notifications [Protocol, Section 4.4] offer a capability
+   for the server to notify the client of events not associated with the
+   operation currently being processed.
+
+   Extensions SHOULD be designed such that unsolicited notifications are
+   not returned unless the server has specific knowledge that the client
+   can make use of the notification.  Generally, the client requests the
+   return of a particular unsolicited notification by performing a
+   related extended operation.
+
+   For example, a time hack extension could be designed to return
+   unsolicited notifications at regular intervals that were enabled by
+   an extended operation (which possibly specified the desired
+   interval).
+
+4.  Extending the LDAP ASN.1 Definition
+
+   LDAP allows limited extension [Protocol, Section 4] of the LDAP ASN.1
+   definition [Protocol, Appendix B] to be made.
+
+4.1.  Result Codes
+
+   Extensions that specify new operations or enhance existing operations
+   often need to define new result codes.  The extension SHOULD be
+   designed such that a client has a reasonably clear indication of the
+   nature of the successful or non-successful result.
+
+   Extensions SHOULD use existing result codes to indicate conditions
+   that are consistent with the intended meaning [RFC4511][X.511] of
+   these codes.  Extensions MAY introduce new result codes [RFC4520]
+   where no existing result code provides an adequate indication of the
+   nature of the result.
+
+   Extensions SHALL NOT disallow or otherwise restrict the return of
+   general service result codes, especially those reporting a protocol,
+   service, or security problem, or indicating that the server is unable
+   or unwilling to complete the operation.
+
+4.2.  LDAP Message Types
+
+   While extensions can specify new types of LDAP messages by extending
+   the protocolOp CHOICE of the LDAPMessage SEQUENCE, this is generally
+   unnecessary and inappropriate.  Existing operation extension
+   mechanisms (e.g., extended operations, unsolicited notifications, and
+   intermediate responses) SHOULD be used instead.  However, there may
+   be cases where an extension does not fit well into these mechanisms.
+
+
+
+Zeilenga                 Best Current Practice                  [Page 9]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+   In such cases, a new extension mechanism SHOULD be defined that can
+   be used by multiple extensions that have similar needs.
+
+4.3.  Authentication Methods
+
+   The Bind operation currently supports two authentication methods,
+   simple and SASL.  SASL [RFC4422] is an extensible authentication
+   framework used by multiple application-level protocols (e.g., BEEP,
+   IMAP, SMTP).  It is RECOMMENDED that new authentication processes be
+   defined as SASL mechanisms.  New LDAP authentication methods MAY be
+   added to support new authentication frameworks.
+
+   The Bind operation's primary function is to establish the LDAP
+   association [RFC4513].  No other operation SHALL be defined (or
+   extended) to establish the LDAP association.  However, other
+   operations MAY be defined to establish other security associations
+   (e.g., IPsec).
+
+4.4.  General ASN.1 Extensibility
+
+   Section 4 of [RFC4511] states the following:
+
+      In order to support future extensions to this protocol,
+      extensibility is implied where it is allowed per ASN.1 (i.e.,
+      sequence, set, choice, and enumerated types are extensible).  In
+      addition, ellipses (...)  have been supplied in ASN.1 types that
+      are explicitly extensible as discussed in [RFC4520].  Because of
+      the implied extensibility, clients and servers MUST (unless
+      otherwise specified) ignore trailing SEQUENCE components whose
+      tags they do not recognize.
+
+   Designers SHOULD avoid introducing extensions that rely on
+   unsuspecting implementations to ignore trailing components of
+   SEQUENCE whose tags they do not recognize.
+
+5.  Schema Extensions
+
+   Extensions defining LDAP schema elements SHALL provide schema
+   definitions conforming with syntaxes defined in [Models, Section
+   4.1].  While provided definitions MAY be reformatted (line wrapped)
+   for readability, this SHALL be noted in the specification.
+
+   For definitions that allow a NAME field, new schema elements SHOULD
+   provide one and only one name.  The name SHOULD be short.
+
+   Each schema definition allows a DESC field.  The DESC field, if
+   provided, SHOULD contain a short descriptive phrase.  The DESC field
+   MUST be regarded as informational.  That is, the specification MUST
+
+
+
+Zeilenga                 Best Current Practice                 [Page 10]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+   be written such that its interpretation is the same with and without
+   the provided DESC fields.
+
+   The extension SHALL NOT mandate that implementations provide the same
+   DESC field in the schema they publish.  Implementors MAY replace or
+   remove the DESC field.
+
+   Published schema elements SHALL NOT be redefined.  Replacement schema
+   elements (new OIDs, new NAMEs) SHOULD be defined as needed.
+
+   Schema designers SHOULD reuse existing schema elements, where
+   appropriate.  However, any reuse MUST not alter the semantics of the
+   element.
+
+5.1.  LDAP Syntaxes
+
+   Each LDAP syntax [RFC4517] is defined in terms of ASN.1 [X.680].
+   Each extension detailing an LDAP syntax MUST specify the ASN.1 data
+   definition associated with the syntax.  A distinct LDAP syntax SHOULD
+   be created for each distinct ASN.1 data definition (including
+   constraints).
+
+   Each LDAP syntax SHOULD have a string encoding defined for it.  It is
+   RECOMMENDED that this string encoding be restricted to UTF-8
+   [RFC3629] encoded Unicode [Unicode] characters.  Use of Generic
+   String Encoding Rules (GSER) [RFC3641][RFC3642] or other generic
+   string encoding rules to provide string encodings for complex ASN.1
+   data definitions is RECOMMENDED.  Otherwise, it is RECOMMENDED that
+   the string encoding be described using a formal language (e.g., ABNF
+   [RFC4234]).  Formal languages SHOULD be used in specifications in
+   accordance with IESG guidelines [FORMAL].
+
+   If no string encoding is defined, the extension SHALL specify how the
+   transfer encoding is to be indicated.  Generally, the extension
+   SHOULD mandate use of binary or other transfer encoding option.
+
+5.2.  Matching Rules
+
+   Three basic kinds of matching rules (e.g., EQUALITY, ORDERING, and
+   SUBSTRING) may be associated with an attribute type.  In addition,
+   LDAP provides an extensible matching rule mechanism.
+
+   The matching rule specification SHOULD detail which kind of matching
+   rule it is and SHOULD describe which kinds of values it can be used
+   with.
+
+   In addition to requirements stated in the LDAP technical
+   specification, equality matching rules SHOULD be commutative.
+
+
+
+Zeilenga                 Best Current Practice                 [Page 11]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+5.3.  Attribute Types
+
+   Designers SHOULD carefully consider how the structure of values is to
+   be restricted.  Designers SHOULD consider that servers will only
+   enforce constraints of the attribute's syntax.  That is, an attribute
+   intended to hold URIs, but that has directoryString syntax, is not
+   restricted to values that are URIs.
+
+   Designers SHOULD carefully consider which matching rules, if any, are
+   appropriate for the attribute type.  Matching rules specified for an
+   attribute type MUST be compatible with the attribute type's syntax.
+
+   Extensions specifying operational attributes MUST detail how servers
+   are to maintain and/or utilize values of each operational attribute.
+
+5.4.  Object Classes
+
+   Designers SHOULD carefully consider whether each attribute of an
+   object class is required ("MUST") or allowed ("MAY").
+
+   Extensions specifying object classes that allow (or require)
+   operational attributes MUST specify how servers are to maintain
+   and/or utilize entries belonging to these object classes.
+
+6.  Other Extension Mechanisms
+
+6.1.  Attribute Description Options
+
+   Each option is identified by a string of letters, numbers, and
+   hyphens.  This string SHOULD be short.
+
+6.2.  Authorization Identities
+
+   Extensions interacting with authorization identities SHALL support
+   the LDAP authzId format [RFC4513].  The authzId format is extensible.
+
+6.3.  LDAP URL Extensions
+
+   LDAP URL extensions are identified by a short string, a descriptor.
+   Like other descriptors, the string SHOULD be short.
+
+7.  Security Considerations
+
+   LDAP does not place undue restrictions on the kinds of extensions
+   that can be implemented.  While this document attempts to outline
+   some specific issues that designers need to consider, it is not (and
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 12]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+   cannot be) all encompassing.  Designers MUST do their own evaluations
+   of the security considerations applicable to their extensions.
+
+   Designers MUST NOT assume that the LDAP "core" technical
+   specification [RFC4510] adequately addresses the specific concerns
+   surrounding their extensions or assume that their extensions have no
+   specific concerns.
+
+   Extension specifications, however, SHOULD note whether security
+   considerations specific to the feature they are extending, as well as
+   general LDAP security considerations, apply to the extension.
+
+8.  Acknowledgements
+
+   The author thanks the IETF LDAP community for their thoughtful
+   comments.
+
+   This work builds upon "LDAP Extension Style Guide" [GUIDE] by Bruce
+   Greenblatt.
+
+9.  References
+
+9.1.  Normative References
+
+   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
+              Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC2434]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
+              IANA Considerations Section in RFCs", BCP 26, RFC 2434,
+              October 1998.
+
+   [RFC2849]  Good, G., "The LDAP Data Interchange Format (LDIF) -
+              Technical Specification", RFC 2849, June 2000.
+
+   [RFC3629]  Yergeau, F., "UTF-8, a transformation format of ISO
+              10646", STD 63, RFC 3629, November 2003.
+
+   [RFC3641]  Legg, S., "Generic String Encoding Rules (GSER) for ASN.1
+              Types", RFC 3641, October 2003.
+
+   [RFC3642]  Legg, S., "Common Elements of Generic String Encoding
+              Rules (GSER) Encodings", RFC 3642, October 2003.
+
+   [RFC4512]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP): Directory Information Models", RFC 4512, June
+              2006.
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 13]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+   [RFC3866]  Zeilenga, K., Ed., "Language Tags and Ranges in the
+              Lightweight Directory Access Protocol (LDAP)", RFC 3866,
+              July 2004.
+
+   [RFC4234]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
+              Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4510]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Technical Specification Road Map", RFC 4510, June
+              2006.
+
+   [RFC4511]  Sermersheim, J., Ed., "Lightweight Directory Access
+              Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP): Directory Information Models", RFC 4512, June
+              2006.
+
+   [RFC4513]  Harrison, R., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Authentication Methods and Security Mechanisms",
+              RFC 4513, June 2006.
+
+   [RFC4515]  Smith, M., Ed. and T. Howes, "Lightweight Directory Access
+              Protocol (LDAP): String Representation of Search Filters",
+              RFC 4515, June 2006.
+
+   [RFC4516]  Smith, M., Ed. and T. Howes, "Lightweight Directory Access
+              Protocol (LDAP): Uniform Resource Locator", RFC 4516, June
+              2006.
+
+   [RFC4517]  Legg, S., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Syntaxes and Matching Rules", RFC 4517, June 2006.
+
+   [RFC4518]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP): String Representation of Distinguished Names", RFC
+              4518, June 2006.
+
+   [RFC4520]  Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
+              Considerations for the Lightweight Directory Access
+              Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [RFC4422]  Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple
+              Authentication and Security Layer (SASL)", RFC 4422, June
+              2006.
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 14]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+   [Unicode]  The Unicode Consortium, "The Unicode Standard, Version
+              3.2.0" is defined by "The Unicode Standard, Version 3.0"
+              (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5),
+              as amended by the "Unicode Standard Annex #27: Unicode
+              3.1" (http://www.unicode.org/reports/tr27/) and by the
+              "Unicode Standard Annex #28: Unicode 3.2"
+              (http://www.unicode.org/reports/tr28/).
+
+   [FORMAL]   IESG, "Guidelines for the use of formal languages in IETF
+              specifications",
+              <http://www.ietf.org/IESG/STATEMENTS/pseudo-code-in-
+              specs.txt>, 2001.
+
+   [X.511]    International Telecommunication Union - Telecommunication
+              Standardization Sector, "The Directory: Abstract Service
+              Definition", X.511(1993) (also ISO/IEC 9594-3:1993).
+
+   [X.680]    International Telecommunication Union - Telecommunication
+              Standardization Sector, "Abstract Syntax Notation One
+              (ASN.1) - Specification of Basic Notation", X.680(2002)
+              (also ISO/IEC 8824-1:2002).
+
+   [X.690]    International Telecommunication Union - Telecommunication
+              Standardization Sector, "Specification of ASN.1 encoding
+              rules: Basic Encoding Rules (BER), Canonical Encoding
+              Rules (CER), and Distinguished Encoding Rules (DER)",
+              X.690(2002) (also ISO/IEC 8825-1:2002).
+
+9.2.  Informative References
+
+   [ACID]     Section 4 of ISO/IEC 10026-1:1992.
+
+   [GUIDE]    Greenblatt, B., "LDAP Extension Style Guide", Work in
+              Progress.
+
+   [RFC3062]  Zeilenga, K., "LDAP Password Modify Extended Operation",
+              RFC 3062, February 2001.
+
+   [RFC4346]  Dierks, T. and E. Rescorla, "The Transport Layer Security
+              (TLS) Protocol Version 1.1", RFC 4346, April 2006.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 15]
+
+RFC 4521                    LDAP Extensions                    June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                 Best Current Practice                 [Page 16]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4522.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4522.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4522.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4522.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,451 @@
+
+
+
+
+
+
+Network Working Group                                            S. Legg
+Request for Comments: 4522                                       eB2Bcom
+Category: Standards Track                                      June 2006
+
+
+             Lightweight Directory Access Protocol (LDAP):
+                       The Binary Encoding Option
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   Each attribute stored in a Lightweight Directory Access Protocol
+   (LDAP) directory has a defined syntax (i.e., data type).  A syntax
+   definition specifies how attribute values conforming to the syntax
+   are normally represented when transferred in LDAP operations.  This
+   representation is referred to as the LDAP-specific encoding to
+   distinguish it from other methods of encoding attribute values.  This
+   document defines an attribute option, the binary option, that can be
+   used to specify that the associated attribute values are instead
+   encoded according to the Basic Encoding Rules (BER) used by X.500
+   directories.
+
+Table of Contents
+
+   1. Introduction ....................................................2
+   2. Conventions .....................................................2
+   3. The Binary Option ...............................................2
+   4. Syntaxes Requiring Binary Transfer ..............................3
+   5. Attributes Returned in a Search .................................4
+   6. All User Attributes .............................................4
+   7. Conflicting Requests ............................................5
+   8. Security Considerations .........................................5
+   9. IANA Considerations .............................................5
+   10. References .....................................................5
+      10.1. Normative References ......................................5
+      10.2. Informative References ....................................6
+
+
+
+
+Legg                        Standards Track                     [Page 1]
+
+RFC 4522            LDAP: The Binary Encoding Option           June 2006
+
+
+1.  Introduction
+
+   Each attribute stored in a Lightweight Directory Access Protocol
+   (LDAP) directory [RFC4510] has a defined syntax (i.e., data type)
+   which constrains the structure and format of its values.
+
+   The description of each syntax [RFC4517] specifies how attribute or
+   assertion values [RFC4512] conforming to the syntax are normally
+   represented when transferred in LDAP operations [RFC4511].  This
+   representation is referred to as the LDAP-specific encoding to
+   distinguish it from other methods of encoding attribute values.
+
+   This document defines an attribute option, the binary option, which
+   can be used in an attribute description [RFC4512] in an LDAP
+   operation to specify that the associated attribute values or
+   assertion values are, or are requested to be, encoded according to
+   the Basic Encoding Rules (BER) [BER] as used by X.500 [X.500]
+   directories, instead of the usual LDAP-specific encoding.
+
+   The binary option was originally defined in RFC 2251 [RFC2251].  The
+   LDAP technical specification [RFC4510] has obsoleted the previously
+   defined LDAP technical specification [RFC3377], which included RFC
+   2251.  The binary option was not included in the revised LDAP
+   technical specification for a variety of reasons including
+   implementation inconsistencies.  No attempt is made here to resolve
+   the known inconsistencies.
+
+   This document reintroduces the binary option for use with certain
+   attribute syntaxes, such as certificate syntax [RFC4523], that
+   specifically require it.  No attempt has been made to address use of
+   the binary option with attributes of syntaxes that do not require its
+   use.  Unless addressed in a future specification, this use is to be
+   avoided.
+
+2.  Conventions
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14, RFC 2119
+   [BCP14].
+
+3.  The Binary Option
+
+   The binary option is indicated with the attribute option string
+   "binary" in an attribute description.  Note that, like all attribute
+   options, the string representing the binary option is case
+   insensitive.
+
+
+
+
+Legg                        Standards Track                     [Page 2]
+
+RFC 4522            LDAP: The Binary Encoding Option           June 2006
+
+
+   Where the binary option is present in an attribute description, the
+   associated attribute values or assertion values MUST be BER encoded
+   (otherwise the values are encoded according to the LDAP-specific
+   encoding [RFC4517] for the attribute's syntax).  Note that it is
+   possible for a syntax to be defined such that its LDAP-specific
+   encoding is exactly the same as its BER encoding.
+
+   In terms of the protocol [RFC4511], the binary option specifies that
+   the contents octets of the associated AttributeValue or
+   AssertionValue OCTET STRING are a complete BER encoding of the
+   relevant value.
+
+   The binary option is not a tagging option [RFC4512], so the presence
+   of the binary option does not specify an attribute subtype.  An
+   attribute description containing the binary option references exactly
+   the same attribute as the attribute description without the binary
+   option.  The supertype/subtype relationships of attributes with
+   tagging options are not altered in any way by the presence or absence
+   of the binary option.
+
+   An attribute description SHALL be treated as unrecognized if it
+   contains the binary option and the syntax of the attribute does not
+   have an associated ASN.1 type [RFC4517], or the BER encoding of
+   values of that type is not supported.
+
+   The presence or absence of the binary option only affects the
+   transfer of attribute and assertion values in the protocol; servers
+   store any particular attribute value in a format of their choosing.
+
+4.  Syntaxes Requiring Binary Transfer
+
+   The attribute values of certain attribute syntaxes are defined
+   without an LDAP-specific encoding and are required to be transferred
+   in the BER-encoded form.  For the purposes of this document, these
+   syntaxes are said to have a binary transfer requirement.  The
+   certificate, certificate list, certificate pair, and supported
+   algorithm syntaxes [RFC4523] are examples of syntaxes with a binary
+   transfer requirement.  These syntaxes also have an additional
+   requirement that the exact BER encoding must be preserved.  Note that
+   this is a property of the syntaxes themselves, and not a property of
+   the binary option.  In the absence of this requirement, LDAP clients
+   would need to re-encode values using the Distinguished Encoding Rules
+   (DER).
+
+
+
+
+
+
+
+
+Legg                        Standards Track                     [Page 3]
+
+RFC 4522            LDAP: The Binary Encoding Option           June 2006
+
+
+5.  Attributes Returned in a Search
+
+   An LDAP search request [RFC4511] contains a list of the attributes
+   (the requested attributes list) to be returned from each entry
+   matching the search filter.  An attribute description in the
+   requested attributes list also implicitly requests all subtypes of
+   the attribute type in the attribute description, whether through
+   attribute subtyping or attribute tagging option subtyping [RFC4512].
+
+   The requested attributes list MAY contain attribute descriptions with
+   the binary option, but MUST NOT contain two attribute descriptions
+   with the same attribute type and the same tagging options (even if
+   only one of them has the binary option).  The binary option in an
+   attribute description in the requested attributes list implicitly
+   applies to all the subtypes of the attribute type in the attribute
+   description (however, see Section 7).
+
+   Attributes of a syntax with the binary transfer requirement, if
+   returned, SHALL be returned in the binary form (i.e., with the binary
+   option in the attribute description and the associated attribute
+   values BER encoded) regardless of whether the binary option was
+   present in the request (for the attribute or for one of its
+   supertypes).
+
+   Attributes of a syntax without the binary transfer requirement, if
+   returned, SHOULD be returned in the form explicitly requested.  That
+   is, if the attribute description in the requested attributes list
+   contains the binary option, then the corresponding attribute in the
+   result SHOULD be in the binary form.  If the attribute description in
+   the request does not contain the binary option, then the
+   corresponding attribute in the result SHOULD NOT be in the binary
+   form.  A server MAY omit an attribute from the result if it does not
+   support the requested encoding.
+
+   Regardless of the encoding chosen, a particular attribute value is
+   returned at most once.
+
+6.  All User Attributes
+
+   If the list of attributes in a search request is empty or contains
+   the special attribute description string "*", then all user
+   attributes are requested to be returned.
+
+   Attributes of a syntax with the binary transfer requirement, if
+   returned, SHALL be returned in the binary form.
+
+
+
+
+
+
+Legg                        Standards Track                     [Page 4]
+
+RFC 4522            LDAP: The Binary Encoding Option           June 2006
+
+
+   Attributes of a syntax without the binary transfer requirement and
+   having a defined LDAP-specific encoding SHOULD NOT be returned in the
+   binary form.
+
+   Attributes of a syntax without the binary transfer requirement and
+   without a defined LDAP-specific encoding may be returned in the
+   binary form or omitted from the result.
+
+7.  Conflicting Requests
+
+   A particular attribute could be explicitly requested by an attribute
+   description and/or implicitly requested by the attribute descriptions
+   of one or more of its supertypes, or by the special attribute
+   description string "*".  If the binary option is present in at least
+   one, but not all, of these attribute descriptions then the effect of
+   the request with respect to binary transfer is implementation
+   defined.
+
+8.  Security Considerations
+
+   When interpreting security-sensitive fields, and in particular fields
+   used to grant or deny access, implementations MUST ensure that any
+   matching rule comparisons are done on the underlying abstract value,
+   regardless of the particular encoding used.
+
+9.  IANA Considerations
+
+   The Internet Assigned Numbers Authority (IANA) has updated the LDAP
+   attribute description option registry [BCP64] as indicated by the
+   following template:
+
+      Subject:
+        Request for LDAP Attribute Description Option Registration
+      Option Name: binary
+      Family of Options: NO
+      Person & email address to contact for further information:
+        Steven Legg <steven.legg at eb2bcom.com>
+      Specification: RFC 4522
+      Author/Change Controller: IESG
+
+10.  References
+
+10.1.  Normative References
+
+   [BCP14]    Bradner, S., "Key words for use in RFCs to Indicate
+              Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+
+
+
+
+Legg                        Standards Track                     [Page 5]
+
+RFC 4522            LDAP: The Binary Encoding Option           June 2006
+
+
+   [BCP64]    Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
+              Considerations for the Lightweight Directory Access
+              Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [RFC4510]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Technical Specification Road Map", RFC RFC 4510,
+              June 2006.
+
+   [RFC4511]  Sermersheim, J., "Lightweight Directory Access Protocol
+              (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP): Directory Information Models", RFC 4512, June
+              2006.
+
+   [RFC4517]  Legg, S., Ed., "Lightweight Directory Access Protocol
+              (LDAP):  Syntaxes and Matching Rules", RFC 4517, June
+              2006.
+
+   [RFC4523]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP) Schema Definitions for X.509 Certificates", RFC
+              4523, June 2006.
+
+   [BER]      ITU-T Recommendation X.690 (07/02) | ISO/IEC 8825-1,
+              Information Technology - ASN.1 encoding rules:
+              Specification of Basic Encoding Rules (BER), Canonical
+              Encoding Rules (CER) and Distinguished Encoding Rules
+              (DER).
+
+10.2.  Informative References
+
+   [RFC2251]  Wahl, M., Howes, T., and S. Kille, "Lightweight Directory
+              Access Protocol (v3)", RFC 2251, December 1997.
+
+   [RFC3377]  Hodges, J. and R. Morgan, "Lightweight Directory Access
+              Protocol (v3): Technical Specification", RFC 3377,
+              September 2002.
+
+   [X.500]    ITU-T Recommendation X.500 (02/01) | ISO/IEC 9594-1:2001,
+              Information technology - Open Systems Interconnection -
+              The Directory:  Overview of concepts, models and services
+
+
+
+
+
+
+
+
+
+
+Legg                        Standards Track                     [Page 6]
+
+RFC 4522            LDAP: The Binary Encoding Option           June 2006
+
+
+Author's Address
+
+   Dr. Steven Legg
+   eB2Bcom
+   Suite 3, Woodhouse Corporate Centre
+   935 Station Street
+   Box Hill North, Victoria 3129
+   AUSTRALIA
+
+   Phone: +61 3 9896 7830
+   Fax:   +61 3 9896 7801
+   EMail: steven.legg at eb2bcom.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Legg                        Standards Track                     [Page 7]
+
+RFC 4522            LDAP: The Binary Encoding Option           June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Legg                        Standards Track                     [Page 8]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4523.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4523.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4523.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4523.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,1347 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4523                           OpenLDAP Foundation
+Obsoletes: 2252, 2256, 2587                                    June 2006
+Category: Standards Track
+
+
+             Lightweight Directory Access Protocol (LDAP)
+               Schema Definitions for X.509 Certificates
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+   Abstract
+
+   This document describes schema for representing X.509 certificates,
+   X.521 security information, and related elements in directories
+   accessible using the Lightweight Directory Access Protocol (LDAP).
+   The LDAP definitions for these X.509 and X.521 schema elements
+   replace those provided in RFCs 2252 and 2256.
+
+1.  Introduction
+
+   This document provides LDAP [RFC4510] schema definitions [RFC4512]
+   for a subset of elements specified in X.509 [X.509] and X.521
+   [X.521], including attribute types for certificates, cross
+   certificate pairs, and certificate revocation lists; matching rules
+   to be used with these attribute types; and related object classes.
+   LDAP syntax definitions are also provided for associated assertion
+   and attribute values.
+
+   As the semantics of these elements are as defined in X.509 and X.521,
+   knowledge of X.509 and X.521 is necessary to make use of the LDAP
+   schema definitions provided herein.
+
+   This document, together with [RFC4510], obsoletes RFCs 2252 and 2256
+   in their entirety.  The changes (in this document) made since RFC
+   2252 and RFC 2256 include:
+
+      -  addition of pkiUser, pkiCA, and deltaCRL classes;
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+      -  update of attribute types to include equality matching rules in
+         accordance with their X.500 specifications;
+
+      -  addition of certificate, certificate pair, certificate list,
+         and algorithm identifier matching rules; and
+
+      -  addition of LDAP syntax for assertion syntaxes for these
+         matching rules.
+
+   This document obsoletes RFC 2587.  The X.509 schema descriptions for
+   LDAPv2 [RFC1777] are Historic, as is LDAPv2 [RFC3494].
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+   Schema definitions are provided using LDAP description formats
+   [RFC4512].  Definitions provided here are formatted (line wrapped)
+   for readability.
+
+2.  Syntaxes
+
+   This section describes various syntaxes used in LDAP to transfer
+   certificates and related data types.
+
+2.1.  Certificate
+
+      ( 1.3.6.1.4.1.1466.115.121.1.8 DESC 'X.509 Certificate' )
+
+   A value of this syntax is an X.509 Certificate [X.509, clause 7].
+
+   Due to changes made to the definition of a Certificate through time,
+   no LDAP-specific encoding is defined for this syntax.  Values of this
+   syntax SHOULD be encoded using Distinguished Encoding Rules (DER)
+   [X.690] and MUST only be transferred using the ;binary transfer
+   option [RFC4522]; that is, by requesting and returning values using
+   attribute descriptions such as "userCertificate;binary".
+
+   As values of this syntax contain digitally signed data, values of
+   this syntax and the form of each value MUST be preserved as
+   presented.
+
+2.2.  CertificateList
+
+      ( 1.3.6.1.4.1.1466.115.121.1.9 DESC 'X.509 Certificate List' )
+
+   A value of this syntax is an X.509 CertificateList [X.509, clause
+   7.3].
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+   Due to changes made to the definition of a CertificateList through
+   time, no LDAP-specific encoding is defined for this syntax.  Values
+   of this syntax SHOULD be encoded using DER [X.690] and MUST only be
+   transferred using the ;binary transfer option [RFC4522]; that is, by
+   requesting and returning values using attribute descriptions such as
+   "certificateRevocationList;binary".
+
+   As values of this syntax contain digitally signed data, values of
+   this syntax and the form of each value MUST be preserved as
+   presented.
+
+2.3.  CertificatePair
+
+      ( 1.3.6.1.4.1.1466.115.121.1.10 DESC 'X.509 Certificate Pair' )
+
+   A value of this syntax is an X.509 CertificatePair [X.509, clause
+   11.2.3].
+
+   Due to changes made to the definition of an X.509 CertificatePair
+   through time, no LDAP-specific encoding is defined for this syntax.
+   Values of this syntax SHOULD be encoded using DER [X.690] and MUST
+   only be transferred using the ;binary transfer option [RFC4522]; that
+   is, by requesting and returning values using attribute descriptions
+   such as "crossCertificatePair;binary".
+
+   As values of this syntax contain digitally signed data, values of
+   this syntax and the form of each value MUST be preserved as
+   presented.
+
+2.4.  SupportedAlgorithm
+
+      ( 1.3.6.1.4.1.1466.115.121.1.49
+           DESC 'X.509 Supported Algorithm' )
+
+   A value of this syntax is an X.509 SupportedAlgorithm [X.509, clause
+   11.2.7].
+
+   Due to changes made to the definition of an X.509 SupportedAlgorithm
+   through time, no LDAP-specific encoding is defined for this syntax.
+   Values of this syntax SHOULD be encoded using DER [X.690] and MUST
+   only be transferred using the ;binary transfer option [RFC4522]; that
+   is, by requesting and returning values using attribute descriptions
+   such as "supportedAlgorithms;binary".
+
+   As values of this syntax contain digitally signed data, values of
+   this syntax and the form of the value MUST be preserved as presented.
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+2.5.  CertificateExactAssertion
+
+      ( 1.3.6.1.1.15.1 DESC 'X.509 Certificate Exact Assertion' )
+
+   A value of this syntax is an X.509 CertificateExactAssertion [X.509,
+   clause 11.3.1].  Values of this syntax MUST be encoded using the
+   Generic String Encoding Rules (GSER) [RFC3641].  Appendix A.1
+   provides an equivalent Augmented Backus-Naur Form (ABNF) [RFC4234]
+   grammar for this syntax.
+
+2.6.  CertificateAssertion
+
+      ( 1.3.6.1.1.15.2 DESC 'X.509 Certificate Assertion' )
+
+   A value of this syntax is an X.509 CertificateAssertion [X.509,
+   clause 11.3.2].  Values of this syntax MUST be encoded using GSER
+   [RFC3641].  Appendix A.2 provides an equivalent ABNF [RFC4234]
+   grammar for this syntax.
+
+2.7.  CertificatePairExactAssertion
+
+      ( 1.3.6.1.1.15.3
+           DESC 'X.509 Certificate Pair Exact Assertion' )
+
+   A value of this syntax is an X.509 CertificatePairExactAssertion
+   [X.509, clause 11.3.3].  Values of this syntax MUST be encoded using
+   GSER [RFC3641].  Appendix A.3 provides an equivalent ABNF [RFC4234]
+   grammar for this syntax.
+
+2.8.  CertificatePairAssertion
+
+      ( 1.3.6.1.1.15.4 DESC 'X.509 Certificate Pair Assertion' )
+
+   A value of this syntax is an X.509 CertificatePairAssertion [X.509,
+   clause 11.3.4].  Values of this syntax MUST be encoded using GSER
+   [RFC3641].  Appendix A.4 provides an equivalent ABNF [RFC4234]
+   grammar for this syntax.
+
+2.9.  CertificateListExactAssertion
+
+      ( 1.3.6.1.1.15.5
+           DESC 'X.509 Certificate List Exact Assertion' )
+
+   A value of this syntax is an X.509 CertificateListExactAssertion
+   [X.509, clause 11.3.5].  Values of this syntax MUST be encoded using
+   GSER [RFC3641].  Appendix A.5 provides an equivalent ABNF grammar for
+   this syntax.
+
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+2.10.  CertificateListAssertion
+
+      ( 1.3.6.1.1.15.6 DESC 'X.509 Certificate List Assertion' )
+
+   A value of this syntax is an X.509 CertificateListAssertion [X.509,
+   clause 11.3.6].  Values of this syntax MUST be encoded using GSER
+   [RFC3641].  Appendix A.6 provides an equivalent ABNF [RFC4234]
+   grammar for this syntax.
+
+2.11.  AlgorithmIdentifier
+
+      ( 1.3.6.1.1.15.7 DESC 'X.509 Algorithm Identifier' )
+
+   A value of this syntax is an X.509 AlgorithmIdentifier [X.509, Clause
+   7].  Values of this syntax MUST be encoded using GSER [RFC3641].
+
+   Appendix A.7 provides an equivalent ABNF [RFC4234] grammar for this
+   syntax.
+
+3.  Matching Rules
+
+   This section introduces a set of certificate and related matching
+   rules for use in LDAP.  These rules are intended to act in accordance
+   with their X.500 counterparts.
+
+3.1.  certificateExactMatch
+
+   The certificateExactMatch matching rule compares the presented
+   certificate exact assertion value with an attribute value of the
+   certificate syntax as described in clause 11.3.1 of [X.509].
+
+      ( 2.5.13.34 NAME 'certificateExactMatch'
+           DESC 'X.509 Certificate Exact Match'
+           SYNTAX 1.3.6.1.1.15.1 )
+
+3.2.  certificateMatch
+
+   The certificateMatch matching rule compares the presented certificate
+   assertion value with an attribute value of the certificate syntax as
+   described in clause 11.3.2 of [X.509].
+
+      ( 2.5.13.35 NAME 'certificateMatch'
+           DESC 'X.509 Certificate Match'
+           SYNTAX 1.3.6.1.1.15.2 )
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+3.3.  certificatePairExactMatch
+
+   The certificatePairExactMatch matching rule compares the presented
+   certificate pair exact assertion value with an attribute value of the
+   certificate pair syntax as described in clause 11.3.3 of [X.509].
+
+      ( 2.5.13.36 NAME 'certificatePairExactMatch'
+           DESC 'X.509 Certificate Pair Exact Match'
+           SYNTAX 1.3.6.1.1.15.3 )
+
+3.4.  certificatePairMatch
+
+   The certificatePairMatch matching rule compares the presented
+   certificate pair assertion value with an attribute value of the
+   certificate pair syntax as described in clause 11.3.4 of [X.509].
+
+      ( 2.5.13.37 NAME 'certificatePairMatch'
+           DESC 'X.509 Certificate Pair Match'
+           SYNTAX 1.3.6.1.1.15.4 )
+
+3.5.  certificateListExactMatch
+
+   The certificateListExactMatch matching rule compares the presented
+   certificate list exact assertion value with an attribute value of the
+   certificate pair syntax as described in clause 11.3.5 of [X.509].
+
+      ( 2.5.13.38 NAME 'certificateListExactMatch'
+           DESC 'X.509 Certificate List Exact Match'
+           SYNTAX 1.3.6.1.1.15.5 )
+
+3.6.  certificateListMatch
+
+   The certificateListMatch matching rule compares the presented
+   certificate list assertion value with an attribute value of the
+   certificate pair syntax as described in clause 11.3.6 of [X.509].
+
+      ( 2.5.13.39 NAME 'certificateListMatch'
+           DESC 'X.509 Certificate List Match'
+           SYNTAX 1.3.6.1.1.15.6 )
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+3.7.  algorithmIdentifierMatch
+
+   The algorithmIdentifierMatch mating rule compares a presented
+   algorithm identifier with an attribute value of the supported
+   algorithm as described in clause 11.3.7 of [X.509].
+
+      ( 2.5.13.40 NAME 'algorithmIdentifier'
+           DESC 'X.509 Algorithm Identifier Match'
+           SYNTAX 1.3.6.1.1.15.7 )
+
+4.  Attribute Types
+
+   This section details a set of certificate and related attribute types
+   for use in LDAP.
+
+4.1.  userCertificate
+
+   The userCertificate attribute holds the X.509 certificates issued to
+   the user by one or more certificate authorities, as discussed in
+   clause 11.2.1 of [X.509].
+
+      ( 2.5.4.36 NAME 'userCertificate'
+           DESC 'X.509 user certificate'
+           EQUALITY certificateExactMatch
+           SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
+
+   As required by this attribute type's syntax, values of this attribute
+   are requested and transferred using the attribute description
+   "userCertificate;binary".
+
+4.2.  cACertificate
+
+   The cACertificate attribute holds the X.509 certificates issued to
+   the certificate authority (CA), as discussed in clause 11.2.2 of
+   [X.509].
+
+      ( 2.5.4.37 NAME 'cACertificate'
+           DESC 'X.509 CA certificate'
+           EQUALITY certificateExactMatch
+           SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
+
+   As required by this attribute type's syntax, values of this attribute
+   are requested and transferred using the attribute description
+   "cACertificate;binary".
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+4.3.  crossCertificatePair
+
+   The crossCertificatePair attribute holds an X.509 certificate pair,
+   as discussed in clause 11.2.3 of [X.509].
+
+      ( 2.5.4.40 NAME 'crossCertificatePair'
+           DESC 'X.509 cross certificate pair'
+           EQUALITY certificatePairExactMatch
+           SYNTAX 1.3.6.1.4.1.1466.115.121.1.10 )
+
+   As required by this attribute type's syntax, values of this attribute
+   are requested and transferred using the attribute description
+   "crossCertificatePair;binary".
+
+4.4.  certificateRevocationList
+
+   The certificateRevocationList attribute holds certificate lists, as
+   discussed in 11.2.4 of [X.509].
+
+      ( 2.5.4.39 NAME 'certificateRevocationList'
+           DESC 'X.509 certificate revocation list'
+           EQUALITY certificateListExactMatch
+           SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
+
+   As required by this attribute type's syntax, values of this attribute
+   are requested and transferred using the attribute description
+   "certificateRevocationList;binary".
+
+4.5.  authorityRevocationList
+
+   The authorityRevocationList attribute holds certificate lists, as
+   discussed in 11.2.5 of [X.509].
+
+      ( 2.5.4.38 NAME 'authorityRevocationList'
+           DESC 'X.509 authority revocation list'
+           EQUALITY certificateListExactMatch
+           SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
+
+   As required by this attribute type's syntax, values of this attribute
+   are requested and transferred using the attribute description
+   "authorityRevocationList;binary".
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 8]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+4.6.  deltaRevocationList
+
+   The deltaRevocationList attribute holds certificate lists, as
+   discussed in 11.2.6 of [X.509].
+
+      ( 2.5.4.53 NAME 'deltaRevocationList'
+           DESC 'X.509 delta revocation list'
+           EQUALITY certificateListExactMatch
+           SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
+
+   As required by this attribute type's syntax, values of this attribute
+   MUST be requested and transferred using the attribute description
+   "deltaRevocationList;binary".
+
+4.7.  supportedAlgorithms
+
+   The supportedAlgorithms attribute holds supported algorithms, as
+   discussed in 11.2.7 of [X.509].
+
+      ( 2.5.4.52 NAME 'supportedAlgorithms'
+           DESC 'X.509 supported algorithms'
+           EQUALITY algorithmIdentifierMatch
+           SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 )
+
+   As required by this attribute type's syntax, values of this attribute
+   MUST be requested and transferred using the attribute description
+   "supportedAlgorithms;binary".
+
+5.  Object Classes
+
+   This section details a set of certificate-related object classes for
+   use in LDAP.
+
+5.1.  pkiUser
+
+   This object class is used in augment entries for objects that may be
+   subject to certificates, as defined in clause 11.1.1 of [X.509].
+
+      ( 2.5.6.21 NAME 'pkiUser'
+           DESC 'X.509 PKI User'
+           SUP top AUXILIARY
+           MAY userCertificate )
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 9]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+5.2.  pkiCA
+
+   This object class is used to augment entries for objects that act as
+   certificate authorities, as defined in clause 11.1.2 of [X.509]
+
+      ( 2.5.6.22 NAME 'pkiCA'
+           DESC 'X.509 PKI Certificate Authority'
+           SUP top AUXILIARY
+           MAY ( cACertificate $ certificateRevocationList $
+                authorityRevocationList $ crossCertificatePair ) )
+
+5.3.  cRLDistributionPoint
+
+   This class is used to represent objects that act as CRL distribution
+   points, as discussed in clause 11.1.3 of [X.509].
+
+      ( 2.5.6.19 NAME 'cRLDistributionPoint'
+           DESC 'X.509 CRL distribution point'
+           SUP top STRUCTURAL
+           MUST cn
+           MAY ( certificateRevocationList $
+                authorityRevocationList $ deltaRevocationList ) )
+
+5.4.  deltaCRL
+
+   The deltaCRL object class is used to augment entries to hold delta
+   revocation lists, as discussed in clause 11.1.4 of [X.509].
+
+      ( 2.5.6.23 NAME 'deltaCRL'
+           DESC 'X.509 delta CRL'
+           SUP top AUXILIARY
+           MAY deltaRevocationList )
+
+5.5.  strongAuthenticationUser
+
+   This object class is used to augment entries for objects
+   participating in certificate-based authentication, as defined in
+   clause 6.15 of [X.521].  This object class is deprecated in favor of
+   pkiUser.
+
+      ( 2.5.6.15 NAME 'strongAuthenticationUser'
+           DESC 'X.521 strong authentication user'
+           SUP top AUXILIARY
+           MUST userCertificate )
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 10]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+5.6.  userSecurityInformation
+
+   This object class is used to augment entries with needed additional
+   associated security information, as defined in clause 6.16 of
+   [X.521].
+
+      ( 2.5.6.18 NAME 'userSecurityInformation'
+           DESC 'X.521 user security information'
+           SUP top AUXILIARY
+           MAY ( supportedAlgorithms ) )
+
+5.7.  certificationAuthority
+
+   This object class is used to augment entries for objects that act as
+   certificate authorities, as defined in clause 6.17 of [X.521].  This
+   object class is deprecated in favor of pkiCA.
+
+      ( 2.5.6.16 NAME 'certificationAuthority'
+           DESC 'X.509 certificate authority'
+           SUP top AUXILIARY
+           MUST ( authorityRevocationList $
+                certificateRevocationList $ cACertificate )
+           MAY crossCertificatePair )
+
+5.8.  certificationAuthority-V2
+
+   This object class is used to augment entries for objects that act as
+   certificate authorities, as defined in clause 6.18 of [X.521].  This
+   object class is deprecated in favor of pkiCA.
+
+      ( 2.5.6.16.2 NAME 'certificationAuthority-V2'
+           DESC 'X.509 certificate authority, version 2'
+           SUP certificationAuthority AUXILIARY
+           MAY deltaRevocationList )
+
+6.  Security Considerations
+
+   General certificate considerations [RFC3280] apply to LDAP-aware
+   certificate applications.  General LDAP security considerations
+   [RFC4510] apply as well.
+
+   While elements of certificate information are commonly signed, these
+   signatures only protect the integrity of the signed information.  In
+   the absence of data integrity protections in LDAP (or lower layer,
+   e.g., IPsec), a server is not assured that client certificate request
+   (or other request) was unaltered in transit.  Likewise, a client
+   cannot be assured that the results of the query were unaltered in
+
+
+
+
+Zeilenga                    Standards Track                    [Page 11]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+   transit.  Hence, it is generally recommended that implementations
+   make use of authentication and data integrity services in LDAP
+   [RFC4513][RFC4511].
+
+7.  IANA Considerations
+
+7.1.  Object Identifier Registration
+
+   The IANA has registered an LDAP Object Identifier [RFC4520] for use
+   in this technical specification.
+
+      Subject: Request for LDAP OID Registration
+      Person & email address to contact for further information:
+          Kurt Zeilenga <kurt at OpenLDAP.org>
+      Specification: RFC 4523
+      Author/Change Controller: IESG
+      Comments:
+          Identifies the LDAP X.509 Certificate schema elements
+           introduced in this document.
+
+7.2.  Descriptor Registration
+
+   The IANA has updated the LDAP
+   Descriptor registry [RFC44520] as indicated below.
+
+      Subject: Request for LDAP Descriptor Registration
+      Descriptor (short name): see table
+      Object Identifier: see table
+      Person & email address to contact for further information:
+          Kurt Zeilenga <kurt at OpenLDAP.org>
+      Usage: see table
+      Specification: RFC 4523
+      Author/Change Controller: IESG
+
+      algorithmIdentifierMatch     M 2.5.13.40
+      authorityRevocationList      A 2.5.4.38 *
+      cACertificate                A 2.5.4.37 *
+      cRLDistributionPoint         O 2.5.6.19 *
+      certificateExactMatch        M 2.5.13.34
+      certificateListExactMatch    M 2.5.13.38
+      certificateListMatch         M 2.5.13.39
+      certificateMatch             M 2.5.13.35
+      certificatePairExactMatch    M 2.5.13.36
+      certificatePairMatch         M 2.5.13.37
+      certificateRevocationList    A 2.5.4.39 *
+      certificationAuthority       O 2.5.6.16 *
+      certificationAuthority-V2    O 2.5.6.16.2 *
+      crossCertificatePair         A 2.5.4.40 *
+
+
+
+Zeilenga                    Standards Track                    [Page 12]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+      deltaCRL                     O 2.5.6.23 *
+      deltaRevocationList          A 2.5.4.53 *
+      pkiCA                        O 2.5.6.22 *
+      pkiUser                      O 2.5.6.21 *
+      strongAuthenticationUser     O 2.5.6.15 *
+      supportedAlgorithms          A 2.5.4.52 *
+      userCertificate              A 2.5.4.36 *
+      userSecurityInformation      O 2.5.6.18 *
+
+      * Updates previous registration
+
+8.  Acknowledgements
+
+   This document is based on X.509, a product of the ITU-T.  A number of
+   LDAP schema definitions were based on those found in RFCs 2252 and
+   2256, both products of the IETF ASID WG.  The ABNF productions in
+   Appendix A were provided by Steven Legg.  Additional material was
+   borrowed from prior works by David Chadwick and Steven Legg to refine
+   the LDAP X.509 schema.
+
+9.  References
+
+9.1.  Normative References
+
+   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
+              Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3641]  Legg, S., "Generic String Encoding Rules (GSER) for ASN.1
+              Types", RFC 3641, October 2003.
+
+   [RFC4510]  Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+              (LDAP): Technical Specification Road Map", RFC 4510, June
+              2006.
+
+   [RFC4512]  Zeilenga, K., "Lightweight Directory Access Protocol
+              (LDAP): Directory Information Models", RFC 4512, June
+              2006.
+
+   [RFC4522]  Legg, S., "Lightweight Directory Access Protocol (LDAP):
+              The Binary Encoding Option", RFC 4522, June 2006.
+
+   [X.509]    International Telecommunication Union - Telecommunication
+              Standardization Sector, "The Directory: Authentication
+              Framework", X.509(2000).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 13]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+   [X.521]    International Telecommunication Union - Telecommunication
+              Standardization Sector, "The Directory: Selected Object
+              Classes", X.521(2000).
+
+   [X.690]    International Telecommunication Union - Telecommunication
+              Standardization Sector, "Specification of ASN.1 encoding
+              rules: Basic Encoding Rules (BER), Canonical Encoding
+              Rules (CER), and Distinguished Encoding Rules (DER)",
+              X.690(2002) (also ISO/IEC 8825-1:2002).
+
+9.2.  Informative References
+
+   [RFC1777]  Yeong, W., Howes, T., and S. Kille, "Lightweight Directory
+              Access Protocol", RFC 1777, March 1995.
+
+   [RFC2156]  Kille, S., "MIXER (Mime Internet X.400 Enhanced Relay):
+              Mapping between X.400 and RFC 822/MIME", RFC 2156, January
+              1998.
+
+   [RFC3280]  Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
+              X.509 Public Key Infrastructure Certificate and
+              Certificate Revocation List (CRL) Profile", RFC 3280,
+              April 2002.
+
+   [RFC3494]  Zeilenga, K., "Lightweight Directory Access Protocol
+              version 2 (LDAPv2) to Historic Status", RFC 3494, March
+              2003.
+
+   [RFC3642]  Legg, S., "Common Elements of Generic String Encoding
+              Rules (GSER) Encodings", RFC 3642, October 2003.
+
+   [RFC4234]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
+              Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4511]  Sermersheim, J., Ed., "Lightweight Directory Access
+              Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4513]  Harrison, R. Ed., "Lightweight Directory Access Protocol
+              (LDAP): Authentication Methods and Security Mechanisms",
+              RFC 4513, June 2006.
+
+   [RFC4520]  Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
+              Considerations for the Lightweight Directory Access
+              Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 14]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+Appendix A.
+
+   This appendix is informative.
+
+   This appendix provides ABNF [RFC4234] grammars for GSER-based
+   [RFC3641] LDAP-specific encodings specified in this document.  These
+   grammars where produced using, and relying on, Common Elements for
+   GSER Encodings [RFC3642].
+
+A.1.  CertificateExactAssertion
+
+   CertificateExactAssertion = "{" sp cea-serialNumber ","
+        sp cea-issuer sp "}"
+
+   cea-serialNumber = id-serialNumber msp CertificateSerialNumber
+   cea-issuer = id-issuer msp Name
+
+   id-serialNumber =
+        %x73.65.72.69.61.6C.4E.75.6D.62.65.72 ; 'serialNumber'
+   id-issuer = %x69.73.73.75.65.72 ; 'issuer'
+
+   Name = id-rdnSequence ":" RDNSequence
+   id-rdnSequence = %x72.64.6E.53.65.71.75.65.6E.63.65 ; 'rdnSequence'
+
+   CertificateSerialNumber = INTEGER
+
+A.2.  CertificateAssertion
+
+CertificateAssertion = "{" [ sp ca-serialNumber ]
+     [ sep sp ca-issuer ]
+     [ sep sp ca-subjectKeyIdentifier ]
+     [ sep sp ca-authorityKeyIdentifier ]
+     [ sep sp ca-certificateValid ]
+     [ sep sp ca-privateKeyValid ]
+     [ sep sp ca-subjectPublicKeyAlgID ]
+     [ sep sp ca-keyUsage ]
+     [ sep sp ca-subjectAltName ]
+     [ sep sp ca-policy ]
+     [ sep sp ca-pathToName ]
+     [ sep sp ca-subject ]
+     [ sep sp ca-nameConstraints ] sp "}"
+
+ca-serialNumber = id-serialNumber msp CertificateSerialNumber
+ca-issuer = id-issuer msp Name
+ca-subjectKeyIdentifier = id-subjectKeyIdentifier msp
+     SubjectKeyIdentifier
+ca-authorityKeyIdentifier = id-authorityKeyIdentifier msp
+     AuthorityKeyIdentifier
+
+
+
+Zeilenga                    Standards Track                    [Page 15]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+ca-certificateValid = id-certificateValid msp Time
+ca-privateKeyValid = id-privateKeyValid msp GeneralizedTime
+ca-subjectPublicKeyAlgID = id-subjectPublicKeyAlgID msp
+     OBJECT-IDENTIFIER
+ca-keyUsage = id-keyUsage msp KeyUsage
+ca-subjectAltName = id-subjectAltName msp AltNameType
+ca-policy = id-policy msp CertPolicySet
+ca-pathToName = id-pathToName msp Name
+ca-subject = id-subject msp Name
+ca-nameConstraints = id-nameConstraints msp NameConstraintsSyntax
+
+id-subjectKeyIdentifier =
+     %x73.75.62.6A.65.63.74.4B.65.79.49.64.65.6E.74.69.66.69.65.72
+     ; 'subjectKeyIdentifier'
+id-authorityKeyIdentifier =
+     %x61.75.74.68.6F.72.69.74.79.4B.65.79.49.64.65.6E.74.69.66.69.65.72
+     ; 'authorityKeyIdentifier'
+id-certificateValid = %x63.65.72.74.69.66.69.63.61.74.65.56.61.6C.69.64
+     ; 'certificateValid'
+id-privateKeyValid = %x70.72.69.76.61.74.65.4B.65.79.56.61.6C.69.64
+     ; 'privateKeyValid'
+id-subjectPublicKeyAlgID  =
+     %x73.75.62.6A.65.63.74.50.75.62.6C.69.63.4B.65.79.41.6C.67.49.44
+     ; 'subjectPublicKeyAlgID'
+id-keyUsage = %x6B.65.79.55.73.61.67.65 ; 'keyUsage'
+id-subjectAltName = %x73.75.62.6A.65.63.74.41.6C.74.4E.61.6D.65
+     ; 'subjectAltName'
+id-policy = %x70.6F.6C.69.63.79 ; 'policy'
+id-pathToName = %x70.61.74.68.54.6F.4E.61.6D.65 ; 'pathToName'
+id-subject = %x73.75.62.6A.65.63.74 ; 'subject'
+id-nameConstraints = %x6E.61.6D.65.43.6F.6E.73.74.72.61.69.6E.74.73
+     ; 'nameConstraints'
+
+SubjectKeyIdentifier = KeyIdentifier
+
+KeyIdentifier = OCTET-STRING
+
+AuthorityKeyIdentifier = "{" [ sp aki-keyIdentifier ]
+     [ sep sp aki-authorityCertIssuer ]
+     [ sep sp aki-authorityCertSerialNumber ] sp "}"
+
+aki-keyIdentifier = id-keyIdentifier msp KeyIdentifier
+aki-authorityCertIssuer = id-authorityCertIssuer msp GeneralNames
+
+GeneralNames = "{" sp GeneralName *( "," sp GeneralName ) sp "}"
+GeneralName  = gn-otherName
+     / gn-rfc822Name
+     / gn-dNSName
+
+
+
+Zeilenga                    Standards Track                    [Page 16]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+     / gn-x400Address
+     / gn-directoryName
+     / gn-ediPartyName
+     / gn-uniformResourceIdentifier
+     / gn-iPAddress
+     / gn-registeredID
+
+gn-otherName = id-otherName ":" OtherName
+gn-rfc822Name = id-rfc822Name ":" IA5String
+gn-dNSName = id-dNSName ":" IA5String
+gn-x400Address = id-x400Address ":" ORAddress
+gn-directoryName = id-directoryName ":" Name
+gn-ediPartyName = id-ediPartyName ":" EDIPartyName
+gn-iPAddress = id-iPAddress ":" OCTET-STRING
+gn-registeredID = gn-id-registeredID ":" OBJECT-IDENTIFIER
+
+gn-uniformResourceIdentifier = id-uniformResourceIdentifier
+     ":" IA5String
+
+id-otherName = %x6F.74.68.65.72.4E.61.6D.65 ; 'otherName'
+gn-id-registeredID = %x72.65.67.69.73.74.65.72.65.64.49.44
+     ; 'registeredID'
+
+OtherName = "{" sp on-type-id "," sp on-value sp "}"
+on-type-id = id-type-id msp OBJECT-IDENTIFIER
+on-value = id-value msp Value
+     ;; <Value> as defined in Section 3 of [RFC3641]
+
+id-type-id = %x74.79.70.65.2D.69.64 ; 'type-id'
+id-value = %x76.61.6C.75.65 ; 'value'
+
+ORAddress = dquote *SafeIA5Character dquote
+SafeIA5Character = %x01-21 / %x23-7F / ; ASCII minus dquote
+     dquote dquote ; escaped double quote
+dquote = %x22 ; '"' (double quote)
+
+;; Note: The <ORAddress> rule encodes the x400Address component
+;; of a GeneralName as a character string between double quotes.
+;; The character string is first derived according to Section 4.1
+;; of [RFC2156], and then any embedded double quotes are escaped
+;; by being repeated. This resulting string is output between
+;; double quotes.
+
+EDIPartyName = "{" [ sp nameAssigner "," ] sp partyName sp "}"
+nameAssigner = id-nameAssigner msp DirectoryString
+partyName = id-partyName msp DirectoryString
+id-nameAssigner = %x6E.61.6D.65.41.73.73.69.67.6E.65.72
+     ; 'nameAssigner'
+
+
+
+Zeilenga                    Standards Track                    [Page 17]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+id-partyName    = %x70.61.72.74.79.4E.61.6D.65 ; 'partyName'
+
+aki-authorityCertSerialNumber = id-authorityCertSerialNumber
+     msp CertificateSerialNumber
+
+id-keyIdentifier = %x6B.65.79.49.64.65.6E.74.69.66.69.65.72
+     ; 'keyIdentifier'
+id-authorityCertIssuer =
+     %x61.75.74.68.6F.72.69.74.79.43.65.72.74.49.73.73.75.65.72
+     ; 'authorityCertIssuer'
+
+id-authorityCertSerialNumber = %x61.75.74.68.6F.72.69.74.79.43
+     %x65.72.74.53.65.72.69.61.6C.4E.75.6D.62.65.72
+     ; 'authorityCertSerialNumber'
+
+Time = time-utcTime / time-generalizedTime
+time-utcTime = id-utcTime ":" UTCTime
+time-generalizedTime = id-generalizedTime ":" GeneralizedTime
+id-utcTime = %x75.74.63.54.69.6D.65 ; 'utcTime'
+id-generalizedTime = %x67.65.6E.65.72.61.6C.69.7A.65.64.54.69.6D.65
+     ; 'generalizedTime'
+
+KeyUsage = BIT-STRING / key-usage-bit-list
+key-usage-bit-list = "{" [ sp key-usage *( "," sp key-usage ) ] sp "}"
+
+;; Note: The <key-usage-bit-list> rule encodes the one bits in
+;; a KeyUsage value as a comma separated list of identifiers.
+
+key-usage = id-digitalSignature
+     / id-nonRepudiation
+     / id-keyEncipherment
+     / id-dataEncipherment
+     / id-keyAgreement
+     / id-keyCertSign
+     / id-cRLSign
+     / id-encipherOnly
+     / id-decipherOnly
+
+id-digitalSignature = %x64.69.67.69.74.61.6C.53.69.67.6E.61.74
+     %x75.72.65 ; 'digitalSignature'
+id-nonRepudiation   = %x6E.6F.6E.52.65.70.75.64.69.61.74.69.6F.6E
+     ; 'nonRepudiation'
+id-keyEncipherment  = %x6B.65.79.45.6E.63.69.70.68.65.72.6D.65.6E.74
+     ; 'keyEncipherment'
+id-dataEncipherment = %x64.61.74.61.45.6E.63.69.70.68.65.72.6D.65.6E
+     %x74 ; "dataEncipherment'
+id-keyAgreement     = %x6B.65.79.41.67.72.65.65.6D.65.6E.74
+     ; 'keyAgreement'
+
+
+
+Zeilenga                    Standards Track                    [Page 18]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+id-keyCertSign      = %x6B.65.79.43.65.72.74.53.69.67.6E
+     ; 'keyCertSign'
+id-cRLSign          = %x63.52.4C.53.69.67.6E ; "cRLSign"
+id-encipherOnly     = %x65.6E.63.69.70.68.65.72.4F.6E.6C.79
+     ; 'encipherOnly'
+id-decipherOnly     = %x64.65.63.69.70.68.65.72.4F.6E.6C.79
+     ; 'decipherOnly'
+
+AltNameType = ant-builtinNameForm / ant-otherNameForm
+
+ant-builtinNameForm = id-builtinNameForm ":" BuiltinNameForm
+ant-otherNameForm = id-otherNameForm ":" OBJECT-IDENTIFIER
+
+id-builtinNameForm = %x62.75.69.6C.74.69.6E.4E.61.6D.65.46.6F.72.6D
+     ; 'builtinNameForm'
+id-otherNameForm   = %x6F.74.68.65.72.4E.61.6D.65.46.6F.72.6D
+     ; 'otherNameForm'
+
+BuiltinNameForm  = id-rfc822Name
+     / id-dNSName
+     / id-x400Address
+     / id-directoryName
+     / id-ediPartyName
+     / id-uniformResourceIdentifier
+     / id-iPAddress
+     / id-registeredId
+
+id-rfc822Name = %x72.66.63.38.32.32.4E.61.6D.65 ; 'rfc822Name'
+id-dNSName = %x64.4E.53.4E.61.6D.65 ; 'dNSName'
+id-x400Address  = %x78.34.30.30.41.64.64.72.65.73.73 ; 'x400Address'
+id-directoryName = %x64.69.72.65.63.74.6F.72.79.4E.61.6D.65
+     ; 'directoryName'
+id-ediPartyName  = %x65.64.69.50.61.72.74.79.4E.61.6D.65
+     ; 'ediPartyName'
+id-iPAddress = %x69.50.41.64.64.72.65.73.73 ; 'iPAddress'
+id-registeredId = %x72.65.67.69.73.74.65.72.65.64.49.64
+     ; 'registeredId'
+
+id-uniformResourceIdentifier = %x75.6E.69.66.6F.72.6D.52.65.73.6F.75
+     %x72.63.65.49.64.65.6E.74.69.66.69.65.72
+     ; 'uniformResourceIdentifier'
+
+CertPolicySet = "{" sp CertPolicyId *( "," sp CertPolicyId ) sp "}"
+CertPolicyId = OBJECT-IDENTIFIER
+
+NameConstraintsSyntax = "{" [ sp ncs-permittedSubtrees ]
+     [ sep sp ncs-excludedSubtrees ] sp "}"
+
+
+
+
+Zeilenga                    Standards Track                    [Page 19]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+ncs-permittedSubtrees = id-permittedSubtrees msp GeneralSubtrees
+ncs-excludedSubtrees = id-excludedSubtrees  msp GeneralSubtrees
+
+id-permittedSubtrees =
+     %x70.65.72.6D.69.74.74.65.64.53.75.62.74.72.65.65.73
+     ; 'permittedSubtrees'
+id-excludedSubtrees =
+     %x65.78.63.6C.75.64.65.64.53.75.62.74.72.65.65.73
+     ; 'excludedSubtrees'
+
+GeneralSubtrees = "{" sp GeneralSubtree
+     *( "," sp GeneralSubtree ) sp "}"
+GeneralSubtree  = "{" sp gs-base
+     [ "," sp gs-minimum ]
+     [ "," sp gs-maximum ] sp "}"
+
+gs-base = id-base msp GeneralName
+gs-minimum = id-minimum msp BaseDistance
+gs-maximum = id-maximum msp BaseDistance
+
+id-base = %x62.61.73.65 ; 'base'
+id-minimum = %x6D.69.6E.69.6D.75.6D ; 'minimum'
+id-maximum = %x6D.61.78.69.6D.75.6D ; 'maximum'
+
+BaseDistance = INTEGER-0-MAX
+
+A.3.  CertificatePairExactAssertion
+
+  CertificatePairExactAssertion = "{" [ sp cpea-issuedTo ]
+       [sep sp cpea-issuedBy ] sp "}"
+  ;; At least one of <cpea-issuedTo> or <cpea-issuedBy> MUST be present.
+
+  cpea-issuedTo = id-issuedToThisCAAssertion msp
+       CertificateExactAssertion
+  cpea-issuedBy = id-issuedByThisCAAssertion msp
+       CertificateExactAssertion
+
+  id-issuedToThisCAAssertion = %x69.73.73.75.65.64.54.6F.54.68.69.73
+       %x43.41.41.73.73.65.72.74.69.6F.6E ; 'issuedToThisCAAssertion'
+  id-issuedByThisCAAssertion = %x69.73.73.75.65.64.42.79.54.68.69.73
+       %x43.41.41.73.73.65.72.74.69.6F.6E ; 'issuedByThisCAAssertion'
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 20]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+A.4.  CertificatePairAssertion
+
+   CertificatePairAssertion = "{" [ sp cpa-issuedTo ]
+        [sep sp cpa-issuedBy ] sp "}"
+   ;; At least one of <cpa-issuedTo> and <cpa-issuedBy> MUST be present.
+
+   cpa-issuedTo = id-issuedToThisCAAssertion msp CertificateAssertion
+   cpa-issuedBy = id-issuedByThisCAAssertion msp CertificateAssertion
+
+A.5.  CertificateListExactAssertion
+
+   CertificateListExactAssertion = "{" sp clea-issuer ","
+        sp clea-thisUpdate
+        [ "," sp clea-distributionPoint ] sp "}"
+
+   clea-issuer = id-issuer msp Name
+   clea-thisUpdate = id-thisUpdate msp Time
+   clea-distributionPoint = id-distributionPoint msp
+        DistributionPointName
+
+   id-thisUpdate = %x74.68.69.73.55.70.64.61.74.65 ; 'thisUpdate'
+   id-distributionPoint =
+        %x64.69.73.74.72.69.62.75.74.69.6F.6E.50.6F.69.6E.74
+        ; 'distributionPoint'
+
+   DistributionPointName = dpn-fullName / dpn-nameRelativeToCRLIssuer
+
+   dpn-fullName = id-fullName ":" GeneralNames
+   dpn-nameRelativeToCRLIssuer = id-nameRelativeToCRLIssuer ":"
+        RelativeDistinguishedName
+
+   id-fullName = %x66.75.6C.6C.4E.61.6D.65 ; 'fullName'
+   id-nameRelativeToCRLIssuer = %x6E.61.6D.65.52.65.6C.61.74.69.76.65
+        %x54.6F.43.52.4C.49.73.73.75.65.72 ; 'nameRelativeToCRLIssuer'
+
+A.6.  CertificateListAssertion
+
+   CertificateListAssertion = "{" [ sp cla-issuer ]
+        [ sep sp cla-minCRLNumber ]
+        [ sep sp cla-maxCRLNumber ]
+        [ sep sp cla-reasonFlags ]
+        [ sep sp cla-dateAndTime ]
+        [ sep sp cla-distributionPoint ]
+        [ sep sp cla-authorityKeyIdentifier ] sp "}"
+
+   cla-issuer = id-issuer msp Name
+   cla-minCRLNumber = id-minCRLNumber msp CRLNumber
+   cla-maxCRLNumber = id-maxCRLNumber msp CRLNumber
+
+
+
+Zeilenga                    Standards Track                    [Page 21]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+   cla-reasonFlags = id-reasonFlags msp ReasonFlags
+   cla-dateAndTime = id-dateAndTime msp Time
+
+   cla-distributionPoint = id-distributionPoint msp
+        DistributionPointName
+
+   cla-authorityKeyIdentifier = id-authorityKeyIdentifier msp
+        AuthorityKeyIdentifier
+
+   id-minCRLNumber = %x6D.69.6E.43.52.4C.4E.75.6D.62.65.72
+        ; 'minCRLNumber'
+   id-maxCRLNumber = %x6D.61.78.43.52.4C.4E.75.6D.62.65.72
+        ; 'maxCRLNumber'
+   id-reasonFlags = %x72.65.61.73.6F.6E.46.6C.61.67.73 ; 'reasonFlags'
+   id-dateAndTime = %x64.61.74.65.41.6E.64.54.69.6D.65 ; 'dateAndTime'
+
+   CRLNumber = INTEGER-0-MAX
+
+   ReasonFlags = BIT-STRING
+        / "{" [ sp reason-flag *( "," sp reason-flag ) ] sp "}"
+
+   reason-flag = id-unused
+        / id-keyCompromise
+        / id-cACompromise
+        / id-affiliationChanged
+        / id-superseded
+        / id-cessationOfOperation
+        / id-certificateHold
+        / id-privilegeWithdrawn
+        / id-aACompromise
+
+   id-unused = %x75.6E.75.73.65.64 ; 'unused'
+   id-keyCompromise = %x6B.65.79.43.6F.6D.70.72.6F.6D.69.73.65
+        ; 'keyCompromise'
+   id-cACompromise = %x63.41.43.6F.6D.70.72.6F.6D.69.73.65
+        ; 'cACompromise'
+   id-affiliationChanged =
+        %x61.66.66.69.6C.69.61.74.69.6F.6E.43.68.61.6E.67.65.64
+        ; 'affiliationChanged'
+   id-superseded = %x73.75.70.65.72.73.65.64.65.64 ; 'superseded'
+   id-cessationOfOperation =
+        %x63.65.73.73.61.74.69.6F.6E.4F.66.4F.70.65.72.61.74.69.6F.6E
+        ; 'cessationOfOperation'
+   id-certificateHold = %x63.65.72.74.69.66.69.63.61.74.65.48.6F.6C.64
+        ; 'certificateHold'
+   id-privilegeWithdrawn =
+        %x70.72.69.76.69.6C.65.67.65.57.69.74.68.64.72.61.77.6E
+        ; 'privilegeWithdrawn'
+
+
+
+Zeilenga                    Standards Track                    [Page 22]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+   id-aACompromise = %x61.41.43.6F.6D.70.72.6F.6D.69.73.65
+        ; 'aACompromise'
+
+A.7.  AlgorithmIdentifier
+
+   AlgorithmIdentifier = "{" sp ai-algorithm
+        [ "," sp ai-parameters ] sp "}"
+
+   ai-algorithm = id-algorithm msp OBJECT-IDENTIFIER
+   ai-parameters = id-parameters msp Value
+   id-algorithm = %x61.6C.67.6F.72.69.74.68.6D ; 'algorithm'
+   id-parameters = %x70.61.72.61.6D.65.74.65.72.73 ; 'parameters'
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 23]
+
+RFC 4523                   LDAP X.509 Schema                   June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 24]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4524.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4524.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4524.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4524.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,1403 @@
+
+
+
+
+
+
+Network Working Group                                   K. Zeilenga, Ed.
+Request for Comments: 4524                           OpenLDAP Foundation
+Obsoletes: 1274                                                June 2006
+Updates: 2247, 2798
+Category: Standards Track
+
+
+                        COSINE LDAP/X.500 Schema
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document provides a collection of schema elements for use with
+   the Lightweight Directory Access Protocol (LDAP) from the COSINE and
+   Internet X.500 pilot projects.
+
+   This document obsoletes RFC 1274 and updates RFCs 2247 and 2798.
+
+Table of Contents
+
+   1. Introduction ....................................................3
+      1.1. Relationship to Other Documents ............................3
+      1.2. Terminology and Conventions ................................4
+   2. COSINE Attribute Types ..........................................4
+      2.1. associatedDomain ...........................................4
+      2.2. associatedName .............................................5
+      2.3. buildingName ...............................................5
+      2.4. co .........................................................5
+      2.5. documentAuthor .............................................6
+      2.6. documentIdentifier .........................................6
+      2.7. documentLocation ...........................................6
+      2.8. documentPublisher ..........................................7
+      2.9. documentTitle ..............................................7
+      2.10. documentVersion ...........................................7
+      2.11. drink .....................................................8
+      2.12. homePhone .................................................8
+      2.13. homePostalAddress .........................................8
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+      2.14. host ......................................................9
+      2.15. info ......................................................9
+      2.16. mail ......................................................9
+      2.17. manager ..................................................10
+      2.18. mobile ...................................................10
+      2.19. organizationalStatus .....................................11
+      2.20. pager ....................................................11
+      2.21. personalTitle ............................................11
+      2.22. roomNumber ...............................................12
+      2.23. secretary ................................................12
+      2.24. uniqueIdentifier .........................................12
+      2.25. userClass ................................................13
+   3. COSINE Object Classes ..........................................13
+      3.1. account ...................................................13
+      3.2. document ..................................................14
+      3.3. documentSeries ............................................14
+      3.4. domain ....................................................15
+      3.5. domainRelatedObject .......................................16
+      3.6. friendlyCountry ...........................................16
+      3.7. rFC822LocalPart ...........................................17
+      3.8. room ......................................................18
+      3.9. simpleSecurityObject ......................................18
+   4. Security Considerations ........................................18
+   5. IANA Considerations ............................................19
+   6. Acknowledgements ...............................................20
+   7. References .....................................................20
+      7.1. Normative References ......................................20
+      7.2. Informative References ....................................21
+   Appendix A.  Changes since RFC 1274 ...............................23
+      A.1.  LDAP Short Names .........................................23
+      A.2.  pilotObject ..............................................23
+      A.3.  pilotPerson ..............................................23
+      A.4.  dNSDomain ................................................24
+      A.5.  pilotDSA and qualityLabelledData .........................24
+      A.6.  Attribute Syntaxes .......................................24
+   Appendix B.  Changes since RFC 2247 ...............................24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+1.  Introduction
+
+   In the late 1980s, X.500 Directory Services were standardized by the
+   CCITT (Commite' Consultatif International de Telegraphique et
+   Telephonique), now a part of the ITU (International Telephone Union).
+   This lead to Directory Service piloting activities in the early
+   1990s, including the COSINE (Co-operation and Open Systems
+   Interconnection in Europe) PARADISE Project pilot [COSINEpilot] in
+   Europe.  Motivated by needs for large-scale directory pilots, RFC
+   1274 was published to standardize the directory schema and naming
+   architecture for use in the COSINE and other Internet X.500 pilots
+   [RFC1274].
+
+   In the years that followed, X.500 Directory Services have evolved to
+   incorporate new capabilities and even new protocols.  In particular,
+   the Lightweight Directory Access Protocol (LDAP) [RFC4510] was
+   introduced in the early 1990s [RFC1487], with Version 3 of LDAP
+   introduced in the late 1990s [RFC2251] and subsequently revised in
+   2005 [RFC4510].
+
+   While much of the material in RFC 1274 has been superceded by
+   subsequently published ITU-T Recommendations and IETF RFCs, many of
+   the schema elements lack standardized schema descriptions for use in
+   modern X.500 and LDAP directory services despite the fact that these
+   schema elements are in wide use today.  As the old schema
+   descriptions cannot be used without adaptation, interoperability
+   issues may arise due to lack of standardized modern schema
+   descriptions.
+
+   This document addresses these issues by offering standardized schema
+   descriptions, where needed, for widely used COSINE schema elements.
+
+1.1.  Relationship to Other Documents
+
+   This document, together with [RFC4519] and [RFC4517], obsoletes RFC
+   1274 in its entirety.  [RFC4519] replaces Sections 9.3.1 (Userid) and
+   9.3.21 (Domain Component) of RFC 1274.  [RFC4517] replaces Section
+   9.4 (Generally useful syntaxes) of RFC 1274.
+
+   This document replaces the remainder of RFC 1274.  Appendix A
+   discusses changes since RFC 1274, as well as why certain schema
+   elements were not brought forward in this revision of the COSINE
+   schema.  All elements not brought are to be regarded as Historic.
+
+   The description of the 'domain' object class provided in this
+   document supercedes that found in RFC 2247.  That is, Section 3.4 of
+   this document replaces Section 5.2 of [RFC2247].
+
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   Some of the schema elements specified here were described in RFC 2798
+   (inetOrgPerson schema).  This document supersedes these descriptions.
+   This document, together with [RFC4519], replaces Section 9.1.3 of RFC
+   2798.
+
+1.2.  Terminology and Conventions
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+   DIT stands for Directory Information Tree.
+   DN stands for Distinguished Name.
+   DSA stands for Directory System Agent, a server.
+   DSE stands for DSA-Specific Entry.
+   DUA stands for Directory User Agent, a client.
+
+   These terms are discussed in [RFC4512].
+
+   Schema definitions are provided using LDAP description formats
+   [RFC4512].  Definitions provided here are formatted (line wrapped)
+   for readability.
+
+2.  COSINE Attribute Types
+
+   This section details COSINE attribute types for use in LDAP.
+
+2.1.  associatedDomain
+
+   The 'associatedDomain' attribute specifies DNS [RFC1034][RFC2181]
+   host names [RFC1123] that are associated with an object.   That is,
+   values of this attribute should conform to the following ABNF:
+
+    domain = root / label *( DOT label )
+    root   = SPACE
+    label  = LETDIG [ *61( LETDIG / HYPHEN ) LETDIG ]
+    LETDIG = %x30-39 / %x41-5A / %x61-7A ; "0" - "9" / "A"-"Z" / "a"-"z"
+    SPACE  = %x20                        ; space (" ")
+    HYPHEN = %x2D                        ; hyphen ("-")
+    DOT    = %x2E                        ; period (".")
+
+   For example, the entry in the DIT with a DN <DC=example,DC=com> might
+   have an associated domain of "example.com".
+
+      ( 0.9.2342.19200300.100.1.37 NAME 'associatedDomain'
+        EQUALITY caseIgnoreIA5Match
+        SUBSTR caseIgnoreIA5SubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   The IA5String (1.3.6.1.4.1.1466.115.121.1.26) syntax and the
+   'caseIgnoreIA5Match' and 'caseIgnoreIA5SubstringsMatch' rules are
+   described in [RFC4517].
+
+   Note that the directory will not ensure that values of this attribute
+   conform to the <domain> production provided above.  It is the
+   application's responsibility to ensure that domains it stores in this
+   attribute are appropriately represented.
+
+   Also note that applications supporting Internationalized Domain Names
+   SHALL use the ToASCII method [RFC3490] to produce <label> components
+   of the <domain> production.
+
+2.2.  associatedName
+
+   The 'associatedName' attribute specifies names of entries in the
+   organizational DIT associated with a DNS domain [RFC1034][RFC2181].
+
+      ( 0.9.2342.19200300.100.1.38 NAME 'associatedName'
+        EQUALITY distinguishedNameMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+
+   The DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) syntax and the
+   'distinguishedNameMatch' rule are described in [RFC4517].
+
+2.3.  buildingName
+
+   The 'buildingName' attribute specifies names of the buildings where
+   an organization or organizational unit is based, for example, "The
+   White House".
+
+      ( 0.9.2342.19200300.100.1.48 NAME 'buildingName'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.4.  co
+
+   The 'co' (Friendly Country Name) attribute specifies names of
+   countries in human-readable format, for example, "Germany" and
+   "Federal Republic of Germany".  It is commonly used in conjunction
+   with the 'c' (Country Name) [RFC4519] attribute (whose values are
+   restricted to the two-letter codes defined in [ISO3166]).
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+      ( 0.9.2342.19200300.100.1.43 NAME 'co'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.5.  documentAuthor
+
+   The 'documentAuthor' attribute specifies the distinguished names of
+   authors (or editors) of a document.  For example,
+
+      ( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor'
+        EQUALITY distinguishedNameMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+
+   The DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) syntax and the
+   'distinguishedNameMatch' rule are described in [RFC4517].
+
+2.6.  documentIdentifier
+
+   The 'documentIdentifier' attribute specifies unique identifiers for a
+   document.  A document may be identified by more than one unique
+   identifier.  For example, RFC 3383 and BCP 64 are unique identifiers
+   that (presently) refer to the same document.
+
+      ( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.7.  documentLocation
+
+   The 'documentLocation' attribute specifies locations of the document
+   original.
+
+      ( 0.9.2342.19200300.100.1.15 NAME 'documentLocation'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.8.  documentPublisher
+
+   The 'documentPublisher' attribute is the persons and/or organizations
+   that published the document.  Documents that are jointly published
+   have one value for each publisher.
+
+      ( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.9.  documentTitle
+
+   The 'documentTitle' attribute specifies the titles of a document.
+   Multiple values are allowed to accommodate both long and short
+   titles, or other situations where a document has multiple titles, for
+   example, "The Lightweight Directory Access Protocol Technical
+   Specification" and "The LDAP Technical Specification".
+
+      ( 0.9.2342.19200300.100.1.12 NAME 'documentTitle'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.10.  documentVersion
+
+   The 'documentVersion' attribute specifies the version information of
+   a document.
+
+      ( 0.9.2342.19200300.100.1.13 NAME 'documentVersion'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.11.  drink
+
+   The 'drink' (favoriteDrink) attribute specifies the favorite drinks
+   of an object (or person), for instance, "cola" and "beer".
+
+      ( 0.9.2342.19200300.100.1.5 NAME 'drink'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.12.  homePhone
+
+   The 'homePhone' (Home Telephone Number) attribute specifies home
+   telephone numbers (e.g., "+1 775 555 1234") associated with a person.
+
+      ( 0.9.2342.19200300.100.1.20 NAME 'homePhone'
+        EQUALITY telephoneNumberMatch
+        SUBSTR telephoneNumberSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
+
+   The telephoneNumber (1.3.6.1.4.1.1466.115.121.1.50) syntax and the
+   'telephoneNumberMatch' and 'telephoneNumberSubstringsMatch' rules are
+   described in [RFC4517].
+
+2.13.  homePostalAddress
+
+   The 'homePostalAddress' attribute specifies home postal addresses for
+   an object.  Each value should be limited to up to 6 directory strings
+   of 30 characters each.  (Note: It is not intended that the directory
+   service enforce these limits.)
+
+      ( 0.9.2342.19200300.100.1.39 NAME 'homePostalAddress'
+        EQUALITY caseIgnoreListMatch
+        SUBSTR caseIgnoreListSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
+
+   The PostalAddress (1.3.6.1.4.1.1466.115.121.1.41) syntax and the
+   'caseIgnoreListMatch' and 'caseIgnoreListSubstringsMatch' rules are
+   described in [RFC4517].
+
+
+
+
+Zeilenga                    Standards Track                     [Page 8]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+2.14.  host
+
+   The 'host' attribute specifies host computers, generally by their
+   primary fully qualified domain name (e.g., my-host.example.com).
+
+      ( 0.9.2342.19200300.100.1.9 NAME 'host'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.15.  info
+
+   The 'info' attribute specifies any general information pertinent to
+   an object.  This information is not necessarily descriptive of the
+   object.
+
+   Applications should not attach specific semantics to values of this
+   attribute.  The 'description' attribute [RFC4519] is available for
+   specifying descriptive information pertinent to an object.
+
+      ( 0.9.2342.19200300.100.1.4 NAME 'info'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.16.  mail
+
+   The 'mail' (rfc822mailbox) attribute type holds Internet mail
+   addresses in Mailbox [RFC2821] form (e.g., user at example.com).
+
+      ( 0.9.2342.19200300.100.1.3 NAME 'mail'
+        EQUALITY caseIgnoreIA5Match
+        SUBSTR caseIgnoreIA5SubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+
+   The IA5String (1.3.6.1.4.1.1466.115.121.1.26) syntax and the
+   'caseIgnoreIA5Match' and 'caseIgnoreIA5SubstringsMatch' rules are
+   described in [RFC4517].
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 9]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   Note that the directory will not ensure that values of this attribute
+   conform to the <Mailbox> production [RFC2821].  It is the
+   application's responsibility to ensure that domains it stores in this
+   attribute are appropriately represented.
+
+   Additionally, the directory will compare values per the matching
+   rules named in the above attribute type description.  As these rules
+   differ from rules that normally apply to <Mailbox> comparisons,
+   operational issues may arise.  For example, the assertion
+   (mail=joe at example.com) will match "JOE at example.com" even though the
+   <local-parts> differ.  Also, where a user has two <Mailbox>es whose
+   addresses differ only by case of the <local-part>, both cannot be
+   listed as values of the user's mail attribute (as they are considered
+   equal by the 'caseIgnoreIA5Match' rule).
+
+   Also note that applications supporting internationalized domain names
+   SHALL use the ToASCII method [RFC3490] to produce <sub-domain>
+   components of the <Mailbox> production.
+
+2.17.  manager
+
+   The 'manager' attribute specifies managers, by distinguished name, of
+   the person (or entity).
+
+      ( 0.9.2342.19200300.100.1.10 NAME 'manager'
+        EQUALITY distinguishedNameMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+
+   The DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) syntax and the
+   'distinguishedNameMatch' rule are described in [RFC4517].
+
+2.18.  mobile
+
+   The 'mobile' (mobileTelephoneNumber) attribute specifies mobile
+   telephone numbers (e.g., "+1 775 555 6789") associated with a person
+   (or entity).
+
+      ( 0.9.2342.19200300.100.1.41 NAME 'mobile'
+        EQUALITY telephoneNumberMatch
+        SUBSTR telephoneNumberSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
+
+   The telephoneNumber (1.3.6.1.4.1.1466.115.121.1.50) syntax and the
+   'telephoneNumberMatch' and 'telephoneNumberSubstringsMatch' rules are
+   described in [RFC4517].
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 10]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+2.19.  organizationalStatus
+
+   The 'organizationalStatus' attribute specifies categories by which a
+   person is often referred to in an organization.  Examples of usage in
+   academia might include "undergraduate student", "researcher",
+   "professor", and "staff".  Multiple values are allowed where the
+   person is in multiple categories.
+
+   Directory administrators and application designers SHOULD consider
+   carefully the distinctions between this and the 'title' and
+   'userClass' attributes.
+
+      ( 0.9.2342.19200300.100.1.45 NAME 'organizationalStatus'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.20.  pager
+
+   The 'pager' (pagerTelephoneNumber) attribute specifies pager
+   telephone numbers (e.g., "+1 775 555 5555") for an object.
+
+      ( 0.9.2342.19200300.100.1.42 NAME 'pager'
+        EQUALITY telephoneNumberMatch
+        SUBSTR telephoneNumberSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
+
+   The telephoneNumber (1.3.6.1.4.1.1466.115.121.1.50) syntax and the
+   'telephoneNumberMatch' and 'telephoneNumberSubstringsMatch' rules are
+   described in [RFC4517].
+
+2.21.  personalTitle
+
+   The 'personalTitle' attribute specifies personal titles for a person.
+   Examples of personal titles are "Frau", "Dr.", "Herr", and
+   "Professor".
+
+      ( 0.9.2342.19200300.100.1.40 NAME 'personalTitle'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 11]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.22.  roomNumber
+
+   The 'roomNumber' attribute specifies the room number of an object.
+   During periods of renumbering, or in other circumstances where a room
+   has multiple valid room numbers associated with it, multiple values
+   may be provided.  Note that the 'cn' (commonName) attribute type
+   SHOULD be used for naming room objects.
+
+      ( 0.9.2342.19200300.100.1.6 NAME 'roomNumber'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+2.23.  secretary
+
+   The 'secretary' attribute specifies secretaries and/or administrative
+   assistants, by distinguished name.
+
+      ( 0.9.2342.19200300.100.1.21 NAME 'secretary'
+        EQUALITY distinguishedNameMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
+
+   The DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) syntax and the
+   'distinguishedNameMatch' rule are described in [RFC4517].
+
+2.24.  uniqueIdentifier
+
+   The 'uniqueIdentifier' attribute specifies a unique identifier for an
+   object represented in the Directory.  The domain within which the
+   identifier is unique and the exact semantics of the identifier are
+   for local definition.  For a person, this might be an institution-
+   wide payroll number.  For an organizational unit, it might be a
+   department code.
+
+      ( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 12]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+   Note: X.520 also describes an attribute called 'uniqueIdentifier'
+         (2.5.4.45), which is called 'x500UniqueIdentifier' in LDAP
+         [RFC4519].  The attribute detailed here ought not be confused
+         with 'x500UniqueIdentifier'.
+
+2.25.  userClass
+
+   The 'userClass' attribute specifies categories of computer or
+   application user.  The semantics placed on this attribute are for
+   local interpretation.  Examples of current usage of this attribute in
+   academia are "student", "staff", and "faculty".  Note that the
+   'organizationalStatus' attribute type is now often preferred, as it
+   makes no distinction between persons as opposed to users.
+
+      ( 0.9.2342.19200300.100.1.8 NAME 'userClass'
+        EQUALITY caseIgnoreMatch
+        SUBSTR caseIgnoreSubstringsMatch
+        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+   The DirectoryString (1.3.6.1.4.1.1466.115.121.1.15) syntax and the
+   'caseIgnoreMatch' and 'caseIgnoreSubstringsMatch' rules are described
+   in [RFC4517].
+
+3.  COSINE Object Classes
+
+   This section details COSINE object classes for use in LDAP.
+
+3.1.  account
+
+   The 'account' object class is used to define entries representing
+   computer accounts.  The 'uid' attribute SHOULD be used for naming
+   entries of this object class.
+
+      ( 0.9.2342.19200300.100.4.5 NAME 'account'
+        SUP top STRUCTURAL
+        MUST uid
+        MAY ( description $ seeAlso $ l $ o $ ou $ host ) )
+
+   The 'top' object class is described in [RFC4512].  The 'description',
+   'seeAlso', 'l', 'o', 'ou', and 'uid' attribute types are described in
+   [RFC4519].  The 'host' attribute type is described in Section 2 of
+   this document.
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 13]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   3.3.  documentSeriesExample:
+
+      dn: uid=kdz,cn=Accounts,dc=Example,dc=COM
+      objectClass: account
+      uid: kdz
+      seeAlso: cn=Kurt D. Zeilenga,cn=Persons,dc=Example,dc=COM
+
+3.2.  document
+
+   The 'document' object class is used to define entries that represent
+   documents.
+
+      ( 0.9.2342.19200300.100.4.6 NAME 'document'
+        SUP top STRUCTURAL
+        MUST documentIdentifier
+        MAY ( cn $ description $ seeAlso $ l $ o $ ou $
+          documentTitle $ documentVersion $ documentAuthor $
+          documentLocation $ documentPublisher ) )
+
+   The 'top' object class is described in [RFC4512].  The 'cn',
+   'description', 'seeAlso', 'l', 'o', and 'ou' attribute types are
+   described in [RFC4519].  The 'documentIdentifier', 'documentTitle',
+   'documentVersion', 'documentAuthor', 'documentLocation', and
+   'documentPublisher' attribute types are described in Section 2 of
+   this document.
+
+   Example:
+
+      dn: documentIdentifier=RFC 4524,cn=RFC,dc=Example,dc=COM
+      objectClass: document
+      documentIdentifier: RFC 4524
+      documentTitle: COSINE LDAP/X.500 Schema
+      documentAuthor: cn=Kurt D. Zeilenga,cn=Persons,dc=Example,dc=COM
+      documentLocation: http://www.rfc-editor.org/rfc/rfc4524.txt
+      documentPublisher: Internet Engineering Task Force
+      description: A collection of schema elements for use in LDAP
+      description: Obsoletes RFC 1274
+      seeAlso: documentIdentifier=RFC 4510,cn=RFC,dc=Example,dc=COM
+      seeAlso: documentIdentifier=RFC 1274,cn=RFC,dc=Example,dc=COM
+
+3.3.  documentSeries
+
+   The 'documentSeries' object class is used to define an entry that
+   represents a series of documents (e.g., The Request For Comments
+   memos).
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 14]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+      ( 0.9.2342.19200300.100.4.9 NAME 'documentSeries'
+        SUP top STRUCTURAL
+        MUST cn
+        MAY ( description $ l $ o $ ou $ seeAlso $
+          telephonenumber ) )
+
+   The 'top' object class is described in [RFC4512].  The 'description',
+   'l', 'o', 'ou', 'seeAlso', and 'telephoneNumber' attribute types are
+   described in [RFC4519].
+
+   Example:
+
+      dn: cn=RFC,dc=Example,dc=COM
+      objectClass: documentSeries
+      cn: Request for Comments
+      cn: RFC
+      description: a series of memos about the Internet
+
+3.4.  domain
+
+   The 'domain' object class is used to define entries that represent
+   DNS domains for objects that are not organizations, organizational
+   units, or other kinds of objects more appropriately defined using an
+   object class specific to the kind of object being defined (e.g.,
+   'organization', 'organizationUnit').
+
+   The 'dc' attribute should be used for naming entries of the 'domain'
+   object class.
+
+      ( 0.9.2342.19200300.100.4.13 NAME 'domain'
+        SUP top STRUCTURAL
+        MUST dc
+        MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
+          x121Address $ registeredAddress $ destinationIndicator $
+          preferredDeliveryMethod $ telexNumber $
+          teletexTerminalIdentifier $ telephoneNumber $
+          internationaliSDNNumber $ facsimileTelephoneNumber $ street $
+          postOfficeBox $ postalCode $ postalAddress $
+          physicalDeliveryOfficeName $ st $ l $ description $ o $
+          associatedName ) )
+
+   The 'top' object class and the 'dc', 'userPassword', 'searchGuide',
+   'seeAlso', 'businessCategory', 'x121Address', 'registeredAddress',
+   'destinationIndicator', 'preferredDeliveryMethod', 'telexNumber',
+   'teletexTerminalIdentifier', 'telephoneNumber',
+   'internationaliSDNNumber', 'facsimileTelephoneNumber', 'street',
+   'postOfficeBox', 'postalCode', 'postalAddress',
+   'physicalDeliveryOfficeName', 'st', 'l', 'description', and 'o' types
+
+
+
+Zeilenga                    Standards Track                    [Page 15]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   are described in [RFC4519].  The 'associatedName' attribute type is
+   described in Section 2 of this document.
+
+   Example:
+
+      dn: dc=com
+      objectClass: domain
+      dc: com
+      description: the .COM TLD
+
+3.5.  domainRelatedObject
+
+   The 'domainRelatedObject' object class is used to define entries that
+   represent DNS domains that are "equivalent" to an X.500 domain, e.g.,
+   an organization or organizational unit.
+
+      ( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject'
+        SUP top AUXILIARY
+        MUST associatedDomain )
+
+   The 'top' object class is described in [RFC4512].  The
+   'associatedDomain' attribute type is described in Section 2 of this
+   document.
+
+   Example:
+
+      dn: dc=example,dc=com
+      objectClass: organization
+      objectClass: dcObject
+      objectClass: domainRelatedObject
+      dc: example
+      associatedDomain: example.com
+      o: Example Organization
+
+   The 'organization' and 'dcObject' object classes and the 'dc' and 'o'
+   attribute types are described in [RFC4519].
+
+3.6.  friendlyCountry
+
+   The 'friendlyCountry' object class is used to define entries
+   representing countries in the DIT.  The object class is used to allow
+   friendlier naming of countries than that allowed by the object class
+   'country' [RFC4519].
+
+      ( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry'
+        SUP country STRUCTURAL
+        MUST co )
+
+
+
+
+Zeilenga                    Standards Track                    [Page 16]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   The 'country' object class is described in [RFC4519].  The 'co'
+   attribute type is described in Section 2 of this document.
+
+   Example:
+
+      dn: c=DE
+      objectClass: country
+      objectClass: friendlyCountry
+      c: DE
+      co: Deutschland
+      co: Germany
+      co: Federal Republic of Germany
+      co: FRG
+
+   The 'c' attribute type is described in [RFC4519].
+
+3.7.  rFC822LocalPart
+
+   The 'rFC822LocalPart' object class is used to define entries that
+   represent the local part of Internet mail addresses [RFC2822].  This
+   treats the local part of the address as a 'domain' object.
+
+      ( 0.9.2342.19200300.100.4.14 NAME 'rFC822localPart'
+        SUP domain STRUCTURAL
+        MAY ( cn $ description $ destinationIndicator $
+          facsimileTelephoneNumber $ internationaliSDNNumber $
+          physicalDeliveryOfficeName $ postalAddress $ postalCode $
+          postOfficeBox $ preferredDeliveryMethod $ registeredAddress $
+          seeAlso $ sn $ street $ telephoneNumber $
+          teletexTerminalIdentifier $ telexNumber $ x121Address ) )
+
+   The 'domain' object class is described in Section 3.4 of this
+   document.  The 'cn', 'description', 'destinationIndicator',
+   'facsimileTelephoneNumber', 'internationaliSDNNumber,
+   'physicalDeliveryOfficeName', 'postalAddress', 'postalCode',
+   'postOfficeBox', 'preferredDeliveryMethod', 'registeredAddress',
+   'seeAlso', 'sn, 'street', 'telephoneNumber',
+   'teletexTerminalIdentifier', 'telexNumber', and 'x121Address'
+   attribute types are described in [RFC4519].
+
+   Example:
+
+      dn: dc=kdz,dc=example,dc=com
+      objectClass: domain
+      objectClass: rFC822LocalPart
+      dc: kdz
+      associatedName: cn=Kurt D. Zeilenga,cn=Persons,dc=Example,dc=COM
+
+
+
+
+Zeilenga                    Standards Track                    [Page 17]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   The 'dc' attribute type is described in [RFC4519].
+
+3.8.  room
+
+   The 'room' object class is used to define entries representing rooms.
+   The 'cn' (commonName) attribute SHOULD be used for naming entries of
+   this object class.
+
+      ( 0.9.2342.19200300.100.4.7 NAME 'room'
+        SUP top STRUCTURAL
+        MUST cn
+        MAY ( roomNumber $ description $ seeAlso $ telephoneNumber ) )
+
+   The 'top' object class is described in [RFC4512].  The 'cn',
+   'description', 'seeAlso', and 'telephoneNumber' attribute types are
+   described in [RFC4519].  The 'roomNumber' attribute type is described
+   in Section 2 of this document.
+
+      dn: cn=conference room,dc=example,dc=com
+      objectClass: room
+      cn: conference room
+      telephoneNumber: +1 755 555 1111
+
+3.9.  simpleSecurityObject
+
+   The 'simpleSecurityObject' object class is used to require an entry
+   to have a 'userPassword' attribute when the entry's structural object
+   class does not require (or allow) the 'userPassword attribute'.
+
+      ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject'
+        SUP top AUXILIARY
+        MUST userPassword )
+
+   The 'top' object class is described in [RFC4512].  The 'userPassword'
+   attribute type is described in [RFC4519].
+
+      dn: dc=kdz,dc=Example,dc=COM
+      objectClass: account
+      objectClass: simpleSecurityObject
+      uid: kdz
+      userPassword: My Password
+      seeAlso: cn=Kurt D. Zeilenga,cn=Persons,dc=Example,dc=COM
+
+4.  Security Considerations
+
+   General LDAP security considerations [RFC4510] are applicable to the
+   use of this schema.  Additional considerations are noted above where
+   appropriate.
+
+
+
+Zeilenga                    Standards Track                    [Page 18]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   Directories administrators should ensure that access to sensitive
+   information be restricted to authorized entities and that appropriate
+   data security services, including data integrity and data
+   confidentiality, are used to protect against eavesdropping.
+
+   Simple authentication (e.g., plain text passwords) mechanisms should
+   only be used when adequate data security services are in place.  LDAP
+   offers reasonably strong authentication and data security services
+   [RFC4513].
+
+5.  IANA Considerations
+
+   The Internet Assigned Numbers Authority (IANA) has updated the LDAP
+   descriptors registry [RFC4520] as indicated in the following
+   template:
+
+      Subject: Request for LDAP Descriptor Registration Update
+      Descriptor (short name): see comment
+      Object Identifier: see comments
+      Person & email address to contact for further information:
+          Kurt Zeilenga <kurt at OpenLDAP.org>
+      Usage: see comments
+      Specification: RFC 4524
+      Author/Change Controller: IESG
+      Comments:
+
+      The following descriptors have been updated to refer to RFC 4524.
+
+        NAME                           Type OID
+        ------------------------       ---- --------------------------
+        account                        O    0.9.2342.19200300.100.4.5
+        associatedDomain               A    0.9.2342.19200300.100.1.37
+        associatedName                 A    0.9.2342.19200300.100.1.38
+        buildingName                   A    0.9.2342.19200300.100.1.48
+        co                             A    0.9.2342.19200300.100.1.43
+        document                       O    0.9.2342.19200300.100.4.6
+        documentAuthor                 A    0.9.2342.19200300.100.1.14
+        documentIdentifier             A    0.9.2342.19200300.100.1.11
+        documentLocation               A    0.9.2342.19200300.100.1.15
+        documentPublisher              A    0.9.2342.19200300.100.1.56
+        documentSeries                 O    0.9.2342.19200300.100.4.8
+        documentTitle                  A    0.9.2342.19200300.100.1.12
+        documentVersion                A    0.9.2342.19200300.100.1.13
+        domain                         O    0.9.2342.19200300.100.4.13
+        domainRelatedObject            O    0.9.2342.19200300.100.4.17
+        drink                          A    0.9.2342.19200300.100.1.5
+        favouriteDrink                 A*   0.9.2342.19200300.100.1.5
+        friendlyCountry                O    0.9.2342.19200300.100.4.18
+
+
+
+Zeilenga                    Standards Track                    [Page 19]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+        friendlyCountryName            A*   0.9.2342.19200300.100.1.43
+        homePhone                      A    0.9.2342.19200300.100.1.20
+        homePostalAddress              A    0.9.2342.19200300.100.1.39
+        homeTelephone                  A*   0.9.2342.19200300.100.1.20
+        host                           A    0.9.2342.19200300.100.1.9
+        info                           A    0.9.2342.19200300.100.1.4
+        mail                           A    0.9.2342.19200300.100.1.3
+        manager                        A    0.9.2342.19200300.100.1.10
+        mobile                         A    0.9.2342.19200300.100.1.41
+        mobileTelephoneNumber          A*   0.9.2342.19200300.100.1.41
+        organizationalStatus           A    0.9.2342.19200300.100.1.45
+        pager                          A    0.9.2342.19200300.100.1.42
+        pagerTelephoneNumber           A*   0.9.2342.19200300.100.1.42
+        personalTitle                  A    0.9.2342.19200300.100.1.40
+        rFC822LocalPart                O    0.9.2342.19200300.100.4.14
+        rfc822Mailbox                  A*   0.9.2342.19200300.100.1.3
+        room                           O    0.9.2342.19200300.100.4.7
+        roomNumber                     A    0.9.2342.19200300.100.1.6
+        secretary                      A    0.9.2342.19200300.100.1.21
+        simpleSecurityObject           O    0.9.2342.19200300.100.4.19
+        singleLevelQuality             A    0.9.2342.19200300.100.1.50
+        uniqueIdentifier               A    0.9.2342.19200300.100.1.44
+        userClass                      A    0.9.2342.19200300.100.1.8
+
+      where Type A is Attribute, Type O is ObjectClass, and *
+      indicates that the registration is historic in nature.
+
+6.  Acknowledgements
+
+   This document is based on RFC 1274, by Paul Barker and Steve Kille,
+   as well as on RFC 2247, by Steve Kill, Mark Wahl, Al Grimstad, Rick
+   Huber, and Sri Satulari.
+
+7.  References
+
+7.1.  Normative References
+
+   [RFC1034]     Mockapetris, P., "Domain names - concepts and
+                 facilities", STD 13, RFC 1034, November 1987.
+
+   [RFC1123]     Braden, R., "Requirements for Internet Hosts -
+                 Application and Support", STD 3, RFC 1123, October
+                 1989.
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 20]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   [RFC2181]     Elz, R. and R. Bush, "Clarifications to the DNS
+                 Specification", RFC 2181, July 1997.
+
+   [RFC2247]     Kille, S., Wahl, M., Grimstad, A., Huber, R., and S.
+                 Sataluri, "Using Domains in LDAP/X.500 Distinguished
+                 Names", RFC 2247, January 1998.
+
+   [RFC2821]     Klensin, J., Ed., "Simple Mail Transfer Protocol", RFC
+                 2821, April 2001.
+
+   [RFC2822]     Resnick, P., "Internet Message Format", RFC 2822, April
+                 2001.
+
+   [RFC3490]     Faltstrom, P., Hoffman, P., and A. Costello,
+                 "Internationalizing Domain Names in Applications
+                 (IDNA)", RFC 3490, March 2003.
+
+   [RFC4510]     Zeilenga, K., Ed.,  "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4512]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Directory Information Models", RFC 4512, June
+                 2006.
+
+   [RFC4513]     Harrison, R., "Lightweight Directory Access Protocol
+                 (LDAP): Authentication Methods and Security
+                 Mechanisms", RFC 4513, June 2006.
+
+   [RFC4517]     Legg, S., Ed., "Lightweight Directory Access Protocol
+                 (LDAP): Syntaxes and Matching Rules", RC 4517, June
+                 2006.
+
+   [RFC4519]     Sciberras, A., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Schema for User Applications", RFC
+                 4519, June 2006.
+
+   [X.501]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Models," X.501(1993) (also ISO/IEC 9594-
+                 2:1994).
+
+7.2.  Informative References
+
+   [COSINEpilot] Goodman, D., "PARADISE" section of the March 1991
+                 INTERNET MONTHLY REPORTS (p. 28-29),
+                 http://www.iana.org/periodic-reports/imr-mar91.txt
+
+
+
+
+Zeilenga                    Standards Track                    [Page 21]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+   [ISO3166]     International Organization for Standardization, "Codes
+                 for the representation of names of countries", ISO
+                 3166.
+
+   [RFC1274]     Barker, P. and S. Kille, "The COSINE and Internet X.500
+                 Schema", RFC 1274, November 1991.
+
+   [RFC1279]     Hardcastle-Kille, S., "X.500 and Domains", RFC 1279,
+                 November 1991.
+
+   [RFC1487]     Yeong, W., Howes, T., and S. Kille, "X.500 Lightweight
+                 Directory Access Protocol", RFC 1487, July 1993.
+
+   [RFC2251]     Wahl, M., Howes, T., and S. Kille, "Lightweight
+                 Directory Access Protocol (v3)", RFC 2251, December
+                 1997.
+
+   [RFC2798]     Smith, M., "Definition of the inetOrgPerson LDAP Object
+                 Class", RFC 2798, April 2000.
+
+   [RFC3494]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 version 2 (LDAPv2) to Historic Status", RFC 3494, March
+                 2003.
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 22]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+Appendix A.  Changes since RFC 1274
+
+   This document represents a substantial rewrite of RFC 1274.  The
+   following sections summarize the substantive changes.
+
+A.1.  LDAP Short Names
+
+   A number of COSINE attribute types have short names in LDAP.
+
+      X.500 Name              LDAP Short Name
+      -------------           ---------------
+      domainComponent         dc
+      favoriteDrink           drink
+      friendCountryName       co
+      homeTelephoneNumber     homePhone
+      mobileTelephoneNumber   mobile
+      pagerTelephoneNumber    pager
+      rfc822Mailbox           mail
+      userid                  uid
+
+   While the LDAP short names are generally used in LDAP, some
+   implementations may (for legacy reasons [RFC3494]) recognize the
+   attribute type by its X.500 name.  Hence, the X.500 names have been
+   reserved solely for this purpose.
+
+   Note: 'uid' and 'dc' are described in [RFC4519].
+
+A.2.  pilotObject
+
+   The 'pilotObject' object class was not brought forward as its
+   function is largely replaced by operational attributes introduced in
+   X.500(93) [X.501] and version 3 of LDAP [RFC4512].  For instance, the
+   function of the 'lastModifiedBy' and 'lastModifiedTime' attribute
+   types is now served by the 'creatorsName', 'createTimestamp',
+   'modifiersName', and 'modifyTimestamp' operational attributes
+   [RFC4512].
+
+A.3.  pilotPerson
+
+   The 'pilotPerson' object class was not brought forward as its
+   function is largely replaced by the 'organizationalPerson' [RFC4512]
+   object class and its subclasses, such as 'inetOrgPerson' [RFC2798].
+
+   Most of the related attribute types (e.g., 'mail', 'manager') were
+   brought forward as they are used in other object classes.
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 23]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+A.4.  dNSDomain
+
+   The 'dNSDomain' object class and related attribute types were not
+   brought forward as its use is primarily experimental [RFC1279].
+
+A.5.  pilotDSA and qualityLabelledData
+
+   The 'pilotDSA' and 'qualityLabelledData' object classes, as well as
+   related attribute types, were not brought forward as its use is
+   primarily experimental [QoS].
+
+A.6.  Attribute Syntaxes
+
+   RFC 1274 defined and used caseIgnoreIA5StringSyntax attribute syntax.
+   This has been replaced with the IA5String syntax and appropriate
+   matching rules in 'mail' and 'associatedDomain'.
+
+   RFC 1274 restricted 'mail' to have non-zero length values.  This
+   restriction is not reflected in the IA5String syntax used in the
+   definitions provided in this specification.  However, as values are
+   to conform to the <Mailbox> production, the 'mail' should not contain
+   zero-length values.  Unfortunately, the directory service will not
+   enforce this restriction.
+
+Appendix B.  Changes since RFC 2247
+
+   The 'domainNameForm' name form was not brought forward as
+   specification of name forms used in LDAP is left to a future
+   specification.
+
+Editor's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 24]
+
+RFC 4524                COSINE LDAP/X.500 Schema               June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                    [Page 25]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4525.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4525.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4525.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4525.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4525                           OpenLDAP Foundation
+Category: Informational                                        June 2006
+
+
+              Lightweight Directory Access Protocol (LDAP)
+                       Modify-Increment Extension
+
+
+Status of This Memo
+
+   This memo provides information for the Internet community.  It does
+   not specify an Internet standard of any kind.  Distribution of this
+   memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document describes an extension to the Lightweight Directory
+   Access Protocol (LDAP) Modify operation to support an increment
+   capability.  This extension is useful in provisioning applications,
+   especially when combined with the assertion control and/or the pre-
+   read or post-read control extension.
+
+Table of Contents
+
+   1. Background and Intended Use .....................................1
+   2. The Modify-Increment Extension ..................................2
+   3. LDIF Support ....................................................2
+   4. Security Considerations .........................................3
+   5. IANA Considerations .............................................3
+      5.1. Object Identifier ..........................................3
+      5.2. LDAP Protocol Mechanism ....................................3
+      5.3. LDAP Protocol Mechanism ....................................4
+   6. References ......................................................4
+      6.1. Normative References .......................................4
+      6.2. Informative References .....................................5
+
+1.  Background and Intended Use
+
+   The Lightweight Directory Access Protocol (LDAP) [RFC4510] does not
+   currently provide an operation to increment values of an attribute.
+   A client must read the values of the attribute and then modify those
+   values to increment them by the desired amount.  As the values may be
+   updated by other clients between this add and modify, the client must
+
+
+
+Zeilenga                     Informational                      [Page 1]
+
+RFC 4525            LDAP Modify-Increment Extension            June 2006
+
+
+   be careful to construct the modify request so that it fails in this
+   case, and upon failure, to re-read the values and construct a new
+   modify request.
+
+   This document extends the LDAP Modify Operation [RFC4511] to support
+   an increment values capability.  This feature is intended to be used
+   with either the LDAP pre-read or post-read control extensions
+   [RFC4527].  This feature may also be used with the LDAP assertion
+   control extension [RFC4528] to provide test-and-increment
+   functionality.
+
+   In this document key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
+   "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
+   "OPTIONAL" are to be interpreted as described in BCP 14 [RFC2119].
+
+2.  The Modify-Increment Extension
+
+   This document extends the LDAP Modify request to support a increment
+   values capability.  Implementations of this extension SHALL support
+   an additional ModifyRequest operation enumeration value increment
+   (3), as described herein.  Implementations not supporting this
+   extension will treat this value as they would an unlisted value,
+   e.g., as a protocol error.
+
+   The increment (3) operation value specifies that an increment values
+   modification is requested.  All existing values of the modification
+   attribute are to be incremented by the listed value.  The
+   modification attribute must be appropriate for the request (e.g., it
+   must have INTEGER or other increment-able values), and the
+   modification must provide one and only one value.  If the attribute
+   is not appropriate for the request, a constraintViolation or other
+   appropriate error is to be returned.  If multiple values are
+   provided, a protocolError is to be returned.
+
+   Servers supporting this feature SHOULD publish the object identifier
+   (OID) 1.3.6.1.1.14  as a value of the 'supportedFeatures' [RFC4512]
+   attribute in the root DSE.  Clients supporting this feature SHOULD
+   NOT use the feature unless they know the server supports it.
+
+3. LDIF Support
+
+   To represent Modify-Increment requests in LDAP Data Interchange
+   Format [RFC2849], the ABNF [RFC4234] production <mod-spec> is
+   extended as follows:
+
+       mod-spec =/ "increment:" FILL AttributeDescription SEP
+            attrval-spec "-" SEP
+
+
+
+
+Zeilenga                     Informational                      [Page 2]
+
+RFC 4525            LDAP Modify-Increment Extension            June 2006
+
+
+   For example,
+
+       # Increment uidNumber
+       dn: cn=max-assigned uidNumber,dc=example,dc=com
+       changetype: modify
+       increment: uidNumber
+       uidNumber: 1
+       -
+
+   This LDIF fragment represents a Modify request to increment the
+   value(s) of uidNumber by 1.
+
+4.  Security Considerations
+
+   General LDAP security considerations [RFC4510], as well as those
+   specific to the LDAP Modify [RFC4511], apply to this Modify-Increment
+   extension.  Beyond these considerations, it is noted that
+   introduction of this extension should reduce application complexity
+   (by providing one operation for what presently requires multiple
+   operations) and, hence, it may aid in the production of correct and
+   secure implementations.
+
+5.  IANA Considerations
+
+   Registration of the following values [RFC4520] have been completed.
+
+5.1.  Object Identifier
+
+   The IANA has assigned an LDAP Object Identifier to identify the LDAP
+   Modify-Increment feature, as defined in this document.
+
+       Subject: Request for LDAP Object Identifier Registration
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at OpenLDAP.org>
+       Specification: RFC 4525
+       Author/Change Controller: Author
+       Comments:
+           Identifies the LDAP Modify-Increment feature
+
+5.2.  LDAP Protocol Mechanism
+
+   The following LDAP Protocol Mechanism has been registered.
+
+       Subject: Request for LDAP Protocol Mechanism Registration
+       Object Identifier: 1.3.6.1.1.14
+       Description: Modify-Increment
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at openldap.org>
+
+
+
+Zeilenga                     Informational                      [Page 3]
+
+RFC 4525            LDAP Modify-Increment Extension            June 2006
+
+
+       Usage: Feature
+       Specification: RFC 4525
+       Author/Change Controller: Kurt Zeilenga <kurt at openldap.org>
+       Comments: none
+
+5.3.  LDAP Protocol Mechanism
+
+   The IANA has assigned an LDAP ModifyRequest Operation Type (3)
+   [RFC4520] for use in this document.
+
+       Subject: Request for LDAP Protocol Mechanism Registration
+       ModifyRequest Operation Name: increment
+       Description: Modify-Increment
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at openldap.org>
+       Usage: Feature
+       Specification: RFC 4525
+       Author/Change Controller: Kurt Zeilenga <kurt at openldap.org>
+       Comments: none
+
+6.  References
+
+6.1.  Normative References
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC4234]     Crocker, D. and P. Overell, "Augmented BNF for Syntax
+                 Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC2849]     Good, G., "The LDAP Data Interchange Format (LDIF) -
+                 Technical Specification", RFC 2849, June 2000.
+
+   [RFC4510]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Directory Information Models", RFC 4512, June
+                 2006.
+
+
+
+
+
+
+
+
+Zeilenga                     Informational                      [Page 4]
+
+RFC 4525            LDAP Modify-Increment Extension            June 2006
+
+
+6.2.  Informative References
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [RFC4527]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP) Read Entry Controls", RFC 4527, June 2006.
+
+   [RFC4528]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP) Assertion Control", RFC 4528, June 2006.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                     Informational                      [Page 5]
+
+RFC 4525            LDAP Modify-Increment Extension            June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                     Informational                      [Page 6]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4526.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4526.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4526.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4526.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,283 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4526                           OpenLDAP Foundation
+Category: Standards Track                                      June 2006
+
+
+              Lightweight Directory Access Protocol (LDAP)
+                    Absolute True and False Filters
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document extends the Lightweight Directory Access Protocol
+   (LDAP) to support absolute True and False filters based upon similar
+   capabilities found in X.500 directory systems.  The document also
+   extends the String Representation of LDAP Search Filters to support
+   these filters.
+
+Table of Contents
+
+   1. Background ......................................................1
+   2. Absolute True and False Filters .................................2
+   3. Security Considerations .........................................2
+   4. IANA Considerations .............................................3
+   5. References ......................................................3
+      5.1. Normative References .......................................3
+      5.2. Informative References .....................................3
+
+1.  Background
+
+   The X.500 Directory Access Protocol (DAP) [X.511] supports absolute
+   True and False assertions.  An 'and' filter with zero elements always
+   evaluates to True.  An 'or' filter with zero elements always
+   evaluates to False.  These filters are commonly used when requesting
+   DSA-specific Entries (DSEs) that do not necessarily have
+   'objectClass' attributes; that is, where "(objectClass=*)" may
+   evaluate to False.
+
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4526          LDAP Absolute True and False Filters         June 2006
+
+
+   Although LDAPv2 [RFC1777][RFC3494] placed no restriction on the
+   number of elements in 'and' and 'or' filter sets, the LDAPv2 string
+   representation [RFC1960][RFC3494] could not represent empty 'and' and
+   'or' filter sets.  Due to this, absolute True or False filters were
+   (unfortunately) eliminated from LDAPv3 [RFC4510].
+
+   This documents extends LDAPv3 to support absolute True and False
+   assertions by allowing empty 'and' and 'or' in Search filters
+   [RFC4511] and extends the filter string representation [RFC4515] to
+   allow empty filter lists.
+
+   It is noted that certain search operations, such as those used to
+   retrieve subschema information [RFC4512], require use of particular
+   filters.  This document does not change these requirements.
+
+   This feature is intended to allow a more direct mapping between DAP
+   and LDAP (as needed to implement DAP-to-LDAP gateways).
+
+   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
+   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
+   and "OPTIONAL" are to be interpreted as described in BCP 14
+   [RFC2119].
+
+2.  Absolute True and False Filters
+
+   Implementations of this extension SHALL allow 'and' and 'or' choices
+   with zero filter elements.
+
+   An 'and' filter consisting of an empty set of filters SHALL evaluate
+   to True.  This filter is represented by the string "(&)".
+
+   An 'or' filter consisting of an empty set of filters SHALL evaluate
+   to False.  This filter is represented by the string "(|)".
+
+   Servers supporting this feature SHOULD publish the Object Identifier
+   1.3.6.1.4.1.4203.1.5.3 as a value of the 'supportedFeatures'
+   [RFC4512] attribute in the root DSE.
+
+   Clients supporting this feature SHOULD NOT use the feature unless
+   they know that the server supports it.
+
+3.  Security Considerations
+
+   The (re)introduction of absolute True and False filters is not
+   believed to raise any new security considerations.
+
+   Implementors of this (or any) LDAPv3 extension should be familiar
+   with general LDAPv3 security considerations [RFC4510].
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4526          LDAP Absolute True and False Filters         June 2006
+
+
+4.  IANA Considerations
+
+   Registration of this feature has been completed by the IANA
+   [RFC4520].
+
+   Subject: Request for LDAP Protocol Mechanism Registration Object
+   Identifier: 1.3.6.1.4.1.4203.1.5.3 Description: True/False filters
+   Person & email address to contact for further information:
+        Kurt Zeilenga <kurt at openldap.org> Usage: Feature Specification:
+   RFC 4526 Author/Change Controller: IESG Comments: none
+
+   This OID was assigned [ASSIGN] by OpenLDAP Foundation, under its
+   IANA-assigned private enterprise allocation [PRIVATE], for use in
+   this specification.
+
+5.  References
+
+5.1.  Normative References
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC4510]     Zeilenga, K., Ed, "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Directory Information Models", RFC 4512, June
+                 2006.
+
+   [RFC4515]     Smith, M., Ed. and T. Howes, "Lightweight Directory
+                 Access Protocol (LDAP): String Representation of Search
+                 Filters", RFC 4515, June 2006.
+
+5.2.  Informative References
+
+   [RFC1777]     Yeong, W., Howes, T., and S. Kille, "Lightweight
+                 Directory Access Protocol", RFC 1777, March 1995.
+
+   [RFC1960]     Howes, T., "A String Representation of LDAP Search
+                 Filters", RFC 1960, June 1996.
+
+   [RFC3494]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 version 2 (LDAPv2) to Historic Status", RFC 3494, March
+                 2003.
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4526          LDAP Absolute True and False Filters         June 2006
+
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [X.500]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Overview of concepts, models and
+                 services," X.500(1993) (also ISO/IEC 9594-1:1994).
+
+   [X.501]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Models," X.501(1993) (also ISO/IEC 9594-
+                 2:1994).
+
+   [X.511]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory: Abstract Service Definition", X.511(1993)
+                 (also ISO/IEC 9594-3:1993).
+
+   [ASSIGN]      OpenLDAP Foundation, "OpenLDAP OID Delegations",
+                 http://www.openldap.org/foundation/oid-delegate.txt.
+
+   [PRIVATE]     IANA, "Private Enterprise Numbers",
+                 http://www.iana.org/assignments/enterprise-numbers.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4526          LDAP Absolute True and False Filters         June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4527.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4527.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4527.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4527.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,451 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4527                           OpenLDAP Foundation
+Category: Standards Track                                      June 2006
+
+
+              Lightweight Directory Access Protocol (LDAP)
+                          Read Entry Controls
+
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document specifies an extension to the Lightweight Directory
+   Access Protocol (LDAP) to allow the client to read the target entry
+   of an update operation.  The client may request to read the entry
+   before and/or after the modifications are applied.  These reads are
+   done as an atomic part of the update operation.
+
+Table of Contents
+
+   1. Background and Intent of Use ....................................2
+   2. Terminology .....................................................2
+   3. Read Entry Controls .............................................3
+      3.1. The Pre-Read Controls ......................................3
+      3.2. The Post-Read Controls .....................................3
+   4. Interaction with Other Controls .................................4
+   5. Security Considerations .........................................4
+   6. IANA Considerations .............................................5
+      6.1. Object Identifier ..........................................5
+      6.2. LDAP Protocol Mechanisms ...................................5
+   7. Acknowledgement .................................................5
+   8. References ......................................................6
+      8.1. Normative References .......................................6
+      8.2. Informative References .....................................7
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4527                LDAP Read Entry Controls               June 2006
+
+
+1.  Background and Intent of Use
+
+   This document specifies an extension to the Lightweight Directory
+   Access Protocol (LDAP) [RFC4510] to allow the client to read the
+   target entry of an update operation (e.g., Add, Delete, Modify,
+   ModifyDN).  The extension utilizes controls [RFC4511] attached to
+   update requests to request and return copies of the target entry.
+   One request control, called the Pre-Read request control, indicates
+   that a copy of the entry before application of update is to be
+   returned.  Another control, called the Post-Read request control,
+   indicates that a copy of the entry after application of the update is
+   to be returned.  Each request control has a corresponding response
+   control used to return the entry.
+
+   To ensure proper isolation, the controls are processed as an atomic
+   part of the update operation.
+
+   The functionality offered by these controls is based upon similar
+   functionality in the X.500 Directory Access Protocol (DAP) [X.511].
+
+   The Pre-Read controls may be used to obtain replaced or deleted
+   values of modified attributes or a copy of the entry being deleted.
+
+   The Post-Read controls may be used to obtain values of operational
+   attributes, such as the 'entryUUID' [RFC4530] and 'modifyTimestamp'
+   [RFC4512] attributes, updated by the server as part of the update
+   operation.
+
+2. Terminology
+
+   Protocol elements are described using ASN.1 [X.680] with implicit
+   tags.  The term "BER-encoded" means the element is to be encoded
+   using the Basic Encoding Rules [X.690] under the restrictions
+   detailed in Section 5.1 of [RFC4511].
+
+   DN stands for Distinguished Name.
+   DSA stands for Directory System Agent (i.e., a directory server).
+   DSE stands for DSA-specific Entry.
+
+   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
+   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
+   and "OPTIONAL" are to be interpreted as described in BCP 14
+   [RFC2119].
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4527                LDAP Read Entry Controls               June 2006
+
+
+3.  Read Entry Controls
+
+3.1.  The Pre-Read Controls
+
+   The Pre-Read request and response controls are identified by the
+   1.3.6.1.1.13.1 object identifier.  Servers implementing these
+   controls SHOULD publish 1.3.6.1.1.13.1 as a value of the
+   'supportedControl' [RFC4512] in their root DSE.
+
+   The Pre-Read request control is a LDAP Control [RFC4511] whose
+   controlType is 1.3.6.1.1.13.1 and whose controlValue is a BER-encoded
+   AttributeSelection [RFC4511], as extended by [RFC3673].  The
+   criticality may be TRUE or FALSE.  This control is appropriate for
+   the modifyRequest, delRequest, and modDNRequest LDAP messages.
+
+   The corresponding response control is a LDAP Control whose
+   controlType is 1.3.6.1.1.13.1 and whose the controlValue, an OCTET
+   STRING, contains a BER-encoded SearchResultEntry.  The criticality
+   may be TRUE or FALSE.  This control is appropriate for the
+   modifyResponse, delResponse, and modDNResponse LDAP messages with a
+   resultCode of success (0).
+
+   When the request control is attached to an appropriate update LDAP
+   request, the control requests the return of a copy of the target
+   entry prior to the application of the update.  The AttributeSelection
+   indicates, as discussed in [RFC4511][RFC3673], which attributes are
+   requested to appear in the copy.  The server is to return a
+   SearchResultEntry containing, subject to access controls and other
+   constraints, values of the requested attributes.
+
+   The normal processing of the update operation and the processing of
+   this control MUST be performed as one atomic action isolated from
+   other update operations.
+
+   If the update operation fails (in either normal or control
+   processing), no Pre-Read response control is provided.
+
+3.2.  The Post-Read Controls
+
+   The Post-Read request and response controls are identified by the
+   1.3.6.1.1.13.2 object identifier.  Servers implementing these
+   controls SHOULD publish 1.3.6.1.1.13.2 as a value of the
+   'supportedControl' [RFC4512] in their root DSE.
+
+   The Post-Read request control is a LDAP Control [RFC4511] whose
+   controlType is 1.3.6.1.1.13.2 and whose controlValue, an OCTET
+   STRING, contains a BER-encoded AttributeSelection [RFC4511], as
+   extended by [RFC3673].  The criticality may be TRUE or FALSE.  This
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4527                LDAP Read Entry Controls               June 2006
+
+
+   control is appropriate for the addRequest, modifyRequest, and
+   modDNRequest LDAP messages.
+
+   The corresponding response control is a LDAP Control whose
+   controlType is 1.3.6.1.1.13.2 and whose controlValue is a BER-encoded
+   SearchResultEntry.  The criticality may be TRUE or FALSE.  This
+   control is appropriate for the addResponse, modifyResponse, and
+   modDNResponse LDAP messages with a resultCode of success (0).
+
+   When the request control is attached to an appropriate update LDAP
+   request, the control requests the return of a copy of the target
+   entry after the application of the update.  The AttributeSelection
+   indicates, as discussed in [RFC4511][RFC3673], which attributes are
+   requested to appear in the copy.  The server is to return a
+   SearchResultEntry containing, subject to access controls and other
+   constraints, values of the requested attributes.
+
+   The normal processing of the update operation and the processing of
+   this control MUST be performed as one atomic action isolated from
+   other update operations.
+
+   If the update operation fails (in either normal or control
+   processing), no Post-Read response control is provided.
+
+4.  Interaction with Other Controls
+
+   The Pre-Read and Post-Read controls may be combined with each other
+   and/or with a variety of other controls.  When combined with the
+   assertion control [RFC4528] and/or the manageDsaIT control [RFC3296],
+   the semantics of each control included in the combination applies.
+   The Pre-Read and Post-Read controls may be combined with other
+   controls as detailed in other technical specifications.
+
+5.  Security Considerations
+
+   The controls defined in this document extend update operations to
+   support read capabilities.  Servers MUST ensure that the client is
+   authorized for reading of the information provided in this control
+   and that the client is authorized to perform the requested directory
+   update.
+
+   Security considerations for the update operations [RFC4511] extended
+   by this control, as well as general LDAP security considerations
+   [RFC4510], generally apply to implementation and use of this
+   extension
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4527                LDAP Read Entry Controls               June 2006
+
+
+6.  IANA Considerations
+
+   Registration of the following protocol values [RFC4520] have been
+   completed by the IANA.
+
+6.1.  Object Identifier
+
+   The IANA has registered an LDAP Object Identifier to identify LDAP
+   protocol elements defined in this document.
+
+       Subject: Request for LDAP Object Identifier Registration
+       Person & email address to contact for further information:
+            Kurt Zeilenga <kurt at OpenLDAP.org>
+       Specification: RFC 4527
+       Author/Change Controller: IESG
+       Comments: Identifies the LDAP Read Entry Controls
+
+6.2.  LDAP Protocol Mechanisms
+
+   The IANA has registered the LDAP Protocol Mechanism described in this
+   document.
+
+       Subject: Request for LDAP Protocol Mechanism Registration
+       Object Identifier: 1.3.6.1.1.13.1
+       Description: LDAP Pre-read Control
+       Person & email address to contact for further information:
+            Kurt Zeilenga <kurt at openldap.org>
+       Usage: Control
+       Specification: RFC 4527
+       Author/Change Controller: IESG
+       Comments: none
+
+       Subject: Request for LDAP Protocol Mechanism Registration
+       Object Identifier: 1.3.6.1.1.13.2
+       Description: LDAP Post-read Control
+       Person & email address to contact for further information:
+            Kurt Zeilenga <kurt at openldap.org>
+       Usage: Control
+       Specification: RFC 4527
+       Author/Change Controller: IESG
+       Comments: none
+
+7.  Acknowledgement
+
+   The LDAP Pre-Read and Post-Read controls are modeled after similar
+   capabilities offered in the DAP [X.511].
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4527                LDAP Read Entry Controls               June 2006
+
+
+8.  References
+
+8.1.  Normative References
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3296]     Zeilenga, K., "Named Subordinate References in
+                 Lightweight Directory Access Protocol (LDAP)
+                 Directories", RFC 3296, July 2002.
+
+   [RFC3673]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 version 3 (LDAPv3): All Operational Attributes", RFC
+                 3673, December 2003.
+
+   [RFC4510]     Zeilenga, K., Ed, "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Directory Information Models", RFC 4512, June
+                 2006.
+
+   [RFC4528]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP) Assertion Control", RFC 4528, June 2006.
+
+   [X.680]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "Abstract
+                 Syntax Notation One (ASN.1) - Specification of Basic
+                 Notation", X.680(1997) (also ISO/IEC 8824-1:1998).
+
+   [X.690]       International Telecommunication Union -
+                 Telecommunication Standardization Sector,
+                 "Specification of ASN.1 encoding rules: Basic Encoding
+                 Rules (BER), Canonical Encoding Rules (CER), and
+                 Distinguished Encoding Rules (DER)", X.690(1997) (also
+                 ISO/IEC 8825-1:1998).
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 4527                LDAP Read Entry Controls               June 2006
+
+
+8.2.  Informative References
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [RFC4530]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP) EntryUUID Operational Attribute", RFC 4530, June
+                 2006.
+
+   [X.511]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory: Abstract Service Definition", X.511(1993)
+                 (also ISO/IEC 9594-3:1993).
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+
+RFC 4527                LDAP Read Entry Controls               June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 8]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4528.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4528.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4528.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4528.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4528                           OpenLDAP Foundation
+Category: Standards Track                                      June 2006
+
+
+              Lightweight Directory Access Protocol (LDAP)
+                           Assertion Control
+
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document defines the Lightweight Directory Access Protocol
+   (LDAP) Assertion Control, which allows a client to specify that a
+   directory operation should only be processed if an assertion applied
+   to the target entry of the operation is true.  It can be used to
+   construct "test and set", "test and clear", and other conditional
+   operations.
+
+Table of Contents
+
+   1. Overview ........................................................2
+   2. Terminology .....................................................2
+   3. The Assertion Control ...........................................2
+   4. Security Considerations .........................................3
+   5. IANA Considerations .............................................4
+      5.1. Object Identifier ..........................................4
+      5.2. LDAP Protocol Mechanism ....................................4
+      5.3. LDAP Result Code ...........................................4
+   6. Acknowledgements ................................................5
+   7. References ......................................................5
+      7.1. Normative References .......................................5
+      7.2. Informative References .....................................5
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4528                 LDAP Assertion Control                June 2006
+
+
+1.  Overview
+
+   This document defines the Lightweight Directory Access Protocol
+   (LDAP) [RFC4510] assertion control.  The assertion control allows the
+   client to specify a condition that must be true for the operation to
+   be processed normally.  Otherwise, the operation is not performed.
+   For instance, the control can be used with the Modify operation
+   [RFC4511] to perform atomic "test and set" and "test and clear"
+   operations.
+
+   The control may be attached to any update operation to support
+   conditional addition, deletion, modification, and renaming of the
+   target object.  The asserted condition is evaluated as an integral
+   part the operation.
+
+   The control may also be used with the search operation.  Here, the
+   assertion is applied to the base object of the search before
+   searching for objects that match the search scope and filter.
+
+   The control may also be used with the compare operation.  Here, it
+   extends the compare operation to allow a more complex assertion.
+
+2. Terminology
+
+   Protocol elements are described using ASN.1 [X.680] with implicit
+   tags.  The term "BER-encoded" means the element is to be encoded
+   using the Basic Encoding Rules [X.690] under the restrictions
+   detailed in Section 5.1 of [RFC4511].
+
+   DSA stands for Directory System Agent (or server).
+   DSE stands for DSA-specific Entry.
+
+   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
+   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
+   and "OPTIONAL" are to be interpreted as described in BCP 14
+   [RFC2119].
+
+3.  The Assertion Control
+
+   The assertion control is an LDAP Control [RFC4511] whose controlType
+   is 1.3.6.1.1.12 and whose controlValue is a BER-encoded Filter
+   [Protocol, Section 4.5.1].  The criticality may be TRUE or FALSE.
+   There is no corresponding response control.
+
+   The control is appropriate for both LDAP interrogation and update
+   operations [RFC4511], including Add, Compare, Delete, Modify,
+   ModifyDN (rename), and Search.  It is inappropriate for Abandon,
+   Bind, Unbind, and StartTLS operations.
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4528                 LDAP Assertion Control                June 2006
+
+
+   When the control is attached to an LDAP request, the processing of
+   the request is conditional on the evaluation of the Filter as applied
+   against the target of the operation.  If the Filter evaluates to
+   TRUE, then the request is processed normally.  If the Filter
+   evaluates to FALSE or Undefined, then assertionFailed (122)
+   resultCode is returned, and no further processing is performed.
+
+   For Add, Compare, and ModifyDN operations, the target is indicated by
+   the entry field in the request.  For Modify operations, the target is
+   indicated by the object field.  For Delete operations, the target is
+   indicated by the DelRequest type.  For Compare operations and all
+   update operations, the evaluation of the assertion MUST be performed
+   as an integral part of the operation.  That is, the evaluation of the
+   assertion and the normal processing of the operation SHALL be done as
+   one atomic action.
+
+   For Search operations, the target is indicated by the baseObject
+   field, and the evaluation is done after "finding" but before
+   "searching" [RFC4511].  Hence, no entries or continuations references
+   are returned if the assertion fails.
+
+   Servers implementing this technical specification SHOULD publish the
+   object identifier 1.3.6.1.1.12 as a value of the 'supportedControl'
+   attribute [RFC4512] in their root DSE.  A server MAY choose to
+   advertise this extension only when the client is authorized to use
+   it.
+
+   Other documents may specify how this control applies to other LDAP
+   operations.  In doing so, they must state how the target entry is
+   determined.
+
+4.  Security Considerations
+
+   The filter may, like other components of the request, contain
+   sensitive information.  When it does, this information should be
+   appropriately protected.
+
+   As with any general assertion mechanism, the mechanism can be used to
+   determine directory content.  Hence, this mechanism SHOULD be subject
+   to appropriate access controls.
+
+   Some assertions may be very complex, requiring significant time and
+   resources to evaluate.  Hence, this mechanism SHOULD be subject to
+   appropriate administrative controls.
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4528                 LDAP Assertion Control                June 2006
+
+
+   Security considerations for the base operations [RFC4511] extended by
+   this control, as well as general LDAP security considerations
+   [RFC4510], generally apply to implementation and use of this
+   extension.
+
+5.  IANA Considerations
+
+5.1.  Object Identifier
+
+   The IANA has assigned an LDAP Object Identifier [RFC4520] to identify
+   the LDAP Assertion Control defined in this document.
+
+       Subject: Request for LDAP Object Identifier Registration
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at OpenLDAP.org>
+       Specification: RFC 4528
+       Author/Change Controller: IESG
+       Comments:
+           Identifies the LDAP Assertion Control
+
+5.2.  LDAP Protocol Mechanism
+
+   Registration of this protocol mechanism [RFC4520] is requested.
+
+       Subject: Request for LDAP Protocol Mechanism Registration
+       Object Identifier: 1.3.6.1.1.12
+       Description: Assertion Control
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at openldap.org>
+       Usage: Control
+       Specification: RFC 4528
+       Author/Change Controller: IESG
+       Comments: none
+
+5.3.  LDAP Result Code
+
+   The IANA has assigned an LDAP Result Code [RFC4520] called
+   'assertionFailed' (122).
+
+       Subject: LDAP Result Code Registration
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at OpenLDAP.org>
+       Result Code Name: assertionFailed
+       Specification: RFC 4528
+       Author/Change Controller: IESG
+       Comments:  none
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4528                 LDAP Assertion Control                June 2006
+
+
+6.  Acknowledgements
+
+   The assertion control concept is attributed to Morteza Ansari.
+
+7.  References
+
+7.1.  Normative References
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC4510]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Directory Information Models", RFC 4512, June
+                 2006.
+
+   [X.680]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "Abstract
+                 Syntax Notation One (ASN.1) - Specification of Basic
+                 Notation", X.680(2002) (also ISO/IEC 8824-1:2002).
+
+   [X.690]       International Telecommunication Union -
+                 Telecommunication Standardization Sector,
+                 "Specification of ASN.1 encoding rules: Basic Encoding
+                 Rules (BER), Canonical Encoding Rules (CER), and
+                 Distinguished Encoding Rules (DER)", X.690(2002) (also
+                 ISO/IEC 8825-1:2002).
+
+7.2.  Informative References
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4528                 LDAP Assertion Control                June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4529.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4529.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4529.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4529.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4529                           OpenLDAP Foundation
+Category: Informational                                        June 2006
+
+
+              Requesting Attributes by Object Class in the
+              Lightweight Directory Access Protocol (LDAP)
+
+Status of This Memo
+
+   This memo provides information for the Internet community.  It does
+   not specify an Internet standard of any kind.  Distribution of this
+   memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   The Lightweight Directory Access Protocol (LDAP) search operation
+   provides mechanisms for clients to request all user application
+   attributes, all operational attributes, and/or attributes selected by
+   their description.  This document extends LDAP to support a mechanism
+   that LDAP clients may use to request the return of all attributes of
+   an object class.
+
+Table of Contents
+
+   1. Background and Intended Use .....................................1
+   2. Terminology .....................................................2
+   3. Return of all Attributes of an Object Class .....................2
+   4. Security Considerations .........................................3
+   5. IANA Considerations .............................................3
+   6. References ......................................................4
+      6.1. Normative References .......................................4
+      6.2. Informative References .....................................4
+
+1.  Background and Intended Use
+
+   In the Lightweight Directory Access Protocol (LDAP) [RFC4510], the
+   search operation [RFC4511] supports requesting the return of a set of
+   attributes.  This set is determined by a list of attribute
+   descriptions.  Two special descriptors are defined to request all
+   user attributes ("*") [RFC4511] and all operational attributes ("+")
+   [RFC3673].  However, there is no convenient mechanism for requesting
+   pre-defined sets of attributes such as the set of attributes used to
+   represent a particular class of object.
+
+
+
+Zeilenga                     Informational                      [Page 1]
+
+RFC 4529         Requesting Attributes by Object Class         June 2006
+
+
+   This document extends LDAP to allow an object class identifier to be
+   specified in attributes lists, such as in Search requests, to request
+   the return of all attributes belonging to an object class.  The
+   COMMERCIAL AT ("@", U+0040) character is used to distinguish an
+   object class identifier from an attribute descriptions.
+
+   For example, the attribute list of "@country" is equivalent to the
+   attribute list of 'c', 'searchGuide', 'description', and
+   'objectClass'.  This object class is described in [RFC4519].
+
+   This extension is intended primarily to be used where the user is in
+   direct control of the parameters of the LDAP search operation, for
+   instance when entering an LDAP URL [RFC4516] into a web browser, such
+   as <ldap:///dc=example,dc=com?@organization?base>.
+
+2.  Terminology
+
+   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
+   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
+   and "OPTIONAL" are to be interpreted as described in BCP 14
+   [RFC2119].
+
+   DSA stands for Directory System Agent (or server).
+   DSE stands for DSA-specific Entry.
+
+3.  Return of All Attributes of an Object Class
+
+   This extension allows object class identifiers to be provided in the
+   attributes field of the LDAP SearchRequest [RFC4511] or other request
+   values of the AttributeSelection data type (e.g., attributes field in
+   pre/post read controls [ReadEntry]) and/or <attributeSelector>
+   production (e.g., attributes of an LDAP URL [RFC4516]).  For each
+   object class identified in the attributes field, the request is to be
+   treated as if each attribute allowed by that class (by "MUST" or
+   "MAY", directly or by "SUP"erior) [RFC4512] were itself listed.
+
+   This extension extends the <attributeSelector> [RFC4511] production
+   as indicated by the following ABNF [RFC4234]:
+
+        attributeSelector =/ objectclassdescription
+        objectclassdescription = ATSIGN oid options
+        ATSIGN = %x40 ; COMMERCIAL AT ("@" U+0040)
+
+   where <oid> and <options> productions are as defined in [RFC4512].
+
+
+
+
+
+
+
+Zeilenga                     Informational                      [Page 2]
+
+RFC 4529         Requesting Attributes by Object Class         June 2006
+
+
+   The <oid> component of an <objectclassdescription> production
+   identifies the object class by short name (descr) or object
+   identifier (numericoid).  If the value of the <oid> component is
+   unrecognized or does not refer to an object class, the object class
+   description is to be treated as an unrecognized attribute
+   description.
+
+   The <options> production is included in the grammar for extensibility
+   purposes.  An object class description with an unrecognized or
+   inappropriate option is to be treated as unrecognized.
+
+   Although object class description options and attribute description
+   options share the same syntax, they are not semantically related.
+   This document does not define any object description option.
+
+   Servers supporting this feature SHOULD publish the object identifier
+   (OID) 1.3.6.1.4.1.4203.1.5.2 as a value of the 'supportedFeatures'
+   [RFC4512] attribute in the root DSE.  Clients supporting this feature
+   SHOULD NOT use the feature unless they know that the server supports
+   it.
+
+4.  Security Considerations
+
+   This extension provides a shorthand for requesting all attributes of
+   an object class.  Because these attributes could have been listed
+   individually, introduction of this shorthand is not believed to raise
+   additional security considerations.
+
+   Implementors of this LDAP extension should be familiar with security
+   considerations applicable to the LDAP search operation [RFC4511], as
+   well as with general LDAP security considerations [RFC4510].
+
+5.  IANA Considerations
+
+   Registration of the LDAP Protocol Mechanism [RFC4520] defined in this
+   document has been completed.
+
+       Subject: Request for LDAP Protocol Mechanism Registration
+       Object Identifier: 1.3.6.1.4.1.4203.1.5.2
+       Description: OC AD Lists
+       Person & email address to contact for further information:
+            Kurt Zeilenga <kurt at openldap.org>
+       Usage: Feature
+       Specification: RFC 4529
+       Author/Change Controller: Kurt Zeilenga <kurt at openldap.org>
+       Comments: none
+
+
+
+
+
+Zeilenga                     Informational                      [Page 3]
+
+RFC 4529         Requesting Attributes by Object Class         June 2006
+
+
+   This OID was assigned [ASSIGN] by OpenLDAP Foundation, under its
+   IANA-assigned private enterprise allocation [PRIVATE], for use in
+   this specification.
+
+6.  References
+
+6.1.  Normative References
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC4234]     Crocker, D., Ed. and P. Overell, "Augmented BNF for
+                 Syntax Specifications: ABNF", RFC 4234, October 2005.
+
+   [RFC4510]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Directory Information Models", RFC 4512, June
+                 2006.
+
+   [RFC4516]     Smith, M., Ed. and T. Howes, "Lightweight Directory
+                 Access Protocol (LDAP): Uniform Resource Locator", RFC
+                 4516, June 2006.
+
+   [X.680]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "Abstract
+                 Syntax Notation One (ASN.1) - Specification of Basic
+                 Notation", X.680(2002) (also ISO/IEC 8824-1:2002).
+
+6.2.  Informative References
+
+   [RFC3673]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 version 3 (LDAPv3): All Operational Attributes", RFC
+                 3673, December 2003.
+
+   [RFC4519]     Sciberras, A., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Schema for User Applications", RFC
+                 4519, June 2006.
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+
+
+
+Zeilenga                     Informational                      [Page 4]
+
+RFC 4529         Requesting Attributes by Object Class         June 2006
+
+
+   [ReadEntry]   Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP) Read Entry Controls", RFC 4527, June 2006.
+
+   [ASSIGN]      OpenLDAP Foundation, "OpenLDAP OID Delegations",
+                 http://www.openldap.org/foundation/oid-delegate.txt.
+
+   [PRIVATE]     IANA, "Private Enterprise Numbers",
+                 http://www.iana.org/assignments/enterprise-numbers.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                     Informational                      [Page 5]
+
+RFC 4529         Requesting Attributes by Object Class         June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                     Informational                      [Page 6]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4530.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4530.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4530.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4530.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,451 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4530                           OpenLDAP Foundation
+Category: Standards Track                                      June 2006
+
+
+              Lightweight Directory Access Protocol (LDAP)
+                    entryUUID Operational Attribute
+
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This document describes the LDAP/X.500 'entryUUID' operational
+   attribute and associated matching rules and syntax.  The attribute
+   holds a server-assigned Universally Unique Identifier (UUID) for the
+   object.  Directory clients may use this attribute to distinguish
+   objects identified by a distinguished name or to locate an object
+   after renaming.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4530                     LDAP entryUUID                    June 2006
+
+
+Table of Contents
+
+   1. Background and Intended Use .....................................2
+   2. UUID Schema Elements ............................................3
+      2.1. UUID Syntax ................................................3
+      2.2. 'uuidMatch' Matching Rule ..................................3
+      2.3. 'uuidOrderingMatch' Matching Rule ..........................3
+      2.4. 'entryUUID' Attribute ......................................4
+   3. Security Considerations .........................................4
+   4. IANA Considerations .............................................5
+      4.1. Object Identifier Registration .............................5
+      4.2. UUID Syntax Registration ...................................5
+      4.3. 'uuidMatch' Descriptor Registration ........................5
+      4.4. 'uuidOrderingMatch' Descriptor Registration ................5
+      4.5. 'entryUUID' Descriptor Registration ........................6
+   5. Acknowledgements ................................................6
+   6. References ......................................................6
+      6.1. Normative References .......................................6
+      6.2. Informative References .....................................7
+
+1.  Background and Intended Use
+
+   In X.500 Directory Services [X.501], such as those accessible using
+   the Lightweight Directory Access Protocol (LDAP) [RFC4510], an object
+   is identified by its distinguished name (DN).  However, DNs are not
+   stable identifiers.  That is, a new object may be identified by a DN
+   that previously identified another (now renamed or deleted) object.
+
+   A Universally Unique Identifier (UUID) is "an identifier unique
+   across both space and time, with respect to the space of all UUIDs"
+   [RFC4122].  UUIDs are used in a wide range of systems.
+
+   This document describes the 'entryUUID' operational attribute, which
+   holds the UUID assigned to the object by the server.  Clients may use
+   this attribute to distinguish objects identified by a particular
+   distinguished name or to locate a particular object after renaming.
+
+   This document defines the UUID syntax, the 'uuidMatch' and
+   'uuidOrderingMatch' matching rules, and the 'entryUUID' attribute
+   type.
+
+   Schema definitions are provided using LDAP description formats
+   [RFC4512].  Definitions provided here are formatted (line wrapped)
+   for readability.
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4530                     LDAP entryUUID                    June 2006
+
+
+   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
+   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
+   and "OPTIONAL" are to be interpreted as described in BCP 14
+   [RFC2119].
+
+2.  UUID Schema Elements
+
+2.1.  UUID Syntax
+
+   A Universally Unique Identifier (UUID) [RFC4122] is a 16-octet (128-
+   bit) value that identifies an object.  The ASN.1 [X.680] type UUID is
+   defined to represent UUIDs as follows:
+
+       UUID ::= OCTET STRING (SIZE(16))
+             -- constrained to an UUID [RFC4122]
+
+   In LDAP, UUID values are encoded using the [ASCII] character string
+   representation described in [RFC4122].  For example,
+   "597ae2f6-16a6-1027-98f4-d28b5365dc14".
+
+   The following is an LDAP syntax description suitable for publication
+   in subschema subentries.
+
+       ( 1.3.6.1.1.16.1 DESC 'UUID' )
+
+2.2.  'uuidMatch' Matching Rule
+
+   The 'uuidMatch' matching rule compares an asserted UUID with a stored
+   UUID for equality.  Its semantics are the same as the
+   'octetStringMatch' [X.520][RFC4517] matching rule.  The rule differs
+   from 'octetStringMatch' in that the assertion value is encoded using
+   the UUID string representation instead of the normal OCTET STRING
+   string representation.
+
+   The following is an LDAP matching rule description suitable for
+   publication in subschema subentries.
+
+       ( 1.3.6.1.1.16.2 NAME 'uuidMatch'
+           SYNTAX 1.3.6.1.1.16.1 )
+
+2.3.  'uuidOrderingMatch' Matching Rule
+
+   The 'uuidOrderingMatch' matching rule compares an asserted UUID with
+   a stored UUID for ordering.  Its semantics are the same as the
+   'octetStringOrderingMatch' [X.520][RFC4517] matching rule.  The rule
+   differs from 'octetStringOrderingMatch' in that the assertion value
+   is encoded using the UUID string representation instead of the normal
+   OCTET STRING string representation.
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4530                     LDAP entryUUID                    June 2006
+
+
+   The following is an LDAP matching rule description suitable for
+   publication in subschema subentries.
+
+       ( 1.3.6.1.1.16.3 NAME 'uuidOrderingMatch'
+           SYNTAX 1.3.6.1.1.16.1 )
+
+   Note that not all UUID variants have a defined ordering; and even
+   where it does, servers are not obligated to assign UUIDs in any
+   particular order.  This matching rule is provided for completeness.
+
+2.4.  'entryUUID' Attribute
+
+   The 'entryUUID' operational attribute provides the Universally Unique
+   Identifier (UUID) assigned to the entry.
+
+   The following is an LDAP attribute type description suitable for
+   publication in subschema subentries.
+
+       ( 1.3.6.1.1.16.4 NAME 'entryUUID'
+           DESC 'UUID of the entry'
+           EQUALITY uuidMatch
+           ORDERING uuidOrderingMatch
+           SYNTAX 1.3.6.1.1.16.1
+           SINGLE-VALUE
+           NO-USER-MODIFICATION
+           USAGE directoryOperation )
+
+   Servers SHALL generate and assign a new UUID to each entry upon its
+   addition to the directory and provide that UUID as the value of the
+   'entryUUID' operational attribute.  An entry's UUID is immutable.
+
+   UUID are to be generated in accordance with Section 4 of [RFC4122].
+   In particular, servers MUST ensure that each generated UUID is unique
+   in space and time.
+
+3.  Security Considerations
+
+   An entry's relative distinguish name (RDN) is composed from attribute
+   values of the entry, which are commonly descriptive of the object the
+   entry represents.  Although deployers are encouraged to use naming
+   attributes whose values are widely disclosable [RFC4514], entries are
+   often named using information that cannot be disclosed to all
+   parties.  As UUIDs do not contain any descriptive information of the
+   object they identify, UUIDs may be used to identify a particular
+   entry without disclosure of its contents.
+
+   General UUID security considerations [RFC4122] apply.
+
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4530                     LDAP entryUUID                    June 2006
+
+
+   General LDAP security considerations [RFC4510] apply.
+
+4.  IANA Considerations
+
+   The IANA has registered the LDAP values [RFC4520] specified in this
+   document.
+
+4.1.  Object Identifier Registration
+
+       Subject: Request for LDAP OID Registration
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at OpenLDAP.org>
+       Specification: RFC 4530
+       Author/Change Controller: IESG
+       Comments:
+           Identifies the UUID schema elements
+
+4.2.  UUID Syntax Registration
+
+       Subject: Request for LDAP Syntax Registration
+       Object Identifier: 1.3.6.1.1.16.1
+       Description: UUID
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at OpenLDAP.org>
+       Specification: RFC 4530
+       Author/Change Controller: IESG
+       Comments:
+            Identifies the UUID syntax
+
+4.3.  'uuidMatch' Descriptor Registration
+
+       Subject: Request for LDAP Descriptor Registration
+       Descriptor (short name): uuidMatch
+       Object Identifier: 1.3.6.1.1.16.2
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at OpenLDAP.org>
+       Usage: Matching Rule
+       Specification: RFC 4530
+       Author/Change Controller: IESG
+
+4.4.  'uuidOrderingMatch' Descriptor Registration
+
+       Subject: Request for LDAP Descriptor Registration
+       Descriptor (short name): uuidOrderingMatch
+       Object Identifier: 1.3.6.1.1.16.3
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at OpenLDAP.org>
+       Usage: Matching Rule
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4530                     LDAP entryUUID                    June 2006
+
+
+       Specification: RFC 4530
+       Author/Change Controller: IESG
+
+4.5.  'entryUUID' Descriptor Registration
+
+   The IANA has registered the LDAP 'entryUUID' descriptor.
+
+       Subject: Request for LDAP Descriptor Registration
+       Descriptor (short name): entryUUID
+       Object Identifier: 1.3.6.1.1.16.4
+       Person & email address to contact for further information:
+           Kurt Zeilenga <kurt at OpenLDAP.org>
+       Usage: Attribute Type
+       Specification: RFC 4530
+       Author/Change Controller: IESG
+
+5.  Acknowledgements
+
+   This document is based upon discussions in the LDAP Update and
+   Duplication Protocols (LDUP) WG.  Members of the LDAP Directorate
+   provided review.
+
+6.  References
+
+6.1.  Normative References
+
+   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
+                 Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC4122]     Leach, P., Mealling, M., and R. Salz, "A Universally
+                 Unique IDentifier (UUID) URN Namespace", RFC 4122, July
+                 2005.
+
+   [RFC4510]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4512]     Zeilenga, K., "Lightweight Directory Access Protocol
+                 (LDAP): Directory Information Models", RFC 4512, June
+                 2006.
+
+   [RFC4517]     Legg, S., Ed., "Lightweight Directory Access Protocol
+                 (LDAP): Syntaxes and Matching Rules", RFC 4517, June
+                 2006.
+
+   [ASCII]       Coded Character Set--7-bit American Standard Code for
+                 Information Interchange, ANSI X3.4-1986.
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 4530                     LDAP entryUUID                    June 2006
+
+
+   [X.501]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory -- Models," X.501(1993) (also ISO/IEC 9594-
+                 2:1994).
+
+   [X.520]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "The
+                 Directory: Selected Attribute Types", X.520(1993) (also
+                 ISO/IEC 9594-6:1994).
+
+   [X.680]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "Abstract
+                 Syntax Notation One (ASN.1) - Specification of Basic
+                 Notation", X.680(2002) (also ISO/IEC 8824-1:2002).
+
+6.2.  Informative References
+
+   [RFC4514]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): String Representation of Distinguished
+                 Names", RFC 4514, June 2006.
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+
+RFC 4530                     LDAP entryUUID                    June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 8]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4531.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4531.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4531.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4531.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,507 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4531                           OpenLDAP Foundation
+Category: Experimental                                         June 2006
+
+
+              Lightweight Directory Access Protocol (LDAP)
+                             Turn Operation
+
+
+Status of This Memo
+
+   This memo defines an Experimental Protocol for the Internet
+   community.  It does not specify an Internet standard of any kind.
+   Discussion and suggestions for improvement are requested.
+   Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This specification describes a Lightweight Directory Access Protocol
+   (LDAP) extended operation to reverse (or "turn") the roles of client
+   and server for subsequent protocol exchanges in the session, or to
+   enable each peer to act as both client and server with respect to the
+   other.
+
+Table of Contents
+
+   1. Background and Intent of Use ....................................2
+      1.1. Terminology ................................................2
+   2. Turn Operation ..................................................2
+      2.1. Turn Request ...............................................3
+      2.2. Turn Response ..............................................3
+   3. Authentication ..................................................3
+      3.1. Use with TLS and Simple Authentication .....................4
+      3.2. Use with TLS and SASL EXTERNAL .............................4
+      3.3. Use of Mutual Authentication and SASL EXTERNAL .............4
+   4. TLS and SASL Security Layers ....................................5
+   5. Security Considerations .........................................6
+   6. IANA Considerations .............................................6
+      6.1. Object Identifier ..........................................6
+      6.2. LDAP Protocol Mechanism ....................................7
+   7. References ......................................................7
+      7.1. Normative References .......................................7
+      7.2. Informative References .....................................8
+
+
+
+
+Zeilenga                      Experimental                      [Page 1]
+
+RFC 4531                  LDAP Turn Operation                  June 2006
+
+
+1.  Background and Intent of Use
+
+   The Lightweight Directory Access Protocol (LDAP) [RFC4510][RFC4511]
+   is a client-server protocol that typically operates over reliable
+   octet-stream transports, such as the Transport Control Protocol
+   (TCP).  Generally, the client initiates the stream by connecting to
+   the server's listener at some well-known address.
+
+   There are cases where it is desirable for the server to initiate the
+   stream.  Although it certainly is possible to write a technical
+   specification detailing how to implement server-initiated LDAP
+   sessions, this would require the design of new authentication and
+   other security mechanisms to support server-initiated LDAP sessions.
+
+   Instead, this document introduces an operation, the Turn operation,
+   which may be used to reverse the client-server roles of the protocol
+   peers.  This allows the initiating protocol peer to become the server
+   (after the reversal).
+
+   As an additional feature, the Turn operation may be used to allow
+   both peers to act in both roles.  This is useful where both peers are
+   directory servers that desire to request, as LDAP clients, that
+   operations be performed by the other.  This may be useful in
+   replicated and/or distributed environments.
+
+   This operation is intended to be used between protocol peers that
+   have established a mutual agreement, by means outside of the
+   protocol, that requires reversal of client-server roles, or allows
+   both peers to act both as client and server.
+
+1.1.  Terminology
+
+   Protocol elements are described using ASN.1 [X.680] with implicit
+   tags.  The term "BER-encoded" means the element is to be encoded
+   using the Basic Encoding Rules [X.690] under the restrictions
+   detailed in Section 5.1 of [RFC4511].
+
+2.  Turn Operation
+
+   The Turn operation is defined as an LDAP-Extended Operation
+   [Protocol, Section 4.12] identified by the 1.3.6.1.1.19 OID.  The
+   function of the Turn Operation is to request that the client-server
+   roles be reversed, or, optionally, to request that both protocol
+   peers be able to act both as client and server in respect to the
+   other.
+
+
+
+
+
+
+Zeilenga                      Experimental                      [Page 2]
+
+RFC 4531                  LDAP Turn Operation                  June 2006
+
+
+2.1.  Turn Request
+
+   The Turn request is an ExtendedRequest where the requestName field
+   contains the 1.3.6.1.1.19 OID and the requestValue field is a BER-
+   encoded turnValue:
+
+        turnValue ::= SEQUENCE {
+             mutual         BOOLEAN DEFAULT FALSE,
+             identifier     LDAPString
+        }
+
+   A TRUE mutual field value indicates a request to allow both peers to
+   act both as client and server.  A FALSE mutual field value indicates
+   a request to reserve the client and server roles.
+
+   The value of the identifier field is a locally defined policy
+   identifier (typically associated with a mutual agreement for which
+   this turn is be executed as part of).
+
+2.2.  Turn Response
+
+   A Turn response is an ExtendedResponse where the responseName and
+   responseValue fields are absent.  A resultCode of success is returned
+   if and only if the responder is willing and able to turn the session
+   as requested.  Otherwise, a different resultCode is returned.
+
+3.  Authentication
+
+   This extension's authentication model assumes separate authentication
+   of the peers in each of their roles.  A separate Bind exchange is
+   expected between the peers in their new roles to establish identities
+   in these roles.
+
+   Upon completion of the Turn, the responding peer in its new client
+   role has an anonymous association at the initiating peer in its new
+   server role.  If the turn was mutual, the authentication association
+   of the initiating peer in its pre-existing client role is left intact
+   at the responding peer in its pre-existing server role.  If the turn
+   was not mutual, this association is void.
+
+   The responding peer may establish its identity in its client role by
+   requesting and successfully completing a Bind operation.
+
+   The remainder of this section discusses some authentication
+   scenarios.  In the protocol exchange illustrations, A refers to the
+   initiating peer (the original client) and B refers to the responding
+   peer (the original server).
+
+
+
+
+Zeilenga                      Experimental                      [Page 3]
+
+RFC 4531                  LDAP Turn Operation                  June 2006
+
+
+3.1.  Use with TLS and Simple Authentication
+
+       A->B: StartTLS Request
+       B->A: StartTLS(success) Response
+       A->B: Bind(Simple(cn=B,dc=example,dc=net,B's secret)) Request
+       B->A: Bind(success) Response
+       A->B: Turn(TRUE,"XXYYZ") Request
+       B->A: Turn(success) Response
+       B->A: Bind(Simple(cn=A,dc=example,dc=net,A's secret)) Request
+       A->B: Bind(success) Response
+
+   In this scenario, TLS (Transport Layer Security) [RFC4346] is started
+   and the initiating peer (the original client) establishes its
+   identity with the responding peer prior to the Turn using the
+   DN/password mechanism of the Simple method of the Bind operation.
+   After the turn, the responding peer, in its new client role,
+   establishes its identity with the initiating peer in its new server
+   role.
+
+3.2.  Use with TLS and SASL EXTERNAL
+
+       A->B: StartTLS Request
+       B->A: StartTLS(success) Response
+       A->B: Bind(SASL(EXTERNAL)) Request
+       B->A: Bind(success) Response
+       A->B: Turn(TRUE,"XXYYZ") Request
+       B->A: Turn(success) Response
+       B->A: Bind(SASL(EXTERNAL)) Request
+       A->B: Bind(success) Response
+
+   In this scenario, TLS is started (with each peer providing a valid
+   certificate), and the initiating peer (the original client)
+   establishes its identity through the use of the EXTERNAL mechanism of
+   the SASL (Simple Authentication and Security Layer) [RFC4422] method
+   of the Bind operation prior to the Turn.  After the turn, the
+   responding peer, in its new client role, establishes its identity
+   with the initiating peer in its new server role.
+
+3.3.  Use of Mutual Authentication and SASL EXTERNAL
+
+   A number of SASL mechanisms, such as GSSAPI [SASL-K5], support mutual
+   authentication.  The initiating peer, in its new server role, may use
+   the identity of the responding peer, established by a prior
+   authentication exchange, as its source for "external" identity in
+   subsequent EXTERNAL exchange.
+
+       A->B: Bind(SASL(GSSAPI)) Request
+       <intermediate messages>
+
+
+
+Zeilenga                      Experimental                      [Page 4]
+
+RFC 4531                  LDAP Turn Operation                  June 2006
+
+
+       B->A: Bind(success) Response
+       A->B: Turn(TRUE,"XXYYZ") Request
+       B->A: Turn(success) Response
+       B->A: Bind(SASL(EXTERNAL)) Request
+       A->B: Bind(success) Response
+
+   In this scenario, a GSSAPI mutual-authentication exchange is
+   completed between the initiating peer (the original client) and the
+   responding server (the original server) prior to the turn.  After the
+   turn, the responding peer, in its new client role, requests that the
+   initiating peer utilize an "external" identity to establish its LDAP
+   authorization identity.
+
+4.  TLS and SASL Security Layers
+
+   As described in [RFC4511], LDAP supports both Transport Layer
+   Security (TLS) [RFC4346] and Simple Authentication and Security Layer
+   (SASL) [RFC4422] security frameworks.  The following table
+   illustrates the relationship between the LDAP message layer, SASL
+   layer, TLS layer, and transport connection within an LDAP session.
+
+                  +----------------------+
+                  |  LDAP message layer  |
+                  +----------------------+ > LDAP PDUs
+                  +----------------------+ < data
+                  |      SASL layer      |
+                  +----------------------+ > SASL-protected data
+                  +----------------------+ < data
+                  |       TLS layer      |
+      Application +----------------------+ > TLS-protected data
+      ------------+----------------------+ < data
+        Transport | transport connection |
+                  +----------------------+
+
+   This extension does not alter this relationship, nor does it remove
+   the general restriction against multiple TLS layers, nor does it
+   remove the general restriction against multiple SASL layers.
+
+   As specified in [RFC4511], the StartTLS operation is used to initiate
+   negotiation of a TLS layer.  If a TLS is already installed, the
+   StartTLS operation must fail.  Upon establishment of the TLS layer,
+   regardless of which peer issued the request to start TLS, the peer
+   that initiated the LDAP session (the original client) performs the
+   "server identity check", as described in Section 3.1.5 of [RFC4513],
+   treating itself as the "client" and its peer as the "server".
+
+   As specified in [RFC4422], a newly negotiated SASL security layer
+   replaces the installed SASL security layer.  Though the client/server
+
+
+
+Zeilenga                      Experimental                      [Page 5]
+
+RFC 4531                  LDAP Turn Operation                  June 2006
+
+
+   roles in LDAP, and hence SASL, may be reversed in subsequent
+   exchanges, only one SASL security layer may be installed at any
+   instance.
+
+5.  Security Considerations
+
+   Implementors should be aware that the reversing of client/server
+   roles and/or allowing both peers to act as client and server likely
+   introduces security considerations not foreseen by the authors of
+   this document.  In particular, the security implications of the
+   design choices made in the authentication and data security models
+   for this extension (discussed in Sections 3 and 4, respectively) are
+   not fully studied.  It is hoped that experimentation with this
+   extension will lead to better understanding of the security
+   implications of these models and other aspects of this extension, and
+   that appropriate considerations will be documented in a future
+   document.  The following security considerations are apparent at this
+   time.
+
+   Implementors should take special care to process LDAP, SASL, TLS, and
+   other events in the appropriate roles for the peers.  Note that while
+   the Turn reverses the client/server roles with LDAP, and in SASL
+   authentication exchanges, it does not reverse the roles within the
+   TLS layer or the transport connection.
+
+   The responding server (the original server) should restrict use of
+   this operation to authorized clients.  Client knowledge of a valid
+   identifier should not be the sole factor in determining authorization
+   to turn.
+
+   Where the peers except to establish TLS, TLS should be started prior
+   to the Turn and any request to authenticate via the Bind operation.
+
+   LDAP security considerations [RFC4511][RFC4513] generally apply to
+   this extension.
+
+6.  IANA Considerations
+
+   The following values [RFC4520] have been registered by the IANA.
+
+6.1.  Object Identifier
+
+   The IANA has assigned an LDAP Object Identifier to identify the LDAP
+   Turn Operation, as defined in this document.
+
+
+
+
+
+
+
+Zeilenga                      Experimental                      [Page 6]
+
+RFC 4531                  LDAP Turn Operation                  June 2006
+
+
+       Subject: Request for LDAP Object Identifier Registration
+       Person & email address to contact for further information:
+            Kurt Zeilenga <kurt at OpenLDAP.org>
+       Specification: RFC 4531
+       Author/Change Controller: Author
+       Comments:
+            Identifies the LDAP Turn Operation
+
+6.2.  LDAP Protocol Mechanism
+
+   The IANA has registered the LDAP Protocol Mechanism described in this
+   document.
+
+       Subject: Request for LDAP Protocol Mechanism Registration
+       Object Identifier: 1.3.6.1.1.19
+       Description: LDAP Turn Operation
+       Person & email address to contact for further information:
+            Kurt Zeilenga <kurt at openldap.org>
+       Usage: Extended Operation
+       Specification: RFC 4531
+       Author/Change Controller: Author
+       Comments: none
+
+7.  References
+
+7.1.  Normative References
+
+   [RFC4346]     Dierks, T. and, E. Rescorla, "The Transport Layer
+                 Security (TLS) Protocol Version 1.1", RFC 4346, April
+                 2006.
+
+   [RFC4422]     Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple
+                 Authentication and Security Layer (SASL)", RFC 4422,
+                 June 2006.
+
+   [RFC4510]     Zeilenga, K., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Technical Specification Road Map", RFC
+                 4510, June 2006.
+
+   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4513]     Harrison, R., Ed., "Lightweight Directory Access
+                 Protocol (LDAP): Authentication Methods and Security
+                 Mechanisms", RFC 4513, June 2006.
+
+
+
+
+
+
+Zeilenga                      Experimental                      [Page 7]
+
+RFC 4531                  LDAP Turn Operation                  June 2006
+
+
+   [X.680]       International Telecommunication Union -
+                 Telecommunication Standardization Sector, "Abstract
+                 Syntax Notation One (ASN.1) - Specification of Basic
+                 Notation", X.680(2002) (also ISO/IEC 8824-1:2002).
+
+   [X.690]       International Telecommunication Union -
+                 Telecommunication Standardization Sector,
+                 "Specification of ASN.1 encoding rules: Basic Encoding
+                 Rules (BER), Canonical Encoding Rules (CER), and
+                 Distinguished Encoding Rules (DER)", X.690(2002) (also
+                 ISO/IEC 8825-1:2002).
+
+7.2.  Informative References
+
+   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
+                 (IANA) Considerations for the Lightweight Directory
+                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [SASL-K5]     Melnikov, A., Ed., "The Kerberos V5 ("GSSAPI") SASL
+                 Mechanism", Work in Progress, May 2006.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                      Experimental                      [Page 8]
+
+RFC 4531                  LDAP Turn Operation                  June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                      Experimental                      [Page 9]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4532.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4532.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4532.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4532.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,395 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4532                           OpenLDAP Foundation
+Category: Standards Track                                      June 2006
+
+
+              Lightweight Directory Access Protocol (LDAP)
+                         "Who am I?" Operation
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   This specification provides a mechanism for Lightweight Directory
+   Access Protocol (LDAP) clients to obtain the authorization identity
+   the server has associated with the user or application entity.  This
+   mechanism is specified as an LDAP extended operation called the LDAP
+   "Who am I?" operation.
+
+1.  Background and Intent of Use
+
+   This specification describes a Lightweight Directory Access Protocol
+   (LDAP) [RFC4510] operation that clients can use to obtain the primary
+   authorization identity, in its primary form, that the server has
+   associated with the user or application entity.  The operation is
+   called the "Who am I?" operation.
+
+   This specification is intended to replace the existing Authorization
+   Identity Controls [RFC3829] mechanism, which uses Bind request and
+   response controls to request and return the authorization identity.
+   Bind controls are not protected by security layers established by the
+   Bind operation that includes them.  While it is possible to establish
+   security layers using StartTLS [RFC4511][RFC4513] prior to the Bind
+   operation, it is often desirable to use security layers established
+   by the Bind operation.  An extended operation sent after a Bind
+   operation is protected by the security layers established by the Bind
+   operation.
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 1]
+
+RFC 4532               LDAP "Who am I?" Operation              June 2006
+
+
+   There are other cases where it is desirable to request the
+   authorization identity that the server associated with the client
+   separately from the Bind operation.  For example, the "Who am I?"
+   operation can be augmented with a Proxied Authorization Control
+   [RFC4370] to determine the authorization identity that the server
+   associates with the identity asserted in the Proxied Authorization
+   Control.  The "Who am I?" operation can also be used prior to the
+   Bind operation.
+
+   Servers often associate multiple authorization identities with the
+   client, and each authorization identity may be represented by
+   multiple authzId [RFC4513] strings.  This operation requests and
+   returns the authzId that the server considers primary.  In the
+   specification, the term "the authorization identity" and "the
+   authzId" are generally to be read as "the primary authorization
+   identity" and the "the primary authzId", respectively.
+
+1.1.  Conventions Used in This Document
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+2.  The "Who am I?" Operation
+
+   The "Who am I?" operation is defined as an LDAP Extended Operation
+   [RFC4511] identified by the whoamiOID Object Identifier (OID).  This
+   section details the syntax of the operation's whoami request and
+   response messages.
+
+      whoamiOID ::= "1.3.6.1.4.1.4203.1.11.3"
+
+2.1.  The whoami Request
+
+   The whoami request is an ExtendedRequest with a requestName field
+   containing the whoamiOID OID and an absent requestValue field.  For
+   example, a whoami request could be encoded as the sequence of octets
+   (in hex):
+
+      30 1e 02 01 02 77 19 80  17 31 2e 33 2e 36 2e 31
+      2e 34 2e 31 2e 34 32 30  33 2e 31 2e 31 31 2e 33
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 2]
+
+RFC 4532               LDAP "Who am I?" Operation              June 2006
+
+
+2.2.  The whoami Response
+
+   The whoami response is an ExtendedResponse where the responseName
+   field is absent and the response field, if present, is empty or an
+   authzId [RFC4513].  For example, a whoami response returning the
+   authzId "u:xxyyz at EXAMPLE.NET" (in response to the example request)
+   would be encoded as the sequence of octets (in hex):
+
+      30 21 02 01 02 78 1c 0a  01 00 04 00 04 00 8b 13
+      75 3a 78 78 79 79 7a 40  45 58 41 4d 50 4c 45 2e
+      4e 45 54
+
+3.  Operational Semantics
+
+   The "Who am I?" operation provides a mechanism, a whoami Request, for
+   the client to request that the server return the authorization
+   identity it currently associates with the client.  It also provides a
+   mechanism, a whoami Response, for the server to respond to that
+   request.
+
+   Servers indicate their support for this extended operation by
+   providing a whoamiOID object identifier as a value of the
+   'supportedExtension' attribute type in their root DSE.  The server
+   SHOULD advertise this extension only when the client is willing and
+   able to perform this operation.
+
+   If the server is willing and able to provide the authorization
+   identity it associates with the client, the server SHALL return a
+   whoami Response with a success resultCode.  If the server is treating
+   the client as an anonymous entity, the response field is present but
+   empty.  Otherwise, the server provides the authzId [RFC4513]
+   representing the authorization identity it currently associates with
+   the client in the response field.
+
+   If the server is unwilling or unable to provide the authorization
+   identity it associates with the client, the server SHALL return a
+   whoami Response with an appropriate non-success resultCode (such as
+   operationsError, protocolError, confidentialityRequired,
+   insufficientAccessRights, busy, unavailable, unwillingToPerform, or
+   other) and an absent response field.
+
+   As described in [RFC4511] and [RFC4513], an LDAP session has an
+   "anonymous" association until the client has been successfully
+   authenticated using the Bind operation.  Clients MUST NOT invoke the
+   "Who am I?" operation while any Bind operation is in progress,
+   including between two Bind requests made as part of a multi-stage
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 3]
+
+RFC 4532               LDAP "Who am I?" Operation              June 2006
+
+
+   Bind operation.  Where a whoami Request is received in violation of
+   this absolute prohibition, the server should return a whoami Response
+   with an operationsError resultCode.
+
+4.  Extending the "Who am I?" Operation with Controls
+
+   Future specifications may extend the "Who am I?" operation using the
+   control mechanism [RFC4511].  When extended by controls, the "Who am
+   I?" operation requests and returns the authorization identity the
+   server associates with the client in a particular context indicated
+   by the controls.
+
+4.1.  Proxied Authorization Control
+
+   The Proxied Authorization Control [RFC4370] is used by clients to
+   request that the operation it is attached to operate under the
+   authorization of an assumed identity.  The client provides the
+   identity to assume in the Proxied Authorization request control.  If
+   the client is authorized to assume the requested identity, the server
+   executes the operation as if the requested identity had issued the
+   operation.
+
+   As servers often map the asserted authzId to another identity
+   [RFC4513], it is desirable to request that the server provide the
+   authzId it associates with the assumed identity.
+
+   When a Proxied Authorization Control is be attached to the "Who am
+   I?"  operation, the operation requests the return of the authzId the
+   server associates with the identity asserted in the Proxied
+   Authorization Control.  The authorizationDenied (123) result code is
+   used to indicate that the server does not allow the client to assume
+   the asserted identity.
+
+5.  Security Considerations
+
+   Identities associated with users may be sensitive information.  When
+   they are, security layers [RFC4511][RFC4513] should be established to
+   protect this information.  This mechanism is specifically designed to
+   allow security layers established by a Bind operation to protect the
+   integrity and/or confidentiality of the authorization identity.
+
+   Servers may place access control or other restrictions upon the use
+   of this operation.  As stated in Section 3, the server SHOULD
+   advertise this extension when it is willing and able to perform the
+   operation.
+
+   As with any other extended operations, general LDAP security
+   considerations [RFC4510] apply.
+
+
+
+Zeilenga                    Standards Track                     [Page 4]
+
+RFC 4532               LDAP "Who am I?" Operation              June 2006
+
+
+6.  IANA Considerations
+
+   The OID 1.3.6.1.4.1.4203.1.11.3 is used to identify the LDAP "Who am
+   I?" extended operation.  This OID was assigned [ASSIGN] by the
+   OpenLDAP Foundation, under its IANA-assigned private enterprise
+   allocation [PRIVATE], for use in this specification.
+
+   Registration of this protocol mechanism [RFC4520] has been completed
+   by the IANA.
+
+   Subject: Request for LDAP Protocol Mechanism Registration
+   Object Identifier: 1.3.6.1.4.1.4203.1.11.3
+   Description: Who am I?
+   Person & email address to contact for further information:
+        Kurt Zeilenga <kurt at openldap.org>
+   Usage: Extended Operation
+   Specification: RFC 4532
+   Author/Change Controller: IESG
+   Comments: none
+
+7.  Acknowledgement
+
+   This document borrows from prior work in this area, including
+   "Authentication Response Control" [RFC3829] by Rob Weltman, Mark
+   Smith, and Mark Wahl.
+
+   The LDAP "Who am I?" operation takes it's name from the UNIX
+   whoami(1) command.  The whoami(1) command displays the effective user
+   ID.
+
+8.  References
+
+8.1.  Normative References
+
+   [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+             Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC4370] Weltman, R., "Lightweight Directory Access Protocol (LDAP)
+             Proxied Authorization Control", RFC 4370, February 2006.
+
+   [RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+             (LDAP): Technical Specification Road Map", RFC 4510, June
+             2006.
+
+   [RFC4511] Sermersheim, J., Ed., "Lightweight Directory Access
+             Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 5]
+
+RFC 4532               LDAP "Who am I?" Operation              June 2006
+
+
+   [RFC4513] Harrison, R., Ed., "Lightweight Directory Access Protocol
+             (LDAP): Authentication Methods and Security Mechanisms",
+             RFC 4513, June 2006.
+
+8.2.  Informative References
+
+   [RFC3829] Weltman, R., Smith, M., and M. Wahl, "Lightweight Directory
+             Access Protocol (LDAP) Authorization Identity Request and
+             Response Controls", RFC 3829, July 2004.
+
+   [RFC4520] Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
+             Considerations for the Lightweight Directory Access
+             Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [ASSIGN]  OpenLDAP Foundation, "OpenLDAP OID Delegations",
+             http://www.openldap.org/foundation/oid-delegate.txt.
+
+   [PRIVATE] IANA, "Private Enterprise Numbers",
+             http://www.iana.org/assignments/enterprise-numbers.
+
+Author's Address
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 6]
+
+RFC 4532               LDAP "Who am I?" Operation              June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga                    Standards Track                     [Page 7]
+

Copied: branches/samba/experimental/source4/ldap_server/devdocs/rfc4533.txt (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/ldap_server/devdocs/rfc4533.txt)
===================================================================
--- branches/samba/experimental/source4/ldap_server/devdocs/rfc4533.txt	                        (rev 0)
+++ branches/samba/experimental/source4/ldap_server/devdocs/rfc4533.txt	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,1795 @@
+
+
+
+
+
+
+Network Working Group                                        K. Zeilenga
+Request for Comments: 4533                           OpenLDAP Foundation
+Category: Experimental                                         J.H. Choi
+                                                         IBM Corporation
+                                                               June 2006
+
+
+           The Lightweight Directory Access Protocol (LDAP)
+                   Content Synchronization Operation
+
+Status of This Memo
+
+   This memo defines an Experimental Protocol for the Internet
+   community.  It does not specify an Internet standard of any kind.
+   Discussion and suggestions for improvement are requested.
+   Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+IESG Note
+
+   The IESG notes that this work was originally discussed in the LDUP
+   working group.  The group came to consensus on a different approach,
+   documented in RFC 3928; that document is on the standards track and
+   should be reviewed by those considering implementation of this
+   proposal.
+
+Abstract
+
+   This specification describes the Lightweight Directory Access
+   Protocol (LDAP) Content Synchronization Operation.  The operation
+   allows a client to maintain a copy of a fragment of the Directory
+   Information Tree (DIT).  It supports both polling for changes and
+   listening for changes.  The operation is defined as an extension of
+   the LDAP Search Operation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                      [Page 1]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+Table of Contents
+
+   1. Introduction ....................................................3
+      1.1. Background .................................................3
+      1.2. Intended Usage .............................................4
+      1.3. Overview ...................................................5
+      1.4. Conventions ................................................8
+   2. Elements of the Sync Operation ..................................8
+      2.1. Common ASN.1 Elements ......................................9
+      2.2. Sync Request Control .......................................9
+      2.3. Sync State Control ........................................10
+      2.4. Sync Done Control .........................................10
+      2.5. Sync Info Message .........................................11
+      2.6. Sync Result Codes .........................................11
+   3. Content Synchronization ........................................11
+      3.1. Synchronization Session ...................................12
+      3.2. Content Determination .....................................12
+      3.3. refreshOnly Mode ..........................................13
+      3.4. refreshAndPersist Mode ....................................16
+      3.5. Search Request Parameters .................................17
+      3.6. objectName ................................................18
+      3.7. Canceling the Sync Operation ..............................19
+      3.8. Refresh Required ..........................................19
+      3.9. Chattiness Considerations .................................20
+      3.10. Operation Multiplexing ...................................21
+   4. Meta Information Considerations ................................22
+      4.1. Entry DN ..................................................22
+      4.2. Operational Attributes ....................................22
+      4.3. Collective Attributes .....................................23
+      4.4. Access and Other Administrative Controls ..................23
+   5. Interaction with Other Controls ................................23
+      5.1. ManageDsaIT Control .......................................24
+      5.2. Subentries Control ........................................24
+   6. Shadowing Considerations .......................................24
+   7. Security Considerations ........................................25
+   8. IANA Considerations ............................................26
+      8.1. Object Identifier .........................................26
+      8.2. LDAP Protocol Mechanism ...................................26
+      8.3. LDAP Result Codes .........................................26
+   9. Acknowledgements ...............................................26
+   10. Normative References ..........................................27
+   11. Informative References ........................................28
+   Appendix A.  CSN-based Implementation Considerations ..............29
+
+
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                      [Page 2]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+1.  Introduction
+
+   The Lightweight Directory Access Protocol (LDAP) [RFC4510] provides a
+   mechanism, the search operation [RFC4511], that allows a client to
+   request directory content matching a complex set of assertions and to
+   request that the server return this content, subject to access
+   control and other restrictions, to the client.  However, LDAP does
+   not provide (despite the introduction of numerous extensions in this
+   area) an effective and efficient mechanism for maintaining
+   synchronized copies of directory content.  This document introduces a
+   new mechanism specifically designed to meet the content
+   synchronization requirements of sophisticated directory applications.
+
+   This document defines the LDAP Content Synchronization Operation, or
+   Sync Operation for short, which allows a client to maintain a
+   synchronized copy of a fragment of a Directory Information Tree
+   (DIT).  The Sync Operation is defined as a set of controls and other
+   protocol elements that extend the Search Operation.
+
+1.1.  Background
+
+   Over the years, a number of content synchronization approaches have
+   been suggested for use in LDAP directory services.  These approaches
+   are inadequate for one or more of the following reasons:
+
+      -  failure to ensure a reasonable level of convergence;
+
+      -  failure to detect that convergence cannot be achieved (without
+         reload);
+
+      -  require pre-arranged synchronization agreements;
+
+      -  require the server to maintain histories of past changes to DIT
+         content and/or meta information;
+
+      -  require the server to maintain synchronization state on a per-
+         client basis; and/or
+
+      -  are overly chatty.
+
+   The Sync Operation provides eventual convergence of synchronized
+   content when possible and, when not, notification that a full reload
+   is required.
+
+   The Sync Operation does not require pre-arranged synchronization
+   agreements.
+
+
+
+
+
+Zeilenga & Choi               Experimental                      [Page 3]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   The Sync Operation does not require that servers maintain or use any
+   history of past changes to the DIT or to meta information.  However,
+   servers may maintain and use histories (e.g., change logs,
+   tombstones, DIT snapshots) to reduce the number of messages generated
+   and to reduce their size.  As it is not always feasible to maintain
+   and use histories, the operation may be implemented using purely
+   (current) state-based approaches.  The Sync Operation allows use of
+   either the state-based approach or the history-based approach on an
+   operation-by-operation basis to balance the size of history and the
+   amount of traffic.  The Sync Operation also allows the combined use
+   of the state-based and the history-based approaches.
+
+   The Sync Operation does not require that servers maintain
+   synchronization state on a per-client basis.  However, servers may
+   maintain and use per-client state information to reduce the number of
+   messages generated and the size of such messages.
+
+   A synchronization mechanism can be considered overly chatty when
+   synchronization traffic is not reasonably bounded.  The Sync
+   Operation traffic is bounded by the size of updated (or new) entries
+   and the number of unchanged entries in the content.  The operation is
+   designed to avoid full content exchanges, even when the history
+   information available to the server is insufficient to determine the
+   client's state.  The operation is also designed to avoid transmission
+   of out-of-content history information, as its size is not bounded by
+   the content and it is not always feasible to transmit such history
+   information due to security reasons.
+
+   This document includes a number of non-normative appendices providing
+   additional information to server implementors.
+
+1.2.  Intended Usage
+
+   The Sync Operation is intended to be used in applications requiring
+   eventually-convergent content synchronization.  Upon completion of
+   each synchronization stage of the operation, all information to
+   construct a synchronized client copy of the content has been provided
+   to the client or the client has been notified that a complete content
+   reload is necessary.  Except for transient inconsistencies due to
+   concurrent operation (or other) processing at the server, the client
+   copy is an accurate reflection of the content held by the server.
+   Transient inconsistencies will be resolved by subsequent
+   synchronization operations.
+
+
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                      [Page 4]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   Possible uses include the following:
+
+      -  White page service applications may use the Sync Operation to
+         maintain a current copy of a DIT fragment, for example, a mail
+         user agent that uses the sync operation to maintain a local
+         copy of an enterprise address book.
+
+      -  Meta-information engines may use the Sync Operation to maintain
+         a copy of a DIT fragment.
+
+      -  Caching proxy services may use the Sync Operation to maintain a
+         coherent content cache.
+
+      -  Lightweight master-slave replication between heterogeneous
+         directory servers.  For example, the Sync Operation can be used
+         by a slave server to maintain a shadow copy of a DIT fragment.
+         (Note: The International Telephone Union (ITU) has defined the
+         X.500 Directory [X.500] Information Shadowing Protocol (DISP)
+         [X.525], which may be used for master-slave replication between
+         directory servers.  Other experimental LDAP replication
+         protocols also exist.)
+
+   This protocol is not intended to be used in applications requiring
+   transactional data consistency.
+
+   As this protocol transfers all visible values of entries belonging to
+   the content upon change instead of change deltas, this protocol is
+   not appropriate for bandwidth-challenged applications or deployments.
+
+1.3.  Overview
+
+   This section provides an overview of basic ways the Sync Operation
+   can be used to maintain a synchronized client copy of a DIT fragment.
+
+      -  Polling for changes: refreshOnly mode
+
+      -  Listening for changes: refreshAndPersist mode
+
+1.3.1.  Polling for Changes (refreshOnly)
+
+   To obtain its initial client copy, the client issues a Sync request:
+   a search request with the Sync Request Control with mode set to
+   refreshOnly.  The server, much like it would with a normal search
+   operation, returns (subject to access controls and other
+   restrictions) the content matching the search criteria (baseObject,
+   scope, filter, attributes).  Additionally, with each entry returned,
+   the server provides a Sync State Control indicating state add.  This
+   control contains the Universally Unique Identifier (UUID) [UUID] of
+
+
+
+Zeilenga & Choi               Experimental                      [Page 5]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   the entry [RFC4530].  Unlike the Distinguished Name (DN), which may
+   change over time, an entry's UUID is stable.  The initial content is
+   followed by a SearchResultDone with a Sync Done Control.  The Sync
+   Done Control provides a syncCookie.  The syncCookie represents
+   session state.
+
+   To poll for updates to the client copy, the client reissues the Sync
+   Operation with the syncCookie previously returned.  The server, much
+   as it would with a normal search operation, determines which content
+   would be returned as if the operation were a normal search operation.
+   However, using the syncCookie as an indicator of what content the
+   client was sent previously, the server sends copies of entries that
+   have changed with a Sync State Control indicating state add.  For
+   each changed entry, all (modified or unmodified) attributes belonging
+   to the content are sent.
+
+   The server may perform either or both of the two distinct
+   synchronization phases that are distinguished by how to synchronize
+   entries deleted from the content: the present and the delete phases.
+   When the server uses a single phase for the refresh stage, each phase
+   is marked as ended by a SearchResultDone with a Sync Done Control.  A
+   present phase is identified by a FALSE refreshDeletes value in the
+   Sync Done Control.  A delete phase is identified by a TRUE
+   refreshDeletes value.  The present phase may be followed by a delete
+   phase.  The two phases are delimited by a refreshPresent Sync Info
+   Message having a FALSE refreshDone value.  In the case that both the
+   phases are used, the present phase is used to bring the client copy
+   up to the state at which the subsequent delete phase can begin.
+
+   In the present phase, the server sends an empty entry (i.e., no
+   attributes) with a Sync State Control indicating state present for
+   each unchanged entry.
+
+   The delete phase may be used when the server can reliably determine
+   which entries in the prior client copy are no longer present in the
+   content and the number of such entries is less than or equal to the
+   number of unchanged entries.  In the delete mode, the server sends an
+   empty entry with a Sync State Control indicating state delete for
+   each entry that is no longer in the content, instead of returning an
+   empty entry with state present for each present entry.
+
+   The server may send syncIdSet Sync Info Messages containing the set
+   of UUIDs of either unchanged present entries or deleted entries,
+   instead of sending multiple individual messages.  If refreshDeletes
+   of syncIdSet is set to FALSE, the UUIDs of unchanged present entries
+   are contained in the syncUUIDs set; if refreshDeletes of syncIdSet is
+   set to TRUE, the UUIDs of the entries no longer present in the
+   content are contained in the syncUUIDs set.  An optional cookie can
+
+
+
+Zeilenga & Choi               Experimental                      [Page 6]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   be included in the syncIdSet to represent the state of the content
+   after synchronizing the presence or the absence of the entries
+   contained in the syncUUIDs set.
+
+   The synchronized copy of the DIT fragment is constructed by the
+   client.
+
+   If refreshDeletes of syncDoneValue is FALSE, the new copy includes
+   all changed entries returned by the reissued Sync Operation, as well
+   as all unchanged entries identified as being present by the reissued
+   Sync Operation, but whose content is provided by the previous Sync
+   Operation.  The unchanged entries not identified as being present are
+   deleted from the client content.  They had been either deleted,
+   moved, or otherwise scoped-out from the content.
+
+   If refreshDeletes of syncDoneValue is TRUE, the new copy includes all
+   changed entries returned by the reissued Sync Operation, as well as
+   all other entries of the previous copy except for those that are
+   identified as having been deleted from the content.
+
+   The client can, at some later time, re-poll for changes to this
+   synchronized client copy.
+
+1.3.2.  Listening for Changes (refreshAndPersist)
+
+   Polling for changes can be expensive in terms of server, client, and
+   network resources.  The refreshAndPersist mode allows for active
+   updates of changed entries in the content.
+
+   By selecting the refreshAndPersist mode, the client requests that the
+   server send updates of entries that are changed after the initial
+   refresh content is determined.  Instead of sending a SearchResultDone
+   Message as in polling, the server sends a Sync Info Message to the
+   client indicating that the refresh stage is complete and then enters
+   the persist stage.  After receipt of this Sync Info Message, the
+   client will construct a synchronized copy as described in Section
+   1.3.1.
+
+   The server may then send change notifications as the result of the
+   original Sync search request, which now remains persistent in the
+   server.  For entries to be added to the returned content, the server
+   sends a SearchResultEntry (with attributes) with a Sync State Control
+   indicating state add.  For entries to be deleted from the content,
+   the server sends a SearchResultEntry containing no attributes and a
+   Sync State Control indicating state delete.  For entries to be
+   modified in the return content, the server sends a SearchResultEntry
+   (with attributes) with a Sync State Control indicating state modify.
+
+
+
+
+Zeilenga & Choi               Experimental                      [Page 7]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   Upon modification of an entry, all (modified or unmodified)
+   attributes belonging to the content are sent.
+
+   Note that renaming an entry of the DIT may cause an add state change
+   where the entry is renamed into the content, a delete state change
+   where the entry is renamed out of the content, and a modify state
+   change where the entry remains in the content.  Also note that a
+   modification of an entry of the DIT may cause an add, delete, or
+   modify state change to the content.
+
+   Upon receipt of a change notification, the client updates its copy of
+   the content.
+
+   If the server desires to update the syncCookie during the persist
+   stage, it may include the syncCookie in any Sync State Control or
+   Sync Info Message returned.
+
+   The operation persists until canceled [RFC3909] by the client or
+   terminated by the server.  A Sync Done Control shall be attached to
+   SearchResultDone Message to provide a new syncCookie.
+
+1.4.  Conventions
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14 [RFC2119].
+
+   Protocol elements are described using ASN.1 [X.680] with implicit
+   tags.  The term "BER-encoded" means the element is to be encoded
+   using the Basic Encoding Rules [X.690] under the restrictions
+   detailed in Section 5.1 of [RFC4511].
+
+2.  Elements of the Sync Operation
+
+   The Sync Operation is defined as an extension to the LDAP Search
+   Operation [RFC4511] where the directory user agent (DUA or client)
+   submits a SearchRequest Message with a Sync Request Control and the
+   directory system agent (DSA or server) responds with zero or more
+   SearchResultEntry Messages, each with a Sync State Control; zero or
+   more SearchResultReference Messages, each with a Sync State Control;
+   zero or more Sync Info Intermediate Response Messages; and a
+   SearchResultDone Message with a Sync Done Control.
+
+   To allow clients to discover support for this operation, servers
+   implementing this operation SHOULD publish 1.3.6.1.4.1.4203.1.9.1.1
+   as a value of the 'supportedControl' attribute [RFC4512] of the root
+   DSA-specific entry (DSE).  A server MAY choose to advertise this
+   extension only when the client is authorized to use it.
+
+
+
+Zeilenga & Choi               Experimental                      [Page 8]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+2.1.  Common ASN.1 Elements
+
+2.1.1.  syncUUID
+
+   The syncUUID data type is an OCTET STRING holding a 128-bit
+   (16-octet) Universally Unique Identifier (UUID) [UUID].
+
+      syncUUID ::= OCTET STRING (SIZE(16))
+           -- constrained to UUID
+
+2.1.2.  syncCookie
+
+   The syncCookie is a notational convenience to indicate that, while
+   the syncCookie type is encoded as an OCTET STRING, its value is an
+   opaque value containing information about the synchronization session
+   and its state.  Generally, the session information would include a
+   hash of the operation parameters that the server requires not be
+   changed and the synchronization state information would include a
+   commit (log) sequence number, a change sequence number, or a time
+   stamp.  For convenience of description, the term "no cookie" refers
+   either to a null cookie or to a cookie with pre-initialized
+   synchronization state.
+
+      syncCookie ::= OCTET STRING
+
+2.2.  Sync Request Control
+
+   The Sync Request Control is an LDAP Control [RFC4511] where the
+   controlType is the object identifier 1.3.6.1.4.1.4203.1.9.1.1 and the
+   controlValue, an OCTET STRING, contains a BER-encoded
+   syncRequestValue.  The criticality field is either TRUE or FALSE.
+
+      syncRequestValue ::= SEQUENCE {
+          mode ENUMERATED {
+              -- 0 unused
+              refreshOnly       (1),
+              -- 2 reserved
+              refreshAndPersist (3)
+          },
+          cookie     syncCookie OPTIONAL,
+          reloadHint BOOLEAN DEFAULT FALSE
+      }
+
+   The Sync Request Control is only applicable to the SearchRequest
+   Message.
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                      [Page 9]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+2.3.  Sync State Control
+
+   The Sync State Control is an LDAP Control [RFC4511] where the
+   controlType is the object identifier 1.3.6.1.4.1.4203.1.9.1.2 and the
+   controlValue, an OCTET STRING, contains a BER-encoded syncStateValue.
+   The criticality is FALSE.
+
+      syncStateValue ::= SEQUENCE {
+          state ENUMERATED {
+              present (0),
+              add (1),
+              modify (2),
+              delete (3)
+          },
+          entryUUID syncUUID,
+          cookie    syncCookie OPTIONAL
+      }
+
+   The Sync State Control is only applicable to SearchResultEntry and
+   SearchResultReference Messages.
+
+2.4.  Sync Done Control
+
+   The Sync Done Control is an LDAP Control [RFC4511] where the
+   controlType is the object identifier 1.3.6.1.4.1.4203.1.9.1.3 and the
+   controlValue contains a BER-encoded syncDoneValue.  The criticality
+   is FALSE (and hence absent).
+
+      syncDoneValue ::= SEQUENCE {
+          cookie          syncCookie OPTIONAL,
+          refreshDeletes  BOOLEAN DEFAULT FALSE
+      }
+
+   The Sync Done Control is only applicable to the SearchResultDone
+   Message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 10]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+2.5.  Sync Info Message
+
+   The Sync Info Message is an LDAP Intermediate Response Message
+   [RFC4511] where responseName is the object identifier
+   1.3.6.1.4.1.4203.1.9.1.4 and responseValue contains a BER-encoded
+   syncInfoValue.  The criticality is FALSE (and hence absent).
+
+      syncInfoValue ::= CHOICE {
+          newcookie      [0] syncCookie,
+          refreshDelete  [1] SEQUENCE {
+              cookie         syncCookie OPTIONAL,
+              refreshDone    BOOLEAN DEFAULT TRUE
+          },
+          refreshPresent [2] SEQUENCE {
+              cookie         syncCookie OPTIONAL,
+              refreshDone    BOOLEAN DEFAULT TRUE
+          },
+          syncIdSet      [3] SEQUENCE {
+              cookie         syncCookie OPTIONAL,
+              refreshDeletes BOOLEAN DEFAULT FALSE,
+              syncUUIDs      SET OF syncUUID
+          }
+      }
+
+2.6.  Sync Result Codes
+
+   The following LDAP resultCode [RFC4511] is defined:
+
+      e-syncRefreshRequired (4096)
+
+3.  Content Synchronization
+
+   The Sync Operation is invoked when the client sends a SearchRequest
+   Message with a Sync Request Control.
+
+   The absence of a cookie or an initialized synchronization state in a
+   cookie indicates a request for initial content, while the presence of
+   a cookie representing a state of a client copy indicates a request
+   for a content update.  Synchronization Sessions are discussed in
+   Section 3.1.  Content Determination is discussed in Section 3.2.
+
+   The mode is either refreshOnly or refreshAndPersist.  The refreshOnly
+   and refreshAndPersist modes are discussed in Sections 3.3 and 3.4,
+   respectively.  The refreshOnly mode consists only of a refresh stage,
+   while the refreshAndPersist mode consists of a refresh stage and a
+   subsequent persist stage.
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 11]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+3.1.  Synchronization Session
+
+   A sequence of Sync Operations where the last cookie returned by the
+   server for one operation is provided by the client in the next
+   operation is said to belong to the same Synchronization Session.
+
+   The client MUST specify the same content-controlling parameters (see
+   Section 3.5) in each Search Request of the session.  The client
+   SHOULD also issue each Sync request of a session under the same
+   authentication and authorization associations with equivalent
+   integrity and protections.  If the server does not recognize the
+   request cookie or the request is made under different associations or
+   non-equivalent protections, the server SHALL return the initial
+   content as if no cookie had been provided or return an empty content
+   with the e-syncRefreshRequired LDAP result code.  The decision
+   between the return of the initial content and the return of the empty
+   content with the e-syncRefreshRequired result code MAY be based on
+   reloadHint in the Sync Request Control from the client.  If the
+   server recognizes the request cookie as representing empty or initial
+   synchronization state of the client copy, the server SHALL return the
+   initial content.
+
+   A Synchronization Session may span multiple LDAP sessions between the
+   client and the server.  The client SHOULD issue each Sync request of
+   a session to the same server.  (Note: Shadowing considerations are
+   discussed in Section 6.)
+
+3.2.  Content Determination
+
+   The content to be provided is determined by parameters of the Search
+   Request, as described in [RFC4511], and possibly other controls.  The
+   same content parameters SHOULD be used in each Sync request of a
+   session.  If different content is requested and the server is
+   unwilling or unable to process the request, the server SHALL return
+   the initial content as if no cookie had been provided or return an
+   empty content with the e-syncRefreshRequired LDAP result code.  The
+   decision between the return of the initial content and the return of
+   the empty content with the e-syncRefreshRequired result code MAY be
+   based on reloadHint in the Sync Request Control from the client.
+
+   The content may not necessarily include all entries or references
+   that would be returned by a normal search operation, nor, for those
+   entries included, all attributes returned by a normal search.  When
+   the server is unwilling or unable to provide synchronization for any
+   attribute for a set of entries, the server MUST treat all filter
+   components matching against these attributes as Undefined and MUST
+   NOT return these attributes in SearchResultEntry responses.
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 12]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   Servers SHOULD support synchronization for all non-collective user-
+   application attributes for all entries.
+
+   The server may also return continuation references to other servers
+   or to itself.  The latter is allowed as the server may partition the
+   entries it holds into separate synchronization contexts.
+
+   The client may chase all or some of these continuations, each as a
+   separate content synchronization session.
+
+3.3.  refreshOnly Mode
+
+   A Sync request with mode refreshOnly and with no cookie is a poll for
+   initial content.  A Sync request with mode refreshOnly and with a
+   cookie representing a synchronization state is a poll for content
+   update.
+
+3.3.1.  Initial Content Poll
+
+   Upon receipt of the request, the server provides the initial content
+   using a set of zero or more SearchResultEntry and
+   SearchResultReference Messages followed by a SearchResultDone
+   Message.
+
+   Each SearchResultEntry Message SHALL include a Sync State Control of
+   state add, an entryUUID containing the entry's UUID, and no cookie.
+   Each SearchResultReference Message SHALL include a Sync State Control
+   of state add, an entryUUID containing the UUID associated with the
+   reference (normally the UUID of the associated named referral
+   [RFC3296] object), and no cookie.  The SearchResultDone Message SHALL
+   include a Sync Done Control having refreshDeletes set to FALSE.
+
+   A resultCode value of success indicates that the operation
+   successfully completed.  Otherwise, the result code indicates the
+   nature of the failure.  The server may return e-syncRefreshRequired
+   result code on the initial content poll if it is safe to do so when
+   it is unable to perform the operation due to various reasons.
+   reloadHint is set to FALSE in the SearchRequest Message requesting
+   the initial content poll.
+
+   If the operation is successful, a cookie representing the
+   synchronization state of the current client copy SHOULD be returned
+   for use in subsequent Sync Operations.
+
+3.3.2.  Content Update Poll
+
+   Upon receipt of the request, the server provides the content refresh
+   using a set of zero or more SearchResultEntry and
+
+
+
+Zeilenga & Choi               Experimental                     [Page 13]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   SearchResultReference Messages followed by a SearchResultDone
+   Message.
+
+   The server is REQUIRED to:
+
+      a) provide the sequence of messages necessary for eventual
+         convergence of the client's copy of the content to the server's
+         copy,
+
+      b) treat the request as an initial content request (e.g., ignore
+         the cookie or the synchronization state represented in the
+         cookie),
+
+      c) indicate that the incremental convergence is not possible by
+         returning e-syncRefreshRequired,
+
+      d) return a resultCode other than success or e-
+         syncRefreshRequired.
+
+   A Sync Operation may consist of a single present phase, a single
+   delete phase, or a present phase followed by a delete phase.
+
+   In each phase, for each entry or reference that has been added to the
+   content or been changed since the previous Sync Operation indicated
+   by the cookie, the server returns a SearchResultEntry or
+   SearchResultReference Message, respectively, each with a Sync State
+   Control consisting of state add, an entryUUID containing the UUID of
+   the entry or reference, and no cookie.  Each SearchResultEntry
+   Message represents the current state of a changed entry.  Each
+   SearchResultReference Message represents the current state of a
+   changed reference.
+
+   In the present phase, for each entry that has not been changed since
+   the previous Sync Operation, an empty SearchResultEntry is returned
+   whose objectName reflects the entry's current DN, whose attributes
+   field is empty, and whose Sync State Control consists of state
+   present, an entryUUID containing the UUID of the entry, and no
+   cookie.  For each reference that has not been changed since the
+   previous Sync Operation, an empty SearchResultReference containing an
+   empty SEQUENCE OF LDAPURL is returned with a Sync State Control
+   consisting of state present, an entryUUID containing the UUID of the
+   entry, and no cookie.  No messages are sent for entries or references
+   that are no longer in the content.
+
+   Multiple empty entries with a Sync State Control of state present
+   SHOULD be coalesced into one or more Sync Info Messages of syncIdSet
+   value with refreshDeletes set to FALSE.  syncUUIDs contain a set of
+   UUIDs of the entries and references unchanged since the last Sync
+
+
+
+Zeilenga & Choi               Experimental                     [Page 14]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   Operation.  syncUUIDs may be empty.  The Sync Info Message of
+   syncIdSet may contain a cookie to represent the state of the content
+   after performing the synchronization of the entries in the set.
+
+   In the delete phase, for each entry no longer in the content, the
+   server returns a SearchResultEntry whose objectName reflects a past
+   DN of the entry or is empty, whose attributes field is empty, and
+   whose Sync State Control consists of state delete, an entryUUID
+   containing the UUID of the deleted entry, and no cookie.  For each
+   reference no longer in the content, a SearchResultReference
+   containing an empty SEQUENCE OF LDAPURL is returned with a Sync State
+   Control consisting of state delete, an entryUUID containing the UUID
+   of the deleted reference, and no cookie.
+
+   Multiple empty entries with a Sync State Control of state delete
+   SHOULD be coalesced into one or more Sync Info Messages of syncIdSet
+   value with refreshDeletes set to TRUE.  syncUUIDs contain a set of
+   UUIDs of the entries and references that have been deleted from the
+   content since the last Sync Operation.  syncUUIDs may be empty.  The
+   Sync Info Message of syncIdSet may contain a cookie to represent the
+   state of the content after performing the synchronization of the
+   entries in the set.
+
+   When a present phase is followed by a delete phase, the two phases
+   are delimited by a Sync Info Message containing syncInfoValue of
+   refreshPresent, which may contain a cookie representing the state
+   after completing the present phase.  The refreshPresent contains
+   refreshDone, which is always FALSE in the refreshOnly mode of Sync
+   Operation because it is followed by a delete phase.
+
+   If a Sync Operation consists of a single phase, each phase and hence
+   the Sync Operation are marked as ended by a SearchResultDone Message
+   with Sync Done Control, which SHOULD contain a cookie representing
+   the state of the content after completing the Sync Operation.  The
+   Sync Done Control contains refreshDeletes, which is set to FALSE for
+   the present phase and set to TRUE for the delete phase.
+
+   If a Sync Operation consists of a present phase followed by a delete
+   phase, the Sync Operation is marked as ended at the end of the delete
+   phase by a SearchResultDone Message with Sync Done Control, which
+   SHOULD contain a cookie representing the state of the content after
+   completing the Sync Operation.  The Sync Done Control contains
+   refreshDeletes, which is set to TRUE.
+
+   The client can specify whether it prefers to receive an initial
+   content by supplying reloadHint of TRUE or to receive a e-
+   syncRefreshRequired resultCode by supplying reloadHint of FALSE
+   (hence absent), in the case that the server determines that it is
+
+
+
+Zeilenga & Choi               Experimental                     [Page 15]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   impossible or inefficient to achieve the eventual convergence by
+   continuing the current incremental synchronization thread.
+
+   A resultCode value of success indicates that the operation is
+   successfully completed.  A resultCode value of e-syncRefreshRequired
+   indicates that a full or partial refresh is needed.  Otherwise, the
+   result code indicates the nature of failure.  A cookie is provided in
+   the Sync Done Control for use in subsequent Sync Operations for
+   incremental synchronization.
+
+3.4.  refreshAndPersist Mode
+
+   A Sync request with mode refreshAndPersist asks for initial content
+   or content update (during the refresh stage) followed by change
+   notifications (during the persist stage).
+
+3.4.1.  refresh Stage
+
+   The content refresh is provided as described in Section 3.3, except
+   that the successful completion of content refresh is indicated by
+   sending a Sync Info Message of refreshDelete or refreshPresent with a
+   refreshDone value set to TRUE instead of a SearchResultDone Message
+   with resultCode success.  A cookie SHOULD be returned in the Sync
+   Info Message to represent the state of the content after finishing
+   the refresh stage of the Sync Operation.
+
+3.4.2.  persist Stage
+
+   Change notifications are provided during the persist stage.
+
+   As updates are made to the DIT, the server notifies the client of
+   changes to the content.  DIT updates may cause entries and references
+   to be added to the content, deleted from the content, or modified
+   within the content.  DIT updates may also cause references to be
+   added, deleted, or modified within the content.
+
+   Where DIT updates cause an entry to be added to the content, the
+   server provides a SearchResultEntry Message that represents the entry
+   as it appears in the content.  The message SHALL include a Sync State
+   Control with state of add, an entryUUID containing the entry's UUID,
+   and an optional cookie.
+
+   Where DIT updates cause a reference to be added to the content, the
+   server provides a SearchResultReference Message that represents the
+   reference in the content.  The message SHALL include a Sync State
+   Control with state of add, an entryUUID containing the UUID
+   associated with the reference, and an optional cookie.
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 16]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   Where DIT updates cause an entry to be modified within the content,
+   the server provides a SearchResultEntry Message that represents the
+   entry as it appears in the content.  The message SHALL include a Sync
+   State Control with state of modify, an entryUUID containing the
+   entry's UUID, and an optional cookie.
+
+   Where DIT updates cause a reference to be modified within the
+   content, the server provides a SearchResultReference Message that
+   represents the reference in the content.  The message SHALL include a
+   Sync State Control with state of modify, an entryUUID containing the
+   UUID associated with the reference, and an optional cookie.
+
+   Where DIT updates cause an entry to be deleted from the content, the
+   server provides a SearchResultEntry Message with no attributes.  The
+   message SHALL include a Sync State Control with state of delete, an
+   entryUUID containing the entry's UUID, and an optional cookie.
+
+   Where DIT updates cause a reference to be deleted from the content,
+   the server provides a SearchResultReference Message with an empty
+   SEQUENCE OF LDAPURL.  The message SHALL include a Sync State Control
+   with state of delete, an entryUUID containing the UUID associated
+   with the reference, and an optional cookie.
+
+   Multiple empty entries with a Sync State Control of state delete
+   SHOULD be coalesced into one or more Sync Info Messages of syncIdSet
+   value with refreshDeletes set to TRUE. syncUUIDs contain a set of
+   UUIDs of the entries and references that have been deleted from the
+   content.  The Sync Info Message of syncIdSet may contain a cookie to
+   represent the state of the content after performing the
+   synchronization of the entries in the set.
+
+   With each of these messages, the server may provide a new cookie to
+   be used in subsequent Sync Operations.  Additionally, the server may
+   also return Sync Info Messages of choice newCookie to provide a new
+   cookie.  The client SHOULD use the newest (last) cookie it received
+   from the server in subsequent Sync Operations.
+
+3.5.  Search Request Parameters
+
+   As stated in Section 3.1, the client SHOULD specify the same
+   content-controlling parameters in each Search Request of the session.
+   All fields of the SearchRequest Message are considered content-
+   controlling parameters except for sizeLimit and timeLimit.
+
+
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 17]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+3.5.1.  baseObject
+
+   As with the normal search operation, the refresh and persist stages
+   are not isolated from DIT changes.  It is possible that the entry
+   referred to by the baseObject is deleted, renamed, or moved.  It is
+   also possible that the alias object used in finding the entry
+   referred to by the baseObject is changed such that the baseObject
+   refers to a different entry.
+
+   If the DIT is updated during processing of the Sync Operation in a
+   manner that causes the baseObject no longer to refer to any entry or
+   in a manner that changes the entry the baseObject refers to, the
+   server SHALL return an appropriate non-success result code, such as
+   noSuchObject, aliasProblem, aliasDereferencingProblem, referral, or
+   e-syncRefreshRequired.
+
+3.5.2.  derefAliases
+
+   This operation does not support alias dereferencing during searching.
+   The client SHALL specify neverDerefAliases or derefFindingBaseObj for
+   the SearchRequest derefAliases parameter.  The server SHALL treat
+   other values (e.g., derefInSearching, derefAlways) as protocol
+   errors.
+
+3.5.3.  sizeLimit
+
+   The sizeLimit applies only to entries (regardless of their state in
+   Sync State Control) returned during the refreshOnly operation or the
+   refresh stage of the refreshAndPersist operation.
+
+3.5.4.  timeLimit
+
+   For a refreshOnly Sync Operation, the timeLimit applies to the whole
+   operation.  For a refreshAndPersist operation, the timeLimit applies
+   only to the refresh stage including the generation of the Sync Info
+   Message with a refreshDone value of TRUE.
+
+3.5.5.  filter
+
+   The client SHOULD avoid filter assertions that apply to the values of
+   the attributes likely to be considered by the server as ones holding
+   meta-information.  See Section 4.
+
+3.6.  objectName
+
+   The Sync Operation uses entryUUID values provided in the Sync State
+   Control as the primary keys to entries.  The client MUST use these
+   entryUUIDs to correlate synchronization messages.
+
+
+
+Zeilenga & Choi               Experimental                     [Page 18]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   In some circumstances, the DN returned may not reflect the entry's
+   current DN.  In particular, when the entry is being deleted from the
+   content, the server may provide an empty DN if the server does not
+   wish to disclose the entry's current DN (or, if deleted from the DIT,
+   the entry's last DN).
+
+   Also note that the entry's DN may be viewed as meta information (see
+   Section 4.1).
+
+3.7.  Canceling the Sync Operation
+
+   Servers MUST implement the LDAP Cancel [RFC3909] Operation and
+   support cancellation of outstanding Sync Operations as described
+   here.
+
+   To cancel an outstanding Sync Operation, the client issues an LDAP
+   Cancel [RFC3909] Operation.
+
+   If at any time the server becomes unwilling or unable to continue
+   processing a Sync Operation, the server SHALL return a
+   SearchResultDone with a non-success resultCode indicating the reason
+   for the termination of the operation.
+
+   Whether the client or the server initiated the termination, the
+   server may provide a cookie in the Sync Done Control for use in
+   subsequent Sync Operations.
+
+3.8.  Refresh Required
+
+   In order to achieve the eventually-convergent synchronization, the
+   server may terminate the Sync Operation in the refresh or persist
+   stages by returning an e-syncRefreshRequired resultCode to the
+   client.  If no cookie is provided, a full refresh is needed.  If a
+   cookie representing a synchronization state is provided in this
+   response, an incremental refresh is needed.
+
+   To obtain a full refresh, the client then issues a new
+   synchronization request with no cookie.  To obtain an incremental
+   reload, the client issues a new synchronization with the provided
+   cookie.
+
+   The server may choose to provide a full copy in the refresh stage
+   (e.g., ignore the cookie or the synchronization state represented in
+   the cookie) instead of providing an incremental refresh in order to
+   achieve the eventual convergence.
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 19]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   The decision between the return of the initial content and the return
+   of the e-syncRefreshRequired result code may be based on reloadHint
+   in the Sync Request Control from the client.
+
+   In the case of persist stage Sync, the server returns the resultCode
+   of e-syncRefreshRequired to the client to indicate that the client
+   needs to issue a new Sync Operation in order to obtain a synchronized
+   copy of the content.  If no cookie is provided, a full refresh is
+   needed.  If a cookie representing a synchronization state is
+   provided, an incremental refresh is needed.
+
+   The server may also return e-syncRefreshRequired if it determines
+   that a refresh would be more efficient than sending all the messages
+   required for convergence.
+
+   Note that the client may receive one or more of SearchResultEntry,
+   SearchResultReference, and/or Sync Info Messages before it receives a
+   SearchResultDone Message with the e-syncRefreshRequired result code.
+
+3.9.  Chattiness Considerations
+
+   The server MUST ensure that the number of entry messages generated to
+   refresh the client content does not exceed the number of entries
+   presently in the content.  While there is no requirement for servers
+   to maintain history information, if the server has sufficient history
+   to allow it to reliably determine which entries in the prior client
+   copy are no longer present in the content and the number of such
+   entries is less than or equal to the number of unchanged entries, the
+   server SHOULD generate delete entry messages instead of present entry
+   messages (see Section 3.3.2).
+
+   When the amount of history information maintained in the server is
+   not enough for the clients to perform infrequent refreshOnly Sync
+   Operations, it is likely that the server has incomplete history
+   information (e.g., due to truncation) by the time those clients
+   connect again.
+
+   The server SHOULD NOT resort to full reload when the history
+   information is not enough to generate delete entry messages.  The
+   server SHOULD generate either present entry messages only or present
+   entry messages followed by delete entry messages to bring the client
+   copy to the current state.  In the latter case, the present entry
+   messages bring the client copy to a state covered by the history
+   information maintained in the server.
+
+   The server SHOULD maintain enough (current or historical) state
+   information (such as a context-wide last modify time stamp) to
+   determine if no changes were made in the context since the content
+
+
+
+Zeilenga & Choi               Experimental                     [Page 20]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   refresh was provided and, when no changes were made, generate zero
+   delete entry messages instead of present messages.
+
+   The server SHOULD NOT use the history information when its use does
+   not reduce the synchronization traffic or when its use can expose
+   sensitive information not allowed to be received by the client.
+
+   The server implementor should also consider chattiness issues that
+   span multiple Sync Operations of a session.  As noted in Section 3.8,
+   the server may return e-syncRefreshRequired if it determines that a
+   reload would be more efficient than continuing under the current
+   operation.  If reloadHint in the Sync Request is TRUE, the server may
+   initiate a reload without directing the client to request a reload.
+
+   The server SHOULD transfer a new cookie frequently to avoid having to
+   transfer information already provided to the client.  Even where DIT
+   changes do not cause content synchronization changes to be
+   transferred, it may be advantageous to provide a new cookie using a
+   Sync Info Message.  However, the server SHOULD avoid overloading the
+   client or network with Sync Info Messages.
+
+   During persist mode, the server SHOULD coalesce multiple outstanding
+   messages updating the same entry.  The server MAY delay generation of
+   an entry update in anticipation of subsequent changes to that entry
+   that could be coalesced.  The length of the delay should be long
+   enough to allow coalescing of update requests issued back to back but
+   short enough that the transient inconsistency induced by the delay is
+   corrected in a timely manner.
+
+   The server SHOULD use the syncIdSet Sync Info Message when there are
+   multiple delete or present messages to reduce the amount of
+   synchronization traffic.
+
+   Also note that there may be many clients interested in a particular
+   directory change, and that servers attempting to service all of these
+   at once may cause congestion on the network.  The congestion issues
+   are magnified when the change requires a large transfer to each
+   interested client.  Implementors and deployers of servers should take
+   steps to prevent and manage network congestion.
+
+3.10.  Operation Multiplexing
+
+   The LDAP protocol model [RFC4511] allows operations to be multiplexed
+   over a single LDAP session.  Clients SHOULD NOT maintain multiple
+   LDAP sessions with the same server.  Servers SHOULD ensure that
+   responses from concurrently processed operations are interleaved
+   fairly.
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 21]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   Clients SHOULD combine Sync Operations whose result set is largely
+   overlapping.  This avoids having to return multiple messages, once
+   for each overlapping session, for changes to entries in the overlap.
+
+   Clients SHOULD NOT combine Sync Operations whose result sets are
+   largely non-overlapping.  This ensures that an event requiring an
+   e-syncRefreshRequired response can be limited to as few result sets
+   as possible.
+
+4.  Meta Information Considerations
+
+4.1.  Entry DN
+
+   As an entry's DN is constructed from its relative DN (RDN) and the
+   entry's parent's DN, it is often viewed as meta information.
+
+   While renaming or moving to a new superior causes the entry's DN to
+   change, that change SHOULD NOT, by itself, cause synchronization
+   messages to be sent for that entry.  However, if the renaming or the
+   moving could cause the entry to be added or deleted from the content,
+   appropriate synchronization messages should be generated to indicate
+   this to the client.
+
+   When a server treats the entry's DN as meta information, the server
+   SHALL either
+
+      -  evaluate all MatchingRuleAssertions [RFC4511] to TRUE if
+         matching a value of an attribute of the entry, otherwise
+         Undefined, or
+
+      -  evaluate all MatchingRuleAssertion with dnAttributes of TRUE as
+         Undefined.
+
+   The latter choice is offered for ease of server implementation.
+
+4.2.  Operational Attributes
+
+   Where values of an operational attribute are determined by values not
+   held as part of the entry it appears in, the operational attribute
+   SHOULD NOT support synchronization of that operational attribute.
+
+   For example, in servers that implement the X.501 subschema model
+   [X.501], servers should not support synchronization of the
+   subschemaSubentry attribute as its value is determined by values held
+   and administrated in subschema subentries.
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 22]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   As a counter example, servers that implement aliases [RFC4512][X.501]
+   can support synchronization of the aliasedObjectName attribute as its
+   values are held and administrated as part of the alias entries.
+
+   Servers SHOULD support synchronization of the following operational
+   attributes: createTimestamp, modifyTimestamp, creatorsName,
+   modifiersName [RFC4512].  Servers MAY support synchronization of
+   other operational attributes.
+
+4.3.  Collective Attributes
+
+   A collective attribute is "a user attribute whose values are the same
+   for each member of an entry collection" [X.501].  Use of collective
+   attributes in LDAP is discussed in [RFC3671].
+
+   Modification of a collective attribute generally affects the content
+   of multiple entries, which are the members of the collection.  It is
+   inefficient to include values of collective attributes visible in
+   entries of the collection, as a single modification of a collective
+   attribute requires transmission of multiple SearchResultEntry (one
+   for each entry of the collection that the modification affected).
+
+   Servers SHOULD NOT synchronize collective attributes appearing in
+   entries of any collection.  Servers MAY support synchronization of
+   collective attributes appearing in collective attribute subentries.
+
+4.4.  Access and Other Administrative Controls
+
+   Entries are commonly subject to access and other administrative
+   Controls.  While portions of the policy information governing a
+   particular entry may be held in the entry, policy information is
+   often held elsewhere (in superior entries, in subentries, in the root
+   DSE, in configuration files, etc.).  Because of this, changes to
+   policy information make it difficult to ensure eventual convergence
+   during incremental synchronization.
+
+   Where it is impractical or infeasible to generate content changes
+   resulting from a change to policy information, servers may opt to
+   return e-syncRefreshRequired or to treat the Sync Operation as an
+   initial content request (e.g., ignore the cookie or the
+   synchronization state represented in the cookie).
+
+5.  Interaction with Other Controls
+
+   The Sync Operation may be used with:
+
+      - ManageDsaIT Control [RFC3296]
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 23]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+      - Subentries Control [RFC3672]
+
+   as described below.  The Sync Operation may be used with other LDAP
+   extensions as detailed in other documents.
+
+5.1.  ManageDsaIT Control
+
+   The ManageDsaIT Control [RFC3296] indicates that the operation acts
+   upon the DSA Information Tree and causes referral and other special
+   entries to be treated as object entries with respect to the
+   operation.
+
+5.2.  Subentries Control
+
+   The Subentries Control is used with the search operation "to control
+   the visibility of entries and subentries which are within scope"
+   [RFC3672].  When used with the Sync Operation, the subentries control
+   and other factors (search scope, filter, etc.) are used to determine
+   whether an entry or subentry appears in the content.
+
+6.  Shadowing Considerations
+
+   As noted in [RFC4511], some servers may hold shadow copies of entries
+   that can be used to answer search and comparison queries.  Such
+   servers may also support content synchronization requests.  This
+   section discusses considerations for implementors and deployers for
+   the implementation and deployment of the Sync operation in shadowed
+   directories.
+
+   While a client may know of multiple servers that are equally capable
+   of being used to obtain particular directory content from, a client
+   SHOULD NOT assume that each of these servers is equally capable of
+   continuing a content synchronization session.  As stated in Section
+   3.1, the client SHOULD issue each Sync request of a Sync session to
+   the same server.
+
+   However, through domain naming or IP address redirection or other
+   techniques, multiple physical servers can be made to appear as one
+   logical server to a client.  Only servers that are equally capable in
+   regards to their support for the Sync operation and that hold equally
+   complete copies of the entries should be made to appear as one
+   logical server.  In particular, each physical server acting as one
+   logical server SHOULD be equally capable of continuing a content
+   synchronization based upon cookies provided by any of the other
+   physical servers without requiring a full reload.  Because there is
+   no standard LDAP shadowing mechanism, the specification of how to
+   independently implement equally capable servers (as well as the
+   precise definition of "equally capable") is left to future documents.
+
+
+
+Zeilenga & Choi               Experimental                     [Page 24]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   Note that it may be difficult for the server to reliably determine
+   what content was provided to the client by another server, especially
+   in the shadowing environments that allow shadowing events to be
+   coalesced.  For these servers, the use of the delete phase discussed
+   in Section 3.3.2 may not be applicable.
+
+7.  Security Considerations
+
+   In order to maintain a synchronized copy of the content, a client is
+   to delete information from its copy of the content as described
+   above.  However, the client may maintain knowledge of information
+   disclosed to it by the server separate from its copy of the content
+   used for synchronization.  Management of this knowledge is beyond the
+   scope of this document.  Servers should be careful not to disclose
+   information for content the client is not authorized to have
+   knowledge of and/or about.
+
+   While the information provided by a series of refreshOnly Sync
+   Operations is similar to that provided by a series of Search
+   Operations, persist stage may disclose additional information.  A
+   client may be able to discern information about the particular
+   sequence of update operations that caused content change.
+
+   Implementors should take precautions against malicious cookie
+   content, including malformed cookies or valid cookies used with
+   different security associations and/or protections in an attempt to
+   obtain unauthorized access to information.  Servers may include a
+   digital signature in the cookie to detect tampering.
+
+   The operation may be the target of direct denial-of-service attacks.
+   Implementors should provide safeguards to ensure the operation is not
+   abused.  Servers may place access control or other restrictions upon
+   the use of this operation.
+
+   Note that even small updates to the directory may cause a significant
+   amount of traffic to be generated to clients using this operation.  A
+   user could abuse its update privileges to mount an indirect denial of
+   service to these clients, other clients, and/or portions of the
+   network.  Servers should provide safeguards to ensure that update
+   operations are not abused.
+
+   Implementors of this (or any) LDAP extension should be familiar with
+   general LDAP security considerations [RFC4510].
+
+
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 25]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+8.  IANA Considerations
+
+   Registration of the following values have been completed by the IANA
+   [RFC4520].
+
+8.1.  Object Identifier
+
+   The OID arc 1.3.6.1.4.1.4203.1.9.1 was assigned [ASSIGN] by the
+   OpenLDAP Foundation, under its IANA-assigned private enterprise
+   allocation [PRIVATE], for use in this specification.
+
+8.2.  LDAP Protocol Mechanism
+
+   The IANA has registered the LDAP Protocol Mechanism described in this
+   document.
+
+      Subject: Request for LDAP Protocol Mechanism Registration
+      Object Identifier: 1.3.6.1.4.1.4203.1.9.1.1
+      Description: LDAP Content Synchronization Control
+      Person & email address to contact for further information:
+          Kurt Zeilenga <kurt at openldap.org>
+      Usage: Control
+      Specification: RFC 4533
+      Author/Change Controller: Kurt D. Zeilenga, Jong Hyuk Choi
+      Comments: none
+
+8.3.  LDAP Result Codes
+
+   The IANA has registered the LDAP Result Code described in this
+   document.
+
+      Subject: LDAP Result Code Registration
+      Person & email address to contact for further information:
+          Kurt Zeilenga <kurt at OpenLDAP.org>
+      Result Code Name: e-syncRefreshRequired (4096)
+      Specification: RFC 4533
+      Author/Change Controller: Kurt D. Zeilenga, Jong Hyuk Choi
+      Comments:  none
+
+9.  Acknowledgements
+
+   This document borrows significantly from the LDAP Client Update
+   Protocol [RFC3928], a product of the IETF LDUP working group.  This
+   document also benefited from Persistent Search [PSEARCH], Triggered
+   Search [TSEARCH], and Directory Synchronization [DIRSYNC] works.
+   This document also borrows from "Lightweight Directory Access
+   Protocol (v3)" [RFC2251].
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 26]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+10.  Normative References
+
+   [RFC2119]   Bradner, S., "Key words for use in RFCs to Indicate
+               Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3296]   Zeilenga, K., "Named Subordinate References in
+               Lightweight Directory Access Protocol (LDAP)
+               Directories", RFC 3296, July 2002.
+
+   [RFC3671]   Zeilenga, K., "Collective Attributes in the Lightweight
+               Directory Access Protocol (LDAP)", RFC 3671, December
+               2003.
+
+   [RFC3672]   Zeilenga, K., "Subentries in the Lightweight Directory
+               Access Protocol (LDAP)", RFC 3672, December 2003.
+
+   [RFC3909]   Zeilenga, K., "Lightweight Directory Access Protocol
+               (LDAP) Cancel Operation", RFC 3909, October 2004.
+
+   [RFC4510]   Zeilenga, K., Ed., "Lightweight Directory Access Protocol
+               (LDAP): Technical Specification Road Map", RFC 4510, June
+               2006.
+
+   [RFC4511]   Sermersheim, J., Ed., "Lightweight Directory Access
+               Protocol (LDAP): The Protocol", RFC 4511, June 2006.
+
+   [RFC4512]   Zeilenga, K., "Lightweight Directory Access Protocol
+               (LDAP): Directory Information Models", RFC 4512, June
+               2006.
+
+   [RFC4530]   Zeilenga, K., "Lightweight Directory Access Protocol
+               (LDAP) entryUUID Operational Attribute", RFC 4530, June
+               2006.
+
+   [UUID]      International Organization for Standardization (ISO),
+               "Information technology - Open Systems Interconnection -
+               Remote Procedure Call", ISO/IEC 11578:1996
+
+   [X.501]     International Telecommunication Union - Telecommunication
+               Standardization Sector, "The Directory -- Models,"
+               X.501(1993) (also ISO/IEC 9594-2:1994).
+
+   [X.680]     International Telecommunication Union - Telecommunication
+               Standardization Sector, "Abstract Syntax Notation One
+               (ASN.1) - Specification of Basic Notation", X.680(1997)
+               (also ISO/IEC 8824-1:1998).
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 27]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   [X.690]     International Telecommunication Union - Telecommunication
+               Standardization Sector, "Specification of ASN.1 encoding
+               rules: Basic Encoding Rules (BER), Canonical Encoding
+               Rules (CER), and Distinguished Encoding Rules (DER)",
+               X.690(1997) (also ISO/IEC 8825-1:1998).
+
+11.  Informative References
+
+   [RFC2251]   Wahl, M., Howes, T., and S. Kille, "Lightweight Directory
+               Access Protocol (v3)", RFC 2251, December 1997.
+
+   [RFC3928]   Megginson, R., Ed., Smith, M., Natkovich, O., and J.
+               Parham, "Lightweight Directory Access Protocol (LDAP)
+               Client Update Protocol (LCUP)", RFC 3928, October 2004.
+
+   [RFC4520]   Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
+               Considerations for the Lightweight Directory Access
+               Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
+
+   [PRIVATE]   IANA, "Private Enterprise Numbers",
+               http://www.iana.org/assignments/enterprise-numbers.
+
+   [ASSIGN]    OpenLDAP Foundation, "OpenLDAP OID Delegations",
+               http://www.openldap.org/foundation/oid-delegate.txt.
+
+   [X.500]     International Telecommunication Union - Telecommunication
+               Standardization Sector, "The Directory -- Overview of
+               concepts, models and services," X.500(1993) (also ISO/IEC
+               9594-1:1994).
+
+   [X.525]     International Telecommunication Union - Telecommunication
+               Standardization Sector, "The Directory: Replication",
+               X.525(1993).
+
+   [DIRSYNC]   Armijo, M., "Microsoft LDAP Control for Directory
+               Synchronization", Work in Progress.
+
+   [PSEARCH]   Smith, M., et al., "Persistent Search: A Simple LDAP
+               Change Notification Mechanism", Work in Progress.
+
+   [TSEARCH]   Wahl, M., "LDAPv3 Triggered Search Control", Work in
+               Progress.
+
+
+
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 28]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+Appendix A.  CSN-based Implementation Considerations
+
+   This appendix is provided for informational purposes only; it is not
+   a normative part of the LDAP Content Synchronization Operation's
+   technical specification.
+
+   This appendix discusses LDAP Content Synchronization Operation server
+   implementation considerations associated with Change Sequence Number
+   based approaches.
+
+   Change Sequence Number based approaches are targeted for use in
+   servers that do not maintain history information (e.g., change logs,
+   state snapshots) about changes made to the Directory and hence, must
+   rely on current directory state and minimal synchronization state
+   information embedded in Sync Cookie.  Servers that maintain history
+   information should consider other approaches that exploit the history
+   information.
+
+   A Change Sequence Number is effectively a time stamp that has
+   sufficient granularity to ensure that the precedence relationship in
+   time of two updates to the same object can be determined.  Change
+   Sequence Numbers are not to be confused with Commit Sequence Numbers
+   or Commit Log Record Numbers.  A Commit Sequence Number allows one to
+   determine how two commits (to the same object or different objects)
+   relate to each other in time.  A Change Sequence Number associated
+   with different entries may be committed out of order.  In the
+   remainder of this Appendix, the term CSN refers to a Change Sequence
+   Number.
+
+   In these approaches, the server not only maintains a CSN for each
+   directory entry (the entry CSN) but also maintains a value that we
+   will call the context CSN.  The context CSN is the greatest committed
+   entry CSN that is not greater than any outstanding (uncommitted)
+   entry CSNs for all entries in a directory context.  The values of
+   context CSN are used in syncCookie values as synchronization state
+   indicators.
+
+   As search operations are not isolated from individual directory
+   update operations and individual update operations cannot be assumed
+   to be serialized, one cannot assume that the returned content
+   incorporates each relevant change whose change sequence number is
+   less than or equal to the greatest entry CSN in the content.  The
+   content incorporates all the relevant changes whose change sequence
+   numbers are less than or equal to context CSN before search
+   processing.  The content may also incorporate any subset of the
+   changes whose change sequence number is greater than context CSN
+   before search processing but less than or equal to the context CSN
+   after search processing.  The content does not incorporate any of the
+
+
+
+Zeilenga & Choi               Experimental                     [Page 29]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+   changes whose CSN is greater than the context CSN after search
+   processing.
+
+   A simple server implementation could use the value of the context CSN
+   before search processing to indicate state.  Such an implementation
+   would embed this value into each SyncCookie returned.  We'll call
+   this the cookie CSN.  When a refresh was requested, the server would
+   simply generate "update" messages for all entries in the content
+   whose CSN is greater than the supplied cookie CSN and generate
+   "present" messages for all other entries in the content.  However, if
+   the current context CSN is the same as the cookie CSN, the server
+   should instead generate zero "updates" and zero "delete" messages and
+   indicate a refreshDeletes of TRUE, as the directory has not changed.
+
+   The implementation should also consider the impact of changes to meta
+   information, such as access controls, that affect content
+   determination.  One approach is for the server to maintain a
+   context-wide meta information CSN or meta CSN.  This meta CSN would
+   be updated whenever meta information affecting content determination
+   was changed.  If the value of the meta CSN is greater than the cookie
+   CSN, the server should ignore the cookie and treat the request as an
+   initial request for content.
+
+   Additionally, servers may want to consider maintaining some per-
+   session history information to reduce the number of messages needed
+   to be transferred during incremental refreshes.  Specifically, a
+   server could record information about entries as they leave the scope
+   of a disconnected sync session and later use this information to
+   generate delete messages instead of present messages.
+
+   When the history information is truncated, the CSN of the latest
+   truncated history information entry may be recorded as the truncated
+   CSN of the history information.  The truncated CSN may be used to
+   determine whether a client copy can be covered by the history
+   information by comparing it to the synchronization state contained in
+   the cookie supplied by the client.
+
+   When there is a large number of sessions, it may make sense to
+   maintain such history only for the selected clients.  Also, servers
+   taking this approach need to consider resource consumption issues to
+   ensure reasonable server operation and to protect against abuse.  It
+   may be appropriate to restrict this mode of operation by policy.
+
+
+
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 30]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+Authors' Addresses
+
+   Kurt D. Zeilenga
+   OpenLDAP Foundation
+
+   EMail: Kurt at OpenLDAP.org
+
+
+   Jong Hyuk Choi
+   IBM Corporation
+
+   EMail: jongchoi at us.ibm.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 31]
+
+RFC 4533         LDAP Content Synchronization Operation        June 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78 and at www.rfc-editor.org/copyright.html, and
+   except as set forth therein, the authors retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr at ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Zeilenga & Choi               Experimental                     [Page 32]
+

Modified: branches/samba/experimental/source4/torture/nbench/nbench.c
===================================================================
--- branches/samba/experimental/source4/torture/nbench/nbench.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source4/torture/nbench/nbench.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -95,7 +95,9 @@
 
 		nbench_line_count++;
 
-		line[strlen(line)-1] = 0;
+		if ((strlen(line) > 0) && line[strlen(line)-1] == '\n') {
+			line[strlen(line)-1] = 0;
+		}
 
 		all_string_sub(line,"client1", cname, sizeof(line));
 		

Copied: branches/samba/experimental/source4/torture/ndr/README (from rev 3156, tags/samba/upstream_3.5.0~pre2/source4/torture/ndr/README)
===================================================================
--- branches/samba/experimental/source4/torture/ndr/README	                        (rev 0)
+++ branches/samba/experimental/source4/torture/ndr/README	2009-12-16 21:43:48 UTC (rev 3157)
@@ -0,0 +1,4 @@
+use
+	hexdump -e '12/1 "0x%02x, " "\n"' infile|outfile
+
+to import ndr dumps

Modified: branches/samba/experimental/source4/torture/ndr/spoolss.c
===================================================================
--- branches/samba/experimental/source4/torture/ndr/spoolss.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source4/torture/ndr/spoolss.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -219,6 +219,17 @@
   0xea, 0x00, 0x00, 0x00
 };
 
+static const uint8_t enumprinterkey_in_data2[] = {
+  0x00, 0x00, 0x00, 0x00, 0x2a, 0xcc, 0x89, 0x90, 0x8a, 0xfc, 0xca, 0x4c,
+  0xa5, 0x44, 0xdc, 0x30, 0x10, 0x20, 0xd9, 0x8f, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00,
+  0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t enumprinterkey_out_data2[] = {
+  0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00
+};
+
 static const uint8_t enumprinterkey_in_data[] = {
   0x00, 0x00, 0x00, 0x00, 0x22, 0x5c, 0x46, 0xe5, 0x74, 0xa1, 0x9e, 0x46,
   0x95, 0x80, 0x19, 0xf1, 0xaa, 0x63, 0xc9, 0x01, 0x01, 0x00, 0x00, 0x00,
@@ -471,6 +482,9 @@
 	torture_suite_add_ndr_pull_fn_test(suite, spoolss_EnumPrinterKey, enumprinterkey_in_data, NDR_IN, NULL );
 	torture_suite_add_ndr_pull_fn_test(suite, spoolss_EnumPrinterKey, enumprinterkey_out_data, NDR_OUT, NULL );
 
+	torture_suite_add_ndr_pull_fn_test(suite, spoolss_EnumPrinterKey, enumprinterkey_in_data2, NDR_IN, NULL );
+	torture_suite_add_ndr_pull_fn_test(suite, spoolss_EnumPrinterKey, enumprinterkey_out_data2, NDR_OUT, NULL );
+
 	torture_suite_add_ndr_pull_fn_test(suite, spoolss_FindClosePrinterNotify, FCPN_in_data, NDR_IN, NULL );
 	torture_suite_add_ndr_pull_fn_test(suite, spoolss_FindClosePrinterNotify, FCPN_out_data, NDR_OUT, NULL );
 

Modified: branches/samba/experimental/source4/torture/rpc/samr.c
===================================================================
--- branches/samba/experimental/source4/torture/rpc/samr.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source4/torture/rpc/samr.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -54,6 +54,13 @@
 	TORTURE_SAMR_MANY_ALIASES
 };
 
+struct torture_samr_context {
+	struct policy_handle handle;
+	struct cli_credentials *machine_credentials;
+	enum torture_samr_choice choice;
+	uint32_t num_objects_large_dc;
+};
+
 static bool test_QueryUserInfo(struct dcerpc_pipe *p,
 			       struct torture_context *tctx,
 			       struct policy_handle *handle);
@@ -6273,9 +6280,9 @@
 			     struct torture_context *tctx,
 			     struct policy_handle *domain_handle,
 			     struct dom_sid *domain_sid,
-			     enum torture_samr_choice which_ops)
+			     struct torture_samr_context *ctx)
 {
-	uint32_t num_total = 1500;
+	uint32_t num_total = ctx->num_objects_large_dc;
 	uint32_t num_enum = 0;
 	uint32_t num_disp = 0;
 	uint32_t num_created = 0;
@@ -6299,7 +6306,7 @@
 		torture_assert_ntstatus_ok(tctx, status,
 			"failed to query domain info");
 
-		switch (which_ops) {
+		switch (ctx->choice) {
 		case TORTURE_SAMR_MANY_ACCOUNTS:
 			num_anounced = info->general.num_users;
 			break;
@@ -6320,7 +6327,7 @@
 
 		const char *name = NULL;
 
-		switch (which_ops) {
+		switch (ctx->choice) {
 		case TORTURE_SAMR_MANY_ACCOUNTS:
 			name = talloc_asprintf(tctx, "%s%04d", TEST_ACCOUNT_NAME, i);
 			ret &= test_CreateUser(p, tctx, domain_handle, name, &handles[i], domain_sid, 0, NULL, false);
@@ -6343,7 +6350,7 @@
 
 	/* enum */
 
-	switch (which_ops) {
+	switch (ctx->choice) {
 	case TORTURE_SAMR_MANY_ACCOUNTS:
 		ret &= test_EnumDomainUsers(p, tctx, domain_handle, &num_enum);
 		break;
@@ -6359,7 +6366,7 @@
 
 	/* dispinfo */
 
-	switch (which_ops) {
+	switch (ctx->choice) {
 	case TORTURE_SAMR_MANY_ACCOUNTS:
 		ret &= test_QueryDisplayInfo_level(p, tctx, domain_handle, 1, &num_disp);
 		break;
@@ -6384,7 +6391,7 @@
 		if (torture_setting_bool(tctx, "samba3", false)) {
 			ret &= test_samr_handle_Close(p, tctx, &handles[i]);
 		} else {
-			switch (which_ops) {
+			switch (ctx->choice) {
 			case TORTURE_SAMR_MANY_ACCOUNTS:
 				ret &= test_DeleteUser(p, tctx, &handles[i]);
 				break;
@@ -6402,7 +6409,7 @@
 
 	talloc_free(handles);
 
-	if (which_ops == TORTURE_SAMR_MANY_ACCOUNTS && num_enum != num_anounced + num_created) {
+	if (ctx->choice == TORTURE_SAMR_MANY_ACCOUNTS && num_enum != num_anounced + num_created) {
 		torture_comment(tctx,
 				"unexpected number of results (%u) returned in enum call, expected %u\n",
 				num_enum, num_anounced + num_created);
@@ -6418,9 +6425,7 @@
 			 struct policy_handle *handle);
 
 static bool test_OpenDomain(struct dcerpc_pipe *p, struct torture_context *tctx,
-			    struct policy_handle *handle, struct dom_sid *sid,
-			    enum torture_samr_choice which_ops,
-			    struct cli_credentials *machine_credentials)
+			    struct torture_samr_context *ctx, struct dom_sid *sid)
 {
 	NTSTATUS status;
 	struct samr_OpenDomain r;
@@ -6437,7 +6442,7 @@
 
 	torture_comment(tctx, "Testing OpenDomain of %s\n", dom_sid_string(tctx, sid));
 
-	r.in.connect_handle = handle;
+	r.in.connect_handle = &ctx->handle;
 	r.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
 	r.in.sid = sid;
 	r.out.domain_handle = &domain_handle;
@@ -6447,24 +6452,24 @@
 
 	/* run the domain tests with the main handle closed - this tests
 	   the servers reference counting */
-	torture_assert(tctx, test_samr_handle_Close(p, tctx, handle), "Failed to close SAMR handle");
+	torture_assert(tctx, test_samr_handle_Close(p, tctx, &ctx->handle), "Failed to close SAMR handle");
 
-	switch (which_ops) {
+	switch (ctx->choice) {
 	case TORTURE_SAMR_PASSWORDS:
 	case TORTURE_SAMR_USER_PRIVILEGES:
 		if (!torture_setting_bool(tctx, "samba3", false)) {
-			ret &= test_CreateUser2(p, tctx, &domain_handle, sid, which_ops, NULL);
+			ret &= test_CreateUser2(p, tctx, &domain_handle, sid, ctx->choice, NULL);
 		}
-		ret &= test_CreateUser(p, tctx, &domain_handle, TEST_ACCOUNT_NAME, &user_handle, sid, which_ops, NULL, true);
+		ret &= test_CreateUser(p, tctx, &domain_handle, TEST_ACCOUNT_NAME, &user_handle, sid, ctx->choice, NULL, true);
 		if (!ret) {
 			torture_warning(tctx, "Testing PASSWORDS or PRIVILEGES on domain %s failed!\n", dom_sid_string(tctx, sid));
 		}
 		break;
 	case TORTURE_SAMR_USER_ATTRIBUTES:
 		if (!torture_setting_bool(tctx, "samba3", false)) {
-			ret &= test_CreateUser2(p, tctx, &domain_handle, sid, which_ops, NULL);
+			ret &= test_CreateUser2(p, tctx, &domain_handle, sid, ctx->choice, NULL);
 		}
-		ret &= test_CreateUser(p, tctx, &domain_handle, TEST_ACCOUNT_NAME, &user_handle, sid, which_ops, NULL, true);
+		ret &= test_CreateUser(p, tctx, &domain_handle, TEST_ACCOUNT_NAME, &user_handle, sid, ctx->choice, NULL, true);
 		/* This test needs 'complex' users to validate */
 		ret &= test_QueryDisplayInfo(p, tctx, &domain_handle);
 		if (!ret) {
@@ -6473,9 +6478,9 @@
 		break;
 	case TORTURE_SAMR_PASSWORDS_PWDLASTSET:
 		if (!torture_setting_bool(tctx, "samba3", false)) {
-			ret &= test_CreateUser2(p, tctx, &domain_handle, sid, which_ops, machine_credentials);
+			ret &= test_CreateUser2(p, tctx, &domain_handle, sid, ctx->choice, ctx->machine_credentials);
 		}
-		ret &= test_CreateUser(p, tctx, &domain_handle, TEST_ACCOUNT_NAME, &user_handle, sid, which_ops, machine_credentials, true);
+		ret &= test_CreateUser(p, tctx, &domain_handle, TEST_ACCOUNT_NAME, &user_handle, sid, ctx->choice, ctx->machine_credentials, true);
 		if (!ret) {
 			torture_warning(tctx, "Testing PASSWORDS PWDLASTSET on domain %s failed!\n", dom_sid_string(tctx, sid));
 		}
@@ -6483,13 +6488,13 @@
 	case TORTURE_SAMR_MANY_ACCOUNTS:
 	case TORTURE_SAMR_MANY_GROUPS:
 	case TORTURE_SAMR_MANY_ALIASES:
-		ret &= test_ManyObjects(p, tctx, &domain_handle, sid, which_ops);
+		ret &= test_ManyObjects(p, tctx, &domain_handle, sid, ctx);
 		if (!ret) {
 			torture_warning(tctx, "Testing MANY-{ACCOUNTS,GROUPS,ALIASES} on domain %s failed!\n", dom_sid_string(tctx, sid));
 		}
 		break;
 	case TORTURE_SAMR_OTHER:
-		ret &= test_CreateUser(p, tctx, &domain_handle, TEST_ACCOUNT_NAME, &user_handle, sid, which_ops, NULL, true);
+		ret &= test_CreateUser(p, tctx, &domain_handle, TEST_ACCOUNT_NAME, &user_handle, sid, ctx->choice, NULL, true);
 		if (!ret) {
 			torture_warning(tctx, "Failed to CreateUser in SAMR-OTHER on domain %s!\n", dom_sid_string(tctx, sid));
 		}
@@ -6542,7 +6547,7 @@
 
 	torture_assert(tctx, test_samr_handle_Close(p, tctx, &domain_handle), "Failed to close SAMR domain handle");
 
-	torture_assert(tctx, test_Connect(p, tctx, handle), "Faile to re-connect SAMR handle");
+	torture_assert(tctx, test_Connect(p, tctx, &ctx->handle), "Faile to re-connect SAMR handle");
 	/* reconnect the main handle */
 
 	if (!ret) {
@@ -6553,9 +6558,7 @@
 }
 
 static bool test_LookupDomain(struct dcerpc_pipe *p, struct torture_context *tctx,
-			      struct policy_handle *handle, const char *domain,
-			      enum torture_samr_choice which_ops,
-			      struct cli_credentials *machine_credentials)
+			      struct torture_samr_context *ctx, const char *domain)
 {
 	NTSTATUS status;
 	struct samr_LookupDomain r;
@@ -6567,7 +6570,7 @@
 	torture_comment(tctx, "Testing LookupDomain(%s)\n", domain);
 
 	/* check for correct error codes */
-	r.in.connect_handle = handle;
+	r.in.connect_handle = &ctx->handle;
 	r.in.domain_name = &n2;
 	r.out.sid = &sid;
 	n2.string = NULL;
@@ -6580,7 +6583,7 @@
 	status = dcerpc_samr_LookupDomain(p, tctx, &r);
 	torture_assert_ntstatus_equal(tctx, NT_STATUS_NO_SUCH_DOMAIN, status, "LookupDomain expected NT_STATUS_NO_SUCH_DOMAIN");
 
-	r.in.connect_handle = handle;
+	r.in.connect_handle = &ctx->handle;
 
 	init_lsa_String(&n1, domain);
 	r.in.domain_name = &n1;
@@ -6592,8 +6595,7 @@
 		ret = false;
 	}
 
-	if (!test_OpenDomain(p, tctx, handle, *r.out.sid, which_ops,
-			     machine_credentials)) {
+	if (!test_OpenDomain(p, tctx, ctx, *r.out.sid)) {
 		ret = false;
 	}
 
@@ -6602,8 +6604,7 @@
 
 
 static bool test_EnumDomains(struct dcerpc_pipe *p, struct torture_context *tctx,
-			     struct policy_handle *handle, enum torture_samr_choice which_ops,
-			     struct cli_credentials *machine_credentials)
+			     struct torture_samr_context *ctx)
 {
 	NTSTATUS status;
 	struct samr_EnumDomains r;
@@ -6613,7 +6614,7 @@
 	int i;
 	bool ret = true;
 
-	r.in.connect_handle = handle;
+	r.in.connect_handle = &ctx->handle;
 	r.in.resume_handle = &resume_handle;
 	r.in.buf_size = (uint32_t)-1;
 	r.out.resume_handle = &resume_handle;
@@ -6628,9 +6629,8 @@
 	}
 
 	for (i=0;i<sam->count;i++) {
-		if (!test_LookupDomain(p, tctx, handle,
-				       sam->entries[i].name.string, which_ops,
-				       machine_credentials)) {
+		if (!test_LookupDomain(p, tctx, ctx,
+				       sam->entries[i].name.string)) {
 			ret = false;
 		}
 	}
@@ -6761,26 +6761,30 @@
 	NTSTATUS status;
 	struct dcerpc_pipe *p;
 	bool ret = true;
-	struct policy_handle handle;
+	struct torture_samr_context *ctx;
 
 	status = torture_rpc_connection(torture, &p, &ndr_table_samr);
 	if (!NT_STATUS_IS_OK(status)) {
 		return false;
 	}
 
-	ret &= test_Connect(p, torture, &handle);
+	ctx = talloc_zero(torture, struct torture_samr_context);
 
+	ctx->choice = TORTURE_SAMR_OTHER;
+
+	ret &= test_Connect(p, torture, &ctx->handle);
+
 	if (!torture_setting_bool(torture, "samba3", false)) {
-		ret &= test_QuerySecurity(p, torture, &handle);
+		ret &= test_QuerySecurity(p, torture, &ctx->handle);
 	}
 
-	ret &= test_EnumDomains(p, torture, &handle, TORTURE_SAMR_OTHER, NULL);
+	ret &= test_EnumDomains(p, torture, ctx);
 
-	ret &= test_SetDsrmPassword(p, torture, &handle);
+	ret &= test_SetDsrmPassword(p, torture, &ctx->handle);
 
-	ret &= test_Shutdown(p, torture, &handle);
+	ret &= test_Shutdown(p, torture, &ctx->handle);
 
-	ret &= test_samr_handle_Close(p, torture, &handle);
+	ret &= test_samr_handle_Close(p, torture, &ctx->handle);
 
 	return ret;
 }
@@ -6791,26 +6795,30 @@
 	NTSTATUS status;
 	struct dcerpc_pipe *p;
 	bool ret = true;
-	struct policy_handle handle;
+	struct torture_samr_context *ctx;
 
 	status = torture_rpc_connection(torture, &p, &ndr_table_samr);
 	if (!NT_STATUS_IS_OK(status)) {
 		return false;
 	}
 
-	ret &= test_Connect(p, torture, &handle);
+	ctx = talloc_zero(torture, struct torture_samr_context);
 
+	ctx->choice = TORTURE_SAMR_USER_ATTRIBUTES;
+
+	ret &= test_Connect(p, torture, &ctx->handle);
+
 	if (!torture_setting_bool(torture, "samba3", false)) {
-		ret &= test_QuerySecurity(p, torture, &handle);
+		ret &= test_QuerySecurity(p, torture, &ctx->handle);
 	}
 
-	ret &= test_EnumDomains(p, torture, &handle, TORTURE_SAMR_USER_ATTRIBUTES, NULL);
+	ret &= test_EnumDomains(p, torture, ctx);
 
-	ret &= test_SetDsrmPassword(p, torture, &handle);
+	ret &= test_SetDsrmPassword(p, torture, &ctx->handle);
 
-	ret &= test_Shutdown(p, torture, &handle);
+	ret &= test_Shutdown(p, torture, &ctx->handle);
 
-	ret &= test_samr_handle_Close(p, torture, &handle);
+	ret &= test_samr_handle_Close(p, torture, &ctx->handle);
 
 	return ret;
 }
@@ -6821,19 +6829,23 @@
 	NTSTATUS status;
 	struct dcerpc_pipe *p;
 	bool ret = true;
-	struct policy_handle handle;
+	struct torture_samr_context *ctx;
 
 	status = torture_rpc_connection(torture, &p, &ndr_table_samr);
 	if (!NT_STATUS_IS_OK(status)) {
 		return false;
 	}
 
-	ret &= test_Connect(p, torture, &handle);
+	ctx = talloc_zero(torture, struct torture_samr_context);
 
-	ret &= test_EnumDomains(p, torture, &handle, TORTURE_SAMR_PASSWORDS, NULL);
+	ctx->choice = TORTURE_SAMR_PASSWORDS;
 
-	ret &= test_samr_handle_Close(p, torture, &handle);
+	ret &= test_Connect(p, torture, &ctx->handle);
 
+	ret &= test_EnumDomains(p, torture, ctx);
+
+	ret &= test_samr_handle_Close(p, torture, &ctx->handle);
+
 	return ret;
 }
 
@@ -6844,21 +6856,24 @@
 	NTSTATUS status;
 	struct dcerpc_pipe *p;
 	bool ret = true;
-	struct policy_handle handle;
+	struct torture_samr_context *ctx;
 
 	status = torture_rpc_connection(torture, &p, &ndr_table_samr);
 	if (!NT_STATUS_IS_OK(status)) {
 		return false;
 	}
 
-	ret &= test_Connect(p, torture, &handle);
+	ctx = talloc_zero(torture, struct torture_samr_context);
 
-	ret &= test_EnumDomains(p, torture, &handle,
-				TORTURE_SAMR_PASSWORDS_PWDLASTSET,
-				machine_credentials);
+	ctx->choice = TORTURE_SAMR_PASSWORDS_PWDLASTSET;
+	ctx->machine_credentials = machine_credentials;
 
-	ret &= test_samr_handle_Close(p, torture, &handle);
+	ret &= test_Connect(p, torture, &ctx->handle);
 
+	ret &= test_EnumDomains(p, torture, ctx);
+
+	ret &= test_samr_handle_Close(p, torture, &ctx->handle);
+
 	return ret;
 }
 
@@ -6884,21 +6899,24 @@
 	NTSTATUS status;
 	struct dcerpc_pipe *p;
 	bool ret = true;
-	struct policy_handle handle;
+	struct torture_samr_context *ctx;
 
 	status = torture_rpc_connection(torture, &p, &ndr_table_samr);
 	if (!NT_STATUS_IS_OK(status)) {
 		return false;
 	}
 
-	ret &= test_Connect(p, torture, &handle);
+	ctx = talloc_zero(torture, struct torture_samr_context);
 
-	ret &= test_EnumDomains(p, torture, &handle,
-				TORTURE_SAMR_USER_PRIVILEGES,
-				machine_credentials);
+	ctx->choice = TORTURE_SAMR_USER_PRIVILEGES;
+	ctx->machine_credentials = machine_credentials;
 
-	ret &= test_samr_handle_Close(p, torture, &handle);
+	ret &= test_Connect(p, torture, &ctx->handle);
 
+	ret &= test_EnumDomains(p, torture, ctx);
+
+	ret &= test_samr_handle_Close(p, torture, &ctx->handle);
+
 	return ret;
 }
 
@@ -6919,76 +6937,85 @@
 
 static bool torture_rpc_samr_many_accounts(struct torture_context *torture,
 					   struct dcerpc_pipe *p2,
-					   struct cli_credentials *machine_credentials)
+					   void *data)
 {
 	NTSTATUS status;
 	struct dcerpc_pipe *p;
 	bool ret = true;
-	struct policy_handle handle;
+	struct torture_samr_context *ctx =
+		talloc_get_type_abort(data, struct torture_samr_context);
 
 	status = torture_rpc_connection(torture, &p, &ndr_table_samr);
 	if (!NT_STATUS_IS_OK(status)) {
 		return false;
 	}
 
-	ret &= test_Connect(p, torture, &handle);
+	ctx->choice = TORTURE_SAMR_MANY_ACCOUNTS;
+	ctx->num_objects_large_dc = torture_setting_int(torture, "large_dc",
+							ctx->num_objects_large_dc);
 
-	ret &= test_EnumDomains(p, torture, &handle,
-				TORTURE_SAMR_MANY_ACCOUNTS,
-				machine_credentials);
+	ret &= test_Connect(p, torture, &ctx->handle);
 
-	ret &= test_samr_handle_Close(p, torture, &handle);
+	ret &= test_EnumDomains(p, torture, ctx);
 
+	ret &= test_samr_handle_Close(p, torture, &ctx->handle);
+
 	return ret;
 }
 
 static bool torture_rpc_samr_many_groups(struct torture_context *torture,
 					 struct dcerpc_pipe *p2,
-					 struct cli_credentials *machine_credentials)
+					 void *data)
 {
 	NTSTATUS status;
 	struct dcerpc_pipe *p;
 	bool ret = true;
-	struct policy_handle handle;
+	struct torture_samr_context *ctx =
+		talloc_get_type_abort(data, struct torture_samr_context);
 
 	status = torture_rpc_connection(torture, &p, &ndr_table_samr);
 	if (!NT_STATUS_IS_OK(status)) {
 		return false;
 	}
 
-	ret &= test_Connect(p, torture, &handle);
+	ctx->choice = TORTURE_SAMR_MANY_GROUPS;
+	ctx->num_objects_large_dc = torture_setting_int(torture, "large_dc",
+							ctx->num_objects_large_dc);
 
-	ret &= test_EnumDomains(p, torture, &handle,
-				TORTURE_SAMR_MANY_GROUPS,
-				machine_credentials);
+	ret &= test_Connect(p, torture, &ctx->handle);
 
-	ret &= test_samr_handle_Close(p, torture, &handle);
+	ret &= test_EnumDomains(p, torture, ctx);
 
+	ret &= test_samr_handle_Close(p, torture, &ctx->handle);
+
 	return ret;
 }
 
 static bool torture_rpc_samr_many_aliases(struct torture_context *torture,
 					  struct dcerpc_pipe *p2,
-					  struct cli_credentials *machine_credentials)
+					  void *data)
 {
 	NTSTATUS status;
 	struct dcerpc_pipe *p;
 	bool ret = true;
-	struct policy_handle handle;
+	struct torture_samr_context *ctx =
+		talloc_get_type_abort(data, struct torture_samr_context);
 
 	status = torture_rpc_connection(torture, &p, &ndr_table_samr);
 	if (!NT_STATUS_IS_OK(status)) {
 		return false;
 	}
 
-	ret &= test_Connect(p, torture, &handle);
+	ctx->choice = TORTURE_SAMR_MANY_ALIASES;
+	ctx->num_objects_large_dc = torture_setting_int(torture, "large_dc",
+							ctx->num_objects_large_dc);
 
-	ret &= test_EnumDomains(p, torture, &handle,
-				TORTURE_SAMR_MANY_ALIASES,
-				machine_credentials);
+	ret &= test_Connect(p, torture, &ctx->handle);
 
-	ret &= test_samr_handle_Close(p, torture, &handle);
+	ret &= test_EnumDomains(p, torture, ctx);
 
+	ret &= test_samr_handle_Close(p, torture, &ctx->handle);
+
 	return ret;
 }
 
@@ -6996,17 +7023,19 @@
 {
 	struct torture_suite *suite = torture_suite_create(mem_ctx, "SAMR-LARGE-DC");
 	struct torture_rpc_tcase *tcase;
+	struct torture_samr_context *ctx;
 
-	tcase = torture_suite_add_machine_bdc_rpc_iface_tcase(suite, "samr",
-							  &ndr_table_samr,
-							  TEST_ACCOUNT_NAME);
+	tcase = torture_suite_add_rpc_iface_tcase(suite, "samr", &ndr_table_samr);
 
-	torture_rpc_tcase_add_test_creds(tcase, "many_aliases",
-					 torture_rpc_samr_many_aliases);
-	torture_rpc_tcase_add_test_creds(tcase, "many_groups",
-					 torture_rpc_samr_many_groups);
-	torture_rpc_tcase_add_test_creds(tcase, "many_accounts",
-					 torture_rpc_samr_many_accounts);
+	ctx = talloc_zero(suite, struct torture_samr_context);
+	ctx->num_objects_large_dc = 150;
 
+	torture_rpc_tcase_add_test_ex(tcase, "many_aliases",
+				      torture_rpc_samr_many_aliases, ctx);
+	torture_rpc_tcase_add_test_ex(tcase, "many_groups",
+				      torture_rpc_samr_many_groups, ctx);
+	torture_rpc_tcase_add_test_ex(tcase, "many_accounts",
+				      torture_rpc_samr_many_accounts, ctx);
+
 	return suite;
 }

Modified: branches/samba/experimental/source4/torture/rpc/spoolss.c
===================================================================
--- branches/samba/experimental/source4/torture/rpc/spoolss.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source4/torture/rpc/spoolss.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -25,6 +25,7 @@
 #include "torture/torture.h"
 #include "torture/rpc/rpc.h"
 #include "librpc/gen_ndr/ndr_misc.h"
+#include "librpc/gen_ndr/ndr_spoolss.h"
 #include "librpc/gen_ndr/ndr_spoolss_c.h"
 #include "param/param.h"
 
@@ -42,8 +43,8 @@
 	union spoolss_PortInfo *ports[3];
 
 	/* for EnumPrinterDrivers */
-	uint32_t driver_count[7];
-	union spoolss_DriverInfo *drivers[7];
+	uint32_t driver_count[8];
+	union spoolss_DriverInfo *drivers[8];
 
 	/* for EnumMonitors */
 	uint32_t monitor_count[3];
@@ -80,8 +81,69 @@
 	torture_assert_int_equal(tctx, c.e, r.e, "invalid value"); \
 } while(0)
 
-#define COMPARE_STRING_ARRAY(tctx, c,r,e)
+#define COMPARE_UINT64(tctx, c, r, e) do {\
+	_CHECK_FIELD_SIZE(c, r, e, uint64_t); \
+	torture_assert_int_equal(tctx, c.e, r.e, "invalid value"); \
+} while(0)
 
+
+#define COMPARE_NTTIME(tctx, c, r, e) do {\
+	_CHECK_FIELD_SIZE(c, r, e, NTTIME); \
+	torture_assert_int_equal(tctx, c.e, r.e, "invalid value"); \
+} while(0)
+
+#define COMPARE_STRING_ARRAY(tctx, c,r,e) do {\
+	int __i; \
+	if (!c.e && !r.e) { \
+		break; \
+	} \
+	if (c.e && !r.e) { \
+		torture_fail(tctx, #r "." #e " field is NULL and " #c "." #e " is not\n"); \
+	} \
+	if (!c.e && r.e) { \
+		torture_fail(tctx, #c "." #e " field is NULL and " #r "." #e " is not\n"); \
+	} \
+	for (__i=0;c.e[__i] != NULL; __i++) { \
+		torture_assert_str_equal(tctx, c.e[__i], r.e[__i], "invalid value"); \
+	} \
+} while(0)
+
+#define CHECK_ALIGN(size, n) do {\
+	if (size % n) {\
+		torture_warning(tctx, "%d is *NOT* %d byte aligned, should be %d",\
+			size, n, size + n - (size % n));\
+	}\
+} while(0)
+
+#define DO_ROUND(size, n) (((size)+((n)-1)) & ~((n)-1))
+
+#define CHECK_NEEDED_SIZE_ENUM_LEVEL(fn, info, level, count, ic, needed, align) do { \
+	uint32_t size = ndr_size_##fn##_info(tctx, ic, level, count, info);\
+	uint32_t round_size = DO_ROUND(size, align);\
+	if (round_size != needed) {\
+		torture_warning(tctx, __location__": "#fn" level %d (count: %d) got unexpected needed size: %d, we calculated: %d", level, count, needed, round_size);\
+		CHECK_ALIGN(size, align);\
+	}\
+} while(0)
+
+#define CHECK_NEEDED_SIZE_ENUM(fn, info, count, ic, needed, align) do { \
+	uint32_t size = ndr_size_##fn##_info(tctx, ic, count, info);\
+	uint32_t round_size = DO_ROUND(size, align);\
+	if (round_size != needed) {\
+		torture_warning(tctx, __location__": "#fn" (count: %d) got unexpected needed size: %d, we calculated: %d", count, needed, round_size);\
+		CHECK_ALIGN(size, align);\
+	}\
+} while(0)
+
+#define CHECK_NEEDED_SIZE_LEVEL(fn, info, level, ic, needed, align) do { \
+	uint32_t size = ndr_size_##fn(info, level, ic, 0);\
+	uint32_t round_size = DO_ROUND(size, align);\
+	if (round_size != needed) {\
+		torture_warning(tctx, __location__": "#fn" level %d got unexpected needed size: %d, we calculated: %d", level, needed, round_size);\
+		CHECK_ALIGN(size, align);\
+	}\
+} while(0)
+
 static bool test_OpenPrinter_server(struct torture_context *tctx,
 				    struct dcerpc_pipe *p,
 				    struct policy_handle *server_handle)
@@ -151,6 +213,8 @@
 
 		torture_assert(tctx, info, "EnumPorts returned no info");
 
+		CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumPorts, info, r.in.level, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 		ctx->port_count[level]	= count;
 		ctx->ports[level]	= info;
 	}
@@ -239,6 +303,8 @@
 		torture_assert_ntstatus_ok(tctx, status, "dcerpc_spoolss_GetPrintProcessorDirectory failed");
 
 		torture_assert_werr_ok(tctx, r.out.result, "GetPrintProcessorDirectory failed");
+
+		CHECK_NEEDED_SIZE_LEVEL(spoolss_PrintProcessorDirectoryInfo, r.out.info, r.in.level, lp_iconv_convenience(tctx->lp_ctx), needed, 2);
 	}
 
 	return true;
@@ -302,6 +368,8 @@
 		torture_assert_ntstatus_ok(tctx, status, "dcerpc_spoolss_GetPrinterDriverDirectory failed");
 
 		torture_assert_werr_ok(tctx, r.out.result, "GetPrinterDriverDirectory failed");
+
+		CHECK_NEEDED_SIZE_LEVEL(spoolss_DriverDirectoryInfo, r.out.info, r.in.level, lp_iconv_convenience(tctx->lp_ctx), needed, 2);
 	}
 
 	return true;
@@ -309,19 +377,15 @@
 
 static bool test_EnumPrinterDrivers(struct torture_context *tctx,
 				    struct dcerpc_pipe *p,
-				    struct test_spoolss_context *ctx)
+				    struct test_spoolss_context *ctx,
+				    const char *architecture)
 {
 	NTSTATUS status;
 	struct spoolss_EnumPrinterDrivers r;
-	uint16_t levels[] = { 1, 2, 3, 4, 5, 6 };
-	int i, j, a;
-	const char *architectures[] = {
-		SPOOLSS_ARCHITECTURE_NT_X86,
-		SPOOLSS_ARCHITECTURE_ALL
-	};
+	uint16_t levels[] = { 1, 2, 3, 4, 5, 6, 8 };
+	int i, j;
 
 	for (i=0;i<ARRAY_SIZE(levels);i++) {
-	for (a=0;a<ARRAY_SIZE(architectures);a++) {
 		int level = levels[i];
 		DATA_BLOB blob;
 		uint32_t needed;
@@ -333,7 +397,7 @@
 		 * server */
 
 		r.in.server		= talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p));
-		r.in.environment	= architectures[a];
+		r.in.environment	= architecture;
 		r.in.level		= level;
 		r.in.buffer		= NULL;
 		r.in.offered		= 0;
@@ -362,25 +426,16 @@
 
 		torture_assert_werr_ok(tctx, r.out.result, "EnumPrinterDrivers failed");
 
-		/* don't do cross-architecture comparison */
-		if (strequal(r.in.environment, SPOOLSS_ARCHITECTURE_ALL)) {
-			continue;
-		}
+		CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumPrinterDrivers, info, r.in.level, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
 
 		ctx->driver_count[level]	= count;
 		ctx->drivers[level]		= info;
 	}
-	}
 
 	for (i=1;i<ARRAY_SIZE(levels);i++) {
 		int level = levels[i];
 		int old_level = levels[i-1];
 
-		/* don't do cross-architecture comparison */
-		if (strequal(r.in.environment, SPOOLSS_ARCHITECTURE_ALL)) {
-			continue;
-		}
-
 		torture_assert_int_equal(tctx, ctx->driver_count[level], ctx->driver_count[old_level],
 			"EnumPrinterDrivers invalid value");
 	}
@@ -388,65 +443,80 @@
 	for (i=0;i<ARRAY_SIZE(levels);i++) {
 		int level = levels[i];
 
-		/* don't do cross-architecture comparison */
-		if (strequal(r.in.environment, SPOOLSS_ARCHITECTURE_ALL)) {
-			continue;
-		}
-
 		for (j=0;j<ctx->driver_count[level];j++) {
 			union spoolss_DriverInfo *cur = &ctx->drivers[level][j];
-			union spoolss_DriverInfo *ref = &ctx->drivers[6][j];
+			union spoolss_DriverInfo *ref = &ctx->drivers[8][j];
+
 			switch (level) {
 			case 1:
-				COMPARE_STRING(tctx, cur->info1, ref->info6, driver_name);
+				COMPARE_STRING(tctx, cur->info1, ref->info8, driver_name);
 				break;
 			case 2:
-				COMPARE_UINT32(tctx, cur->info2, ref->info6, version);
-				COMPARE_STRING(tctx, cur->info2, ref->info6, driver_name);
-				COMPARE_STRING(tctx, cur->info2, ref->info6, architecture);
-				COMPARE_STRING(tctx, cur->info2, ref->info6, driver_path);
-				COMPARE_STRING(tctx, cur->info2, ref->info6, data_file);
-				COMPARE_STRING(tctx, cur->info2, ref->info6, config_file);
+				COMPARE_UINT32(tctx, cur->info2, ref->info8, version);
+				COMPARE_STRING(tctx, cur->info2, ref->info8, driver_name);
+				COMPARE_STRING(tctx, cur->info2, ref->info8, architecture);
+				COMPARE_STRING(tctx, cur->info2, ref->info8, driver_path);
+				COMPARE_STRING(tctx, cur->info2, ref->info8, data_file);
+				COMPARE_STRING(tctx, cur->info2, ref->info8, config_file);
 				break;
 			case 3:
-				COMPARE_UINT32(tctx, cur->info3, ref->info6, version);
-				COMPARE_STRING(tctx, cur->info3, ref->info6, driver_name);
-				COMPARE_STRING(tctx, cur->info3, ref->info6, architecture);
-				COMPARE_STRING(tctx, cur->info3, ref->info6, driver_path);
-				COMPARE_STRING(tctx, cur->info3, ref->info6, data_file);
-				COMPARE_STRING(tctx, cur->info3, ref->info6, config_file);
-				COMPARE_STRING(tctx, cur->info3, ref->info6, help_file);
-				COMPARE_STRING_ARRAY(tctx, cur->info3, ref->info6, dependent_files);
-				COMPARE_STRING(tctx, cur->info3, ref->info6, monitor_name);
-				COMPARE_STRING(tctx, cur->info3, ref->info6, default_datatype);
+				COMPARE_UINT32(tctx, cur->info3, ref->info8, version);
+				COMPARE_STRING(tctx, cur->info3, ref->info8, driver_name);
+				COMPARE_STRING(tctx, cur->info3, ref->info8, architecture);
+				COMPARE_STRING(tctx, cur->info3, ref->info8, driver_path);
+				COMPARE_STRING(tctx, cur->info3, ref->info8, data_file);
+				COMPARE_STRING(tctx, cur->info3, ref->info8, config_file);
+				COMPARE_STRING(tctx, cur->info3, ref->info8, help_file);
+				COMPARE_STRING_ARRAY(tctx, cur->info3, ref->info8, dependent_files);
+				COMPARE_STRING(tctx, cur->info3, ref->info8, monitor_name);
+				COMPARE_STRING(tctx, cur->info3, ref->info8, default_datatype);
 				break;
 			case 4:
-				COMPARE_UINT32(tctx, cur->info4, ref->info6, version);
-				COMPARE_STRING(tctx, cur->info4, ref->info6, driver_name);
-				COMPARE_STRING(tctx, cur->info4, ref->info6, architecture);
-				COMPARE_STRING(tctx, cur->info4, ref->info6, driver_path);
-				COMPARE_STRING(tctx, cur->info4, ref->info6, data_file);
-				COMPARE_STRING(tctx, cur->info4, ref->info6, config_file);
-				COMPARE_STRING(tctx, cur->info4, ref->info6, help_file);
-				COMPARE_STRING_ARRAY(tctx, cur->info4, ref->info6, dependent_files);
-				COMPARE_STRING(tctx, cur->info4, ref->info6, monitor_name);
-				COMPARE_STRING(tctx, cur->info4, ref->info6, default_datatype);
-				COMPARE_STRING_ARRAY(tctx, cur->info4, ref->info6, previous_names);
+				COMPARE_UINT32(tctx, cur->info4, ref->info8, version);
+				COMPARE_STRING(tctx, cur->info4, ref->info8, driver_name);
+				COMPARE_STRING(tctx, cur->info4, ref->info8, architecture);
+				COMPARE_STRING(tctx, cur->info4, ref->info8, driver_path);
+				COMPARE_STRING(tctx, cur->info4, ref->info8, data_file);
+				COMPARE_STRING(tctx, cur->info4, ref->info8, config_file);
+				COMPARE_STRING(tctx, cur->info4, ref->info8, help_file);
+				COMPARE_STRING_ARRAY(tctx, cur->info4, ref->info8, dependent_files);
+				COMPARE_STRING(tctx, cur->info4, ref->info8, monitor_name);
+				COMPARE_STRING(tctx, cur->info4, ref->info8, default_datatype);
+				COMPARE_STRING_ARRAY(tctx, cur->info4, ref->info8, previous_names);
 				break;
 			case 5:
-				COMPARE_UINT32(tctx, cur->info5, ref->info6, version);
-				COMPARE_STRING(tctx, cur->info5, ref->info6, driver_name);
-				COMPARE_STRING(tctx, cur->info5, ref->info6, architecture);
-				COMPARE_STRING(tctx, cur->info5, ref->info6, driver_path);
-				COMPARE_STRING(tctx, cur->info5, ref->info6, data_file);
-				COMPARE_STRING(tctx, cur->info5, ref->info6, config_file);
-				/*COMPARE_UINT32(tctx, cur->info5, ref->info6, driver_attributes);*/
-				/*COMPARE_UINT32(tctx, cur->info5, ref->info6, config_version);*/
-				/*TODO: ! COMPARE_UINT32(tctx, cur->info5, ref->info6, driver_version); */
+				COMPARE_UINT32(tctx, cur->info5, ref->info8, version);
+				COMPARE_STRING(tctx, cur->info5, ref->info8, driver_name);
+				COMPARE_STRING(tctx, cur->info5, ref->info8, architecture);
+				COMPARE_STRING(tctx, cur->info5, ref->info8, driver_path);
+				COMPARE_STRING(tctx, cur->info5, ref->info8, data_file);
+				COMPARE_STRING(tctx, cur->info5, ref->info8, config_file);
+				/*COMPARE_UINT32(tctx, cur->info5, ref->info8, driver_attributes);*/
+				/*COMPARE_UINT32(tctx, cur->info5, ref->info8, config_version);*/
+				/*TODO: ! COMPARE_UINT32(tctx, cur->info5, ref->info8, driver_version); */
 				break;
 			case 6:
-				/* level 6 is our reference, and it makes no sense to compare it to itself */
+				COMPARE_UINT32(tctx, cur->info6, ref->info8, version);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, driver_name);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, architecture);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, driver_path);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, data_file);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, config_file);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, help_file);
+				COMPARE_STRING_ARRAY(tctx, cur->info6, ref->info8, dependent_files);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, monitor_name);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, default_datatype);
+				COMPARE_STRING_ARRAY(tctx, cur->info6, ref->info8, previous_names);
+				COMPARE_NTTIME(tctx, cur->info6, ref->info8, driver_date);
+				COMPARE_UINT64(tctx, cur->info6, ref->info8, driver_version);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, manufacturer_name);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, manufacturer_url);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, hardware_id);
+				COMPARE_STRING(tctx, cur->info6, ref->info8, provider);
 				break;
+			case 8:
+				/* level 8 is our reference, and it makes no sense to compare it to itself */
+				break;
 			}
 		}
 	}
@@ -499,6 +569,8 @@
 
 		torture_assert_werr_ok(tctx, r.out.result, "EnumMonitors failed");
 
+		CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumMonitors, info, r.in.level, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 		ctx->monitor_count[level]	= count;
 		ctx->monitors[level]		= info;
 	}
@@ -575,6 +647,8 @@
 
 		torture_assert_werr_ok(tctx, r.out.result, "EnumPrintProcessors failed");
 
+		CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumPrintProcessors, info, r.in.level, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 		ctx->print_processor_count[level]	= count;
 		ctx->print_processors[level]		= info;
 	}
@@ -649,6 +723,9 @@
 		torture_assert_ntstatus_ok(tctx, status, "dcerpc_spoolss_EnumPrintProcDataTypes failed");
 
 		torture_assert_werr_ok(tctx, r.out.result, "EnumPrintProcDataTypes failed");
+
+		CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumPrintProcDataTypes, info, r.in.level, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 	}
 
 	return true;
@@ -701,6 +778,8 @@
 
 		torture_assert_werr_ok(tctx, r.out.result, "EnumPrinters failed");
 
+		CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumPrinters, info, r.in.level, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 		ctx->printer_count[level]	= count;
 		ctx->printers[level]		= info;
 	}
@@ -814,6 +893,8 @@
 		torture_assert_ntstatus_ok(tctx, status, "GetPrinter failed");
 
 		torture_assert_werr_ok(tctx, r.out.result, "GetPrinter failed");
+
+		CHECK_NEEDED_SIZE_LEVEL(spoolss_PrinterInfo, r.out.info, r.in.level, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
 	}
 
 	return true;
@@ -1392,6 +1473,7 @@
 
 	status = dcerpc_spoolss_ClosePrinter(p, tctx, &r);
 	torture_assert_ntstatus_ok(tctx, status, "ClosePrinter failed");
+	torture_assert_werr_ok(tctx, r.out.result, "ClosePrinter failed");
 
 	return true;
 }
@@ -1433,6 +1515,8 @@
 
 	torture_assert_werr_ok(tctx, r.out.result, "GetForm failed");
 
+	CHECK_NEEDED_SIZE_LEVEL(spoolss_FormInfo, r.out.info, r.in.level, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 	return true;
 }
 
@@ -1492,6 +1576,8 @@
 		torture_assert_ntstatus_ok(tctx, status, "EnumForms failed");
 
 		torture_assert_werr_ok(tctx, r.out.result, "EnumForms failed");
+
+		CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumForms, info, r.in.level, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
 	}
 
 	return true;
@@ -1654,10 +1740,15 @@
 
 		status = dcerpc_spoolss_EnumPorts(p, tctx, &r);
 		torture_assert_ntstatus_ok(tctx, status, "EnumPorts failed");
+		torture_assert_werr_ok(tctx, r.out.result, "EnumPorts failed");
 
 		torture_assert(tctx, info, "No ports returned");
 	}
 
+	torture_assert_werr_ok(tctx, r.out.result, "EnumPorts failed");
+
+	CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumPorts, info, 2, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 	return true;
 }
 
@@ -1741,6 +1832,8 @@
 		}
 		torture_assert(tctx, r.out.info, "No job info returned");
 		torture_assert_werr_ok(tctx, r.out.result, "GetJob failed");
+
+		CHECK_NEEDED_SIZE_LEVEL(spoolss_JobInfo, r.out.info, r.in.level, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
 	}
 
 	return true;
@@ -1862,11 +1955,16 @@
 
 		status = dcerpc_spoolss_EnumJobs(p, tctx, &r);
 
+		torture_assert_ntstatus_ok(tctx, status, "EnumJobs failed");
+		torture_assert_werr_ok(tctx, r.out.result, "EnumJobs failed");
 		torture_assert(tctx, info, "No jobs returned");
 
+		CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumJobs, *r.out.info, r.in.level, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 		for (j = 0; j < count; j++) {
 
-			test_GetJob(tctx, p, handle, info[j].info1.job_id);
+			torture_assert(tctx, test_GetJob(tctx, p, handle, info[j].info1.job_id),
+				"failed to call test_GetJob");
 
 			/* FIXME - gd */
 			if (!torture_setting_bool(tctx, "samba3", false)) {
@@ -2026,7 +2124,9 @@
 static bool test_GetPrinterData(struct torture_context *tctx,
 				struct dcerpc_pipe *p,
 				struct policy_handle *handle,
-				const char *value_name)
+				const char *value_name,
+				enum winreg_Type *type_p,
+				union spoolss_PrinterData *data_p)
 {
 	NTSTATUS status;
 	struct spoolss_GetPrinterData r;
@@ -2041,7 +2141,7 @@
 	r.out.type = &type;
 	r.out.data = &data;
 
-	torture_comment(tctx, "Testing GetPrinterData\n");
+	torture_comment(tctx, "Testing GetPrinterData(%s)\n", r.in.value_name);
 
 	status = dcerpc_spoolss_GetPrinterData(p, tctx, &r);
 	torture_assert_ntstatus_ok(tctx, status, "GetPrinterData failed");
@@ -2051,10 +2151,21 @@
 
 		status = dcerpc_spoolss_GetPrinterData(p, tctx, &r);
 		torture_assert_ntstatus_ok(tctx, status, "GetPrinterData failed");
+	}
 
-		torture_assert_werr_ok(tctx, r.out.result, "GetPrinterData failed");
+	torture_assert_werr_ok(tctx, r.out.result,
+		talloc_asprintf(tctx, "GetPrinterData(%s) failed", r.in.value_name));
+
+	CHECK_NEEDED_SIZE_LEVEL(spoolss_PrinterData, &data, type, lp_iconv_convenience(tctx->lp_ctx), needed, 1);
+
+	if (type_p) {
+		*type_p = type;
 	}
 
+	if (data_p) {
+		*data_p = data;
+	}
+
 	return true;
 }
 
@@ -2062,12 +2173,15 @@
 				  struct dcerpc_pipe *p,
 				  struct policy_handle *handle,
 				  const char *key_name,
-				  const char *value_name)
+				  const char *value_name,
+				  enum winreg_Type *type_p,
+				  union spoolss_PrinterData *data_p)
 {
 	NTSTATUS status;
 	struct spoolss_GetPrinterDataEx r;
 	enum winreg_Type type;
 	uint32_t needed;
+	union spoolss_PrinterData data;
 
 	r.in.handle = handle;
 	r.in.key_name = key_name;
@@ -2075,9 +2189,10 @@
 	r.in.offered = 0;
 	r.out.type = &type;
 	r.out.needed = &needed;
-	r.out.buffer = NULL;
+	r.out.data = &data;
 
-	torture_comment(tctx, "Testing GetPrinterDataEx\n");
+	torture_comment(tctx, "Testing GetPrinterDataEx(%s - %s)\n",
+		r.in.key_name, r.in.value_name);
 
 	status = dcerpc_spoolss_GetPrinterDataEx(p, tctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -2090,17 +2205,74 @@
 
 	if (W_ERROR_EQUAL(r.out.result, WERR_MORE_DATA)) {
 		r.in.offered = needed;
-		r.out.buffer = talloc_array(tctx, uint8_t, needed);
-
 		status = dcerpc_spoolss_GetPrinterDataEx(p, tctx, &r);
 		torture_assert_ntstatus_ok(tctx, status, "GetPrinterDataEx failed");
+	}
 
-		torture_assert_werr_ok(tctx, r.out.result,  "GetPrinterDataEx failed");
+	torture_assert_werr_ok(tctx, r.out.result,
+		talloc_asprintf(tctx, "GetPrinterDataEx(%s - %s) failed", r.in.key_name, r.in.value_name));
+
+	CHECK_NEEDED_SIZE_LEVEL(spoolss_PrinterData, &data, type, lp_iconv_convenience(tctx->lp_ctx), needed, 1);
+
+	if (type_p) {
+		*type_p = type;
 	}
 
+	if (data_p) {
+		*data_p = data;
+	}
+
 	return true;
 }
 
+static bool test_GetPrinterData_list(struct torture_context *tctx,
+				     struct dcerpc_pipe *p,
+				     struct policy_handle *handle)
+{
+	const char *list[] = {
+		"W3SvcInstalled",
+		"BeepEnabled",
+		"EventLog",
+		/* "NetPopup", not on w2k8 */
+		/* "NetPopupToComputer", not on w2k8 */
+		"MajorVersion",
+		"MinorVersion",
+		"DefaultSpoolDirectory",
+		"Architecture",
+		"DsPresent",
+		"OSVersion",
+		/* "OSVersionEx", not on s3 */
+		"DNSMachineName"
+	};
+	int i;
+
+	for (i=0; i < ARRAY_SIZE(list); i++) {
+		enum winreg_Type type, type_ex;
+		union spoolss_PrinterData data, data_ex;
+
+		torture_assert(tctx, test_GetPrinterData(tctx, p, handle, list[i], &type, &data),
+			talloc_asprintf(tctx, "GetPrinterData failed on %s\n", list[i]));
+		torture_assert(tctx, test_GetPrinterDataEx(tctx, p, handle, "random_string", list[i], &type_ex, &data_ex),
+			talloc_asprintf(tctx, "GetPrinterDataEx failed on %s\n", list[i]));
+		torture_assert_int_equal(tctx, type, type_ex, "type mismatch");
+		switch (type) {
+		case REG_SZ:
+			torture_assert_str_equal(tctx, data.string, data_ex.string, "REG_SZ mismatch");
+			break;
+		case REG_DWORD:
+			torture_assert_int_equal(tctx, data.value, data_ex.value, "REG_DWORD mismatch");
+			break;
+		case REG_BINARY:
+			torture_assert_data_blob_equal(tctx, data.binary, data_ex.binary, "REG_BINARY mismatch");
+			break;
+		default:
+			break;
+		}
+	}
+
+	return true;
+}
+
 static bool test_EnumPrinterData(struct torture_context *tctx, struct dcerpc_pipe *p,
 				 struct policy_handle *handle)
 {
@@ -2129,6 +2301,10 @@
 		status = dcerpc_spoolss_EnumPrinterData(p, tctx, &r);
 
 		torture_assert_ntstatus_ok(tctx, status, "EnumPrinterData failed");
+		if (W_ERROR_EQUAL(r.out.result, WERR_NO_MORE_ITEMS)) {
+			break;
+		}
+		torture_assert_werr_ok(tctx, r.out.result, "EnumPrinterData");
 
 		r.in.value_offered = value_size;
 		r.out.value_name = talloc_zero_array(tctx, const char, value_size);
@@ -2138,13 +2314,18 @@
 		status = dcerpc_spoolss_EnumPrinterData(p, tctx, &r);
 
 		torture_assert_ntstatus_ok(tctx, status, "EnumPrinterData failed");
+		if (W_ERROR_EQUAL(r.out.result, WERR_NO_MORE_ITEMS)) {
+			break;
+		}
 
-		test_GetPrinterData(tctx, p, handle, r.out.value_name);
+		torture_assert_werr_ok(tctx, r.out.result, "EnumPrinterData failed");
 
-		test_GetPrinterDataEx(tctx,
-			p, handle, "PrinterDriverData",
-			r.out.value_name);
+		torture_assert(tctx, test_GetPrinterData(tctx, p, handle, r.out.value_name, NULL, NULL),
+			talloc_asprintf(tctx, "failed to call GetPrinterData for %s\n", r.out.value_name));
 
+		torture_assert(tctx, test_GetPrinterDataEx(tctx, p, handle, "PrinterDriverData", r.out.value_name, NULL, NULL),
+			talloc_asprintf(tctx, "failed to call GetPrinterDataEx on PrinterDriverData for %s\n", r.out.value_name));
+
 		r.in.enum_index++;
 
 	} while (W_ERROR_IS_OK(r.out.result));
@@ -2154,32 +2335,35 @@
 
 static bool test_EnumPrinterDataEx(struct torture_context *tctx,
 				   struct dcerpc_pipe *p,
-				   struct policy_handle *handle)
+				   struct policy_handle *handle,
+				   const char *key_name)
 {
-	NTSTATUS status;
 	struct spoolss_EnumPrinterDataEx r;
 	struct spoolss_PrinterEnumValues *info;
 	uint32_t needed;
 	uint32_t count;
 
 	r.in.handle = handle;
-	r.in.key_name = "PrinterDriverData";
+	r.in.key_name = key_name;
 	r.in.offered = 0;
 	r.out.needed = &needed;
 	r.out.count = &count;
 	r.out.info = &info;
 
-	torture_comment(tctx, "Testing EnumPrinterDataEx\n");
+	torture_comment(tctx, "Testing EnumPrinterDataEx(%s)\n", key_name);
 
-	status = dcerpc_spoolss_EnumPrinterDataEx(p, tctx, &r);
-	torture_assert_ntstatus_ok(tctx, status, "EnumPrinterDataEx failed");
+	torture_assert_ntstatus_ok(tctx, dcerpc_spoolss_EnumPrinterDataEx(p, tctx, &r),
+		"EnumPrinterDataEx failed");
+	if (W_ERROR_EQUAL(r.out.result, WERR_MORE_DATA)) {
+		r.in.offered = needed;
+		torture_assert_ntstatus_ok(tctx, dcerpc_spoolss_EnumPrinterDataEx(p, tctx, &r),
+			"EnumPrinterDataEx failed");
+	}
 
-	r.in.offered = needed;
+	torture_assert_werr_ok(tctx, r.out.result, "EnumPrinterDataEx failed");
 
-	status = dcerpc_spoolss_EnumPrinterDataEx(p, tctx, &r);
+	CHECK_NEEDED_SIZE_ENUM(spoolss_EnumPrinterDataEx, info, count, lp_iconv_convenience(tctx->lp_ctx), needed, 1);
 
-	torture_assert_ntstatus_ok(tctx, status, "EnumPrinterDataEx failed");
-
 	return true;
 }
 
@@ -2195,45 +2379,235 @@
 	r.in.handle = handle;
 	r.in.value_name = value_name;
 
-	torture_comment(tctx, "Testing DeletePrinterData\n");
+	torture_comment(tctx, "Testing DeletePrinterData(%s)\n",
+		r.in.value_name);
 
 	status = dcerpc_spoolss_DeletePrinterData(p, tctx, &r);
 
 	torture_assert_ntstatus_ok(tctx, status, "DeletePrinterData failed");
+	torture_assert_werr_ok(tctx, r.out.result, "DeletePrinterData failed");
 
 	return true;
 }
 
+static bool test_DeletePrinterDataEx(struct torture_context *tctx,
+				     struct dcerpc_pipe *p,
+				     struct policy_handle *handle,
+				     const char *key_name,
+				     const char *value_name)
+{
+	struct spoolss_DeletePrinterDataEx r;
+
+	r.in.handle = handle;
+	r.in.key_name = key_name;
+	r.in.value_name = value_name;
+
+	torture_comment(tctx, "Testing DeletePrinterDataEx(%s - %s)\n",
+		r.in.key_name, r.in.value_name);
+
+	torture_assert_ntstatus_ok(tctx,
+		dcerpc_spoolss_DeletePrinterDataEx(p, tctx, &r),
+		"DeletePrinterDataEx failed");
+	torture_assert_werr_ok(tctx, r.out.result,
+		"DeletePrinterDataEx failed");
+
+	return true;
+}
+
+static bool test_DeletePrinterKey(struct torture_context *tctx,
+				  struct dcerpc_pipe *p,
+				  struct policy_handle *handle,
+				  const char *key_name)
+{
+	struct spoolss_DeletePrinterKey r;
+
+	r.in.handle = handle;
+	r.in.key_name = key_name;
+
+	torture_comment(tctx, "Testing DeletePrinterKey(%s)\n", r.in.key_name);
+
+	if (strequal(key_name, "") && !torture_setting_bool(tctx, "dangerous", false)) {
+		torture_skip(tctx, "not wiping out printer registry - enable dangerous tests to use\n");
+		return true;
+	}
+
+	torture_assert_ntstatus_ok(tctx,
+		dcerpc_spoolss_DeletePrinterKey(p, tctx, &r),
+		"DeletePrinterKey failed");
+	torture_assert_werr_ok(tctx, r.out.result,
+		"DeletePrinterKey failed");
+
+	return true;
+}
+
 static bool test_SetPrinterData(struct torture_context *tctx,
 				struct dcerpc_pipe *p,
 				struct policy_handle *handle)
 {
 	NTSTATUS status;
 	struct spoolss_SetPrinterData r;
-	const char *value_name = "spottyfoot";
+	const char *values[] = {
+		"spootyfoot",
+		"spooty\\foot",
+#if 0
+	/* FIXME: not working with s3 atm. */
+		"spooty,foot",
+		"spooty,fo,ot",
+#endif
+		"spooty foot",
+#if 0
+	/* FIXME: not working with s3 atm. */
+		"spooty\\fo,ot",
+		"spooty,fo\\ot"
+#endif
+	};
+	int i;
 
-	r.in.handle = handle;
-	r.in.value_name = value_name;
-	r.in.type = REG_SZ;
-	r.in.data.string = "dog";
+	for (i=0; i < ARRAY_SIZE(values); i++) {
 
-	torture_comment(tctx, "Testing SetPrinterData\n");
+		enum winreg_Type type;
+		union spoolss_PrinterData data;
 
-	status = dcerpc_spoolss_SetPrinterData(p, tctx, &r);
+		r.in.handle = handle;
+		r.in.value_name = values[i];
+		r.in.type = REG_SZ;
+		r.in.data.string = "dog";
 
-	torture_assert_ntstatus_ok(tctx, status, "SetPrinterData failed");
+		torture_comment(tctx, "Testing SetPrinterData(%s)\n",
+			r.in.value_name);
 
-	if (!test_GetPrinterData(tctx, p, handle, value_name)) {
-		return false;
+		status = dcerpc_spoolss_SetPrinterData(p, tctx, &r);
+
+		torture_assert_ntstatus_ok(tctx, status, "SetPrinterData failed");
+		torture_assert_werr_ok(tctx, r.out.result, "SetPrinterData failed");
+
+		if (!test_GetPrinterData(tctx, p, handle, r.in.value_name, &type, &data)) {
+			return false;
+		}
+
+		torture_assert_int_equal(tctx, r.in.type, type, "type mismatch");
+		torture_assert_str_equal(tctx, r.in.data.string, data.string, "data mismatch");
+
+		if (!test_DeletePrinterData(tctx, p, handle, r.in.value_name)) {
+			return false;
+		}
 	}
 
-	if (!test_DeletePrinterData(tctx, p, handle, value_name)) {
-		return false;
+	return true;
+}
+
+static bool test_EnumPrinterKey(struct torture_context *tctx,
+				struct dcerpc_pipe *p,
+				struct policy_handle *handle,
+				const char *key_name,
+				const char ***array);
+
+static bool test_SetPrinterDataEx(struct torture_context *tctx,
+				  struct dcerpc_pipe *p,
+				  struct policy_handle *handle)
+{
+	NTSTATUS status;
+	struct spoolss_SetPrinterDataEx r;
+	const char *value_name = "dog";
+	const char *keys[] = {
+		"torturedataex",
+		"torture data ex",
+#if 0
+	/* FIXME: not working with s3 atm. */
+		"torturedataex_with_subkey\\subkey",
+		"torturedataex_with_subkey\\subkey:0",
+		"torturedataex_with_subkey\\subkey:1",
+		"torturedataex_with_subkey\\subkey\\subsubkey",
+		"torturedataex_with_subkey\\subkey\\subsubkey:0",
+		"torturedataex_with_subkey\\subkey\\subsubkey:1",
+#endif
+		"torture,data",
+#if 0
+	/* FIXME: not working with s3 atm. */
+
+		"torture,data,ex",
+		"torture,data\\ex",
+		"torture\\data,ex"
+#endif
+	};
+	int i;
+	DATA_BLOB blob = data_blob_string_const("catfoobar");
+
+
+	for (i=0; i < ARRAY_SIZE(keys); i++) {
+
+		char *c;
+		const char *key;
+		enum winreg_Type type;
+		const char **subkeys;
+		union spoolss_PrinterData data;
+
+		r.in.handle = handle;
+		r.in.key_name = keys[i];
+		r.in.value_name = value_name;
+		r.in.type = REG_BINARY;
+		r.in.data.binary = blob;
+
+		torture_comment(tctx, "Testing SetPrinterDataEx(%s - %s)\n", r.in.key_name, value_name);
+
+		status = dcerpc_spoolss_SetPrinterDataEx(p, tctx, &r);
+
+		torture_assert_ntstatus_ok(tctx, status, "SetPrinterDataEx failed");
+		torture_assert_werr_ok(tctx, r.out.result, "SetPrinterDataEx failed");
+
+		key = talloc_strdup(tctx, r.in.key_name);
+
+		if (!test_GetPrinterDataEx(tctx, p, handle, r.in.key_name, value_name, &type, &data)) {
+			return false;
+		}
+
+		torture_assert_int_equal(tctx, r.in.type, type, "type mismatch");
+		torture_assert_data_blob_equal(tctx, blob, data.binary, "data mismatch");
+
+		if (!test_EnumPrinterDataEx(tctx, p, handle, r.in.key_name)) {
+			return false;
+		}
+
+		if (!test_DeletePrinterDataEx(tctx, p, handle, r.in.key_name, value_name)) {
+			return false;
+		}
+
+		c = strchr(key, '\\');
+		if (c) {
+			int i;
+
+			/* we have subkeys */
+
+			*c = 0;
+
+			if (!test_EnumPrinterKey(tctx, p, handle, key, &subkeys)) {
+				return false;
+			}
+
+			for (i=0; subkeys && subkeys[i]; i++) {
+
+				const char *current_key = talloc_asprintf(tctx, "%s\\%s", key, subkeys[i]);
+
+				if (!test_DeletePrinterKey(tctx, p, handle, current_key)) {
+					return false;
+				}
+			}
+
+			if (!test_DeletePrinterKey(tctx, p, handle, key)) {
+				return false;
+			}
+
+		} else {
+			if (!test_DeletePrinterKey(tctx, p, handle, key)) {
+				return false;
+			}
+		}
 	}
 
 	return true;
 }
 
+
 static bool test_SecondaryClosePrinter(struct torture_context *tctx,
 				       struct dcerpc_pipe *p,
 				       struct policy_handle *handle)
@@ -2435,10 +2809,14 @@
 		ret = false;
 	}
 
-	if (!test_EnumPrinterDataEx(tctx, p, &handle)) {
+	if (!test_EnumPrinterDataEx(tctx, p, &handle, "PrinterDriverData")) {
 		ret = false;
 	}
 
+	if (!test_printer_keys(tctx, p, &handle)) {
+		ret = false;
+	}
+
 	if (!test_PausePrinter(tctx, p, &handle)) {
 		ret = false;
 	}
@@ -2455,6 +2833,10 @@
 		ret = false;
 	}
 
+	if (!test_SetPrinterDataEx(tctx, p, &handle)) {
+		ret = false;
+	}
+
 	if (!torture_setting_bool(tctx, "samba3", false)) {
 		if (!test_SecondaryClosePrinter(tctx, p, &handle)) {
 			ret = false;
@@ -2508,6 +2890,8 @@
 
 		torture_assert_werr_ok(tctx, r.out.result, "EnumPrinters failed");
 
+		CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumPrinters, info, r.in.level, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 		if (!info) {
 			torture_comment(tctx, "No printers returned\n");
 			return true;
@@ -2570,6 +2954,8 @@
 	torture_assert_werr_ok(tctx, r.out.result,
 		"failed to call GetPrinterDriver");
 
+	CHECK_NEEDED_SIZE_LEVEL(spoolss_DriverInfo, r.out.info, r.in.level, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 	return true;
 }
 
@@ -2610,6 +2996,8 @@
 	torture_assert_werr_ok(tctx, r.out.result,
 		"failed to call GetPrinterDriver2");
 
+	CHECK_NEEDED_SIZE_LEVEL(spoolss_DriverInfo, r.out.info, r.in.level, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
+
 	return true;
 }
 
@@ -2658,6 +3046,8 @@
 			torture_comment(tctx, "No printer drivers returned\n");
 			break;
 		}
+
+		CHECK_NEEDED_SIZE_ENUM_LEVEL(spoolss_EnumPrinterDrivers, info, r.in.level, count, lp_iconv_convenience(tctx->lp_ctx), needed, 4);
 	}
 
 	return true;
@@ -3035,73 +3425,109 @@
 	return ret;
 }
 
-bool test_printer_keys(struct torture_context *tctx,
-		       struct dcerpc_pipe *p,
-		       struct policy_handle *handle)
+static bool test_EnumPrinterKey(struct torture_context *tctx,
+				struct dcerpc_pipe *p,
+				struct policy_handle *handle,
+				const char *key_name,
+				const char ***array)
 {
-	DATA_BLOB blob;
-	const char **key_array = NULL;
+	struct spoolss_EnumPrinterKey r;
+	uint32_t needed = 0;
+	union spoolss_KeyNames key_buffer;
+	int32_t offered[] = { 0, 1, 2, 3, 4, 5, -1, -2, -3, -4, -5, 256, 512, 1024, 2048 };
+	uint32_t _ndr_size;
 	int i;
 
-	{
-		struct spoolss_EnumPrinterKey r;
-		uint32_t needed;
-		uint16_t *key_buffer = talloc_zero_array(tctx, uint16_t, 0);
+	r.in.handle = handle;
+	r.in.key_name = key_name;
+	r.out.key_buffer = &key_buffer;
+	r.out.needed = &needed;
+	r.out._ndr_size = &_ndr_size;
 
-		r.in.handle = handle;
-		r.in.key_name = "";
-		r.in.offered = 0;
-		r.out.key_buffer = key_buffer;
-		r.out.needed = &needed;
+	for (i=0; i < ARRAY_SIZE(offered); i++) {
 
+		if (offered[i] < 0 && needed) {
+			if (needed <= 4) {
+				continue;
+			}
+			r.in.offered = needed + offered[i];
+		} else {
+			r.in.offered = offered[i];
+		}
+
+		ZERO_STRUCT(key_buffer);
+
+		torture_comment(tctx, "Testing EnumPrinterKey(%s) with %d offered\n", r.in.key_name, r.in.offered);
+
 		torture_assert_ntstatus_ok(tctx, dcerpc_spoolss_EnumPrinterKey(p, tctx, &r),
 			"failed to call EnumPrinterKey");
 		if (W_ERROR_EQUAL(r.out.result, WERR_MORE_DATA)) {
+
+			torture_assert(tctx, (_ndr_size == r.in.offered/2),
+				talloc_asprintf(tctx, "EnumPrinterKey size mismatch, _ndr_size %d (expected %d)",
+					_ndr_size, r.in.offered/2));
+
 			r.in.offered = needed;
-			key_buffer = talloc_zero_array(tctx, uint16_t, needed/2);
-			r.out.key_buffer = key_buffer;
 			torture_assert_ntstatus_ok(tctx, dcerpc_spoolss_EnumPrinterKey(p, tctx, &r),
 				"failed to call EnumPrinterKey");
 		}
-		torture_assert_werr_ok(tctx, r.out.result,
-			"failed to call EnumPrinterKey");
 
-		blob = data_blob_const(key_buffer, needed);
+		if (offered[i] > 0) {
+			torture_assert_werr_ok(tctx, r.out.result,
+				"failed to call EnumPrinterKey");
+		}
+
+		torture_assert(tctx, (_ndr_size == r.in.offered/2),
+			talloc_asprintf(tctx, "EnumPrinterKey size mismatch, _ndr_size %d (expected %d)",
+				_ndr_size, r.in.offered/2));
+
+		torture_assert(tctx, (*r.out.needed <= r.in.offered),
+			talloc_asprintf(tctx, "EnumPrinterKey size mismatch: needed %d is not <= offered %d", *r.out.needed, r.in.offered));
+
+		torture_assert(tctx, (*r.out.needed <= _ndr_size * 2),
+			talloc_asprintf(tctx, "EnumPrinterKey size mismatch: needed %d is not <= _ndr_size %d * 2", *r.out.needed, _ndr_size));
+
+		if (key_buffer.string_array) {
+			uint32_t calc_needed = 0;
+			int s;
+			for (s=0; key_buffer.string_array[s]; s++) {
+				calc_needed += strlen_m_term(key_buffer.string_array[s])*2;
+			}
+			if (!key_buffer.string_array[0]) {
+				calc_needed += 2;
+			}
+			calc_needed += 2;
+
+			torture_assert_int_equal(tctx, *r.out.needed, calc_needed,
+				"EnumPrinterKey unexpected size");
+		}
 	}
 
-	{
-		union winreg_Data data;
-		enum ndr_err_code ndr_err;
-		ndr_err = ndr_pull_union_blob(&blob, tctx, lp_iconv_convenience(tctx->lp_ctx),
-					&data, REG_MULTI_SZ,
-					(ndr_pull_flags_fn_t)ndr_pull_winreg_Data);
-		torture_assert_ndr_success(tctx, ndr_err, "failed to pull REG_MULTI_SZ");
-		key_array = data.string_array;
+	if (array) {
+		*array = key_buffer.string_array;
 	}
 
-	for (i=0; key_array[i]; i++) {
-		struct spoolss_EnumPrinterDataEx r;
-		uint32_t count;
-		struct spoolss_PrinterEnumValues *info;
-		uint32_t needed;
+	return true;
+}
 
-		r.in.handle = handle;
-		r.in.key_name = key_array[i];
-		r.in.offered = 0;
-		r.out.count = &count;
-		r.out.info = &info;
-		r.out.needed = &needed;
+bool test_printer_keys(struct torture_context *tctx,
+		       struct dcerpc_pipe *p,
+		       struct policy_handle *handle)
+{
+	const char **key_array = NULL;
+	int i;
 
-		torture_assert_ntstatus_ok(tctx, dcerpc_spoolss_EnumPrinterDataEx(p, tctx, &r),
-			"failed to call EnumPrinterDataEx");
-		if (W_ERROR_EQUAL(r.out.result, WERR_MORE_DATA)) {
-			r.in.offered = needed;
-			torture_assert_ntstatus_ok(tctx, dcerpc_spoolss_EnumPrinterDataEx(p, tctx, &r),
-				"failed to call EnumPrinterDataEx");
-		}
-		torture_assert_werr_ok(tctx, r.out.result,
-			"failed to call EnumPrinterDataEx");
+	torture_assert(tctx, test_EnumPrinterKey(tctx, p, handle, "", &key_array),
+		"failed to call test_EnumPrinterKey");
+
+	for (i=0; key_array && key_array[i]; i++) {
+		torture_assert(tctx, test_EnumPrinterKey(tctx, p, handle, key_array[i], NULL),
+			"failed to call test_EnumPrinterKey");
 	}
+	for (i=0; key_array && key_array[i]; i++) {
+		torture_assert(tctx, test_EnumPrinterDataEx(tctx, p, handle, key_array[i]),
+			"failed to call test_EnumPrinterDataEx");
+	}
 
 	return true;
 }
@@ -3183,26 +3609,14 @@
 	ctx = talloc_zero(torture, struct test_spoolss_context);
 
 	ret &= test_OpenPrinter_server(torture, p, &ctx->server_handle);
-
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "W3SvcInstalled");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "BeepEnabled");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "EventLog");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "NetPopup");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "NetPopupToComputer");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "MajorVersion");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "MinorVersion");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "DefaultSpoolDirectory");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "Architecture");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "DsPresent");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "OSVersion");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "OSVersionEx");
-	ret &= test_GetPrinterData(torture, p, &ctx->server_handle, "DNSMachineName");
+	ret &= test_GetPrinterData_list(torture, p, &ctx->server_handle);
 	ret &= test_EnumForms(torture, p, &ctx->server_handle, true);
 	ret &= test_AddForm(torture, p, &ctx->server_handle, true);
 	ret &= test_EnumPorts(torture, p, ctx);
 	ret &= test_GetPrinterDriverDirectory(torture, p, ctx);
 	ret &= test_GetPrintProcessorDirectory(torture, p, ctx);
-	ret &= test_EnumPrinterDrivers(torture, p, ctx);
+	ret &= test_EnumPrinterDrivers(torture, p, ctx, SPOOLSS_ARCHITECTURE_NT_X86);
+	ret &= test_EnumPrinterDrivers(torture, p, ctx, SPOOLSS_ARCHITECTURE_ALL);
 	ret &= test_EnumMonitors(torture, p, ctx);
 	ret &= test_EnumPrintProcessors(torture, p, ctx);
 	ret &= test_EnumPrintProcDataTypes(torture, p, ctx);

Modified: branches/samba/experimental/source4/torture/rpc/spoolss_win.c
===================================================================
--- branches/samba/experimental/source4/torture/rpc/spoolss_win.c	2009-12-15 21:26:49 UTC (rev 3156)
+++ branches/samba/experimental/source4/torture/rpc/spoolss_win.c	2009-12-16 21:43:48 UTC (rev 3157)
@@ -386,26 +386,23 @@
 	NTSTATUS status;
 	struct spoolss_EnumPrinterKey epk;
 	uint32_t needed = 0;
-	uint16_t *key_buffer;
+	union spoolss_KeyNames key_buffer;
+	uint32_t _ndr_size;
 
 	torture_comment(tctx, "Testing EnumPrinterKey(%s)\n", key);
 
-	key_buffer = talloc_zero_array(tctx, uint16_t, 0);
-
 	epk.in.handle = handle;
 	epk.in.key_name = talloc_strdup(tctx, key);
 	epk.in.offered = 0;
 	epk.out.needed = &needed;
-	epk.out.key_buffer = key_buffer;
+	epk.out.key_buffer = &key_buffer;
+	epk.out._ndr_size = &_ndr_size;
 
 	status = dcerpc_spoolss_EnumPrinterKey(p, tctx, &epk);
 	torture_assert_ntstatus_ok(tctx, status, "EnumPrinterKey failed");
 
-
 	if (W_ERROR_EQUAL(epk.out.result, WERR_MORE_DATA)) {
 		epk.in.offered = needed;
-		key_buffer = talloc_zero_array(tctx, uint16_t, needed/2);
-		epk.out.key_buffer = key_buffer;
 		status = dcerpc_spoolss_EnumPrinterKey(p, tctx, &epk);
 		torture_assert_ntstatus_ok(tctx, status,
 				"EnumPrinterKey failed");
@@ -413,16 +410,7 @@
 
 	torture_assert_werr_ok(tctx, epk.out.result, "EnumPrinterKey failed");
 
-	{
-		union winreg_Data data;
-		enum ndr_err_code ndr_err;
-		DATA_BLOB blob = data_blob_const(key_buffer, needed);
-		ndr_err = ndr_pull_union_blob(&blob, tctx, lp_iconv_convenience(tctx->lp_ctx),
-					&data, REG_MULTI_SZ,
-					(ndr_pull_flags_fn_t)ndr_pull_winreg_Data);
-		torture_assert_ndr_success(tctx, ndr_err, "failed to pull REG_MULTI_SZ");
-		ctx->printer_keys = data.string_array;
-	}
+	ctx->printer_keys = key_buffer.string_array;
 
 	return true;
 }
@@ -565,7 +553,7 @@
 
 	ret &= test_EnumPrinterKey(tctx, p, &handle03, "", ctx);
 
-	for (i=0; ctx->printer_keys[i] != NULL; i++) {
+	for (i=0; ctx->printer_keys && ctx->printer_keys[i] != NULL; i++) {
 
 		ret &= test_EnumPrinterKey(tctx, p, &handle03,
 					   ctx->printer_keys[i],




More information about the Pkg-samba-maint mailing list